Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
02/12/15 16:32:37 (9 years ago)
Author:
mkommend
Message:

#2282: Added best known quality parameter to single-objective basic problem and new one-max problem.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/sources/HeuristicLab.Problems.Binary/3.3/BinaryProblem.cs

    r11987 r11990  
    2222#endregion
    2323
     24using System;
    2425using HeuristicLab.Common;
    2526using HeuristicLab.Core;
     
    3334  [StorableClass]
    3435  public abstract class BinaryProblem : SingleObjectiveBasicProblem<BinaryVectorEncoding> {
    35 
    3636    public virtual int Length {
    3737      get { return Encoding.Length; }
     
    3939    }
    4040
     41    private IFixedValueParameter<IntValue> LengthParameter {
     42      get { return (IFixedValueParameter<IntValue>)Parameters["Length"]; }
     43    }
     44
    4145    [StorableConstructor]
    4246    protected BinaryProblem(bool deserializing) : base(deserializing) { }
    43     protected BinaryProblem(BinaryProblem original, Cloner cloner) : base(original, cloner) { }
    44     protected BinaryProblem() : base() { }
     47    [StorableHook(HookType.AfterDeserialization)]
     48    private void AfterDeserialization() {
     49      RegisterEventHandlers();
     50    }
     51
     52    protected BinaryProblem(BinaryProblem original, Cloner cloner)
     53      : base(original, cloner) {
     54      RegisterEventHandlers();
     55    }
     56
     57    protected BinaryProblem()
     58      : base() {
     59      var lengthParameter = new FixedValueParameter<IntValue>("Length", "The length of the BinaryVector.", new IntValue(10));
     60      Parameters.Add(lengthParameter);
     61      Encoding.LengthParameter = lengthParameter;
     62      RegisterEventHandlers();
     63    }
    4564
    4665    public virtual bool IsBetter(double quality, double bestQuality) {
     
    5372
    5473    public abstract double Evaluate(BinaryVector vector, IRandom random);
     74
     75    protected override void OnEncodingChanged() {
     76      base.OnEncodingChanged();
     77      Encoding.LengthParameter = LengthParameter;
     78    }
     79
     80
     81    private void RegisterEventHandlers() {
     82      LengthParameter.Value.ValueChanged += LengthParameter_ValueChanged;
     83    }
     84
     85    protected virtual void LengthParameter_ValueChanged(object sender, EventArgs e) { }
    5586  }
    5687}
Note: See TracChangeset for help on using the changeset viewer.