- Timestamp:
- 05/15/19 13:36:51 (5 years ago)
- Location:
- branches/2457_ExpertSystem/HeuristicLab.Optimization
- Files:
-
- 33 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2457_ExpertSystem/HeuristicLab.Optimization
- Property svn:mergeinfo changed
-
branches/2457_ExpertSystem/HeuristicLab.Optimization/3.3/BasicProblems/BasicProblem.cs
r16075 r16956 1 1 #region License Information 2 2 /* HeuristicLab 3 * Copyright (C) 2002-201 8Heuristic and Evolutionary Algorithms Laboratory (HEAL)3 * Copyright (C) 2002-2019 Heuristic and Evolutionary Algorithms Laboratory (HEAL) 4 4 * 5 5 * This file is part of HeuristicLab. … … 23 23 using System.Collections.Generic; 24 24 using System.Linq; 25 using HEAL.Attic; 25 26 using HeuristicLab.Common; 26 27 using HeuristicLab.Core; 28 using HeuristicLab.Data; 27 29 using HeuristicLab.Parameters; 28 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;29 30 30 31 namespace HeuristicLab.Optimization { 31 [Storable Class]32 [StorableType("D877082E-9E77-4CB1-ABDB-35F63878E116")] 32 33 public abstract class BasicProblem<TEncoding, TEvaluator> : HeuristicOptimizationProblem<TEvaluator, ISolutionCreator>, IProblemDefinition, IStorableContent 33 34 where TEncoding : class, IEncoding … … 78 79 79 80 [StorableConstructor] 80 protected BasicProblem( bool deserializing) : base(deserializing) { }81 protected BasicProblem(StorableConstructorFlag _) : base(_) { } 81 82 [StorableHook(HookType.AfterDeserialization)] 82 83 private void AfterDeserialization() { … … 157 158 OnOperatorsChanged(); 158 159 } 160 161 protected override IEnumerable<KeyValuePair<string, IItem>> GetCollectedValues(IValueParameter param) { 162 if (param.Value == null) yield break; 163 if (param.GetsCollected) { 164 if (param == EncodingParameter) // store only the name of the encoding 165 yield return new KeyValuePair<string, IItem>(String.Empty, new StringValue(EncodingParameter.Value.Name)); 166 else yield return new KeyValuePair<string, IItem>(String.Empty, param.Value); 167 } 168 var parameterizedItem = param.Value as IParameterizedItem; 169 if (parameterizedItem != null) { 170 var children = new Dictionary<string, IItem>(); 171 parameterizedItem.CollectParameterValues(children); 172 foreach (var child in children) yield return child; 173 } 174 } 159 175 } 160 176 } -
branches/2457_ExpertSystem/HeuristicLab.Optimization/3.3/BasicProblems/Encoding.cs
r16075 r16956 1 1 #region License Information 2 2 /* HeuristicLab 3 * Copyright (C) 2002-201 8Heuristic and Evolutionary Algorithms Laboratory (HEAL)3 * Copyright (C) 2002-2019 Heuristic and Evolutionary Algorithms Laboratory (HEAL) 4 4 * 5 5 * This file is part of HeuristicLab. … … 23 23 using System.Collections.Generic; 24 24 using System.Linq; 25 using HEAL.Attic; 25 26 using HeuristicLab.Common; 26 27 using HeuristicLab.Core; 27 28 using HeuristicLab.Parameters; 28 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;29 29 30 30 namespace HeuristicLab.Optimization { 31 31 [Item("Encoding", "Base class for describing different encodings.")] 32 [Storable Class]32 [StorableType("395B1372-FA54-4649-9EBE-5402A0AA9494")] 33 33 public abstract class Encoding<T> : ParameterizedNamedItem, IEncoding 34 34 where T : class,ISolutionCreator { … … 84 84 85 85 [StorableConstructor] 86 protected Encoding( bool deserializing) : base(deserializing) { }86 protected Encoding(StorableConstructorFlag _) : base(_) { } 87 87 protected Encoding(Encoding<T> original, Cloner cloner) 88 88 : base(original, cloner) { … … 92 92 protected Encoding(string name) 93 93 : base(name) { 94 Parameters.Add(new FixedValueParameter<ReadOnlyItemSet<IOperator>>(name + ".Operators", "The operators that the encoding specifies.", encodingOperators.AsReadOnly())); 94 Parameters.Add(new FixedValueParameter<ReadOnlyItemSet<IOperator>>(name + ".Operators", "The operators that the encoding specifies.", encodingOperators.AsReadOnly()) { 95 GetsCollected = false 96 }); 95 97 } 96 98 -
branches/2457_ExpertSystem/HeuristicLab.Optimization/3.3/BasicProblems/Individuals/Individual.cs
r16075 r16956 1 1 #region License Information 2 2 /* HeuristicLab 3 * Copyright (C) 2002-201 8Heuristic and Evolutionary Algorithms Laboratory (HEAL)3 * Copyright (C) 2002-2019 Heuristic and Evolutionary Algorithms Laboratory (HEAL) 4 4 * 5 5 * This file is part of HeuristicLab. … … 24 24 using System.Linq; 25 25 using HeuristicLab.Core; 26 using HEAL.Attic; 26 27 27 28 namespace HeuristicLab.Optimization { 29 [StorableType("b1388a9d-c85c-49f6-9916-ef4c93dffee0")] 28 30 public abstract class Individual { 31 [Storable] 29 32 protected IEncoding Encoding { get; private set; } 33 [Storable] 30 34 protected IScope Scope { get; private set; } 31 35 public string Name { get { return Encoding.Name; } } 36 37 38 [StorableConstructor] 39 protected Individual(StorableConstructorFlag _) { 40 } 32 41 33 42 protected Individual(IEncoding encoding, IScope scope) { -
branches/2457_ExpertSystem/HeuristicLab.Optimization/3.3/BasicProblems/Individuals/MultiEncodingIndividual.cs
r16075 r16956 1 1 #region License Information 2 2 /* HeuristicLab 3 * Copyright (C) 2002-201 8Heuristic and Evolutionary Algorithms Laboratory (HEAL)3 * Copyright (C) 2002-2019 Heuristic and Evolutionary Algorithms Laboratory (HEAL) 4 4 * 5 5 * This file is part of HeuristicLab. … … 21 21 22 22 using System; 23 using System.Collections.Generic;24 23 using System.Linq; 25 24 using HeuristicLab.Common; 26 25 using HeuristicLab.Core; 26 using HEAL.Attic; 27 27 28 28 namespace HeuristicLab.Optimization { 29 [StorableType("ec7201c7-3c9f-4a93-966b-d848d9538202")] 29 30 public sealed class MultiEncodingIndividual : Individual { 30 31 private new MultiEncoding Encoding { 31 32 get { return (MultiEncoding)base.Encoding; } 33 } 34 35 [StorableConstructor] 36 private MultiEncodingIndividual(StorableConstructorFlag _) : base(_) { 32 37 } 33 38 -
branches/2457_ExpertSystem/HeuristicLab.Optimization/3.3/BasicProblems/Individuals/SingleEncodingIndividual.cs
r16075 r16956 1 1 #region License Information 2 2 /* HeuristicLab 3 * Copyright (C) 2002-201 8Heuristic and Evolutionary Algorithms Laboratory (HEAL)3 * Copyright (C) 2002-2019 Heuristic and Evolutionary Algorithms Laboratory (HEAL) 4 4 * 5 5 * This file is part of HeuristicLab. … … 23 23 using HeuristicLab.Common; 24 24 using HeuristicLab.Core; 25 using HEAL.Attic; 25 26 26 27 namespace HeuristicLab.Optimization { 28 [StorableType("13a86161-9e5c-442b-ab1c-18018b1d9708")] 27 29 public sealed class SingleEncodingIndividual : Individual { 30 [StorableConstructor] 31 private SingleEncodingIndividual(StorableConstructorFlag _) : base(_) { 32 } 33 28 34 public SingleEncodingIndividual(IEncoding encoding, IScope scope) 29 35 : base(encoding, scope) { -
branches/2457_ExpertSystem/HeuristicLab.Optimization/3.3/BasicProblems/Interfaces/IEncoding.cs
r16075 r16956 1 1 #region License Information 2 2 /* HeuristicLab 3 * Copyright (C) 2002-201 8Heuristic and Evolutionary Algorithms Laboratory (HEAL)3 * Copyright (C) 2002-2019 Heuristic and Evolutionary Algorithms Laboratory (HEAL) 4 4 * 5 5 * This file is part of HeuristicLab. … … 23 23 using System.Collections.Generic; 24 24 using HeuristicLab.Core; 25 using HEAL.Attic; 25 26 26 27 namespace HeuristicLab.Optimization { 28 [StorableType("d70b2675-246c-489c-a91b-b2e19a1616a3")] 27 29 public interface IEncoding : IParameterizedNamedItem { 28 30 ISolutionCreator SolutionCreator { get; set; } -
branches/2457_ExpertSystem/HeuristicLab.Optimization/3.3/BasicProblems/Interfaces/IEncodingOperator.cs
r16075 r16956 1 1 #region License Information 2 2 /* HeuristicLab 3 * Copyright (C) 2002-201 8Heuristic and Evolutionary Algorithms Laboratory (HEAL)3 * Copyright (C) 2002-2019 Heuristic and Evolutionary Algorithms Laboratory (HEAL) 4 4 * 5 5 * This file is part of HeuristicLab. … … 21 21 22 22 using HeuristicLab.Core; 23 using HEAL.Attic; 23 24 24 25 namespace HeuristicLab.Optimization { 26 [StorableType("20faaf8b-dd4f-4f0e-a772-4c4dec7fcccb")] 25 27 public interface IEncodingOperator : IOperator { 26 28 ILookupParameter<IEncoding> EncodingParameter { get; } -
branches/2457_ExpertSystem/HeuristicLab.Optimization/3.3/BasicProblems/Interfaces/IMultiEncodingOperator.cs
r16075 r16956 1 1 #region License Information 2 2 /* HeuristicLab 3 * Copyright (C) 2002-201 8Heuristic and Evolutionary Algorithms Laboratory (HEAL)3 * Copyright (C) 2002-2019 Heuristic and Evolutionary Algorithms Laboratory (HEAL) 4 4 * 5 5 * This file is part of HeuristicLab. … … 21 21 22 22 using HeuristicLab.Core; 23 using HEAL.Attic; 23 24 24 25 namespace HeuristicLab.Optimization { 26 [StorableType("e8b66565-263c-49f9-9c08-29b820bf3e5a")] 25 27 public interface IMultiEncodingOperator : IOperator { 26 28 void AddEncoding(IEncoding encoding); -
branches/2457_ExpertSystem/HeuristicLab.Optimization/3.3/BasicProblems/Interfaces/IMultiObjectiveProblemDefinition.cs
r16075 r16956 1 1 #region License Information 2 2 /* HeuristicLab 3 * Copyright (C) 2002-201 8Heuristic and Evolutionary Algorithms Laboratory (HEAL)3 * Copyright (C) 2002-2019 Heuristic and Evolutionary Algorithms Laboratory (HEAL) 4 4 * 5 5 * This file is part of HeuristicLab. … … 21 21 22 22 using HeuristicLab.Core; 23 using HEAL.Attic; 23 24 24 25 namespace HeuristicLab.Optimization { 26 [StorableType("39eacdb5-80a0-425d-902a-00eb3e1d6610")] 25 27 public interface IMultiObjectiveProblemDefinition : IProblemDefinition { 26 28 bool[] Maximization { get; } -
branches/2457_ExpertSystem/HeuristicLab.Optimization/3.3/BasicProblems/Interfaces/IProblemDefinition.cs
r16075 r16956 1 #region License Information 1 using HEAL.Attic; 2 #region License Information 2 3 /* HeuristicLab 3 * Copyright (C) 2002-201 8Heuristic and Evolutionary Algorithms Laboratory (HEAL)4 * Copyright (C) 2002-2019 Heuristic and Evolutionary Algorithms Laboratory (HEAL) 4 5 * 5 6 * This file is part of HeuristicLab. … … 21 22 22 23 namespace HeuristicLab.Optimization { 24 [StorableType("747a3cea-b9ba-4322-a5c2-050cd7e16e2a")] 23 25 public interface IProblemDefinition { 24 26 IEncoding Encoding { get; } -
branches/2457_ExpertSystem/HeuristicLab.Optimization/3.3/BasicProblems/Interfaces/ISingleObjectiveMoveOperator.cs
r16075 r16956 1 #region License Information 1 using HEAL.Attic; 2 #region License Information 2 3 /* HeuristicLab 3 * Copyright (C) 2002-201 8Heuristic and Evolutionary Algorithms Laboratory (HEAL)4 * Copyright (C) 2002-2019 Heuristic and Evolutionary Algorithms Laboratory (HEAL) 4 5 * 5 6 * This file is part of HeuristicLab. … … 21 22 22 23 namespace HeuristicLab.Optimization { 24 [StorableType("82423b2f-1343-4a21-847c-e69bdcde4861")] 23 25 public interface ISingleObjectiveMoveOperator : IMoveOperator, ISingleObjectiveOperator { 24 26 } -
branches/2457_ExpertSystem/HeuristicLab.Optimization/3.3/BasicProblems/Interfaces/ISingleObjectiveProblemDefinition.cs
r16075 r16956 1 1 #region License Information 2 2 /* HeuristicLab 3 * Copyright (C) 2002-201 8Heuristic and Evolutionary Algorithms Laboratory (HEAL)3 * Copyright (C) 2002-2019 Heuristic and Evolutionary Algorithms Laboratory (HEAL) 4 4 * 5 5 * This file is part of HeuristicLab. … … 22 22 using System.Collections.Generic; 23 23 using HeuristicLab.Core; 24 using HEAL.Attic; 24 25 25 26 namespace HeuristicLab.Optimization { 27 [StorableType("7ec7bf7e-aaa7-4681-828b-3401cf67e2b3")] 26 28 public interface ISingleObjectiveProblemDefinition : IProblemDefinition { 27 29 bool Maximization { get; } -
branches/2457_ExpertSystem/HeuristicLab.Optimization/3.3/BasicProblems/Interfaces/internal/IMultiObjectiveAnalysisOperator.cs
r16075 r16956 1 1 #region License Information 2 2 /* HeuristicLab 3 * Copyright (C) 2002-201 8Heuristic and Evolutionary Algorithms Laboratory (HEAL)3 * Copyright (C) 2002-2019 Heuristic and Evolutionary Algorithms Laboratory (HEAL) 4 4 * 5 5 * This file is part of HeuristicLab. … … 22 22 using System; 23 23 using HeuristicLab.Core; 24 using HEAL.Attic; 24 25 25 26 namespace HeuristicLab.Optimization { 27 [StorableType("c9325602-3262-48a4-8985-03657fb0b34f")] 26 28 internal interface IMultiObjectiveAnalysisOperator : IEncodingOperator, IAnalyzer, IMultiObjectiveOperator { 27 29 Action<Individual[], double[][], ResultCollection, IRandom> AnalyzeAction { get; set; } -
branches/2457_ExpertSystem/HeuristicLab.Optimization/3.3/BasicProblems/Interfaces/internal/IMultiObjectiveEvaluationOperator.cs
r16075 r16956 1 1 #region License Information 2 2 /* HeuristicLab 3 * Copyright (C) 2002-201 8Heuristic and Evolutionary Algorithms Laboratory (HEAL)3 * Copyright (C) 2002-2019 Heuristic and Evolutionary Algorithms Laboratory (HEAL) 4 4 * 5 5 * This file is part of HeuristicLab. … … 22 22 using System; 23 23 using HeuristicLab.Core; 24 using HEAL.Attic; 24 25 25 26 namespace HeuristicLab.Optimization { 27 [StorableType("89da568c-70a2-48fb-8e6b-ea078bb6fc3f")] 26 28 internal interface IMultiObjectiveEvaluationOperator : IMultiObjectiveEvaluator, IEncodingOperator { 27 29 Func<Individual, IRandom, double[]> EvaluateFunc { get; set; } -
branches/2457_ExpertSystem/HeuristicLab.Optimization/3.3/BasicProblems/Interfaces/internal/INeighborBasedOperator.cs
r16075 r16956 1 1 #region License Information 2 2 /* HeuristicLab 3 * Copyright (C) 2002-201 8Heuristic and Evolutionary Algorithms Laboratory (HEAL)3 * Copyright (C) 2002-2019 Heuristic and Evolutionary Algorithms Laboratory (HEAL) 4 4 * 5 5 * This file is part of HeuristicLab. … … 23 23 using System.Collections.Generic; 24 24 using HeuristicLab.Core; 25 using HEAL.Attic; 25 26 26 27 namespace HeuristicLab.Optimization { 28 [StorableType("fda56e0b-9392-4711-9af1-55211bfa24ac")] 27 29 internal interface INeighborBasedOperator : IEncodingOperator { 28 30 Func<Individual, IRandom, IEnumerable<Individual>> GetNeighborsFunc { get; set; } -
branches/2457_ExpertSystem/HeuristicLab.Optimization/3.3/BasicProblems/Interfaces/internal/ISingleObjectiveAnalysisOperator.cs
r16075 r16956 1 1 #region License Information 2 2 /* HeuristicLab 3 * Copyright (C) 2002-201 8Heuristic and Evolutionary Algorithms Laboratory (HEAL)3 * Copyright (C) 2002-2019 Heuristic and Evolutionary Algorithms Laboratory (HEAL) 4 4 * 5 5 * This file is part of HeuristicLab. … … 22 22 using System; 23 23 using HeuristicLab.Core; 24 using HEAL.Attic; 24 25 25 26 namespace HeuristicLab.Optimization { 27 [StorableType("9731981c-10c6-4850-9308-a4720ac07da7")] 26 28 internal interface ISingleObjectiveAnalysisOperator : IEncodingOperator, ISingleObjectiveOperator { 27 29 Action<Individual[], double[], ResultCollection, IRandom> AnalyzeAction { get; set; } -
branches/2457_ExpertSystem/HeuristicLab.Optimization/3.3/BasicProblems/Interfaces/internal/ISingleObjectiveEvaluationOperator.cs
r16075 r16956 1 1 #region License Information 2 2 /* HeuristicLab 3 * Copyright (C) 2002-201 8Heuristic and Evolutionary Algorithms Laboratory (HEAL)3 * Copyright (C) 2002-2019 Heuristic and Evolutionary Algorithms Laboratory (HEAL) 4 4 * 5 5 * This file is part of HeuristicLab. … … 22 22 using System; 23 23 using HeuristicLab.Core; 24 using HEAL.Attic; 24 25 25 26 namespace HeuristicLab.Optimization { 27 [StorableType("5a9cf334-4815-4f0e-a2f8-f3d4edfcc829")] 26 28 internal interface ISingleObjectiveEvaluationOperator : ISingleObjectiveEvaluator, IEncodingOperator { 27 29 Func<Individual, IRandom, double> EvaluateFunc { get; set; } -
branches/2457_ExpertSystem/HeuristicLab.Optimization/3.3/BasicProblems/MultiEncoding.cs
r16075 r16956 1 1 #region License Information 2 2 /* HeuristicLab 3 * Copyright (C) 2002-201 8Heuristic and Evolutionary Algorithms Laboratory (HEAL)3 * Copyright (C) 2002-2019 Heuristic and Evolutionary Algorithms Laboratory (HEAL) 4 4 * 5 5 * This file is part of HeuristicLab. … … 25 25 using HeuristicLab.Common; 26 26 using HeuristicLab.Core; 27 using H euristicLab.Persistence.Default.CompositeSerializers.Storable;27 using HEAL.Attic; 28 28 using HeuristicLab.PluginInfrastructure; 29 29 30 30 namespace HeuristicLab.Optimization { 31 31 [Item("MultiEncoding", "Describes a combined encoding consisting of multiple simpler encodings.")] 32 [Storable Class]32 [StorableType("359E2173-4D0C-40E5-A2F3-E42E59840345")] 33 33 public sealed class MultiEncoding : Encoding<MultiEncodingCreator> { 34 34 … … 41 41 42 42 [StorableConstructor] 43 private MultiEncoding(bool deserializing) 44 : base(deserializing) { 43 private MultiEncoding(StorableConstructorFlag _) : base(_) { 45 44 encodings = new List<IEncoding>(); 46 45 } -
branches/2457_ExpertSystem/HeuristicLab.Optimization/3.3/BasicProblems/MultiObjectiveBasicProblem.cs
r16075 r16956 1 1 #region License Information 2 2 /* HeuristicLab 3 * Copyright (C) 2002-201 8Heuristic and Evolutionary Algorithms Laboratory (HEAL)3 * Copyright (C) 2002-2019 Heuristic and Evolutionary Algorithms Laboratory (HEAL) 4 4 * 5 5 * This file is part of HeuristicLab. … … 20 20 #endregion 21 21 22 using System;23 using System.Collections.Generic;24 22 using System.Linq; 23 using HEAL.Attic; 25 24 using HeuristicLab.Common; 26 25 using HeuristicLab.Core; 27 26 using HeuristicLab.Data; 28 27 using HeuristicLab.Parameters; 29 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;30 28 31 29 namespace HeuristicLab.Optimization { 32 [Storable Class]30 [StorableType("6F2EC371-0309-4848-B7B1-C9B9C7E3436F")] 33 31 public abstract class MultiObjectiveBasicProblem<TEncoding> : BasicProblem<TEncoding, MultiObjectiveEvaluator>, IMultiObjectiveHeuristicOptimizationProblem, IMultiObjectiveProblemDefinition 34 32 where TEncoding : class, IEncoding { 35 33 [StorableConstructor] 36 protected MultiObjectiveBasicProblem( bool deserializing) : base(deserializing) { }34 protected MultiObjectiveBasicProblem(StorableConstructorFlag _) : base(_) { } 37 35 38 36 protected MultiObjectiveBasicProblem(MultiObjectiveBasicProblem<TEncoding> original, Cloner cloner) … … 61 59 62 60 protected override void OnOperatorsChanged() { 63 base.OnOperatorsChanged();64 61 if (Encoding != null) { 65 62 PruneSingleObjectiveOperators(Encoding); … … 71 68 } 72 69 } 70 base.OnOperatorsChanged(); 73 71 } 74 72 -
branches/2457_ExpertSystem/HeuristicLab.Optimization/3.3/BasicProblems/Operators/MultiEncodingCreator.cs
r16075 r16956 1 1 #region License Information 2 2 /* HeuristicLab 3 * Copyright (C) 2002-201 8Heuristic and Evolutionary Algorithms Laboratory (HEAL)3 * Copyright (C) 2002-2019 Heuristic and Evolutionary Algorithms Laboratory (HEAL) 4 4 * 5 5 * This file is part of HeuristicLab. … … 22 22 using System; 23 23 using System.Linq; 24 using HEAL.Attic; 24 25 using HeuristicLab.Common; 25 26 using HeuristicLab.Core; 26 using HeuristicLab.P ersistence.Default.CompositeSerializers.Storable;27 using HeuristicLab.Parameters; 27 28 28 29 namespace HeuristicLab.Optimization { 29 30 [Item("MultiEncodingCreator", "Contains solution creators that together create a multi-encoding.")] 30 [StorableClass] 31 public sealed class MultiEncodingCreator : MultiEncodingOperator<ISolutionCreator>, ISolutionCreator { 31 [StorableType("E261B506-6F74-4BC4-8164-5ACE20FBC319")] 32 public sealed class MultiEncodingCreator : MultiEncodingOperator<ISolutionCreator>, ISolutionCreator, IStochasticOperator { 33 public ILookupParameter<IRandom> RandomParameter { 34 get { return (ILookupParameter<IRandom>)Parameters["Random"]; } 35 } 36 37 public override string OperatorPrefix => "Creator"; 38 32 39 [StorableConstructor] 33 private MultiEncodingCreator( bool deserializing) : base(deserializing) { }40 private MultiEncodingCreator(StorableConstructorFlag _) : base(_) { } 34 41 35 42 private MultiEncodingCreator(MultiEncodingCreator original, Cloner cloner) : base(original, cloner) { } 36 public MultiEncodingCreator() { } 43 public MultiEncodingCreator() { 44 Parameters.Add(new LookupParameter<IRandom>("Random", "The random number generator used by the individual operators.")); 45 } 37 46 38 47 public override IDeepCloneable Clone(Cloner cloner) { 39 48 return new MultiEncodingCreator(this, cloner); 49 } 50 51 [StorableHook(HookType.AfterDeserialization)] 52 private void AfterDeserialization() { 53 if (!Parameters.ContainsKey("Random")) { 54 Parameters.Add(new LookupParameter<IRandom>("Random", "The random number generator used by the individual operators.")); 55 } 40 56 } 41 57 -
branches/2457_ExpertSystem/HeuristicLab.Optimization/3.3/BasicProblems/Operators/MultiEncodingCrossover.cs
r16075 r16956 1 1 #region License Information 2 2 /* HeuristicLab 3 * Copyright (C) 2002-201 8Heuristic and Evolutionary Algorithms Laboratory (HEAL)3 * Copyright (C) 2002-2019 Heuristic and Evolutionary Algorithms Laboratory (HEAL) 4 4 * 5 5 * This file is part of HeuristicLab. … … 20 20 #endregion 21 21 22 using HEAL.Attic; 22 23 using HeuristicLab.Common; 23 24 using HeuristicLab.Core; 24 using HeuristicLab.P ersistence.Default.CompositeSerializers.Storable;25 using HeuristicLab.Parameters; 25 26 26 27 namespace HeuristicLab.Optimization { 27 28 [Item("MultiEncoding Crossover", "Applies different crossovers to cross a multi-encoding.")] 28 [StorableClass] 29 public sealed class MultiEncodingCrossover : MultiEncodingOperator<ICrossover>, ICrossover { 29 [StorableType("BB0A04E2-899D-460C-82A2-5E4CEEDE8996")] 30 public sealed class MultiEncodingCrossover : MultiEncodingOperator<ICrossover>, ICrossover, IStochasticOperator { 31 public ILookupParameter<IRandom> RandomParameter { 32 get { return (ILookupParameter<IRandom>)Parameters["Random"]; } 33 } 34 35 public override string OperatorPrefix => "Crossover"; 36 30 37 [StorableConstructor] 31 private MultiEncodingCrossover( bool deserializing) : base(deserializing) { }38 private MultiEncodingCrossover(StorableConstructorFlag _) : base(_) { } 32 39 private MultiEncodingCrossover(MultiEncodingCrossover original, Cloner cloner) : base(original, cloner) { } 33 public MultiEncodingCrossover() { } 40 public MultiEncodingCrossover() { 41 Parameters.Add(new LookupParameter<IRandom>("Random", "The random number generator used by the individual operators.")); 42 } 34 43 35 44 public override IDeepCloneable Clone(Cloner cloner) { return new MultiEncodingCrossover(this, cloner); } 45 46 [StorableHook(HookType.AfterDeserialization)] 47 private void AfterDeserialization() { 48 if (!Parameters.ContainsKey("Random")) { 49 Parameters.Add(new LookupParameter<IRandom>("Random", "The random number generator used by the individual operators.")); 50 } 51 } 36 52 } 37 53 } -
branches/2457_ExpertSystem/HeuristicLab.Optimization/3.3/BasicProblems/Operators/MultiEncodingManipulator.cs
r16075 r16956 1 1 #region License Information 2 2 /* HeuristicLab 3 * Copyright (C) 2002-201 8Heuristic and Evolutionary Algorithms Laboratory (HEAL)3 * Copyright (C) 2002-2019 Heuristic and Evolutionary Algorithms Laboratory (HEAL) 4 4 * 5 5 * This file is part of HeuristicLab. … … 20 20 #endregion 21 21 22 using HEAL.Attic; 22 23 using HeuristicLab.Common; 23 24 using HeuristicLab.Core; 24 using HeuristicLab.P ersistence.Default.CompositeSerializers.Storable;25 using HeuristicLab.Parameters; 25 26 26 27 namespace HeuristicLab.Optimization { 27 28 [Item("MultiEncoding Manipulator", "Applies different manipulators to change a multi-encoding.")] 28 [StorableClass] 29 public sealed class MultiEncodingManipulator : MultiEncodingOperator<IManipulator>, IManipulator { 29 [StorableType("574D0530-47E8-4FD9-8AC8-B8EA2DE3C203")] 30 public sealed class MultiEncodingManipulator : MultiEncodingOperator<IManipulator>, IManipulator, IStochasticOperator { 31 public ILookupParameter<IRandom> RandomParameter { 32 get { return (ILookupParameter<IRandom>)Parameters["Random"]; } 33 } 34 35 public override string OperatorPrefix => "Manipulator"; 36 30 37 [StorableConstructor] 31 private MultiEncodingManipulator( bool deserializing) : base(deserializing) { }38 private MultiEncodingManipulator(StorableConstructorFlag _) : base(_) { } 32 39 private MultiEncodingManipulator(MultiEncodingManipulator original, Cloner cloner) 33 40 : base(original, cloner) { } 34 public MultiEncodingManipulator() { } 41 public MultiEncodingManipulator() { 42 Parameters.Add(new LookupParameter<IRandom>("Random", "The random number generator used by the individual operators.")); 43 } 35 44 36 45 public override IDeepCloneable Clone(Cloner cloner) { return new MultiEncodingManipulator(this, cloner); } 37 46 47 [StorableHook(HookType.AfterDeserialization)] 48 private void AfterDeserialization() { 49 if (!Parameters.ContainsKey("Random")) { 50 Parameters.Add(new LookupParameter<IRandom>("Random", "The random number generator used by the individual operators.")); 51 } 52 } 53 38 54 } 39 55 } -
branches/2457_ExpertSystem/HeuristicLab.Optimization/3.3/BasicProblems/Operators/MultiEncodingOperator.cs
r16075 r16956 1 1 #region License Information 2 2 /* HeuristicLab 3 * Copyright (C) 2002-201 8Heuristic and Evolutionary Algorithms Laboratory (HEAL)3 * Copyright (C) 2002-2019 Heuristic and Evolutionary Algorithms Laboratory (HEAL) 4 4 * 5 5 * This file is part of HeuristicLab. … … 23 23 using System.Collections.Generic; 24 24 using System.Linq; 25 using HEAL.Attic; 25 26 using HeuristicLab.Common; 26 27 using HeuristicLab.Core; 27 28 using HeuristicLab.Operators; 28 29 using HeuristicLab.Parameters; 29 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;30 30 31 31 namespace HeuristicLab.Optimization { 32 [Storable Class]32 [StorableType("43619638-9D00-4951-8138-8CCD0786E784")] 33 33 public abstract class MultiEncodingOperator<T> : Operator, IMultiEncodingOperator where T : class,IOperator { 34 34 private List<IEncoding> encodings = new List<IEncoding>(); … … 39 39 } 40 40 41 public abstract string OperatorPrefix { get; } 42 41 43 [StorableConstructor] 42 protected MultiEncodingOperator(bool deserializing) 43 : base(deserializing) { 44 } 45 44 protected MultiEncodingOperator(StorableConstructorFlag _) : base(_) { } 46 45 protected MultiEncodingOperator(MultiEncodingOperator<T> original, Cloner cloner) 47 46 : base(original, cloner) { … … 50 49 encoding.OperatorsChanged += Encoding_OperatorsChanged; 51 50 } 52 53 51 protected MultiEncodingOperator() : base() { } 54 52 55 53 [StorableHook(HookType.AfterDeserialization)] 56 54 private void AfterDeserialization() { 57 foreach (var encoding in encodings) 55 foreach (var encoding in encodings) { 56 // BackwardsCompatibility3.3 57 #region Backwards compatible code, remove with 3.4 58 if (Parameters.ContainsKey(encoding.Name) && !Parameters.ContainsKey(OperatorPrefix + "." + encoding.Name)) { 59 var oldParam = (IConstrainedValueParameter<T>)Parameters[encoding.Name]; 60 var selected = oldParam.Value; 61 Parameters.Remove(oldParam); 62 var newParam = new ConstrainedValueParameter<T>(OperatorPrefix + "." + encoding.Name, new ItemSet<T>(oldParam.ValidValues)); 63 newParam.Value = selected; 64 Parameters.Add(newParam); 65 oldParam.ValidValues.Clear(); 66 } 67 #endregion 58 68 encoding.OperatorsChanged += Encoding_OperatorsChanged; 69 } 59 70 } 60 71 61 62 72 public override IOperation Apply() { 63 var operations = Parameters.Select(p => p.ActualValue).OfType<IOperator>().Select(op => ExecutionContext.Create Operation(op));73 var operations = Parameters.Select(p => p.ActualValue).OfType<IOperator>().Select(op => ExecutionContext.CreateChildOperation(op)); 64 74 return new OperationCollection(operations); 65 75 } 66 76 67 77 public virtual void AddEncoding(IEncoding encoding) { 68 if (Parameters.ContainsKey( encoding.Name)) throw new ArgumentException(string.Format("Encoding {0} was already added.", encoding.Name));78 if (Parameters.ContainsKey(OperatorPrefix + "." + encoding.Name)) throw new ArgumentException(string.Format("Encoding {0} was already added.", encoding.Name)); 69 79 70 80 encodings.Add(encoding); 71 81 encoding.OperatorsChanged += Encoding_OperatorsChanged; 72 82 73 var param = new ConstrainedValueParameter<T>( encoding.Name, new ItemSet<T>(encoding.Operators.OfType<T>()));83 var param = new ConstrainedValueParameter<T>(OperatorPrefix + "." + encoding.Name, new ItemSet<T>(encoding.Operators.OfType<T>())); 74 84 param.Value = param.ValidValues.First(); 75 85 Parameters.Add(param); … … 79 89 if (!encodings.Remove(encoding)) throw new ArgumentException(string.Format("Encoding {0} was not added to the MultiEncoding.", encoding.Name)); 80 90 encoding.OperatorsChanged -= Encoding_OperatorsChanged; 81 return Parameters.Remove( encoding.Name);91 return Parameters.Remove(OperatorPrefix + "." + encoding.Name); 82 92 } 83 93 84 94 protected IConstrainedValueParameter<T> GetParameter(IEncoding encoding) { 85 if (!Parameters.ContainsKey( encoding.Name)) throw new ArgumentException(string.Format("Encoding {0} was not added to the MultiEncoding.", encoding.Name));95 if (!Parameters.ContainsKey(OperatorPrefix + "." + encoding.Name)) throw new ArgumentException(string.Format("Encoding {0} was not added to the MultiEncoding.", encoding.Name)); 86 96 87 return (IConstrainedValueParameter<T>)Parameters[ encoding.Name];97 return (IConstrainedValueParameter<T>)Parameters[OperatorPrefix + "." + encoding.Name]; 88 98 } 89 99 -
branches/2457_ExpertSystem/HeuristicLab.Optimization/3.3/BasicProblems/Operators/MultiObjectiveAnalyzer.cs
r16075 r16956 1 1 #region License Information 2 2 /* HeuristicLab 3 * Copyright (C) 2002-201 8Heuristic and Evolutionary Algorithms Laboratory (HEAL)3 * Copyright (C) 2002-2019 Heuristic and Evolutionary Algorithms Laboratory (HEAL) 4 4 * 5 5 * This file is part of HeuristicLab. … … 28 28 using HeuristicLab.Operators; 29 29 using HeuristicLab.Parameters; 30 using H euristicLab.Persistence.Default.CompositeSerializers.Storable;30 using HEAL.Attic; 31 31 32 32 namespace HeuristicLab.Optimization { 33 33 [Item("Multi-objective Analyzer", "Calls the Analyze method of the problem definition.")] 34 [Storable Class]34 [StorableType("903FE3D1-3179-4EA5-A7E1-63DE26239F9B")] 35 35 public class MultiObjectiveAnalyzer : SingleSuccessorOperator, IMultiObjectiveAnalysisOperator, IStochasticOperator { 36 36 public bool EnabledByDefault { get { return true; } } … … 55 55 56 56 [StorableConstructor] 57 protected MultiObjectiveAnalyzer( bool deserializing) : base(deserializing) { }57 protected MultiObjectiveAnalyzer(StorableConstructorFlag _) : base(_) { } 58 58 protected MultiObjectiveAnalyzer(MultiObjectiveAnalyzer original, Cloner cloner) : base(original, cloner) { } 59 59 public MultiObjectiveAnalyzer() { -
branches/2457_ExpertSystem/HeuristicLab.Optimization/3.3/BasicProblems/Operators/MultiObjectiveEvaluator.cs
r16075 r16956 1 1 #region License Information 2 2 /* HeuristicLab 3 * Copyright (C) 2002-201 8Heuristic and Evolutionary Algorithms Laboratory (HEAL)3 * Copyright (C) 2002-2019 Heuristic and Evolutionary Algorithms Laboratory (HEAL) 4 4 * 5 5 * This file is part of HeuristicLab. … … 26 26 using HeuristicLab.Operators; 27 27 using HeuristicLab.Parameters; 28 using H euristicLab.Persistence.Default.CompositeSerializers.Storable;28 using HEAL.Attic; 29 29 30 30 namespace HeuristicLab.Optimization { 31 31 [Item("Multi-objective Evaluator", "Calls the Evaluate method of the problem definition and writes the return value into the scope.")] 32 [Storable Class]32 [StorableType("C5605ED8-0ED2-4C7B-97A1-E7EB68A4FDBF")] 33 33 public class MultiObjectiveEvaluator : InstrumentedOperator, IMultiObjectiveEvaluationOperator, IStochasticOperator { 34 34 … … 48 48 49 49 [StorableConstructor] 50 protected MultiObjectiveEvaluator( bool deserializing) : base(deserializing) { }50 protected MultiObjectiveEvaluator(StorableConstructorFlag _) : base(_) { } 51 51 protected MultiObjectiveEvaluator(MultiObjectiveEvaluator original, Cloner cloner) : base(original, cloner) { } 52 52 public MultiObjectiveEvaluator() { -
branches/2457_ExpertSystem/HeuristicLab.Optimization/3.3/BasicProblems/Operators/SingleObjectiveAnalyzer.cs
r16075 r16956 1 1 #region License Information 2 2 /* HeuristicLab 3 * Copyright (C) 2002-201 8Heuristic and Evolutionary Algorithms Laboratory (HEAL)3 * Copyright (C) 2002-2019 Heuristic and Evolutionary Algorithms Laboratory (HEAL) 4 4 * 5 5 * This file is part of HeuristicLab. … … 28 28 using HeuristicLab.Operators; 29 29 using HeuristicLab.Parameters; 30 using H euristicLab.Persistence.Default.CompositeSerializers.Storable;30 using HEAL.Attic; 31 31 32 32 namespace HeuristicLab.Optimization { 33 33 [Item("Single-objective Analyzer", "Calls the script's Analyze method to be able to write into the results collection.")] 34 [Storable Class]34 [StorableType("3D20F8E2-CE11-4021-A05B-CFCB02C0FD6F")] 35 35 public sealed class SingleObjectiveAnalyzer : SingleSuccessorOperator, ISingleObjectiveAnalysisOperator, IAnalyzer, IStochasticOperator { 36 36 public bool EnabledByDefault { get { return true; } } … … 55 55 56 56 [StorableConstructor] 57 private SingleObjectiveAnalyzer( bool deserializing) : base(deserializing) { }57 private SingleObjectiveAnalyzer(StorableConstructorFlag _) : base(_) { } 58 58 private SingleObjectiveAnalyzer(SingleObjectiveAnalyzer original, Cloner cloner) : base(original, cloner) { } 59 59 public SingleObjectiveAnalyzer() { -
branches/2457_ExpertSystem/HeuristicLab.Optimization/3.3/BasicProblems/Operators/SingleObjectiveEvaluator.cs
r16075 r16956 1 1 #region License Information 2 2 /* HeuristicLab 3 * Copyright (C) 2002-201 8Heuristic and Evolutionary Algorithms Laboratory (HEAL)3 * Copyright (C) 2002-2019 Heuristic and Evolutionary Algorithms Laboratory (HEAL) 4 4 * 5 5 * This file is part of HeuristicLab. … … 26 26 using HeuristicLab.Operators; 27 27 using HeuristicLab.Parameters; 28 using H euristicLab.Persistence.Default.CompositeSerializers.Storable;28 using HEAL.Attic; 29 29 30 30 namespace HeuristicLab.Optimization { 31 31 [Item("Single-objective Evaluator", "Calls the script's Evaluate method to get the quality value of the parameter vector.")] 32 [Storable Class]32 [StorableType("E8914B68-D0D7-407F-8D58-002FDF2F45CF")] 33 33 public sealed class SingleObjectiveEvaluator : InstrumentedOperator, ISingleObjectiveEvaluationOperator, IStochasticOperator { 34 34 … … 48 48 49 49 [StorableConstructor] 50 private SingleObjectiveEvaluator( bool deserializing) : base(deserializing) { }50 private SingleObjectiveEvaluator(StorableConstructorFlag _) : base(_) { } 51 51 private SingleObjectiveEvaluator(SingleObjectiveEvaluator original, Cloner cloner) : base(original, cloner) { } 52 52 public SingleObjectiveEvaluator() { -
branches/2457_ExpertSystem/HeuristicLab.Optimization/3.3/BasicProblems/Operators/SingleObjectiveImprover.cs
r16075 r16956 1 1 #region License Information 2 2 /* HeuristicLab 3 * Copyright (C) 2002-201 8Heuristic and Evolutionary Algorithms Laboratory (HEAL)3 * Copyright (C) 2002-2019 Heuristic and Evolutionary Algorithms Laboratory (HEAL) 4 4 * 5 5 * This file is part of HeuristicLab. … … 28 28 using HeuristicLab.Operators; 29 29 using HeuristicLab.Parameters; 30 using H euristicLab.Persistence.Default.CompositeSerializers.Storable;30 using HEAL.Attic; 31 31 32 32 namespace HeuristicLab.Optimization { 33 33 [Item("Single-objective Improver", "Improves a solution by calling GetNeighbors and Evaluate of the corresponding problem definition.")] 34 [Storable Class]34 [StorableType("7A917E09-920C-4B47-9599-67371101B35F")] 35 35 public sealed class SingleObjectiveImprover : SingleSuccessorOperator, INeighborBasedOperator, IImprovementOperator, ISingleObjectiveEvaluationOperator, IStochasticOperator { 36 36 public ILookupParameter<IRandom> RandomParameter { … … 66 66 67 67 [StorableConstructor] 68 private SingleObjectiveImprover( bool deserializing) : base(deserializing) { }68 private SingleObjectiveImprover(StorableConstructorFlag _) : base(_) { } 69 69 private SingleObjectiveImprover(SingleObjectiveImprover original, Cloner cloner) : base(original, cloner) { } 70 70 public SingleObjectiveImprover() { -
branches/2457_ExpertSystem/HeuristicLab.Optimization/3.3/BasicProblems/Operators/SingleObjectiveMoveEvaluator.cs
r16075 r16956 1 1 #region License Information 2 2 /* HeuristicLab 3 * Copyright (C) 2002-201 8Heuristic and Evolutionary Algorithms Laboratory (HEAL)3 * Copyright (C) 2002-2019 Heuristic and Evolutionary Algorithms Laboratory (HEAL) 4 4 * 5 5 * This file is part of HeuristicLab. … … 26 26 using HeuristicLab.Operators; 27 27 using HeuristicLab.Parameters; 28 using H euristicLab.Persistence.Default.CompositeSerializers.Storable;28 using HEAL.Attic; 29 29 30 30 namespace HeuristicLab.Optimization { 31 31 [Item("Single-objective MoveEvaluator", "Evaluates a parameter vector that results from a move.")] 32 [Storable Class]32 [StorableType("EE4B1EBA-50BF-40C7-B338-F4A9D9CC554E")] 33 33 public class SingleObjectiveMoveEvaluator : SingleSuccessorOperator, ISingleObjectiveEvaluationOperator, ISingleObjectiveMoveEvaluator, IStochasticOperator, ISingleObjectiveMoveOperator { 34 34 … … 52 52 53 53 [StorableConstructor] 54 protected SingleObjectiveMoveEvaluator( bool deserializing) : base(deserializing) { }54 protected SingleObjectiveMoveEvaluator(StorableConstructorFlag _) : base(_) { } 55 55 protected SingleObjectiveMoveEvaluator(SingleObjectiveMoveEvaluator original, Cloner cloner) : base(original, cloner) { } 56 56 public SingleObjectiveMoveEvaluator() { -
branches/2457_ExpertSystem/HeuristicLab.Optimization/3.3/BasicProblems/Operators/SingleObjectiveMoveGenerator.cs
r16075 r16956 1 1 #region License Information 2 2 /* HeuristicLab 3 * Copyright (C) 2002-201 8Heuristic and Evolutionary Algorithms Laboratory (HEAL)3 * Copyright (C) 2002-2019 Heuristic and Evolutionary Algorithms Laboratory (HEAL) 4 4 * 5 5 * This file is part of HeuristicLab. … … 29 29 using HeuristicLab.Operators; 30 30 using HeuristicLab.Parameters; 31 using H euristicLab.Persistence.Default.CompositeSerializers.Storable;31 using HEAL.Attic; 32 32 33 33 namespace HeuristicLab.Optimization { 34 34 [Item("Single-objective MoveGenerator", "Calls the GetNeighbors method of the problem definition to obtain the moves.")] 35 [Storable Class]35 [StorableType("CB37E7D8-EAC3-4061-9D39-20538CD1064D")] 36 36 public class SingleObjectiveMoveGenerator : SingleSuccessorOperator, INeighborBasedOperator, IMultiMoveGenerator, IStochasticOperator, ISingleObjectiveMoveOperator { 37 37 public ILookupParameter<IRandom> RandomParameter { … … 50 50 51 51 [StorableConstructor] 52 protected SingleObjectiveMoveGenerator( bool deserializing) : base(deserializing) { }52 protected SingleObjectiveMoveGenerator(StorableConstructorFlag _) : base(_) { } 53 53 protected SingleObjectiveMoveGenerator(SingleObjectiveMoveGenerator original, Cloner cloner) 54 54 : base(original, cloner) { } -
branches/2457_ExpertSystem/HeuristicLab.Optimization/3.3/BasicProblems/Operators/SingleObjectiveMoveMaker.cs
r16075 r16956 1 1 #region License Information 2 2 /* HeuristicLab 3 * Copyright (C) 2002-201 8Heuristic and Evolutionary Algorithms Laboratory (HEAL)3 * Copyright (C) 2002-2019 Heuristic and Evolutionary Algorithms Laboratory (HEAL) 4 4 * 5 5 * This file is part of HeuristicLab. … … 26 26 using HeuristicLab.Operators; 27 27 using HeuristicLab.Parameters; 28 using H euristicLab.Persistence.Default.CompositeSerializers.Storable;28 using HEAL.Attic; 29 29 30 30 namespace HeuristicLab.Optimization { 31 31 [Item("Single-objective MoveMaker", "Applies a move.")] 32 [Storable Class]32 [StorableType("C0ABF392-C825-4B98-8FB9-5749A9091FD6")] 33 33 public class SingleObjectiveMoveMaker : InstrumentedOperator, IMoveMaker, ISingleObjectiveMoveOperator { 34 34 public ILookupParameter<IEncoding> EncodingParameter { … … 45 45 46 46 [StorableConstructor] 47 protected SingleObjectiveMoveMaker( bool deserializing) : base(deserializing) { }47 protected SingleObjectiveMoveMaker(StorableConstructorFlag _) : base(_) { } 48 48 protected SingleObjectiveMoveMaker(SingleObjectiveMoveMaker original, Cloner cloner) : base(original, cloner) { } 49 49 public SingleObjectiveMoveMaker() { -
branches/2457_ExpertSystem/HeuristicLab.Optimization/3.3/BasicProblems/SingleObjectiveBasicProblem.cs
r16075 r16956 1 1 #region License Information 2 2 /* HeuristicLab 3 * Copyright (C) 2002-201 8Heuristic and Evolutionary Algorithms Laboratory (HEAL)3 * Copyright (C) 2002-2019 Heuristic and Evolutionary Algorithms Laboratory (HEAL) 4 4 * 5 5 * This file is part of HeuristicLab. … … 23 23 using System.Collections.Generic; 24 24 using System.Linq; 25 using HEAL.Attic; 25 26 using HeuristicLab.Common; 26 27 using HeuristicLab.Core; 27 28 using HeuristicLab.Data; 28 29 using HeuristicLab.Parameters; 29 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;30 30 31 31 namespace HeuristicLab.Optimization { 32 [Storable Class]32 [StorableType("2697320D-0259-44BB-BD71-7EE1B10F664C")] 33 33 public abstract class SingleObjectiveBasicProblem<TEncoding> : BasicProblem<TEncoding, SingleObjectiveEvaluator>, 34 34 ISingleObjectiveProblemDefinition, ISingleObjectiveHeuristicOptimizationProblem … … 51 51 52 52 [StorableConstructor] 53 protected SingleObjectiveBasicProblem( bool deserializing) : base(deserializing) { }53 protected SingleObjectiveBasicProblem(StorableConstructorFlag _) : base(_) { } 54 54 55 55 protected SingleObjectiveBasicProblem(SingleObjectiveBasicProblem<TEncoding> original, Cloner cloner) … … 95 95 96 96 protected override void OnOperatorsChanged() { 97 base.OnOperatorsChanged();98 97 if (Encoding != null) { 99 98 PruneMultiObjectiveOperators(Encoding); … … 105 104 } 106 105 } 106 base.OnOperatorsChanged(); 107 107 } 108 108
Note: See TracChangeset
for help on using the changeset viewer.