Changeset 3338 for trunk/sources/HeuristicLab.Problems.ArtificialAnt/3.3/ArtificialAntExpressionGrammar.cs
- Timestamp:
- 04/13/10 20:44:31 (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/sources/HeuristicLab.Problems.ArtificialAnt/3.3/ArtificialAntExpressionGrammar.cs
r3294 r3338 33 33 34 34 public ArtificialAntExpressionGrammar() 35 : base( 0, 3, 0, 3) {35 : base() { 36 36 Initialize(); 37 37 } … … 45 45 var right = new Right(); 46 46 var defun = new Defun(); 47 var invoke = new InvokeFunction();48 47 var allSymbols = new List<Symbol>() { ifFoodAhead, prog2, prog3, move, left, right }; 49 48 var nonTerminalSymbols = new List<Symbol>() { ifFoodAhead, prog2, prog3 }; 50 SetMinSubTreeCount(ifFoodAhead, 2);51 SetMaxSubTreeCount(ifFoodAhead, 2);52 SetMinSubTreeCount(prog2, 2);53 SetMaxSubTreeCount(prog2, 2);54 SetMinSubTreeCount(prog3, 3);55 SetMaxSubTreeCount(prog3, 3);56 SetMinSubTreeCount(move, 0);57 SetMaxSubTreeCount(move, 0);58 SetMinSubTreeCount(left, 0);59 SetMaxSubTreeCount(left, 0);60 SetMinSubTreeCount(right, 0);61 SetMaxSubTreeCount(right, 0);62 foreach (var sym in allSymbols) {63 AddAllowedSymbols(StartSymbol, 0, sym);64 AddAllowedSymbols(defun, 0, sym);65 49 66 for (int i = 0; i < GetMaxSubTreeCount(invoke); i++) { 67 AddAllowedSymbols(invoke, i, sym); 68 } 69 } 70 foreach (var sym in nonTerminalSymbols) { 71 for (int argIndex = 0; argIndex < GetMaxSubTreeCount(sym); argIndex++) { 72 AddAllowedSymbols(sym, argIndex, invoke); 73 } 74 } 75 foreach (var nonTerminal in nonTerminalSymbols) { 76 foreach (var child in allSymbols) { 77 for (int argIndex = 0; argIndex < GetMaxSubTreeCount(nonTerminal); argIndex++) { 78 AddAllowedSymbols(nonTerminal, argIndex, child); 50 allSymbols.ForEach(s => AddSymbol(s)); 51 SetMinSubtreeCount(ifFoodAhead, 2); 52 SetMaxSubtreeCount(ifFoodAhead, 2); 53 SetMinSubtreeCount(prog2, 2); 54 SetMaxSubtreeCount(prog2, 2); 55 SetMinSubtreeCount(prog3, 3); 56 SetMaxSubtreeCount(prog3, 3); 57 SetMinSubtreeCount(move, 0); 58 SetMaxSubtreeCount(move, 0); 59 SetMinSubtreeCount(left, 0); 60 SetMaxSubtreeCount(left, 0); 61 SetMinSubtreeCount(right, 0); 62 SetMaxSubtreeCount(right, 0); 63 64 // each symbols is allowed as child of the start symbol 65 allSymbols.ForEach(s => SetAllowedChild(StartSymbol, s, 0)); 66 67 // each symbol is allowed as child of all other symbols (except for terminals that have MaxSubtreeCount == 0 68 foreach (var parent in allSymbols) { 69 for (int argIndex = 0; argIndex < GetMaxSubtreeCount(parent); argIndex++) { 70 foreach (var child in allSymbols) { 71 SetAllowedChild(parent, child, argIndex); 79 72 } 80 73 } 81 74 } 82 83 75 } 84 76 }
Note: See TracChangeset
for help on using the changeset viewer.