Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
10/03/19 17:43:11 (5 years ago)
Author:
abeham
Message:

#2521: Refactored maximization property for multi-objective problems

Location:
branches/2521_ProblemRefactoring/HeuristicLab.Optimization/3.3/BasicProblems
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/2521_ProblemRefactoring/HeuristicLab.Optimization/3.3/BasicProblems/Interfaces/IMultiObjectiveProblemDefinition.cs

    r17257 r17309  
    2828  public interface IMultiObjectiveProblemDefinition {
    2929    int Objectives { get; }
    30     bool[] Maximization { get; }
     30    IReadOnlyList<bool> Maximization { get; }
    3131    IReadOnlyList<double[]> BestKnownFront { get; }
    3232    double[] ReferencePoint { get; }
  • branches/2521_ProblemRefactoring/HeuristicLab.Optimization/3.3/BasicProblems/MultiObjectiveProblem.cs

    r17226 r17309  
    3737    where TEncodedSolution : class, IEncodedSolution {
    3838    #region Parameternames
    39     public const string MaximizationParameterName = "Maximization";
    4039    public const string BestKnownFrontParameterName = "BestKnownFront";
    4140    public const string ReferencePointParameterName = "ReferencePoint";
     
    4342
    4443    #region Parameterproperties
    45     public IValueParameter<BoolArray> MaximizationParameter {
    46       get { return (IValueParameter<BoolArray>)Parameters[MaximizationParameterName]; }
    47     }
     44    [Storable] protected IValueParameter<BoolArray> MaximizationParameter { get; }
    4845    public IValueParameter<DoubleMatrix> BestKnownFrontParameter {
    4946      get { return (IValueParameter<DoubleMatrix>)Parameters[BestKnownFrontParameterName]; }
     
    6057    protected MultiObjectiveProblem(MultiObjectiveProblem<TEncoding, TEncodedSolution> original, Cloner cloner)
    6158      : base(original, cloner) {
     59      MaximizationParameter = cloner.Clone(original.MaximizationParameter);
    6260      ParameterizeOperators();
    6361    }
    6462
    6563    protected MultiObjectiveProblem() : base() {
    66       Parameters.Add(new ValueParameter<BoolArray>(MaximizationParameterName, "Set to false if the problem should be minimized.", (BoolArray)new BoolArray(Maximization).AsReadOnly()));
     64      MaximizationParameter = new ValueParameter<BoolArray>("Maximization", "Set to false if the problem should be minimized.", new BoolArray(new[] { false, false }).AsReadOnly()) { Hidden = true, ReadOnly = true };
     65      Parameters.Add(MaximizationParameter);
    6766      Parameters.Add(new OptionalValueParameter<DoubleMatrix>(BestKnownFrontParameterName, "A double matrix representing the best known qualites for this problem (aka points on the Pareto front). Points are to be given in a row-wise fashion."));
    6867      Parameters.Add(new OptionalValueParameter<DoubleArray>(ReferencePointParameterName, "The refrence point for hypervolume calculations on this problem"));
     
    7372
    7473    protected MultiObjectiveProblem(TEncoding encoding) : base(encoding) {
    75       Parameters.Add(new ValueParameter<BoolArray>(MaximizationParameterName, "Set to false if the problem should be minimized.", (BoolArray)new BoolArray(Maximization).AsReadOnly()));
     74      MaximizationParameter = new ValueParameter<BoolArray>("Maximization", "Set to false if the problem should be minimized.", new BoolArray(new[] { false, false }).AsReadOnly()) { Hidden = true, ReadOnly = true };
     75      Parameters.Add(MaximizationParameter);
    7676      Parameters.Add(new OptionalValueParameter<DoubleMatrix>(BestKnownFrontParameterName, "A double matrix representing the best known qualites for this problem (aka points on the Pareto front). Points are to be given in a row-wise fashion."));
    7777      Parameters.Add(new OptionalValueParameter<DoubleArray>(ReferencePointParameterName, "The refrence point for hypervolume calculations on this problem"));
     
    8989      get { return Maximization.Length; }
    9090    }
    91     public abstract bool[] Maximization { get; }
     91    IReadOnlyList<bool> IMultiObjectiveProblemDefinition.Maximization {
     92      get { return Maximization.CloneAsArray(); }
     93    }
     94    public BoolArray Maximization {
     95      get { return MaximizationParameter.Value; }
     96      set {
     97        if (Maximization == value) return;
     98        MaximizationParameter.ReadOnly = false;
     99        MaximizationParameter.Value = value.AsReadOnly();
     100        MaximizationParameter.ReadOnly = true;
     101      }
     102    }
    92103
    93104    public virtual IReadOnlyList<double[]> BestKnownFront {
     
    168179    #region IMultiObjectiveHeuristicOptimizationProblem Members
    169180    IParameter IMultiObjectiveHeuristicOptimizationProblem.MaximizationParameter {
    170       get { return Parameters[MaximizationParameterName]; }
     181      get { return MaximizationParameter; }
    171182    }
    172183    IMultiObjectiveEvaluator IMultiObjectiveHeuristicOptimizationProblem.Evaluator {
Note: See TracChangeset for help on using the changeset viewer.