Changeset 11576 for branches/OptimizationNetworks/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding/3.4/Creators/RampedHalfAndHalfTreeCreator.cs
- Timestamp:
- 11/25/14 03:26:00 (10 years ago)
- Location:
- branches/OptimizationNetworks
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/OptimizationNetworks
- Property svn:mergeinfo changed
-
branches/OptimizationNetworks/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding
- Property svn:mergeinfo changed
-
branches/OptimizationNetworks/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding/3.4/Creators/RampedHalfAndHalfTreeCreator.cs
r10291 r11576 1 1 #region License Information 2 2 /* HeuristicLab 3 * Copyright (C) 2002-201 3Heuristic and Evolutionary Algorithms Laboratory (HEAL)3 * Copyright (C) 2002-2014 Heuristic and Evolutionary Algorithms Laboratory (HEAL) 4 4 * 5 5 * This file is part of HeuristicLab. … … 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);
Note: See TracChangeset
for help on using the changeset viewer.