Index: /branches/HeuristicLab.Problems.GaussianProcessTuning/GaussianProcessDemo/Form1.cs
===================================================================
--- /branches/HeuristicLab.Problems.GaussianProcessTuning/GaussianProcessDemo/Form1.cs	(revision 9211)
+++ /branches/HeuristicLab.Problems.GaussianProcessTuning/GaussianProcessDemo/Form1.cs	(revision 9212)
@@ -27,5 +27,4 @@
 
       var sum = new CovarianceSum();
-      sum.Terms.Add(new CovarianceSquaredExponentialIso());
       sum.Terms.Add(new CovariancePeriodic());
       sum.Terms.Add(new CovarianceNoise());
@@ -50,5 +49,5 @@
 
     private void InitData() {
-      int n = 100;
+      int n = 20;
       data = new List<List<double>>();
       data.Add(ValueGenerator.GenerateSteps(0, 1, 1.0 / n).ToList());
Index: /branches/HeuristicLab.Problems.GaussianProcessTuning/GaussianProcessDemo/GaussianProcessDemo.csproj
===================================================================
--- /branches/HeuristicLab.Problems.GaussianProcessTuning/GaussianProcessDemo/GaussianProcessDemo.csproj	(revision 9211)
+++ /branches/HeuristicLab.Problems.GaussianProcessTuning/GaussianProcessDemo/GaussianProcessDemo.csproj	(revision 9212)
@@ -31,4 +31,24 @@
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
+    <DebugSymbols>true</DebugSymbols>
+    <OutputPath>bin\x86\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <DebugType>full</DebugType>
+    <PlatformTarget>x86</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
+    <Prefer32Bit>true</Prefer32Bit>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">
+    <OutputPath>bin\x86\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <Optimize>true</Optimize>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>x86</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
+    <Prefer32Bit>true</Prefer32Bit>
   </PropertyGroup>
   <ItemGroup>
Index: /branches/HeuristicLab.Problems.GaussianProcessTuning/HeuristicLab.Problems.GaussianProcessTuning.sln
===================================================================
--- /branches/HeuristicLab.Problems.GaussianProcessTuning/HeuristicLab.Problems.GaussianProcessTuning.sln	(revision 9211)
+++ /branches/HeuristicLab.Problems.GaussianProcessTuning/HeuristicLab.Problems.GaussianProcessTuning.sln	(revision 9212)
@@ -173,5 +173,6 @@
 		{D18AE898-F600-4754-B3B4-C0C7A364F973}.Release|Mixed Platforms.Build.0 = Release|Any CPU
 		{D18AE898-F600-4754-B3B4-C0C7A364F973}.Release|x64.ActiveCfg = Release|Any CPU
-		{D18AE898-F600-4754-B3B4-C0C7A364F973}.Release|x86.ActiveCfg = Release|Any CPU
+		{D18AE898-F600-4754-B3B4-C0C7A364F973}.Release|x86.ActiveCfg = Release|x86
+		{D18AE898-F600-4754-B3B4-C0C7A364F973}.Release|x86.Build.0 = Release|x86
 		{D18AE898-F600-4754-B3B4-C0C7A364F973}.ReleaseBuild|Any CPU.ActiveCfg = Release|Any CPU
 		{D18AE898-F600-4754-B3B4-C0C7A364F973}.ReleaseBuild|Any CPU.Build.0 = Release|Any CPU
Index: /branches/HeuristicLab.Problems.GaussianProcessTuning/HeuristicLab.Problems.GaussianProcessTuning/GaussianProcessTuning.csproj
===================================================================
--- /branches/HeuristicLab.Problems.GaussianProcessTuning/HeuristicLab.Problems.GaussianProcessTuning/GaussianProcessTuning.csproj	(revision 9211)
+++ /branches/HeuristicLab.Problems.GaussianProcessTuning/HeuristicLab.Problems.GaussianProcessTuning/GaussianProcessTuning.csproj	(revision 9212)
@@ -71,8 +71,4 @@
   </PropertyGroup>
   <ItemGroup>
-    <Reference Include="HeuristicLab.ALGLIB-3.6.0">
-      <HintPath>..\..\..\trunk\sources\bin\HeuristicLab.ALGLIB-3.6.0.dll</HintPath>
-      <Private>False</Private>
-    </Reference>
     <Reference Include="HeuristicLab.Algorithms.DataAnalysis-3.4">
       <HintPath>..\..\..\trunk\sources\bin\HeuristicLab.Algorithms.DataAnalysis-3.4.dll</HintPath>
@@ -91,14 +87,6 @@
       <Private>False</Private>
     </Reference>
-    <Reference Include="HeuristicLab.Common.Resources-3.3">
-      <HintPath>..\..\..\trunk\sources\bin\HeuristicLab.Common.Resources-3.3.dll</HintPath>
-      <Private>False</Private>
-    </Reference>
     <Reference Include="HeuristicLab.Core-3.3">
       <HintPath>..\..\..\trunk\sources\bin\HeuristicLab.Core-3.3.dll</HintPath>
-      <Private>False</Private>
-    </Reference>
-    <Reference Include="HeuristicLab.Core.Views-3.3">
-      <HintPath>..\..\..\trunk\sources\bin\HeuristicLab.Core.Views-3.3.dll</HintPath>
       <Private>False</Private>
     </Reference>
@@ -111,16 +99,4 @@
       <Private>False</Private>
     </Reference>
-    <Reference Include="HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Views-3.4">
-      <HintPath>..\..\..\trunk\sources\bin\HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Views-3.4.dll</HintPath>
-      <Private>False</Private>
-    </Reference>
-    <Reference Include="HeuristicLab.MainForm-3.3">
-      <HintPath>..\..\..\trunk\sources\bin\HeuristicLab.MainForm-3.3.dll</HintPath>
-      <Private>False</Private>
-    </Reference>
-    <Reference Include="HeuristicLab.MainForm.WindowsForms-3.3">
-      <HintPath>..\..\..\trunk\sources\bin\HeuristicLab.MainForm.WindowsForms-3.3.dll</HintPath>
-      <Private>False</Private>
-    </Reference>
     <Reference Include="HeuristicLab.Operators-3.3">
       <HintPath>..\..\..\trunk\sources\bin\HeuristicLab.Operators-3.3.dll</HintPath>
@@ -129,8 +105,4 @@
     <Reference Include="HeuristicLab.Optimization-3.3">
       <HintPath>..\..\..\trunk\sources\bin\HeuristicLab.Optimization-3.3.dll</HintPath>
-      <Private>False</Private>
-    </Reference>
-    <Reference Include="HeuristicLab.Optimization.Operators-3.3">
-      <HintPath>..\..\..\trunk\sources\bin\HeuristicLab.Optimization.Operators-3.3.dll</HintPath>
       <Private>False</Private>
     </Reference>
@@ -151,12 +123,4 @@
       <Private>False</Private>
     </Reference>
-    <Reference Include="HeuristicLab.Problems.DataAnalysis.Symbolic-3.4">
-      <HintPath>..\..\..\trunk\sources\bin\HeuristicLab.Problems.DataAnalysis.Symbolic-3.4.dll</HintPath>
-      <Private>False</Private>
-    </Reference>
-    <Reference Include="HeuristicLab.Problems.DataAnalysis.Symbolic.Regression-3.4">
-      <HintPath>..\..\..\trunk\sources\bin\HeuristicLab.Problems.DataAnalysis.Symbolic.Regression-3.4.dll</HintPath>
-      <Private>False</Private>
-    </Reference>
     <Reference Include="HeuristicLab.Random-3.3">
       <HintPath>..\..\..\trunk\sources\bin\HeuristicLab.Random-3.3.dll</HintPath>
@@ -174,15 +138,8 @@
     <Reference Include="System.Core" />
     <Reference Include="System.Drawing" />
-    <Reference Include="System.Windows.Forms" />
-    <Reference Include="System.Xml.Linq" />
-    <Reference Include="System.Data.DataSetExtensions" />
-    <Reference Include="Microsoft.CSharp" />
-    <Reference Include="System.Data" />
-    <Reference Include="System.Xml" />
   </ItemGroup>
   <ItemGroup>
     <Compile Include="BestSolutionAnalyzer.cs" />
     <Compile Include="GaussianProcessRegressionModel.cs" />
-    <Compile Include="GaussianProcessModelView.designer.cs" />
     <Compile Include="Interpreter.cs">
       <SubType>Code</SubType>
@@ -196,15 +153,6 @@
     <Compile Include="Plugin.cs" />
     <Compile Include="Properties\AssemblyInfo.cs" />
-    <Compile Include="GaussianProcessModelView.cs">
-      <SubType>UserControl</SubType>
-    </Compile>
     <Compile Include="Symbols.cs" />
     <Compile Include="TreeNodes.cs" />
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="..\HeuristicLab.Algorithms.DataAnalysis.Experimental\HeuristicLab.Algorithms.DataAnalysis.Experimental.csproj">
-      <Project>{6142b24e-9c86-410b-a65a-1de65c8c2349}</Project>
-      <Name>HeuristicLab.Algorithms.DataAnalysis.Experimental</Name>
-    </ProjectReference>
   </ItemGroup>
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
Index: /branches/HeuristicLab.Problems.GaussianProcessTuning/HeuristicLab.Problems.GaussianProcessTuning/Grammar.cs
===================================================================
--- /branches/HeuristicLab.Problems.GaussianProcessTuning/HeuristicLab.Problems.GaussianProcessTuning/Grammar.cs	(revision 9211)
+++ /branches/HeuristicLab.Problems.GaussianProcessTuning/HeuristicLab.Problems.GaussianProcessTuning/Grammar.cs	(revision 9212)
@@ -65,4 +65,8 @@
       covMatern5.Name = "CovMatern5";
       var covPeriodic = new CovPeriodic();
+      var covPeriodic1 = new CovPeriodic(1.0);
+      covPeriodic1.Name = "CovPeriodic(1.0)";
+      var covPeriodicCO = new CovPeriodic(0.021817864467425927);
+      covPeriodicCO.Name = "CovPeriodicCO";
       var covNoise = new CovNoise();
       var covScale = new CovScale();
@@ -97,4 +101,6 @@
                             covMatern5,
                             covPeriodic,
+                            covPeriodic1,
+                            covPeriodicCO,
                             covNoise,
                             covScale, 
@@ -133,5 +139,5 @@
       }
 
