Changeset 11499 for branches/HeuristicLab.EvolutionTracking
- Timestamp:
- 10/24/14 18:48:25 (10 years ago)
- Location:
- branches/HeuristicLab.EvolutionTracking/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding
- Files:
-
- 3 deleted
- 9 edited
- 1 copied
Legend:
- Unmodified
- Added
- Removed
-
branches/HeuristicLab.EvolutionTracking/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding
- Property svn:mergeinfo changed
/trunk/sources/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding merged: 11494-11497
- Property svn:mergeinfo changed
-
branches/HeuristicLab.EvolutionTracking/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding/3.4/Creators/FullTreeCreator.cs
r11208 r11499 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); -
branches/HeuristicLab.EvolutionTracking/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding/3.4/Creators/GrowTreeCreator.cs
r11208 r11499 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); -
branches/HeuristicLab.EvolutionTracking/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding/3.4/Creators/ProbabilisticTreeCreator.cs
r11208 r11499 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); -
branches/HeuristicLab.EvolutionTracking/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding/3.4/Creators/RampedHalfAndHalfTreeCreator.cs
r11208 r11499 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); -
branches/HeuristicLab.EvolutionTracking/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding/3.4/Creators/SymbolicExpressionTreeCreator.cs
r11208 r11499 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 } -
branches/HeuristicLab.EvolutionTracking/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding/3.4/CutPoint.cs
r11208 r11499 23 23 namespace HeuristicLab.Encodings.SymbolicExpressionTreeEncoding { 24 24 public class CutPoint { 25 public ISymbolicExpressionTreeNode Parent { get; set; }26 public ISymbolicExpressionTreeNode Child { get; set; }27 private int childIndex;28 public int ChildIndex { 29 get { return childIndex; }30 } 31 public CutPoint(ISymbolicExpressionTreeNode parent, ISymbolicExpressionTreeNode child) { 25 public ISymbolicExpressionTreeNode Parent { get; private set; } 26 public ISymbolicExpressionTreeNode Child { get; private set; } 27 private readonly ISymbolicExpressionTreeGrammar grammar; 28 29 public int ChildIndex { get; private set; } 30 31 public CutPoint(ISymbolicExpressionTreeNode parent, ISymbolicExpressionTreeNode child) { 32 32 this.Parent = parent; 33 33 this.Child = child; 34 this.childIndex = parent.IndexOfSubtree(child); 34 this.ChildIndex = parent.IndexOfSubtree(child); 35 this.grammar = parent.Grammar; 35 36 } 36 37 public CutPoint(ISymbolicExpressionTreeNode parent, int childIndex) { 37 38 this.Parent = parent; 38 this. childIndex = childIndex;39 this.ChildIndex = childIndex; 39 40 this.Child = null; 41 this.grammar = parent.Grammar; 40 42 } 41 43 … … 44 46 if (newChild == null) { 45 47 // make sure that one subtree can be removed and that only the last subtree is removed 46 return parent.Grammar.GetMinimumSubtreeCount(parent.Symbol) < parent.SubtreeCount &&48 return grammar.GetMinimumSubtreeCount(parent.Symbol) < parent.SubtreeCount && 47 49 this.ChildIndex == parent.SubtreeCount - 1; 48 50 } else { 49 51 // check syntax constraints of direct parent - child relation 50 if (! parent.Grammar.ContainsSymbol(newChild.Symbol) ||51 ! parent.Grammar.IsAllowedChildSymbol(parent.Symbol, newChild.Symbol, this.ChildIndex))52 if (!grammar.ContainsSymbol(newChild.Symbol) || 53 !grammar.IsAllowedChildSymbol(parent.Symbol, newChild.Symbol, this.ChildIndex)) 52 54 return false; 53 55 … … 57 59 result = 58 60 result && 59 parent.Grammar.ContainsSymbol(n.Symbol) &&60 n.SubtreeCount >= parent.Grammar.GetMinimumSubtreeCount(n.Symbol) &&61 n.SubtreeCount <= parent.Grammar.GetMaximumSubtreeCount(n.Symbol);61 grammar.ContainsSymbol(n.Symbol) && 62 n.SubtreeCount >= grammar.GetMinimumSubtreeCount(n.Symbol) && 63 n.SubtreeCount <= grammar.GetMaximumSubtreeCount(n.Symbol); 62 64 }); 63 65 return result; -
branches/HeuristicLab.EvolutionTracking/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding/3.4/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding-3.4.csproj
r10524 r11499 187 187 <Compile Include="Formatters\SymbolicExpressionTreeGraphvizFormatter.cs" /> 188 188 <Compile Include="Formatters\SymbolicExpressionTreeHierarchicalFormatter.cs" /> 189 <Compile Include="Grammars\EmptySymbolicExpressionTreeGrammar.cs" /> 189 190 <Compile Include="Interfaces\IReadOnlySymbol.cs" /> 190 191 <Compile Include="Interfaces\ISymbolicExpressionGrammar.cs" /> … … 217 218 <Compile Include="Manipulators\SymbolicExpressionTreeManipulator.cs" /> 218 219 <Compile Include="Plugin.cs" /> 219 <Compile Include=" SymbolicExpressionGrammarBase.cs" />220 <Compile Include=" SymbolicExpressionGrammar.cs" />221 <Compile Include=" SymbolicExpressionTreeGrammar.cs" />220 <Compile Include="Grammars\SymbolicExpressionGrammarBase.cs" /> 221 <Compile Include="Grammars\SymbolicExpressionGrammar.cs" /> 222 <Compile Include="Grammars\SymbolicExpressionTreeGrammar.cs" /> 222 223 <Compile Include="SymbolicExpressionTreeTopLevelNode.cs" /> 223 224 <Compile Include="Crossovers\SubtreeCrossover.cs"> -
branches/HeuristicLab.EvolutionTracking/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding/3.4/Interfaces/ISymbolicExpressionGrammar.cs
r11208 r11499 48 48 void StartGrammarManipulation(); 49 49 void FinishedGrammarManipulation(); 50 51 ISymbolicExpressionTreeGrammar CreateExpressionTreeGrammar(); 50 52 } 51 53 }
Note: See TracChangeset
for help on using the changeset viewer.