- Timestamp:
- 04/13/10 20:44:31 (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/sources/HeuristicLab.Problems.DataAnalysis.Regression/3.3/Symbolic/ArithmeticExpressionGrammar.cs
r3294 r3338 48 48 49 49 public ArithmeticExpressionGrammar() 50 : base( 0, 0, 0, 0) {50 : base() { 51 51 Initialize(); 52 52 } … … 62 62 var allSymbols = new List<Symbol>() { add, sub, mul, div, constant, variableSymbol }; 63 63 var functionSymbols = new List<Symbol>() { add, sub, mul, div }; 64 allSymbols.ForEach(s => AddAllowedSymbols(StartSymbol, 0, s)); 64 foreach (var symb in allSymbols) 65 AddSymbol(symb); 65 66 67 foreach (var funSymb in functionSymbols) { 68 SetMinSubtreeCount(funSymb, 1); 69 SetMaxSubtreeCount(funSymb, 3); 70 } 71 SetMinSubtreeCount(constant, 0); 72 SetMaxSubtreeCount(constant, 0); 73 SetMinSubtreeCount(variableSymbol, 0); 74 SetMaxSubtreeCount(variableSymbol, 0); 66 75 67 SetMinSubTreeCount(constant, 0); 68 SetMaxSubTreeCount(constant, 0); 69 SetMinSubTreeCount(variableSymbol, 0); 70 SetMaxSubTreeCount(variableSymbol, 0); 71 int maxSubTrees = 3; 72 foreach (var functionSymbol in functionSymbols) { 73 SetMinSubTreeCount(functionSymbol, 1); 74 SetMaxSubTreeCount(functionSymbol, maxSubTrees); 75 foreach (var childSymbol in allSymbols) { 76 for (int argumentIndex = 0; argumentIndex < maxSubTrees; argumentIndex++) { 77 AddAllowedSymbols(functionSymbol, argumentIndex, childSymbol); 76 // allow each symbol as child of the start symbol 77 foreach (var symb in allSymbols) { 78 SetAllowedChild(StartSymbol, symb, 0); 79 } 80 81 // allow each symbol as child of every other symbol (except for terminals that have maxSubtreeCount == 0) 82 foreach (var parent in allSymbols) { 83 for (int i = 0; i < GetMaxSubtreeCount(parent); i++) 84 foreach (var child in allSymbols) { 85 SetAllowedChild(parent, child, i); 78 86 } 79 }80 87 } 81 88 }
Note: See TracChangeset
for help on using the changeset viewer.