-      foreach (var covFunctionSymbol in new ISymbol[] { covSum, covProd, covMask, covScale }) {
+      foreach (var covFunctionSymbol in new ISymbol[] { covSum, covProd, covScale }) {
         foreach (var covSymbol in covSymbols) {
           for (int i = 0; i < covFunctionSymbol.MaximumArity; i++) {
@@ -140,4 +146,27 @@
         }
       }
+
+      // mask
+      foreach (var covSymbol in new List<ISymbol>()
+                         {
+                            covConst, 
+                            covLin, 
+                            covLinArd, 
+                            covSeArd, 
+                            covSeIso, 
+                            covRQiso,
+                            covRQard,
+                            covMatern1,
+                            covMatern3,
+                            covMatern5,
+                            covPeriodic,
+                            covPeriodic1,
+                            covPeriodicCO,
+                         }) {
+        for (int i = 0; i < covMask.MaximumArity; i++) {
+          AddAllowedChildSymbol(covMask, covSymbol, i);
+        }
+      }
+
     }
 
Index: /branches/HeuristicLab.Problems.GaussianProcessTuning/HeuristicLab.Problems.GaussianProcessTuning/Interpreter.cs
===================================================================
--- /branches/HeuristicLab.Problems.GaussianProcessTuning/HeuristicLab.Problems.GaussianProcessTuning/Interpreter.cs	(revision 9211)
+++ /branches/HeuristicLab.Problems.GaussianProcessTuning/HeuristicLab.Problems.GaussianProcessTuning/Interpreter.cs	(revision 9212)
@@ -36,5 +36,5 @@
       gprAlg.GaussianProcessModelCreatorParameter.Value =
         gprAlg.GaussianProcessModelCreatorParameter.ValidValues.First(
-          v => v is TunedGaussianProcessRegressionModelCreator);
+          v => v is GaussianProcessRegressionModelCreator);
       gprAlg.MinimizationIterations = 50;
 
@@ -68,82 +68,4 @@
     }
 
-    /*
-    public void EvaluateGaussianProcessConfiguration(ISymbolicExpressionTree tree, IRegressionProblemData trainingData, Dataset testData, IEnumerable<int> testRows,
-      out double[] means, out double[] variances) {
-      string meanExpression, meanHyperParameter;
-      string covExpression, covHyperParameter;
-      string likFunction, likHyperParameter;
-      GetMeanFunction(tree, trainingData.AllowedInputVariables.Count(), out meanExpression, out meanHyperParameter);
-      GetCovFunction(tree, trainingData.AllowedInputVariables.Count(), out covExpression, out covHyperParameter);
-      GetLikelihoodFunction(tree, out likFunction, out likHyperParameter);
-
-      double[,] y = new double[trainingData.TrainingIndices.Count(), 1];
-      double[,] yImg = new double[trainingData.TrainingIndices.Count(), 1];
-
-      int r, c;
-      r = 0;
-      foreach (var e in trainingData.Dataset.GetDoubleValues(trainingData.TargetVariable, trainingData.TrainingIndices)) {
-        y[r++, 0] = e;
-      }
-      double[,] x = new double[y.Length, trainingData.AllowedInputVariables.Count()];
-      double[,] xImg = new double[y.Length, trainingData.AllowedInputVariables.Count()];
-      c = 0;
-      foreach (var allowedInput in trainingData.AllowedInputVariables) {
-        r = 0;
-        foreach (var e in trainingData.Dataset.GetDoubleValues(allowedInput, trainingData.TrainingIndices)) {
-          x[r++, c] = e;
-        }
-        c++;
-      }
-
-      double[,] xTest = new double[testRows.Count(), trainingData.AllowedInputVariables.Count()];
-      double[,] xTestImg = new double[testRows.Count(), trainingData.AllowedInputVariables.Count()];
-      c = 0;
-      foreach (var allowedInput in trainingData.AllowedInputVariables) {
-        r = 0;
-        foreach (var e in testData.GetDoubleValues(allowedInput, testRows)) {
-          xTest[r++, c] = e;
-        }
-        c++;
-      }
-
-      object oldX = null;
-      try {
-        oldX = MLApp.GetVariable("x", "base");
-      }
-      catch {
-      }
-      if (oldX == null || oldX is Missing || ((double[,])oldX).Length != x.Length) {
-        MLApp.PutFullMatrix("y", "base", y, yImg);
-        MLApp.PutFullMatrix("x", "base", x, xImg);
-      }
-      MLApp.PutFullMatrix("xTest", "base", xTest, xTestImg);
-      ExecuteMatlab("hyp0 = " + GetHyperParameterString(meanHyperParameter, covHyperParameter, likHyperParameter) + ";");
-      ExecuteMatlab("infFun =  " + GetInferenceMethodString(tree) + ";");
-      ExecuteMatlab("meanExpr = " + meanExpression + ";");
-      ExecuteMatlab("covExpr = " + covExpression + ";");
-      ExecuteMatlab("likExp = " + likFunction + ";");
-      ExecuteMatlab(
-        "try " +
-        "  hyp = minimize(hyp0,'gp', -50, infFun, meanExpr, covExpr, likExp, x, y);" +
-        "  [ymu, ys2, fmu, fs2] = gp(hyp, infFun, meanExpr, covExpr, likExp, x, y, xTest); " +
-        "catch " +
-        "  ymu = zeros(size(xTest, 1), 1); " +
-        "  ys2 = ones(size(xTest, 1), 1); " +
-        "end");
-      var meansMat = (double[,])MLApp.GetVariable("ymu", "base");
-      var variancesMat = (double[,])MLApp.GetVariable("ys2", "base");
-      means = new double[meansMat.GetLength(0)];
-      for (int i = 0; i < means.Length; i++)
-        means[i] = meansMat[i, 0];
-      variances = new double[variancesMat.GetLength(0)];
-      for (int i = 0; i < variances.Length; i++)
-        variances[i] = variancesMat[i, 0];
-    }
-    */
-    private string GetInferenceMethodString(ISymbolicExpressionTree tree) {
-      return "'infEP'";
-    }
-
     private IMeanFunction GetMeanFunction(ISymbolicExpressionTree tree) {
       return GetMeanFunction(tree.Root.GetSubtree(0).GetSubtree(0).GetSubtree(0));
@@ -153,35 +75,4 @@
       return GetCovFunction(tree.Root.GetSubtree(0).GetSubtree(0).GetSubtree(1));
     }
-
-
-    private void GetLikelihoodFunction(ISymbolicExpressionTree tree, out string expression, out string hyperParameter) {
-      var expressionBuilder = new StringBuilder();
-      var hyperParameterBuilder = new StringBuilder();
-      hyperParameterBuilder.Append("[");
-      GetLikelihoodFunction(tree.Root.GetSubtree(0).GetSubtree(0).GetSubtree(2), expressionBuilder,
-                                   hyperParameterBuilder);
-      hyperParameterBuilder.Append("]");
-      expression = expressionBuilder.ToString();
-      hyperParameter = hyperParameterBuilder.ToString();
-    }
-
-    private void GetLikelihoodFunction(ISymbolicExpressionTreeNode node, StringBuilder expressionBuilder, StringBuilder hyperParameterBuilder) {
-      if (node.Symbol is LikGauss) {
-        var likNode = node as LikGaussTreeNode;
-        expressionBuilder.Append("'likGauss'");
-        hyperParameterBuilder.Append(likNode.Sigma);
-      } else {
-        throw new ArgumentException("unknown likelihood function " + node.Symbol);
-      }
-    }
-
-    private string GetHyperParameterString(string meanHyp, string covHyp, string likHyp) {
-      return "struct('mean', " + meanHyp +
-             ", 'cov', " + covHyp +
-             ", 'lik', " + likHyp +
-             ")";
-      ;
-    }
-
 
     private ICovarianceFunction GetCovFunction(ISymbolicExpressionTreeNode node) {
@@ -189,5 +80,7 @@
         return new CovarianceConst();
       } else if (node.Symbol is CovScale) {
-        return new CovarianceScale();
+        var cov = new CovarianceScale();
+        cov.CovarianceFunctionParameter.Value = GetCovFunction(node.GetSubtree(0));
+        return cov;
       } else if (node.Symbol is CovMask) {
         var maskNode = node as CovMaskTreeNode;
@@ -197,4 +90,5 @@
                                                               where maskNode.Mask[i]
                                                               select i).ToArray());
