Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
01/29/14 14:34:44 (10 years ago)
Author:
gkronber
Message:

#1967 added Cholesky decomposition for Toeplitz matrices to allow sampling from one-dimensional Gaussian processes

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/HeuristicLab.Problems.GaussianProcessTuning/GaussianProcessDemo/Form1.cs

    r9387 r10422  
    44using System.Data;
    55using System.Drawing;
     6using System.Globalization;
    67using System.Linq;
    78using System.Text;
     
    2829
    2930      var sum = new CovarianceSum();
    30       var t = new CovarianceNeuralNetwork();
     31      var t = new CovarianceSquaredExponentialIso();
    3132      sum.Terms.Add(t);
    32       sum.Terms.Add(new CovarianceNoise());
     33      //sum.Terms.Add(new CovarianceNoise());
    3334      this.covFunction = sum;
    3435      UpdateSliders();
     
    5253
    5354    private void InitData() {
    54       int n = 200;
     55      int n = 5000;
    5556      data = new List<List<double>>();
    56       data.Add(ValueGenerator.GenerateSteps(0, 1, 1.0 / n).ToList());
     57      data.Add(Enumerable.Range(0, n).Select(e => e / 200.0).ToList());
    5758
    5859      // sample from GP
    5960      var normalRand = new NormalDistributedRandom(random, 0, 1);
    60       alpha = (from i in Enumerable.Range(0, n + 1)
     61      alpha = (from i in Enumerable.Range(0, n)
    6162               select normalRand.NextDouble()).ToArray();
    6263    }
     
    7273      }
    7374
    74       var trainingData = new List<List<double>>();
    75       var trainingIndices = RandomEnumerable.SampleRandomWithoutRepetition(Enumerable.Range(0, y.Count), random, 10);
    76       var trainingY = trainingIndices.Select(i => y[i]).ToList();
    77       var trainingX = trainingIndices.Select(i => data[0][i]).ToList();
    78       trainingData.Add(trainingY);
    79       trainingData.Add(trainingX);
    80      
    81       //chart1.Series[2].Points.Clear();
    82       //foreach (var p in trainingY.Zip(trainingX, (t, x) => new { t, x })) {
    83       //  chart1.Series[2].Points.AddXY(p.x, p.t);
     75      //var trainingData = new List<List<double>>();
     76      //var trainingIndices = RandomEnumerable.SampleRandomWithoutRepetition(Enumerable.Range(0, y.Count), random, 10);
     77      //var trainingY = trainingIndices.Select(i => y[i]).ToList();
     78      //var trainingX = trainingIndices.Select(i => data[0][i]).ToList();
     79      //trainingData.Add(trainingY);
     80      //trainingData.Add(trainingX);
     81      //
     82      ////chart1.Series[2].Points.Clear();
     83      ////foreach (var p in trainingY.Zip(trainingX, (t, x) => new { t, x })) {
     84      ////  chart1.Series[2].Points.AddXY(p.x, p.t);
     85      ////}
     86      //
     87      //var allData = new List<List<double>>();
     88      //allData.Add(y);
     89      //allData.Add(data[0]);
     90      //var variableNames = new string[] { "y", "x" };
     91      //var fullDataSet = new Dataset(variableNames, allData);
     92      //var trainingDataSet = new Dataset(variableNames, trainingData);
     93      //var trainingRows = Enumerable.Range(0, trainingIndices.Count());
     94      //var fullRows = Enumerable.Range(0, data[0].Count);
     95      //var correctModel = new GaussianProcessModel(fullDataSet, variableNames.First(), variableNames.Skip(1), fullRows, hyp, new MeanZero(),
     96      //                                          (ICovarianceFunction)covFunction.Clone());
     97      //var yPred = correctModel.GetEstimatedValues(fullDataSet, fullRows);
     98      //chart1.Series[1].Points.Clear();
     99      //foreach (var p in yPred.Zip(data[0], (t, x) => new { t, x })) {
     100      //  chart1.Series[1].Points.AddXY(p.x, p.t);
    84101      //}
    85 
    86       var allData = new List<List<double>>();
    87       allData.Add(y);
    88       allData.Add(data[0]);
    89       var variableNames = new string[] { "y", "x" };
    90       var fullDataSet = new Dataset(variableNames, allData);
    91       var trainingDataSet = new Dataset(variableNames, trainingData);
    92       var trainingRows = Enumerable.Range(0, trainingIndices.Count());
    93       var fullRows = Enumerable.Range(0, data[0].Count);
    94       var correctModel = new GaussianProcessModel(fullDataSet, variableNames.First(), variableNames.Skip(1), fullRows, hyp, new MeanZero(),
    95                                                 (ICovarianceFunction)covFunction.Clone());
    96       var yPred = correctModel.GetEstimatedValues(fullDataSet, fullRows);
    97       chart1.Series[1].Points.Clear();
    98       foreach (var p in yPred.Zip(data[0], (t, x) => new { t, x })) {
    99         chart1.Series[1].Points.AddXY(p.x, p.t);
    100       }
    101102    }
    102103
     
    124125    private string DataToText() {
    125126      var str = new StringBuilder();
    126       foreach (var p in chart1.Series[1].Points) {
    127         str.AppendLine(p.XValue + "\t" + p.YValues.First());
     127      foreach (var p in chart1.Series[0].Points) {
     128        str.AppendLine(p.XValue.ToString(CultureInfo.InvariantCulture) + "\t" + p.YValues.First().ToString(CultureInfo.InvariantCulture));
    128129      }
    129130      return str.ToString();
Note: See TracChangeset for help on using the changeset viewer.