Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
06/02/10 21:34:31 (14 years ago)
Author:
abeham
Message:

#1029

  • Added Bounds to SingleObjectiveTestFunctionSolution
  • This would break persistence, so I added a CompatibilityMethod (which can be removed again once moving to 3.4)
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/sources/HeuristicLab.Problems.TestFunctions/3.3/SingleObjectiveTestFunctionSolution.cs

    r3665 r3894  
    108108    }
    109109
     110    [Storable]
     111    private DoubleMatrix bounds;
     112    public DoubleMatrix Bounds {
     113      get { return bounds; }
     114      set {
     115        if (bounds != value) {
     116          if (bounds != null) DeregisterBoundsEvents();
     117          bounds = value;
     118          if (bounds != null) RegisterBoundsEvents();
     119          OnBoundsChanged();
     120        }
     121      }
     122    }
     123
    110124    public SingleObjectiveTestFunctionSolution() : base() { }
    111125    public SingleObjectiveTestFunctionSolution(RealVector realVector, DoubleValue quality, ISingleObjectiveTestFunctionProblemEvaluator evaluator)
     
    125139      if (bestQuality != null) RegisterQualityEvents();
    126140      if (population != null) RegisterPopulationEvents();
     141      if (bounds != null) RegisterBoundsEvents();
    127142    }
    128143
     
    135150      clone.population = (ItemArray<RealVector>)cloner.Clone(population);
    136151      clone.evaluator = (ISingleObjectiveTestFunctionProblemEvaluator)cloner.Clone(evaluator);
     152      clone.bounds = (DoubleMatrix)cloner.Clone(bounds);
    137153      clone.Initialize();
    138154      return clone;
     
    175191    }
    176192
     193    public event EventHandler BoundsChanged;
     194    private void OnBoundsChanged() {
     195      var changed = BoundsChanged;
     196      if (changed != null)
     197        changed(this, EventArgs.Empty);
     198    }
     199
    177200    private void RegisterBestKnownRealVectorEvents() {
    178201      BestKnownRealVector.ItemChanged += new EventHandler<EventArgs<int>>(BestKnownRealVector_ItemChanged);
     
    207230      Population.ItemsReplaced -= new CollectionItemsChangedEventHandler<IndexedItem<RealVector>>(Population_ItemsReplaced);
    208231    }
     232    private void RegisterBoundsEvents() {
     233      Bounds.ItemChanged += new EventHandler<EventArgs<int, int>>(Bounds_ItemChanged);
     234      Bounds.Reset += new EventHandler(Bounds_Reset);
     235    }
     236    private void DeregisterBoundsEvents() {
     237      Bounds.ItemChanged -= new EventHandler<EventArgs<int, int>>(Bounds_ItemChanged);
     238      Bounds.Reset -= new EventHandler(Bounds_Reset);
     239    }
    209240
    210241    private void BestKnownRealVector_ItemChanged(object sender, EventArgs<int> e) {
     
    231262    private void Population_CollectionReset(object sender, CollectionItemsChangedEventArgs<IndexedItem<RealVector>> e) {
    232263      OnPopulationChanged();
     264    }
     265    private void Bounds_ItemChanged(object sender, EventArgs<int, int> e) {
     266      OnBoundsChanged();
     267    }
     268    private void Bounds_Reset(object sender, EventArgs e) {
     269      OnBoundsChanged();
    233270    }
    234271    #endregion
Note: See TracChangeset for help on using the changeset viewer.