+        cov.CovarianceFunctionParameter.Value = GetCovFunction(node.GetSubtree(0));
         return cov;
       } else if (node.Symbol is CovLin) {
@@ -312,31 +206,4 @@
     //}
 
-    private string ToVectorString(bool[] b) {
-      var strBuilder = new StringBuilder();
-      strBuilder.Append("[");
-      if (b.Length == 1) // workaround for bug in GPML
-      {
-        if (!b[0]) strBuilder.Append("1");
-      } else {
-        for (int i = 0; i < b.Length; i++) {
-          if (i > 0) strBuilder.Append(", ");
-          strBuilder.Append(b[i] ? "0" : "1");
-        }
-      }
-      strBuilder.Append("]");
-      return strBuilder.ToString();
-    }
-    private string ToVectorString(double[] xs, bool[] mask) {
-      if (xs.Length != mask.Length) throw new ArgumentException();
-      var strBuilder = new StringBuilder();
-      strBuilder.Append("[");
-      for (int i = 0; i < xs.Length; i++)
-        if (!mask[i]) {
-          if (i > 0) strBuilder.Append("; ");
-          strBuilder.Append(xs[i]);
-        }
-      strBuilder.Append("]");
-      return strBuilder.ToString();
-    }
   }
 }
Index: /branches/HeuristicLab.Problems.GaussianProcessTuning/HeuristicLab.Problems.GaussianProcessTuning/Plugin.cs
===================================================================
--- /branches/HeuristicLab.Problems.GaussianProcessTuning/HeuristicLab.Problems.GaussianProcessTuning/Plugin.cs	(revision 9211)
+++ /branches/HeuristicLab.Problems.GaussianProcessTuning/HeuristicLab.Problems.GaussianProcessTuning/Plugin.cs	(revision 9212)
@@ -5,25 +5,16 @@
   [Plugin("HeuristicLab.Problems.GaussianProcessTuning", "Gaussian process configuration problem for genetic programming", "1.0.0")]
   [PluginFile("HeuristicLab.Problems.GaussianProcessTuning-1.0.dll", PluginFileType.Assembly)]
-  [PluginDependency("HeuristicLab.ALGLIB", "3.6.0")]
   [PluginDependency("HeuristicLab.Algorithms.DataAnalysis", "3.4")]
   [PluginDependency("HeuristicLab.Algorithms.OffspringSelectionGeneticAlgorithm", "3.3")]
   [PluginDependency("HeuristicLab.Collections", "3.3")]
   [PluginDependency("HeuristicLab.Common", "3.3")]
-  [PluginDependency("HeuristicLab.Common.Resources", "3.3")]
   [PluginDependency("HeuristicLab.Core", "3.3")]
-  [PluginDependency("HeuristicLab.Core.Views", "3.3")]
   [PluginDependency("HeuristicLab.Data", "3.3")]
   [PluginDependency("HeuristicLab.Encodings.SymbolicExpressionTreeEncoding", "3.4")]
-  [PluginDependency("HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Views", "3.4")]
-  [PluginDependency("HeuristicLab.MainForm", "3.3")]
-  [PluginDependency("HeuristicLab.MainForm.WindowsForms", "3.3")]
   [PluginDependency("HeuristicLab.Operators", "3.3")]
   [PluginDependency("HeuristicLab.Optimization", "3.3")]
-  [PluginDependency("HeuristicLab.Optimization.Operators", "3.3")]
   [PluginDependency("HeuristicLab.Parameters", "3.3")]
   [PluginDependency("HeuristicLab.Persistence", "3.3")]
   [PluginDependency("HeuristicLab.Problems.DataAnalysis", "3.4")]
-  [PluginDependency("HeuristicLab.Problems.DataAnalysis.Symbolic", "3.4")]
-  [PluginDependency("HeuristicLab.Problems.DataAnalysis.Symbolic.Regression", "3.4")]
   [PluginDependency("HeuristicLab.Random", "3.3")]
   [PluginDependency("HeuristicLab.Selection", "3.3")]
