Changeset 17134 for branches/2988_ModelsOfModels2/HeuristicLab.Algorithms.EMM/EMMOperators/EMMMultyPointsMutator.cs
- Timestamp:
- 07/11/19 16:30:22 (5 years ago)
- Location:
- branches/2988_ModelsOfModels2/HeuristicLab.Algorithms.EMM/EMMOperators
- Files:
-
- 1 added
- 1 moved
Legend:
- Unmodified
- Added
- Removed
-
branches/2988_ModelsOfModels2/HeuristicLab.Algorithms.EMM/EMMOperators/EMMMultyPointsMutator.cs
r17133 r17134 71 71 72 72 List<ISymbol> allowedSymbols = new List<ISymbol>(); 73 var probability = (1 / mutationProbability.Value) / (symbolicExpressionTree.Length); // probability for e dch node to mutate73 var probability = (1 / mutationProbability.Value) / (symbolicExpressionTree.Length); // probability for each node to mutate 74 74 var allAllowedSymbols = symbolicExpressionTree.Root.Grammar.AllowedSymbols.Where(s => 75 75 !(s is Defun) && … … 81 81 symbolicExpressionTree.Root.ForEachNodePostfix(node => {//for each node in tree - try to mutate 82 82 83 if (SymbolTypeCheck(node.Symbol, allAllowedSymbols)) { // we do not want to to ch StartSymbol83 if (SymbolTypeCheck(node.Symbol, allAllowedSymbols)) { // we do not want to touch StartSymbol 84 84 if (random.NextDouble() < probability) { // ok. this node decide to mutate 85 85 … … 87 87 if ((symbol.MaximumArity == node.Symbol.MaximumArity) && (symbol.MinimumArity == node.Symbol.MinimumArity)) { allowedSymbols.Add(symbol); } 88 88 } 89 if (node.Symbol.MaximumArity == 0) { // for terminal nodes add ad itional the same type of nodes89 if (node.Symbol.MaximumArity == 0) { // for terminal nodes add additional the same type of nodes 90 90 allowedSymbols.Add(node.Symbol); 91 91 } 92 92 int pTemp = random.Next(map.Count); 93 if (node is TreeModelTreeNode treeNode) { pTemp = treeNode.TreeNumber; } //reme ber the cluster number93 if (node is TreeModelTreeNode treeNode) { pTemp = treeNode.TreeNumber; } //remember the cluster number 94 94 var weights = allowedSymbols.Select(s => s.InitialFrequency).ToList(); // set up probabilities 95 95 96 96 #pragma warning disable CS0618 // Type or member is obsolete 97 var newSymbol = allowedSymbols.SelectRandom(weights, random); // create new node from the cho osen symbol type. Ror terminal nodes it means that we have only one possible varint.97 var newSymbol = allowedSymbols.SelectRandom(weights, random); // create new node from the chosen symbol type. For terminal nodes it means that we have only one possible variant. 98 98 #pragma warning restore CS0618 // Type or member is obsolete 99 99 node = newSymbol.CreateTreeNode(); 100 100 101 if (node is TreeModelTreeNode treeNode2) { // make rig thmutation for tree model101 if (node is TreeModelTreeNode treeNode2) { // make right mutation for tree model 102 102 treeNode2.TreeNumber = pTemp; 103 103 MapParameter.ActualValue.NodeForMutationChange(random, treeNode2); 104 } else if (node.HasLocalParameters) { // make local paramet rs set up for other node types104 } else if (node.HasLocalParameters) { // make local parameters set up for other node types 105 105 node.ResetLocalParameters(random); 106 106 }
Note: See TracChangeset
for help on using the changeset viewer.