Changeset 11874
- Timestamp:
- 02/03/15 14:29:06 (10 years ago)
- Location:
- stable
- Files:
-
- 3 deleted
- 17 edited
- 1 copied
Legend:
- Unmodified
- Added
- Removed
-
stable
- Property svn:mergeinfo changed
/trunk/sources merged: 11494-11498,11504,11532,11536
- Property svn:mergeinfo changed
-
stable/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding
- Property svn:mergeinfo changed
/trunk/sources/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding merged: 11494-11497,11504,11532,11536
- Property svn:mergeinfo changed
-
stable/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding/3.4/Creators/FullTreeCreator.cs
r11170 r11874 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); -
stable/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding/3.4/Creators/GrowTreeCreator.cs
r11170 r11874 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); -
stable/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding/3.4/Creators/ProbabilisticTreeCreator.cs
r11170 r11874 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); -
stable/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding/3.4/Creators/RampedHalfAndHalfTreeCreator.cs
r11170 r11874 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); -
stable/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding/3.4/Creators/SymbolicExpressionTreeCreator.cs
r11170 r11874 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 } -
stable/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding/3.4/CutPoint.cs
r11170 r11874 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; -
stable/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding/3.4/Grammars/EmptySymbolicExpressionTreeGrammar.cs
r11494 r11874 27 27 using HeuristicLab.Common; 28 28 using HeuristicLab.Core; 29 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable; 29 30 30 31 namespace HeuristicLab.Encodings.SymbolicExpressionTreeEncoding { 32 33 [StorableClass] 31 34 internal sealed class EmptySymbolicExpressionTreeGrammar : NamedItem, ISymbolicExpressionTreeGrammar { 35 [Storable] 32 36 private ISymbolicExpressionGrammar grammar; 37 38 [StorableConstructor] 39 private EmptySymbolicExpressionTreeGrammar(bool deserializing) : base(deserializing) {} 33 40 internal EmptySymbolicExpressionTreeGrammar(ISymbolicExpressionGrammar grammar) 34 41 : base() { … … 128 135 throw new NotSupportedException(); 129 136 } 130 137 138 #pragma warning disable 0169 //disable usage warning 131 139 public event EventHandler Changed; 140 #pragma warning restore 0169 132 141 #endregion 133 142 } -
stable/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding/3.4/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding-3.4.csproj
r11120 r11874 136 136 <Compile Include="Formatters\SymbolicExpressionTreeGraphvizFormatter.cs" /> 137 137 <Compile Include="Formatters\SymbolicExpressionTreeHierarchicalFormatter.cs" /> 138 <Compile Include="Grammars\EmptySymbolicExpressionTreeGrammar.cs" /> 138 139 <Compile Include="Interfaces\IReadOnlySymbol.cs" /> 139 140 <Compile Include="Interfaces\ISymbolicExpressionGrammar.cs" /> … … 164 165 <Compile Include="Manipulators\SymbolicExpressionTreeManipulator.cs" /> 165 166 <Compile Include="Plugin.cs" /> 166 <Compile Include=" SymbolicExpressionGrammarBase.cs" />167 <Compile Include=" SymbolicExpressionGrammar.cs" />168 <Compile Include=" SymbolicExpressionTreeGrammar.cs" />167 <Compile Include="Grammars\SymbolicExpressionGrammarBase.cs" /> 168 <Compile Include="Grammars\SymbolicExpressionGrammar.cs" /> 169 <Compile Include="Grammars\SymbolicExpressionTreeGrammar.cs" /> 169 170 <Compile Include="SymbolicExpressionTreeTopLevelNode.cs" /> 170 171 <Compile Include="Crossovers\SubtreeCrossover.cs"> -
stable/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding/3.4/Interfaces/ISymbolicExpressionGrammar.cs
r11170 r11874 48 48 void StartGrammarManipulation(); 49 49 void FinishedGrammarManipulation(); 50 51 ISymbolicExpressionTreeGrammar CreateExpressionTreeGrammar(); 50 52 } 51 53 } -
stable/HeuristicLab.Problems.ArtificialAnt/3.4/ArtificialAntProblem.cs
r11170 r11874 180 180 InitializeOperators(); 181 181 RegisterEventHandlers(); 182 183 ArtificialAntExpressionGrammar.MaximumFunctionDefinitions = MaxFunctionDefinitions.Value; 184 ArtificialAntExpressionGrammar.MaximumFunctionArguments = MaxFunctionArguments.Value; 182 185 } 183 186 -
stable/HeuristicLab.Problems.LawnMower/3.3/Problem.cs
r11170 r11874 86 86 new Grammar())); 87 87 Maximization.Value = true; 88 InitializeOperators(); 89 88 89 GrammarParameter.Value.MaximumFunctionDefinitions = MaxFunctionDefinitionsParameter.Value.Value; 90 GrammarParameter.Value.MaximumFunctionArguments = MaxArgumentDefinitionsParameter.Value.Value; 91 92 InitializeOperators(); 90 93 RegisterEventHandlers(); 91 94 } -
stable/HeuristicLab.Tests
- Property svn:mergeinfo changed
/trunk/sources/HeuristicLab.Tests merged: 11498
- Property svn:mergeinfo changed
-
stable/HeuristicLab.Tests/HeuristicLab-3.3/CloningConstructorTest.cs
r11170 r11874 47 47 //test only types contained in HL plugin assemblies 48 48 if (!PluginLoader.Assemblies.Contains(deepCloneableType.Assembly)) continue; 49 if (deepCloneableType.IsSealed) continue; 49 50 50 51 bool found = false; -
stable/HeuristicLab.Tests/HeuristicLab-3.3/DeepCloneableCloningTest.cs
r11867 r11874 25 25 using HeuristicLab.Common; 26 26 using HeuristicLab.Core; 27 using HeuristicLab.Encodings.SymbolicExpressionTreeEncoding; 27 28 using HeuristicLab.Optimization; 28 29 using HeuristicLab.Persistence.Default.Xml; … … 54 55 excludedTypes.Add(typeof(HeuristicLab.Problems.DataAnalysis.ClassificationEnsembleSolution)); 55 56 excludedTypes.Add(typeof(HeuristicLab.Problems.DataAnalysis.RegressionEnsembleSolution)); 57 excludedTypes.Add(typeof(SymbolicExpressionGrammar).Assembly.GetType("HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.EmptySymbolicExpressionTreeGrammar")); 56 58 57 59 foreach (var symbolType in ApplicationManager.Manager.GetTypes(typeof(HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Symbol))) -
stable/HeuristicLab.Tests/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding-3.4/Util.cs
r11170 r11874 147 147 148 148 foreach (var subtree in tree.Root.Subtrees) { 149 Assert.AreNotSame(subtree.Grammar, tree.Root.Grammar); 149 if (tree.Root.Grammar.GetType().Name != "EmptySymbolicExpressionTreeGrammar") 150 Assert.AreNotSame(subtree.Grammar, tree.Root.Grammar); 150 151 IsValid(subtree.Grammar); 151 152 }
Note: See TracChangeset
for help on using the changeset viewer.