Index: /branches/HeuristicLab.Problems.GaussianProcessTuning/HeuristicLab.Problems.GaussianProcessTuning/Symbols.cs
===================================================================
--- /branches/HeuristicLab.Problems.GaussianProcessTuning/HeuristicLab.Problems.GaussianProcessTuning/Symbols.cs	(revision 9211)
+++ /branches/HeuristicLab.Problems.GaussianProcessTuning/HeuristicLab.Problems.GaussianProcessTuning/Symbols.cs	(revision 9212)
@@ -98,13 +98,4 @@
   [StorableClass]
   public sealed class MeanConst : Symbol {
-    [Storable]
-    public double MinValue { get; set; }
-    [Storable]
-    public double MaxValue { get; set; }
-    [Storable]
-    public double ValueShakingMu { get; set; }
-    [Storable]
-    public double ValueShakingSigma { get; set; }
-
     public override int MinimumArity {
       get { return 0; }
@@ -117,16 +108,8 @@
     private MeanConst(MeanConst original, Cloner cloner)
       : base(original, cloner) {
-      MinValue = original.MinValue;
-      MaxValue = original.MaxValue;
-      ValueShakingMu = original.ValueShakingMu;
-      ValueShakingSigma = original.ValueShakingSigma;
     }
 
     public MeanConst()
       : base("MeanConst", "Constant mean function") {
-      MinValue = -100.0;
-      MaxValue = 100.0;
-      ValueShakingMu = 1.0;
-      ValueShakingSigma = 1.0;
     }
     [StorableHook(HookType.AfterDeserialization)]
@@ -144,13 +127,4 @@
   [StorableClass]
   public sealed class MeanLinear : Symbol, IDimensionSymbol {
-    [Storable]
-    public double AlphaMu { get; set; }
-    [Storable]
-    public double AlphaSigma { get; set; }
-    [Storable]
-    public double AlphaShakingMu { get; set; }
-    [Storable]
-    public double AlphaShakingSigma { get; set; }
-
     public override int MinimumArity {
       get { return 0; }
@@ -167,8 +141,4 @@
       : base(original, cloner) {
       Dimension = original.Dimension;
-      AlphaMu = original.AlphaMu;
-      AlphaSigma = original.AlphaSigma;
-      AlphaShakingMu = original.AlphaShakingMu;
-      AlphaShakingSigma = original.AlphaShakingSigma;
     }
 
@@ -176,8 +146,4 @@
       : base("MeanLinear", "Linear mean function") {
       this.Dimension = dimension;
-      AlphaMu = 0.0;
-      AlphaSigma = 1.0;
-      AlphaShakingMu = 1.0;
-      AlphaShakingSigma = 0.1;
     }
     [StorableHook(HookType.AfterDeserialization)]
@@ -197,13 +163,4 @@
   [StorableClass]
   public sealed class MeanScale : Symbol {
-    [Storable]
-    public double AlphaMu { get; set; }
-    [Storable]
-    public double AlphaSigma { get; set; }
-    [Storable]
-    public double AlphaShakingMu { get; set; }
-    [Storable]
-    public double AlphaShakingSigma { get; set; }
-
     public override int MinimumArity {
       get { return 1; }
@@ -217,16 +174,8 @@
     private MeanScale(MeanScale original, Cloner cloner)
       : base(original, cloner) {
-      AlphaMu = original.AlphaMu;
-      AlphaSigma = original.AlphaSigma;
-      AlphaShakingMu = original.AlphaShakingMu;
-      AlphaShakingSigma = original.AlphaShakingSigma;
     }
 
     public MeanScale()
       : base("MeanScale", "Scaled version of a mean function") {
-      AlphaMu = 0.0;
-      AlphaSigma = 1.0;
-      AlphaShakingMu = 1.0;
-      AlphaShakingSigma = 1.0;
     }
     [StorableHook(HookType.AfterDeserialization)]
@@ -372,13 +321,4 @@
   [StorableClass]
   public sealed class CovConst : Symbol {
-    [Storable]
-    public double MinSigma { get; set; }
-    [Storable]
-    public double MaxSigma { get; set; }
-    [Storable]
-    public double SigmaShakingMu { get; set; }
-    [Storable]
-    public double SigmaShakingSigma { get; set; }
-
     public override int MinimumArity {
       get { return 0; }
@@ -391,16 +331,8 @@
     private CovConst(CovConst original, Cloner cloner)
       : base(original, cloner) {
-      this.MaxSigma = original.MaxSigma;
-      this.MinSigma = original.MinSigma;
-      this.SigmaShakingMu = original.SigmaShakingMu;
-      this.SigmaShakingSigma = original.SigmaShakingSigma;
     }
 
     public CovConst()
       : base("CovConst", "Covariance for constant functions") {
-      MinSigma = 0.0;
-      MaxSigma = 100;
-      SigmaShakingMu = 1;
-      SigmaShakingSigma = 1;
     }
     [StorableHook(HookType.AfterDeserialization)]
@@ -418,13 +350,4 @@
   [StorableClass]
   public sealed class CovNoise : Symbol {
-    [Storable]
-    public double MinSigma { get; set; }
-    [Storable]
-    public double MaxSigma { get; set; }
-    [Storable]
-    public double SigmaShakingMu { get; set; }
-    [Storable]
-    public double SigmaShakingSigma { get; set; }
-
     public override int MinimumArity {
       get { return 0; }
@@ -437,16 +360,8 @@
     private CovNoise(CovNoise original, Cloner cloner)
       : base(original, cloner) {
-      this.MaxSigma = original.MaxSigma;
-      this.MinSigma = original.MinSigma;
-      this.SigmaShakingMu = original.SigmaShakingMu;
-      this.SigmaShakingSigma = original.SigmaShakingSigma;
     }
 
     public CovNoise()
       : base("CovNoise", "Noise covariance function") {
-      MinSigma = 0.0;
-      MaxSigma = 100;
-      SigmaShakingMu = 1;
-      SigmaShakingSigma = 1;
     }
     [StorableHook(HookType.AfterDeserialization)]
@@ -492,12 +407,4 @@
   [StorableClass]
   public sealed class CovLinArd : Symbol, IDimensionSymbol {
-    [Storable]
-    public double LambdaMu { get; set; }
-    [Storable]
-    public double LambdaSigma { get; set; }
-    [Storable]
-    public double LambdaShakingMu { get; set; }
-    [Storable]
-    public double LambdaShakingSigma { get; set; }
     public override int MinimumArity {
       get { return 0; }
@@ -515,8 +422,4 @@
       : base(original, cloner) {
       Dimension = original.Dimension;
-      LambdaMu = original.LambdaMu;
-      LambdaSigma = original.LambdaSigma;
-      LambdaShakingMu = original.LambdaShakingMu;
-      LambdaShakingSigma = original.LambdaShakingSigma;
     }
 
@@ -524,8 +427,4 @@
       : base("CovLinArd", "linear covariance function with ARD") {
       this.Dimension = dimension;
-      LambdaMu = 0.0;
-      LambdaSigma = 1.0;
-      LambdaShakingMu = 1.0;
-      LambdaShakingSigma = 0.1;
     }
     [StorableHook(HookType.AfterDeserialization)]
@@ -542,21 +441,4 @@
   [StorableClass]
   public sealed class CovSeArd : Symbol, IDimensionSymbol {
-    [Storable]
-    public double LambdaMu { get; set; }
-    [Storable]
-    public double LambdaSigma { get; set; }
-    [Storable]
-    public double LambdaShakingMu { get; set; }
-    [Storable]
-    public double LambdaShakingSigma { get; set; }
-    [Storable]
-    public double MinSigma { get; set; }
-    [Storable]
-    public double MaxSigma { get; set; }
-    [Storable]
-    public double SigmaShakingMu { get; set; }
-    [Storable]
-    public double SigmaShakingSigma { get; set; }
-
     public override int MinimumArity {
       get { return 0; }
@@ -574,12 +456,4 @@
       : base(original, cloner) {
       Dimension = original.Dimension;
-      LambdaMu = original.LambdaMu;
-      LambdaSigma = original.LambdaSigma;
-      LambdaShakingMu = original.LambdaShakingMu;
-      LambdaShakingSigma = original.LambdaShakingSigma;
-      MinSigma = original.MinSigma;
-      MaxSigma = original.MaxSigma;
-      SigmaShakingMu = original.SigmaShakingMu;
-      SigmaShakingSigma = original.SigmaShakingSigma;
     }
 
@@ -587,12 +461,4 @@
       : base("CovSeArd", "full squared exponential covariance function with ARD") {
       this.Dimension = dimension;
-      LambdaMu = 0.0;
-      LambdaSigma = 1.0;
-      LambdaShakingMu = 1.0;
-      LambdaShakingSigma = 0.1;
-      MinSigma = 0.0;
-      MaxSigma = 100.0;
-      SigmaShakingMu = 1.0;
-      SigmaShakingSigma = 1.0;
     }
     [StorableHook(HookType.AfterDeserialization)]
@@ -609,21 +475,4 @@
   [StorableClass]
   public sealed class CovSeIso : Symbol {
-    [Storable]
-    public double MinSigma { get; set; }
-    [Storable]
-    public double MaxSigma { get; set; }
-    [Storable]
-    public double SigmaShakingMu { get; set; }
-    [Storable]
-    public double SigmaShakingSigma { get; set; }
-    [Storable]
-    public double MinL { get; set; }
-    [Storable]
-    public double MaxL { get; set; }
-    [Storable]
-    public double LShakingMu { get; set; }
-    [Storable]
-    public double LShakingSigma { get; set; }
-
     public override int MinimumArity {
       get { return 0; }
@@ -637,24 +486,8 @@
     private CovSeIso(CovSeIso original, Cloner cloner)
       : base(original, cloner) {
-      MinSigma = original.MinSigma;
-      MaxSigma = original.MaxSigma;
-      SigmaShakingMu = original.SigmaShakingMu;
-      SigmaShakingSigma = original.SigmaShakingSigma;
-      MinL = original.MinL;
-      MaxL = original.MaxL;
-      LShakingMu = original.LShakingMu;
-      LShakingSigma = original.LShakingSigma;
     }
 
     public CovSeIso()
       : base("CovSeIso", "diagonal squared exponential covariance function") {
-      MinSigma = 1.0;
-      MaxSigma = 100.0;
-      SigmaShakingMu = 1.0;
-      SigmaShakingSigma = 1.0;
-      MinL = 1.0;
-      MaxL = 100.0;
-      LShakingMu = 1.0;
-      LShakingSigma = 1.0;
     }
     [StorableHook(HookType.AfterDeserialization)]
@@ -672,21 +505,4 @@
   [StorableClass]
   public sealed class CovMatern : Symbol {
-    [Storable]
-    public double MinSigma { get; set; }
-    [Storable]
-    public double MaxSigma { get; set; }
-    [Storable]
-    public double SigmaShakingMu { get; set; }
-    [Storable]
-    public double SigmaShakingSigma { get; set; }
-    [Storable]
-    public double MinL { get; set; }
-    [Storable]
-    public double MaxL { get; set; }
-    [Storable]
-    public double LShakingMu { get; set; }
-    [Storable]
-    public double LShakingSigma { get; set; }
-
     [Storable]
     public int D { get; set; }
@@ -703,12 +519,4 @@
     private CovMatern(CovMatern original, Cloner cloner)
       : base(original, cloner) {
-      MinSigma = original.MinSigma;
-      MaxSigma = original.MaxSigma;
-      SigmaShakingMu = original.SigmaShakingMu;
-      SigmaShakingSigma = original.SigmaShakingSigma;
-      MinL = original.MinL;
-      MaxL = original.MaxL;
-      LShakingMu = original.LShakingMu;
-      LShakingSigma = original.LShakingSigma;
       D = original.D;
     }
@@ -716,12 +524,4 @@
     public CovMatern(int d)
       : base("CovMatern", "Matern covariance function") {
-      MinSigma = 1.0;
-      MaxSigma = 100.0;
-      SigmaShakingMu = 1.0;
-      SigmaShakingSigma = 1.0;
-      MinL = 1.0;
-      MaxL = 100.0;
-      LShakingMu = 1.0;
-      LShakingSigma = 1.0;
       this.D = d;
     }
@@ -740,35 +540,17 @@
   [StorableClass]
   public sealed class CovPeriodic : Symbol {
-    [Storable]
-    public double MinSigma { get; set; }
-    [Storable]
-    public double MaxSigma { get; set; }
-    [Storable]
-    public double SigmaShakingMu { get; set; }
-    [Storable]
-    public double SigmaShakingSigma { get; set; }
-    [Storable]
-    public double MinL { get; set; }
-    [Storable]
-    public double MaxL { get; set; }
-    [Storable]
-    public double LShakingMu { get; set; }
-    [Storable]
-    public double LShakingSigma { get; set; }
-    [Storable]
-    public double MinPeriod { get; set; }
-    [Storable]
-    public double MaxPeriod { get; set; }
-    [Storable]
-    public double PeriodShakingMu { get; set; }
-    [Storable]
-    public double PeriodShakingSigma { get; set; }
-
-    public override int MinimumArity {
-      get { return 0; }
-    }
-    public override int MaximumArity {
-      get { return 0; }
-    }
+    public override int MinimumArity {
+      get { return 0; }
+    }
+    public override int MaximumArity {
+      get { return 0; }
+    }
+
+    [Storable]
+    private double? period;
+    public double? Period {
+      get { return period; }
+    }
+
 
     [StorableConstructor]
@@ -776,32 +558,10 @@
     private CovPeriodic(CovPeriodic original, Cloner cloner)
       : base(original, cloner) {
-      MinSigma = original.MinSigma;
-      MaxSigma = original.MaxSigma;
-      SigmaShakingMu = original.SigmaShakingMu;
-      SigmaShakingSigma = original.SigmaShakingSigma;
-      MinL = original.MinL;
-      MaxL = original.MaxL;
-      LShakingMu = original.LShakingMu;
-      LShakingSigma = original.LShakingSigma;
-      MinPeriod = original.MinL;
-      MaxPeriod = original.MaxL;
-      PeriodShakingMu = original.PeriodShakingMu;
-      PeriodShakingSigma = original.PeriodShakingSigma;
-    }
-
-    public CovPeriodic()
+      period = original.period;
+    }
+
+    public CovPeriodic(double? period = null)
       : base("CovPeriodic", "Periodic covariance function") {
-      MinSigma = 1.0;
-      MaxSigma = 100.0;
-      SigmaShakingMu = 1.0;
-      SigmaShakingSigma = 1.0;
-      MinL = 1.0;
-      MaxL = 100.0;
-      LShakingMu = 1.0;
-      LShakingSigma = 1.0;
-      MinPeriod = 1.0;
-      MaxPeriod = 100.0;
-      PeriodShakingMu = 1.0;
-      PeriodShakingSigma = 1.0;
+      this.period = period;
     }
     [StorableHook(HookType.AfterDeserialization)]
@@ -818,29 +578,4 @@
   [StorableClass]
   public sealed class CovRQArd : Symbol, IDimensionSymbol {
-    [Storable]
-    public double LambdaMu { get; set; }
-    [Storable]
-    public double LambdaSigma { get; set; }
-    [Storable]
-    public double LambdaShakingMu { get; set; }
-    [Storable]
-    public double LambdaShakingSigma { get; set; }
-    [Storable]
-    public double MinSigma { get; set; }
-    [Storable]
-    public double MaxSigma { get; set; }
-    [Storable]
-    public double SigmaShakingMu { get; set; }
-    [Storable]
-    public double SigmaShakingSigma { get; set; }
-    [Storable]
-    public double MinShape { get; set; }
-    [Storable]
-    public double MaxShape { get; set; }
-    [Storable]
-    public double ShapeShakingMu { get; set; }
-    [Storable]
-    public double ShapeShakingSigma { get; set; }
-
     public override int MinimumArity {
       get { return 0; }
@@ -858,16 +593,4 @@
       : base(original, cloner) {
       Dimension = original.Dimension;
-      LambdaMu = original.LambdaMu;
-      LambdaSigma = original.LambdaSigma;
-      LambdaShakingMu = original.LambdaShakingMu;
-      LambdaShakingSigma = original.LambdaShakingSigma;
-      MinSigma = original.MinSigma;
-      MaxSigma = original.MaxSigma;
-      SigmaShakingMu = original.SigmaShakingMu;
-      SigmaShakingSigma = original.SigmaShakingSigma;
-      MinShape = original.MinShape;
-      MaxShape = original.MaxShape;
-      ShapeShakingMu = original.ShapeShakingMu;
-      ShapeShakingSigma = original.ShapeShakingSigma;
     }
 
@@ -875,16 +598,4 @@
       : base("CovRQArd", "full rational quadratic covariance function with ARD") {
       this.Dimension = dimension;
-      LambdaMu = 0.0;
-      LambdaSigma = 1.0;
-      LambdaShakingMu = 1.0;
-      LambdaShakingSigma = 0.1;
-      MinSigma = 0.0;
-      MaxSigma = 100.0;
-      SigmaShakingMu = 1.0;
-      SigmaShakingSigma = 1.0;
-      MinShape = 1.0;
-      MaxShape = 100.0;
-      ShapeShakingMu = 1.0;
-      ShapeShakingSigma = 1.0;
     }
     [StorableHook(HookType.AfterDeserialization)]
@@ -901,29 +612,4 @@
   [StorableClass]
   public sealed class CovRQIso : Symbol {
-    [Storable]
-    public double MinSigma { get; set; }
-    [Storable]
-    public double MaxSigma { get; set; }
-    [Storable]
-    public double SigmaShakingMu { get; set; }
-    [Storable]
-    public double SigmaShakingSigma { get; set; }
-    [Storable]
-    public double MinL { get; set; }
-    [Storable]
-    public double MaxL { get; set; }
-    [Storable]
-    public double LShakingMu { get; set; }
-    [Storable]
-    public double LShakingSigma { get; set; }
-    [Storable]
-    public double MinShape { get; set; }
-    [Storable]
-    public double MaxShape { get; set; }
-    [Storable]
-    public double ShapeShakingMu { get; set; }
-    [Storable]
-    public double ShapeShakingSigma { get; set; }
-
     public override int MinimumArity {
       get { return 0; }
@@ -937,32 +623,8 @@
     private CovRQIso(CovRQIso original, Cloner cloner)
       : base(original, cloner) {
-      MinSigma = original.MinSigma;
-      MaxSigma = original.MaxSigma;
-      SigmaShakingMu = original.SigmaShakingMu;
-      SigmaShakingSigma = original.SigmaShakingSigma;
-      MinL = original.MinL;
-      MaxL = original.MaxL;
-      LShakingMu = original.LShakingMu;
-      LShakingSigma = original.LShakingSigma;
-      MinShape = original.MinShape;
-      MaxShape = original.MaxShape;
-      ShapeShakingMu = original.ShapeShakingMu;
-      ShapeShakingSigma = original.ShapeShakingSigma;
     }
 
     public CovRQIso()
       : base("CovRQIso", "Rational quadratic covariance function") {
-      MinSigma = 1.0;
-      MaxSigma = 100.0;
-      SigmaShakingMu = 1.0;
-      SigmaShakingSigma = 1.0;
-      MinL = 1.0;
-      MaxL = 100.0;
-      LShakingMu = 1.0;
-      LShakingSigma = 1.0;
-      MinShape = 1.0;
-      MaxShape = 100.0;
-      ShapeShakingMu = 1.0;
-      ShapeShakingSigma = 1.0;
     }
     [StorableHook(HookType.AfterDeserialization)]
@@ -1034,12 +696,4 @@
   [StorableClass]
   public sealed class CovScale : Symbol {
-    [Storable]
-    public double AlphaMu { get; set; }
-    [Storable]
-    public double AlphaSigma { get; set; }
-    [Storable]
-    public double AlphaShakingMu { get; set; }
-    [Storable]
-    public double AlphaShakingSigma { get; set; }
 
     public override int MinimumArity {
@@ -1054,16 +708,8 @@
     private CovScale(CovScale original, Cloner cloner)
       : base(original, cloner) {
-      AlphaMu = original.AlphaMu;
-      AlphaSigma = original.AlphaSigma;
-      AlphaShakingMu = original.AlphaShakingMu;
-      AlphaShakingSigma = original.AlphaShakingSigma;
     }
 
     public CovScale()
       : base("CovScale", "Scale a covariance function") {
-      AlphaMu = 0.0;
-      AlphaSigma = 1.0;
-      AlphaShakingMu = 1.0;
-      AlphaShakingSigma = 0.1;
     }
     [StorableHook(HookType.AfterDeserialization)]
@@ -1122,12 +768,4 @@
   [StorableClass]
   public sealed class LikGauss : Symbol {
-    [Storable]
-    public double MinSigma { get; set; }
-    [Storable]
-    public double MaxSigma { get; set; }
-    [Storable]
-    public double SigmaShakingMu { get; set; }
-    [Storable]
-    public double SigmaShakingSigma { get; set; }
 
     public override int MinimumArity {
@@ -1142,16 +780,8 @@
     private LikGauss(LikGauss original, Cloner cloner)
       : base(original, cloner) {
-      this.MinSigma = original.MinSigma;
-      this.MaxSigma = original.MaxSigma;
-      this.SigmaShakingMu = original.SigmaShakingMu;
-      this.SigmaShakingSigma = original.SigmaShakingSigma;
     }
 
     public LikGauss()
       : base("LikGauss", "Gaussian likelihood function") {
-      MinSigma = Math.Log(0.00001);
-      MaxSigma = Math.Log(100);
-      SigmaShakingMu = 1.0;
-      SigmaShakingSigma = 0.1;
     }
     [StorableHook(HookType.AfterDeserialization)]
Index: /branches/HeuristicLab.Problems.GaussianProcessTuning/HeuristicLab.Problems.GaussianProcessTuning/TreeNodes.cs
===================================================================
--- /branches/HeuristicLab.Problems.GaussianProcessTuning/HeuristicLab.Problems.GaussianProcessTuning/TreeNodes.cs	(revision 9211)
+++ /branches/HeuristicLab.Problems.GaussianProcessTuning/HeuristicLab.Problems.GaussianProcessTuning/TreeNodes.cs	(revision 9212)
@@ -30,17 +30,8 @@
     public new MeanConst Symbol { get { return (MeanConst)base.Symbol; } }
 
-    public override bool HasLocalParameters {
-      get { return true; }
-    }
-
-    private double value;
-    [Storable]
-    public double Value { get { return value; } private set { this.value = value; } }
-
     [StorableConstructor]
     private MeanConstTreeNode(bool deserializing) : base(deserializing) { }
     private MeanConstTreeNode(MeanConstTreeNode original, Cloner cloner)
       : base(original, cloner) {
-      this.value = original.value;
     }
 
@@ -52,11 +43,4 @@
     public override IDeepCloneable Clone(Cloner cloner) {
       return new MeanConstTreeNode(this, cloner);
-    }
-    public override void ResetLocalParameters(IRandom random) {
-      value = Symbol.MinValue + random.NextDouble() * (Symbol.MaxValue - Symbol.MinValue);
-    }
-    public override void ShakeLocalParameters(IRandom random, double shakingFactor) {
-      var normRandom = new NormalDistributedRandom(random, Symbol.ValueShakingMu, Symbol.ValueShakingSigma);
-      value = Math.Max(Symbol.MinValue, Math.Min(Symbol.MaxValue, value + normRandom.NextDouble() * shakingFactor));
     }
   }
@@ -65,22 +49,12 @@
     public new MeanLinear Symbol { get { return (MeanLinear)base.Symbol; } }
 
-    public override bool HasLocalParameters {
-      get { return true; }
-    }
-
-    [Storable]
-    public double[] Alpha { get; set; }
-
     [StorableConstructor]
     private MeanLinearTreeNode(bool deserializing) : base(deserializing) { }
     private MeanLinearTreeNode(MeanLinearTreeNode original, Cloner cloner)
       : base(original, cloner) {
-      Alpha = new double[original.Alpha.Length];
-      Array.Copy(original.Alpha, Alpha, Alpha.Length);
     }
 
     public MeanLinearTreeNode(MeanLinear symbol)
       : base(symbol) {
-      Alpha = new double[symbol.Dimension];
     }
 
@@ -90,14 +64,4 @@
     public override IDeepCloneable Clone(Cloner cloner) {
       return new MeanLinearTreeNode(this, cloner);
-    }
-    public override void ResetLocalParameters(IRandom random) {
-      var normRandom = new NormalDistributedRandom(random, Symbol.AlphaMu, Symbol.AlphaSigma);
-      for (int i = 0; i < Alpha.Length; i++)
-        Alpha[i] = normRandom.NextDouble();
-    }
-    public override void ShakeLocalParameters(IRandom random, double shakingFactor) {
-      var normRandom = new NormalDistributedRandom(random, Symbol.AlphaShakingMu, Symbol.AlphaShakingSigma);
-      int index = random.Next(Alpha.Length);
-      Alpha[index] += shakingFactor * normRandom.NextDouble();
     }
   }
@@ -108,17 +72,8 @@
     public new MeanScale Symbol { get { return (MeanScale)base.Symbol; } }
 
-    public override bool HasLocalParameters {
-      get { return true; }
-    }
-
-    private double alpha;
-    [Storable]
-    public double Alpha { get { return alpha; } private set { this.alpha = value; } }
-
     [StorableConstructor]
     private MeanScaleTreeNode(bool deserializing) : base(deserializing) { }
     private MeanScaleTreeNode(MeanScaleTreeNode original, Cloner cloner)
       : base(original, cloner) {
-      this.alpha = original.alpha;
     }
 
@@ -130,12 +85,4 @@
     public override IDeepCloneable Clone(Cloner cloner) {
       return new MeanScaleTreeNode(this, cloner);
-    }
-    public override void ResetLocalParameters(IRandom random) {
-      var normRandom = new NormalDistributedRandom(random, Symbol.AlphaMu, Symbol.AlphaSigma);
-      alpha = normRandom.NextDouble();
-    }
-    public override void ShakeLocalParameters(IRandom random, double shakingFactor) {
-      var normRandom = new NormalDistributedRandom(random, Symbol.AlphaShakingMu, Symbol.AlphaShakingSigma);
-      alpha += shakingFactor * normRandom.NextDouble();
     }
   }
@@ -184,17 +131,8 @@
     public new CovConst Symbol { get { return (CovConst)base.Symbol; } }
 
-    public override bool HasLocalParameters {
-      get { return true; }
-    }
-
-    private double sigma;
-    [Storable]
-    public double Sigma { get { return sigma; } private set { this.sigma = value; } }
-
     [StorableConstructor]
     private CovConstTreeNode(bool deserializing) : base(deserializing) { }
     private CovConstTreeNode(CovConstTreeNode original, Cloner cloner)
       : base(original, cloner) {
-      this.sigma = original.sigma;
     }
 
@@ -206,11 +144,4 @@
     public override IDeepCloneable Clone(Cloner cloner) {
       return new CovConstTreeNode(this, cloner);
-    }
-    public override void ResetLocalParameters(IRandom random) {
-      sigma = random.Next((int)Symbol.MinSigma, (int)Symbol.MaxSigma);
-    }
-    public override void ShakeLocalParameters(IRandom random, double shakingFactor) {
-      var normRandom = new NormalDistributedRandom(random, Symbol.SigmaShakingMu, Symbol.SigmaShakingSigma);
-      sigma = Math.Max(Symbol.MinSigma, Math.Min(Symbol.MaxSigma, sigma + normRandom.NextDouble() * shakingFactor));
     }
   }
@@ -219,17 +150,8 @@
     public new CovNoise Symbol { get { return (CovNoise)base.Symbol; } }
 
-    public override bool HasLocalParameters {
-      get { return true; }
-    }
-
-    private double sigma;
-    [Storable]
-    public double Sigma { get { return sigma; } private set { this.sigma = value; } }
-
     [StorableConstructor]
     private CovNoiseTreeNode(bool deserializing) : base(deserializing) { }
     private CovNoiseTreeNode(CovNoiseTreeNode original, Cloner cloner)
       : base(original, cloner) {
-      this.sigma = original.sigma;
     }
 
@@ -241,11 +163,4 @@
     public override IDeepCloneable Clone(Cloner cloner) {
       return new CovNoiseTreeNode(this, cloner);
-    }
-    public override void ResetLocalParameters(IRandom random) {
-      sigma = random.Next((int)Symbol.MinSigma, (int)Symbol.MaxSigma);
-    }
-    public override void ShakeLocalParameters(IRandom random, double shakingFactor) {
-      var normRandom = new NormalDistributedRandom(random, Symbol.SigmaShakingMu, Symbol.SigmaShakingSigma);
-      sigma = Math.Max(Symbol.MinSigma, Math.Min(Symbol.MaxSigma, sigma + normRandom.NextDouble() * shakingFactor));
     }
   }
@@ -254,22 +169,12 @@
     public new CovLinArd Symbol { get { return (CovLinArd)base.Symbol; } }
 
-    public override bool HasLocalParameters {
-      get { return true; }
-    }
-
-    [Storable]
-    public double[] Lambda { get; set; }
-
     [StorableConstructor]
     private CovLinArdTreeNode(bool deserializing) : base(deserializing) { }
     private CovLinArdTreeNode(CovLinArdTreeNode original, Cloner cloner)
       : base(original, cloner) {
-      Lambda = new double[original.Lambda.Length];
-      Array.Copy(original.Lambda, Lambda, Lambda.Length);
     }
 
     public CovLinArdTreeNode(CovLinArd symbol)
       : base(symbol) {
-      Lambda = new double[symbol.Dimension];
     }
 
@@ -279,14 +184,4 @@
     public override IDeepCloneable Clone(Cloner cloner) {
       return new CovLinArdTreeNode(this, cloner);
-    }
-    public override void ResetLocalParameters(IRandom random) {
-      var normRandom = new NormalDistributedRandom(random, Symbol.LambdaMu, Symbol.LambdaSigma);
-      for (int i = 0; i < Lambda.Length; i++)
-        Lambda[i] = normRandom.NextDouble();
-    }
-    public override void ShakeLocalParameters(IRandom random, double shakingFactor) {
-      int index = random.Next(Lambda.Length);
-      var normRandom = new NormalDistributedRandom(random, Symbol.LambdaShakingMu, Symbol.LambdaShakingSigma);
-      Lambda[index] += shakingFactor * normRandom.NextDouble();
     }
   }
@@ -294,27 +189,12 @@
   public sealed class CovSeArdTreeNode : SymbolicExpressionTreeTerminalNode {
     public new CovSeArd Symbol { get { return (CovSeArd)base.Symbol; } }
-
-    public override bool HasLocalParameters {
-      get { return true; }
-    }
-
-    [Storable]
-    public double[] Lambda { get; set; }
-
-    [Storable]
-    public double Sigma { get; set; }
-
     [StorableConstructor]
     private CovSeArdTreeNode(bool deserializing) : base(deserializing) { }
     private CovSeArdTreeNode(CovSeArdTreeNode original, Cloner cloner)
       : base(original, cloner) {
-      Lambda = new double[original.Lambda.Length];
-      Array.Copy(original.Lambda, Lambda, Lambda.Length);
-      Sigma = original.Sigma;
     }
 
     public CovSeArdTreeNode(CovSeArd symbol)
       : base(symbol) {
-      Lambda = new double[symbol.Dimension];
     }
 
@@ -324,19 +204,4 @@
     public override IDeepCloneable Clone(Cloner cloner) {
       return new CovSeArdTreeNode(this, cloner);
-    }
-    public override void ResetLocalParameters(IRandom random) {
-      var normRandom = new NormalDistributedRandom(random, Symbol.LambdaMu, Symbol.LambdaSigma);
-      for (int i = 0; i < Lambda.Length; i++)
-        Lambda[i] = normRandom.NextDouble();
-
-      Sigma = Symbol.MinSigma + random.NextDouble() * (Symbol.MaxSigma - Symbol.MinSigma);
-    }
-    public override void ShakeLocalParameters(IRandom random, double shakingFactor) {
-      int index = random.Next(Lambda.Length);
-      var normRandom = new NormalDistributedRandom(random, Symbol.LambdaShakingMu, Symbol.LambdaShakingSigma);
-      Lambda[index] += shakingFactor * normRandom.NextDouble();
-
-      var sigmaRandom = new NormalDistributedRandom(random, Symbol.SigmaShakingMu, Symbol.SigmaShakingSigma);
-      Sigma = Math.Max(Symbol.MinSigma, Math.Min(Symbol.MaxSigma, Sigma + shakingFactor * sigmaRandom.NextDouble()));
     }
   }
@@ -345,20 +210,8 @@
     public new CovSeIso Symbol { get { return (CovSeIso)base.Symbol; } }
 
-    public override bool HasLocalParameters {
-      get { return true; }
-    }
-
-    [Storable]
-    public double L { get; set; }
-
-    [Storable]
-    public double Sigma { get; set; }
-
     [StorableConstructor]
     private CovSeIsoTreeNode(bool deserializing) : base(deserializing) { }
     private CovSeIsoTreeNode(CovSeIsoTreeNode original, Cloner cloner)
       : base(original, cloner) {
-      L = original.L;
-      Sigma = original.Sigma;
     }
 
@@ -372,15 +225,4 @@
     public override IDeepCloneable Clone(Cloner cloner) {
       return new CovSeIsoTreeNode(this, cloner);
-    }
-    public override void ResetLocalParameters(IRandom random) {
-      Sigma = Symbol.MinSigma + random.NextDouble() * (Symbol.MaxSigma - Symbol.MinSigma);
-      L = Symbol.MinL + random.NextDouble() * (Symbol.MaxL - Symbol.MinL);
-    }
-    public override void ShakeLocalParameters(IRandom random, double shakingFactor) {
-      var sigmaRandom = new NormalDistributedRandom(random, Symbol.SigmaShakingMu, Symbol.SigmaShakingSigma);
-      Sigma = Math.Max(Symbol.MinSigma, Math.Min(Symbol.MaxSigma, Sigma + shakingFactor * sigmaRandom.NextDouble()));
-
-      var lRandom = new NormalDistributedRandom(random, Symbol.LShakingMu, Symbol.LShakingSigma);
-      L = Math.Max(Symbol.MinL, Math.Min(Symbol.MaxL, L + shakingFactor * lRandom.NextDouble()));
     }
   }
@@ -389,20 +231,8 @@
     public new CovMatern Symbol { get { return (CovMatern)base.Symbol; } }
 
-    public override bool HasLocalParameters {
-      get { return true; }
-    }
-
-    [Storable]
-    public double L { get; set; }
-
-    [Storable]
-    public double Sigma { get; set; }
-
     [StorableConstructor]
     private CovMaternTreeNode(bool deserializing) : base(deserializing) { }
     private CovMaternTreeNode(CovMaternTreeNode original, Cloner cloner)
       : base(original, cloner) {
-      L = original.L;
-      Sigma = original.Sigma;
     }
 
@@ -416,15 +246,4 @@
     public override IDeepCloneable Clone(Cloner cloner) {
       return new CovMaternTreeNode(this, cloner);
-    }
-    public override void ResetLocalParameters(IRandom random) {
-      Sigma = Symbol.MinSigma + random.NextDouble() * (Symbol.MaxSigma - Symbol.MinSigma);
-      L = Symbol.MinL + random.NextDouble() * (Symbol.MaxL - Symbol.MinL);
-    }
-    public override void ShakeLocalParameters(IRandom random, double shakingFactor) {
-      var sigmaRandom = new NormalDistributedRandom(random, Symbol.SigmaShakingMu, Symbol.SigmaShakingSigma);
-      Sigma = Math.Max(Symbol.MinSigma, Math.Min(Symbol.MaxSigma, Sigma + shakingFactor * sigmaRandom.NextDouble()));
-
-      var lRandom = new NormalDistributedRandom(random, Symbol.LShakingMu, Symbol.LShakingSigma);
-      L = Math.Max(Symbol.MinL, Math.Min(Symbol.MaxL, L + shakingFactor * lRandom.NextDouble()));
     }
   }
@@ -433,24 +252,8 @@
     public new CovPeriodic Symbol { get { return (CovPeriodic)base.Symbol; } }
 
-    public override bool HasLocalParameters {
-      get { return true; }
-    }
-
-    [Storable]
-    public double L { get; set; }
-
-    [Storable]
-    public double Sigma { get; set; }
-
-    [Storable]
-    public double Period { get; set; }
-
     [StorableConstructor]
     private CovPeriodicTreeNode(bool deserializing) : base(deserializing) { }
     private CovPeriodicTreeNode(CovPeriodicTreeNode original, Cloner cloner)
       : base(original, cloner) {
-      L = original.L;
-      Sigma = original.Sigma;
-      Period = original.Period;
     }
 
@@ -464,19 +267,4 @@
     public override IDeepCloneable Clone(Cloner cloner) {
       return new CovPeriodicTreeNode(this, cloner);
-    }
-    public override void ResetLocalParameters(IRandom random) {
-      Sigma = Symbol.MinSigma + random.NextDouble() * (Symbol.MaxSigma - Symbol.MinSigma);
-      L = Symbol.MinL + random.NextDouble() * (Symbol.MaxL - Symbol.MinL);
-      Period = Symbol.MinPeriod + random.NextDouble() * (Symbol.MaxPeriod - Symbol.MinPeriod);
-    }
-    public override void ShakeLocalParameters(IRandom random, double shakingFactor) {
-      var sigmaRandom = new NormalDistributedRandom(random, Symbol.SigmaShakingMu, Symbol.SigmaShakingSigma);
-      Sigma = Math.Max(Symbol.MinSigma, Math.Min(Symbol.MaxSigma, Sigma + shakingFactor * sigmaRandom.NextDouble()));
-
-      var lRandom = new NormalDistributedRandom(random, Symbol.LShakingMu, Symbol.LShakingSigma);
-      L = Math.Max(Symbol.MinL, Math.Min(Symbol.MaxL, L + shakingFactor * lRandom.NextDouble()));
-
-      var pRandom = new NormalDistributedRandom(random, Symbol.PeriodShakingMu, Symbol.PeriodShakingSigma);
-      Period = Math.Max(Symbol.MinPeriod, Math.Min(Symbol.MaxPeriod, Period + shakingFactor * pRandom.NextDouble()));
     }
   }
@@ -486,30 +274,12 @@
     public new CovRQArd Symbol { get { return (CovRQArd)base.Symbol; } }
 
-    public override bool HasLocalParameters {
-      get { return true; }
-    }
-
-    [Storable]
-    public double[] Lambda { get; set; }
-
-    [Storable]
-    public double Sigma { get; set; }
-
-    [Storable]
-    public double Shape { get; set; }
-
     [StorableConstructor]
     private CovRQArdTreeNode(bool deserializing) : base(deserializing) { }
     private CovRQArdTreeNode(CovRQArdTreeNode original, Cloner cloner)
       : base(original, cloner) {
-      Lambda = new double[original.Lambda.Length];
-      Array.Copy(original.Lambda, Lambda, Lambda.Length);
-      Sigma = original.Sigma;
-      Shape = original.Shape;
     }
 
     public CovRQArdTreeNode(CovRQArd symbol)
       : base(symbol) {
-      Lambda = new double[symbol.Dimension];
     }
 
@@ -519,23 +289,4 @@
     public override IDeepCloneable Clone(Cloner cloner) {
       return new CovRQArdTreeNode(this, cloner);
-    }
-    public override void ResetLocalParameters(IRandom random) {
-      var normRandom = new NormalDistributedRandom(random, Symbol.LambdaMu, Symbol.LambdaSigma);
-      for (int i = 0; i < Lambda.Length; i++)
-        Lambda[i] = normRandom.NextDouble();
-
-      Sigma = Symbol.MinSigma + random.NextDouble() * (Symbol.MaxSigma - Symbol.MinSigma);
-      Shape = Symbol.MinShape + random.NextDouble() * (Symbol.MaxShape - Symbol.MinShape);
-    }
-    public override void ShakeLocalParameters(IRandom random, double shakingFactor) {
-      int index = random.Next(Lambda.Length);
-      var normRandom = new NormalDistributedRandom(random, Symbol.LambdaShakingMu, Symbol.LambdaShakingSigma);
-      Lambda[index] += shakingFactor * normRandom.NextDouble();
-
-      var sigmaRandom = new NormalDistributedRandom(random, Symbol.SigmaShakingMu, Symbol.SigmaShakingSigma);
-      Sigma = Math.Max(Symbol.MinSigma, Math.Min(Symbol.MaxSigma, Sigma + shakingFactor * sigmaRandom.NextDouble()));
-
-      var shapeRandom = new NormalDistributedRandom(random, Symbol.ShapeShakingMu, Symbol.ShapeShakingSigma);
-      Sigma = Math.Max(Symbol.MinShape, Math.Min(Symbol.MaxShape, Shape + shakingFactor * shapeRandom.NextDouble()));
     }
   }
@@ -545,24 +296,8 @@
     public new CovRQIso Symbol { get { return (CovRQIso)base.Symbol; } }
 
-    public override bool HasLocalParameters {
-      get { return true; }
-    }
-
-    [Storable]
-    public double L { get; set; }
-
-    [Storable]
-    public double Sigma { get; set; }
-
-    [Storable]
-    public double Shape { get; set; }
-
     [StorableConstructor]
     private CovRQisoTreeNode(bool deserializing) : base(deserializing) { }
     private CovRQisoTreeNode(CovRQisoTreeNode original, Cloner cloner)
       : base(original, cloner) {
-      L = original.L;
-      Sigma = original.Sigma;
-      Shape = original.Shape;
     }
 
@@ -576,19 +311,4 @@
     public override IDeepCloneable Clone(Cloner cloner) {
       return new CovRQisoTreeNode(this, cloner);
-    }
-    public override void ResetLocalParameters(IRandom random) {
-      Sigma = Symbol.MinSigma + random.NextDouble() * (Symbol.MaxSigma - Symbol.MinSigma);
-      L = Symbol.MinL + random.NextDouble() * (Symbol.MaxL - Symbol.MinL);
-      Shape = Symbol.MinShape + random.NextDouble() * (Symbol.MaxShape - Symbol.MinShape);
-    }
-    public override void ShakeLocalParameters(IRandom random, double shakingFactor) {
-      var sigmaRandom = new NormalDistributedRandom(random, Symbol.SigmaShakingMu, Symbol.SigmaShakingSigma);
-      Sigma = Math.Max(Symbol.MinSigma, Math.Min(Symbol.MaxSigma, Sigma + shakingFactor * sigmaRandom.NextDouble()));
-
-      var lRandom = new NormalDistributedRandom(random, Symbol.LShakingMu, Symbol.LShakingSigma);
-      L = Math.Max(Symbol.MinL, Math.Min(Symbol.MaxL, L + shakingFactor * lRandom.NextDouble()));
-
-      var shapeRandom = new NormalDistributedRandom(random, Symbol.ShapeShakingMu, Symbol.ShapeShakingSigma);
-      Shape = Math.Max(Symbol.MinShape, Math.Min(Symbol.MaxShape, Shape + shakingFactor * shapeRandom.NextDouble()));
     }
   }
@@ -597,17 +317,8 @@
     public new CovScale Symbol { get { return (CovScale)base.Symbol; } }
 
-    public override bool HasLocalParameters {
-      get { return true; }
-    }
-
-    private double alpha;
-    [Storable]
-    public double Alpha { get { return alpha; } private set { this.alpha = value; } }
-
     [StorableConstructor]
     private CovScaleTreeNode(bool deserializing) : base(deserializing) { }
     private CovScaleTreeNode(CovScaleTreeNode original, Cloner cloner)
       : base(original, cloner) {
-      this.alpha = original.alpha;
     }
 
@@ -619,12 +330,4 @@
     public override IDeepCloneable Clone(Cloner cloner) {
       return new CovScaleTreeNode(this, cloner);
-    }
-    public override void ResetLocalParameters(IRandom random) {
-      var normRandom = new NormalDistributedRandom(random, Symbol.AlphaMu, Symbol.AlphaSigma);
-      alpha = normRandom.NextDouble();
-    }
-    public override void ShakeLocalParameters(IRandom random, double shakingFactor) {
-      var normRandom = new NormalDistributedRandom(random, Symbol.AlphaShakingMu, Symbol.AlphaShakingSigma);
-      alpha += shakingFactor * normRandom.NextDouble();
     }
   }
@@ -674,17 +377,8 @@
     public new LikGauss Symbol { get { return (LikGauss)base.Symbol; } }
 
-    public override bool HasLocalParameters {
-      get { return true; }
-    }
-
-    private double sigma;
-    [Storable]
-    public double Sigma { get { return sigma; } private set { this.sigma = value; } }
-
     [StorableConstructor]
     private LikGaussTreeNode(bool deserializing) : base(deserializing) { }
     private LikGaussTreeNode(LikGaussTreeNode original, Cloner cloner)
       : base(original, cloner) {
-      this.sigma = original.sigma;
     }
 
@@ -697,11 +391,4 @@
       return new LikGaussTreeNode(this, cloner);
     }
-    public override void ResetLocalParameters(IRandom random) {
-      sigma = random.Next((int)Symbol.MinSigma, (int)Symbol.MaxSigma);
-    }
-    public override void ShakeLocalParameters(IRandom random, double shakingFactor) {
-      var normRandom = new NormalDistributedRandom(random, Symbol.SigmaShakingMu, Symbol.SigmaShakingSigma);
-      sigma = Math.Max(Symbol.MinSigma, Math.Min(Symbol.MaxSigma, sigma + normRandom.NextDouble() * shakingFactor));
-    }
   }
 }
Index: /branches/HeuristicLab.Problems.GaussianProcessTuning/HeuristicLab.Problems.Instances.DataAnalysis.GaussianProcessRegression/GaussianProcessRegressionInstance1D.cs
===================================================================
--- /branches/HeuristicLab.Problems.GaussianProcessTuning/HeuristicLab.Problems.Instances.DataAnalysis.GaussianProcessRegression/GaussianProcessRegressionInstance1D.cs	(revision 9212)
+++ /branches/HeuristicLab.Problems.GaussianProcessTuning/HeuristicLab.Problems.Instances.DataAnalysis.GaussianProcessRegression/GaussianProcessRegressionInstance1D.cs	(revision 9212)
@@ -0,0 +1,80 @@
+﻿#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 GaussianProcessRegressionInstance1D : ArtificialRegressionDataDescriptor {
+
+    private const int STEPS = 100;
+    public override string Name {
+      get { return "Gaussian Process " + 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 (STEPS+1); } }
+    protected override int TestPartitionStart { get { return TrainingPartitionEnd; } }
+    protected override int TestPartitionEnd { get { return 2 * (STEPS + 1); } }
+
+    private ParameterizedCovarianceFunction cov;
+    private string name;
+
+    public GaussianProcessRegressionInstance1D(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.GenerateSteps(0, 1, 1.0 / STEPS).ToList(),
+      };
+
+      List<List<double>> testData = new List<List<double>>() {
+        ValueGenerator.GenerateSteps(-0.1, 1.1, 1.2 / STEPS).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/GaussianProcessRegressionInstance2D.cs
===================================================================
--- /branches/HeuristicLab.Problems.GaussianProcessTuning/HeuristicLab.Problems.Instances.DataAnalysis.GaussianProcessRegression/GaussianProcessRegressionInstance2D.cs	(revision 9212)
+++ /branches/HeuristicLab.Problems.GaussianProcessTuning/HeuristicLab.Problems.Instances.DataAnalysis.GaussianProcessRegression/GaussianProcessRegressionInstance2D.cs	(revision 9212)
@@ -0,0 +1,82 @@
+﻿#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 GaussianProcessRegressionInstance2D : ArtificialRegressionDataDescriptor {
+
+    private const int STEPS = 20;
+    public override string Name {
+      get { return "Gaussian Process " + name; }
+    }
+    public override string Description {
+      get { return ""; }
+    }
+    protected override string TargetVariable { get { return "Y"; } }
+    protected override string[] VariableNames { get { return new string[] { "X1", "X2", "Y" }; } }
+    protected override string[] AllowedInputVariables { get { return new string[] { "X1", "X2" }; } }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return (STEPS+1) * (STEPS+1); } }
+    protected override int TestPartitionStart { get { return TrainingPartitionEnd; } }
+    protected override int TestPartitionEnd { get { return 2 * (STEPS + 1) * (STEPS + 1); } }
+
+    private ParameterizedCovarianceFunction cov;
+    private string name;
+
+    public GaussianProcessRegressionInstance2D(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.GenerateSteps(0, 1, 1.0 / STEPS).ToList(),
+        ValueGenerator.GenerateSteps(0, 1, 1.0 / STEPS).ToList()
+      };
+
+      List<List<double>> testData = new List<List<double>>() {
+        ValueGenerator.GenerateSteps(-0.1, 1.1, 1.2 / STEPS).ToList(),
+        ValueGenerator.GenerateSteps(-0.1, 1.1, 1.2 / STEPS).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 9211)
+++ /branches/HeuristicLab.Problems.GaussianProcessTuning/HeuristicLab.Problems.Instances.DataAnalysis.GaussianProcessRegression/Instances.DataAnalysis.GaussianProcessRegression-3.3.csproj	(revision 9212)
@@ -178,4 +178,6 @@
   </ItemGroup>
   <ItemGroup>
+    <Compile Include="GaussianProcessRegressionInstance1D.cs" />
+    <Compile Include="GaussianProcessRegressionInstance2D.cs" />
     <Compile Include="GaussianProcessSumOfRQIso.cs" />
     <Compile Include="GaussianProcessSumOfSEIso.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 9211)
+++ /branches/HeuristicLab.Problems.GaussianProcessTuning/HeuristicLab.Problems.Instances.DataAnalysis.GaussianProcessRegression/VariousInstanceProvider.cs	(revision 9212)
@@ -24,4 +24,5 @@
 using System.Linq;
 using HeuristicLab.Algorithms.DataAnalysis;
+using HeuristicLab.Data;
 
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
@@ -124,4 +125,89 @@
       }
 
+      {
+        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 GaussianProcessRegressionInstance1D("1D: SE", cov, hyp));
+      }
+      {
+        var cov = new CovarianceSum();
+        cov.Terms.Add(new CovarianceRationalQuadraticIso());
+        cov.Terms.Add(new CovarianceNoise());
+        var hyp = new double[] { -2.5, 0, -2, -7 };
+        descriptorList.Add(new GaussianProcessRegressionInstance1D("1D: RQ", cov, hyp));
+      }
+      {
+        var cov = new CovarianceSum();
+        cov.Terms.Add(new CovarianceMaternIso());
+        cov.Terms.Add(new CovarianceNoise());
+        var hyp = new double[] { -2, 0, -7 };
+        descriptorList.Add(new GaussianProcessRegressionInstance1D("1D: Matern1", cov, hyp));
+      }
+      {
+        var cov = new CovarianceSum();
+        cov.Terms.Add(new CovariancePeriodic());
+        cov.Terms.Add(new CovarianceNoise());
+        var hyp = new double[] { 0, -1.3, 0, -7 };
+        descriptorList.Add(new GaussianProcessRegressionInstance1D("1D: Periodic", cov, hyp));
+      }
+      {
+        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 GaussianProcessRegressionInstance1D("1D: SE", cov, hyp));
+      }
+      {
+        var cov = new CovarianceSum();
+        var m1 = new CovarianceMask();
+        m1.SelectedDimensionsParameter.Value = new IntArray(new int[] { 0 });
+        m1.CovarianceFunctionParameter.Value = new CovarianceSquaredExponentialIso();
+
+        var m2 = new CovarianceMask();
+        m2.SelectedDimensionsParameter.Value = new IntArray(new int[] { 1 });
+        m2.CovarianceFunctionParameter.Value = new CovarianceRationalQuadraticIso();
+
+        cov.Terms.Add(m1);
+        cov.Terms.Add(m2);
+        cov.Terms.Add(new CovarianceNoise());
+        var hyp = new double[] { -2.5, 0, -2.0, 0, -2, -7 };
+        descriptorList.Add(new GaussianProcessRegressionInstance2D("2D: SE+RQ", cov, hyp));
+      }
+      {
+        var cov = new CovarianceSum();
+        var m1 = new CovarianceMask();
+        m1.SelectedDimensionsParameter.Value = new IntArray(new int[] { 0 });
+        m1.CovarianceFunctionParameter.Value = new CovarianceSquaredExponentialIso();
+
+        var m2 = new CovarianceMask();
+        m2.SelectedDimensionsParameter.Value = new IntArray(new int[] { 1 });
+        m2.CovarianceFunctionParameter.Value = new CovarianceMaternIso();
+
+        cov.Terms.Add(m1);
+        cov.Terms.Add(m2);
+        cov.Terms.Add(new CovarianceNoise());
+        var hyp = new double[] { -2.5, 0, 2, 0, -7 };
+        descriptorList.Add(new GaussianProcessRegressionInstance2D("2D: SE+Matern1", cov, hyp));
+      }
+      {
+        var cov = new CovarianceSum();
+        var m1 = new CovarianceMask();
+        m1.SelectedDimensionsParameter.Value = new IntArray(new int[] { 0 });
+        m1.CovarianceFunctionParameter.Value = new CovarianceSquaredExponentialIso();
+
+        var m2 = new CovarianceMask();
+        m2.SelectedDimensionsParameter.Value = new IntArray(new int[] { 1 });
+        m2.CovarianceFunctionParameter.Value = new CovariancePeriodic();
+
+        cov.Terms.Add(m1);
+        cov.Terms.Add(m2);
+        cov.Terms.Add(new CovarianceNoise());
+        var hyp = new double[] { -2.5, 0, 0, -1.3, 0, -7 };
+        descriptorList.Add(new GaussianProcessRegressionInstance2D("2D: SE+Periodic", cov, hyp));
+      }
+
+
 
       return descriptorList;
