Index: branches/HeuristicLab.Problems.GaussianProcessTuning/HeuristicLab.Problems.Instances.DataAnalysis.GaussianProcessRegression/GaussianProcessRegressionDemo.cs
===================================================================
--- branches/HeuristicLab.Problems.GaussianProcessTuning/HeuristicLab.Problems.Instances.DataAnalysis.GaussianProcessRegression/GaussianProcessRegressionDemo.cs	(revision 9338)
+++ branches/HeuristicLab.Problems.GaussianProcessTuning/HeuristicLab.Problems.Instances.DataAnalysis.GaussianProcessRegression/GaussianProcessRegressionDemo.cs	(revision 9338)
@@ -0,0 +1,79 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2012 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using HeuristicLab.Algorithms.DataAnalysis;
+using HeuristicLab.Random;
+
+namespace HeuristicLab.Problems.Instances.DataAnalysis {
+  public class GaussianProcessRegressionDemo : ArtificialRegressionDataDescriptor {
+
+    public override string Name {
+      get { return "Gaussian Process Demo " + name; }
+    }
+    public override string Description {
+      get { return ""; }
+    }
+    protected override string TargetVariable { get { return "Y"; } }
+    protected override string[] VariableNames { get { return new string[] { "X1","Y" }; } }
+    protected override string[] AllowedInputVariables { get { return new string[] { "X1"}; } }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return 30; } }
+    protected override int TestPartitionStart { get { return 30; } }
+    protected override int TestPartitionEnd { get { return 230; } }
+
+    private ParameterizedCovarianceFunction cov;
+    private string name;
+
+    public GaussianProcessRegressionDemo(string name, ICovarianceFunction covarianceFunction, double[] hyp) {
+      this.name = name;
+      cov = covarianceFunction.GetParameterizedCovarianceFunction(hyp, null);
+    }
+
+    protected override List<List<double>> GenerateValues() {
+      List<List<double>> trainingData = new List<List<double>>() {
+        ValueGenerator.GenerateUniformDistributedValues(30,0, 1).ToList(),
+      };
+
+      List<List<double>> testData = new List<List<double>>() {
+        ValueGenerator.GenerateSteps(-0.1, 1.1, 1.2 / 200).ToList(),
+      };
+
+      var trainingComb = ValueGenerator.GenerateAllCombinationsOfValuesInLists(trainingData).ToList<IEnumerable<double>>();
+      var testComb = ValueGenerator.GenerateAllCombinationsOfValuesInLists(testData).ToList<IEnumerable<double>>();
+
+      List<List<double>> data = new List<List<double>>();
+      for (int i = 0; i < AllowedInputVariables.Count(); i++) {
+        data.Add(trainingComb[i].ToList());
+        data[i].AddRange(testComb[i]);
+      }
+
+      var mt = new MersenneTwister();
+
+      var target = Util.SampleGaussianProcess(mt, cov, data);
+      data.Add(target);
+
+      return data;
+    }
+  }
+}
Index: branches/HeuristicLab.Problems.GaussianProcessTuning/HeuristicLab.Problems.Instances.DataAnalysis.GaussianProcessRegression/Instances.DataAnalysis.GaussianProcessRegression-3.3.csproj
===================================================================
--- branches/HeuristicLab.Problems.GaussianProcessTuning/HeuristicLab.Problems.Instances.DataAnalysis.GaussianProcessRegression/Instances.DataAnalysis.GaussianProcessRegression-3.3.csproj	(revision 9214)
+++ branches/HeuristicLab.Problems.GaussianProcessTuning/HeuristicLab.Problems.Instances.DataAnalysis.GaussianProcessRegression/Instances.DataAnalysis.GaussianProcessRegression-3.3.csproj	(revision 9338)
@@ -178,4 +178,5 @@
   </ItemGroup>
   <ItemGroup>
+    <Compile Include="GaussianProcessRegressionDemo.cs" />
     <Compile Include="GaussianProcess2dPeriodic.cs" />
     <Compile Include="GaussianProcessRegressionInstance1D.cs" />
Index: branches/HeuristicLab.Problems.GaussianProcessTuning/HeuristicLab.Problems.Instances.DataAnalysis.GaussianProcessRegression/VariousInstanceProvider.cs
===================================================================
--- branches/HeuristicLab.Problems.GaussianProcessTuning/HeuristicLab.Problems.Instances.DataAnalysis.GaussianProcessRegression/VariousInstanceProvider.cs	(revision 9214)
+++ branches/HeuristicLab.Problems.GaussianProcessTuning/HeuristicLab.Problems.Instances.DataAnalysis.GaussianProcessRegression/VariousInstanceProvider.cs	(revision 9338)
@@ -135,4 +135,36 @@
       {
         var cov = new CovarianceSum();
+        cov.Terms.Add(new CovarianceSquaredExponentialIso());
+        cov.Terms.Add(new CovarianceNoise());
+        var hyp = new double[] { -2.5, 0, -7 };
+        descriptorList.Add(new GaussianProcessRegressionDemo("1D: SE Noise", cov, hyp));
+      }
+      {
+        var cov = new CovarianceSum();
+        cov.Terms.Add(new CovarianceRationalQuadraticIso());
+        cov.Terms.Add(new CovarianceNoise());
+        var hyp = new double[] { -2.5, 0, -1, -7 };
+        descriptorList.Add(new GaussianProcessRegressionDemo("1D: RQ Noise", cov, hyp));
+      }
+      {
+        var cov = new CovarianceSum();
+        var t = new CovarianceMaternIso();
+        t.DParameter.Value = t.DParameter.ValidValues.First(x => x.Value == 3);
+        cov.Terms.Add(t);
+        cov.Terms.Add(new CovarianceNoise());
+        var hyp = new double[] { -1.5, 0, -7 };
+        descriptorList.Add(new GaussianProcessRegressionDemo("1D: Matern3 Noise", cov, hyp));
+      }
+      {
+        var cov = new CovarianceSum();
+        var t = new CovariancePeriodic();
+        t.PeriodParameter.Value = new DoubleValue(0.3);
+        cov.Terms.Add(t);
+        cov.Terms.Add(new CovarianceNoise());
+        var hyp = new double[] { 0, 0, -7 };
+        descriptorList.Add(new GaussianProcessRegressionDemo("1D: Periodic Noise", cov, hyp));
+      }
+      {
+        var cov = new CovarianceSum();
         cov.Terms.Add(new CovarianceRationalQuadraticIso());
         cov.Terms.Add(new CovarianceNoise());
