Changeset 5750 for branches/DataAnalysis Refactoring/HeuristicLab.Problems.ExternalEvaluation.GP/3.4/ExternalEvaluationExpressionGrammar.cs
- Timestamp:
- 03/18/11 12:50:28 (13 years ago)
- File:
-
- 1 copied
Legend:
- Unmodified
- Added
- Removed
-
branches/DataAnalysis Refactoring/HeuristicLab.Problems.ExternalEvaluation.GP/3.4/ExternalEvaluationExpressionGrammar.cs
r5745 r5750 23 23 using HeuristicLab.Common; 24 24 using HeuristicLab.Core; 25 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable; 26 using HeuristicLab.Problems.DataAnalysis.Symbolic; 25 27 using HeuristicLab.Encodings.SymbolicExpressionTreeEncoding; 26 using HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Symbols;27 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;28 28 29 29 namespace HeuristicLab.Problems.ExternalEvaluation.GP { 30 30 [StorableClass] 31 [Item(" FullFunctionalExpressionGrammar", "Represents a grammar for functional expressions using all available functions.")]32 public class FullFunctionalExpressionGrammar : DefaultSymbolicExpressionGrammar {31 [Item("ExternalEvaluationExpressionGrammar", "Represents a grammar for functional expressions using all available functions.")] 32 public class ExternalEvaluationExpressionGrammar : SymbolicExpressionGrammar, ISymbolicDataAnalysisGrammar { 33 33 [Storable] 34 private HeuristicLab.Problems. ExternalEvaluation.GP.Variable variableSymbol;34 private HeuristicLab.Problems.DataAnalysis.Symbolic.Variable variableSymbol; 35 35 [StorableConstructor] 36 protected FullFunctionalExpressionGrammar(bool deserializing) : base(deserializing) { }37 protected FullFunctionalExpressionGrammar(FullFunctionalExpressionGrammar original, Cloner cloner) : base(original, cloner) { }36 protected ExternalEvaluationExpressionGrammar(bool deserializing) : base(deserializing) { } 37 protected ExternalEvaluationExpressionGrammar(ExternalEvaluationExpressionGrammar original, Cloner cloner) : base(original, cloner) { } 38 38 public override IDeepCloneable Clone(Cloner cloner) { 39 return new FullFunctionalExpressionGrammar(this, cloner);39 return new ExternalEvaluationExpressionGrammar(this, cloner); 40 40 } 41 41 42 public FullFunctionalExpressionGrammar()43 : base( ) {42 public ExternalEvaluationExpressionGrammar() 43 : base("ExternalEvaluationExpressionGrammar", "Represents a grammar for functional expressions using all available functions.") { 44 44 Initialize(); 45 45 } 46 46 47 private void Initialize() { 48 var originalStart = StartSymbol; 49 if (!(originalStart is ProgramRootSymbol)) { 50 var root = new ProgramRootSymbol(); 51 AddSymbol(root); 52 SetMinSubtreeCount(root, 1); 53 SetMaxSubtreeCount(root, 1); 54 SetAllowedChild(root, originalStart, 0); 55 56 StartSymbol = root; 57 } 58 47 private void Initialize() { 59 48 var add = new Addition(); 60 49 var sub = new Subtraction(); … … 76 65 constant.MinValue = -20; 77 66 constant.MaxValue = 20; 78 variableSymbol = new Variable();67 variableSymbol = new HeuristicLab.Problems.DataAnalysis.Symbolic.Variable(); 79 68 80 69 var allSymbols = new List<Symbol>() { add, sub, mul, div, mean, sin, cos, tan, log, exp, @if, gt, lt, and, or, not, constant, variableSymbol }; … … 87 76 88 77 foreach (var funSymb in functionSymbols) { 89 SetMinSubtreeCount(funSymb, 1); 90 SetMaxSubtreeCount(funSymb, 3); 78 SetSubtreeCount(funSymb, 1, 3); 91 79 } 92 80 foreach (var funSymb in unaryFunctionSymbols) { 93 SetMinSubtreeCount(funSymb, 1); 94 SetMaxSubtreeCount(funSymb, 1); 81 SetSubtreeCount(funSymb, 1, 1); 95 82 } 96 83 foreach (var funSymb in binaryFunctionSymbols) { 97 SetMinSubtreeCount(funSymb, 2); 98 SetMaxSubtreeCount(funSymb, 2); 84 SetSubtreeCount(funSymb, 2, 2); 99 85 } 100 86 101 SetMinSubtreeCount(@if, 3); 102 SetMaxSubtreeCount(@if, 3); 103 SetMinSubtreeCount(constant, 0); 104 SetMaxSubtreeCount(constant, 0); 105 SetMinSubtreeCount(variableSymbol, 0); 106 SetMaxSubtreeCount(variableSymbol, 0); 87 SetSubtreeCount(@if, 3, 3); 88 SetSubtreeCount(constant, 0, 0); 89 SetSubtreeCount(variableSymbol, 0, 0); 107 90 108 91 // allow each symbol as child of the start symbol 109 92 foreach (var symb in allSymbols) { 110 SetAllowedChild(originalStart, symb, 0);93 AddAllowedChildSymbol(StartSymbol, symb, 0); 111 94 } 112 95 113 96 // allow each symbol as child of every other symbol (except for terminals that have maxSubtreeCount == 0) 114 97 foreach (var parent in allSymbols) { 115 for (int i = 0; i < GetMax SubtreeCount(parent); i++)98 for (int i = 0; i < GetMaximumSubtreeCount(parent); i++) 116 99 foreach (var child in allSymbols) { 117 SetAllowedChild(parent, child, i);100 AddAllowedChildSymbol(parent, child, i); 118 101 } 119 102 }
Note: See TracChangeset
for help on using the changeset viewer.