Changeset 18146 for branches/3136_Structural_GP/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding
- Timestamp:
- 12/16/21 14:23:48 (3 years ago)
- Location:
- branches/3136_Structural_GP
- Files:
-
- 14 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/3136_Structural_GP
- Property svn:mergeinfo changed
-
branches/3136_Structural_GP/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding
- Property svn:mergeinfo changed
-
branches/3136_Structural_GP/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding/3.4/Analyzers/SymbolicExpressionTreeLengthAnalyzer.cs
r17180 r18146 52 52 } 53 53 54 public I LookupParameter<IntValue> MaximumSymbolicExpressionTreeLengthParameter {55 get { return (I LookupParameter<IntValue>)Parameters[MaximumSymbolicExpressionTreeLengthParameterName]; }54 public IValueLookupParameter<IntValue> MaximumSymbolicExpressionTreeLengthParameter { 55 get { return (IValueLookupParameter<IntValue>)Parameters[MaximumSymbolicExpressionTreeLengthParameterName]; } 56 56 } 57 57 public ValueLookupParameter<DataTable> SymbolicExpressionTreeLengthsParameter { … … 102 102 : base() { 103 103 Parameters.Add(new ScopeTreeLookupParameter<ISymbolicExpressionTree>(SymbolicExpressionTreeParameterName, "The symbolic expression tree whose length should be calculated.")); 104 Parameters.Add(new LookupParameter<IntValue>(MaximumSymbolicExpressionTreeLengthParameterName, "The maximum allowed symbolic expression tree length"));104 Parameters.Add(new ValueLookupParameter<IntValue>(MaximumSymbolicExpressionTreeLengthParameterName, "The maximum allowed symbolic expression tree length")); 105 105 Parameters.Add(new ValueLookupParameter<DataTable>(SymbolicExpressionTreeLengthsParameterName, "The data table to store the symbolic expression tree lengths.")); 106 106 Parameters.Add(new ValueLookupParameter<DataTableHistory>(SymbolicExpressionTreeLengthsHistoryParameterName, "The data table to store the symbolic expression tree lengths history.")); … … 118 118 [StorableHook(HookType.AfterDeserialization)] 119 119 private void AfterDeserialization() { 120 // reset MaximumSymbolicExpressionTreeLengthParameterName to ValueLookupParameter 121 if (Parameters.TryGetValue(MaximumSymbolicExpressionTreeLengthParameterName, out IParameter treeLengthParam) && !(treeLengthParam is ValueLookupParameter<IntValue>)) 122 Parameters.Remove(MaximumSymbolicExpressionTreeLengthParameterName); 123 if(!Parameters.ContainsKey(MaximumSymbolicExpressionTreeLengthParameterName)) 124 Parameters.Add(new ValueLookupParameter<IntValue>(MaximumSymbolicExpressionTreeLengthParameterName, "The maximum allowed symbolic expression tree length")); 125 120 126 // check if all the parameters are present and accounted for 121 if (!Parameters.ContainsKey(StoreHistoryParameterName)) {127 if (!Parameters.ContainsKey(StoreHistoryParameterName)) 122 128 Parameters.Add(new ValueParameter<BoolValue>(StoreHistoryParameterName, "True if the tree lengths history of the population should be stored.", new BoolValue(false))); 123 }124 if (!Parameters.ContainsKey(UpdateIntervalParameterName)) {129 130 if (!Parameters.ContainsKey(UpdateIntervalParameterName)) 125 131 Parameters.Add(new ValueParameter<IntValue>(UpdateIntervalParameterName, "The interval in which the tree length analysis should be applied.", new IntValue(1))); 126 } 132 127 133 //necessary code to correct UpdateCounterParameter - type was changed from LookupParameter to ValueParameter 128 if (Parameters. ContainsKey(UpdateCounterParameterName) && (Parameters[UpdateCounterParameterName] is LookupParameter<IntValue>))134 if (Parameters.TryGetValue(UpdateCounterParameterName, out IParameter updateCounterParam) && updateCounterParam is LookupParameter<IntValue>) 129 135 Parameters.Remove(UpdateCounterParameterName); 130 136 if (!Parameters.ContainsKey(UpdateCounterParameterName)) { -
branches/3136_Structural_GP/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding/3.4/Creators/BalancedTreeCreator.cs
r18018 r18146 171 171 } 172 172 173 protected override ISymbolicExpressionTree Create(IRandom random) {174 var maxLength = MaximumSymbolicExpressionTreeLengthParameter.ActualValue.Value;175 var maxDepth = MaximumSymbolicExpressionTreeDepthParameter.ActualValue.Value;176 var grammar = ClonedSymbolicExpressionTreeGrammarParameter.ActualValue;177 return Create(random, grammar, maxLength, maxDepth);178 }179 180 173 #region helpers 181 174 private class NodeInfo { -
branches/3136_Structural_GP/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding/3.4/Creators/FullTreeCreator.cs
r17180 r18146 45 45 } 46 46 47 48 protected override ISymbolicExpressionTree Create(IRandom random) {49 return Create(random, ClonedSymbolicExpressionTreeGrammarParameter.ActualValue,50 MaximumSymbolicExpressionTreeLengthParameter.ActualValue.Value, MaximumSymbolicExpressionTreeDepthParameter.ActualValue.Value);51 }52 47 53 48 public override ISymbolicExpressionTree CreateTree(IRandom random, ISymbolicExpressionGrammar grammar, int maxTreeLength, int maxTreeDepth) { -
branches/3136_Structural_GP/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding/3.4/Creators/GrowTreeCreator.cs
r17180 r18146 40 40 public override IDeepCloneable Clone(Cloner cloner) { 41 41 return new GrowTreeCreator(this, cloner); 42 }43 44 45 protected override ISymbolicExpressionTree Create(IRandom random) {46 return Create(random, ClonedSymbolicExpressionTreeGrammarParameter.ActualValue,47 MaximumSymbolicExpressionTreeLengthParameter.ActualValue.Value, MaximumSymbolicExpressionTreeDepthParameter.ActualValue.Value);48 42 } 49 43 -
branches/3136_Structural_GP/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding/3.4/Creators/ProbabilisticTreeCreator.cs
r17180 r18146 48 48 } 49 49 50 51 protected override ISymbolicExpressionTree Create(IRandom random) {52 return Create(random, ClonedSymbolicExpressionTreeGrammarParameter.ActualValue,53 MaximumSymbolicExpressionTreeLengthParameter.ActualValue.Value, MaximumSymbolicExpressionTreeDepthParameter.ActualValue.Value);54 }55 56 50 public override ISymbolicExpressionTree CreateTree(IRandom random, ISymbolicExpressionGrammar grammar, int maxTreeLength, int maxTreeDepth) { 57 51 return Create(random, grammar, maxTreeLength, maxTreeDepth); -
branches/3136_Structural_GP/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding/3.4/Creators/RampedHalfAndHalfTreeCreator.cs
r17180 r18146 40 40 } 41 41 42 protected override ISymbolicExpressionTree Create(IRandom random) {43 return Create(random, ClonedSymbolicExpressionTreeGrammarParameter.ActualValue,44 MaximumSymbolicExpressionTreeLengthParameter.ActualValue.Value, MaximumSymbolicExpressionTreeDepthParameter.ActualValue.Value);45 }46 47 42 public override ISymbolicExpressionTree CreateTree(IRandom random, ISymbolicExpressionGrammar grammar, int maxTreeLength, int maxTreeDepth) { 48 43 return Create(random, grammar, maxTreeLength, maxTreeDepth); -
branches/3136_Structural_GP/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding/3.4/Creators/SymbolicExpressionTreeCreator.cs
r17180 r18146 37 37 38 38 private const string SymbolicExpressionTreeGrammarParameterName = "SymbolicExpressionTreeGrammar"; 39 private const string ClonedSymbolicExpressionTreeGrammarParameterName = "ClonedSymbolicExpressionTreeGrammar";40 39 41 40 #region Parameter Properties … … 49 48 get { return (IValueLookupParameter<ISymbolicExpressionGrammar>)Parameters[SymbolicExpressionTreeGrammarParameterName]; } 50 49 } 51 52 public ILookupParameter<ISymbolicExpressionGrammar> ClonedSymbolicExpressionTreeGrammarParameter {53 get { return (ILookupParameter<ISymbolicExpressionGrammar>)Parameters[ClonedSymbolicExpressionTreeGrammarParameterName]; }54 }55 50 #endregion 56 51 … … 63 58 Parameters.Add(new ValueLookupParameter<IntValue>(MaximumSymbolicExpressionTreeDepthParameterName, "The maximal depth of the symbolic expression tree (a tree with one node has depth = 0).")); 64 59 Parameters.Add(new ValueLookupParameter<ISymbolicExpressionGrammar>(SymbolicExpressionTreeGrammarParameterName, "The tree grammar that defines the correct syntax of symbolic expression trees that should be created.")); 65 Parameters.Add(new LookupParameter<ISymbolicExpressionGrammar>(ClonedSymbolicExpressionTreeGrammarParameterName, "An immutable clone of the concrete grammar that is actually used to create and manipulate trees."));66 }67 68 [StorableHook(HookType.AfterDeserialization)]69 private void AfterDeserialization() {70 if (!Parameters.ContainsKey(ClonedSymbolicExpressionTreeGrammarParameterName))71 Parameters.Add(new LookupParameter<ISymbolicExpressionGrammar>(ClonedSymbolicExpressionTreeGrammarParameterName, "An immutable clone of the concrete grammar that is actually used to create and manipulate trees."));72 60 } 73 61 74 62 public override IOperation InstrumentedApply() { 75 if (ClonedSymbolicExpressionTreeGrammarParameter.ActualValue == null) { 76 SymbolicExpressionTreeGrammarParameter.ActualValue.ReadOnly = true; 77 IScope globalScope = ExecutionContext.Scope; 78 while (globalScope.Parent != null) 79 globalScope = globalScope.Parent; 63 var rand = RandomParameter.ActualValue; 64 var grammar = SymbolicExpressionTreeGrammarParameter.ActualValue; 65 var maxTreeLength = MaximumSymbolicExpressionTreeLengthParameter.ActualValue.Value; 66 var maxTreeDepth = MaximumSymbolicExpressionTreeDepthParameter.ActualValue.Value; 80 67 81 globalScope.Variables.Add(new Variable(ClonedSymbolicExpressionTreeGrammarParameterName, 82 (ISymbolicExpressionGrammar)SymbolicExpressionTreeGrammarParameter.ActualValue.Clone())); 83 } 84 SymbolicExpressionTreeParameter.ActualValue = Create(RandomParameter.ActualValue); 68 SymbolicExpressionTreeParameter.ActualValue = CreateTree(rand, grammar, maxTreeLength, maxTreeDepth); 85 69 return base.InstrumentedApply(); 86 70 } 87 88 protected abstract ISymbolicExpressionTree Create(IRandom random);89 71 public abstract ISymbolicExpressionTree CreateTree(IRandom random, ISymbolicExpressionGrammar grammar, int maxTreeLength, int maxTreeDepth); 90 72 } -
branches/3136_Structural_GP/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding/3.4/Grammars/SymbolicExpressionGrammar.cs
r17180 r18146 191 191 public event EventHandler ReadOnlyChanged; 192 192 protected virtual void OnReadOnlyChanged() { 193 var handler = ReadOnlyChanged; 194 if (handler != null) 195 handler(this, EventArgs.Empty); 196 } 197 198 #region IStatefulItem methods 199 void IStatefulItem.InitializeState() { 200 ReadOnly = false; 201 } 202 void IStatefulItem.ClearState() { 203 ReadOnly = false; 204 } 205 #endregion 193 ReadOnlyChanged?.Invoke(this, EventArgs.Empty); 194 } 206 195 207 196 public sealed override void AddAllowedChildSymbol(ISymbol parent, ISymbol child) { -
branches/3136_Structural_GP/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding/3.4/Interfaces/ISymbolicExpressionGrammar.cs
r17180 r18146 27 27 namespace HeuristicLab.Encodings.SymbolicExpressionTreeEncoding { 28 28 [StorableType("1f6afcbe-b309-44e2-8d35-2d33eaeb9649")] 29 public interface ISymbolicExpressionGrammar : ISymbolicExpressionGrammarBase , IStatefulItem{29 public interface ISymbolicExpressionGrammar : ISymbolicExpressionGrammarBase { 30 30 ISymbol ProgramRootSymbol { get; } 31 31 ISymbol StartSymbol { get; } -
branches/3136_Structural_GP/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding/3.4/Interfaces/ISymbolicExpressionTreeNodeSimilarityComparer.cs
r16565 r18146 6 6 [StorableType("c4de8ab2-616d-4c73-9f9c-59545ac38199")] 7 7 public interface ISymbolicExpressionTreeNodeSimilarityComparer : IEqualityComparer<ISymbolicExpressionTreeNode>, IItem { 8 bool Match ConstantValues { get; set; }8 bool MatchParameterValues { get; set; } 9 9 bool MatchVariableWeights { get; set; } 10 10 bool MatchVariableNames { get; set; } -
branches/3136_Structural_GP/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding/3.4/Manipulators/FullTreeShaker.cs
r17180 r18146 47 47 public FullTreeShaker() 48 48 : base() { 49 Parameters.Add(new FixedValueParameter<DoubleValue>(ShakingFactorParameterName, "The shaking factor that should be used for the manipulation of constants (default=1.0).", new DoubleValue(1.0)));49 Parameters.Add(new FixedValueParameter<DoubleValue>(ShakingFactorParameterName, "The shaking factor that should be used for the manipulation of parameters (default=1.0).", new DoubleValue(1.0))); 50 50 } 51 51 -
branches/3136_Structural_GP/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding/3.4/Manipulators/OnePointShaker.cs
r17180 r18146 49 49 public OnePointShaker() 50 50 : base() { 51 Parameters.Add(new FixedValueParameter<DoubleValue>(ShakingFactorParameterName, "The shaking factor that should be used for the manipulation of constants (default=1.0).", new DoubleValue(1.0)));51 Parameters.Add(new FixedValueParameter<DoubleValue>(ShakingFactorParameterName, "The shaking factor that should be used for the manipulation of parameters (default=1.0).", new DoubleValue(1.0))); 52 52 } 53 53
Note: See TracChangeset
for help on using the changeset viewer.