- Timestamp:
- 04/13/11 16:02:40 (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/sources/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding/3.4/Creators/ProbabilisticTreeCreator.cs
r5925 r6009 103 103 public static void PTC2(IRandom random, ISymbolicExpressionTreeNode seedNode, 104 104 int maxLength, int maxDepth) { 105 // make sure it is possible to create a trees smaller than maxLength and maxDepth 106 if (seedNode.Grammar.GetMinimumExpressionLength(seedNode.Symbol) > maxLength) 107 throw new ArgumentException("Cannot create trees of length " + maxLength + " or shorter because of grammar constraints.", "maxLength"); 108 if (seedNode.Grammar.GetMinimumExpressionDepth(seedNode.Symbol) > maxDepth) 109 throw new ArgumentException("Cannot create trees of depth " + maxDepth + " or smaller because of grammar constraints.", "maxDepth"); 110 105 111 // tree length is limited by the grammar and by the explicit size constraints 106 112 int allowedMinLength = seedNode.Grammar.GetMinimumExpressionLength(seedNode.Symbol); … … 149 155 int argumentIndex = nextExtension.ChildIndex; 150 156 int extensionDepth = nextExtension.ExtensionPointDepth; 151 if ( extensionDepth + parent.Grammar.GetMinimumExpressionDepth(parent.Symbol) >= maxDepth) {157 if (parent.Grammar.GetMinimumExpressionDepth(parent.Symbol) >= maxDepth - extensionDepth) { 152 158 ReplaceWithMinimalTree(random, root, parent, argumentIndex); 153 159 } else { … … 155 161 where s.InitialFrequency > 0.0 156 162 where parent.Grammar.IsAllowedChildSymbol(parent.Symbol, s, argumentIndex) 157 where parent.Grammar.GetMinimumExpressionDepth(s) + extensionDepth - 1 < maxDepth163 where parent.Grammar.GetMinimumExpressionDepth(s) < maxDepth - extensionDepth + 1 158 164 where parent.Grammar.GetMaximumExpressionLength(s) > targetLength - totalListMinLength - currentLength 159 165 select s)
Note: See TracChangeset
for help on using the changeset viewer.