Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
08/29/17 11:28:16 (7 years ago)
Author:
bwerth
Message:

#2745 added discretized EGO-version for use with IntegerVectors

Location:
branches/EfficientGlobalOptimization/HeuristicLab.Algorithms.EGO/SamplingMethods
Files:
2 edited
1 copied

Legend:

Unmodified
Added
Removed
  • branches/EfficientGlobalOptimization/HeuristicLab.Algorithms.EGO/SamplingMethods/LatinHyperCubeDesignCreator.cs

    r15064 r15343  
    2626using HeuristicLab.Core;
    2727using HeuristicLab.Data;
     28using HeuristicLab.Optimization;
    2829using HeuristicLab.Encodings.PermutationEncoding;
    2930using HeuristicLab.Encodings.RealVectorEncoding;
     
    3637  [StorableClass]
    3738  [Item("LatinHyperCubeDesignCreator", "A latin hypercube sampling strategy for real valued optimization")]
    38   public class LatinHyperCubeDesignCreator : RealVectorCreator, IInitialSampling {
     39  public class LatinHyperCubeDesignCreator : RealVectorCreator, IInitialSampling<RealVector> {
    3940    private IValueLookupParameter<IntValue> DesignSize => (IValueLookupParameter<IntValue>)Parameters["DesignSize"];
    4041    [Storable]
     
    5455    }
    5556
    56     public RealVector[] GetSamples(int noSamples, RealVector[] existingSamples, RealVectorEncoding encoding, IRandom random) {
    57       return GetSamples(random, encoding.Length, encoding.Bounds, noSamples);
     57    public RealVector[] GetSamples(int noSamples, RealVector[] existingSamples, IEncoding encoding, IRandom random) {
     58      var enc = encoding as RealVectorEncoding;
     59
     60
     61      return GetSamples(random, enc.Length, enc.Bounds, noSamples);
    5862    }
    5963
  • branches/EfficientGlobalOptimization/HeuristicLab.Algorithms.EGO/SamplingMethods/UniformRandomDiscreteSampling.cs

    r15340 r15343  
    2222using HeuristicLab.Common;
    2323using HeuristicLab.Core;
    24 using HeuristicLab.Encodings.RealVectorEncoding;
     24using HeuristicLab.Optimization;
     25using HeuristicLab.Encodings.IntegerVectorEncoding;
    2526using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
    2627
     
    2930
    3031  [StorableClass]
    31   [Item("UniformRandomSampling", "A uniform random sampling strategy for real valued optimization")]
    32   public class UniformRandomSampling : ParameterizedNamedItem, IInitialSampling {
     32  [Item("UniformRandomDiscreteSampling", "A uniform random sampling strategy for real valued optimization")]
     33  public class UniformRandomDiscreteSampling : ParameterizedNamedItem, IInitialSampling<IntegerVector> {
    3334
    3435    #region HL-Constructors, Serialization and Cloning
    3536    [StorableConstructor]
    36     protected UniformRandomSampling(bool deserializing) : base(deserializing) { }
    37     protected UniformRandomSampling(UniformRandomSampling original, Cloner cloner) : base(original, cloner) { }
    38     public UniformRandomSampling() {
     37    protected UniformRandomDiscreteSampling(bool deserializing) : base(deserializing) { }
     38    protected UniformRandomDiscreteSampling(UniformRandomDiscreteSampling original, Cloner cloner) : base(original, cloner) { }
     39    public UniformRandomDiscreteSampling() {
    3940    }
    4041    public override IDeepCloneable Clone(Cloner cloner) {
    41       return new UniformRandomSampling(this, cloner);
     42      return new UniformRandomDiscreteSampling(this, cloner);
    4243    }
    4344
    44     public RealVector[] GetSamples(int noSamples, RealVector[] existingSamples, RealVectorEncoding encoding, IRandom random) {
    45       var res = new RealVector[noSamples];
     45    public IntegerVector[] GetSamples(int noSamples, IntegerVector[] existingSamples, IEncoding encoding, IRandom random) {
     46      var enc = encoding as IntegerVectorEncoding;
     47      var res = new IntegerVector[noSamples];
    4648      for (var i = 0; i < noSamples; i++) {
    47         var r = new RealVector(encoding.Length);
     49        var r = new IntegerVector(enc.Length);
    4850        res[i] = r;
    49         for (var j = 0; j < encoding.Length; j++) {
    50           var b = j % encoding.Bounds.Rows;
    51           r[j] = UniformRandom(encoding.Bounds[b, 0], encoding.Bounds[b, 1], random);
     51        for (var j = 0; j < enc.Length; j++) {
     52          var b = j % enc.Bounds.Rows;
     53          r[j] = UniformRandom(enc.Bounds[b, 0], enc.Bounds[b, 1], random);
    5254        }
    5355      }
    5456      return res;
    5557    }
    56     private static double UniformRandom(double min, double max, IRandom rand) {
    57       return rand.NextDouble() * (max - min) + min;
     58    private static int UniformRandom(int min, int max, IRandom rand) {
     59      return rand.Next(min, max + 1);  //TODO check wether max is inclusive or exclusive
    5860    }
    5961  }
  • branches/EfficientGlobalOptimization/HeuristicLab.Algorithms.EGO/SamplingMethods/UniformRandomSampling.cs

    r15064 r15343  
    2222using HeuristicLab.Common;
    2323using HeuristicLab.Core;
     24using HeuristicLab.Optimization;
    2425using HeuristicLab.Encodings.RealVectorEncoding;
    2526using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
     
    3031  [StorableClass]
    3132  [Item("UniformRandomSampling", "A uniform random sampling strategy for real valued optimization")]
    32   public class UniformRandomSampling : ParameterizedNamedItem, IInitialSampling {
     33  public class UniformRandomSampling : ParameterizedNamedItem, IInitialSampling<RealVector> {
    3334
    3435    #region HL-Constructors, Serialization and Cloning
     
    4243    }
    4344
    44     public RealVector[] GetSamples(int noSamples, RealVector[] existingSamples, RealVectorEncoding encoding, IRandom random) {
     45    public RealVector[] GetSamples(int noSamples, RealVector[] existingSamples, IEncoding encoding, IRandom random) {
     46      var enc = encoding as RealVectorEncoding;
    4547      var res = new RealVector[noSamples];
    4648      for (var i = 0; i < noSamples; i++) {
    47         var r = new RealVector(encoding.Length);
     49        var r = new RealVector(enc.Length);
    4850        res[i] = r;
    49         for (var j = 0; j < encoding.Length; j++) {
    50           var b = j % encoding.Bounds.Rows;
    51           r[j] = UniformRandom(encoding.Bounds[b, 0], encoding.Bounds[b, 1], random);
     51        for (var j = 0; j < enc.Length; j++) {
     52          var b = j % enc.Bounds.Rows;
     53          r[j] = UniformRandom(enc.Bounds[b, 0], enc.Bounds[b, 1], random);
    5254        }
    5355      }
Note: See TracChangeset for help on using the changeset viewer.