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

File:
1 edited

Legend:

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

    r15338 r15343  
    2727using HeuristicLab.Data;
    2828using HeuristicLab.Encodings.RealVectorEncoding;
     29using HeuristicLab.Encodings.IntegerVectorEncoding;
    2930using HeuristicLab.Optimization;
    3031using HeuristicLab.Problems.DataAnalysis;
     
    5455      return model.GetEstimatedValues(dataset, new[] { 0 }).First();
    5556    }
     57    public static double GetEstimation(this IRegressionModel model, IntegerVector r) {
     58      var dataset = GetDataSet(new[] { new Tuple<IntegerVector, double>(r, 0.0) });
     59      return model.GetEstimatedValues(dataset, new[] { 0 }).First();
     60    }
    5661    public static double GetVariance(this IConfidenceRegressionModel model, RealVector r) {
    5762      var dataset = GetDataSet(new[] { new Tuple<RealVector, double>(r, 0.0) }, false);
     63      return model.GetEstimatedVariances(dataset, new[] { 0 }).First();
     64    }
     65    public static double GetVariance(this IConfidenceRegressionModel model, IntegerVector r) {
     66      var dataset = GetDataSet(new[] { new Tuple<IntegerVector, double>(r, 0.0) });
    5867      return model.GetEstimatedVariances(dataset, new[] { 0 }).First();
    5968    }
     
    6170      return dataset.GetDoubleValue("input" + j, i);
    6271    }
     72    public static RealVector ToRealVector(this IntegerVector vector) {
     73      return new RealVector(vector.Select(x => (double)x).ToArray());
     74    }
     75
    6376
    6477    //Sub-ALgorithms
     
    8093    public static Dataset GetDataSet(IReadOnlyList<Tuple<RealVector, double>> samples, bool removeDuplicates) {
    8194      if (removeDuplicates) samples = RemoveDuplicates(samples); //TODO duplicate removal leads to incorrect uncertainty values in models
     95      var dimensions = samples[0].Item1.Length + 1;
     96      var data = new double[samples.Count, dimensions];
     97      var names = new string[dimensions - 1];
     98      for (var i = 0; i < names.Length; i++) names[i] = "input" + i;
     99      for (var j = 0; j < samples.Count; j++) {
     100        for (var i = 0; i < names.Length; i++) data[j, i] = samples[j].Item1[i];
     101        data[j, dimensions - 1] = samples[j].Item2;
     102      }
     103      return new Dataset(names.Concat(new[] { "output" }).ToArray(), data);
     104    }
     105    //overload for IntegerVectors does not support duplicate removal
     106    public static Dataset GetDataSet(IReadOnlyList<Tuple<IntegerVector, double>> samples) {
    82107      var dimensions = samples[0].Item1.Length + 1;
    83108      var data = new double[samples.Count, dimensions];
Note: See TracChangeset for help on using the changeset viewer.