Changeset 11874 for stable/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding/3.4/Creators/SymbolicExpressionTreeCreator.cs
- Timestamp:
- 02/03/15 14:29:06 (10 years ago)
- Location:
- stable
- Files:
-
- 3 edited
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/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 }
Note: See TracChangeset
for help on using the changeset viewer.