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.BinaryVectorEncoding/3.3/BinaryVectorProblem.cs

    r17522 r17544  
    2121#endregion
    2222
    23 using System;
    2423using System.Linq;
    2524using HEAL.Attic;
     
    2726using HeuristicLab.Common;
    2827using HeuristicLab.Core;
     28using HeuristicLab.Data;
    2929using HeuristicLab.Optimization;
    3030using HeuristicLab.Optimization.Operators;
     31using HeuristicLab.Parameters;
    3132
    3233namespace HeuristicLab.Encodings.BinaryVectorEncoding {
     
    3435  public abstract class BinaryVectorProblem : SingleObjectiveProblem<BinaryVectorEncoding, BinaryVector> {
    3536    [Storable] protected IResultParameter<ISingleObjectiveSolutionContext<BinaryVector>> BestResultParameter { get; private set; }
    36     public IResultDefinition<ISingleObjectiveSolutionContext<BinaryVector>> BestResult { get { return BestResultParameter; } }
     37    public IResultDefinition<ISingleObjectiveSolutionContext<BinaryVector>> BestResult => BestResultParameter;
     38    [Storable] protected ReferenceParameter<IntValue> DimensionRefParameter { get; private set; }
    3739
    38     public int Length {
     40    public int Dimension {
    3941      get { return Encoding.Length; }
    4042      set { Encoding.Length = value; }
     
    5153      : base(original, cloner) {
    5254      BestResultParameter = cloner.Clone(original.BestResultParameter);
     55      DimensionRefParameter = cloner.Clone(original.DimensionRefParameter);
    5356      RegisterEventHandlers();
    5457    }
     
    5861      EncodingParameter.ReadOnly = true;
    5962      Parameters.Add(BestResultParameter = new ResultParameter<ISingleObjectiveSolutionContext<BinaryVector>>("Best Solution", "The best solution."));
     63      Parameters.Add(DimensionRefParameter = new ReferenceParameter<IntValue>("Dimension", "The dimension of the binary vector problem.", Encoding.LengthParameter));
    6064
    6165      Operators.Add(new HammingSimilarityCalculator());
     
    7478    }
    7579
    76     protected override void OnEncodingChanged() {
    77       base.OnEncodingChanged();
    78       Parameterize();
    79     }
    80 
    8180    private void Parameterize() {
    8281      foreach (var similarityCalculator in Operators.OfType<ISolutionSimilarityCalculator>()) {
     
    8786
    8887    private void RegisterEventHandlers() {
    89       Encoding.LengthParameter.Value.ValueChanged += LengthParameter_ValueChanged;
     88      Encoding.PropertyChanged += (sender, args) => {
     89        if (args.PropertyName == nameof(Encoding.Length))
     90          DimensionOnChanged();
     91      };
    9092    }
    9193
    92     protected virtual void LengthParameter_ValueChanged(object sender, EventArgs e) { }
     94    protected virtual void DimensionOnChanged() { }
    9395  }
    9496}
Note: See TracChangeset for help on using the changeset viewer.