Changeset 17134 for branches/2988_ModelsOfModels2/HeuristicLab.Algorithms.EMM/EMMOperators/EMMMultyPointsMutatorNodeTypeSaving.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/EMMMultyPointsMutatorNodeTypeSaving.cs
r17133 r17134 74 74 75 75 List<ISymbol> allowedSymbols = new List<ISymbol>(); 76 var probability = (1 / mutationProbability.Value) / (symbolicExpressionTree.Length); // probability for e dch node to mutate76 var probability = (1 / mutationProbability.Value) / (symbolicExpressionTree.Length); // probability for each node to mutate 77 77 var allAllowedSymbols = symbolicExpressionTree.Root.Grammar.AllowedSymbols.Where(s => 78 78 !(s is Defun) && … … 84 84 symbolicExpressionTree.Root.ForEachNodePostfix(node => {//for each node in tree - try to mutate 85 85 86 if (SymbolTypeCheck(node.Symbol, allAllowedSymbols)) { // we do not want to to ch StartSymbol86 if (SymbolTypeCheck(node.Symbol, allAllowedSymbols)) { // we do not want to touch StartSymbol 87 87 if (random.NextDouble() < probability) { // ok. this node decide to mutate 88 88 if (node.Symbol.MaximumArity > 0) { … … 94 94 } 95 95 int pTemp = random.Next(modelSet.Count); 96 if (node is TreeModelTreeNode treeNode) { pTemp = treeNode.TreeNumber; } //reme ber the cluster number96 if (node is TreeModelTreeNode treeNode) { pTemp = treeNode.TreeNumber; } //remember the cluster number 97 97 var weights = allowedSymbols.Select(s => s.InitialFrequency).ToList(); // set up probabilities 98 98 99 99 #pragma warning disable CS0618 // Type or member is obsolete 100 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.100 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. 101 101 #pragma warning restore CS0618 // Type or member is obsolete 102 102 node = newSymbol.CreateTreeNode(); 103 103 104 if (node is TreeModelTreeNode treeNode2) { // make rig thmutation for tree model104 if (node is TreeModelTreeNode treeNode2) { // make right mutation for tree model 105 105 treeNode2.TreeNumber = pTemp; 106 106 MapParameter.ActualValue.NodeForMutationChange(random, treeNode2); 107 } else if (node.HasLocalParameters) { // make local paramet rs set up for other node types107 } else if (node.HasLocalParameters) { // make local parameters set up for other node types 108 108 node.ResetLocalParameters(random); 109 109 }
Note: See TracChangeset
for help on using the changeset viewer.