Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
05/15/19 13:36:51 (5 years ago)
Author:
abeham
Message:

#2457: merged trunk into branch

Location:
branches/2457_ExpertSystem/HeuristicLab.Optimization
Files:
33 edited

Legend:

Unmodified
Added
Removed
  • branches/2457_ExpertSystem/HeuristicLab.Optimization

  • branches/2457_ExpertSystem/HeuristicLab.Optimization/3.3/BasicProblems/BasicProblem.cs

    r16075 r16956  
    11#region License Information
    22/* HeuristicLab
    3  * Copyright (C) 2002-2018 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
     3 * Copyright (C) 2002-2019 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
    44 *
    55 * This file is part of HeuristicLab.
     
    2323using System.Collections.Generic;
    2424using System.Linq;
     25using HEAL.Attic;
    2526using HeuristicLab.Common;
    2627using HeuristicLab.Core;
     28using HeuristicLab.Data;
    2729using HeuristicLab.Parameters;
    28 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
    2930
    3031namespace HeuristicLab.Optimization {
    31   [StorableClass]
     32  [StorableType("D877082E-9E77-4CB1-ABDB-35F63878E116")]
    3233  public abstract class BasicProblem<TEncoding, TEvaluator> : HeuristicOptimizationProblem<TEvaluator, ISolutionCreator>, IProblemDefinition, IStorableContent
    3334    where TEncoding : class, IEncoding
     
    7879
    7980    [StorableConstructor]
    80     protected BasicProblem(bool deserializing) : base(deserializing) { }
     81    protected BasicProblem(StorableConstructorFlag _) : base(_) { }
    8182    [StorableHook(HookType.AfterDeserialization)]
    8283    private void AfterDeserialization() {
     
    157158      OnOperatorsChanged();
    158159    }
     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    }
    159175  }
    160176}
  • branches/2457_ExpertSystem/HeuristicLab.Optimization/3.3/BasicProblems/Encoding.cs

    r16075 r16956  
    11#region License Information
    22/* HeuristicLab
    3  * Copyright (C) 2002-2018 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
     3 * Copyright (C) 2002-2019 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
    44 *
    55 * This file is part of HeuristicLab.
     
    2323using System.Collections.Generic;
    2424using System.Linq;
     25using HEAL.Attic;
    2526using HeuristicLab.Common;
    2627using HeuristicLab.Core;
    2728using HeuristicLab.Parameters;
    28 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
    2929
    3030namespace HeuristicLab.Optimization {
    3131  [Item("Encoding", "Base class for describing different encodings.")]
    32   [StorableClass]
     32  [StorableType("395B1372-FA54-4649-9EBE-5402A0AA9494")]
    3333  public abstract class Encoding<T> : ParameterizedNamedItem, IEncoding
    3434    where T : class,ISolutionCreator {
     
    8484
    8585    [StorableConstructor]
    86     protected Encoding(bool deserializing) : base(deserializing) { }
     86    protected Encoding(StorableConstructorFlag _) : base(_) { }
    8787    protected Encoding(Encoding<T> original, Cloner cloner)
    8888      : base(original, cloner) {
     
    9292    protected Encoding(string name)
    9393      : 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      });
    9597    }
    9698
  • branches/2457_ExpertSystem/HeuristicLab.Optimization/3.3/BasicProblems/Individuals/Individual.cs

    r16075 r16956  
    11#region License Information
    22/* HeuristicLab
    3  * Copyright (C) 2002-2018 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
     3 * Copyright (C) 2002-2019 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
    44 *
    55 * This file is part of HeuristicLab.
     
    2424using System.Linq;
    2525using HeuristicLab.Core;
     26using HEAL.Attic;
    2627
    2728namespace HeuristicLab.Optimization {
     29  [StorableType("b1388a9d-c85c-49f6-9916-ef4c93dffee0")]
    2830  public abstract class Individual {
     31    [Storable]
    2932    protected IEncoding Encoding { get; private set; }
     33    [Storable]
    3034    protected IScope Scope { get; private set; }
    3135    public string Name { get { return Encoding.Name; } }
     36
     37
     38    [StorableConstructor]
     39    protected Individual(StorableConstructorFlag _) {
     40    }
    3241
    3342    protected Individual(IEncoding encoding, IScope scope) {
  • branches/2457_ExpertSystem/HeuristicLab.Optimization/3.3/BasicProblems/Individuals/MultiEncodingIndividual.cs

    r16075 r16956  
    11#region License Information
    22/* HeuristicLab
    3  * Copyright (C) 2002-2018 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
     3 * Copyright (C) 2002-2019 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
    44 *
    55 * This file is part of HeuristicLab.
     
    2121
    2222using System;
    23 using System.Collections.Generic;
    2423using System.Linq;
    2524using HeuristicLab.Common;
    2625using HeuristicLab.Core;
     26using HEAL.Attic;
    2727
    2828namespace HeuristicLab.Optimization {
     29  [StorableType("ec7201c7-3c9f-4a93-966b-d848d9538202")]
    2930  public sealed class MultiEncodingIndividual : Individual {
    3031    private new MultiEncoding Encoding {
    3132      get { return (MultiEncoding)base.Encoding; }
     33    }
     34
     35    [StorableConstructor]
     36    private MultiEncodingIndividual(StorableConstructorFlag _) : base(_) {
    3237    }
    3338
  • branches/2457_ExpertSystem/HeuristicLab.Optimization/3.3/BasicProblems/Individuals/SingleEncodingIndividual.cs

    r16075 r16956  
    11#region License Information
    22/* HeuristicLab
    3  * Copyright (C) 2002-2018 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
     3 * Copyright (C) 2002-2019 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
    44 *
    55 * This file is part of HeuristicLab.
     
    2323using HeuristicLab.Common;
    2424using HeuristicLab.Core;
     25using HEAL.Attic;
    2526
    2627namespace HeuristicLab.Optimization {
     28  [StorableType("13a86161-9e5c-442b-ab1c-18018b1d9708")]
    2729  public sealed class SingleEncodingIndividual : Individual {
     30    [StorableConstructor]
     31    private SingleEncodingIndividual(StorableConstructorFlag _) : base(_) {
     32    }
     33
    2834    public SingleEncodingIndividual(IEncoding encoding, IScope scope)
    2935      : base(encoding, scope) {
  • branches/2457_ExpertSystem/HeuristicLab.Optimization/3.3/BasicProblems/Interfaces/IEncoding.cs

    r16075 r16956  
    11#region License Information
    22/* HeuristicLab
    3  * Copyright (C) 2002-2018 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
     3 * Copyright (C) 2002-2019 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
    44 *
    55 * This file is part of HeuristicLab.
     
    2323using System.Collections.Generic;
    2424using HeuristicLab.Core;
     25using HEAL.Attic;
    2526
    2627namespace HeuristicLab.Optimization {
     28  [StorableType("d70b2675-246c-489c-a91b-b2e19a1616a3")]
    2729  public interface IEncoding : IParameterizedNamedItem {
    2830    ISolutionCreator SolutionCreator { get; set; }
  • branches/2457_ExpertSystem/HeuristicLab.Optimization/3.3/BasicProblems/Interfaces/IEncodingOperator.cs

    r16075 r16956  
    11#region License Information
    22/* HeuristicLab
    3  * Copyright (C) 2002-2018 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
     3 * Copyright (C) 2002-2019 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
    44 *
    55 * This file is part of HeuristicLab.
     
    2121
    2222using HeuristicLab.Core;
     23using HEAL.Attic;
    2324
    2425namespace HeuristicLab.Optimization {
     26  [StorableType("20faaf8b-dd4f-4f0e-a772-4c4dec7fcccb")]
    2527  public interface IEncodingOperator : IOperator {
    2628    ILookupParameter<IEncoding> EncodingParameter { get; }
  • branches/2457_ExpertSystem/HeuristicLab.Optimization/3.3/BasicProblems/Interfaces/IMultiEncodingOperator.cs

    r16075 r16956  
    11#region License Information
    22/* HeuristicLab
    3  * Copyright (C) 2002-2018 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
     3 * Copyright (C) 2002-2019 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
    44 *
    55 * This file is part of HeuristicLab.
     
    2121
    2222using HeuristicLab.Core;
     23using HEAL.Attic;
    2324
    2425namespace HeuristicLab.Optimization {
     26  [StorableType("e8b66565-263c-49f9-9c08-29b820bf3e5a")]
    2527  public interface IMultiEncodingOperator : IOperator {
    2628    void AddEncoding(IEncoding encoding);
  • branches/2457_ExpertSystem/HeuristicLab.Optimization/3.3/BasicProblems/Interfaces/IMultiObjectiveProblemDefinition.cs

    r16075 r16956  
    11#region License Information
    22/* HeuristicLab
    3  * Copyright (C) 2002-2018 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
     3 * Copyright (C) 2002-2019 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
    44 *
    55 * This file is part of HeuristicLab.
     
    2121
    2222using HeuristicLab.Core;
     23using HEAL.Attic;
    2324
    2425namespace HeuristicLab.Optimization {
     26  [StorableType("39eacdb5-80a0-425d-902a-00eb3e1d6610")]
    2527  public interface IMultiObjectiveProblemDefinition : IProblemDefinition {
    2628    bool[] Maximization { get; }
  • branches/2457_ExpertSystem/HeuristicLab.Optimization/3.3/BasicProblems/Interfaces/IProblemDefinition.cs

    r16075 r16956  
    1 #region License Information
     1using HEAL.Attic;
     2#region License Information
    23/* HeuristicLab
    3  * Copyright (C) 2002-2018 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
     4 * Copyright (C) 2002-2019 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
    45 *
    56 * This file is part of HeuristicLab.
     
    2122
    2223namespace HeuristicLab.Optimization {
     24  [StorableType("747a3cea-b9ba-4322-a5c2-050cd7e16e2a")]
    2325  public interface IProblemDefinition {
    2426    IEncoding Encoding { get; }
  • branches/2457_ExpertSystem/HeuristicLab.Optimization/3.3/BasicProblems/Interfaces/ISingleObjectiveMoveOperator.cs

    r16075 r16956  
    1 #region License Information
     1using HEAL.Attic;
     2#region License Information
    23/* HeuristicLab
    3  * Copyright (C) 2002-2018 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
     4 * Copyright (C) 2002-2019 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
    45 *
    56 * This file is part of HeuristicLab.
     
    2122
    2223namespace HeuristicLab.Optimization {
     24  [StorableType("82423b2f-1343-4a21-847c-e69bdcde4861")]
    2325  public interface ISingleObjectiveMoveOperator : IMoveOperator, ISingleObjectiveOperator {
    2426  }
  • branches/2457_ExpertSystem/HeuristicLab.Optimization/3.3/BasicProblems/Interfaces/ISingleObjectiveProblemDefinition.cs

    r16075 r16956  
    11#region License Information
    22/* HeuristicLab
    3  * Copyright (C) 2002-2018 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
     3 * Copyright (C) 2002-2019 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
    44 *
    55 * This file is part of HeuristicLab.
     
    2222using System.Collections.Generic;
    2323using HeuristicLab.Core;
     24using HEAL.Attic;
    2425
    2526namespace HeuristicLab.Optimization {
     27  [StorableType("7ec7bf7e-aaa7-4681-828b-3401cf67e2b3")]
    2628  public interface ISingleObjectiveProblemDefinition : IProblemDefinition {
    2729    bool Maximization { get; }
  • branches/2457_ExpertSystem/HeuristicLab.Optimization/3.3/BasicProblems/Interfaces/internal/IMultiObjectiveAnalysisOperator.cs

    r16075 r16956  
    11#region License Information
    22/* HeuristicLab
    3  * Copyright (C) 2002-2018 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
     3 * Copyright (C) 2002-2019 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
    44 *
    55 * This file is part of HeuristicLab.
     
    2222using System;
    2323using HeuristicLab.Core;
     24using HEAL.Attic;
    2425
    2526namespace HeuristicLab.Optimization {
     27  [StorableType("c9325602-3262-48a4-8985-03657fb0b34f")]
    2628  internal interface IMultiObjectiveAnalysisOperator : IEncodingOperator, IAnalyzer, IMultiObjectiveOperator {
    2729    Action<Individual[], double[][], ResultCollection, IRandom> AnalyzeAction { get; set; }
  • branches/2457_ExpertSystem/HeuristicLab.Optimization/3.3/BasicProblems/Interfaces/internal/IMultiObjectiveEvaluationOperator.cs

    r16075 r16956  
    11#region License Information
    22/* HeuristicLab
    3  * Copyright (C) 2002-2018 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
     3 * Copyright (C) 2002-2019 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
    44 *
    55 * This file is part of HeuristicLab.
     
    2222using System;
    2323using HeuristicLab.Core;
     24using HEAL.Attic;
    2425
    2526namespace HeuristicLab.Optimization {
     27  [StorableType("89da568c-70a2-48fb-8e6b-ea078bb6fc3f")]
    2628  internal interface IMultiObjectiveEvaluationOperator : IMultiObjectiveEvaluator, IEncodingOperator {
    2729    Func<Individual, IRandom, double[]> EvaluateFunc { get; set; }
  • branches/2457_ExpertSystem/HeuristicLab.Optimization/3.3/BasicProblems/Interfaces/internal/INeighborBasedOperator.cs

    r16075 r16956  
    11#region License Information
    22/* HeuristicLab
    3  * Copyright (C) 2002-2018 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
     3 * Copyright (C) 2002-2019 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
    44 *
    55 * This file is part of HeuristicLab.
     
    2323using System.Collections.Generic;
    2424using HeuristicLab.Core;
     25using HEAL.Attic;
    2526
    2627namespace HeuristicLab.Optimization {
     28  [StorableType("fda56e0b-9392-4711-9af1-55211bfa24ac")]
    2729  internal interface INeighborBasedOperator : IEncodingOperator {
    2830    Func<Individual, IRandom, IEnumerable<Individual>> GetNeighborsFunc { get; set; }
  • branches/2457_ExpertSystem/HeuristicLab.Optimization/3.3/BasicProblems/Interfaces/internal/ISingleObjectiveAnalysisOperator.cs

    r16075 r16956  
    11#region License Information
    22/* HeuristicLab
    3  * Copyright (C) 2002-2018 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
     3 * Copyright (C) 2002-2019 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
    44 *
    55 * This file is part of HeuristicLab.
     
    2222using System;
    2323using HeuristicLab.Core;
     24using HEAL.Attic;
    2425
    2526namespace HeuristicLab.Optimization {
     27  [StorableType("9731981c-10c6-4850-9308-a4720ac07da7")]
    2628  internal interface ISingleObjectiveAnalysisOperator : IEncodingOperator, ISingleObjectiveOperator {
    2729    Action<Individual[], double[], ResultCollection, IRandom> AnalyzeAction { get; set; }
  • branches/2457_ExpertSystem/HeuristicLab.Optimization/3.3/BasicProblems/Interfaces/internal/ISingleObjectiveEvaluationOperator.cs

    r16075 r16956  
    11#region License Information
    22/* HeuristicLab
    3  * Copyright (C) 2002-2018 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
     3 * Copyright (C) 2002-2019 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
    44 *
    55 * This file is part of HeuristicLab.
     
    2222using System;
    2323using HeuristicLab.Core;
     24using HEAL.Attic;
    2425
    2526namespace HeuristicLab.Optimization {
     27  [StorableType("5a9cf334-4815-4f0e-a2f8-f3d4edfcc829")]
    2628  internal interface ISingleObjectiveEvaluationOperator : ISingleObjectiveEvaluator, IEncodingOperator {
    2729    Func<Individual, IRandom, double> EvaluateFunc { get; set; }
  • branches/2457_ExpertSystem/HeuristicLab.Optimization/3.3/BasicProblems/MultiEncoding.cs

    r16075 r16956  
    11#region License Information
    22/* HeuristicLab
    3  * Copyright (C) 2002-2018 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
     3 * Copyright (C) 2002-2019 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
    44 *
    55 * This file is part of HeuristicLab.
     
    2525using HeuristicLab.Common;
    2626using HeuristicLab.Core;
    27 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
     27using HEAL.Attic;
    2828using HeuristicLab.PluginInfrastructure;
    2929
    3030namespace HeuristicLab.Optimization {
    3131  [Item("MultiEncoding", "Describes a combined encoding consisting of multiple simpler encodings.")]
    32   [StorableClass]
     32  [StorableType("359E2173-4D0C-40E5-A2F3-E42E59840345")]
    3333  public sealed class MultiEncoding : Encoding<MultiEncodingCreator> {
    3434
     
    4141
    4242    [StorableConstructor]
    43     private MultiEncoding(bool deserializing)
    44       : base(deserializing) {
     43    private MultiEncoding(StorableConstructorFlag _) : base(_) {
    4544      encodings = new List<IEncoding>();
    4645    }
  • branches/2457_ExpertSystem/HeuristicLab.Optimization/3.3/BasicProblems/MultiObjectiveBasicProblem.cs

    r16075 r16956  
    11#region License Information
    22/* HeuristicLab
    3  * Copyright (C) 2002-2018 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
     3 * Copyright (C) 2002-2019 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
    44 *
    55 * This file is part of HeuristicLab.
     
    2020#endregion
    2121
    22 using System;
    23 using System.Collections.Generic;
    2422using System.Linq;
     23using HEAL.Attic;
    2524using HeuristicLab.Common;
    2625using HeuristicLab.Core;
    2726using HeuristicLab.Data;
    2827using HeuristicLab.Parameters;
    29 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
    3028
    3129namespace HeuristicLab.Optimization {
    32   [StorableClass]
     30  [StorableType("6F2EC371-0309-4848-B7B1-C9B9C7E3436F")]
    3331  public abstract class MultiObjectiveBasicProblem<TEncoding> : BasicProblem<TEncoding, MultiObjectiveEvaluator>, IMultiObjectiveHeuristicOptimizationProblem, IMultiObjectiveProblemDefinition
    3432  where TEncoding : class, IEncoding {
    3533    [StorableConstructor]
    36     protected MultiObjectiveBasicProblem(bool deserializing) : base(deserializing) { }
     34    protected MultiObjectiveBasicProblem(StorableConstructorFlag _) : base(_) { }
    3735
    3836    protected MultiObjectiveBasicProblem(MultiObjectiveBasicProblem<TEncoding> original, Cloner cloner)
     
    6159   
    6260    protected override void OnOperatorsChanged() {
    63       base.OnOperatorsChanged();
    6461      if (Encoding != null) {
    6562        PruneSingleObjectiveOperators(Encoding);
     
    7168        }
    7269      }
     70      base.OnOperatorsChanged();
    7371    }
    7472
  • branches/2457_ExpertSystem/HeuristicLab.Optimization/3.3/BasicProblems/Operators/MultiEncodingCreator.cs

    r16075 r16956  
    11#region License Information
    22/* HeuristicLab
    3  * Copyright (C) 2002-2018 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
     3 * Copyright (C) 2002-2019 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
    44 *
    55 * This file is part of HeuristicLab.
     
    2222using System;
    2323using System.Linq;
     24using HEAL.Attic;
    2425using HeuristicLab.Common;
    2526using HeuristicLab.Core;
    26 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
     27using HeuristicLab.Parameters;
    2728
    2829namespace HeuristicLab.Optimization {
    2930  [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
    3239    [StorableConstructor]
    33     private MultiEncodingCreator(bool deserializing) : base(deserializing) { }
     40    private MultiEncodingCreator(StorableConstructorFlag _) : base(_) { }
    3441
    3542    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    }
    3746
    3847    public override IDeepCloneable Clone(Cloner cloner) {
    3948      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      }
    4056    }
    4157
  • branches/2457_ExpertSystem/HeuristicLab.Optimization/3.3/BasicProblems/Operators/MultiEncodingCrossover.cs

    r16075 r16956  
    11#region License Information
    22/* HeuristicLab
    3  * Copyright (C) 2002-2018 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
     3 * Copyright (C) 2002-2019 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
    44 *
    55 * This file is part of HeuristicLab.
     
    2020#endregion
    2121
     22using HEAL.Attic;
    2223using HeuristicLab.Common;
    2324using HeuristicLab.Core;
    24 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
     25using HeuristicLab.Parameters;
    2526
    2627namespace HeuristicLab.Optimization {
    2728  [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
    3037    [StorableConstructor]
    31     private MultiEncodingCrossover(bool deserializing) : base(deserializing) { }
     38    private MultiEncodingCrossover(StorableConstructorFlag _) : base(_) { }
    3239    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    }
    3443
    3544    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    }
    3652  }
    3753}
  • branches/2457_ExpertSystem/HeuristicLab.Optimization/3.3/BasicProblems/Operators/MultiEncodingManipulator.cs

    r16075 r16956  
    11#region License Information
    22/* HeuristicLab
    3  * Copyright (C) 2002-2018 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
     3 * Copyright (C) 2002-2019 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
    44 *
    55 * This file is part of HeuristicLab.
     
    2020#endregion
    2121
     22using HEAL.Attic;
    2223using HeuristicLab.Common;
    2324using HeuristicLab.Core;
    24 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
     25using HeuristicLab.Parameters;
    2526
    2627namespace HeuristicLab.Optimization {
    2728  [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
    3037    [StorableConstructor]
    31     private MultiEncodingManipulator(bool deserializing) : base(deserializing) { }
     38    private MultiEncodingManipulator(StorableConstructorFlag _) : base(_) { }
    3239    private MultiEncodingManipulator(MultiEncodingManipulator original, Cloner cloner)
    3340      : 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    }
    3544
    3645    public override IDeepCloneable Clone(Cloner cloner) { return new MultiEncodingManipulator(this, cloner); }
    3746
     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
    3854  }
    3955}
  • branches/2457_ExpertSystem/HeuristicLab.Optimization/3.3/BasicProblems/Operators/MultiEncodingOperator.cs

    r16075 r16956  
    11#region License Information
    22/* HeuristicLab
    3  * Copyright (C) 2002-2018 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
     3 * Copyright (C) 2002-2019 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
    44 *
    55 * This file is part of HeuristicLab.
     
    2323using System.Collections.Generic;
    2424using System.Linq;
     25using HEAL.Attic;
    2526using HeuristicLab.Common;
    2627using HeuristicLab.Core;
    2728using HeuristicLab.Operators;
    2829using HeuristicLab.Parameters;
    29 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
    3030
    3131namespace HeuristicLab.Optimization {
    32   [StorableClass]
     32  [StorableType("43619638-9D00-4951-8138-8CCD0786E784")]
    3333  public abstract class MultiEncodingOperator<T> : Operator, IMultiEncodingOperator where T : class,IOperator {
    3434    private List<IEncoding> encodings = new List<IEncoding>();
     
    3939    }
    4040
     41    public abstract string OperatorPrefix { get; }
     42
    4143    [StorableConstructor]
    42     protected MultiEncodingOperator(bool deserializing)
    43       : base(deserializing) {
    44     }
    45 
     44    protected MultiEncodingOperator(StorableConstructorFlag _) : base(_) { }
    4645    protected MultiEncodingOperator(MultiEncodingOperator<T> original, Cloner cloner)
    4746      : base(original, cloner) {
     
    5049        encoding.OperatorsChanged += Encoding_OperatorsChanged;
    5150    }
    52 
    5351    protected MultiEncodingOperator() : base() { }
    5452
    5553    [StorableHook(HookType.AfterDeserialization)]
    5654    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
    5868        encoding.OperatorsChanged += Encoding_OperatorsChanged;
     69      }
    5970    }
    6071
    61 
    6272    public override IOperation Apply() {
    63       var operations = Parameters.Select(p => p.ActualValue).OfType<IOperator>().Select(op => ExecutionContext.CreateOperation(op));
     73      var operations = Parameters.Select(p => p.ActualValue).OfType<IOperator>().Select(op => ExecutionContext.CreateChildOperation(op));
    6474      return new OperationCollection(operations);
    6575    }
    6676
    6777    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));
    6979
    7080      encodings.Add(encoding);
    7181      encoding.OperatorsChanged += Encoding_OperatorsChanged;
    7282
    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>()));
    7484      param.Value = param.ValidValues.First();
    7585      Parameters.Add(param);
     
    7989      if (!encodings.Remove(encoding)) throw new ArgumentException(string.Format("Encoding {0} was not added to the MultiEncoding.", encoding.Name));
    8090      encoding.OperatorsChanged -= Encoding_OperatorsChanged;
    81       return Parameters.Remove(encoding.Name);
     91      return Parameters.Remove(OperatorPrefix + "." + encoding.Name);
    8292    }
    8393
    8494    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));
    8696
    87       return (IConstrainedValueParameter<T>)Parameters[encoding.Name];
     97      return (IConstrainedValueParameter<T>)Parameters[OperatorPrefix + "." + encoding.Name];
    8898    }
    8999
  • branches/2457_ExpertSystem/HeuristicLab.Optimization/3.3/BasicProblems/Operators/MultiObjectiveAnalyzer.cs

    r16075 r16956  
    11#region License Information
    22/* HeuristicLab
    3  * Copyright (C) 2002-2018 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
     3 * Copyright (C) 2002-2019 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
    44 *
    55 * This file is part of HeuristicLab.
     
    2828using HeuristicLab.Operators;
    2929using HeuristicLab.Parameters;
    30 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
     30using HEAL.Attic;
    3131
    3232namespace HeuristicLab.Optimization {
    3333  [Item("Multi-objective Analyzer", "Calls the Analyze method of the problem definition.")]
    34   [StorableClass]
     34  [StorableType("903FE3D1-3179-4EA5-A7E1-63DE26239F9B")]
    3535  public class MultiObjectiveAnalyzer : SingleSuccessorOperator, IMultiObjectiveAnalysisOperator, IStochasticOperator {
    3636    public bool EnabledByDefault { get { return true; } }
     
    5555
    5656    [StorableConstructor]
    57     protected MultiObjectiveAnalyzer(bool deserializing) : base(deserializing) { }
     57    protected MultiObjectiveAnalyzer(StorableConstructorFlag _) : base(_) { }
    5858    protected MultiObjectiveAnalyzer(MultiObjectiveAnalyzer original, Cloner cloner) : base(original, cloner) { }
    5959    public MultiObjectiveAnalyzer() {
  • branches/2457_ExpertSystem/HeuristicLab.Optimization/3.3/BasicProblems/Operators/MultiObjectiveEvaluator.cs

    r16075 r16956  
    11#region License Information
    22/* HeuristicLab
    3  * Copyright (C) 2002-2018 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
     3 * Copyright (C) 2002-2019 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
    44 *
    55 * This file is part of HeuristicLab.
     
    2626using HeuristicLab.Operators;
    2727using HeuristicLab.Parameters;
    28 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
     28using HEAL.Attic;
    2929
    3030namespace HeuristicLab.Optimization {
    3131  [Item("Multi-objective Evaluator", "Calls the Evaluate method of the problem definition and writes the return value into the scope.")]
    32   [StorableClass]
     32  [StorableType("C5605ED8-0ED2-4C7B-97A1-E7EB68A4FDBF")]
    3333  public class MultiObjectiveEvaluator : InstrumentedOperator, IMultiObjectiveEvaluationOperator, IStochasticOperator {
    3434
     
    4848
    4949    [StorableConstructor]
    50     protected MultiObjectiveEvaluator(bool deserializing) : base(deserializing) { }
     50    protected MultiObjectiveEvaluator(StorableConstructorFlag _) : base(_) { }
    5151    protected MultiObjectiveEvaluator(MultiObjectiveEvaluator original, Cloner cloner) : base(original, cloner) { }
    5252    public MultiObjectiveEvaluator() {
  • branches/2457_ExpertSystem/HeuristicLab.Optimization/3.3/BasicProblems/Operators/SingleObjectiveAnalyzer.cs

    r16075 r16956  
    11#region License Information
    22/* HeuristicLab
    3  * Copyright (C) 2002-2018 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
     3 * Copyright (C) 2002-2019 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
    44 *
    55 * This file is part of HeuristicLab.
     
    2828using HeuristicLab.Operators;
    2929using HeuristicLab.Parameters;
    30 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
     30using HEAL.Attic;
    3131
    3232namespace HeuristicLab.Optimization {
    3333  [Item("Single-objective Analyzer", "Calls the script's Analyze method to be able to write into the results collection.")]
    34   [StorableClass]
     34  [StorableType("3D20F8E2-CE11-4021-A05B-CFCB02C0FD6F")]
    3535  public sealed class SingleObjectiveAnalyzer : SingleSuccessorOperator, ISingleObjectiveAnalysisOperator, IAnalyzer, IStochasticOperator {
    3636    public bool EnabledByDefault { get { return true; } }
     
    5555
    5656    [StorableConstructor]
    57     private SingleObjectiveAnalyzer(bool deserializing) : base(deserializing) { }
     57    private SingleObjectiveAnalyzer(StorableConstructorFlag _) : base(_) { }
    5858    private SingleObjectiveAnalyzer(SingleObjectiveAnalyzer original, Cloner cloner) : base(original, cloner) { }
    5959    public SingleObjectiveAnalyzer() {
  • branches/2457_ExpertSystem/HeuristicLab.Optimization/3.3/BasicProblems/Operators/SingleObjectiveEvaluator.cs

    r16075 r16956  
    11#region License Information
    22/* HeuristicLab
    3  * Copyright (C) 2002-2018 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
     3 * Copyright (C) 2002-2019 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
    44 *
    55 * This file is part of HeuristicLab.
     
    2626using HeuristicLab.Operators;
    2727using HeuristicLab.Parameters;
    28 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
     28using HEAL.Attic;
    2929
    3030namespace HeuristicLab.Optimization {
    3131  [Item("Single-objective Evaluator", "Calls the script's Evaluate method to get the quality value of the parameter vector.")]
    32   [StorableClass]
     32  [StorableType("E8914B68-D0D7-407F-8D58-002FDF2F45CF")]
    3333  public sealed class SingleObjectiveEvaluator : InstrumentedOperator, ISingleObjectiveEvaluationOperator, IStochasticOperator {
    3434
     
    4848
    4949    [StorableConstructor]
    50     private SingleObjectiveEvaluator(bool deserializing) : base(deserializing) { }
     50    private SingleObjectiveEvaluator(StorableConstructorFlag _) : base(_) { }
    5151    private SingleObjectiveEvaluator(SingleObjectiveEvaluator original, Cloner cloner) : base(original, cloner) { }
    5252    public SingleObjectiveEvaluator() {
  • branches/2457_ExpertSystem/HeuristicLab.Optimization/3.3/BasicProblems/Operators/SingleObjectiveImprover.cs

    r16075 r16956  
    11#region License Information
    22/* HeuristicLab
    3  * Copyright (C) 2002-2018 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
     3 * Copyright (C) 2002-2019 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
    44 *
    55 * This file is part of HeuristicLab.
     
    2828using HeuristicLab.Operators;
    2929using HeuristicLab.Parameters;
    30 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
     30using HEAL.Attic;
    3131
    3232namespace HeuristicLab.Optimization {
    3333  [Item("Single-objective Improver", "Improves a solution by calling GetNeighbors and Evaluate of the corresponding problem definition.")]
    34   [StorableClass]
     34  [StorableType("7A917E09-920C-4B47-9599-67371101B35F")]
    3535  public sealed class SingleObjectiveImprover : SingleSuccessorOperator, INeighborBasedOperator, IImprovementOperator, ISingleObjectiveEvaluationOperator, IStochasticOperator {
    3636    public ILookupParameter<IRandom> RandomParameter {
     
    6666
    6767    [StorableConstructor]
    68     private SingleObjectiveImprover(bool deserializing) : base(deserializing) { }
     68    private SingleObjectiveImprover(StorableConstructorFlag _) : base(_) { }
    6969    private SingleObjectiveImprover(SingleObjectiveImprover original, Cloner cloner) : base(original, cloner) { }
    7070    public SingleObjectiveImprover() {
  • branches/2457_ExpertSystem/HeuristicLab.Optimization/3.3/BasicProblems/Operators/SingleObjectiveMoveEvaluator.cs

    r16075 r16956  
    11#region License Information
    22/* HeuristicLab
    3  * Copyright (C) 2002-2018 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
     3 * Copyright (C) 2002-2019 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
    44 *
    55 * This file is part of HeuristicLab.
     
    2626using HeuristicLab.Operators;
    2727using HeuristicLab.Parameters;
    28 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
     28using HEAL.Attic;
    2929
    3030namespace HeuristicLab.Optimization {
    3131  [Item("Single-objective MoveEvaluator", "Evaluates a parameter vector that results from a move.")]
    32   [StorableClass]
     32  [StorableType("EE4B1EBA-50BF-40C7-B338-F4A9D9CC554E")]
    3333  public class SingleObjectiveMoveEvaluator : SingleSuccessorOperator, ISingleObjectiveEvaluationOperator, ISingleObjectiveMoveEvaluator, IStochasticOperator, ISingleObjectiveMoveOperator {
    3434
     
    5252
    5353    [StorableConstructor]
    54     protected SingleObjectiveMoveEvaluator(bool deserializing) : base(deserializing) { }
     54    protected SingleObjectiveMoveEvaluator(StorableConstructorFlag _) : base(_) { }
    5555    protected SingleObjectiveMoveEvaluator(SingleObjectiveMoveEvaluator original, Cloner cloner) : base(original, cloner) { }
    5656    public SingleObjectiveMoveEvaluator() {
  • branches/2457_ExpertSystem/HeuristicLab.Optimization/3.3/BasicProblems/Operators/SingleObjectiveMoveGenerator.cs

    r16075 r16956  
    11#region License Information
    22/* HeuristicLab
    3  * Copyright (C) 2002-2018 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
     3 * Copyright (C) 2002-2019 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
    44 *
    55 * This file is part of HeuristicLab.
     
    2929using HeuristicLab.Operators;
    3030using HeuristicLab.Parameters;
    31 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
     31using HEAL.Attic;
    3232
    3333namespace HeuristicLab.Optimization {
    3434  [Item("Single-objective MoveGenerator", "Calls the GetNeighbors method of the problem definition to obtain the moves.")]
    35   [StorableClass]
     35  [StorableType("CB37E7D8-EAC3-4061-9D39-20538CD1064D")]
    3636  public class SingleObjectiveMoveGenerator : SingleSuccessorOperator, INeighborBasedOperator, IMultiMoveGenerator, IStochasticOperator, ISingleObjectiveMoveOperator {
    3737    public ILookupParameter<IRandom> RandomParameter {
     
    5050
    5151    [StorableConstructor]
    52     protected SingleObjectiveMoveGenerator(bool deserializing) : base(deserializing) { }
     52    protected SingleObjectiveMoveGenerator(StorableConstructorFlag _) : base(_) { }
    5353    protected SingleObjectiveMoveGenerator(SingleObjectiveMoveGenerator original, Cloner cloner)
    5454      : base(original, cloner) { }
  • branches/2457_ExpertSystem/HeuristicLab.Optimization/3.3/BasicProblems/Operators/SingleObjectiveMoveMaker.cs

    r16075 r16956  
    11#region License Information
    22/* HeuristicLab
    3  * Copyright (C) 2002-2018 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
     3 * Copyright (C) 2002-2019 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
    44 *
    55 * This file is part of HeuristicLab.
     
    2626using HeuristicLab.Operators;
    2727using HeuristicLab.Parameters;
    28 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
     28using HEAL.Attic;
    2929
    3030namespace HeuristicLab.Optimization {
    3131  [Item("Single-objective MoveMaker", "Applies a move.")]
    32   [StorableClass]
     32  [StorableType("C0ABF392-C825-4B98-8FB9-5749A9091FD6")]
    3333  public class SingleObjectiveMoveMaker : InstrumentedOperator, IMoveMaker, ISingleObjectiveMoveOperator {
    3434    public ILookupParameter<IEncoding> EncodingParameter {
     
    4545
    4646    [StorableConstructor]
    47     protected SingleObjectiveMoveMaker(bool deserializing) : base(deserializing) { }
     47    protected SingleObjectiveMoveMaker(StorableConstructorFlag _) : base(_) { }
    4848    protected SingleObjectiveMoveMaker(SingleObjectiveMoveMaker original, Cloner cloner) : base(original, cloner) { }
    4949    public SingleObjectiveMoveMaker() {
  • branches/2457_ExpertSystem/HeuristicLab.Optimization/3.3/BasicProblems/SingleObjectiveBasicProblem.cs

    r16075 r16956  
    11#region License Information
    22/* HeuristicLab
    3  * Copyright (C) 2002-2018 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
     3 * Copyright (C) 2002-2019 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
    44 *
    55 * This file is part of HeuristicLab.
     
    2323using System.Collections.Generic;
    2424using System.Linq;
     25using HEAL.Attic;
    2526using HeuristicLab.Common;
    2627using HeuristicLab.Core;
    2728using HeuristicLab.Data;
    2829using HeuristicLab.Parameters;
    29 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
    3030
    3131namespace HeuristicLab.Optimization {
    32   [StorableClass]
     32  [StorableType("2697320D-0259-44BB-BD71-7EE1B10F664C")]
    3333  public abstract class SingleObjectiveBasicProblem<TEncoding> : BasicProblem<TEncoding, SingleObjectiveEvaluator>,
    3434    ISingleObjectiveProblemDefinition, ISingleObjectiveHeuristicOptimizationProblem
     
    5151
    5252    [StorableConstructor]
    53     protected SingleObjectiveBasicProblem(bool deserializing) : base(deserializing) { }
     53    protected SingleObjectiveBasicProblem(StorableConstructorFlag _) : base(_) { }
    5454
    5555    protected SingleObjectiveBasicProblem(SingleObjectiveBasicProblem<TEncoding> original, Cloner cloner)
     
    9595
    9696    protected override void OnOperatorsChanged() {
    97       base.OnOperatorsChanged();
    9897      if (Encoding != null) {
    9998        PruneMultiObjectiveOperators(Encoding);
     
    105104        }
    106105      }
     106      base.OnOperatorsChanged();
    107107    }
    108108
Note: See TracChangeset for help on using the changeset viewer.