Changeset 11496 for trunk/sources
- Timestamp:
- 10/24/14 16:47:44 (10 years ago)
- Location:
- trunk/sources/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding/3.4/Creators
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/sources/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding/3.4/Creators/FullTreeCreator.cs
r11171 r11496 38 38 private const string MaximumSymbolicExpressionTreeLengthParameterName = "MaximumSymbolicExpressionTreeLength"; 39 39 private const string MaximumSymbolicExpressionTreeDepthParameterName = "MaximumSymbolicExpressionTreeDepth"; 40 private const string SymbolicExpressionTreeGrammarParameterName = "SymbolicExpressionTreeGrammar";41 private const string ClonedSymbolicExpressionTreeGrammarParameterName = "ClonedSymbolicExpressionTreeGrammar";42 40 43 41 #region Parameter Properties … … 49 47 get { return (IValueLookupParameter<IntValue>)Parameters[MaximumSymbolicExpressionTreeDepthParameterName]; } 50 48 } 51 52 public IValueLookupParameter<ISymbolicExpressionGrammar> SymbolicExpressionTreeGrammarParameter {53 get { return (IValueLookupParameter<ISymbolicExpressionGrammar>)Parameters[SymbolicExpressionTreeGrammarParameterName]; }54 }55 56 public ILookupParameter<ISymbolicExpressionGrammar> ClonedSymbolicExpressionTreeGrammarParameter {57 get { return (ILookupParameter<ISymbolicExpressionGrammar>)Parameters[ClonedSymbolicExpressionTreeGrammarParameterName]; }58 }59 60 49 #endregion 61 50 #region Properties … … 66 55 public IntValue MaximumSymbolicExpressionTreeLength { 67 56 get { return MaximumSymbolicExpressionTreeLengthParameter.ActualValue; } 68 }69 70 public ISymbolicExpressionGrammar ClonedSymbolicExpressionTreeGrammar {71 get { return ClonedSymbolicExpressionTreeGrammarParameter.ActualValue; }72 57 } 73 58 … … 84 69 Parameters.Add(new ValueLookupParameter<IntValue>(MaximumSymbolicExpressionTreeDepthParameterName, 85 70 "The maximal depth of the symbolic expression tree (a tree with one node has depth = 0).")); 86 Parameters.Add(new ValueLookupParameter<ISymbolicExpressionGrammar>(SymbolicExpressionTreeGrammarParameterName,87 "The tree grammar that defines the correct syntax of symbolic expression trees that should be created."));88 Parameters.Add(new LookupParameter<ISymbolicExpressionGrammar>(ClonedSymbolicExpressionTreeGrammarParameterName,89 "An immutable clone of the concrete grammar that is actually used to create and manipulate trees."));90 71 } 91 72 … … 94 75 } 95 76 96 public override IOperation InstrumentedApply() {97 if (ClonedSymbolicExpressionTreeGrammarParameter.ActualValue == null) {98 SymbolicExpressionTreeGrammarParameter.ActualValue.ReadOnly = true;99 IScope globalScope = ExecutionContext.Scope;100 while (globalScope.Parent != null)101 globalScope = globalScope.Parent;102 103 globalScope.Variables.Add(new Variable(ClonedSymbolicExpressionTreeGrammarParameterName,104 (ISymbolicExpressionGrammar)SymbolicExpressionTreeGrammarParameter.ActualValue.Clone()));105 }106 return base.InstrumentedApply();107 }108 77 109 78 protected override ISymbolicExpressionTree Create(IRandom random) { 110 return Create(random, ClonedSymbolicExpressionTreeGrammar , MaximumSymbolicExpressionTreeLength.Value, MaximumSymbolicExpressionTreeDepth.Value);79 return Create(random, ClonedSymbolicExpressionTreeGrammarParameter.ActualValue, MaximumSymbolicExpressionTreeLength.Value, MaximumSymbolicExpressionTreeDepth.Value); 111 80 } 112 81 … … 129 98 var rootNode = (SymbolicExpressionTreeTopLevelNode)grammar.ProgramRootSymbol.CreateTreeNode(); 130 99 if (rootNode.HasLocalParameters) rootNode.ResetLocalParameters(random); 131 rootNode.SetGrammar( new SymbolicExpressionTreeGrammar(grammar));100 rootNode.SetGrammar(grammar.CreateExpressionTreeGrammar()); 132 101 133 102 var startNode = (SymbolicExpressionTreeTopLevelNode)grammar.StartSymbol.CreateTreeNode(); 134 103 if (startNode.HasLocalParameters) startNode.ResetLocalParameters(random); 135 startNode.SetGrammar( new SymbolicExpressionTreeGrammar(grammar));104 startNode.SetGrammar(grammar.CreateExpressionTreeGrammar()); 136 105 137 106 rootNode.AddSubtree(startNode); -
trunk/sources/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding/3.4/Creators/GrowTreeCreator.cs
r11171 r11496 38 38 private const string MaximumSymbolicExpressionTreeLengthParameterName = "MaximumSymbolicExpressionTreeLength"; 39 39 private const string MaximumSymbolicExpressionTreeDepthParameterName = "MaximumSymbolicExpressionTreeDepth"; 40 private const string SymbolicExpressionTreeGrammarParameterName = "SymbolicExpressionTreeGrammar";41 private const string ClonedSymbolicExpressionTreeGrammarParameterName = "ClonedSymbolicExpressionTreeGrammar";42 40 43 41 #region Parameter Properties … … 48 46 public IValueLookupParameter<IntValue> MaximumSymbolicExpressionTreeDepthParameter { 49 47 get { return (IValueLookupParameter<IntValue>)Parameters[MaximumSymbolicExpressionTreeDepthParameterName]; } 50 }51 52 public IValueLookupParameter<ISymbolicExpressionGrammar> SymbolicExpressionTreeGrammarParameter {53 get { return (IValueLookupParameter<ISymbolicExpressionGrammar>)Parameters[SymbolicExpressionTreeGrammarParameterName]; }54 }55 56 public ILookupParameter<ISymbolicExpressionGrammar> ClonedSymbolicExpressionTreeGrammarParameter {57 get { return (ILookupParameter<ISymbolicExpressionGrammar>)Parameters[ClonedSymbolicExpressionTreeGrammarParameterName]; }58 48 } 59 49 … … 67 57 get { return MaximumSymbolicExpressionTreeLengthParameter.ActualValue; } 68 58 } 69 70 public ISymbolicExpressionGrammar ClonedSymbolicExpressionTreeGrammar {71 get { return ClonedSymbolicExpressionTreeGrammarParameter.ActualValue; }72 }73 74 59 #endregion 75 60 … … 84 69 Parameters.Add(new ValueLookupParameter<IntValue>(MaximumSymbolicExpressionTreeDepthParameterName, 85 70 "The maximal depth of the symbolic expression tree (a tree with one node has depth = 0).")); 86 Parameters.Add(new ValueLookupParameter<ISymbolicExpressionGrammar>(SymbolicExpressionTreeGrammarParameterName,87 "The tree grammar that defines the correct syntax of symbolic expression trees that should be created."));88 Parameters.Add(new LookupParameter<ISymbolicExpressionGrammar>(ClonedSymbolicExpressionTreeGrammarParameterName,89 "An immutable clone of the concrete grammar that is actually used to create and manipulate trees."));90 71 } 91 72 … … 94 75 } 95 76 96 public override IOperation InstrumentedApply() {97 if (ClonedSymbolicExpressionTreeGrammarParameter.ActualValue == null) {98 SymbolicExpressionTreeGrammarParameter.ActualValue.ReadOnly = true;99 IScope globalScope = ExecutionContext.Scope;100 while (globalScope.Parent != null)101 globalScope = globalScope.Parent;102 103 globalScope.Variables.Add(new Variable(ClonedSymbolicExpressionTreeGrammarParameterName,104 (ISymbolicExpressionGrammar)SymbolicExpressionTreeGrammarParameter.ActualValue.Clone()));105 }106 return base.InstrumentedApply();107 }108 77 109 78 protected override ISymbolicExpressionTree Create(IRandom random) { 110 return Create(random, ClonedSymbolicExpressionTreeGrammar ,79 return Create(random, ClonedSymbolicExpressionTreeGrammarParameter.ActualValue, 111 80 MaximumSymbolicExpressionTreeLength.Value, MaximumSymbolicExpressionTreeDepth.Value); 112 81 } … … 128 97 var tree = new SymbolicExpressionTree(); 129 98 var rootNode = (SymbolicExpressionTreeTopLevelNode)grammar.ProgramRootSymbol.CreateTreeNode(); 130 rootNode.SetGrammar(new SymbolicExpressionTreeGrammar(grammar));131 99 if (rootNode.HasLocalParameters) rootNode.ResetLocalParameters(random); 100 rootNode.SetGrammar(grammar.CreateExpressionTreeGrammar()); 101 132 102 133 103 var startNode = (SymbolicExpressionTreeTopLevelNode)grammar.StartSymbol.CreateTreeNode(); 134 104 if (startNode.HasLocalParameters) startNode.ResetLocalParameters(random); 135 startNode.SetGrammar( new SymbolicExpressionTreeGrammar(grammar));105 startNode.SetGrammar(grammar.CreateExpressionTreeGrammar()); 136 106 137 107 rootNode.AddSubtree(startNode); -
trunk/sources/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding/3.4/Creators/ProbabilisticTreeCreator.cs
r11171 r11496 39 39 private const string MaximumSymbolicExpressionTreeLengthParameterName = "MaximumSymbolicExpressionTreeLength"; 40 40 private const string MaximumSymbolicExpressionTreeDepthParameterName = "MaximumSymbolicExpressionTreeDepth"; 41 private const string SymbolicExpressionTreeGrammarParameterName = "SymbolicExpressionTreeGrammar";42 private const string ClonedSymbolicExpressionTreeGrammarParameterName = "ClonedSymbolicExpressionTreeGrammar";43 41 #region Parameter Properties 44 42 public IValueLookupParameter<IntValue> MaximumSymbolicExpressionTreeLengthParameter { … … 47 45 public IValueLookupParameter<IntValue> MaximumSymbolicExpressionTreeDepthParameter { 48 46 get { return (IValueLookupParameter<IntValue>)Parameters[MaximumSymbolicExpressionTreeDepthParameterName]; } 49 }50 public IValueLookupParameter<ISymbolicExpressionGrammar> SymbolicExpressionTreeGrammarParameter {51 get { return (IValueLookupParameter<ISymbolicExpressionGrammar>)Parameters[SymbolicExpressionTreeGrammarParameterName]; }52 }53 public ILookupParameter<ISymbolicExpressionGrammar> ClonedSymbolicExpressionTreeGrammarParameter {54 get { return (ILookupParameter<ISymbolicExpressionGrammar>)Parameters[ClonedSymbolicExpressionTreeGrammarParameterName]; }55 47 } 56 48 #endregion … … 61 53 public IntValue MaximumSymbolicExpressionTreeDepth { 62 54 get { return MaximumSymbolicExpressionTreeDepthParameter.ActualValue; } 63 }64 public ISymbolicExpressionGrammar SymbolicExpressionTreeGrammar {65 get { return ClonedSymbolicExpressionTreeGrammarParameter.ActualValue; }66 55 } 67 56 #endregion … … 74 63 Parameters.Add(new ValueLookupParameter<IntValue>(MaximumSymbolicExpressionTreeLengthParameterName, "The maximal length (number of nodes) of the symbolic expression tree.")); 75 64 Parameters.Add(new ValueLookupParameter<IntValue>(MaximumSymbolicExpressionTreeDepthParameterName, "The maximal depth of the symbolic expression tree (a tree with one node has depth = 0).")); 76 Parameters.Add(new ValueLookupParameter<ISymbolicExpressionGrammar>(SymbolicExpressionTreeGrammarParameterName, "The tree grammar that defines the correct syntax of symbolic expression trees that should be created."));77 Parameters.Add(new LookupParameter<ISymbolicExpressionGrammar>(ClonedSymbolicExpressionTreeGrammarParameterName, "An immutable clone of the concrete grammar that is actually used to create and manipulate trees."));78 65 } 79 66 … … 81 68 return new ProbabilisticTreeCreator(this, cloner); 82 69 } 83 [StorableHook(HookType.AfterDeserialization)] 84 private void AfterDeserialization() { 85 if (!Parameters.ContainsKey(ClonedSymbolicExpressionTreeGrammarParameterName)) 86 Parameters.Add(new LookupParameter<ISymbolicExpressionGrammar>(ClonedSymbolicExpressionTreeGrammarParameterName, "An immutable clone of the concrete grammar that is actually used to create and manipulate trees.")); 87 } 88 89 public override IOperation InstrumentedApply() { 90 if (ClonedSymbolicExpressionTreeGrammarParameter.ActualValue == null) { 91 SymbolicExpressionTreeGrammarParameter.ActualValue.ReadOnly = true; 92 IScope globalScope = ExecutionContext.Scope; 93 while (globalScope.Parent != null) 94 globalScope = globalScope.Parent; 95 96 globalScope.Variables.Add(new Variable(ClonedSymbolicExpressionTreeGrammarParameterName, (ISymbolicExpressionGrammar)SymbolicExpressionTreeGrammarParameter.ActualValue.Clone())); 97 } 98 return base.InstrumentedApply(); 99 } 70 100 71 101 72 protected override ISymbolicExpressionTree Create(IRandom random) { 102 return Create(random, SymbolicExpressionTreeGrammar, MaximumSymbolicExpressionTreeLength.Value, MaximumSymbolicExpressionTreeDepth.Value);73 return Create(random, ClonedSymbolicExpressionTreeGrammarParameter.ActualValue, MaximumSymbolicExpressionTreeLength.Value, MaximumSymbolicExpressionTreeDepth.Value); 103 74 } 104 75 … … 111 82 var rootNode = (SymbolicExpressionTreeTopLevelNode)grammar.ProgramRootSymbol.CreateTreeNode(); 112 83 if (rootNode.HasLocalParameters) rootNode.ResetLocalParameters(random); 113 rootNode.SetGrammar(new SymbolicExpressionTreeGrammar(grammar)); 84 rootNode.SetGrammar(grammar.CreateExpressionTreeGrammar()); 85 114 86 var startNode = (SymbolicExpressionTreeTopLevelNode)grammar.StartSymbol.CreateTreeNode(); 115 startNode.SetGrammar(new SymbolicExpressionTreeGrammar(grammar));116 87 if (startNode.HasLocalParameters) startNode.ResetLocalParameters(random); 88 startNode.SetGrammar(grammar.CreateExpressionTreeGrammar()); 89 117 90 rootNode.AddSubtree(startNode); 118 91 PTC2(random, startNode, maxTreeLength, maxTreeDepth); -
trunk/sources/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding/3.4/Creators/RampedHalfAndHalfTreeCreator.cs
r11171 r11496 36 36 private const string MaximumSymbolicExpressionTreeLengthParameterName = "MaximumSymbolicExpressionTreeLength"; 37 37 private const string MaximumSymbolicExpressionTreeDepthParameterName = "MaximumSymbolicExpressionTreeDepth"; 38 private const string SymbolicExpressionTreeGrammarParameterName = "SymbolicExpressionTreeGrammar";39 private const string ClonedSymbolicExpressionTreeGrammarParameterName = "ClonedSymbolicExpressionTreeGrammar";40 38 41 39 #region Parameter Properties … … 48 46 } 49 47 50 public IValueLookupParameter<ISymbolicExpressionGrammar> SymbolicExpressionTreeGrammarParameter {51 get {52 return (IValueLookupParameter<ISymbolicExpressionGrammar>)Parameters[SymbolicExpressionTreeGrammarParameterName];53 }54 }55 56 public ILookupParameter<ISymbolicExpressionGrammar> ClonedSymbolicExpressionTreeGrammarParameter {57 get {58 return (ILookupParameter<ISymbolicExpressionGrammar>)Parameters[ClonedSymbolicExpressionTreeGrammarParameterName];59 }60 }61 62 48 #endregion 63 49 #region Properties … … 68 54 public IntValue MaximumSymbolicExpressionTreeLength { 69 55 get { return MaximumSymbolicExpressionTreeLengthParameter.ActualValue; } 70 }71 72 public ISymbolicExpressionGrammar ClonedSymbolicExpressionTreeGrammar {73 get { return ClonedSymbolicExpressionTreeGrammarParameter.ActualValue; }74 56 } 75 57 #endregion … … 85 67 Parameters.Add(new ValueLookupParameter<IntValue>(MaximumSymbolicExpressionTreeDepthParameterName, 86 68 "The maximal depth of the symbolic expression tree (a tree with one node has depth = 0).")); 87 Parameters.Add(new ValueLookupParameter<ISymbolicExpressionGrammar>(SymbolicExpressionTreeGrammarParameterName,88 "The tree grammar that defines the correct syntax of symbolic expression trees that should be created."));89 Parameters.Add(new LookupParameter<ISymbolicExpressionGrammar>(ClonedSymbolicExpressionTreeGrammarParameterName,90 "An immutable clone of the concrete grammar that is actually used to create and manipulate trees."));91 69 } 92 70 … … 95 73 } 96 74 97 public override IOperation InstrumentedApply() {98 if (ClonedSymbolicExpressionTreeGrammarParameter.ActualValue == null) {99 SymbolicExpressionTreeGrammarParameter.ActualValue.ReadOnly = true;100 IScope globalScope = ExecutionContext.Scope;101 while (globalScope.Parent != null)102 globalScope = globalScope.Parent;103 104 globalScope.Variables.Add(new Variable(ClonedSymbolicExpressionTreeGrammarParameterName,105 (ISymbolicExpressionGrammar)SymbolicExpressionTreeGrammarParameter.ActualValue.Clone()));106 }107 return base.InstrumentedApply();108 }109 110 75 protected override ISymbolicExpressionTree Create(IRandom random) { 111 return Create(random, ClonedSymbolicExpressionTreeGrammar , MaximumSymbolicExpressionTreeLength.Value, MaximumSymbolicExpressionTreeDepth.Value);76 return Create(random, ClonedSymbolicExpressionTreeGrammarParameter.ActualValue, MaximumSymbolicExpressionTreeLength.Value, MaximumSymbolicExpressionTreeDepth.Value); 112 77 } 113 78 … … 129 94 var rootNode = (SymbolicExpressionTreeTopLevelNode)grammar.ProgramRootSymbol.CreateTreeNode(); 130 95 if (rootNode.HasLocalParameters) rootNode.ResetLocalParameters(random); 131 rootNode.SetGrammar( new SymbolicExpressionTreeGrammar(grammar));96 rootNode.SetGrammar(grammar.CreateExpressionTreeGrammar()); 132 97 133 98 var startNode = (SymbolicExpressionTreeTopLevelNode)grammar.StartSymbol.CreateTreeNode(); 134 99 if (startNode.HasLocalParameters) startNode.ResetLocalParameters(random); 135 startNode.SetGrammar( new SymbolicExpressionTreeGrammar(grammar));100 startNode.SetGrammar(grammar.CreateExpressionTreeGrammar()); 136 101 137 102 rootNode.AddSubtree(startNode); -
trunk/sources/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding/3.4/Creators/SymbolicExpressionTreeCreator.cs
r11171 r11496 33 33 public abstract class SymbolicExpressionTreeCreator : SymbolicExpressionTreeOperator, ISymbolicExpressionTreeCreator { 34 34 private const string SymbolicExpressionTreeParameterName = "SymbolicExpressionTree"; 35 private const string SymbolicExpressionTreeGrammarParameterName = "SymbolicExpressionTreeGrammar"; 36 private const string ClonedSymbolicExpressionTreeGrammarParameterName = "ClonedSymbolicExpressionTreeGrammar"; 37 35 38 #region Parameter Properties 36 39 public ILookupParameter<ISymbolicExpressionTree> SymbolicExpressionTreeParameter { 37 40 get { return (ILookupParameter<ISymbolicExpressionTree>)Parameters[SymbolicExpressionTreeParameterName]; } 38 41 } 42 43 public IValueLookupParameter<ISymbolicExpressionGrammar> SymbolicExpressionTreeGrammarParameter { 44 get { return (IValueLookupParameter<ISymbolicExpressionGrammar>)Parameters[SymbolicExpressionTreeGrammarParameterName]; } 45 } 46 47 public ILookupParameter<ISymbolicExpressionGrammar> ClonedSymbolicExpressionTreeGrammarParameter { 48 get { return (ILookupParameter<ISymbolicExpressionGrammar>)Parameters[ClonedSymbolicExpressionTreeGrammarParameterName]; } 49 } 39 50 #endregion 40 51 41 #region Properties42 public ISymbolicExpressionTree SymbolicExpressionTree {43 get { return SymbolicExpressionTreeParameter.ActualValue; }44 set { SymbolicExpressionTreeParameter.ActualValue = value; }45 }46 47 #endregion48 52 [StorableConstructor] 49 53 protected SymbolicExpressionTreeCreator(bool deserializing) : base(deserializing) { } … … 52 56 : base() { 53 57 Parameters.Add(new LookupParameter<ISymbolicExpressionTree>(SymbolicExpressionTreeParameterName, "The symbolic expression tree that should be created.")); 58 Parameters.Add(new ValueLookupParameter<ISymbolicExpressionGrammar>(SymbolicExpressionTreeGrammarParameterName, 59 "The tree grammar that defines the correct syntax of symbolic expression trees that should be created.")); 60 Parameters.Add(new LookupParameter<ISymbolicExpressionGrammar>(ClonedSymbolicExpressionTreeGrammarParameterName, 61 "An immutable clone of the concrete grammar that is actually used to create and manipulate trees.")); 62 } 63 64 [StorableHook(HookType.AfterDeserialization)] 65 private void AfterDeserialization() { 66 if (!Parameters.ContainsKey(ClonedSymbolicExpressionTreeGrammarParameterName)) 67 Parameters.Add(new LookupParameter<ISymbolicExpressionGrammar>(ClonedSymbolicExpressionTreeGrammarParameterName, "An immutable clone of the concrete grammar that is actually used to create and manipulate trees.")); 54 68 } 55 69 56 70 public override IOperation InstrumentedApply() { 57 SymbolicExpressionTree = Create(Random); 71 if (ClonedSymbolicExpressionTreeGrammarParameter.ActualValue == null) { 72 SymbolicExpressionTreeGrammarParameter.ActualValue.ReadOnly = true; 73 IScope globalScope = ExecutionContext.Scope; 74 while (globalScope.Parent != null) 75 globalScope = globalScope.Parent; 76 77 globalScope.Variables.Add(new Variable(ClonedSymbolicExpressionTreeGrammarParameterName, 78 (ISymbolicExpressionGrammar)SymbolicExpressionTreeGrammarParameter.ActualValue.Clone())); 79 } 80 SymbolicExpressionTreeParameter.ActualValue = Create(Random); 58 81 return base.InstrumentedApply(); 59 82 }
Note: See TracChangeset
for help on using the changeset viewer.