Changeset 11576 for branches/OptimizationNetworks/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding/3.4/Creators/GrowTreeCreator.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/GrowTreeCreator.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. … … 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);
Note: See TracChangeset
for help on using the changeset viewer.