Changeset 12353
- Timestamp:
- 04/28/15 17:23:14 (10 years ago)
- Location:
- branches/SymbolicExpressionTreeEncoding
- Files:
-
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/SymbolicExpressionTreeEncoding/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding/3.4/Grammars/EmptySymbolicExpressionTreeGrammar.cs
r12012 r12353 37 37 38 38 [StorableConstructor] 39 private EmptySymbolicExpressionTreeGrammar(bool deserializing) : base(deserializing) { }39 private EmptySymbolicExpressionTreeGrammar(bool deserializing) : base(deserializing) { } 40 40 internal EmptySymbolicExpressionTreeGrammar(ISymbolicExpressionGrammar grammar) 41 41 : base() { … … 70 70 } 71 71 72 IEnumerable<ISymbol> ISymbolicExpressionGrammarBase.GetAllowedChildSymbols(ISymbol parent) {72 public IEnumerable<ISymbol> GetAllowedChildSymbols(ISymbol parent) { 73 73 return grammar.GetAllowedChildSymbols(parent); 74 74 } 75 75 76 IEnumerable<ISymbol> ISymbolicExpressionGrammarBase.GetAllowedChildSymbols(ISymbol parent, int argumentIndex) {76 public IEnumerable<ISymbol> GetAllowedChildSymbols(ISymbol parent, int argumentIndex) { 77 77 return grammar.GetAllowedChildSymbols(parent, argumentIndex); 78 78 } … … 85 85 } 86 86 87 int ISymbolicExpressionGrammarBase.GetMinimumExpressionDepth(ISymbol symbol) {87 public int GetMinimumExpressionDepth(ISymbol symbol) { 88 88 return grammar.GetMinimumExpressionDepth(symbol); 89 89 } 90 int ISymbolicExpressionGrammarBase.GetMaximumExpressionDepth(ISymbol symbol) {90 public int GetMaximumExpressionDepth(ISymbol symbol) { 91 91 return grammar.GetMaximumExpressionDepth(symbol); 92 92 } 93 int ISymbolicExpressionGrammarBase.GetMinimumExpressionLength(ISymbol symbol) {93 public int GetMinimumExpressionLength(ISymbol symbol) { 94 94 return grammar.GetMinimumExpressionLength(symbol); 95 95 } 96 int ISymbolicExpressionGrammarBase.GetMaximumExpressionLength(ISymbol symbol, int maxDepth) {96 public int GetMaximumExpressionLength(ISymbol symbol, int maxDepth) { 97 97 return grammar.GetMaximumExpressionLength(symbol, maxDepth); 98 98 } 99 99 100 public void AddSymbol(ISymbol symbol) { throw new NotSupportedException(); } 101 public void RemoveSymbol(ISymbol symbol) { throw new NotSupportedException(); } 102 public void AddAllowedChildSymbol(ISymbol parent, ISymbol child) { throw new NotSupportedException(); } 103 public void AddAllowedChildSymbol(ISymbol parent, ISymbol child, int argumentIndex) { throw new NotSupportedException(); } 104 public void RemoveAllowedChildSymbol(ISymbol parent, ISymbol child) { throw new NotSupportedException(); } 105 public void RemoveAllowedChildSymbol(ISymbol parent, ISymbol child, int argumentIndex) { throw new NotSupportedException(); } 106 public void SetSubtreeCount(ISymbol symbol, int minimumSubtreeCount, int maximumSubtreeCount) { throw new NotSupportedException(); } 107 100 108 101 109 #region ISymbolicExpressionTreeGrammar Members 102 IEnumerable<ISymbol> ISymbolicExpressionTreeGrammar.ModifyableSymbols {110 public IEnumerable<ISymbol> ModifyableSymbols { 103 111 get { return Enumerable.Empty<ISymbol>(); } 104 112 } 105 113 106 bool ISymbolicExpressionTreeGrammar.IsModifyableSymbol(ISymbol symbol) {114 public bool IsModifyableSymbol(ISymbol symbol) { 107 115 return false; 108 116 } 109 117 110 void ISymbolicExpressionTreeGrammar.AddSymbol(ISymbol symbol) { 111 throw new NotSupportedException(); 112 } 113 114 void ISymbolicExpressionTreeGrammar.RemoveSymbol(ISymbol symbol) { 115 throw new NotSupportedException(); 116 } 117 118 void ISymbolicExpressionTreeGrammar.AddAllowedChildSymbol(ISymbol parent, ISymbol child) { 119 throw new NotSupportedException(); 120 } 121 122 void ISymbolicExpressionTreeGrammar.AddAllowedChildSymbol(ISymbol parent, ISymbol child, int argumentIndex) { 123 throw new NotSupportedException(); 124 } 125 126 void ISymbolicExpressionTreeGrammar.RemoveAllowedChildSymbol(ISymbol parent, ISymbol child) { 127 throw new NotSupportedException(); 128 } 129 130 void ISymbolicExpressionTreeGrammar.RemoveAllowedChildSymbol(ISymbol parent, ISymbol child, int argumentIndex) { 131 throw new NotSupportedException(); 132 } 133 134 void ISymbolicExpressionTreeGrammar.SetSubtreeCount(ISymbol symbol, int minimumSubtreeCount, int maximumSubtreeCount) { 135 throw new NotSupportedException(); 136 } 137 138 #pragma warning disable 0067 //disable usage warning 118 #pragma warning disable 0067 //disable usage warning 139 119 public event EventHandler Changed; 140 120 #pragma warning restore 0067 141 121 #endregion 142 122 } -
branches/SymbolicExpressionTreeEncoding/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding/3.4/Grammars/SymbolicExpressionGrammar.cs
r12012 r12353 177 177 } 178 178 179 protected override sealed void AddSymbol(ISymbol symbol) { 179 public override sealed void AddSymbol(ISymbol symbol) { 180 if (ReadOnly) throw new InvalidOperationException(); 180 181 base.AddSymbol(symbol); 181 182 RegisterSymbolEvents(symbol); 182 183 OnChanged(); 183 184 } 184 protected override sealed void RemoveSymbol(ISymbol symbol) { 185 public override sealed void RemoveSymbol(ISymbol symbol) { 186 if (ReadOnly) throw new InvalidOperationException(); 185 187 DeregisterSymbolEvents(symbol); 186 188 base.RemoveSymbol(symbol); … … 204 206 #endregion 205 207 206 #region ISymbolicExpressionGrammar methods 207 void ISymbolicExpressionGrammar.AddSymbol(ISymbol symbol) { 208 if (ReadOnly) throw new InvalidOperationException(); 209 AddSymbol(symbol); 210 } 211 void ISymbolicExpressionGrammar.RemoveSymbol(ISymbol symbol) { 212 if (ReadOnly) throw new InvalidOperationException(); 213 RemoveSymbol(symbol); 214 } 215 216 void ISymbolicExpressionGrammar.AddAllowedChildSymbol(ISymbol parent, ISymbol child) { 208 public sealed override void AddAllowedChildSymbol(ISymbol parent, ISymbol child) { 217 209 if (ReadOnly) throw new InvalidOperationException(); 218 210 base.AddAllowedChildSymbol(parent, child); 219 211 } 220 void ISymbolicExpressionGrammar.AddAllowedChildSymbol(ISymbol parent, ISymbol child, int argumentIndex) {212 public sealed override void AddAllowedChildSymbol(ISymbol parent, ISymbol child, int argumentIndex) { 221 213 if (ReadOnly) throw new InvalidOperationException(); 222 214 base.AddAllowedChildSymbol(parent, child, argumentIndex); 223 215 } 224 void ISymbolicExpressionGrammar.RemoveAllowedChildSymbol(ISymbol parent, ISymbol child) {216 public sealed override void RemoveAllowedChildSymbol(ISymbol parent, ISymbol child) { 225 217 if (ReadOnly) throw new InvalidOperationException(); 226 218 base.RemoveAllowedChildSymbol(parent, child); 227 219 } 228 void ISymbolicExpressionGrammar.RemoveAllowedChildSymbol(ISymbol parent, ISymbol child, int argumentIndex) {220 public sealed override void RemoveAllowedChildSymbol(ISymbol parent, ISymbol child, int argumentIndex) { 229 221 if (ReadOnly) throw new InvalidOperationException(); 230 222 base.RemoveAllowedChildSymbol(parent, child, argumentIndex); 231 223 } 232 224 233 void ISymbolicExpressionGrammar.SetSubtreeCount(ISymbol symbol, int minimumSubtreeCount, int maximumSubtreeCount) {225 public sealed override void SetSubtreeCount(ISymbol symbol, int minimumSubtreeCount, int maximumSubtreeCount) { 234 226 if (ReadOnly) throw new InvalidOperationException(); 235 227 base.SetSubtreeCount(symbol, minimumSubtreeCount, maximumSubtreeCount); … … 237 229 238 230 private bool suppressEvents = false; 239 void ISymbolicExpressionGrammar.StartGrammarManipulation() {231 public void StartGrammarManipulation() { 240 232 suppressEvents = true; 241 233 } 242 void ISymbolicExpressionGrammar.FinishedGrammarManipulation() {234 public void FinishedGrammarManipulation() { 243 235 suppressEvents = false; 244 236 OnChanged(); 245 237 } 246 238 247 protected override void OnChanged() {239 protected sealed override void OnChanged() { 248 240 if (suppressEvents) return; 249 241 base.OnChanged(); 250 242 } 251 #endregion252 243 253 244 #region symbol events … … 305 296 private void Symbol_NameChanged(object sender, EventArgs e) { 306 297 ISymbol symbol = (ISymbol)sender; 307 string oldName = symbols. Where(x => x.Value == symbol).First().Key;298 string oldName = symbols.First(x => x.Value == symbol).Key; 308 299 string newName = symbol.Name; 309 300 -
branches/SymbolicExpressionTreeEncoding/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding/3.4/Grammars/SymbolicExpressionGrammarBase.cs
r12319 r12353 41 41 private IEnumerable<ISymbol> StorableSymbols { 42 42 get { return symbols.Values.ToArray(); } 43 set { symbols = value.ToDictionary(sym => sym.Name); }43 set { foreach (var s in value) symbols.Add(s.Name, s); } 44 44 } 45 45 … … 47 47 private IEnumerable<KeyValuePair<ISymbol, Tuple<int, int>>> StorableSymbolSubtreeCount { 48 48 get { return symbolSubtreeCount.Select(x => new KeyValuePair<ISymbol, Tuple<int, int>>(GetSymbol(x.Key), x.Value)).ToArray(); } 49 set { symbolSubtreeCount = value.ToDictionary(x => x.Key.Name, x => x.Value); }49 set { foreach (var pair in value) symbolSubtreeCount.Add(pair.Key.Name, pair.Value); } 50 50 } 51 51 … … 53 53 private IEnumerable<KeyValuePair<ISymbol, IEnumerable<ISymbol>>> StorableAllowedChildSymbols { 54 54 get { return allowedChildSymbols.Select(x => new KeyValuePair<ISymbol, IEnumerable<ISymbol>>(GetSymbol(x.Key), x.Value.Select(GetSymbol).ToArray())).ToArray(); } 55 set { allowedChildSymbols = value.ToDictionary(x => x.Key.Name, x => x.Value.Select(y => y.Name).ToList()); }55 set { foreach (var pair in value) allowedChildSymbols.Add(pair.Key.Name, pair.Value.Select(y => y.Name).ToList()); } 56 56 } 57 57 58 58 [Storable(Name = "AllowedChildSymbolsPerIndex")] 59 59 private IEnumerable<KeyValuePair<Tuple<ISymbol, int>, IEnumerable<ISymbol>>> StorableAllowedChildSymbolsPerIndex { 60 get { return allowedChildSymbolsPerIndex.Select(x => new KeyValuePair<Tuple<ISymbol, int>, IEnumerable<ISymbol>>(Tuple.Create<ISymbol, int>(GetSymbol(x.Key.Item1), x.Key.Item2), x.Value.Select(y => GetSymbol(y)).ToArray())).ToArray(); } 61 set { allowedChildSymbolsPerIndex = value.ToDictionary(x => Tuple.Create(x.Key.Item1.Name, x.Key.Item2), x => x.Value.Select(y => y.Name).ToList()); } 60 get { return allowedChildSymbolsPerIndex.Select(x => new KeyValuePair<Tuple<ISymbol, int>, IEnumerable<ISymbol>>(Tuple.Create(GetSymbol(x.Key.Item1), x.Key.Item2), x.Value.Select(GetSymbol).ToArray())).ToArray(); } 61 set { 62 foreach (var pair in value) 63 allowedChildSymbolsPerIndex.Add(Tuple.Create(pair.Key.Item1.Name, pair.Key.Item2), pair.Value.Select(y => y.Name).ToList()); 64 } 62 65 } 63 66 #endregion 64 67 65 68 private bool suppressEvents; 66 protected Dictionary<string, ISymbol> symbols;67 protected Dictionary<string, Tuple<int, int>> symbolSubtreeCount;68 protected Dictionary<string, List<string>> allowedChildSymbols;69 protected Dictionary<Tuple<string, int>, List<string>> allowedChildSymbolsPerIndex;69 protected readonly Dictionary<string, ISymbol> symbols; 70 protected readonly Dictionary<string, Tuple<int, int>> symbolSubtreeCount; 71 protected readonly Dictionary<string, List<string>> allowedChildSymbols; 72 protected readonly Dictionary<Tuple<string, int>, List<string>> allowedChildSymbolsPerIndex; 70 73 71 74 public override bool CanChangeName { … … 87 90 cachedIsAllowedChildSymbolIndex = new Dictionary<Tuple<string, string, int>, bool>(); 88 91 92 symbols = new Dictionary<string, ISymbol>(); 93 symbolSubtreeCount = new Dictionary<string, Tuple<int, int>>(); 94 allowedChildSymbols = new Dictionary<string, List<string>>(); 95 allowedChildSymbolsPerIndex = new Dictionary<Tuple<string, int>, List<string>>(); 96 89 97 suppressEvents = false; 90 98 } … … 133 141 134 142 #region protected grammar manipulation methods 135 p rotectedvirtual void AddSymbol(ISymbol symbol) {143 public virtual void AddSymbol(ISymbol symbol) { 136 144 if (ContainsSymbol(symbol)) throw new ArgumentException("Symbol " + symbol + " is already defined."); 137 145 foreach (var s in symbol.Flatten()) { … … 143 151 } 144 152 145 p rotectedvirtual void RemoveSymbol(ISymbol symbol) {153 public virtual void RemoveSymbol(ISymbol symbol) { 146 154 foreach (var s in symbol.Flatten()) { 147 155 symbols.Remove(s.Name); … … 175 183 } 176 184 177 p rotectedvoid AddAllowedChildSymbol(ISymbol parent, ISymbol child) {185 public virtual void AddAllowedChildSymbol(ISymbol parent, ISymbol child) { 178 186 bool changed = false; 179 187 … … 204 212 } 205 213 206 p rotectedvoid AddAllowedChildSymbol(ISymbol parent, ISymbol child, int argumentIndex) {214 public virtual void AddAllowedChildSymbol(ISymbol parent, ISymbol child, int argumentIndex) { 207 215 bool changed = false; 208 216 … … 238 246 } 239 247 240 p rotectedvoid RemoveAllowedChildSymbol(ISymbol parent, ISymbol child) {248 public virtual void RemoveAllowedChildSymbol(ISymbol parent, ISymbol child) { 241 249 bool changed = false; 242 250 List<string> childSymbols; … … 257 265 } 258 266 259 p rotectedvoid RemoveAllowedChildSymbol(ISymbol parent, ISymbol child, int argumentIndex) {267 public virtual void RemoveAllowedChildSymbol(ISymbol parent, ISymbol child, int argumentIndex) { 260 268 bool changed = false; 261 269 … … 282 290 } 283 291 284 p rotectedvoid SetSubtreeCount(ISymbol symbol, int minimumSubtreeCount, int maximumSubtreeCount) {292 public virtual void SetSubtreeCount(ISymbol symbol, int minimumSubtreeCount, int maximumSubtreeCount) { 285 293 var symbols = symbol.Flatten().Where(s => !(s is GroupSymbol)); 286 294 if (symbols.Any(s => s.MinimumArity > minimumSubtreeCount)) throw new ArgumentException("Invalid minimum subtree count " + minimumSubtreeCount + " for " + symbol); -
branches/SymbolicExpressionTreeEncoding/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding/3.4/Grammars/SymbolicExpressionTreeGrammar.cs
r12012 r12353 55 55 } 56 56 } 57 public override IEnumerable<ISymbol> AllowedSymbols {58 get { return base.AllowedSymbols; }59 }60 57 public IEnumerable<ISymbol> ModifyableSymbols { 61 58 get { return base.symbols.Values; } … … 76 73 } 77 74 78 public override bool IsAllowedChildSymbol(ISymbol parent, ISymbol child) { 79 return grammar.IsAllowedChildSymbol(parent, child) || base.IsAllowedChildSymbol(parent, child); 80 } 81 public override bool IsAllowedChildSymbol(ISymbol parent, ISymbol child, int argumentIndex) { 82 return grammar.IsAllowedChildSymbol(parent, child, argumentIndex) || base.IsAllowedChildSymbol(parent, child, argumentIndex); 75 public override void RemoveSymbol(ISymbol symbol) { 76 if (!IsModifyableSymbol(symbol)) throw new InvalidOperationException(); 77 base.RemoveSymbol(symbol); 83 78 } 84 79 … … 91 86 return base.GetMaximumSubtreeCount(symbol); 92 87 } 93 94 void ISymbolicExpressionTreeGrammar.AddSymbol(ISymbol symbol) { 95 base.AddSymbol(symbol); 96 } 97 void ISymbolicExpressionTreeGrammar.RemoveSymbol(ISymbol symbol) { 98 if (!IsModifyableSymbol(symbol)) throw new InvalidOperationException(); 99 base.RemoveSymbol(symbol); 100 } 101 void ISymbolicExpressionTreeGrammar.AddAllowedChildSymbol(ISymbol parent, ISymbol child) { 102 base.AddAllowedChildSymbol(parent, child); 103 } 104 void ISymbolicExpressionTreeGrammar.AddAllowedChildSymbol(ISymbol parent, ISymbol child, int argumentIndex) { 105 base.AddAllowedChildSymbol(parent, child, argumentIndex); 106 } 107 void ISymbolicExpressionTreeGrammar.RemoveAllowedChildSymbol(ISymbol parent, ISymbol child) { 108 base.RemoveAllowedChildSymbol(parent, child); 109 } 110 void ISymbolicExpressionTreeGrammar.RemoveAllowedChildSymbol(ISymbol parent, ISymbol child, int argumentIndex) { 111 base.RemoveAllowedChildSymbol(parent, child, argumentIndex); 112 } 113 114 void ISymbolicExpressionTreeGrammar.SetSubtreeCount(ISymbol symbol, int minimumSubtreeCount, int maximumSubtreeCount) { 88 public override void SetSubtreeCount(ISymbol symbol, int minimumSubtreeCount, int maximumSubtreeCount) { 115 89 if (!IsModifyableSymbol(symbol)) throw new InvalidOperationException(); 116 90 base.SetSubtreeCount(symbol, minimumSubtreeCount, maximumSubtreeCount); 117 91 } 118 92 119 int ISymbolicExpressionGrammarBase.GetMinimumExpressionDepth(ISymbol symbol) { 120 if (symbols.Count == 0) return grammar.GetMinimumExpressionDepth(symbol); 121 else return base.GetMinimumExpressionDepth(symbol); 93 public override bool IsAllowedChildSymbol(ISymbol parent, ISymbol child) { 94 return grammar.IsAllowedChildSymbol(parent, child) || base.IsAllowedChildSymbol(parent, child); 122 95 } 123 int ISymbolicExpressionGrammarBase.GetMaximumExpressionDepth(ISymbol symbol) { 124 if (symbols.Count == 0) return grammar.GetMaximumExpressionDepth(symbol); 125 else return base.GetMaximumExpressionDepth(symbol); 96 public override bool IsAllowedChildSymbol(ISymbol parent, ISymbol child, int argumentIndex) { 97 return grammar.IsAllowedChildSymbol(parent, child, argumentIndex) || base.IsAllowedChildSymbol(parent, child, argumentIndex); 126 98 } 127 int ISymbolicExpressionGrammarBase.GetMinimumExpressionLength(ISymbol symbol) {128 if (symbols.Count == 0) return grammar.GetMinimumExpressionLength(symbol);129 else return base.GetMinimumExpressionLength(symbol);130 }131 int ISymbolicExpressionGrammarBase.GetMaximumExpressionLength(ISymbol symbol, int maxDepth) {132 if (symbols.Count == 0) return grammar.GetMaximumExpressionLength(symbol, maxDepth);133 else return base.GetMaximumExpressionLength(symbol, maxDepth);134 }135 136 99 } 137 100 } -
branches/SymbolicExpressionTreeEncoding/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding/3.4/Interfaces/ISymbolicExpressionGrammar.cs
r12012 r12353 36 36 event EventHandler ReadOnlyChanged; 37 37 38 void AddSymbol(ISymbol symbol);39 void RemoveSymbol(ISymbol symbol);40 41 void AddAllowedChildSymbol(ISymbol parent, ISymbol child);42 void AddAllowedChildSymbol(ISymbol parent, ISymbol child, int argumentIndex);43 void RemoveAllowedChildSymbol(ISymbol parent, ISymbol child);44 void RemoveAllowedChildSymbol(ISymbol parent, ISymbol child, int argumentIndex);45 46 void SetSubtreeCount(ISymbol symbol, int minimumSubtreeCount, int maximumSubtreeCount);47 48 38 void StartGrammarManipulation(); 49 39 void FinishedGrammarManipulation(); -
branches/SymbolicExpressionTreeEncoding/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding/3.4/Interfaces/ISymbolicExpressionGrammarBase.cs
r12012 r12353 27 27 public interface ISymbolicExpressionGrammarBase : INamedItem { 28 28 IEnumerable<ISymbol> Symbols { get; } 29 IEnumerable<ISymbol> AllowedSymbols { get; } 30 31 bool ContainsSymbol(ISymbol symbol); 29 32 ISymbol GetSymbol(string symbolName); 30 IEnumerable<ISymbol> AllowedSymbols { get; } 31 bool ContainsSymbol(ISymbol symbol); 33 34 void AddSymbol(ISymbol symbol); 35 void RemoveSymbol(ISymbol symbol); 32 36 33 37 bool IsAllowedChildSymbol(ISymbol parent, ISymbol child); … … 36 40 IEnumerable<ISymbol> GetAllowedChildSymbols(ISymbol parent, int argumentIndex); 37 41 42 void AddAllowedChildSymbol(ISymbol parent, ISymbol child); 43 void AddAllowedChildSymbol(ISymbol parent, ISymbol child, int argumentIndex); 44 void RemoveAllowedChildSymbol(ISymbol parent, ISymbol child); 45 void RemoveAllowedChildSymbol(ISymbol parent, ISymbol child, int argumentIndex); 46 47 38 48 int GetMinimumSubtreeCount(ISymbol symbol); 39 49 int GetMaximumSubtreeCount(ISymbol symbol); 50 void SetSubtreeCount(ISymbol symbol, int minimumSubtreeCount, int maximumSubtreeCount); 40 51 41 52 int GetMinimumExpressionDepth(ISymbol start); -
branches/SymbolicExpressionTreeEncoding/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding/3.4/Interfaces/ISymbolicExpressionTreeGrammar.cs
r12012 r12353 23 23 namespace HeuristicLab.Encodings.SymbolicExpressionTreeEncoding { 24 24 public interface ISymbolicExpressionTreeGrammar : ISymbolicExpressionGrammarBase { 25 26 25 IEnumerable<ISymbol> ModifyableSymbols { get; } 27 26 bool IsModifyableSymbol(ISymbol symbol); 28 void AddSymbol(ISymbol symbol);29 void RemoveSymbol(ISymbol symbol);30 31 void AddAllowedChildSymbol(ISymbol parent, ISymbol child);32 void AddAllowedChildSymbol(ISymbol parent, ISymbol child, int argumentIndex);33 void RemoveAllowedChildSymbol(ISymbol parent, ISymbol child);34 void RemoveAllowedChildSymbol(ISymbol parent, ISymbol child, int argumentIndex);35 36 void SetSubtreeCount(ISymbol symbol, int minimumSubtreeCount, int maximumSubtreeCount);37 27 } 38 28 } -
branches/SymbolicExpressionTreeEncoding/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Crossovers/MultiSymbolicDataAnalysisExpressionCrossover.cs
r12341 r12353 35 35 namespace HeuristicLab.Problems.DataAnalysis.Symbolic { 36 36 [Item("MultiSymbolicDataAnalysisExpressionCrossover", "Randomly selects and applies one of its crossovers every time it is called.")] 37 [StorableClass] 37 38 public class MultiSymbolicDataAnalysisExpressionCrossover<T> : StochasticMultiBranch<ISymbolicExpressionTreeCrossover>, 38 39 ISymbolicDataAnalysisExpressionCrossover<T> where T : class, IDataAnalysisProblemData { … … 113 114 } 114 115 116 [StorableHook(HookType.AfterDeserialization)] 117 private void AfterDeserialization() { 118 // BackwardsCompatibility3.3 119 #region Backwards compatible code, remove with 3.4 120 if (!Parameters.ContainsKey(SymbolicExpressionTreeParameterName)) 121 Parameters.Add(new LookupParameter<ISymbolicExpressionTree>(SymbolicExpressionTreeParameterName, "The symbolic expression tree on which the operator should be applied.")); 122 #endregion 123 } 124 115 125 private void InitializeOperators() { 116 126 var list = ApplicationManager.Manager.GetInstances<ISymbolicExpressionTreeCrossover>().ToList();
Note: See TracChangeset
for help on using the changeset viewer.