Changeset 10075 for branches/GrammaticalEvolution/HeuristicLab.Problems.GrammaticalEvolution/Mappers/GenotypeToPhenotypeMapper.cs
- Timestamp:
- 10/21/13 11:29:55 (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/GrammaticalEvolution/HeuristicLab.Problems.GrammaticalEvolution/Mappers/GenotypeToPhenotypeMapper.cs
r10068 r10075 52 52 protected ISymbolicExpressionTreeNode GetRandomTerminalNode(ISymbolicExpressionTreeNode parentNode, 53 53 ISymbolicExpressionGrammar grammar) { 54 var possibleSymbolsList = from s in grammar.GetAllowedChildSymbols(parentNode.Symbol) 55 where s.MaximumArity == 0 56 where s.MinimumArity == 0 57 select s; 58 // TODO: Check, if symbol list is empty (no terminal nodes found) - what should happen? 59 return possibleSymbolsList.SelectRandom(new MersenneTwister()).CreateTreeNode(); 54 // only select specific symbols, which can be interpreted ... 55 var possibleSymbolsList = (from s in grammar.GetAllowedChildSymbols(parentNode.Symbol) 56 where s.InitialFrequency > 0.0 57 where s.MaximumArity == 0 58 where s.MinimumArity == 0 59 select s).ToList(); 60 // TODO: Check, if symbol list is empty (no terminal nodes found) - what should happen? 61 var newNode = possibleSymbolsList.SelectRandom(new MersenneTwister()).CreateTreeNode(); 62 if (newNode.HasLocalParameters) newNode.ResetLocalParameters(new MersenneTwister()); 63 return newNode; 60 64 } 61 65 … … 74 78 int genotypeIndex) { 75 79 76 IEnumerable<ISymbol> symbolList = grammar.GetAllowedChildSymbols(parentNode.Symbol); 80 // only select specific symbols, which can be interpreted ... 81 IEnumerable<ISymbol> symbolList = (from s in grammar.GetAllowedChildSymbols(parentNode.Symbol) 82 where s.InitialFrequency > 0.0 83 select s).ToList(); 77 84 int prodRuleCount = symbolList.Count(); 78 85 int prodRuleIndex = genotype[genotypeIndex % genotype.Length] % prodRuleCount; 79 86 80 return symbolList.ElementAt(prodRuleIndex).CreateTreeNode(); 87 var newNode = symbolList.ElementAt(prodRuleIndex).CreateTreeNode(); 88 if (newNode.HasLocalParameters) newNode.ResetLocalParameters(new MersenneTwister()); 89 return newNode; 81 90 } 82 91 }
Note: See TracChangeset
for help on using the changeset viewer.