Index: /branches/HeuristicLab.Problems.GaussianProcessTuning/HeuristicLab.Problems.Instances.DataAnalysis.GaussianProcessRegression/GaussianProcessPolyTen.cs
===================================================================
--- /branches/HeuristicLab.Problems.GaussianProcessTuning/HeuristicLab.Problems.Instances.DataAnalysis.GaussianProcessRegression/GaussianProcessPolyTen.cs	(revision 8826)
+++ /branches/HeuristicLab.Problems.GaussianProcessTuning/HeuristicLab.Problems.Instances.DataAnalysis.GaussianProcessRegression/GaussianProcessPolyTen.cs	(revision 8826)
@@ -0,0 +1,124 @@
+﻿#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.Collections.Generic;
+using System.Linq;
+using HeuristicLab.Algorithms.DataAnalysis;
+using HeuristicLab.Data;
+using HeuristicLab.Random;
+
+namespace HeuristicLab.Problems.Instances.DataAnalysis {
+  public class GaussianProcessPolyTen : ArtificialRegressionDataDescriptor {
+
+    public override string Name {
+      get {
+        return "Gaussian Process Poly-10 y = GP(0, CovSEIso(X1)*CovSEIso(X2) + " +
+               "CovSEIso(X3)*CovSEIso(X4) + CovSEIso(X5)*CovSEIso(X6) + CovSEIso(X1)*CovSEIso(X7)*CovSEIso(X9) + CovSEIso(X3)*CovSEIso(X6)*CovSEIso(X10)";
+      }
+    }
+    public override string Description {
+      get { return ""; }
+    }
+    protected override string TargetVariable { get { return "Y"; } }
+    protected override string[] VariableNames { get { return new string[] { "X1", "X2", "X3", "X4", "X5", "X6", "X7", "X8", "X9", "X10", "Y" }; } }
+    protected override string[] AllowedInputVariables { get { return new string[] { "X1", "X2", "X3", "X4", "X5", "X6", "X7", "X8", "X9", "X10" }; } }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return 250; } }
+    protected override int TestPartitionStart { get { return 250; } }
+    protected override int TestPartitionEnd { get { return 500; } }
+
+    protected override List<List<double>> GenerateValues() {
+      var mt = new MersenneTwister(31415);
+      var normalRand = new NormalDistributedRandom(mt, 1, 1);
+
+      List<List<double>> data = new List<List<double>>();
+      for (int i = 0; i < AllowedInputVariables.Count(); i++) {
+        data.Add(ValueGenerator.GenerateUniformDistributedValues(TestPartitionEnd, -10, 10).ToList());
+      }
+
+
+      var hyp = (from i in Enumerable.Range(0, 12) // for each CovSEiso
+                 from j in Enumerable.Range(0, 2)  // for each parameter (length, scale)
+                 select normalRand.NextDouble())
+                 .Concat(new double[] { -5.0 }); // noise
+
+      var covarianceFunction = new CovarianceSum();
+      var t1 = new CovarianceProduct();
+      var m1 = new CovarianceMask();
+      m1.SelectedDimensionsParameter.Value = new IntArray(new int[] { 0 });
+      var m2 = new CovarianceMask();
+      m2.SelectedDimensionsParameter.Value = new IntArray(new int[] { 1 });
+      t1.Factors.Add(m1);
+      t1.Factors.Add(m2);
+
+      var t2 = new CovarianceProduct();
+      var m3 = new CovarianceMask();
+      m3.SelectedDimensionsParameter.Value = new IntArray(new int[] { 2 });
+      var m4 = new CovarianceMask();
+      m4.SelectedDimensionsParameter.Value = new IntArray(new int[] { 3 });
+      t2.Factors.Add(m3);
+      t2.Factors.Add(m4);
+
+      var t3 = new CovarianceProduct();
+      var m5 = new CovarianceMask();
+      m5.SelectedDimensionsParameter.Value = new IntArray(new int[] { 4 });
+      var m6 = new CovarianceMask();
+      m6.SelectedDimensionsParameter.Value = new IntArray(new int[] { 5 });
+      t3.Factors.Add(m5);
+      t3.Factors.Add(m6);
+
+      var t4 = new CovarianceProduct();
+      var m1_ = new CovarianceMask();
+      m1_.SelectedDimensionsParameter.Value = new IntArray(new int[] { 0 });
+      var m7 = new CovarianceMask();
+      m7.SelectedDimensionsParameter.Value = new IntArray(new int[] { 6 });
+      var m9 = new CovarianceMask();
+      m9.SelectedDimensionsParameter.Value = new IntArray(new int[] { 8 });
+      t4.Factors.Add(m1_);
+      t4.Factors.Add(m7);
+      t4.Factors.Add(m9);
+
+      var t5 = new CovarianceProduct();
+      var m3_ = new CovarianceMask();
+      m3_.SelectedDimensionsParameter.Value = new IntArray(new int[] { 2 });
+      var m6_ = new CovarianceMask();
+      m6_.SelectedDimensionsParameter.Value = new IntArray(new int[] { 5 });
+      var m10 = new CovarianceMask();
+      m10.SelectedDimensionsParameter.Value = new IntArray(new int[] { 9 });
+      t5.Factors.Add(m3);
+      t5.Factors.Add(m6_);
+      t5.Factors.Add(m10);
+
+      covarianceFunction.Terms.Add(t1);
+      covarianceFunction.Terms.Add(t2);
+      covarianceFunction.Terms.Add(t3);
+      covarianceFunction.Terms.Add(t4);
+      covarianceFunction.Terms.Add(t5);
+
+      covarianceFunction.SetParameter(hyp.ToArray());
+
+      var target = Util.SampleGaussianProcess(mt, covarianceFunction, data);
+      data.Add(target);
+
+      return data;
+    }
+  }
+}
Index: /branches/HeuristicLab.Problems.GaussianProcessTuning/HeuristicLab.Problems.Instances.DataAnalysis.GaussianProcessRegression/GaussianProcessSEIso.cs
===================================================================
--- /branches/HeuristicLab.Problems.GaussianProcessTuning/HeuristicLab.Problems.Instances.DataAnalysis.GaussianProcessRegression/GaussianProcessSEIso.cs	(revision 8826)
+++ /branches/HeuristicLab.Problems.GaussianProcessTuning/HeuristicLab.Problems.Instances.DataAnalysis.GaussianProcessRegression/GaussianProcessSEIso.cs	(revision 8826)
@@ -0,0 +1,67 @@
+﻿#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 GaussianProcessSEIso : ArtificialRegressionDataDescriptor {
+
+    public override string Name {
+      get {
+        return "Gaussian Process SE iso";
+      }
+    }
+    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 100; } }
+    protected override int TestPartitionStart { get { return 100; } }
+    protected override int TestPartitionEnd { get { return 200; } }
+
+    protected override List<List<double>> GenerateValues() {
+
+      List<List<double>> data = new List<List<double>>();
+      for (int i = 0; i < AllowedInputVariables.Count(); i++) {
+        data.Add(ValueGenerator.GenerateSteps(0, 0.99, 0.01).ToList());
+        data[i].AddRange(ValueGenerator.GenerateSteps(0.005, 1, 0.01).ToList());
+      }
+
+      var covarianceFunction = new CovarianceSum();
+      covarianceFunction.Terms.Add(new CovarianceSquaredExponentialIso());
+      covarianceFunction.Terms.Add(new CovarianceNoise());
+      covarianceFunction.SetParameter(new double[] { Math.Log(0.1), Math.Log(Math.Sqrt(1)), Math.Log(Math.Sqrt(0.01)) });
+
+      var mt = new MersenneTwister(31415);
+      var target = Util.SampleGaussianProcess(mt, covarianceFunction, data);
+      data.Add(target);
+
+      return data;
+    }
+  }
+}
Index: /branches/HeuristicLab.Problems.GaussianProcessTuning/HeuristicLab.Problems.Instances.DataAnalysis.GaussianProcessRegression/GaussianProcessSEIsoDependentNoise.cs
===================================================================
--- /branches/HeuristicLab.Problems.GaussianProcessTuning/HeuristicLab.Problems.Instances.DataAnalysis.GaussianProcessRegression/GaussianProcessSEIsoDependentNoise.cs	(revision 8826)
+++ /branches/HeuristicLab.Problems.GaussianProcessTuning/HeuristicLab.Problems.Instances.DataAnalysis.GaussianProcessRegression/GaussianProcessSEIsoDependentNoise.cs	(revision 8826)
@@ -0,0 +1,71 @@
+﻿#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 GaussianProcessSEIsoDependentNoise : ArtificialRegressionDataDescriptor {
+
+    public override string Name {
+      get {
+        return "Gaussian Process SE iso with dependent noise";
+      }
+    }
+    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 100; } }
+    protected override int TestPartitionStart { get { return 100; } }
+    protected override int TestPartitionEnd { get { return 200; } }
+
+    protected override List<List<double>> GenerateValues() {
+
+      List<List<double>> data = new List<List<double>>();
+      for (int i = 0; i < AllowedInputVariables.Count(); i++) {
+        data.Add(ValueGenerator.GenerateSteps(0, 0.99, 0.01).ToList());
+        data[i].AddRange(ValueGenerator.GenerateSteps(0.005, 1, 0.01).ToList());
+      }
+
+      var covarianceFunction = new CovarianceSum();
+      covarianceFunction.Terms.Add(new CovarianceSquaredExponentialIso());
+      var prod = new CovarianceProduct();
+      prod.Factors.Add(new CovarianceSquaredExponentialIso());
+      prod.Factors.Add(new CovarianceNoise());
+      covarianceFunction.Terms.Add(prod);
+      covarianceFunction.Terms.Add(new CovarianceNoise());
+      covarianceFunction.SetParameter(new double[] { Math.Log(0.1), Math.Log(Math.Sqrt(1)), Math.Log(0.5), Math.Log(Math.Sqrt(1)), Math.Log(Math.Sqrt(0.1)), Math.Log(Math.Sqrt(0.01)) });
+
+      var mt = new MersenneTwister(31415);
+      var target = Util.SampleGaussianProcess(mt, covarianceFunction, data);
+      data.Add(target);
+
+      return data;
+    }
+  }
+}
Index: /branches/HeuristicLab.Problems.GaussianProcessTuning/HeuristicLab.Problems.Instances.DataAnalysis.GaussianProcessRegression/Util.cs
===================================================================
--- /branches/HeuristicLab.Problems.GaussianProcessTuning/HeuristicLab.Problems.Instances.DataAnalysis.GaussianProcessRegression/Util.cs	(revision 8826)
+++ /branches/HeuristicLab.Problems.GaussianProcessTuning/HeuristicLab.Problems.Instances.DataAnalysis.GaussianProcessRegression/Util.cs	(revision 8826)
@@ -0,0 +1,65 @@
+﻿#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.Core;
+using HeuristicLab.Random;
+
+namespace HeuristicLab.Problems.Instances.DataAnalysis {
+  public class Util {
+
+
+
+    public static List<double> SampleGaussianProcess(IRandom random, ICovarianceFunction covFunction, List<List<double>> data) {
+
+      double[,] x = new double[data[0].Count, 1];
+      for (int i = 0; i < x.GetLength(0); i++)
+        for (int j = 0; j < x.GetLength(1); j++)
+          x[i, j] = data[j][i];
+      double[,] K = new double[x.GetLength(0), x.GetLength(0)];
+      for (int i = 0; i < K.GetLength(0); i++)
+        for (int j = i; j < K.GetLength(1); j++)
+          K[i, j] = covFunction.GetCovariance(x, i, j, null);
+
+      var normalRand = new NormalDistributedRandom(random, 0, 1);
+
+      if (!alglib.spdmatrixcholesky(ref K, K.GetLength(0), true)) throw new ArgumentException();
+      var r = (from i in Enumerable.Range(0, K.GetLength(0))
+               select normalRand.NextDouble()).ToArray();
+
+      List<double> target = new List<double>(K.GetLength(0));
+      for (int i = 0; i < K.GetLength(0); i++) {
+        double s = 0.0;
+        for (int j = K.GetLength(0) - 1; j >= 0; j--) {
+
+          s += K[j, i] * r[j];
+        }
+
+        target.Add(s);
+      }
+
+      return target;
+    }
+  }
+}
Index: /branches/HeuristicLab.Problems.GaussianProcessTuning/HeuristicLab.Problems.Instances.DataAnalysis.GaussianProcessRegression/VariousInstanceProvider.cs
===================================================================
--- /branches/HeuristicLab.Problems.GaussianProcessTuning/HeuristicLab.Problems.Instances.DataAnalysis.GaussianProcessRegression/VariousInstanceProvider.cs	(revision 8826)
+++ /branches/HeuristicLab.Problems.GaussianProcessTuning/HeuristicLab.Problems.Instances.DataAnalysis.GaussianProcessRegression/VariousInstanceProvider.cs	(revision 8826)
@@ -0,0 +1,54 @@
+﻿#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;
+
+namespace HeuristicLab.Problems.Instances.DataAnalysis {
+  public class VariousInstanceProvider : ArtificialRegressionInstanceProvider {
+    public override string Name {
+      get { return "Various Benchmark Problems"; }
+    }
+    public override string Description {
+      get { return ""; }
+    }
+    public override Uri WebLink {
+      get { return new Uri("http://dev.heuristiclab.com/trac/hl/core/wiki/AdditionalMaterial"); }
+    }
+    public override string ReferencePublication {
+      get { return ""; }
+    }
+
+    public override IEnumerable<IDataDescriptor> GetDataDescriptors() {
+      List<IDataDescriptor> descriptorList = new List<IDataDescriptor>();
+      descriptorList.Add(new BreimanOne());
+      descriptorList.Add(new FriedmanOne());
+      descriptorList.Add(new FriedmanTwo());
+      descriptorList.Add(new PolyTen());
+      descriptorList.Add(new GaussianProcessPolyTen());
+      descriptorList.Add(new GaussianProcessSEIso());
+      descriptorList.Add(new GaussianProcessSEIsoDependentNoise());
+      descriptorList.Add(new SpatialCoevolution());
+      return descriptorList;
+    }
+  }
+}
+
