Index: /branches/HeuristicLab.Problems.GaussianProcessTuning/HeuristicLab.Problems.GaussianProcessTuning/BestSolutionAnalyzer.cs
===================================================================
--- /branches/HeuristicLab.Problems.GaussianProcessTuning/HeuristicLab.Problems.GaussianProcessTuning/BestSolutionAnalyzer.cs	(revision 10756)
+++ /branches/HeuristicLab.Problems.GaussianProcessTuning/HeuristicLab.Problems.GaussianProcessTuning/BestSolutionAnalyzer.cs	(revision 10757)
@@ -17,9 +17,9 @@
     private const string QualityParameterName = "Quality";
     private const string SymbolicExpressionTreeParameterName = "GaussianProcessConfiguration";
-    private const string BestSolutionParameterName = "Best solution";
     private const string ResultsParameterName = "Results";
     private const string ProblemDataParameterName = "ProblemData";
     private const string InterpreterParameterName = "Interpreter";
     private const string SolutionParameterName = "Solution";
+    private const string TreeParameterName = "Covariance function";
 
     public IScopeTreeLookupParameter<DoubleValue> QualityParameter {
@@ -31,7 +31,4 @@
     public IScopeTreeLookupParameter<ISymbolicExpressionTree> SymbolicExpressionTreeParameter {
       get { return (IScopeTreeLookupParameter<ISymbolicExpressionTree>)Parameters[SymbolicExpressionTreeParameterName]; }
-    }
-    public ILookupParameter<Solution> BestSolutionParameter {
-      get { return (ILookupParameter<Solution>)Parameters[BestSolutionParameterName]; }
     }
     public ILookupParameter<ResultCollection> ResultParameter {
@@ -55,5 +52,4 @@
       Parameters.Add(new ScopeTreeLookupParameter<ISymbolicExpressionTree>(SymbolicExpressionTreeParameterName, "The Gaussian process configuration to evaluate represented as symbolic expression tree."));
       Parameters.Add(new ScopeTreeLookupParameter<IGaussianProcessSolution>(SolutionParameterName, "The solution of the Gaussian process algorithm."));
-      Parameters.Add(new LookupParameter<Solution>(BestSolutionParameterName, "The best Gaussian process configuration."));
       Parameters.Add(new LookupParameter<ResultCollection>(ResultsParameterName, "The result collection of the algorithm."));
       Parameters.Add(new LookupParameter<IRegressionProblemData>(ProblemDataParameterName, ""));
@@ -85,19 +81,13 @@
       }
       var cloner = new Cloner();
-      var problemData = cloner.Clone(ProblemDataParameter.ActualValue);
-      var interpreter = cloner.Clone(InterpreterParameter.ActualValue);
       bestTree = cloner.Clone(bestTree);
-      var bestModel = new GaussianProcessRegressionModel(bestTree, problemData, interpreter);
-      var bestSolutionConfiguration = new Solution(bestModel, problemData);
-
-      BestSolutionParameter.ActualValue = bestSolutionConfiguration;
 
       var resultCollection = ResultParameter.ActualValue;
-      if (!resultCollection.ContainsKey(BestSolutionParameterName)) {
-        resultCollection.Add(new Result(BestSolutionParameterName, "The best Gaussian process solution", bestSolutionConfiguration));
+      if (!resultCollection.ContainsKey(SolutionParameterName)) {
         resultCollection.Add(new Result(SolutionParameterName, "The Gaussian process algorithm solution", bestSolution));
+        resultCollection.Add(new Result(TreeParameterName, "The best covariance function", bestTree));
       } else {
-        resultCollection[BestSolutionParameterName].Value = bestSolutionConfiguration;
         resultCollection[SolutionParameterName].Value = bestSolution;
+        resultCollection[TreeParameterName].Value = bestTree;
       }
 
Index: /branches/HeuristicLab.Problems.GaussianProcessTuning/HeuristicLab.Problems.GaussianProcessTuning/Evaluator.cs
===================================================================
--- /branches/HeuristicLab.Problems.GaussianProcessTuning/HeuristicLab.Problems.GaussianProcessTuning/Evaluator.cs	(revision 10756)
+++ /branches/HeuristicLab.Problems.GaussianProcessTuning/HeuristicLab.Problems.GaussianProcessTuning/Evaluator.cs	(revision 10757)
@@ -20,4 +20,5 @@
     private const string ProblemDataParameterName = "ProblemData";
     private const string SolutionParameterName = "Solution";
+    private const string IterationsParameterName = "Iterations";
 
     public ILookupParameter<DoubleValue> QualityParameter {
@@ -36,4 +37,7 @@
       get { return (ILookupParameter<IRegressionProblemData>)Parameters[ProblemDataParameterName]; }
     }
+    public ILookupParameter<IntValue> IterationsParameter {
+      get { return (ILookupParameter<IntValue>)Parameters[IterationsParameterName]; }
+    }
 
     [StorableConstructor]
@@ -46,4 +50,5 @@
       Parameters.Add(new LookupParameter<DoubleValue>(QualityParameterName, "The solution quality of the Gaussian process configuration."));
       Parameters.Add(new LookupParameter<ISymbolicExpressionTree>(GaussianProcessConfigurationParameterName, "The Gaussian process configuration to evaluate represented as symbolic expression tree."));
+      Parameters.Add(new LookupParameter<IntValue>(IterationsParameterName, "Number of LM-BFGS iterations for hyper-parameter optimization."));
       Parameters.Add(new LookupParameter<Interpreter>(InterpreterParameterName, "The interpreter to use for evaluating Gaussian process configurations represented as trees."));
       Parameters.Add(new LookupParameter<IRegressionProblemData>(ProblemDataParameterName, "To regression problem data for which to learn a Gaussian process."));
@@ -63,5 +68,5 @@
       double quality;
       IGaussianProcessSolution solution;
-      InterpreterParameter.ActualValue.EvaluateGaussianProcessConfiguration(tree, ProblemDataParameter.ActualValue, out quality, out solution);
+      InterpreterParameter.ActualValue.EvaluateGaussianProcessConfiguration(tree, ProblemDataParameter.ActualValue, IterationsParameter.ActualValue.Value, out quality, out solution);
 
       if (double.IsInfinity(quality) || double.IsNaN(quality)) quality = 1E6; // a large value
Index: anches/HeuristicLab.Problems.GaussianProcessTuning/HeuristicLab.Problems.GaussianProcessTuning/GaussianProcessModelView.cs
===================================================================
--- /branches/HeuristicLab.Problems.GaussianProcessTuning/HeuristicLab.Problems.GaussianProcessTuning/GaussianProcessModelView.cs	(revision 10756)
+++ 	(revision )
@@ -1,48 +1,0 @@
-﻿#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2011 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.Windows.Forms;
-using HeuristicLab.MainForm;
-using HeuristicLab.MainForm.WindowsForms;
-
-namespace HeuristicLab.Problems.GaussianProcessTuning {
-  [View("Gaussian Process model view")]
-  [Content(typeof(GaussianProcessRegressionModel), true)]
-  public partial class GaussianProcessRegressionModelView : AsynchronousContentView {
-    public GaussianProcessRegressionModelView()
-      : base() {
-      InitializeComponent();
-    }
-
-    public new GaussianProcessRegressionModel Content {
-      get { return (GaussianProcessRegressionModel)base.Content; }
-      set { base.Content = value; }
-    }
-
-    protected override void OnContentChanged() {
-      base.OnContentChanged();
-      if (Content != null)
-        symbolicExpressionTreeView.Content = Content.Configuration;
-      else
-        symbolicExpressionTreeView.Content = null;
-    }
-  }
-}
Index: anches/HeuristicLab.Problems.GaussianProcessTuning/HeuristicLab.Problems.GaussianProcessTuning/GaussianProcessModelView.designer.cs
===================================================================
--- /branches/HeuristicLab.Problems.GaussianProcessTuning/HeuristicLab.Problems.GaussianProcessTuning/GaussianProcessModelView.designer.cs	(revision 10756)
+++ 	(revision )
@@ -1,78 +1,0 @@
-﻿#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
-
-namespace HeuristicLab.Problems.GaussianProcessTuning {
-  partial class GaussianProcessRegressionModelView {
-    /// <summary> 
-    /// Required designer variable.
-    /// </summary>
-    private System.ComponentModel.IContainer components = null;
-
-    /// <summary> 
-    /// Clean up any resources being used.
-    /// </summary>
-    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
-    protected override void Dispose(bool disposing) {
-      if (disposing && (components != null)) {
-        components.Dispose();
-      }
-      base.Dispose(disposing);
-    }
-
-    #region Component Designer generated code
-
-    /// <summary> 
-    /// Required method for Designer support - do not modify 
-    /// the contents of this method with the code editor.
-    /// </summary>
-    private void InitializeComponent() {
-      this.symbolicExpressionTreeView = new HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Views.GraphicalSymbolicExpressionTreeView();
-      this.SuspendLayout();
-      // 
-      // expressionTreeView
-      // 
-      this.symbolicExpressionTreeView.AllowDrop = true;
-      this.symbolicExpressionTreeView.Caption = "Graphical SymbolicExpressionTree View";
-      this.symbolicExpressionTreeView.Content = null;
-      this.symbolicExpressionTreeView.Dock = System.Windows.Forms.DockStyle.Fill;
-      this.symbolicExpressionTreeView.Location = new System.Drawing.Point(0, 0);
-      this.symbolicExpressionTreeView.Name = "expressionTreeView";
-      this.symbolicExpressionTreeView.ReadOnly = false;
-      this.symbolicExpressionTreeView.Size = new System.Drawing.Size(352, 413);
-      this.symbolicExpressionTreeView.TabIndex = 0;
-      // 
-      // SymbolicExpressionModelView
-      // 
-      this.AllowDrop = true;
-      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
-      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
-      this.Controls.Add(this.symbolicExpressionTreeView);
-      this.Name = "SymbolicExpressionModelView";
-      this.Size = new System.Drawing.Size(352, 413);
-      this.ResumeLayout(false);
-
-    }
-
-    #endregion
-    private HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Views.GraphicalSymbolicExpressionTreeView symbolicExpressionTreeView;
-
-  }
-}
Index: anches/HeuristicLab.Problems.GaussianProcessTuning/HeuristicLab.Problems.GaussianProcessTuning/GaussianProcessRegressionModel.cs
===================================================================
--- /branches/HeuristicLab.Problems.GaussianProcessTuning/HeuristicLab.Problems.GaussianProcessTuning/GaussianProcessRegressionModel.cs	(revision 10756)
+++ 	(revision )
@@ -1,55 +1,0 @@
-﻿using System.Collections.Generic;
-using System.Linq;
-using HeuristicLab.Common;
-using HeuristicLab.Core;
-using HeuristicLab.Encodings.SymbolicExpressionTreeEncoding;
-using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
-using HeuristicLab.Problems.DataAnalysis;
-
-namespace HeuristicLab.Problems.GaussianProcessTuning {
-  [StorableClass]
-  [Item("GaussianProcessRegressionModel", "A Gaussian process model")]
-  public class GaussianProcessRegressionModel : NamedItem, IRegressionModel {
-    [Storable]
-    private ISymbolicExpressionTree configuration;
-    public ISymbolicExpressionTree Configuration { get { return configuration; } }
-
-    [Storable]
-    private IRegressionProblemData trainingData;
-    [Storable]
-    private Interpreter interpreter;
-
-    [StorableConstructor]
-    protected GaussianProcessRegressionModel(bool deserializing) : base(deserializing) { }
-    protected GaussianProcessRegressionModel(GaussianProcessRegressionModel original, Cloner cloner)
-      : base(original, cloner) {
-      this.configuration = cloner.Clone(original.configuration);
-      this.trainingData = cloner.Clone(original.trainingData);
-      this.interpreter = cloner.Clone(original.interpreter);
-    }
-    public GaussianProcessRegressionModel(ISymbolicExpressionTree configuration, IRegressionProblemData trainingData, Interpreter interpreter) {
-      this.Name = "GaussianProcessRegressionModel";
-      this.Description = "A Gaussian process model";
-      this.configuration = configuration;
-      this.trainingData = trainingData;
-      this.interpreter = interpreter;
-    }
-    public override IDeepCloneable Clone(Cloner cloner) {
-      return new GaussianProcessRegressionModel(this, cloner);
-    }
-
-    public IRegressionSolution CreateRegressionSolution(IRegressionProblemData problemData) {
-      return new Solution(this, problemData);
-    }
-
-    public IEnumerable<double> GetEstimatedValues(Dataset dataset, IEnumerable<int> rows) {
-      //if (!rows.Any()) return Enumerable.Empty<double>();
-
-      //double[] means, variances;
-      //interpreter.EvaluateGaussianProcessConfiguration(configuration, trainingData, dataset, rows, out means,
-      //                                                 out variances);
-      //return means;
-      return rows.Select(x => 0.0);
-    }
-  }
-}
Index: /branches/HeuristicLab.Problems.GaussianProcessTuning/HeuristicLab.Problems.GaussianProcessTuning/GaussianProcessTuning.csproj
===================================================================
--- /branches/HeuristicLab.Problems.GaussianProcessTuning/HeuristicLab.Problems.GaussianProcessTuning/GaussianProcessTuning.csproj	(revision 10756)
+++ /branches/HeuristicLab.Problems.GaussianProcessTuning/HeuristicLab.Problems.GaussianProcessTuning/GaussianProcessTuning.csproj	(revision 10757)
@@ -123,4 +123,8 @@
       <Private>False</Private>
     </Reference>
+    <Reference Include="HeuristicLab.Problems.Instances-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\..\..\trunk\sources\bin\HeuristicLab.Problems.Instances-3.3.dll</HintPath>
+    </Reference>
     <Reference Include="HeuristicLab.Random-3.3">
       <HintPath>..\..\..\trunk\sources\bin\HeuristicLab.Random-3.3.dll</HintPath>
@@ -141,11 +145,7 @@
   <ItemGroup>
     <Compile Include="BestSolutionAnalyzer.cs" />
-    <Compile Include="GaussianProcessRegressionModel.cs" />
     <Compile Include="Interpreter.cs">
       <SubType>Code</SubType>
     </Compile>
-    <Compile Include="Parameters.cs" />
-    <Compile Include="Provider.cs" />
-    <Compile Include="Solution.cs" />
     <Compile Include="Grammar.cs" />
     <Compile Include="Problem.cs" />
@@ -159,10 +159,4 @@
     <None Include="Plugin.cs.frame" />
     <None Include="Properties\AssemblyInfo.cs.frame" />
-  </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 10756)
+++ /branches/HeuristicLab.Problems.GaussianProcessTuning/HeuristicLab.Problems.GaussianProcessTuning/Grammar.cs	(revision 10757)
@@ -42,10 +42,11 @@
     private void Initialize() {
       // create all symbols
+      var meanZero = new MeanZero();
       //var meanOne = new MeanOne();
-      var meanConst = new MeanConst();
-      var meanLinear = new MeanLinear(Dimension);
+      //var meanConst = new MeanConst();
+      //var meanLinear = new MeanLinear(Dimension);
       //var meanScale = new MeanScale();
-      var meanSum = new MeanSum();
-      var meanProd = new MeanProd();
+      //var meanSum = new MeanSum();
+      //var meanProd = new MeanProd();
       //var meanPow2 = new MeanPow(2) { Name = "MeanPow2" };
       //var meanPow3 = new MeanPow(3) { Name = "MeanPow3" };
@@ -70,6 +71,6 @@
       var covPeriodic1 = new CovPeriodic(1.0);
       covPeriodic1.Name = "CovPeriodic(1.0)";
-      var covPeriodicCO = new CovPeriodic(0.021817864467425927);
-      covPeriodicCO.Name = "CovPeriodicCO";
+      //var covPeriodicCO = new CovPeriodic(0.021817864467425927);
+      //covPeriodicCO.Name = "CovPeriodicCO";
       var covNoise = new CovNoise();
       var covScale = new CovScale();
@@ -83,8 +84,9 @@
       var meanSymbols = new List<ISymbol>()
                          {
-                            meanConst, 
-                            meanLinear,
-                            meanSum,  
-                            meanProd, 
+                           meanZero,
+                            //meanConst, 
+                            //meanLinear,
+                            //meanSum,  
+                            //meanProd, 
                             //meanPow2, 
                             //meanPow3, 
@@ -108,5 +110,5 @@
                             covPeriodic,
                             covPeriodic1,
-                            covPeriodicCO,
+                            //covPeriodicCO,
                             covNoise,
                             covScale, 
@@ -137,11 +139,11 @@
         AddAllowedChildSymbol(configurationStartSymbol, likSymbol, 2);
       }
-      foreach (var meanFunctionSymbol in new ISymbol[] { meanSum, meanProd }) {
-        foreach (var meanSymbol in meanSymbols) {
-          for (int i = 0; i < meanFunctionSymbol.MaximumArity; i++) {
-            AddAllowedChildSymbol(meanFunctionSymbol, meanSymbol, i);
-          }
-        }
-      }
+      //foreach (var meanFunctionSymbol in new ISymbol[] { meanSum, meanProd }) {
+      //  foreach (var meanSymbol in meanSymbols) {
+      //    for (int i = 0; i < meanFunctionSymbol.MaximumArity; i++) {
+      //      AddAllowedChildSymbol(meanFunctionSymbol, meanSymbol, i);
+      //    }
+      //  }
+      //}
 
       foreach (var covFunctionSymbol in new ISymbol[] { covSum, covProd, covScale }) {
@@ -171,5 +173,5 @@
                             covPeriodic,
                             covPeriodic1,
-                            covPeriodicCO,
+                            //covPeriodicCO,
                          }) {
         for (int i = 0; i < covMask.MaximumArity; i++) {
Index: /branches/HeuristicLab.Problems.GaussianProcessTuning/HeuristicLab.Problems.GaussianProcessTuning/Interpreter.cs
===================================================================
--- /branches/HeuristicLab.Problems.GaussianProcessTuning/HeuristicLab.Problems.GaussianProcessTuning/Interpreter.cs	(revision 10756)
+++ /branches/HeuristicLab.Problems.GaussianProcessTuning/HeuristicLab.Problems.GaussianProcessTuning/Interpreter.cs	(revision 10757)
@@ -26,5 +26,5 @@
     }
 
-    public void EvaluateGaussianProcessConfiguration(ISymbolicExpressionTree tree, IRegressionProblemData problemData, out double negLogLikelihood, out IGaussianProcessSolution solution) {
+    public void EvaluateGaussianProcessConfiguration(ISymbolicExpressionTree tree, IRegressionProblemData problemData, int iterations, out double negLogLikelihood, out IGaussianProcessSolution solution) {
       var meanFunction = GetMeanFunction(tree);
       var covFunction = GetCovFunction(tree);
@@ -36,6 +36,6 @@
       gprAlg.GaussianProcessModelCreatorParameter.Value =
         gprAlg.GaussianProcessModelCreatorParameter.ValidValues.First(
-          v => v is EigenGaussianProcessRegressionModelCreator);
-      gprAlg.MinimizationIterations = 50;
+          v => v is GaussianProcessRegressionModelCreator);
+      gprAlg.MinimizationIterations = iterations;
 
       var signal = new AutoResetEvent(false);
Index: anches/HeuristicLab.Problems.GaussianProcessTuning/HeuristicLab.Problems.GaussianProcessTuning/Parameters.cs
===================================================================
--- /branches/HeuristicLab.Problems.GaussianProcessTuning/HeuristicLab.Problems.GaussianProcessTuning/Parameters.cs	(revision 10756)
+++ 	(revision )
@@ -1,22 +1,0 @@
-﻿
-using System;
-
-namespace HeuristicLab.Problems.GaussianProcessTuning {
-  public class Parameters {
-    public int PopulationSize { get; set; }
-    public int Generations { get; set; }
-    public int MaxTreeLength { get; set; }
-    public int MaxTreeDepth { get; set; }
-    public double MutationRate { get; set; }
-    public double MaxSelectionPressure { get; set; }
-
-    public Parameters() {
-      PopulationSize = 100;
-      Generations = 10;
-      MaxTreeLength = 20;
-      MaxTreeDepth = 6;
-      MutationRate = 0.15;
-      MaxSelectionPressure = 100;
-    }
-  }
-}
Index: /branches/HeuristicLab.Problems.GaussianProcessTuning/HeuristicLab.Problems.GaussianProcessTuning/Plugin.cs.frame
===================================================================
--- /branches/HeuristicLab.Problems.GaussianProcessTuning/HeuristicLab.Problems.GaussianProcessTuning/Plugin.cs.frame	(revision 10756)
+++ /branches/HeuristicLab.Problems.GaussianProcessTuning/HeuristicLab.Problems.GaussianProcessTuning/Plugin.cs.frame	(revision 10757)
@@ -17,4 +17,5 @@
   [PluginDependency("HeuristicLab.Persistence", "3.3")]
   [PluginDependency("HeuristicLab.Problems.DataAnalysis", "3.4")]
+  [PluginDependency("HeuristicLab.Problems.Instances", "3.3")]
   [PluginDependency("HeuristicLab.Random", "3.3")]
   [PluginDependency("HeuristicLab.Selection", "3.3")]
Index: /branches/HeuristicLab.Problems.GaussianProcessTuning/HeuristicLab.Problems.GaussianProcessTuning/Problem.cs
===================================================================
--- /branches/HeuristicLab.Problems.GaussianProcessTuning/HeuristicLab.Problems.GaussianProcessTuning/Problem.cs	(revision 10756)
+++ /branches/HeuristicLab.Problems.GaussianProcessTuning/HeuristicLab.Problems.GaussianProcessTuning/Problem.cs	(revision 10757)
@@ -10,4 +10,5 @@
 using HeuristicLab.PluginInfrastructure;
 using HeuristicLab.Problems.DataAnalysis;
+using HeuristicLab.Problems.Instances;
 
 namespace HeuristicLab.Problems.GaussianProcessTuning {
@@ -15,5 +16,6 @@
   [Creatable("Problems")]
   [Item("Gaussian Process Configuration Problem", "The Gaussian process configuration problem for genetic programming.")]
-  public class Problem : SingleObjectiveHeuristicOptimizationProblem<Evaluator, ISymbolicExpressionTreeCreator> {
+  public class Problem : SingleObjectiveHeuristicOptimizationProblem<Evaluator, ISymbolicExpressionTreeCreator>,
+    IProblemInstanceConsumer<IRegressionProblemData>, IProblemInstanceExporter<IRegressionProblemData> {
     private const string GaussianProcessConfigurationParameterName = "GaussianProcessConfiguration";
     private const string MaxGaussianProcessConfigurationLengthParameterName = "MaxConfigurationLength";
@@ -23,4 +25,5 @@
     private const string InterpreterParameterName = "Interpreter";
     private const string ProblemDataParameterName = "ProblemData";
+    private const string IterationsParameterName = "Iterations";
 
 
@@ -43,4 +46,7 @@
       get { return (IValueParameter<IRegressionProblemData>)Parameters[ProblemDataParameterName]; }
     }
+    public IFixedValueParameter<IntValue> IterationsParameter {
+      get { return (IFixedValueParameter<IntValue>)Parameters[IterationsParameterName]; }
+    }
 
     [StorableConstructor]
@@ -55,10 +61,11 @@
       : base(new Evaluator(), new ProbabilisticTreeCreator()) {
       Parameters.Add(new ValueParameter<Interpreter>(InterpreterParameterName, "The interpreter for Gaussian process configurations represented as trees.", new Interpreter()));
-      Parameters.Add(new FixedValueParameter<IntValue>(DimensionParameterName, "The dimension parameter for the Gaussian process configuration.", new IntValue(10)));
-      Parameters.Add(new FixedValueParameter<IntValue>(MaxGaussianProcessConfigurationParameterName, "Maximal depth of the Gaussian process configuration.", new IntValue(6)));
-      Parameters.Add(new FixedValueParameter<IntValue>(MaxGaussianProcessConfigurationLengthParameterName, "Maximal length of the Gaussian process configuration.", new IntValue(15)));
+      Parameters.Add(new FixedValueParameter<IntValue>(DimensionParameterName, "The dimension parameter for the Gaussian process configuration.", new IntValue(1)));
+      Parameters.Add(new FixedValueParameter<IntValue>(MaxGaussianProcessConfigurationParameterName, "Maximal depth of the Gaussian process configuration.", new IntValue(7)));
+      Parameters.Add(new FixedValueParameter<IntValue>(MaxGaussianProcessConfigurationLengthParameterName, "Maximal length of the Gaussian process configuration.", new IntValue(25)));
       Parameters.Add(new ValueParameter<Grammar>(GaussianProcessConfigurationGrammarParameterName, "Grammar for the Gaussian process configuration.",
                      new Grammar()));
       Parameters.Add(new ValueParameter<IRegressionProblemData>(ProblemDataParameterName, "The problem data to learn a Gaussian process for.", new RegressionProblemData()));
+      Parameters.Add(new FixedValueParameter<IntValue>(IterationsParameterName, "The number of LM-BFGS iterations for hyper-parameter tuning.", new IntValue(50)));
       Maximization.Value = false;
       InitializeOperators();
@@ -167,4 +174,14 @@
       }
     }
+
+    public void Load(IRegressionProblemData data) {
+      Name = data.Name;
+      Description = data.Description;
+      ProblemDataParameter.Value = data;
+    }
+
+    public IRegressionProblemData Export() {
+      return ProblemDataParameter.Value;
+    }
   }
 }
Index: anches/HeuristicLab.Problems.GaussianProcessTuning/HeuristicLab.Problems.GaussianProcessTuning/Provider.cs
===================================================================
--- /branches/HeuristicLab.Problems.GaussianProcessTuning/HeuristicLab.Problems.GaussianProcessTuning/Provider.cs	(revision 10756)
+++ 	(revision )
@@ -1,215 +1,0 @@
-﻿using System;
-using System.Linq;
-using System.Threading;
-using HeuristicLab.Algorithms.OffspringSelectionGeneticAlgorithm;
-using HeuristicLab.Encodings.SymbolicExpressionTreeEncoding;
-using HeuristicLab.Optimization;
-using HeuristicLab.Problems.DataAnalysis;
-using HeuristicLab.Random;
-using HeuristicLab.Selection;
-
-namespace HeuristicLab.Problems.GaussianProcessTuning {
-  public class Provider {
-    public static void Main(string[] args) {
-      // use random data for testing (3000 rows, 500 variables)
-
-      int rows = 13;
-      double[,] inputData = GenerateRandomData(rows, 5);
-      double[] targetData = GenerateRandomData(rows);
-
-      var prov = new Provider();
-      var p = new Parameters();
-      p.Generations = 1;
-      p.PopulationSize = 10;
-      var sol = prov.Train(targetData, inputData, null, p);
-      // Console.WriteLine(sol.TestRSquared);
-
-      //double[,] inputDataTest = GenerateRandomData(rows, 10);
-      //double[] predictionTest = prov.Predict(inputDataTest, sol);
-      //double[] targetDataTest = GenerateRandomData(rows);
-      //OnlineCalculatorError error;
-      //double r2 = OnlinePearsonsRSquaredCalculator.Calculate(predictionTest, targetDataTest, out error);
-      //if (error != OnlineCalculatorError.None) Console.WriteLine(error);
-      //else Console.WriteLine(r2);
-    }
-
-    // train a symb reg model
-    public IRegressionSolution Train(double[] target, double[,] input, Solution oldSolution, Parameters parameters) {
-      var targetVariable = "y";
-
-      if (target.Length != input.GetLength(0)) throw new ArgumentException("length of input vectors does not match.");
-      int rows = target.Length;
-      int columns = input.GetLength(1);
-
-      var variableNames =
-        new string[] { targetVariable }.Concat(Enumerable.Range(1, input.GetLength(1)).Select(i => string.Format("x{0}", i)));
-
-      double[,] combinedMatrix = new double[rows, columns + 1];
-      for (int r = 0; r < rows; r++) {
-        combinedMatrix[r, 0] = target[r];
-        for (int c = 0; c < columns; c++) {
-          combinedMatrix[r, c + 1] = input[r, c];
-        }
-      }
-
-      var allowedInputVariables = variableNames.Skip(1);
-      var ds = new Dataset(variableNames, combinedMatrix);
-      var probData = new RegressionProblemData(ds, allowedInputVariables, targetVariable);
-      probData.TrainingPartition.Start = 0;
-      probData.TrainingPartition.End = rows;
-      probData.TestPartition.Start = rows;
-      probData.TestPartition.End = rows;
-      var prob = new Problem();
-      prob.ProblemDataParameter.Value = probData;
-      prob.DimensionParameter.Value.Value = allowedInputVariables.Count();
-
-
-      var configuredAlgorithm = CreateGeneticProgrammingAlgorithm(prob, parameters);
-      // save the configured algorithm
-      // XmlGenerator.Serialize(configuredAlgorithm, "osgp_" + targetVariable + ".hl");
-
-
-      var resetEvent = new AutoResetEvent(false);
-      configuredAlgorithm.ExceptionOccurred += (sender, args) => {
-        Console.WriteLine("Exception: " + args.Value);
-        configuredAlgorithm.Stop();
-      };
-
-      Solution solution = null;
-      configuredAlgorithm.Stopped += (sender, args) => {
-        try {
-          Console.WriteLine("Run finished (execution time: {0})", configuredAlgorithm.ExecutionTime);
-          solution = (Solution)configuredAlgorithm.Results["Best solution"].Value;
-        }
-        finally {
-          resetEvent.Set();
-        }
-      };
-
-
-      configuredAlgorithm.Prepare();
-      configuredAlgorithm.Start(); // start run asynchronously
-      resetEvent.WaitOne(); // wait until stopped
-
-      //save ensemble solution
-      //XmlGenerator.Serialize(ensemble, "osgp_ensemble" + targetVariable + ".hl");
-
-      return solution;
-    }
-
-    // predict a single row
-    public double Predict(double[] input, IRegressionSolution solution) {
-      var allowedInputVariables = Enumerable.Range(1, input.GetLength(0)).Select(i => string.Format("x{0}", i));
-      int columns = input.GetLength(0);
-      double[,] combinedMatrix = new double[1, columns + 1];
-      combinedMatrix[0, 0] = 0.0;
-      for (int c = 0; c < columns; c++) {
-        combinedMatrix[0, c + 1] = input[c];
-      }
-
-      var ds = new Dataset(allowedInputVariables.Concat(new string[] { "y" }), combinedMatrix);
-      var newProbData = new RegressionProblemData(ds, allowedInputVariables, "y");
-      var newSolution = solution.Model.CreateRegressionSolution(newProbData);
-      return newSolution.EstimatedValues.Single();
-    }
-
-
-    // predict multiple rows
-    public double[] Predict(double[,] input, IRegressionSolution solution) {
-      var allowedInputVariables = Enumerable.Range(1, input.GetLength(1)).Select(i => string.Format("x{0}", i));
-      int rows = input.GetLength(0);
-      int columns = input.GetLength(1);
-      double[,] combinedMatrix = new double[rows, columns + 1];
-      for (int r = 0; r < rows; r++) {
-        combinedMatrix[r, 0] = 0.0;
-        for (int c = 0; c < columns; c++) {
-          combinedMatrix[r, c + 1] = input[r, c];
-        }
-      }
-
-      var ds = new Dataset(allowedInputVariables.Concat(new string[] { "y" }), combinedMatrix);
-      var newProbData = new RegressionProblemData(ds, allowedInputVariables, "y");
-      var newSolution = solution.Model.CreateRegressionSolution(newProbData);
-      return newSolution.EstimatedValues.ToArray();
-    }
-
-    #region helper for algorithm and problem configuration
-    public HeuristicOptimizationEngineAlgorithm CreateGeneticProgrammingAlgorithm(Problem problem, Parameters parameters) {
-      // offspring selection GA proved to be very successful for GP
-      var osga = new OffspringSelectionGeneticAlgorithm();
-
-      problem.MaxGaussianProcessConfigurationLengthParameter.Value.Value = parameters.MaxTreeLength;
-      problem.MaxGaussianProcessConfigurationDepthParameter.Value.Value = parameters.MaxTreeDepth;
-
-      var grammar = new Grammar();
-
-      problem.GrammarParameter.Value = grammar;
-
-      // prepare grammar for time series prognosis 
-      // combine algorithm + problem
-      osga.Problem = problem;
-
-      // set algorithm parameters
-      ConfigureOffspringSelectionGeneticAlgorithmParameters<GenderSpecificSelector, SubtreeCrossover, MultiSymbolicExpressionTreeManipulator>
-        (osga, parameters.PopulationSize, 0, parameters.Generations, parameters.MaxSelectionPressure, parameters.MutationRate);
-
-      return osga;
-    }
-
-    private void ConfigureOffspringSelectionGeneticAlgorithmParameters<S, C, M>(OffspringSelectionGeneticAlgorithm osga, int popSize, int elites, int maxGens, double maxSelectionPressure, double mutationRate = 0.15, double comparisonFactorLowerBound = 1.0, double comparisonFactorUpperBound = 1.0, double successRatio = 1.0)
-      where S : ISelector
-      where C : ICrossover
-      where M : IManipulator {
-      osga.Elites.Value = elites;
-      osga.MaximumGenerations.Value = maxGens;
-      osga.MutationProbability.Value = mutationRate;
-      osga.PopulationSize.Value = popSize;
-      osga.ComparisonFactorLowerBound.Value = comparisonFactorLowerBound;
-      osga.ComparisonFactorUpperBound.Value = comparisonFactorUpperBound;
-      osga.SuccessRatio.Value = successRatio;
-      osga.OffspringSelectionBeforeMutation.Value = false;
-      osga.MaximumSelectionPressure.Value = maxSelectionPressure;
-
-      osga.Seed.Value = 0;
-      osga.SetSeedRandomly.Value = true;
-      osga.Selector = osga.SelectorParameter.ValidValues
-        .OfType<S>()
-        .Single();
-
-      osga.Crossover = osga.CrossoverParameter.ValidValues
-        .OfType<C>()
-        .Single();
-
-      osga.Mutator = osga.MutatorParameter.ValidValues
-        .OfType<M>()
-        .Single();
-
-      osga.Engine = new SequentialEngine.SequentialEngine();
-    }
-    #endregion
-
-
-    #region helper for testing
-    private static double[,] GenerateRandomData(int rows, int columns) {
-      var data = new double[rows, columns];
-      // generate data using a PRNG with N(0, 1) distribution
-      var normalPRNG = new NormalDistributedRandom(new MersenneTwister(), 0.0, 1.0);
-      for (int r = 0; r < rows; r++)
-        for (int c = 0; c < columns; c++) {
-          data[r, c] = normalPRNG.NextDouble();
-        }
-      return data;
-    }
-    private static double[] GenerateRandomData(int rows) {
-      var data = new double[rows];
-      // generate data using a PRNG with N(0, 1) distribution
-      var normalPRNG = new NormalDistributedRandom(new MersenneTwister(), 0.0, 1.0);
-      for (int r = 0; r < rows; r++)
-
-        data[r] = normalPRNG.NextDouble();
-
-      return data;
-    }
-    #endregion
-  }
-}
Index: anches/HeuristicLab.Problems.GaussianProcessTuning/HeuristicLab.Problems.GaussianProcessTuning/Solution.cs
===================================================================
--- /branches/HeuristicLab.Problems.GaussianProcessTuning/HeuristicLab.Problems.GaussianProcessTuning/Solution.cs	(revision 10756)
+++ 	(revision )
@@ -1,27 +1,0 @@
-﻿using HeuristicLab.Common;
-using HeuristicLab.Core;
-using HeuristicLab.Encodings.SymbolicExpressionTreeEncoding;
-using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
-using HeuristicLab.Problems.DataAnalysis;
-
-namespace HeuristicLab.Problems.GaussianProcessTuning {
-  [StorableClass]
-  public sealed class Solution : RegressionSolution {
-    [StorableConstructor]
-    private Solution(bool deserializing) : base(deserializing) { }
-    private Solution(Solution original, Cloner cloner)
-      : base(original, cloner) {
-    }
-
-    public Solution(GaussianProcessRegressionModel model, IRegressionProblemData problemData)
-      : base(model, problemData) {
-      RecalculateResults();
-    }
-    [StorableHook(HookType.AfterDeserialization)]
-    private void AfterDeserialization() {
-    }
-    public override IDeepCloneable Clone(Cloner cloner) {
-      return new Solution(this, cloner);
-    }
-  }
-}
Index: anches/HeuristicLab.Problems.GaussianProcessTuning/HeuristicLab.Problems.GaussianProcessTuning/SolutionTreeView.cs
===================================================================
--- /branches/HeuristicLab.Problems.GaussianProcessTuning/HeuristicLab.Problems.GaussianProcessTuning/SolutionTreeView.cs	(revision 10756)
+++ 	(revision )
@@ -1,74 +1,0 @@
-﻿using System.Windows.Forms;
-using HeuristicLab.Core.Views;
-using HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Views;
-using HeuristicLab.MainForm;
-using HeuristicLab.MainForm.WindowsForms;
-
-namespace HeuristicLab.Problems.GaussianProcessTuning {
-  [View("Gaussian Process Configuration Tree View")]
-  [Content(typeof(Solution), IsDefaultView = false)]
-  public sealed partial class SolutionProgramView : NamedItemView {
-    private Panel panel;
-    private GraphicalSymbolicExpressionTreeView graphTreeView;
-    public new Solution Content {
-      get { return (Solution)base.Content; }
-      set { base.Content = value; }
-    }
-
-    public SolutionProgramView() {
-      InitializeComponent();
-      this.graphTreeView = new GraphicalSymbolicExpressionTreeView();
-      graphTreeView.Dock = DockStyle.Fill;
-      panel.Controls.Add(graphTreeView);
-    }
-
-    protected override void OnContentChanged() {
-      base.OnContentChanged();
-      if (Content == null) {
-        graphTreeView.Content = null;
-      } else {
-        graphTreeView.Content = Content.Tree;
-      }
-    }
-
-    private void InitializeComponent() {
-      this.panel = new System.Windows.Forms.Panel();
-      ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).BeginInit();
-      this.SuspendLayout();
-      // 
-      // nameTextBox
-      // 
-      this.errorProvider.SetIconAlignment(this.nameTextBox, System.Windows.Forms.ErrorIconAlignment.MiddleLeft);
-      this.errorProvider.SetIconPadding(this.nameTextBox, 2);
-      // 
-      // panel
-      // 
-      this.panel.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
-            | System.Windows.Forms.AnchorStyles.Left)
-            | System.Windows.Forms.AnchorStyles.Right)));
-      this.panel.Location = new System.Drawing.Point(3, 26);
-      this.panel.Name = "panel";
-      this.panel.Size = new System.Drawing.Size(345, 190);
-      this.panel.TabIndex = 3;
-      // 
-      // SolutionProgramView
-      // 
-      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
-      this.Controls.Add(this.panel);
-      this.Name = "SolutionProgramView";
-      this.Size = new System.Drawing.Size(351, 219);
-      this.Controls.SetChildIndex(this.panel, 0);
-      this.Controls.SetChildIndex(this.nameLabel, 0);
-      this.Controls.SetChildIndex(this.nameTextBox, 0);
-      this.Controls.SetChildIndex(this.infoLabel, 0);
-      ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).EndInit();
-      this.ResumeLayout(false);
-      this.PerformLayout();
-
-    }
-
-
-
-
-  }
-}
