Free cookie consent management tool by TermsFeed Policy Generator

source: addons/HeuristicLab.FitnessLandscapeAnalysis/HeuristicLab.Analysis.FitnessLandscape/Analysis/RealVectorBoundingBoxUpdater.cs @ 16573

Last change on this file since 16573 was 16573, checked in by gkronber, 5 years ago

#2520: changed HeuristicLab.FLA addon to compile with new HL.Persistence

File size: 2.5 KB
Line 
1using System;
2using System.Collections.Generic;
3using System.Linq;
4using System.Text;
5using HeuristicLab.Operators;
6using HeuristicLab.Parameters;
7using HeuristicLab.Data;
8using HeuristicLab.Encodings.RealVectorEncoding;
9using HeuristicLab.Core;
10using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
11using HeuristicLab.Common;
12using HEAL.Attic;
13
14namespace HeuristicLab.Analysis.FitnessLandscape {
15 
16  [Item("RealVectorBoundingBoxUpdater", "Updates a bounding box using a real vector to be enclosed.")]
17  [StorableType("1EBAC56C-83F0-41C1-8E42-365E7187EA0D")]
18  public class RealVectorBoundingBoxUpdater : SingleSuccessorOperator {
19
20    #region Parameter Properties
21    public LookupParameter<DoubleMatrix> BoundingBoxParameter {
22      get { return (LookupParameter<DoubleMatrix>)Parameters["BoundingBox"]; }
23    }
24    public LookupParameter<RealVector> RealVectorParameter {
25      get { return (LookupParameter<RealVector>)Parameters["RealVector"]; }
26    }
27    #endregion
28
29    #region Parameter Values
30    public RealVector RealVector {
31      get { return RealVectorParameter.ActualValue; }
32    }
33    public DoubleMatrix Bounds {
34      get { return BoundingBoxParameter.ActualValue; }
35      set { BoundingBoxParameter.ActualValue = value; }
36    }
37    #endregion
38
39    #region Construction and Cloning
40
41    [StorableConstructor]
42    protected RealVectorBoundingBoxUpdater(StorableConstructorFlag _) : base(_) { }
43    protected RealVectorBoundingBoxUpdater(RealVectorBoundingBoxUpdater original, Cloner cloner)
44      : base(original, cloner) {
45    }
46    public RealVectorBoundingBoxUpdater() {
47      Parameters.Add(new LookupParameter<RealVector>("RealVector", "The real vector used to update the bounding box"));
48      Parameters.Add(new LookupParameter<DoubleMatrix>("BoundingBox", "The Bounding Box to be updated or created"));
49    }
50    public override IDeepCloneable Clone(Cloner cloner) {
51      return new RealVectorBoundingBoxUpdater(this, cloner);
52    }
53    #endregion
54
55    public override IOperation Apply() {
56      if (Bounds == null) {
57        Bounds = new DoubleMatrix(RealVector.Length, 2);
58        for (int i = 0; i < RealVector.Length; i++)
59          Bounds[i, 0] = Bounds[i, 1] = RealVector[i];
60      } else {
61        for (int i = 0; i < RealVector.Length; i++) {
62          Bounds[i, 0] = Math.Min(Bounds[i, 0], RealVector[i]);
63          Bounds[i, 1] = Math.Max(Bounds[i, 1], RealVector[i]);
64        }
65      }
66      return base.Apply();
67    }
68  }
69}
Note: See TracBrowser for help on using the repository browser.