Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
10/24/14 18:48:25 (9 years ago)
Author:
bburlacu
Message:

#1772: Merged trunk changes.

Location:
branches/HeuristicLab.EvolutionTracking/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/HeuristicLab.EvolutionTracking/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding

  • branches/HeuristicLab.EvolutionTracking/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding/3.4/Creators/ProbabilisticTreeCreator.cs

    r11208 r11499  
    3939    private const string MaximumSymbolicExpressionTreeLengthParameterName = "MaximumSymbolicExpressionTreeLength";
    4040    private const string MaximumSymbolicExpressionTreeDepthParameterName = "MaximumSymbolicExpressionTreeDepth";
    41     private const string SymbolicExpressionTreeGrammarParameterName = "SymbolicExpressionTreeGrammar";
    42     private const string ClonedSymbolicExpressionTreeGrammarParameterName = "ClonedSymbolicExpressionTreeGrammar";
    4341    #region Parameter Properties
    4442    public IValueLookupParameter<IntValue> MaximumSymbolicExpressionTreeLengthParameter {
     
    4745    public IValueLookupParameter<IntValue> MaximumSymbolicExpressionTreeDepthParameter {
    4846      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]; }
    5547    }
    5648    #endregion
     
    6153    public IntValue MaximumSymbolicExpressionTreeDepth {
    6254      get { return MaximumSymbolicExpressionTreeDepthParameter.ActualValue; }
    63     }
    64     public ISymbolicExpressionGrammar SymbolicExpressionTreeGrammar {
    65       get { return ClonedSymbolicExpressionTreeGrammarParameter.ActualValue; }
    6655    }
    6756    #endregion
     
    7463      Parameters.Add(new ValueLookupParameter<IntValue>(MaximumSymbolicExpressionTreeLengthParameterName, "The maximal length (number of nodes) of the symbolic expression tree."));
    7564      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."));
    7865    }
    7966
     
    8168      return new ProbabilisticTreeCreator(this, cloner);
    8269    }
    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
    10071
    10172    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);
    10374    }
    10475
     
    11182      var rootNode = (SymbolicExpressionTreeTopLevelNode)grammar.ProgramRootSymbol.CreateTreeNode();
    11283      if (rootNode.HasLocalParameters) rootNode.ResetLocalParameters(random);
    113       rootNode.SetGrammar(new SymbolicExpressionTreeGrammar(grammar));
     84      rootNode.SetGrammar(grammar.CreateExpressionTreeGrammar());
     85
    11486      var startNode = (SymbolicExpressionTreeTopLevelNode)grammar.StartSymbol.CreateTreeNode();
    115       startNode.SetGrammar(new SymbolicExpressionTreeGrammar(grammar));
    11687      if (startNode.HasLocalParameters) startNode.ResetLocalParameters(random);
     88      startNode.SetGrammar(grammar.CreateExpressionTreeGrammar());
     89
    11790      rootNode.AddSubtree(startNode);
    11891      PTC2(random, startNode, maxTreeLength, maxTreeDepth);
Note: See TracChangeset for help on using the changeset viewer.