Changeset 7213 for branches/HeuristicLab.TimeSeries/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding/3.4/Creators/GrowTreeCreator.cs
- Timestamp:
- 12/20/11 11:45:18 (12 years ago)
- Location:
- branches/HeuristicLab.TimeSeries
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/HeuristicLab.TimeSeries
-
branches/HeuristicLab.TimeSeries/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding/3.4/Creators/GrowTreeCreator.cs
r7076 r7213 146 146 throw new ArgumentException("Cannot grow tree. Seed node shouldn't have arity zero."); 147 147 148 var allowedSymbols = seedNode.Grammar.AllowedSymbols.Where(s => s.InitialFrequency > 0.0).ToList(); 148 149 149 150 for (var i = 0; i != arity; ++i) { 150 var possibleSymbols = seedNode.Grammar.GetAllowedChildSymbols(seedNode.Symbol, i).Where(s => s.InitialFrequency > 0.0);151 var possibleSymbols = allowedSymbols.Where(s => seedNode.Grammar.IsAllowedChildSymbol(seedNode.Symbol, s, i)).ToList(); 151 152 var selectedSymbol = possibleSymbols.SelectRandom(random); 152 153 var tree = selectedSymbol.CreateTreeNode(); … … 157 158 // Only iterate over the non-terminal nodes (those which have arity > 0) 158 159 // Start from depth 2 since the first two levels are formed by the rootNode and the seedNode 159 foreach (var subTree in seedNode.Subtrees.Where(subTree => subTree.Grammar.GetMaximumSubtreeCount(subTree.Symbol) !=0))160 foreach (var subTree in seedNode.Subtrees.Where(subTree => subTree.Grammar.GetMaximumSubtreeCount(subTree.Symbol) > 0)) 160 161 RecursiveGrow(random, subTree, 2, maxDepth); 161 162 } … … 166 167 throw new ArgumentException("Cannot grow node of arity zero. Expected a function node."); 167 168 169 var allowedSymbols = root.Grammar.AllowedSymbols.Where(s => s.InitialFrequency > 0.0).ToList(); 170 168 171 for (var i = 0; i != arity; ++i) { 169 var possibleSymbols = root.Grammar.GetAllowedChildSymbols(root.Symbol, i); 170 possibleSymbols = possibleSymbols.Where(s => s.InitialFrequency > 0.0 && 171 root.Grammar.GetMinimumExpressionDepth(s) - 1 <= maxDepth - currentDepth); 172 if (!possibleSymbols.Any()) throw new InvalidOperationException("No symbols are available for the tree."); 172 var possibleSymbols = allowedSymbols.Where(s => root.Grammar.IsAllowedChildSymbol(root.Symbol, s, i) && root.Grammar.GetMinimumExpressionDepth(s) - 1 <= maxDepth - currentDepth).ToList(); 173 if (!possibleSymbols.Any()) 174 throw new InvalidOperationException("No symbols are available for the tree."); 173 175 var selectedSymbol = possibleSymbols.SelectRandom(random); 174 176 var tree = selectedSymbol.CreateTreeNode();
Note: See TracChangeset
for help on using the changeset viewer.