Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
05/18/20 18:55:08 (4 years ago)
Author:
abeham
Message:

#2521: worked on refactoring, worked a lot on binary encoding / problems

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2521_ProblemRefactoring/HeuristicLab.Encodings.RealVectorEncoding/3.3/RealVectorMultiObjectiveProblem.cs

    r17230 r17544  
    2828using HeuristicLab.Common;
    2929using HeuristicLab.Core;
     30using HeuristicLab.Data;
    3031using HeuristicLab.Optimization;
     32using HeuristicLab.Parameters;
    3133
    3234namespace HeuristicLab.Encodings.RealVectorEncoding {
    3335  [StorableType("135697c1-1b2b-46b6-a518-1c6efae09475")]
    3436  public abstract class RealVectorMultiObjectiveProblem : MultiObjectiveProblem<RealVectorEncoding, RealVector> {
    35     public int Length {
    36       get { return Encoding.Length; }
    37       set { Encoding.Length = value; }
     37    [Storable] protected ReferenceParameter<IntValue> DimensionRefParameter { get; private set; }
     38    public IValueParameter<IntValue> DimensionParameter => DimensionRefParameter;
     39    [Storable] protected ReferenceParameter<DoubleMatrix> BoundsRefParameter { get; private set; }
     40    public IValueParameter<DoubleMatrix> BoundsParameter => BoundsRefParameter;
     41
     42    public int Dimension {
     43      get { return DimensionRefParameter.Value.Value; }
     44      set { DimensionRefParameter.Value.Value = value; }
     45    }
     46
     47    public DoubleMatrix Bounds {
     48      get { return BoundsRefParameter.Value; }
     49      set { BoundsParameter.Value = value; }
    3850    }
    3951
     
    4759    protected RealVectorMultiObjectiveProblem(RealVectorMultiObjectiveProblem original, Cloner cloner)
    4860      : base(original, cloner) {
     61      DimensionRefParameter = cloner.Clone(original.DimensionRefParameter);
     62      BoundsRefParameter = cloner.Clone(original.BoundsRefParameter);
    4963      RegisterEventHandlers();
    5064    }
     
    5367    protected RealVectorMultiObjectiveProblem(RealVectorEncoding encoding) : base(encoding) {
    5468      EncodingParameter.ReadOnly = true;
     69      Parameters.Add(DimensionRefParameter = new ReferenceParameter<IntValue>("Dimension", "The dimension of the real vector problem.", Encoding.LengthParameter));
     70      Parameters.Add(BoundsRefParameter = new ReferenceParameter<DoubleMatrix>("Bounds", "The bounding box of the values.", Encoding.BoundsParameter));
     71
    5572
    5673      Operators.Add(new HammingSimilarityCalculator());
     
    8299
    83100    private void RegisterEventHandlers() {
    84       Encoding.LengthParameter.Value.ValueChanged += LengthParameter_ValueChanged;
     101      DimensionRefParameter.Value.ValueChanged += DimensionParameter_Value_ValueChanged;
     102      BoundsRefParameter.ValueChanged += BoundsParameter_ValueChanged;
    85103    }
    86104
    87     protected virtual void LengthParameter_ValueChanged(object sender, EventArgs e) { }
     105    private void DimensionParameter_Value_ValueChanged(object sender, EventArgs e) {
     106      DimensionOnChanged();
     107    }
     108
     109    private void BoundsParameter_ValueChanged(object sender, EventArgs e) {
     110      BoundsOnChanged();
     111    }
     112
     113    protected virtual void DimensionOnChanged() { }
     114
     115    protected virtual void BoundsOnChanged() { }
    88116  }
    89117}
Note: See TracChangeset for help on using the changeset viewer.