Changeset 12395 for branches/HiveStatistics/sources/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding/3.4/Creators/SymbolicExpressionTreeCreator.cs
- Timestamp:
- 05/20/15 16:41:14 (10 years ago)
- Location:
- branches/HiveStatistics/sources
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/HiveStatistics/sources
- Property svn:mergeinfo changed
-
branches/HiveStatistics/sources/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding
-
branches/HiveStatistics/sources/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding/3.4/Creators/SymbolicExpressionTreeCreator.cs
r11205 r12395 1 1 #region License Information 2 2 /* HeuristicLab 3 * Copyright (C) 2002-201 4Heuristic and Evolutionary Algorithms Laboratory (HEAL)3 * Copyright (C) 2002-2015 Heuristic and Evolutionary Algorithms Laboratory (HEAL) 4 4 * 5 5 * This file is part of HeuristicLab. … … 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.