Index: /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/Benchmark.cs
===================================================================
--- /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/Benchmark.cs	(revision 7024)
+++ /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/Benchmark.cs	(revision 7025)
@@ -29,4 +29,8 @@
       : base(original, cloner) {
     }
+
+    public override IDeepCloneable Clone(Cloner cloner) {
+      throw new System.NotImplementedException();
+    }
   }
 }
Index: /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/Generator/RegressionBenchmark.cs
===================================================================
--- /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/Generator/RegressionBenchmark.cs	(revision 7024)
+++ /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/Generator/RegressionBenchmark.cs	(revision 7025)
@@ -20,5 +20,4 @@
 #endregion
 
-using System.Collections;
 using System.Collections.Generic;
 using System.Linq;
@@ -31,8 +30,24 @@
 
     #region properties
-    public abstract List<string> InputVariable { get; }
-    public abstract string TargetVariable { get; }
-    public abstract IntRange TrainingPartition { get; }
-    public abstract IntRange TestPartition { get; }
+    protected string targetVariable;
+    protected List<string> inputVariables;
+    protected IntRange trainingPartition;
+    protected IntRange testPartition;
+
+    public List<string> InputVariable {
+      get { return inputVariables; }
+    }
+
+    public string TargetVariable {
+      get { return targetVariable; }
+    }
+
+    public IntRange TrainingPartition {
+      get { return trainingPartition; }
+    }
+
+    public IntRange TestPartition {
+      get { return testPartition; }
+    }
     #endregion
 
@@ -42,29 +57,23 @@
     }
 
-    protected abstract List<double> CalculateFunction(Dictionary<string, IList<double>> data);
+    protected abstract List<double> CalculateFunction(List<List<double>> data);
 
-    protected abstract Dictionary<string, IList<double>> GenerateInput(Dictionary<string, IList<double>> data);
+    protected abstract List<List<double>> GenerateInput(List<List<double>> dataList);
 
     public IDataAnalysisProblemData GenerateProblemData() {
-      Dictionary<string, IList<double>> data = new Dictionary<string, IList<double>>();
-      data.Add(this.TargetVariable, new List<double>());
-      foreach (var variable in this.InputVariable) {
-        data.Add(variable, new List<double>());
-      }
+      List<string> varNames = new List<string>();
+      varNames.Add(this.TargetVariable);
+      varNames.AddRange(InputVariable);
 
-      data = GenerateInput(data);
+      List<List<double>> dataList = GenerateInput(new List<List<double>>());
 
-      List<IList> values = new List<IList>();
-      foreach (var valueList in data.Values) {
-        values.Add((IList)valueList);
-      }
+      dataList.Insert(0, CalculateFunction(dataList));
 
-      Dataset dataset = new Dataset(data.Keys, values);
-      dataset.Name = this.Name;
+      Dataset dataset = new Dataset(varNames, dataList);
 
       RegressionProblemData problemData = new RegressionProblemData(dataset, dataset.DoubleVariables.Skip(1), dataset.DoubleVariables.First());
 
       problemData.Name = "Data generated for benchmark problem \"" + this.Name + "\"";
-
+      problemData.Description = this.Description;
 
       problemData.TestPartition.Start = this.TestPartition.Start;
@@ -77,27 +86,5 @@
     }
 
-    //private Dictionary<string, IList<double>> CalculateValues(Dictionary<string, IList<double>> data, DatasetDefinition dataDef) {
-    //  Random rand = new Random();
-    //  var combinationDataSet = AllCombinationsOf(dataDef.RangeVariables.Values.Select(range => range.Values).ToList());
-    //  int index = 0;
-    //  var help = dataDef.RangeVariables.Keys;
-    //  foreach (var dataSet in combinationDataSet) {
-    //    data[help.ElementAt(index)] = dataSet;
-    //    index++;
-    //  }
-    //  List<string> vars = new List<string>(dataDef.RandomVariables.Keys);
-    //  for (int i = 0; i < dataDef.AmountOfPoints; i++) {
-    //    foreach (var variable in vars) {
-    //      data[variable].Add(dataDef.RandomVariables[variable].Next());
-    //    }
-    //    //  data[TargetVariable].Add(CalculateFunction(data, vars));
-    //  }
-    //  int bla = 0;
-    //  var test = data.Values.Select((ind) => (ind.ElementAt(bla)));
-
-    //  return data;
-    //}
-
-    public static List<double> generateSteps(DoubleRange range, double stepWidth) {
+    public static List<double> GenerateSteps(DoubleRange range, double stepWidth) {
       return Enumerable.Range(0, (int)((range.End - range.Start) / stepWidth) + 1)
                                       .Select(i => (range.Start + i * stepWidth))
@@ -105,5 +92,5 @@
     }
 
-    public static List<double> generateUniformDistributedValues(int amount, DoubleRange range) {
+    public static List<double> GenerateUniformDistributedValues(int amount, DoubleRange range) {
       List<double> values = new List<double>();
       System.Random rand = new System.Random();
@@ -114,5 +101,5 @@
     }
 
-    public static List<double> generateNormalDistributedValues(int amount, double mu, double sigma) {
+    public static List<double> GenerateNormalDistributedValues(int amount, double mu, double sigma) {
       List<double> values = new List<double>();
       FastRandom rand = new FastRandom();
@@ -133,4 +120,8 @@
         combinations = AddExtraSet(combinations, set);
 
+      combinations = (from i in Enumerable.Range(0, sets.Count)
+                      select (from list in combinations
+                              select list.ElementAt(i)).ToList<double>()).ToList<List<double>>();
+
       return combinations;
     }
Index: /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/HeuristicLab.Problems.DataAnalysis.Benchmarks-3.4.csproj
===================================================================
--- /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/HeuristicLab.Problems.DataAnalysis.Benchmarks-3.4.csproj	(revision 7024)
+++ /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/HeuristicLab.Problems.DataAnalysis.Benchmarks-3.4.csproj	(revision 7025)
@@ -51,6 +51,48 @@
     <Compile Include="Plugin.cs" />
     <Compile Include="Properties\AssemblyInfo.cs" />
-    <Compile Include="RegressionBenchmarks\KotanchekFunction.cs" />
+    <Compile Include="RegressionBenchmarks\Keijzer\KeijzerFunctionSixteen.cs" />
+    <Compile Include="RegressionBenchmarks\Keijzer\KeijzerFunctionFifteen.cs" />
+    <Compile Include="RegressionBenchmarks\Keijzer\KeijzerFunctionThirteen.cs" />
+    <Compile Include="RegressionBenchmarks\Keijzer\KeijzerFunctionTwelve.cs" />
+    <Compile Include="RegressionBenchmarks\Keijzer\KeijzerFunctionEight.cs" />
+    <Compile Include="RegressionBenchmarks\Keijzer\KeijzerFunctionSeven.cs" />
+    <Compile Include="RegressionBenchmarks\Keijzer\KeijzerFunctionSix.cs" />
+    <Compile Include="RegressionBenchmarks\Korns\KornFunctionFiveteen.cs" />
+    <Compile Include="RegressionBenchmarks\Korns\KornFunctionFourteen.cs" />
+    <Compile Include="RegressionBenchmarks\Korns\KornFunctionThirteen.cs" />
+    <Compile Include="RegressionBenchmarks\Korns\KornFunctionTwelve.cs" />
+    <Compile Include="RegressionBenchmarks\Korns\KornFunctionEleven.cs" />
+    <Compile Include="RegressionBenchmarks\Korns\KornFunctionTen.cs" />
+    <Compile Include="RegressionBenchmarks\Korns\KornFunctionNine.cs" />
+    <Compile Include="RegressionBenchmarks\Korns\KornFunctionEight.cs" />
+    <Compile Include="RegressionBenchmarks\Korns\KornFunctionSeven.cs" />
+    <Compile Include="RegressionBenchmarks\Korns\KornFunctionSix.cs" />
+    <Compile Include="RegressionBenchmarks\Korns\KornFunctionFive.cs" />
+    <Compile Include="RegressionBenchmarks\Korns\KornFunctionFour.cs" />
+    <Compile Include="RegressionBenchmarks\Korns\KornFunctionThree.cs" />
+    <Compile Include="RegressionBenchmarks\Korns\KornFunctionTwo.cs" />
+    <Compile Include="RegressionBenchmarks\Korns\KornFunctionOne.cs" />
+    <Compile Include="RegressionBenchmarks\Keijzer\KeijzerFunctionFour.cs" />
+    <Compile Include="RegressionBenchmarks\Nguyen et al\NguyenFunctionTwelve.cs" />
+    <Compile Include="RegressionBenchmarks\Nguyen et al\NguyenFunctionEleven.cs" />
+    <Compile Include="RegressionBenchmarks\Nguyen et al\NguyenFunctionTen.cs" />
+    <Compile Include="RegressionBenchmarks\Nguyen et al\NguyenFunctionNine.cs" />
+    <Compile Include="RegressionBenchmarks\Nguyen et al\NguyenFunctionEight.cs" />
+    <Compile Include="RegressionBenchmarks\Nguyen et al\NguyenFunctionSeven.cs" />
+    <Compile Include="RegressionBenchmarks\Nguyen et al\NguyenFunctionSix.cs" />
+    <Compile Include="RegressionBenchmarks\Nguyen et al\NguyenFunctionFive.cs" />
+    <Compile Include="RegressionBenchmarks\Nguyen et al\NguyenFunctionFour.cs" />
+    <Compile Include="RegressionBenchmarks\Nguyen et al\NguyenFunctionThree.cs" />
+    <Compile Include="RegressionBenchmarks\Nguyen et al\NguyenFunctionTwo.cs" />
+    <Compile Include="RegressionBenchmarks\Nguyen et al\NguyenFunctionOne.cs" />
+    <Compile Include="RegressionBenchmarks\Vladislavleva et al\KotanchekFunction.cs" />
     <Compile Include="Generator\RegressionBenchmark.cs" />
+    <Compile Include="RegressionBenchmarks\Vladislavleva et al\RationalPolynomialThreeDimensional.cs" />
+    <Compile Include="RegressionBenchmarks\Vladislavleva et al\RationalPolynomialTwoDimensional.cs" />
+    <Compile Include="RegressionBenchmarks\Vladislavleva et al\RippleFunction.cs" />
+    <Compile Include="RegressionBenchmarks\Vladislavleva et al\SalustowiczFunctionOneDimensional.cs" />
+    <Compile Include="RegressionBenchmarks\Vladislavleva et al\SalustowiczFunctionTwoDimensional.cs" />
+    <Compile Include="RegressionBenchmarks\Vladislavleva et al\SineCosineFunction.cs" />
+    <Compile Include="RegressionBenchmarks\Vladislavleva et al\UnwrappedBallFunctionFiveDimensional.cs" />
   </ItemGroup>
   <ItemGroup>
Index: /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/Keijzer/KeijzerFunctionEight.cs
===================================================================
--- /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/Keijzer/KeijzerFunctionEight.cs	(revision 7025)
+++ /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/Keijzer/KeijzerFunctionEight.cs	(revision 7025)
@@ -0,0 +1,60 @@
+﻿#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;
+using System.Collections.Generic;
+using HeuristicLab.Data;
+
+namespace HeuristicLab.Problems.DataAnalysis.Benchmarks {
+  public class KeijzerFunctionEight : RegressionBenchmark {
+
+    public KeijzerFunctionEight() {
+      Name = "Keijzer 8 f(x) = log(x)";
+      Description = "Paper: Improving Symbolic Regression with Interval Arithmetic and Linear Scaling" + Environment.NewLine
+        + "Authors: Maarten Keijzer" + Environment.NewLine
+        + "Function: f(x) = log(x)" + Environment.NewLine
+        + "range(train): x = [0:1:100]" + Environment.NewLine
+        + "range(test): x = [0:0.1:100]" + Environment.NewLine
+        + "Function Set: x + y, x * y, 1/x, -x, sqrt(x)";
+      targetVariable = "F";
+      inputVariables = new List<string>() { "X", "Y", "Z" };
+      trainingPartition = new IntRange(0, 101);
+      testPartition = new IntRange(102, 1103);
+    }
+
+    protected override List<double> CalculateFunction(List<List<double>> data) {
+      double x;
+      List<double> results = new List<double>();
+      for (int i = 0; i < data[0].Count; i++) {
+        x = data[0][i];
+        results.Add(Math.Log(x));
+      }
+      return results;
+    }
+
+    protected override List<List<double>> GenerateInput(List<List<double>> dataList) {
+      dataList.Add(RegressionBenchmark.GenerateSteps(new DoubleRange(0, 100), 1));
+      dataList[0].AddRange(RegressionBenchmark.GenerateSteps(new DoubleRange(0, 100), 0.1));
+
+      return dataList;
+    }
+  }
+}
Index: /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/Keijzer/KeijzerFunctionFifteen.cs
===================================================================
--- /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/Keijzer/KeijzerFunctionFifteen.cs	(revision 7025)
+++ /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/Keijzer/KeijzerFunctionFifteen.cs	(revision 7025)
@@ -0,0 +1,69 @@
+﻿#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;
+using System.Collections.Generic;
+using HeuristicLab.Data;
+
+namespace HeuristicLab.Problems.DataAnalysis.Benchmarks {
+  public class KeijzerFunctionFifteen : RegressionBenchmark {
+
+    public KeijzerFunctionFifteen() {
+      Name = "Keijzer 15 f(x) = 8 / (2 + x^2 + y^2)";
+      Description = "Paper: Improving Symbolic Regression with Interval Arithmetic and Linear Scaling" + Environment.NewLine
+        + "Authors: Maarten Keijzer" + Environment.NewLine
+        + "Function: f(x, y) = 8 / (2 + x^2 + y^2)" + Environment.NewLine
+        + "range(train): 20 Testcases x,y = rnd(-3, 3)" + Environment.NewLine
+        + "range(test): x,y = [-3:0.01:3]" + Environment.NewLine
+        + "Function Set: x + y, x * y, 1/x, -x, sqrt(x)";
+      targetVariable = "F";
+      inputVariables = new List<string>() { "X", "Y", "Z" };
+      trainingPartition = new IntRange(0, 20);
+      testPartition = new IntRange(21, 621);
+    }
+
+    protected override List<double> CalculateFunction(List<List<double>> data) {
+      double x, y;
+      List<double> results = new List<double>();
+      for (int i = 0; i < data[0].Count; i++) {
+        x = data[0][i];
+        y = data[1][i];
+        results.Add(8 / (2 + Math.Pow(x, 2) + Math.Pow(y, 2)));
+      }
+      return results;
+    }
+
+    protected override List<List<double>> GenerateInput(List<List<double>> dataList) {
+      DoubleRange range = new DoubleRange(-3, 3);
+
+      List<double> oneVariableTestData = RegressionBenchmark.GenerateSteps(range, 0.01);
+      List<List<double>> testData = new List<List<double>>() { oneVariableTestData, oneVariableTestData };
+      testData = RegressionBenchmark.AllCombinationsOf(testData);
+
+      for (int i = 0; i < InputVariable.Count; i++) {
+        dataList.Add(RegressionBenchmark.GenerateUniformDistributedValues(20, range));
+        dataList[i].AddRange(testData[i]);
+      }
+
+      return dataList;
+    }
+  }
+}
Index: /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/Keijzer/KeijzerFunctionFour.cs
===================================================================
--- /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/Keijzer/KeijzerFunctionFour.cs	(revision 7025)
+++ /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/Keijzer/KeijzerFunctionFour.cs	(revision 7025)
@@ -0,0 +1,61 @@
+﻿#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;
+using System.Collections.Generic;
+using HeuristicLab.Data;
+
+namespace HeuristicLab.Problems.DataAnalysis.Benchmarks {
+  public class KeijzerFunctionFour : RegressionBenchmark {
+
+    public KeijzerFunctionFour() {
+      Name = "Keijzer 4 f(x) = 0.3 * x *sin(2 * PI * x)";
+      Description = "Paper: Improving Symbolic Regression with Interval Arithmetic and Linear Scaling" + Environment.NewLine
+        + "Authors: Maarten Keijzer" + Environment.NewLine
+        + "Function: f(x) = 0.3 * x *sin(2 * PI * x)" + Environment.NewLine
+        + "range(train): x = [-1:0.1:1]" + Environment.NewLine
+        + "range(test): x = [-1:0.001:1]" + Environment.NewLine
+        + "Function Set: x + y, x * y, 1/x, -x, sqrt(x)";
+      targetVariable = "Y";
+      inputVariables = new List<string>() { "X" };
+      trainingPartition = new IntRange(0, 21);
+      testPartition = new IntRange(22, 2023);
+    }
+
+    protected override List<double> CalculateFunction(List<List<double>> data) {
+      double x;
+      List<double> results = new List<double>();
+      for (int i = 0; i < data[0].Count; i++) {
+        x = data[0][i];
+        results.Add(0.3 * x * Math.Sin(2 * Math.PI * x));
+      }
+      return results;
+    }
+
+    protected override List<List<double>> GenerateInput(List<List<double>> dataList) {
+      DoubleRange range = new DoubleRange(-1, 1);
+      dataList.Add(RegressionBenchmark.GenerateSteps(range, 0.1));
+      dataList[0].AddRange(RegressionBenchmark.GenerateSteps(range, 0.001));
+
+      return dataList;
+    }
+  }
+}
Index: /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/Keijzer/KeijzerFunctionSeven.cs
===================================================================
--- /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/Keijzer/KeijzerFunctionSeven.cs	(revision 7025)
+++ /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/Keijzer/KeijzerFunctionSeven.cs	(revision 7025)
@@ -0,0 +1,61 @@
+﻿#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;
+using System.Collections.Generic;
+using System.Linq;
+using HeuristicLab.Data;
+
+namespace HeuristicLab.Problems.DataAnalysis.Benchmarks {
+  public class KeijzerFunctionSeven : RegressionBenchmark {
+
+    public KeijzerFunctionSeven() {
+      Name = "Keijzer 7 f(x) = Sum(1 / i) From 1 to X";
+      Description = "Paper: Improving Symbolic Regression with Interval Arithmetic and Linear Scaling" + Environment.NewLine
+        + "Authors: Maarten Keijzer" + Environment.NewLine
+        + "Function: f(x) = (30 * x * y) / ((x - 10)  * y^2)" + Environment.NewLine
+        + "range(train): x = [1:1:50]" + Environment.NewLine
+        + "range(test): x = [1:1:120]" + Environment.NewLine
+        + "Function Set: x + y, x * y, 1/x, -x, sqrt(x)";
+      targetVariable = "Y";
+      inputVariables = new List<string>() { "X" };
+      trainingPartition = new IntRange(0, 50);
+      testPartition = new IntRange(51, 170);
+    }
+
+    protected override List<double> CalculateFunction(List<List<double>> data) {
+      double x;
+      List<double> results = new List<double>();
+      for (int i = 0; i < data[0].Count; i++) {
+        x = data[0][i];
+        results.Add(Enumerable.Range(1, (int)x).Sum(j => 1.0 / j));
+      }
+      return results;
+    }
+
+    protected override List<List<double>> GenerateInput(List<List<double>> dataList) {
+      dataList.Add(RegressionBenchmark.GenerateSteps(new DoubleRange(1, 50), 1));
+      dataList[0].AddRange(RegressionBenchmark.GenerateSteps(new DoubleRange(1, 120), 1));
+
+      return dataList;
+    }
+  }
+}
Index: /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/Keijzer/KeijzerFunctionSix.cs
===================================================================
--- /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/Keijzer/KeijzerFunctionSix.cs	(revision 7025)
+++ /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/Keijzer/KeijzerFunctionSix.cs	(revision 7025)
@@ -0,0 +1,65 @@
+﻿#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;
+using System.Collections.Generic;
+using HeuristicLab.Data;
+
+namespace HeuristicLab.Problems.DataAnalysis.Benchmarks {
+  public class KeijzerFunctionSix : RegressionBenchmark {
+
+    public KeijzerFunctionSix() {
+      Name = "Keijzer 6 f(x) = (30 * x * y) / ((x - 10)  * y^2)";
+      Description = "Paper: Improving Symbolic Regression with Interval Arithmetic and Linear Scaling" + Environment.NewLine
+        + "Authors: Maarten Keijzer" + Environment.NewLine
+        + "Function: f(x) = (30 * x * y) / ((x - 10)  * y^2)" + Environment.NewLine
+        + "range(train): 1000 points x,y = rnd(-1, 1), y = rnd(1, 2)" + Environment.NewLine
+        + "range(test): 10000 points x,y = rnd(-1, 1), y = rnd(1, 2)" + Environment.NewLine
+        + "Function Set: x + y, x * y, 1/x, -x, sqrt(x)";
+      targetVariable = "F";
+      inputVariables = new List<string>() { "X", "Y", "Z" };
+      trainingPartition = new IntRange(0, 1000);
+      testPartition = new IntRange(1001, 11000);
+    }
+
+    protected override List<double> CalculateFunction(List<List<double>> data) {
+      double x, y, z;
+      List<double> results = new List<double>();
+      for (int i = 0; i < data[0].Count; i++) {
+        x = data[0][i];
+        y = data[1][i];
+        z = data[2][i];
+        results.Add((30 * x * y) / ((x - 10) * Math.Pow(y, 2)));
+      }
+      return results;
+    }
+
+    protected override List<List<double>> GenerateInput(List<List<double>> dataList) {
+      DoubleRange rangeXZ = new DoubleRange(-1, 1);
+      DoubleRange rangeY = new DoubleRange(1, 2);
+      dataList.Add(RegressionBenchmark.GenerateUniformDistributedValues(testPartition.End, rangeXZ));
+      dataList.Add(RegressionBenchmark.GenerateUniformDistributedValues(testPartition.End, rangeY));
+      dataList.Add(RegressionBenchmark.GenerateUniformDistributedValues(testPartition.End, rangeXZ));
+
+      return dataList;
+    }
+  }
+}
Index: /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/Keijzer/KeijzerFunctionSixteen.cs
===================================================================
--- /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/Keijzer/KeijzerFunctionSixteen.cs	(revision 7025)
+++ /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/Keijzer/KeijzerFunctionSixteen.cs	(revision 7025)
@@ -0,0 +1,69 @@
+﻿#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;
+using System.Collections.Generic;
+using HeuristicLab.Data;
+
+namespace HeuristicLab.Problems.DataAnalysis.Benchmarks {
+  public class KeijzerFunctionSixteen : RegressionBenchmark {
+
+    public KeijzerFunctionSixteen() {
+      Name = "Keijzer 16 f(x) = x^3 / 5 + y^3 / 2 - y - x";
+      Description = "Paper: Improving Symbolic Regression with Interval Arithmetic and Linear Scaling" + Environment.NewLine
+        + "Authors: Maarten Keijzer" + Environment.NewLine
+        + "Function: f(x, y) = x^3 / 5 + y^3 / 2 - y - x" + Environment.NewLine
+        + "range(train): 20 Testcases x,y = rnd(-3, 3)" + Environment.NewLine
+        + "range(test): x,y = [-3:0.01:3]" + Environment.NewLine
+        + "Function Set: x + y, x * y, 1/x, -x, sqrt(x)";
+      targetVariable = "F";
+      inputVariables = new List<string>() { "X", "Y", "Z" };
+      trainingPartition = new IntRange(0, 20);
+      testPartition = new IntRange(21, 621);
+    }
+
+    protected override List<double> CalculateFunction(List<List<double>> data) {
+      double x, y;
+      List<double> results = new List<double>();
+      for (int i = 0; i < data[0].Count; i++) {
+        x = data[0][i];
+        y = data[1][i];
+        results.Add(Math.Pow(x, 3) / 5 + Math.Pow(y, 3) / 2 - y - x);
+      }
+      return results;
+    }
+
+    protected override List<List<double>> GenerateInput(List<List<double>> dataList) {
+      DoubleRange range = new DoubleRange(-3, 3);
+
+      List<double> oneVariableTestData = RegressionBenchmark.GenerateSteps(range, 0.01);
+      List<List<double>> testData = new List<List<double>>() { oneVariableTestData, oneVariableTestData };
+      testData = RegressionBenchmark.AllCombinationsOf(testData);
+
+      for (int i = 0; i < InputVariable.Count; i++) {
+        dataList.Add(RegressionBenchmark.GenerateUniformDistributedValues(20, range));
+        dataList[i].AddRange(testData[i]);
+      }
+
+      return dataList;
+    }
+  }
+}
Index: /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/Keijzer/KeijzerFunctionThirteen.cs
===================================================================
--- /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/Keijzer/KeijzerFunctionThirteen.cs	(revision 7025)
+++ /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/Keijzer/KeijzerFunctionThirteen.cs	(revision 7025)
@@ -0,0 +1,69 @@
+﻿#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;
+using System.Collections.Generic;
+using HeuristicLab.Data;
+
+namespace HeuristicLab.Problems.DataAnalysis.Benchmarks {
+  public class KeijzerFunctionThirteen : RegressionBenchmark {
+
+    public KeijzerFunctionThirteen() {
+      Name = "Keijzer 13 f(x) = x^4 - x^3 + y^2 / 2 - y";
+      Description = "Paper: Improving Symbolic Regression with Interval Arithmetic and Linear Scaling" + Environment.NewLine
+        + "Authors: Maarten Keijzer" + Environment.NewLine
+        + "Function: f(x, y) = x^4 - x^3 + y^2 / 2 - y" + Environment.NewLine
+        + "range(train): 20 Testcases x,y = rnd(-3, 3)" + Environment.NewLine
+        + "range(test): x,y = [-3:0.01:3]" + Environment.NewLine
+        + "Function Set: x + y, x * y, 1/x, -x, sqrt(x)";
+      targetVariable = "F";
+      inputVariables = new List<string>() { "X", "Y", "Z" };
+      trainingPartition = new IntRange(0, 20);
+      testPartition = new IntRange(21, 621);
+    }
+
+    protected override List<double> CalculateFunction(List<List<double>> data) {
+      double x, y;
+      List<double> results = new List<double>();
+      for (int i = 0; i < data[0].Count; i++) {
+        x = data[0][i];
+        y = data[1][i];
+        results.Add(Math.Pow(x, 4) - Math.Pow(x, 3) + Math.Pow(y, 2) / 2 - y);
+      }
+      return results;
+    }
+
+    protected override List<List<double>> GenerateInput(List<List<double>> dataList) {
+      DoubleRange range = new DoubleRange(-3, 3);
+
+      List<double> oneVariableTestData = RegressionBenchmark.GenerateSteps(range, 0.01);
+      List<List<double>> testData = new List<List<double>>() { oneVariableTestData, oneVariableTestData };
+      testData = RegressionBenchmark.AllCombinationsOf(testData);
+
+      for (int i = 0; i < InputVariable.Count; i++) {
+        dataList.Add(RegressionBenchmark.GenerateUniformDistributedValues(20, range));
+        dataList[i].AddRange(testData[i]);
+      }
+
+      return dataList;
+    }
+  }
+}
Index: /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/Keijzer/KeijzerFunctionTwelve.cs
===================================================================
--- /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/Keijzer/KeijzerFunctionTwelve.cs	(revision 7025)
+++ /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/Keijzer/KeijzerFunctionTwelve.cs	(revision 7025)
@@ -0,0 +1,69 @@
+﻿#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;
+using System.Collections.Generic;
+using HeuristicLab.Data;
+
+namespace HeuristicLab.Problems.DataAnalysis.Benchmarks {
+  public class KeijzerFunctionTwelve : RegressionBenchmark {
+
+    public KeijzerFunctionTwelve() {
+      Name = "Keijzer 12 f(x) = xy + sin((x - 1)(y - 1))";
+      Description = "Paper: Improving Symbolic Regression with Interval Arithmetic and Linear Scaling" + Environment.NewLine
+        + "Authors: Maarten Keijzer" + Environment.NewLine
+        + "Function: f(x, y) = xy + sin((x - 1)(y - 1))" + Environment.NewLine
+        + "range(train): 20 Testcases x,y = rnd(-3, 3)" + Environment.NewLine
+        + "range(test): x,y = [-3:0.01:3]" + Environment.NewLine
+        + "Function Set: x + y, x * y, 1/x, -x, sqrt(x)";
+      targetVariable = "F";
+      inputVariables = new List<string>() { "X", "Y", "Z" };
+      trainingPartition = new IntRange(0, 20);
+      testPartition = new IntRange(21, 621);
+    }
+
+    protected override List<double> CalculateFunction(List<List<double>> data) {
+      double x, y;
+      List<double> results = new List<double>();
+      for (int i = 0; i < data[0].Count; i++) {
+        x = data[0][i];
+        y = data[1][i];
+        results.Add(x * y + Math.Sin((x - 1) * (y - 1)));
+      }
+      return results;
+    }
+
+    protected override List<List<double>> GenerateInput(List<List<double>> dataList) {
+      DoubleRange range = new DoubleRange(-3, 3);
+
+      List<double> oneVariableTestData = RegressionBenchmark.GenerateSteps(range, 0.01);
+      List<List<double>> testData = new List<List<double>>() { oneVariableTestData, oneVariableTestData };
+      testData = RegressionBenchmark.AllCombinationsOf(testData);
+
+      for (int i = 0; i < InputVariable.Count; i++) {
+        dataList.Add(RegressionBenchmark.GenerateUniformDistributedValues(20, range));
+        dataList[i].AddRange(testData[i]);
+      }
+
+      return dataList;
+    }
+  }
+}
Index: /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/Korns/KornFunctionEight.cs
===================================================================
--- /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/Korns/KornFunctionEight.cs	(revision 7025)
+++ /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/Korns/KornFunctionEight.cs	(revision 7025)
@@ -0,0 +1,69 @@
+﻿#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;
+using System.Collections.Generic;
+using HeuristicLab.Data;
+
+namespace HeuristicLab.Problems.DataAnalysis.Benchmarks {
+  public class KornFunctionEight : RegressionBenchmark {
+
+    public KornFunctionEight() {
+      Name = "Korn 8 y = 6.87 + (11 * cos(7.23 * X0 * X3 * X4))";
+      Description = "Paper: Accuracy in Symbolic Regression" + Environment.NewLine
+        + "Authors: Michael F. Korns" + Environment.NewLine
+        + "Function: y = 6.87 + (11 * cos(7.23 * X0 * X3 * X4))" + Environment.NewLine
+        + "Real Numbers: 3.45, -.982, 100.389, and all other real constants" + Environment.NewLine
+        + "Row Features: x1, x2, x9, and all other features" + Environment.NewLine
+        + "Binary Operators: +, -, *, /" + Environment.NewLine
+        + "Unary Operators: sqrt, square, cube, cos, sin, tan, tanh, log, exp" + Environment.NewLine
+        + "\"Our testing regimen uses only statistical best practices out-of-sample testing techniques. "
+        + "We test each of the test cases on matrices of 10000 rows by 1 to 5 columns with no noise. "
+        + "For each test a training matrix is filled with random numbers between -50 and +50. The test case "
+        + "target expressions are limited to one basis function whose maximum depth is three grammar nodes.\"";
+      targetVariable = "Y";
+      inputVariables = new List<string>() { "X0", "X3", "X4" };
+      trainingPartition = new IntRange(0, 5000);
+      testPartition = new IntRange(5001, 10000);
+    }
+
+    protected override List<double> CalculateFunction(List<List<double>> data) {
+      double x0, x3, x4;
+      List<double> results = new List<double>();
+      for (int i = 0; i < data[0].Count; i++) {
+        x0 = data[0][i];
+        x3 = data[1][i];
+        x4 = data[2][i];
+        results.Add(6.87 + (11 * Math.Cos(7.23 * x0 * x3 * x4)));
+      }
+      return results;
+    }
+
+    protected override List<List<double>> GenerateInput(List<List<double>> dataList) {
+      DoubleRange range = new DoubleRange(-50, 50);
+      for (int i = 0; i < inputVariables.Count; i++) {
+        dataList.Add(RegressionBenchmark.GenerateUniformDistributedValues(testPartition.End, range));
+      }
+
+      return dataList;
+    }
+  }
+}
Index: /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/Korns/KornFunctionEleven.cs
===================================================================
--- /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/Korns/KornFunctionEleven.cs	(revision 7025)
+++ /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/Korns/KornFunctionEleven.cs	(revision 7025)
@@ -0,0 +1,67 @@
+﻿#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;
+using System.Collections.Generic;
+using HeuristicLab.Data;
+
+namespace HeuristicLab.Problems.DataAnalysis.Benchmarks {
+  public class KornsFunctionEleven : RegressionBenchmark {
+
+    public KornsFunctionEleven() {
+      Name = "Korn 11 y = 6.87 + (11 * cos(7.23 * X0 * X0 * X0))";
+      Description = "Paper: Accuracy in Symbolic Regression" + Environment.NewLine
+        + "Authors: Michael F. Korns" + Environment.NewLine
+        + "Function: y = 6.87 + (11 * cos(7.23 * X0 * X0 * X0))" + Environment.NewLine
+        + "Real Numbers: 3.45, -.982, 100.389, and all other real constants" + Environment.NewLine
+        + "Row Features: x1, x2, x9, and all other features" + Environment.NewLine
+        + "Binary Operators: +, -, *, /" + Environment.NewLine
+        + "Unary Operators: sqrt, square, cube, cos, sin, tan, tanh, log, exp" + Environment.NewLine
+        + "\"Our testing regimen uses only statistical best practices out-of-sample testing techniques. "
+        + "We test each of the test cases on matrices of 10000 rows by 1 to 5 columns with no noise. "
+        + "For each test a training matrix is filled with random numbers between -50 and +50. The test case "
+        + "target expressions are limited to one basis function whose maximum depth is three grammar nodes.\"";
+      targetVariable = "Y";
+      inputVariables = new List<string>() { "X0" };
+      trainingPartition = new IntRange(0, 5000);
+      testPartition = new IntRange(5001, 10000);
+    }
+
+    protected override List<double> CalculateFunction(List<List<double>> data) {
+      double x0;
+      List<double> results = new List<double>();
+      for (int i = 0; i < data[0].Count; i++) {
+        x0 = data[0][i];
+        results.Add(6.87 + (11 * Math.Cos(7.23 * x0 * x0 * x0)));
+      }
+      return results;
+    }
+
+    protected override List<List<double>> GenerateInput(List<List<double>> dataList) {
+      DoubleRange range = new DoubleRange(-50, 50);
+      for (int i = 0; i < inputVariables.Count; i++) {
+        dataList.Add(RegressionBenchmark.GenerateUniformDistributedValues(testPartition.End, range));
+      }
+
+      return dataList;
+    }
+  }
+}
Index: /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/Korns/KornFunctionFive.cs
===================================================================
--- /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/Korns/KornFunctionFive.cs	(revision 7025)
+++ /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/Korns/KornFunctionFive.cs	(revision 7025)
@@ -0,0 +1,67 @@
+﻿#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;
+using System.Collections.Generic;
+using HeuristicLab.Data;
+
+namespace HeuristicLab.Problems.DataAnalysis.Benchmarks {
+  public class KornFunctionFive : RegressionBenchmark {
+
+    public KornFunctionFive() {
+      Name = "Korn 5 y = 3.0 + (2.13 * log(X4))";
+      Description = "Paper: Accuracy in Symbolic Regression" + Environment.NewLine
+        + "Authors: Michael F. Korns" + Environment.NewLine
+        + "Function: y = 3.0 + (2.13 * log(X4))" + Environment.NewLine
+        + "Real Numbers: 3.45, -.982, 100.389, and all other real constants" + Environment.NewLine
+        + "Row Features: x1, x2, x9, and all other features" + Environment.NewLine
+        + "Binary Operators: +, -, *, /" + Environment.NewLine
+        + "Unary Operators: sqrt, square, cube, cos, sin, tan, tanh, log, exp" + Environment.NewLine
+        + "\"Our testing regimen uses only statistical best practices out-of-sample testing techniques. "
+        + "We test each of the test cases on matrices of 10000 rows by 1 to 5 columns with no noise. "
+        + "For each test a training matrix is filled with random numbers between -50 and +50. The test case "
+        + "target expressions are limited to one basis function whose maximum depth is three grammar nodes.\"";
+      targetVariable = "Y";
+      inputVariables = new List<string>() { "X4" };
+      trainingPartition = new IntRange(0, 5000);
+      testPartition = new IntRange(5001, 10000);
+    }
+
+    protected override List<double> CalculateFunction(List<List<double>> data) {
+      double x4;
+      List<double> results = new List<double>();
+      for (int i = 0; i < data[0].Count; i++) {
+        x4 = data[0][i];
+        results.Add(3.0 + (2.13 * Math.Log(x4)));
+      }
+      return results;
+    }
+
+    protected override List<List<double>> GenerateInput(List<List<double>> dataList) {
+      DoubleRange range = new DoubleRange(-50, 50);
+      for (int i = 0; i < inputVariables.Count; i++) {
+        dataList.Add(RegressionBenchmark.GenerateUniformDistributedValues(testPartition.End, range));
+      }
+
+      return dataList;
+    }
+  }
+}
Index: /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/Korns/KornFunctionFiveteen.cs
===================================================================
--- /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/Korns/KornFunctionFiveteen.cs	(revision 7025)
+++ /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/Korns/KornFunctionFiveteen.cs	(revision 7025)
@@ -0,0 +1,70 @@
+﻿#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;
+using System.Collections.Generic;
+using HeuristicLab.Data;
+
+namespace HeuristicLab.Problems.DataAnalysis.Benchmarks {
+  public class KornFunctionFiveteen : RegressionBenchmark {
+
+    public KornFunctionFiveteen() {
+      Name = "Korn 15 y = 12.0 - (6.0 * ((tan(X0) / exp(X1)) * (log(X2) - tan(X3))))";
+      Description = "Paper: Accuracy in Symbolic Regression" + Environment.NewLine
+        + "Authors: Michael F. Korns" + Environment.NewLine
+        + "Function: y = 12.0 - (6.0 * ((tan(X0) / exp(X1)) * (log(X2) - tan(X3))))" + Environment.NewLine
+        + "Real Numbers: 3.45, -.982, 100.389, and all other real constants" + Environment.NewLine
+        + "Row Features: x1, x2, x9, and all other features" + Environment.NewLine
+        + "Binary Operators: +, -, *, /" + Environment.NewLine
+        + "Unary Operators: sqrt, square, cube, cos, sin, tan, tanh, log, exp" + Environment.NewLine
+        + "\"Our testing regimen uses only statistical best practices out-of-sample testing techniques. "
+        + "We test each of the test cases on matrices of 10000 rows by 1 to 5 columns with no noise. "
+        + "For each test a training matrix is filled with random numbers between -50 and +50. The test case "
+        + "target expressions are limited to one basis function whose maximum depth is three grammar nodes.\"";
+      targetVariable = "Y";
+      inputVariables = new List<string>() { "X0", "X1", "X2", "X3" };
+      trainingPartition = new IntRange(0, 5000);
+      testPartition = new IntRange(5001, 10000);
+    }
+
+    protected override List<double> CalculateFunction(List<List<double>> data) {
+      double x0, x1, x2, x3;
+      List<double> results = new List<double>();
+      for (int i = 0; i < data[0].Count; i++) {
+        x0 = data[0][i];
+        x1 = data[1][i];
+        x2 = data[2][i];
+        x3 = data[3][i];
+        results.Add(12.0 - (6.0 * ((Math.Tan(x0) / Math.Exp(x1)) * (Math.Log(x2) - Math.Tan(x3)))));
+      }
+      return results;
+    }
+
+    protected override List<List<double>> GenerateInput(List<List<double>> dataList) {
+      DoubleRange range = new DoubleRange(-50, 50);
+      for (int i = 0; i < inputVariables.Count; i++) {
+        dataList.Add(RegressionBenchmark.GenerateUniformDistributedValues(testPartition.End, range));
+      }
+
+      return dataList;
+    }
+  }
+}
Index: /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/Korns/KornFunctionFour.cs
===================================================================
--- /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/Korns/KornFunctionFour.cs	(revision 7025)
+++ /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/Korns/KornFunctionFour.cs	(revision 7025)
@@ -0,0 +1,67 @@
+﻿#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;
+using System.Collections.Generic;
+using HeuristicLab.Data;
+
+namespace HeuristicLab.Problems.DataAnalysis.Benchmarks {
+  public class KornFunctionFour : RegressionBenchmark {
+
+    public KornFunctionFour() {
+      Name = "Korn 4 y = -2.3 + (0.13 * sin(X2))";
+      Description = "Paper: Accuracy in Symbolic Regression" + Environment.NewLine
+        + "Authors: Michael F. Korns" + Environment.NewLine
+        + "Function: y = -2.3 + (0.13 * sin(X2))" + Environment.NewLine
+        + "Real Numbers: 3.45, -.982, 100.389, and all other real constants" + Environment.NewLine
+        + "Row Features: x1, x2, x9, and all other features" + Environment.NewLine
+        + "Binary Operators: +, -, *, /" + Environment.NewLine
+        + "Unary Operators: sqrt, square, cube, cos, sin, tan, tanh, log, exp" + Environment.NewLine
+        + "\"Our testing regimen uses only statistical best practices out-of-sample testing techniques. "
+        + "We test each of the test cases on matrices of 10000 rows by 1 to 5 columns with no noise. "
+        + "For each test a training matrix is filled with random numbers between -50 and +50. The test case "
+        + "target expressions are limited to one basis function whose maximum depth is three grammar nodes.\"";
+      targetVariable = "Y";
+      inputVariables = new List<string>() { "X2" };
+      trainingPartition = new IntRange(0, 5000);
+      testPartition = new IntRange(5001, 10000);
+    }
+
+    protected override List<double> CalculateFunction(List<List<double>> data) {
+      double x2;
+      List<double> results = new List<double>();
+      for (int i = 0; i < data[0].Count; i++) {
+        x2 = data[0][i];
+        results.Add(-2.3 + (0.13 * Math.Sin(x2)));
+      }
+      return results;
+    }
+
+    protected override List<List<double>> GenerateInput(List<List<double>> dataList) {
+      DoubleRange range = new DoubleRange(-50, 50);
+      for (int i = 0; i < inputVariables.Count; i++) {
+        dataList.Add(RegressionBenchmark.GenerateUniformDistributedValues(testPartition.End, range));
+      }
+
+      return dataList;
+    }
+  }
+}
Index: /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/Korns/KornFunctionFourteen.cs
===================================================================
--- /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/Korns/KornFunctionFourteen.cs	(revision 7025)
+++ /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/Korns/KornFunctionFourteen.cs	(revision 7025)
@@ -0,0 +1,70 @@
+﻿#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;
+using System.Collections.Generic;
+using HeuristicLab.Data;
+
+namespace HeuristicLab.Problems.DataAnalysis.Benchmarks {
+  public class KornFunctionFourteen : RegressionBenchmark {
+
+    public KornFunctionFourteen() {
+      Name = "Korn 14 y = 22.0 + (4.2 * ((cos(X0) - tan(X1)) * (tanh(X2) / sin(X3))))";
+      Description = "Paper: Accuracy in Symbolic Regression" + Environment.NewLine
+        + "Authors: Michael F. Korns" + Environment.NewLine
+        + "Function: y = 22.0 + (4.2 * ((cos(X0) - tan(X1)) * (tanh(X2) / sin(X3))))" + Environment.NewLine
+        + "Real Numbers: 3.45, -.982, 100.389, and all other real constants" + Environment.NewLine
+        + "Row Features: x1, x2, x9, and all other features" + Environment.NewLine
+        + "Binary Operators: +, -, *, /" + Environment.NewLine
+        + "Unary Operators: sqrt, square, cube, cos, sin, tan, tanh, log, exp" + Environment.NewLine
+        + "\"Our testing regimen uses only statistical best practices out-of-sample testing techniques. "
+        + "We test each of the test cases on matrices of 10000 rows by 1 to 5 columns with no noise. "
+        + "For each test a training matrix is filled with random numbers between -50 and +50. The test case "
+        + "target expressions are limited to one basis function whose maximum depth is three grammar nodes.\"";
+      targetVariable = "Y";
+      inputVariables = new List<string>() { "X0", "X1", "X2", "X3" };
+      trainingPartition = new IntRange(0, 5000);
+      testPartition = new IntRange(5001, 10000);
+    }
+
+    protected override List<double> CalculateFunction(List<List<double>> data) {
+      double x0, x1, x2, x3;
+      List<double> results = new List<double>();
+      for (int i = 0; i < data[0].Count; i++) {
+        x0 = data[0][i];
+        x1 = data[1][i];
+        x2 = data[2][i];
+        x3 = data[3][i];
+        results.Add(22.0 + (4.2 * ((Math.Cos(x0) - Math.Tan(x1)) * (Math.Tanh(x2) / Math.Sin(x3)))));
+      }
+      return results;
+    }
+
+    protected override List<List<double>> GenerateInput(List<List<double>> dataList) {
+      DoubleRange range = new DoubleRange(-50, 50);
+      for (int i = 0; i < inputVariables.Count; i++) {
+        dataList.Add(RegressionBenchmark.GenerateUniformDistributedValues(testPartition.End, range));
+      }
+
+      return dataList;
+    }
+  }
+}
Index: /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/Korns/KornFunctionNine.cs
===================================================================
--- /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/Korns/KornFunctionNine.cs	(revision 7025)
+++ /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/Korns/KornFunctionNine.cs	(revision 7025)
@@ -0,0 +1,70 @@
+﻿#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;
+using System.Collections.Generic;
+using HeuristicLab.Data;
+
+namespace HeuristicLab.Problems.DataAnalysis.Benchmarks {
+  public class KornFunctionNine : RegressionBenchmark {
+
+    public KornFunctionNine() {
+      Name = "Korn 9 y = ((sqrt(X0) / log(X1)) * (exp(X2) / square(X3)))";
+      Description = "Paper: Accuracy in Symbolic Regression" + Environment.NewLine
+        + "Authors: Michael F. Korns" + Environment.NewLine
+        + "Function: y = ((sqrt(X0) / log(X1)) * (exp(X2) / square(X3)))" + Environment.NewLine
+        + "Real Numbers: 3.45, -.982, 100.389, and all other real constants" + Environment.NewLine
+        + "Row Features: x1, x2, x9, and all other features" + Environment.NewLine
+        + "Binary Operators: +, -, *, /" + Environment.NewLine
+        + "Unary Operators: sqrt, square, cube, cos, sin, tan, tanh, log, exp" + Environment.NewLine
+        + "\"Our testing regimen uses only statistical best practices out-of-sample testing techniques. "
+        + "We test each of the test cases on matrices of 10000 rows by 1 to 5 columns with no noise. "
+        + "For each test a training matrix is filled with random numbers between -50 and +50. The test case "
+        + "target expressions are limited to one basis function whose maximum depth is three grammar nodes.\"";
+      targetVariable = "Y";
+      inputVariables = new List<string>() { "X0", "X1", "X2", "X3" };
+      trainingPartition = new IntRange(0, 5000);
+      testPartition = new IntRange(5001, 10000);
+    }
+
+    protected override List<double> CalculateFunction(List<List<double>> data) {
+      double x0, x1, x2, x3;
+      List<double> results = new List<double>();
+      for (int i = 0; i < data[0].Count; i++) {
+        x0 = data[0][i];
+        x1 = data[1][i];
+        x2 = data[2][i];
+        x3 = data[3][i];
+        results.Add(((Math.Sqrt(x0) / Math.Log(x1)) * (Math.Exp(x2) / Math.Pow(x3, 2))));
+      }
+      return results;
+    }
+
+    protected override List<List<double>> GenerateInput(List<List<double>> dataList) {
+      DoubleRange range = new DoubleRange(-50, 50);
+      for (int i = 0; i < inputVariables.Count; i++) {
+        dataList.Add(RegressionBenchmark.GenerateUniformDistributedValues(testPartition.End, range));
+      }
+
+      return dataList;
+    }
+  }
+}
Index: /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/Korns/KornFunctionOne.cs
===================================================================
--- /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/Korns/KornFunctionOne.cs	(revision 7025)
+++ /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/Korns/KornFunctionOne.cs	(revision 7025)
@@ -0,0 +1,65 @@
+﻿#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;
+using System.Collections.Generic;
+using HeuristicLab.Data;
+
+namespace HeuristicLab.Problems.DataAnalysis.Benchmarks {
+  public class KornsFunctionOne : RegressionBenchmark {
+
+    public KornsFunctionOne() {
+      Name = "Korn 1 y = 1.57 + (24.3 * X3)";
+      Description = "Paper: Accuracy in Symbolic Regression" + Environment.NewLine
+        + "Authors: Michael F. Korns" + Environment.NewLine
+        + "Function: y = 1.57 + (24.3 * X3)" + Environment.NewLine
+        + "Real Numbers: 3.45, -.982, 100.389, and all other real constants" + Environment.NewLine
+        + "Row Features: x1, x2, x9, and all other features" + Environment.NewLine
+        + "Binary Operators: +, -, *, /" + Environment.NewLine
+        + "Unary Operators: sqrt, square, cube, cos, sin, tan, tanh, log, exp" + Environment.NewLine
+        + "\"Our testing regimen uses only statistical best practices out-of-sample testing techniques. "
+        + "We test each of the test cases on matrices of 10000 rows by 1 to 5 columns with no noise. "
+        + "For each test a training matrix is filled with random numbers between -50 and +50. The test case "
+        + "target expressions are limited to one basis function whose maximum depth is three grammar nodes.\"";
+      targetVariable = "Y";
+      inputVariables = new List<string>() { "X3" };
+      trainingPartition = new IntRange(0, 5000);
+      testPartition = new IntRange(5001, 10000);
+    }
+
+    protected override List<double> CalculateFunction(List<List<double>> data) {
+      double x3;
+      List<double> results = new List<double>();
+      for (int i = 0; i < data[0].Count; i++) {
+        x3 = data[0][i];
+        results.Add(1.57 + (24.3 * x3));
+      }
+      return results;
+    }
+
+    protected override List<List<double>> GenerateInput(List<List<double>> dataList) {
+      DoubleRange range = new DoubleRange(-50, 50);
+      dataList.Add(RegressionBenchmark.GenerateUniformDistributedValues(testPartition.End, range));
+
+      return dataList;
+    }
+  }
+}
Index: /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/Korns/KornFunctionSeven.cs
===================================================================
--- /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/Korns/KornFunctionSeven.cs	(revision 7025)
+++ /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/Korns/KornFunctionSeven.cs	(revision 7025)
@@ -0,0 +1,67 @@
+﻿#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;
+using System.Collections.Generic;
+using HeuristicLab.Data;
+
+namespace HeuristicLab.Problems.DataAnalysis.Benchmarks {
+  public class KornFunctionSeven : RegressionBenchmark {
+
+    public KornFunctionSeven() {
+      Name = "Korn 7 y = 213.80940889 - (213.80940889 * exp(-0.54723748542 * X0))";
+      Description = "Paper: Accuracy in Symbolic Regression" + Environment.NewLine
+        + "Authors: Michael F. Korns" + Environment.NewLine
+        + "Function: y = 213.80940889 - (213.80940889 * exp(-0.54723748542 * X0))" + Environment.NewLine
+        + "Real Numbers: 3.45, -.982, 100.389, and all other real constants" + Environment.NewLine
+        + "Row Features: x1, x2, x9, and all other features" + Environment.NewLine
+        + "Binary Operators: +, -, *, /" + Environment.NewLine
+        + "Unary Operators: sqrt, square, cube, cos, sin, tan, tanh, log, exp" + Environment.NewLine
+        + "\"Our testing regimen uses only statistical best practices out-of-sample testing techniques. "
+        + "We test each of the test cases on matrices of 10000 rows by 1 to 5 columns with no noise. "
+        + "For each test a training matrix is filled with random numbers between -50 and +50. The test case "
+        + "target expressions are limited to one basis function whose maximum depth is three grammar nodes.\"";
+      targetVariable = "Y";
+      inputVariables = new List<string>() { "X0" };
+      trainingPartition = new IntRange(0, 5000);
+      testPartition = new IntRange(5001, 10000);
+    }
+
+    protected override List<double> CalculateFunction(List<List<double>> data) {
+      double x0;
+      List<double> results = new List<double>();
+      for (int i = 0; i < data[0].Count; i++) {
+        x0 = data[0][i];
+        results.Add(213.80940889 - (213.80940889 * Math.Exp(-0.54723748542 * x0)));
+      }
+      return results;
+    }
+
+    protected override List<List<double>> GenerateInput(List<List<double>> dataList) {
+      DoubleRange range = new DoubleRange(-50, 50);
+      for (int i = 0; i < inputVariables.Count; i++) {
+        dataList.Add(RegressionBenchmark.GenerateUniformDistributedValues(testPartition.End, range));
+      }
+
+      return dataList;
+    }
+  }
+}
Index: /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/Korns/KornFunctionSix.cs
===================================================================
--- /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/Korns/KornFunctionSix.cs	(revision 7025)
+++ /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/Korns/KornFunctionSix.cs	(revision 7025)
@@ -0,0 +1,67 @@
+﻿#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;
+using System.Collections.Generic;
+using HeuristicLab.Data;
+
+namespace HeuristicLab.Problems.DataAnalysis.Benchmarks {
+  public class KornsFunctionSix : RegressionBenchmark {
+
+    public KornsFunctionSix() {
+      Name = "Korn 6 y = 1.3 + (0.13 * sqrt(X0))";
+      Description = "Paper: Accuracy in Symbolic Regression" + Environment.NewLine
+        + "Authors: Michael F. Korns" + Environment.NewLine
+        + "Function: y = 1.3 + (0.13 * sqrt(X0))" + Environment.NewLine
+        + "Real Numbers: 3.45, -.982, 100.389, and all other real constants" + Environment.NewLine
+        + "Row Features: x1, x2, x9, and all other features" + Environment.NewLine
+        + "Binary Operators: +, -, *, /" + Environment.NewLine
+        + "Unary Operators: sqrt, square, cube, cos, sin, tan, tanh, log, exp" + Environment.NewLine
+        + "\"Our testing regimen uses only statistical best practices out-of-sample testing techniques. "
+        + "We test each of the test cases on matrices of 10000 rows by 1 to 5 columns with no noise. "
+        + "For each test a training matrix is filled with random numbers between -50 and +50. The test case "
+        + "target expressions are limited to one basis function whose maximum depth is three grammar nodes.\"";
+      targetVariable = "Y";
+      inputVariables = new List<string>() { "X0" };
+      trainingPartition = new IntRange(0, 5000);
+      testPartition = new IntRange(5001, 10000);
+    }
+
+    protected override List<double> CalculateFunction(List<List<double>> data) {
+      double x0;
+      List<double> results = new List<double>();
+      for (int i = 0; i < data[0].Count; i++) {
+        x0 = data[0][i];
+        results.Add(1.3 + (0.13 * Math.Sqrt(x0)));
+      }
+      return results;
+    }
+
+    protected override List<List<double>> GenerateInput(List<List<double>> dataList) {
+      DoubleRange range = new DoubleRange(-50, 50);
+      for (int i = 0; i < inputVariables.Count; i++) {
+        dataList.Add(RegressionBenchmark.GenerateUniformDistributedValues(testPartition.End, range));
+      }
+
+      return dataList;
+    }
+  }
+}
Index: /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/Korns/KornFunctionTen.cs
===================================================================
--- /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/Korns/KornFunctionTen.cs	(revision 7025)
+++ /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/Korns/KornFunctionTen.cs	(revision 7025)
@@ -0,0 +1,70 @@
+﻿#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;
+using System.Collections.Generic;
+using HeuristicLab.Data;
+
+namespace HeuristicLab.Problems.DataAnalysis.Benchmarks {
+  public class KornFunctionTen : RegressionBenchmark {
+
+    public KornFunctionTen() {
+      Name = "Korn 10 y = 0.81 + (24.3 * (((2.0 * X1) + (3.0 * square(X2))) / ((4.0 * cube(X3)) + (5.0 * quart(X4)))))";
+      Description = "Paper: Accuracy in Symbolic Regression" + Environment.NewLine
+        + "Authors: Michael F. Korns" + Environment.NewLine
+        + "Function: y = 0.81 + (24.3 * (((2.0 * X1) + (3.0 * square(X2))) / ((4.0 * cube(X3)) + (5.0 * quart(X4)))))" + Environment.NewLine
+        + "Real Numbers: 3.45, -.982, 100.389, and all other real constants" + Environment.NewLine
+        + "Row Features: x1, x2, x9, and all other features" + Environment.NewLine
+        + "Binary Operators: +, -, *, /" + Environment.NewLine
+        + "Unary Operators: sqrt, square, cube, cos, sin, tan, tanh, log, exp" + Environment.NewLine
+        + "\"Our testing regimen uses only statistical best practices out-of-sample testing techniques. "
+        + "We test each of the test cases on matrices of 10000 rows by 1 to 5 columns with no noise. "
+        + "For each test a training matrix is filled with random numbers between -50 and +50. The test case "
+        + "target expressions are limited to one basis function whose maximum depth is three grammar nodes.\"";
+      targetVariable = "Y";
+      inputVariables = new List<string>() { "X1", "X2", "X3", "X4" };
+      trainingPartition = new IntRange(0, 5000);
+      testPartition = new IntRange(5001, 10000);
+    }
+
+    protected override List<double> CalculateFunction(List<List<double>> data) {
+      double x1, x2, x3, x4;
+      List<double> results = new List<double>();
+      for (int i = 0; i < data[0].Count; i++) {
+        x1 = data[0][i];
+        x2 = data[1][i];
+        x3 = data[2][i];
+        x4 = data[3][i];
+        results.Add(0.81 + (24.3 * (((2.0 * x1) + (3.0 * Math.Pow(x2, 2))) / ((4.0 * Math.Pow(x3, 3)) + (5.0 * Math.Pow(x4, 4))))));
+      }
+      return results;
+    }
+
+    protected override List<List<double>> GenerateInput(List<List<double>> dataList) {
+      DoubleRange range = new DoubleRange(-50, 50);
+      for (int i = 0; i < inputVariables.Count; i++) {
+        dataList.Add(RegressionBenchmark.GenerateUniformDistributedValues(testPartition.End, range));
+      }
+
+      return dataList;
+    }
+  }
+}
Index: /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/Korns/KornFunctionThirteen.cs
===================================================================
--- /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/Korns/KornFunctionThirteen.cs	(revision 7025)
+++ /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/Korns/KornFunctionThirteen.cs	(revision 7025)
@@ -0,0 +1,70 @@
+﻿#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;
+using System.Collections.Generic;
+using HeuristicLab.Data;
+
+namespace HeuristicLab.Problems.DataAnalysis.Benchmarks {
+  public class KornFunctionThirteen : RegressionBenchmark {
+
+    public KornFunctionThirteen() {
+      Name = "Korn 13 y = 32.0 - (3.0 * ((tan(X0) / tan(X1)) * (tan(X2) / tan(X3))))";
+      Description = "Paper: Accuracy in Symbolic Regression" + Environment.NewLine
+        + "Authors: Michael F. Korns" + Environment.NewLine
+        + "Function: y = 32.0 - (3.0 * ((tan(X0) / tan(X1)) * (tan(X2) / tan(X3))))" + Environment.NewLine
+        + "Real Numbers: 3.45, -.982, 100.389, and all other real constants" + Environment.NewLine
+        + "Row Features: x1, x2, x9, and all other features" + Environment.NewLine
+        + "Binary Operators: +, -, *, /" + Environment.NewLine
+        + "Unary Operators: sqrt, square, cube, cos, sin, tan, tanh, log, exp" + Environment.NewLine
+        + "\"Our testing regimen uses only statistical best practices out-of-sample testing techniques. "
+        + "We test each of the test cases on matrices of 10000 rows by 1 to 5 columns with no noise. "
+        + "For each test a training matrix is filled with random numbers between -50 and +50. The test case "
+        + "target expressions are limited to one basis function whose maximum depth is three grammar nodes.\"";
+      targetVariable = "Y";
+      inputVariables = new List<string>() { "X0", "X1", "X2", "X3" };
+      trainingPartition = new IntRange(0, 5000);
+      testPartition = new IntRange(5001, 10000);
+    }
+
+    protected override List<double> CalculateFunction(List<List<double>> data) {
+      double x0, x1, x2, x3;
+      List<double> results = new List<double>();
+      for (int i = 0; i < data[0].Count; i++) {
+        x0 = data[0][i];
+        x1 = data[1][i];
+        x2 = data[2][i];
+        x3 = data[3][i];
+        results.Add(32.0 - (3.0 * ((Math.Tan(x0) / Math.Tan(x1)) * (Math.Tan(x2) / Math.Tan(x3)))));
+      }
+      return results;
+    }
+
+    protected override List<List<double>> GenerateInput(List<List<double>> dataList) {
+      DoubleRange range = new DoubleRange(-50, 50);
+      for (int i = 0; i < inputVariables.Count; i++) {
+        dataList.Add(RegressionBenchmark.GenerateUniformDistributedValues(testPartition.End, range));
+      }
+
+      return dataList;
+    }
+  }
+}
Index: /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/Korns/KornFunctionThree.cs
===================================================================
--- /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/Korns/KornFunctionThree.cs	(revision 7025)
+++ /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/Korns/KornFunctionThree.cs	(revision 7025)
@@ -0,0 +1,70 @@
+﻿#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;
+using System.Collections.Generic;
+using HeuristicLab.Data;
+
+namespace HeuristicLab.Problems.DataAnalysis.Benchmarks {
+  public class KornFunctionThree : RegressionBenchmark {
+
+    public KornFunctionThree() {
+      Name = "Korn 3 y = -5.41 + (4.9 * (((X3 - X0) + (X1 / X4)) / (3 * X4)))";
+      Description = "Paper: Accuracy in Symbolic Regression" + Environment.NewLine
+        + "Authors: Michael F. Korns" + Environment.NewLine
+        + "Function: y = 1.57 + (24.3 * X3)" + Environment.NewLine
+        + "Real Numbers: 3.45, -.982, 100.389, and all other real constants" + Environment.NewLine
+        + "Row Features: x1, x2, x9, and all other features" + Environment.NewLine
+        + "Binary Operators: +, -, *, /" + Environment.NewLine
+        + "Unary Operators: sqrt, square, cube, cos, sin, tan, tanh, log, exp" + Environment.NewLine
+        + "\"Our testing regimen uses only statistical best practices out-of-sample testing techniques. "
+        + "We test each of the test cases on matrices of 10000 rows by 1 to 5 columns with no noise. "
+        + "For each test a training matrix is filled with random numbers between -50 and +50. The test case "
+        + "target expressions are limited to one basis function whose maximum depth is three grammar nodes.\"";
+      targetVariable = "Y";
+      inputVariables = new List<string>() { "X0", "X1", "X3", "X4" };
+      trainingPartition = new IntRange(0, 5000);
+      testPartition = new IntRange(5001, 10000);
+    }
+
+    protected override List<double> CalculateFunction(List<List<double>> data) {
+      double x0, x1, x3, x4;
+      List<double> results = new List<double>();
+      for (int i = 0; i < data[0].Count; i++) {
+        x0 = data[0][i];
+        x1 = data[1][i];
+        x3 = data[2][i];
+        x4 = data[3][i];
+        results.Add(-5.41 + (4.9 * (((x3 - x0) + (x1 / x4)) / (3 * x4))));
+      }
+      return results;
+    }
+
+    protected override List<List<double>> GenerateInput(List<List<double>> dataList) {
+      DoubleRange range = new DoubleRange(-50, 50);
+      for (int i = 0; i < inputVariables.Count; i++) {
+        dataList.Add(RegressionBenchmark.GenerateUniformDistributedValues(testPartition.End, range));
+      }
+
+      return dataList;
+    }
+  }
+}
Index: /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/Korns/KornFunctionTwelve.cs
===================================================================
--- /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/Korns/KornFunctionTwelve.cs	(revision 7025)
+++ /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/Korns/KornFunctionTwelve.cs	(revision 7025)
@@ -0,0 +1,68 @@
+﻿#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;
+using System.Collections.Generic;
+using HeuristicLab.Data;
+
+namespace HeuristicLab.Problems.DataAnalysis.Benchmarks {
+  public class KornFunctionTwelve : RegressionBenchmark {
+
+    public KornFunctionTwelve() {
+      Name = "Korn 12 y = 2.0 - (2.1 * (cos(9.8 * X0) * sin(1.3 * X4)))";
+      Description = "Paper: Accuracy in Symbolic Regression" + Environment.NewLine
+        + "Authors: Michael F. Korns" + Environment.NewLine
+        + "Function: y = 2.0 - (2.1 * (cos(9.8 * X0) * sin(1.3 * X4)))" + Environment.NewLine
+        + "Real Numbers: 3.45, -.982, 100.389, and all other real constants" + Environment.NewLine
+        + "Row Features: x1, x2, x9, and all other features" + Environment.NewLine
+        + "Binary Operators: +, -, *, /" + Environment.NewLine
+        + "Unary Operators: sqrt, square, cube, cos, sin, tan, tanh, log, exp" + Environment.NewLine
+        + "\"Our testing regimen uses only statistical best practices out-of-sample testing techniques. "
+        + "We test each of the test cases on matrices of 10000 rows by 1 to 5 columns with no noise. "
+        + "For each test a training matrix is filled with random numbers between -50 and +50. The test case "
+        + "target expressions are limited to one basis function whose maximum depth is three grammar nodes.\"";
+      targetVariable = "Y";
+      inputVariables = new List<string>() { "X0", "X4" };
+      trainingPartition = new IntRange(0, 5000);
+      testPartition = new IntRange(5001, 10000);
+    }
+
+    protected override List<double> CalculateFunction(List<List<double>> data) {
+      double x0, x4;
+      List<double> results = new List<double>();
+      for (int i = 0; i < data[0].Count; i++) {
+        x0 = data[0][i];
+        x4 = data[0][i];
+        results.Add(2.0 - (2.1 * (Math.Cos(9.8 * x0) * Math.Sin(1.3 * x4))));
+      }
+      return results;
+    }
+
+    protected override List<List<double>> GenerateInput(List<List<double>> dataList) {
+      DoubleRange range = new DoubleRange(-50, 50);
+      for (int i = 0; i < inputVariables.Count; i++) {
+        dataList.Add(RegressionBenchmark.GenerateUniformDistributedValues(testPartition.End, range));
+      }
+
+      return dataList;
+    }
+  }
+}
Index: /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/Korns/KornFunctionTwo.cs
===================================================================
--- /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/Korns/KornFunctionTwo.cs	(revision 7025)
+++ /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/Korns/KornFunctionTwo.cs	(revision 7025)
@@ -0,0 +1,69 @@
+﻿#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;
+using System.Collections.Generic;
+using HeuristicLab.Data;
+
+namespace HeuristicLab.Problems.DataAnalysis.Benchmarks {
+  public class KornFunctionTwo : RegressionBenchmark {
+
+    public KornFunctionTwo() {
+      Name = "Korn 2 y = 0.23 + (14.2 * ((X3 + X1) / (3.0 * X4)))";
+      Description = "Paper: Accuracy in Symbolic Regression" + Environment.NewLine
+        + "Authors: Michael F. Korns" + Environment.NewLine
+        + "Function: y = 0.23 + (14.2 * ((X3 + X1) / (3.0 * X4)))" + Environment.NewLine
+        + "Real Numbers: 3.45, -.982, 100.389, and all other real constants" + Environment.NewLine
+        + "Row Features: x1, x2, x9, and all other features" + Environment.NewLine
+        + "Binary Operators: +, -, *, /" + Environment.NewLine
+        + "Unary Operators: sqrt, square, cube, cos, sin, tan, tanh, log, exp" + Environment.NewLine
+        + "\"Our testing regimen uses only statistical best practices out-of-sample testing techniques. "
+        + "We test each of the test cases on matrices of 10000 rows by 1 to 5 columns with no noise. "
+        + "For each test a training matrix is filled with random numbers between -50 and +50. The test case "
+        + "target expressions are limited to one basis function whose maximum depth is three grammar nodes.\"";
+      targetVariable = "Y";
+      inputVariables = new List<string>() { "X1", "X3", "X4" };
+      trainingPartition = new IntRange(0, 5000);
+      testPartition = new IntRange(5001, 10000);
+    }
+
+    protected override List<double> CalculateFunction(List<List<double>> data) {
+      double x1, x3, x4;
+      List<double> results = new List<double>();
+      for (int i = 0; i < data[0].Count; i++) {
+        x1 = data[0][i];
+        x3 = data[1][i];
+        x4 = data[2][i];
+        results.Add(0.23 + (14.2 * ((x3 + x1) / (3.0 * x4))));
+      }
+      return results;
+    }
+
+    protected override List<List<double>> GenerateInput(List<List<double>> dataList) {
+      DoubleRange range = new DoubleRange(-50, 50);
+      for (int i = 0; i < inputVariables.Count; i++) {
+        dataList.Add(RegressionBenchmark.GenerateUniformDistributedValues(testPartition.End, range));
+      }
+
+      return dataList;
+    }
+  }
+}
Index: anches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/KotanchekFunction.cs
===================================================================
--- /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/KotanchekFunction.cs	(revision 7024)
+++ 	(revision )
@@ -1,87 +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;
-using System.Collections.Generic;
-using System.Linq;
-using HeuristicLab.Common;
-using HeuristicLab.Core;
-using HeuristicLab.Data;
-
-namespace HeuristicLab.Problems.DataAnalysis.Benchmarks {
-  [Item("Kotanchek function (2d)", "")]
-  public class KotanchekFunction : RegressionBenchmark {
-
-    private const string targetVariable = "Y";
-    private static readonly List<string> inputVariables = new List<string>() { "X1", "X2" };
-    private static readonly IntRange trainingPartition = new IntRange(0, 1000);
-    private static readonly IntRange testPartition = new IntRange(1001, 2000);
-
-    public override List<string> InputVariable {
-      get { return inputVariables; }
-    }
-
-    public override string TargetVariable {
-      get { return targetVariable; }
-    }
-
-    public override IntRange TrainingPartition {
-      get { return trainingPartition; }
-    }
-
-    public override IntRange TestPartition {
-      get { return testPartition; }
-    }
-
-    public KotanchekFunction() {
-      Name = "Kotanchek function (2d)";
-    }
-
-    #region cloning
-    protected KotanchekFunction(KotanchekFunction original, Cloner cloner)
-      : base(original, cloner) {
-    }
-
-    public override IDeepCloneable Clone(Cloner cloner) {
-      return new KotanchekFunction(this, cloner);
-    }
-    #endregion
-
-    protected override List<double> CalculateFunction(Dictionary<string, IList<double>> data) {
-      double x1, x2;
-      List<double> results = new List<double>();
-      for (int i = 0; i < TestPartition.End; i++) {
-        x1 = data[InputVariable.ElementAt(0)].ElementAt(i);
-        x2 = data[InputVariable.ElementAt(1)].ElementAt(i);
-        results.Add(Math.Exp(-Math.Pow(x1 - 1, 2)) / (Math.Pow(x2 - 2.5, 2) + 3.2));
-      }
-      return results;
-    }
-
-    protected override Dictionary<string, IList<double>> GenerateInput(Dictionary<string, IList<double>> data) {
-      foreach (var variable in InputVariable) {
-        data[variable] = RegressionBenchmark.generateUniformDistributedValues(TestPartition.End, new DoubleRange(0, 4));
-      }
-      data[TargetVariable] = CalculateFunction(data);
-      return data;
-    }
-  }
-}
Index: /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/Nguyen/NguyenFunctionEight.cs
===================================================================
--- /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/Nguyen/NguyenFunctionEight.cs	(revision 7025)
+++ /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/Nguyen/NguyenFunctionEight.cs	(revision 7025)
@@ -0,0 +1,60 @@
+﻿#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;
+using System.Collections.Generic;
+using HeuristicLab.Data;
+
+namespace HeuristicLab.Problems.DataAnalysis.Benchmarks {
+  public class NguyenFunctionEight : RegressionBenchmark {
+
+    public NguyenFunctionEight() {
+      Name = "Nguyen F8 = Sqrt(x)";
+      Description = "Paper: Semantically-based Crossover in Genetic Programming: Application to Real-valued Symbolic Regression" + Environment.NewLine
+        + "Authors: Nguyen Quang Uy · Nguyen Xuan Hoai · Michael O’Neill · R.I. McKay · Edgar Galvan-Lopez" + Environment.NewLine
+        + "Function: F8 = Sqrt(x)" + Environment.NewLine
+        + "Fitcases: 20 random points ⊆ [0, 4]" + Environment.NewLine
+        + "Non-terminals: +, -, *, /, sin, cos, exp, log (protected version)" + Environment.NewLine
+        + "Terminals: X, 1 for single variable problems, and X, Y for bivariable problems";
+      targetVariable = "Y";
+      inputVariables = new List<string>() { "X" };
+      trainingPartition = new IntRange(0, 250);
+      testPartition = new IntRange(251, 500);
+    }
+
+    protected override List<double> CalculateFunction(List<List<double>> data) {
+      double x;
+      List<double> results = new List<double>();
+      for (int i = 0; i < data[0].Count; i++) {
+        x = data[0][i];
+        results.Add(Math.Sqrt(x));
+      }
+      return results;
+    }
+
+    protected override List<List<double>> GenerateInput(List<List<double>> dataList) {
+      DoubleRange range = new DoubleRange(0, 4);
+      dataList.Add(RegressionBenchmark.GenerateUniformDistributedValues(testPartition.End, range));
+
+      return dataList;
+    }
+  }
+}
Index: /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/Nguyen/NguyenFunctionEleven.cs
===================================================================
--- /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/Nguyen/NguyenFunctionEleven.cs	(revision 7025)
+++ /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/Nguyen/NguyenFunctionEleven.cs	(revision 7025)
@@ -0,0 +1,62 @@
+﻿#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;
+using System.Collections.Generic;
+using HeuristicLab.Data;
+
+namespace HeuristicLab.Problems.DataAnalysis.Benchmarks {
+  public class NguyenFunctionEleven : RegressionBenchmark {
+
+    public NguyenFunctionEleven() {
+      Name = "Nguyen F11 = x^y";
+      Description = "Paper: Semantically-based Crossover in Genetic Programming: Application to Real-valued Symbolic Regression" + Environment.NewLine
+        + "Authors: Nguyen Quang Uy · Nguyen Xuan Hoai · Michael O’Neill · R.I. McKay · Edgar Galvan-Lopez" + Environment.NewLine
+        + "Function: F11 = x^y" + Environment.NewLine
+        + "Fitcases: 100 random points ⊆ [0, 1]x[0, 1]" + Environment.NewLine
+        + "Non-terminals: +, -, *, /, sin, cos, exp, log (protected version)" + Environment.NewLine
+        + "Terminals: X, 1 for single variable problems, and X, Y for bivariable problems";
+      targetVariable = "Z";
+      inputVariables = new List<string>() { "X", "Y" };
+      trainingPartition = new IntRange(0, 250);
+      testPartition = new IntRange(251, 500);
+    }
+
+    protected override List<double> CalculateFunction(List<List<double>> data) {
+      double x, y;
+      List<double> results = new List<double>();
+      for (int i = 0; i < data[0].Count; i++) {
+        x = data[0][i];
+        y = data[1][i];
+        results.Add(Math.Pow(x, y));
+      }
+      return results;
+    }
+
+    protected override List<List<double>> GenerateInput(List<List<double>> dataList) {
+      DoubleRange range = new DoubleRange(0, 1);
+      dataList.Add(RegressionBenchmark.GenerateUniformDistributedValues(testPartition.End, range));
+      dataList.Add(RegressionBenchmark.GenerateUniformDistributedValues(testPartition.End, range));
+
+      return dataList;
+    }
+  }
+}
Index: /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/Nguyen/NguyenFunctionFive.cs
===================================================================
--- /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/Nguyen/NguyenFunctionFive.cs	(revision 7025)
+++ /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/Nguyen/NguyenFunctionFive.cs	(revision 7025)
@@ -0,0 +1,60 @@
+﻿#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;
+using System.Collections.Generic;
+using HeuristicLab.Data;
+
+namespace HeuristicLab.Problems.DataAnalysis.Benchmarks {
+  public class NguyenFunctionFive : RegressionBenchmark {
+
+    public NguyenFunctionFive() {
+      Name = "Nguyen F5 = sin(x^2)cos(x) - 1";
+      Description = "Paper: Semantically-based Crossover in Genetic Programming: Application to Real-valued Symbolic Regression" + Environment.NewLine
+        + "Authors: Nguyen Quang Uy · Nguyen Xuan Hoai · Michael O’Neill · R.I. McKay · Edgar Galvan-Lopez" + Environment.NewLine
+        + "Function: F5 = sin(x^2)cos(x) - 1" + Environment.NewLine
+        + "Fitcases: 20 random points ⊆ [-1, 1]" + Environment.NewLine
+        + "Non-terminals: +, -, *, /, sin, cos, exp, log (protected version)" + Environment.NewLine
+        + "Terminals: X, 1 for single variable problems, and X, Y for bivariable problems";
+      targetVariable = "Y";
+      inputVariables = new List<string>() { "X" };
+      trainingPartition = new IntRange(0, 250);
+      testPartition = new IntRange(251, 500);
+    }
+
+    protected override List<double> CalculateFunction(List<List<double>> data) {
+      double x;
+      List<double> results = new List<double>();
+      for (int i = 0; i < data[0].Count; i++) {
+        x = data[0][i];
+        results.Add(Math.Sin(Math.Pow(x, 2)) * Math.Cos(x) - 1);
+      }
+      return results;
+    }
+
+    protected override List<List<double>> GenerateInput(List<List<double>> dataList) {
+      DoubleRange range = new DoubleRange(-1, 1);
+      dataList.Add(RegressionBenchmark.GenerateUniformDistributedValues(testPartition.End, range));
+
+      return dataList;
+    }
+  }
+}
Index: /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/Nguyen/NguyenFunctionFour.cs
===================================================================
--- /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/Nguyen/NguyenFunctionFour.cs	(revision 7025)
+++ /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/Nguyen/NguyenFunctionFour.cs	(revision 7025)
@@ -0,0 +1,60 @@
+﻿#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;
+using System.Collections.Generic;
+using HeuristicLab.Data;
+
+namespace HeuristicLab.Problems.DataAnalysis.Benchmarks {
+  public class NguyenFunctionFour : RegressionBenchmark {
+
+    public NguyenFunctionFour() {
+      Name = "Nguyen F4 = x^6 + x^5 + x^4 + x^3 + x^2 + x";
+      Description = "Paper: Semantically-based Crossover in Genetic Programming: Application to Real-valued Symbolic Regression" + Environment.NewLine
+        + "Authors: Nguyen Quang Uy · Nguyen Xuan Hoai · Michael O’Neill · R.I. McKay · Edgar Galvan-Lopez" + Environment.NewLine
+        + "Function: F4 = x^6 + x^5 + x^4 + x^3 + x^2 + x" + Environment.NewLine
+        + "Fitcases: 20 random points ⊆ [-1, 1]" + Environment.NewLine
+        + "Non-terminals: +, -, *, /, sin, cos, exp, log (protected version)" + Environment.NewLine
+        + "Terminals: X, 1 for single variable problems, and X, Y for bivariable problems";
+      targetVariable = "Y";
+      inputVariables = new List<string>() { "X" };
+      trainingPartition = new IntRange(0, 250);
+      testPartition = new IntRange(251, 500);
+    }
+
+    protected override List<double> CalculateFunction(List<List<double>> data) {
+      double x;
+      List<double> results = new List<double>();
+      for (int i = 0; i < data[0].Count; i++) {
+        x = data[0][i];
+        results.Add(Math.Pow(x, 6) + Math.Pow(x, 5) + Math.Pow(x, 4) + Math.Pow(x, 3) + Math.Pow(x, 2) + x);
+      }
+      return results;
+    }
+
+    protected override List<List<double>> GenerateInput(List<List<double>> dataList) {
+      DoubleRange range = new DoubleRange(-1, 1);
+      dataList.Add(RegressionBenchmark.GenerateUniformDistributedValues(testPartition.End, range));
+
+      return dataList;
+    }
+  }
+}
Index: /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/Nguyen/NguyenFunctionNine.cs
===================================================================
--- /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/Nguyen/NguyenFunctionNine.cs	(revision 7025)
+++ /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/Nguyen/NguyenFunctionNine.cs	(revision 7025)
@@ -0,0 +1,62 @@
+﻿#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;
+using System.Collections.Generic;
+using HeuristicLab.Data;
+
+namespace HeuristicLab.Problems.DataAnalysis.Benchmarks {
+  public class NguyenFunctionNine : RegressionBenchmark {
+
+    public NguyenFunctionNine() {
+      Name = "Nguyen F9 = sin(x) + sin(y^2)";
+      Description = "Paper: Semantically-based Crossover in Genetic Programming: Application to Real-valued Symbolic Regression" + Environment.NewLine
+        + "Authors: Nguyen Quang Uy · Nguyen Xuan Hoai · Michael O’Neill · R.I. McKay · Edgar Galvan-Lopez" + Environment.NewLine
+        + "Function: F9 = sin(x) + sin(y^2)" + Environment.NewLine
+        + "Fitcases: 100 random points ⊆ [0, 1]x[0, 1]" + Environment.NewLine
+        + "Non-terminals: +, -, *, /, sin, cos, exp, log (protected version)" + Environment.NewLine
+        + "Terminals: X, 1 for single variable problems, and X, Y for bivariable problems";
+      targetVariable = "Z";
+      inputVariables = new List<string>() { "X", "Y" };
+      trainingPartition = new IntRange(0, 250);
+      testPartition = new IntRange(251, 500);
+    }
+
+    protected override List<double> CalculateFunction(List<List<double>> data) {
+      double x, y;
+      List<double> results = new List<double>();
+      for (int i = 0; i < data[0].Count; i++) {
+        x = data[0][i];
+        y = data[1][i];
+        results.Add(Math.Sin(x) + Math.Sin(Math.Pow(y, 2)));
+      }
+      return results;
+    }
+
+    protected override List<List<double>> GenerateInput(List<List<double>> dataList) {
+      DoubleRange range = new DoubleRange(0, 1);
+      dataList.Add(RegressionBenchmark.GenerateUniformDistributedValues(testPartition.End, range));
+      dataList.Add(RegressionBenchmark.GenerateUniformDistributedValues(testPartition.End, range));
+
+      return dataList;
+    }
+  }
+}
Index: /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/Nguyen/NguyenFunctionOne.cs
===================================================================
--- /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/Nguyen/NguyenFunctionOne.cs	(revision 7025)
+++ /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/Nguyen/NguyenFunctionOne.cs	(revision 7025)
@@ -0,0 +1,60 @@
+﻿#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;
+using System.Collections.Generic;
+using HeuristicLab.Data;
+
+namespace HeuristicLab.Problems.DataAnalysis.Benchmarks {
+  public class NguyenFunctionOne : RegressionBenchmark {
+
+    public NguyenFunctionOne() {
+      Name = "Nguyen F2 = x^3 + x^2 + x";
+      Description = "Paper: Semantically-based Crossover in Genetic Programming: Application to Real-valued Symbolic Regression" + Environment.NewLine
+        + "Authors: Nguyen Quang Uy · Nguyen Xuan Hoai · Michael O’Neill · R.I. McKay · Edgar Galvan-Lopez" + Environment.NewLine
+        + "Function: F2 = x^3 + x^2 + x" + Environment.NewLine
+        + "Fitcases: 20 random points ⊆ [-1, 1]" + Environment.NewLine
+        + "Non-terminals: +, -, *, /, sin, cos, exp, log (protected version)" + Environment.NewLine
+        + "Terminals: X, 1 for single variable problems, and X, Y for bivariable problems";
+      targetVariable = "Y";
+      inputVariables = new List<string>() { "X" };
+      trainingPartition = new IntRange(0, 250);
+      testPartition = new IntRange(251, 500);
+    }
+
+    protected override List<double> CalculateFunction(List<List<double>> data) {
+      double x;
+      List<double> results = new List<double>();
+      for (int i = 0; i < data[0].Count; i++) {
+        x = data[0][i];
+        results.Add(Math.Pow(x, 3) + Math.Pow(x, 2) + x);
+      }
+      return results;
+    }
+
+    protected override List<List<double>> GenerateInput(List<List<double>> dataList) {
+      DoubleRange range = new DoubleRange(-1, 1);
+      dataList.Add(RegressionBenchmark.GenerateUniformDistributedValues(testPartition.End, range));
+
+      return dataList;
+    }
+  }
+}
Index: /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/Nguyen/NguyenFunctionSeven.cs
===================================================================
--- /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/Nguyen/NguyenFunctionSeven.cs	(revision 7025)
+++ /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/Nguyen/NguyenFunctionSeven.cs	(revision 7025)
@@ -0,0 +1,60 @@
+﻿#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;
+using System.Collections.Generic;
+using HeuristicLab.Data;
+
+namespace HeuristicLab.Problems.DataAnalysis.Benchmarks {
+  public class NguyenFunctionSeven : RegressionBenchmark {
+
+    public NguyenFunctionSeven() {
+      Name = "Nguyen F7 = log(x + 1) + log(x^2 + 1)";
+      Description = "Paper: Semantically-based Crossover in Genetic Programming: Application to Real-valued Symbolic Regression" + Environment.NewLine
+        + "Authors: Nguyen Quang Uy · Nguyen Xuan Hoai · Michael O’Neill · R.I. McKay · Edgar Galvan-Lopez" + Environment.NewLine
+        + "Function: F7 = log(x + 1) + log(x^2 + 1)" + Environment.NewLine
+        + "Fitcases: 20 random points ⊆ [0, 2]" + Environment.NewLine
+        + "Non-terminals: +, -, *, /, sin, cos, exp, log (protected version)" + Environment.NewLine
+        + "Terminals: X, 1 for single variable problems, and X, Y for bivariable problems";
+      targetVariable = "Y";
+      inputVariables = new List<string>() { "X" };
+      trainingPartition = new IntRange(0, 250);
+      testPartition = new IntRange(251, 500);
+    }
+
+    protected override List<double> CalculateFunction(List<List<double>> data) {
+      double x;
+      List<double> results = new List<double>();
+      for (int i = 0; i < data[0].Count; i++) {
+        x = data[0][i];
+        results.Add(Math.Log(x + 1) + Math.Log(Math.Pow(x, 2) + 1));
+      }
+      return results;
+    }
+
+    protected override List<List<double>> GenerateInput(List<List<double>> dataList) {
+      DoubleRange range = new DoubleRange(0, 2);
+      dataList.Add(RegressionBenchmark.GenerateUniformDistributedValues(testPartition.End, range));
+
+      return dataList;
+    }
+  }
+}
Index: /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/Nguyen/NguyenFunctionSix.cs
===================================================================
--- /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/Nguyen/NguyenFunctionSix.cs	(revision 7025)
+++ /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/Nguyen/NguyenFunctionSix.cs	(revision 7025)
@@ -0,0 +1,60 @@
+﻿#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;
+using System.Collections.Generic;
+using HeuristicLab.Data;
+
+namespace HeuristicLab.Problems.DataAnalysis.Benchmarks {
+  public class NguyenFunctionSix : RegressionBenchmark {
+
+    public NguyenFunctionSix() {
+      Name = "Nguyen F6 = sin(x) + sin(x + x^2)";
+      Description = "Paper: Semantically-based Crossover in Genetic Programming: Application to Real-valued Symbolic Regression" + Environment.NewLine
+        + "Authors: Nguyen Quang Uy · Nguyen Xuan Hoai · Michael O’Neill · R.I. McKay · Edgar Galvan-Lopez" + Environment.NewLine
+        + "Function: F6 = sin(x) + sin(x + x^2)" + Environment.NewLine
+        + "Fitcases: 20 random points ⊆ [-1, 1]" + Environment.NewLine
+        + "Non-terminals: +, -, *, /, sin, cos, exp, log (protected version)" + Environment.NewLine
+        + "Terminals: X, 1 for single variable problems, and X, Y for bivariable problems";
+      targetVariable = "Y";
+      inputVariables = new List<string>() { "X" };
+      trainingPartition = new IntRange(0, 250);
+      testPartition = new IntRange(251, 500);
+    }
+
+    protected override List<double> CalculateFunction(List<List<double>> data) {
+      double x;
+      List<double> results = new List<double>();
+      for (int i = 0; i < data[0].Count; i++) {
+        x = data[0][i];
+        results.Add(Math.Sin(x) + Math.Sin(x + Math.Pow(x, 2)));
+      }
+      return results;
+    }
+
+    protected override List<List<double>> GenerateInput(List<List<double>> dataList) {
+      DoubleRange range = new DoubleRange(1, -1);
+      dataList.Add(RegressionBenchmark.GenerateUniformDistributedValues(testPartition.End, range));
+
+      return dataList;
+    }
+  }
+}
Index: /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/Nguyen/NguyenFunctionTen.cs
===================================================================
--- /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/Nguyen/NguyenFunctionTen.cs	(revision 7025)
+++ /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/Nguyen/NguyenFunctionTen.cs	(revision 7025)
@@ -0,0 +1,62 @@
+﻿#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;
+using System.Collections.Generic;
+using HeuristicLab.Data;
+
+namespace HeuristicLab.Problems.DataAnalysis.Benchmarks {
+  public class NguyenFunctionTen : RegressionBenchmark {
+
+    public NguyenFunctionTen() {
+      Name = "Nguyen F10 = 2sin(x)cos(y)";
+      Description = "Paper: Semantically-based Crossover in Genetic Programming: Application to Real-valued Symbolic Regression" + Environment.NewLine
+        + "Authors: Nguyen Quang Uy · Nguyen Xuan Hoai · Michael O’Neill · R.I. McKay · Edgar Galvan-Lopez" + Environment.NewLine
+        + "Function: F10 = 2sin(x)cos(y)" + Environment.NewLine
+        + "Fitcases: 100 random points ⊆ [0, 1]x[0, 1]" + Environment.NewLine
+        + "Non-terminals: +, -, *, /, sin, cos, exp, log (protected version)" + Environment.NewLine
+        + "Terminals: X, 1 for single variable problems, and X, Y for bivariable problems";
+      targetVariable = "Z";
+      inputVariables = new List<string>() { "X", "Y" };
+      trainingPartition = new IntRange(0, 250);
+      testPartition = new IntRange(251, 500);
+    }
+
+    protected override List<double> CalculateFunction(List<List<double>> data) {
+      double x, y;
+      List<double> results = new List<double>();
+      for (int i = 0; i < data[0].Count; i++) {
+        x = data[0][i];
+        y = data[1][i];
+        results.Add(2 * Math.Sin(x) * Math.Cos(y));
+      }
+      return results;
+    }
+
+    protected override List<List<double>> GenerateInput(List<List<double>> dataList) {
+      DoubleRange range = new DoubleRange(0, 1);
+      dataList.Add(RegressionBenchmark.GenerateUniformDistributedValues(testPartition.End, range));
+      dataList.Add(RegressionBenchmark.GenerateUniformDistributedValues(testPartition.End, range));
+
+      return dataList;
+    }
+  }
+}
Index: /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/Nguyen/NguyenFunctionThree.cs
===================================================================
--- /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/Nguyen/NguyenFunctionThree.cs	(revision 7025)
+++ /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/Nguyen/NguyenFunctionThree.cs	(revision 7025)
@@ -0,0 +1,60 @@
+﻿#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;
+using System.Collections.Generic;
+using HeuristicLab.Data;
+
+namespace HeuristicLab.Problems.DataAnalysis.Benchmarks {
+  public class NguyenFunctionThree : RegressionBenchmark {
+
+    public NguyenFunctionThree() {
+      Name = "Nguyen F3 = x^5 + x^4 + x^3 + x^2 + x";
+      Description = "Paper: Semantically-based Crossover in Genetic Programming: Application to Real-valued Symbolic Regression" + Environment.NewLine
+        + "Authors: Nguyen Quang Uy · Nguyen Xuan Hoai · Michael O’Neill · R.I. McKay · Edgar Galvan-Lopez" + Environment.NewLine
+        + "Function: F3 = x^5 + x^4 + x^3 + x^2 + x" + Environment.NewLine
+        + "Fitcases: 20 random points ⊆ [-1, 1]" + Environment.NewLine
+        + "Non-terminals: +, -, *, /, sin, cos, exp, log (protected version)" + Environment.NewLine
+        + "Terminals: X, 1 for single variable problems, and X, Y for bivariable problems";
+      targetVariable = "Y";
+      inputVariables = new List<string>() { "X" };
+      trainingPartition = new IntRange(0, 250);
+      testPartition = new IntRange(251, 500);
+    }
+
+    protected override List<double> CalculateFunction(List<List<double>> data) {
+      double x;
+      List<double> results = new List<double>();
+      for (int i = 0; i < data[0].Count; i++) {
+        x = data[0][i];
+        results.Add(Math.Pow(x, 5) + Math.Pow(x, 4) + Math.Pow(x, 3) + Math.Pow(x, 2) + x);
+      }
+      return results;
+    }
+
+    protected override List<List<double>> GenerateInput(List<List<double>> dataList) {
+      DoubleRange range = new DoubleRange(-1, 1);
+      dataList.Add(RegressionBenchmark.GenerateUniformDistributedValues(testPartition.End, range));
+
+      return dataList;
+    }
+  }
+}
Index: /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/Nguyen/NguyenFunctionTwelve.cs
===================================================================
--- /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/Nguyen/NguyenFunctionTwelve.cs	(revision 7025)
+++ /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/Nguyen/NguyenFunctionTwelve.cs	(revision 7025)
@@ -0,0 +1,62 @@
+﻿#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;
+using System.Collections.Generic;
+using HeuristicLab.Data;
+
+namespace HeuristicLab.Problems.DataAnalysis.Benchmarks {
+  public class NguyenFunctionTwelve : RegressionBenchmark {
+
+    public NguyenFunctionTwelve() {
+      Name = "Nguyen F12 = x^4 - x^3 + y^2/2 - y";
+      Description = "Paper: Semantically-based Crossover in Genetic Programming: Application to Real-valued Symbolic Regression" + Environment.NewLine
+        + "Authors: Nguyen Quang Uy · Nguyen Xuan Hoai · Michael O’Neill · R.I. McKay · Edgar Galvan-Lopez" + Environment.NewLine
+        + "Function: F12 = x^4 - x^3 + y^2/2 - y" + Environment.NewLine
+        + "Fitcases: 100 random points ⊆ [0, 1]x[0, 1]" + Environment.NewLine
+        + "Non-terminals: +, -, *, /, sin, cos, exp, log (protected version)" + Environment.NewLine
+        + "Terminals: X, 1 for single variable problems, and X, Y for bivariable problems";
+      targetVariable = "Z";
+      inputVariables = new List<string>() { "X", "Y" };
+      trainingPartition = new IntRange(0, 250);
+      testPartition = new IntRange(251, 500);
+    }
+
+    protected override List<double> CalculateFunction(List<List<double>> data) {
+      double x, y;
+      List<double> results = new List<double>();
+      for (int i = 0; i < data[0].Count; i++) {
+        x = data[0][i];
+        y = data[1][i];
+        results.Add(Math.Pow(x, 4) - Math.Pow(x, 3) + Math.Pow(y, 2) / 2 - y);
+      }
+      return results;
+    }
+
+    protected override List<List<double>> GenerateInput(List<List<double>> dataList) {
+      DoubleRange range = new DoubleRange(0, 1);
+      dataList.Add(RegressionBenchmark.GenerateUniformDistributedValues(testPartition.End, range));
+      dataList.Add(RegressionBenchmark.GenerateUniformDistributedValues(testPartition.End, range));
+
+      return dataList;
+    }
+  }
+}
Index: /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/Nguyen/NguyenFunctionTwo.cs
===================================================================
--- /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/Nguyen/NguyenFunctionTwo.cs	(revision 7025)
+++ /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/Nguyen/NguyenFunctionTwo.cs	(revision 7025)
@@ -0,0 +1,60 @@
+﻿#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;
+using System.Collections.Generic;
+using HeuristicLab.Data;
+
+namespace HeuristicLab.Problems.DataAnalysis.Benchmarks {
+  public class NguyenFunctionTwo : RegressionBenchmark {
+
+    public NguyenFunctionTwo() {
+      Name = "Nguyen F2 = x^4 + x^3 + x^2 + x";
+      Description = "Paper: Semantically-based Crossover in Genetic Programming: Application to Real-valued Symbolic Regression" + Environment.NewLine
+        + "Authors: Nguyen Quang Uy · Nguyen Xuan Hoai · Michael O’Neill · R.I. McKay · Edgar Galvan-Lopez" + Environment.NewLine
+        + "Function: F2 = x^4 + x^3 + x^2 + x" + Environment.NewLine
+        + "Fitcases: 20 random points ⊆ [-1, 1]" + Environment.NewLine
+        + "Non-terminals: +, -, *, /, sin, cos, exp, log (protected version)" + Environment.NewLine
+        + "Terminals: X, 1 for single variable problems, and X, Y for bivariable problems";
+      targetVariable = "Y";
+      inputVariables = new List<string>() { "X" };
+      trainingPartition = new IntRange(0, 250);
+      testPartition = new IntRange(251, 500);
+    }
+
+    protected override List<double> CalculateFunction(List<List<double>> data) {
+      double x;
+      List<double> results = new List<double>();
+      for (int i = 0; i < data[0].Count; i++) {
+        x = data[0][i];
+        results.Add(Math.Pow(x, 4) + Math.Pow(x, 3) + Math.Pow(x, 2) + x);
+      }
+      return results;
+    }
+
+    protected override List<List<double>> GenerateInput(List<List<double>> dataList) {
+      DoubleRange range = new DoubleRange(-1, 1);
+      dataList.Add(RegressionBenchmark.GenerateUniformDistributedValues(testPartition.End, range));
+
+      return dataList;
+    }
+  }
+}
Index: anches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/RationalPolynomial.cs
===================================================================
--- /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/RationalPolynomial.cs	(revision 7024)
+++ 	(revision )
@@ -1,83 +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;
-using System.Collections.Generic;
-using System.Linq;
-using HeuristicLab.Common;
-using HeuristicLab.Core;
-
-namespace HeuristicLab.Problems.DataAnalysis.Benchmarks {
-  [Item("Rational polynomial (3d)", "")]
-  public class RationalPolynomial : RegressionBenchmark {
-
-    public RationalPolynomial() {
-      //Name = "Rational polynomial (3d)";
-      //TargetVariable = "y";
-
-      //var inputVariables = new Dictionary<string, RandomDistribution>() {
-      //  {"x1", new UniformalDistribution(0, 2)},
-      //  {"x2", new UniformalDistribution(1, 2)},
-      //  {"x3", new UniformalDistribution(1, 2)}
-      //};
-
-      //TestData = new DatasetDefinition(2667, inputVariables);
-      //TrainingData = new DatasetDefinition(1333, inputVariables);
-    }
-
-    #region cloning
-    protected RationalPolynomial(RationalPolynomial original, Cloner cloner)
-      : base(original, cloner) {
-    }
-
-    public override IDeepCloneable Clone(Cloner cloner) {
-      return new RationalPolynomial(this, cloner);
-    }
-    #endregion
-
-    protected override double CalculateFunction(Dictionary<string, IList<double>> data) {
-      double x1 = data[vars.ElementAt(0)].Last();
-      double x2 = data[vars.ElementAt(1)].Last();
-      double x3 = data[vars.ElementAt(2)].Last();
-      return (30 * (x1 - 1) * (x3 - 1)) / ((x1 - 10) * Math.Pow(x2, 2));
-    }
-
-    public override List<string> InputVariable {
-      get { throw new NotImplementedException(); }
-    }
-
-    public override string TargetVariable {
-      get { throw new NotImplementedException(); }
-    }
-
-    public override Data.IntRange TrainingPartition {
-      get { throw new NotImplementedException(); }
-    }
-
-    public override Data.IntRange TestPartition {
-      get { throw new NotImplementedException(); }
-    }
-
-    protected override Dictionary<string, IList<double>> GenerateInput(Dictionary<string, IList<double>> data) {
-      throw new NotImplementedException();
-    }
-  }
-}
Index: anches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/RationalPolynomialTwo.cs
===================================================================
--- /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/RationalPolynomialTwo.cs	(revision 7024)
+++ 	(revision )
@@ -1,60 +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;
-using System.Collections.Generic;
-using System.Linq;
-using HeuristicLab.Common;
-using HeuristicLab.Core;
-
-namespace HeuristicLab.Problems.DataAnalysis.Benchmarks {
-  [Item("RationalPolynomial2 (2d)", "")]
-  public class RationalPolynomialTwo : RegressionBenchmark {
-
-    public RationalPolynomialTwo() {
-      Name = "RationalPolynomial2 (2d)";
-      //TargetVariable = "y";
-      //Inputvariables = new Dictionary<string, IntRange>() {
-      //  {"x1", new IntRange(0, 6)},
-      //  {"x2", new IntRange(0, 6)}
-      //};
-      //AmountOfPoints = 4000;
-      //TrainingPartition = new IntRange(0, 2667);
-      //TestPartition = new IntRange(TrainingPartition.End, AmountOfPoints);
-    }
-
-    #region cloning
-    protected RationalPolynomialTwo(RationalPolynomialTwo original, Cloner cloner)
-      : base(original, cloner) {
-    }
-
-    public override IDeepCloneable Clone(Cloner cloner) {
-      return new RationalPolynomialTwo(this, cloner);
-    }
-    #endregion
-
-    protected override double CalculateFunction(Dictionary<string, IList<double>> data, List<string> vars) {
-      double x1 = data[vars.ElementAt(0)].Last();
-      double x2 = data[vars.ElementAt(1)].Last();
-      return (Math.Pow(x1 - 3, 4) + Math.Pow(x2 - 3, 3) - x2 + 3) / (Math.Pow(x2 - 2, 4) + 10);
-    }
-  }
-}
Index: anches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/RippleFunction.cs
===================================================================
--- /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/RippleFunction.cs	(revision 7024)
+++ 	(revision )
@@ -1,60 +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;
-using System.Collections.Generic;
-using System.Linq;
-using HeuristicLab.Common;
-using HeuristicLab.Core;
-
-namespace HeuristicLab.Problems.DataAnalysis.Benchmarks {
-  [Item("Ripple function (2d)", "")]
-  public class RippleFunction : RegressionBenchmark {
-
-    public RippleFunction() {
-      Name = "Ripple function (2d)";
-      //TargetVariable = "y";
-      //Inputvariables = new Dictionary<string, IntRange>() {
-      //  {"x1", new IntRange(0, 6)},
-      //  {"x2", new IntRange(0, 6)}
-      //};
-      //AmountOfPoints = 4000;
-      //TrainingPartition = new IntRange(0, 2667);
-      //TestPartition = new IntRange(TrainingPartition.End, AmountOfPoints);
-    }
-
-    #region cloning
-    protected RippleFunction(RippleFunction original, Cloner cloner)
-      : base(original, cloner) {
-    }
-
-    public override IDeepCloneable Clone(Cloner cloner) {
-      return new RippleFunction(this, cloner);
-    }
-    #endregion
-
-    protected override double CalculateFunction(Dictionary<string, IList<double>> data, List<string> vars) {
-      double x1 = data[vars.ElementAt(0)].Last();
-      double x2 = data[vars.ElementAt(1)].Last();
-      return (x1 - 3) * (x2 - 3) + 2 * Math.Sin((x1 - 4) * (x2 - 4));
-    }
-  }
-}
Index: anches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/SalustowiczFunctionOneDimensional.cs
===================================================================
--- /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/SalustowiczFunctionOneDimensional.cs	(revision 7024)
+++ 	(revision )
@@ -1,58 +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;
-using System.Collections.Generic;
-using System.Linq;
-using HeuristicLab.Common;
-using HeuristicLab.Core;
-
-namespace HeuristicLab.Problems.DataAnalysis.Benchmarks {
-  [Item("Salustowicz function (1d)", "")]
-  public class SalustowiczFunctionOneDimensional : RegressionBenchmark {
-
-    public SalustowiczFunctionOneDimensional() {
-      Name = "Salustowicz function (1d)";
-      //TargetVariable = "y";
-      //Inputvariables = new Dictionary<string, IntRange>() {
-      //  {"x", new IntRange(0, 10)}
-      //};
-      //AmountOfPoints = 4000;
-      //TrainingPartition = new IntRange(0, 2667);
-      //TestPartition = new IntRange(TrainingPartition.End, AmountOfPoints);
-    }
-
-    #region cloning
-    protected SalustowiczFunctionOneDimensional(SalustowiczFunctionOneDimensional original, Cloner cloner)
-      : base(original, cloner) {
-    }
-
-    public override IDeepCloneable Clone(Cloner cloner) {
-      return new SalustowiczFunctionOneDimensional(this, cloner);
-    }
-    #endregion
-
-    protected override double CalculateFunction(Dictionary<string, IList<double>> data, List<string> vars) {
-      double x = data[vars.ElementAt(0)].Last();
-      return Math.Exp(-x) * Math.Pow(x, 3) * Math.Sin(x) * Math.Cos(x) * (Math.Pow(Math.Sin(x), 2) * Math.Cos(x) - 1);
-    }
-  }
-}
Index: anches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/SalustowiczFunctionTwoDimensional.cs
===================================================================
--- /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/SalustowiczFunctionTwoDimensional.cs	(revision 7024)
+++ 	(revision )
@@ -1,60 +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;
-using System.Collections.Generic;
-using System.Linq;
-using HeuristicLab.Common;
-using HeuristicLab.Core;
-
-namespace HeuristicLab.Problems.DataAnalysis.Benchmarks {
-  [Item("Salustowicz function (2d)", "")]
-  public class SalustowiczFunctionTwoDimensional : RegressionBenchmark {
-
-    public SalustowiczFunctionTwoDimensional() {
-      Name = "Salustowicz function (2d)";
-      //TargetVariable = "y";
-      //Inputvariables = new Dictionary<string, IntRange>() {
-      //  {"x1", new IntRange(0, 10)},
-      //  {"x2", new IntRange(0, 10)}
-      //};
-      //AmountOfPoints = 4000;
-      //TrainingPartition = new IntRange(0, 2667);
-      //TestPartition = new IntRange(TrainingPartition.End, AmountOfPoints);
-    }
-
-    #region cloning
-    protected SalustowiczFunctionTwoDimensional(SalustowiczFunctionTwoDimensional original, Cloner cloner)
-      : base(original, cloner) {
-    }
-
-    public override IDeepCloneable Clone(Cloner cloner) {
-      return new SalustowiczFunctionTwoDimensional(this, cloner);
-    }
-    #endregion
-
-    protected override double CalculateFunction(Dictionary<string, IList<double>> data, List<string> vars) {
-      double x1 = data[vars.ElementAt(0)].Last();
-      double x2 = data[vars.ElementAt(1)].Last();
-      return Math.Exp(-x1) * Math.Pow(x1, 3) * (x2 - 5) * Math.Sin(x1) * Math.Cos(x1) * (Math.Pow(Math.Sin(x1), 2) * Math.Cos(x1) - 1);
-    }
-  }
-}
Index: anches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/SineCosineFunction.cs
===================================================================
--- /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/SineCosineFunction.cs	(revision 7024)
+++ 	(revision )
@@ -1,60 +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;
-using System.Collections.Generic;
-using System.Linq;
-using HeuristicLab.Common;
-using HeuristicLab.Core;
-
-namespace HeuristicLab.Problems.DataAnalysis.Benchmarks {
-  [Item("SineCosine function (2d)", "")]
-  public class SineCosineFunction : RegressionBenchmark {
-
-    public SineCosineFunction() {
-      Name = "SineCosine function (2d)";
-      //TargetVariable = "y";
-      //Inputvariables = new Dictionary<string, IntRange>() {
-      //  {"x1", new IntRange(0, 6)},
-      //  {"x2", new IntRange(0, 6)}
-      //};
-      //AmountOfPoints = 4000;
-      //TrainingPartition = new IntRange(0, 2667);
-      //TestPartition = new IntRange(TrainingPartition.End, AmountOfPoints);
-    }
-
-    #region cloning
-    protected SineCosineFunction(SineCosineFunction original, Cloner cloner)
-      : base(original, cloner) {
-    }
-
-    public override IDeepCloneable Clone(Cloner cloner) {
-      return new SineCosineFunction(this, cloner);
-    }
-    #endregion
-
-    protected override double CalculateFunction(Dictionary<string, IList<double>> data, List<string> vars) {
-      double x1 = data[vars.ElementAt(0)].Last();
-      double x2 = data[vars.ElementAt(1)].Last();
-      return 6 * Math.Sin(x1) * Math.Cos(x2);
-    }
-  }
-}
Index: anches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/UnwrappedBallFunction.cs
===================================================================
--- /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/UnwrappedBallFunction.cs	(revision 7024)
+++ 	(revision )
@@ -1,58 +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;
-using System.Collections.Generic;
-using System.Linq;
-using HeuristicLab.Common;
-using HeuristicLab.Core;
-
-namespace HeuristicLab.Problems.DataAnalysis.Benchmarks {
-  [Item("UnwrappedBall function (1d)", "")]
-  public class UnwrappedBallFunction : RegressionBenchmark {
-
-    public UnwrappedBallFunction() {
-      Name = "UnwrappedBall function (1d)";
-      //TargetVariable = "y";
-      //Inputvariables = new Dictionary<string, IntRange>() {
-      //  {"x1", new IntRange(-2, 8)}
-      //};
-      //AmountOfPoints = 4000;
-      //TrainingPartition = new IntRange(0, 2667);
-      //TestPartition = new IntRange(TrainingPartition.End, AmountOfPoints);
-    }
-
-    #region cloning
-    protected UnwrappedBallFunction(UnwrappedBallFunction original, Cloner cloner)
-      : base(original, cloner) {
-    }
-
-    public override IDeepCloneable Clone(Cloner cloner) {
-      return new UnwrappedBallFunction(this, cloner);
-    }
-    #endregion
-
-    protected override double CalculateFunction(System.Collections.Generic.Dictionary<string, IList<double>> data, List<string> vars) {
-      double x1 = data[vars.ElementAt(0)].Last();
-      return 10 / (Math.Pow(x1 - 3, 2) + 5);
-    }
-  }
-}
Index: /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/Vladislavleva/KotanchekFunction.cs
===================================================================
--- /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/Vladislavleva/KotanchekFunction.cs	(revision 7025)
+++ /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/Vladislavleva/KotanchekFunction.cs	(revision 7025)
@@ -0,0 +1,70 @@
+﻿#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;
+using System.Collections.Generic;
+using HeuristicLab.Data;
+
+namespace HeuristicLab.Problems.DataAnalysis.Benchmarks {
+  public class KotanchekFunction : RegressionBenchmark {
+
+    public KotanchekFunction() {
+      Name = "Kotanchek";
+      Description = "Paper: Order of Nonlinearity as a Complexity Measure for Models Generated by Symbolic Regression via Pareto Genetic Programming " + Environment.NewLine
+        + "Authors: Ekaterina J. Vladislavleva, Member, IEEE, Guido F. Smits, Member, IEEE, and Dick den Hertog" + Environment.NewLine
+        + "Function: F1(X1, X2) = e^-(X1 - 1)^2 / (1.2 + (X2 -2.5)^2" + Environment.NewLine
+        + "Training Data: 100 points X1, X2 = Rand(0.3, 4)" + Environment.NewLine
+        + "Test Data: 2026 points (X1, X2) = (-0.2:0.1:4.2)" + Environment.NewLine
+        + "Function Set: +, -, *, /, sqaure, x^real, x + real, x + real, e^x, e^-x";
+      targetVariable = "Y";
+      inputVariables = new List<string>() { "X1", "X2" };
+      trainingPartition = new IntRange(0, 100);
+      testPartition = new IntRange(101, 2125);
+    }
+
+    protected override List<double> CalculateFunction(List<List<double>> data) {
+      double x1, x2;
+      List<double> results = new List<double>();
+      for (int i = 0; i < data[0].Count; i++) {
+        x1 = data[0][i];
+        x2 = data[1][i];
+        results.Add(Math.Exp(-Math.Pow(x1 - 1, 2)) / (1.2 + Math.Pow(x2 - 2.5, 2)));
+      }
+      return results;
+    }
+
+    protected override List<List<double>> GenerateInput(List<List<double>> dataList) {
+      DoubleRange trainingRange = new DoubleRange(0.3, 4);
+      for (int i = 0; i < InputVariable.Count; i++) {
+        dataList.Add(RegressionBenchmark.GenerateUniformDistributedValues(TrainingPartition.End, trainingRange));
+      }
+
+      List<double> oneVariableTestData = RegressionBenchmark.GenerateSteps(new DoubleRange(-0.2, 4.2), 0.1);
+      List<List<double>> testData = new List<List<double>>() { oneVariableTestData, oneVariableTestData };
+      testData = RegressionBenchmark.AllCombinationsOf(testData);
+      for (int i = 0; i < InputVariable.Count; i++) {
+        dataList[i].AddRange(testData[i]);
+      }
+
+      return dataList;
+    }
+  }
+}
Index: /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/Vladislavleva/RationalPolynomialThreeDimensional.cs
===================================================================
--- /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/Vladislavleva/RationalPolynomialThreeDimensional.cs	(revision 7025)
+++ /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/Vladislavleva/RationalPolynomialThreeDimensional.cs	(revision 7025)
@@ -0,0 +1,75 @@
+﻿#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;
+using System.Collections.Generic;
+using HeuristicLab.Data;
+
+namespace HeuristicLab.Problems.DataAnalysis.Benchmarks {
+  public class RationalPolynomial : RegressionBenchmark {
+
+    public RationalPolynomial() {
+      Name = "RatPol3D";
+      Description = "Paper: Order of Nonlinearity as a Complexity Measure for Models Generated by Symbolic Regression via Pareto Genetic Programming " + Environment.NewLine
+        + "Authors: Ekaterina J. Vladislavleva, Member, IEEE, Guido F. Smits, Member, IEEE, and Dick den Hertog" + Environment.NewLine
+        + "Function: F5(X1, X2, X3) = 30 * ((X1 - 1) * (X3 -1)) / (X2^2 * (X1 - 10))" + Environment.NewLine
+        + "Training Data: 300 points X1, X3 = Rand(0.05, 2), X2 = Rand(1, 2)" + Environment.NewLine
+        + "Test Data: 2701 points X1, X3 = (-0.05:0.15:2.1), X2 = (0.95:0.1:2.05)" + Environment.NewLine
+        + "Function Set: +, -, *, /, sqaure, x^real, x + real, x + real";
+      targetVariable = "Y";
+      inputVariables = new List<string>() { "X1", "X2", "X3" };
+      trainingPartition = new IntRange(0, 300);
+      testPartition = new IntRange(301, 3000);
+    }
+
+    protected override List<double> CalculateFunction(List<List<double>> data) {
+      double x1, x2, x3;
+      List<double> results = new List<double>();
+      for (int i = 0; i < data[0].Count; i++) {
+        x1 = data[0][i];
+        x2 = data[1][i];
+        x3 = data[2][i];
+        results.Add(30 * ((x1 - 1) * (x3 - 1)) / (Math.Pow(x2, 2) * (x1 - 10)));
+      }
+      return results;
+    }
+
+    protected override List<List<double>> GenerateInput(List<List<double>> dataList) {
+      dataList.Add(RegressionBenchmark.GenerateUniformDistributedValues(300, new DoubleRange(0.05, 2)));
+      dataList.Add(RegressionBenchmark.GenerateUniformDistributedValues(300, new DoubleRange(1, 2)));
+      dataList.Add(RegressionBenchmark.GenerateUniformDistributedValues(300, new DoubleRange(0.05, 2)));
+
+      List<List<double>> testData = new List<List<double>>() { 
+        RegressionBenchmark.GenerateSteps(new DoubleRange(-0.05, 2.1), 0.15), 
+        RegressionBenchmark.GenerateSteps(new DoubleRange( 0.95, 2.05), 0.1),
+        RegressionBenchmark.GenerateSteps(new DoubleRange(-0.05, 2.1), 0.15)
+      };
+
+      testData = RegressionBenchmark.AllCombinationsOf(testData);
+
+      for (int i = 0; i < InputVariable.Count; i++) {
+        dataList[i].AddRange(testData[i]);
+      }
+
+      return dataList;
+    }
+  }
+}
Index: /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/Vladislavleva/RationalPolynomialTwoDimensional.cs
===================================================================
--- /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/Vladislavleva/RationalPolynomialTwoDimensional.cs	(revision 7025)
+++ /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/Vladislavleva/RationalPolynomialTwoDimensional.cs	(revision 7025)
@@ -0,0 +1,71 @@
+﻿#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;
+using System.Collections.Generic;
+using HeuristicLab.Data;
+
+namespace HeuristicLab.Problems.DataAnalysis.Benchmarks {
+  public class RationalPolynomialTwoDimensional : RegressionBenchmark {
+
+    public RationalPolynomialTwoDimensional() {
+      Name = "RatPol2D";
+      Description = "Paper: Order of Nonlinearity as a Complexity Measure for Models Generated by Symbolic Regression via Pareto Genetic Programming " + Environment.NewLine
+        + "Authors: Ekaterina J. Vladislavleva, Member, IEEE, Guido F. Smits, Member, IEEE, and Dick den Hertog" + Environment.NewLine
+        + "Function: F8(X1, X2) = ((X1 - 3)^4 + (X2 - 3)^3 - (X2 -3)) / ((X2 - 2)^4 + 10)" + Environment.NewLine
+        + "Training Data: 50 points X1, X2 = Rand(0.05, 6.05)" + Environment.NewLine
+        + "Test Data: 1157 points X1, X2 = (-0.25:0.2:6.35)" + Environment.NewLine
+        + "Function Set: +, -, *, /, sqaure, x^real, x + real, x + real";
+      targetVariable = "Y";
+      inputVariables = new List<string>() { "X1", "X2" };
+      trainingPartition = new IntRange(0, 50);
+      testPartition = new IntRange(51, 1207);
+    }
+
+    protected override List<double> CalculateFunction(List<List<double>> data) {
+      double x1, x2;
+      List<double> results = new List<double>();
+      for (int i = 0; i < data[0].Count; i++) {
+        x1 = data[0][i];
+        x2 = data[1][i];
+        results.Add((Math.Pow(x1 - 3, 4) + Math.Pow(x2 - 3, 3) - x2 + 3) / (Math.Pow(x2 - 2, 4) + 10));
+      }
+      return results;
+    }
+
+    protected override List<List<double>> GenerateInput(List<List<double>> dataList) {
+      DoubleRange trainingRange = new DoubleRange(0.05, 6.05);
+      for (int i = 0; i < InputVariable.Count; i++) {
+        dataList.Add(RegressionBenchmark.GenerateUniformDistributedValues(TrainingPartition.End, trainingRange));
+      }
+
+      List<double> oneVariableTestData = RegressionBenchmark.GenerateSteps(new DoubleRange(-0.25, 6.35), 0.2);
+      List<List<double>> testData = new List<List<double>>() { oneVariableTestData, oneVariableTestData };
+
+      testData = RegressionBenchmark.AllCombinationsOf(testData);
+      for (int i = 0; i < InputVariable.Count; i++) {
+        dataList[i].AddRange(testData[i]);
+      }
+
+      return dataList;
+    }
+  }
+}
Index: /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/Vladislavleva/RippleFunction.cs
===================================================================
--- /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/Vladislavleva/RippleFunction.cs	(revision 7025)
+++ /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/Vladislavleva/RippleFunction.cs	(revision 7025)
@@ -0,0 +1,68 @@
+﻿#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;
+using System.Collections.Generic;
+using HeuristicLab.Data;
+
+namespace HeuristicLab.Problems.DataAnalysis.Benchmarks {
+  public class RippleFunction : RegressionBenchmark {
+
+    public RippleFunction() {
+      Name = "Ripple";
+      Description = "Paper: Order of Nonlinearity as a Complexity Measure for Models Generated by Symbolic Regression via Pareto Genetic Programming " + Environment.NewLine
+        + "Authors: Ekaterina J. Vladislavleva, Member, IEEE, Guido F. Smits, Member, IEEE, and Dick den Hertog" + Environment.NewLine
+        + "Function: F7(X1, X2) = (X1 - 3)(X2 - 3) + 2 * sin((X1 - 4)(X2 - 4))" + Environment.NewLine
+        + "Training Data: 300 points X1, X2 = Rand(0.05, 6.05)" + Environment.NewLine
+        + "Test Data: 1000 points X1, X2 = Rand(-0.25, 6.35)" + Environment.NewLine
+        + "Function Set: +, -, *, /, sqaure, x^real, x + real, x + real, e^x, e^-x, sin(x), cos(x)";
+      targetVariable = "Y";
+      inputVariables = new List<string>() { "X1", "X2" };
+      trainingPartition = new IntRange(0, 300);
+      testPartition = new IntRange(301, 1300);
+    }
+
+    protected override List<double> CalculateFunction(List<List<double>> data) {
+      double x1, x2;
+      List<double> results = new List<double>();
+      for (int i = 0; i < data[0].Count; i++) {
+        x1 = data[0][i];
+        x2 = data[1][i];
+        results.Add((x1 - 3) * (x2 - 3) + 2 * Math.Sin((x1 - 4) * (x2 - 4)));
+      }
+      return results;
+    }
+
+    protected override List<List<double>> GenerateInput(List<List<double>> dataList) {
+      DoubleRange range = new DoubleRange(0.05, 6.05);
+      for (int i = 0; i < InputVariable.Count; i++) {
+        dataList.Add(RegressionBenchmark.GenerateUniformDistributedValues(TrainingPartition.End, range));
+      }
+
+      range = new DoubleRange(-0.25, 6.35);
+      for (int i = 0; i < InputVariable.Count; i++) {
+        dataList[i].AddRange(RegressionBenchmark.GenerateUniformDistributedValues(TrainingPartition.End, range));
+      }
+
+      return dataList;
+    }
+  }
+}
Index: /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/Vladislavleva/SalustowiczFunctionOneDimensional.cs
===================================================================
--- /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/Vladislavleva/SalustowiczFunctionOneDimensional.cs	(revision 7025)
+++ /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/Vladislavleva/SalustowiczFunctionOneDimensional.cs	(revision 7025)
@@ -0,0 +1,60 @@
+﻿#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;
+using System.Collections.Generic;
+using HeuristicLab.Data;
+
+namespace HeuristicLab.Problems.DataAnalysis.Benchmarks {
+  public class SalustowiczFunctionOneDimensional : RegressionBenchmark {
+
+    public SalustowiczFunctionOneDimensional() {
+      Name = "Salustowicz";
+      Description = "Paper: Order of Nonlinearity as a Complexity Measure for Models Generated by Symbolic Regression via Pareto Genetic Programming " + Environment.NewLine
+        + "Authors: Ekaterina J. Vladislavleva, Member, IEEE, Guido F. Smits, Member, IEEE, and Dick den Hertog" + Environment.NewLine
+        + "Function: F2(X) = e^-X * X^3 * cos(X) * sin(X) * (cos(X)sin(X)^2 - 1)" + Environment.NewLine
+        + "Training Data: 100 points X = (0.05:0.1:10)" + Environment.NewLine
+        + "Test Data: 221 points X = (-0.5:0.05:10.5)" + Environment.NewLine
+        + "Function Set: +, -, *, /, sqaure, x^real, x + real, x + real, e^x, e^-x, sin(x), cos(x)";
+      targetVariable = "Y";
+      inputVariables = new List<string>() { "X" };
+      trainingPartition = new IntRange(0, 100);
+      testPartition = new IntRange(101, 321);
+    }
+
+    protected override List<double> CalculateFunction(List<List<double>> data) {
+      double x;
+      List<double> results = new List<double>();
+      for (int i = 0; i < data[0].Count; i++) {
+        x = data[0][i];
+        results.Add(Math.Exp(-x) * Math.Pow(x, 3) * Math.Cos(x) * Math.Sin(x) * (Math.Cos(x) * Math.Pow(Math.Sin(x), 2) - 1));
+      }
+      return results;
+    }
+
+    protected override List<List<double>> GenerateInput(List<List<double>> dataList) {
+      dataList.Add(RegressionBenchmark.GenerateSteps(new DoubleRange(0.05, 10), 0.1));
+      dataList[0].AddRange(RegressionBenchmark.GenerateSteps(new DoubleRange(-0.5, 10.5), 0.05));
+
+      return dataList;
+    }
+  }
+}
Index: /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/Vladislavleva/SalustowiczFunctionTwoDimensional.cs
===================================================================
--- /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/Vladislavleva/SalustowiczFunctionTwoDimensional.cs	(revision 7025)
+++ /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/Vladislavleva/SalustowiczFunctionTwoDimensional.cs	(revision 7025)
@@ -0,0 +1,77 @@
+﻿#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;
+using System.Collections.Generic;
+using HeuristicLab.Data;
+
+namespace HeuristicLab.Problems.DataAnalysis.Benchmarks {
+  public class SalustowiczFunctionTwoDimensional : RegressionBenchmark {
+
+    public SalustowiczFunctionTwoDimensional() {
+      Name = "Salustowicz2D";
+      Description = "Paper: Order of Nonlinearity as a Complexity Measure for Models Generated by Symbolic Regression via Pareto Genetic Programming " + Environment.NewLine
+        + "Authors: Ekaterina J. Vladislavleva, Member, IEEE, Guido F. Smits, Member, IEEE, and Dick den Hertog" + Environment.NewLine
+        + "Function: F3(X1, X2) = e^-X1 * X1^3 * cos(X1) * sin(X1) * (cos(X1)sin(X1)^2 - 1)(X2 - 5)" + Environment.NewLine
+        + "Training Data: 601 points X1 = (0.05:0.1:10), X2 = (0.05:2:10.05)" + Environment.NewLine
+        + "Test Data: 2554 points X1 = (-0.5:0.05:10.5), X2 = (-0.5:0.5:10.5)" + Environment.NewLine
+        + "Function Set: +, -, *, /, sqaure, x^real, x + real, x + real, e^x, e^-x, sin(x), cos(x)" + Environment.NewLine + Environment.NewLine
+        + "Important: The stepwidth of the variable X1 in the test partition has been set to 0.1, to fit the amount of data points.";
+      targetVariable = "Y";
+      inputVariables = new List<string>() { "X1", "X2" };
+      trainingPartition = new IntRange(0, 601);
+      testPartition = new IntRange(602, 3155);
+    }
+
+    protected override List<double> CalculateFunction(List<List<double>> data) {
+      double x1, x2;
+      List<double> results = new List<double>();
+      for (int i = 0; i < data[0].Count; i++) {
+        x1 = data[0][i];
+        x2 = data[1][i];
+        results.Add(Math.Exp(-x1) * Math.Pow(x1, 3) * Math.Cos(x1) * Math.Sin(x1) * (Math.Cos(x1) * Math.Pow(Math.Sin(x1), 2) - 1) * (x2 - 5));
+      }
+      return results;
+    }
+
+    protected override List<List<double>> GenerateInput(List<List<double>> dataList) {
+      List<List<double>> trainingData = new List<List<double>>() {
+        RegressionBenchmark.GenerateSteps(new DoubleRange(0.05, 10), 0.1),
+        RegressionBenchmark.GenerateSteps(new DoubleRange(0.05, 10.05), 2)
+      };
+
+      List<List<double>> testData = new List<List<double>>() {
+        RegressionBenchmark.GenerateSteps(new DoubleRange(-0.5, 10.5), 0.1),
+        RegressionBenchmark.GenerateSteps(new DoubleRange(-0.5, 10.5), 0.5)
+      };
+
+      trainingData = RegressionBenchmark.AllCombinationsOf(trainingData);
+      testData = RegressionBenchmark.AllCombinationsOf(testData);
+
+      for (int i = 0; i < InputVariable.Count; i++) {
+        dataList.Add(trainingData[i]);
+        dataList[i].AddRange(testData[i]);
+      }
+
+      return dataList;
+    }
+  }
+}
Index: /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/Vladislavleva/SineCosineFunction.cs
===================================================================
--- /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/Vladislavleva/SineCosineFunction.cs	(revision 7025)
+++ /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/Vladislavleva/SineCosineFunction.cs	(revision 7025)
@@ -0,0 +1,71 @@
+﻿#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;
+using System.Collections.Generic;
+using HeuristicLab.Data;
+
+namespace HeuristicLab.Problems.DataAnalysis.Benchmarks {
+  public class SineCosineFunction : RegressionBenchmark {
+
+    public SineCosineFunction() {
+      Name = "SineCosine";
+      Description = "Paper: Order of Nonlinearity as a Complexity Measure for Models Generated by Symbolic Regression via Pareto Genetic Programming " + Environment.NewLine
+        + "Authors: Ekaterina J. Vladislavleva, Member, IEEE, Guido F. Smits, Member, IEEE, and Dick den Hertog" + Environment.NewLine
+        + "Function: F6(X1, X2) = 6 * sin(X1) * cos(X2)" + Environment.NewLine
+        + "Training Data: 30 points X1, X2 = Rand(0.1, 5.9)" + Environment.NewLine
+        + "Test Data: 961 points X1, X2 = (-0.05:0.02:6.05)" + Environment.NewLine
+        + "Function Set: +, -, *, /, sqaure, x^real, x + real, x + real, e^x, e^-x";
+      targetVariable = "Y";
+      inputVariables = new List<string>() { "X1", "X2" };
+      trainingPartition = new IntRange(0, 30);
+      testPartition = new IntRange(31, 991);
+    }
+
+    protected override List<double> CalculateFunction(List<List<double>> data) {
+      double x1, x2;
+      List<double> results = new List<double>();
+      for (int i = 0; i < data[0].Count; i++) {
+        x1 = data[0][i];
+        x2 = data[1][i];
+        results.Add(6 * Math.Sin(x1) * Math.Cos(x2));
+      }
+      return results;
+    }
+
+    protected override List<List<double>> GenerateInput(List<List<double>> dataList) {
+      DoubleRange trainingRange = new DoubleRange(0.1, 5.9);
+      for (int i = 0; i < InputVariable.Count; i++) {
+        dataList.Add(RegressionBenchmark.GenerateUniformDistributedValues(30, trainingRange));
+      }
+
+      List<double> oneVariableTestData = RegressionBenchmark.GenerateSteps(new DoubleRange(-0.05, 6.05), 0.02);
+      List<List<double>> testData = new List<List<double>>() { oneVariableTestData, oneVariableTestData };
+      testData = RegressionBenchmark.AllCombinationsOf(testData);
+
+      for (int i = 0; i < InputVariable.Count; i++) {
+        dataList[i].AddRange(testData[i]);
+      }
+
+      return dataList;
+    }
+  }
+}
Index: /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/Vladislavleva/UnwrappedBallFunctionFiveDimensional.cs
===================================================================
--- /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/Vladislavleva/UnwrappedBallFunctionFiveDimensional.cs	(revision 7025)
+++ /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/RegressionBenchmarks/Vladislavleva/UnwrappedBallFunctionFiveDimensional.cs	(revision 7025)
@@ -0,0 +1,69 @@
+﻿#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;
+using System.Collections.Generic;
+using HeuristicLab.Data;
+
+namespace HeuristicLab.Problems.DataAnalysis.Benchmarks {
+  public class UnwrappedBallFunctionFiveDimensional : RegressionBenchmark {
+
+    public UnwrappedBallFunctionFiveDimensional() {
+      Name = "UBall5D";
+      Description = "Paper: Order of Nonlinearity as a Complexity Measure for Models Generated by Symbolic Regression via Pareto Genetic Programming " + Environment.NewLine
+        + "Authors: Ekaterina J. Vladislavleva, Member, IEEE, Guido F. Smits, Member, IEEE, and Dick den Hertog" + Environment.NewLine
+        + "Function: F4(X1, X2, X3, X4, X5) = 10 / (5 + Sum(Xi - 3)^2)" + Environment.NewLine
+        + "Training Data: 1024 points Xi = Rand(0.05, 6.05)" + Environment.NewLine
+        + "Test Data: 5000 points Xi = Rand(-0.25, 6.35)" + Environment.NewLine
+        + "Function Set: +, -, *, /, sqaure, x^real, x + real, x + real";
+      targetVariable = "Y";
+      inputVariables = new List<string>() { "X1", "X2", "X3", "X4", "X5" };
+      trainingPartition = new IntRange(0, 1024);
+      testPartition = new IntRange(1025, 6024);
+    }
+
+    protected override List<double> CalculateFunction(List<List<double>> data) {
+      double x1, x2, x3, x4, x5;
+      List<double> results = new List<double>();
+      for (int i = 0; i < data[0].Count; i++) {
+        x1 = data[0][i];
+        x2 = data[1][i];
+        x3 = data[2][i];
+        x4 = data[3][i];
+        x5 = data[4][i];
+        results.Add(10 / (5 + Math.Pow(x1 - 3, 2) + Math.Pow(x2 - 3, 2) + Math.Pow(x3 - 3, 2) + Math.Pow(x4 - 3, 2) + Math.Pow(x5 - 3, 2)));
+      }
+      return results;
+    }
+
+    protected override List<List<double>> GenerateInput(List<List<double>> dataList) {
+      DoubleRange testRange = new DoubleRange(0.05, 6.05);
+      DoubleRange trainingRange = new DoubleRange(-0.25, 6.35);
+      for (int i = 0; i < InputVariable.Count; i++) {
+        dataList.Add(RegressionBenchmark.GenerateUniformDistributedValues(1024, testRange));
+        dataList[i].AddRange(RegressionBenchmark.GenerateUniformDistributedValues(5000, trainingRange));
+      }
+
+      return dataList;
+    }
+  }
+}
Index: /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/SymbolicDataAnalysisProblem.cs
===================================================================
--- /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/SymbolicDataAnalysisProblem.cs	(revision 7024)
+++ /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/SymbolicDataAnalysisProblem.cs	(revision 7025)
@@ -107,4 +107,6 @@
     IDataAnalysisProblemData IDataAnalysisProblem.ProblemData {
       get { return ProblemData; }
+      set { ProblemData = (T)value; }
+
     }
     public T ProblemData {
Index: /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Views/3.4/DataAnalysisProblemView.cs
===================================================================
--- /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Views/3.4/DataAnalysisProblemView.cs	(revision 7024)
+++ /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Views/3.4/DataAnalysisProblemView.cs	(revision 7025)
@@ -21,4 +21,5 @@
 
 using System;
+using System.Collections.Generic;
 using System.Linq;
 using System.Windows.Forms;
@@ -58,5 +59,5 @@
     private void loadButton_Click(object sender, EventArgs e) {
       if (benchmarkComboBox.SelectedItem != null)
-        Content.CreateProblemDataFromBenchmark((IDataAnalysisBenchmarkProblemDataGenerator)benchmarkComboBox.SelectedItem);
+        Content.ProblemData = ((IDataAnalysisBenchmarkProblemDataGenerator)benchmarkComboBox.SelectedItem).GenerateProblemData();
     }
 
@@ -64,8 +65,20 @@
       base.OnContentChanged();
       benchmarkComboBox.Items.Clear();
-      benchmarkComboBox.Items.AddRange(Content.GetBenchmarkProblemDataGenerators().OrderBy(b => b.ItemName).ToArray());
+      benchmarkComboBox.Items.AddRange(GetBenchmarkProblemDataGenerators().OrderBy(b => b.ItemName).ToArray());
       if (benchmarkComboBox.Items.Count > 0)
         benchmarkComboBox.SelectedIndex = 0;
     }
+
+    protected IEnumerable<IDataAnalysisBenchmarkProblemDataGenerator> GetBenchmarkProblemDataGenerators() {
+      if (Content is IRegressionProblem)
+        return ApplicationManager.Manager.GetInstances<IRegressionBenchmarkProblemDataGenerator>();
+      else if (Content is IClassificationProblem)
+        return ApplicationManager.Manager.GetInstances<IClassificationBenchmarkProblemDataGenerator>();
+      else if (Content is ITimeSeriesPrognosisProblem)
+        return ApplicationManager.Manager.GetInstances<ITimeSeriesBenchmarkProblemDataGenerator>();
+      else if (Content is IClusteringProblem)
+        return ApplicationManager.Manager.GetInstances<IClusteringBenchmarkProblemDataGenerator>();
+      return new List<IDataAnalysisBenchmarkProblemDataGenerator>();
+    }
   }
 }
Index: /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Classification/ClassificationProblem.cs
===================================================================
--- /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Classification/ClassificationProblem.cs	(revision 7024)
+++ /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Classification/ClassificationProblem.cs	(revision 7025)
@@ -20,9 +20,7 @@
 #endregion
 
-using System.Collections.Generic;
 using HeuristicLab.Common;
 using HeuristicLab.Core;
 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
-using HeuristicLab.PluginInfrastructure;
 
 namespace HeuristicLab.Problems.DataAnalysis {
@@ -45,12 +43,4 @@
       ProblemData = problemData;
     }
-
-    public override void CreateProblemDataFromBenchmark(IDataAnalysisBenchmarkProblemDataGenerator benchmarkGenerator) {
-      throw new System.NotImplementedException();
-    }
-
-    public override IEnumerable<IDataAnalysisBenchmarkProblemDataGenerator> GetBenchmarkProblemDataGenerators() {
-      return ApplicationManager.Manager.GetInstances<IClassificationBenchmarkProblemDataGenerator>();
-    }
   }
 }
Index: /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Clustering/ClusteringProblem.cs
===================================================================
--- /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Clustering/ClusteringProblem.cs	(revision 7024)
+++ /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Clustering/ClusteringProblem.cs	(revision 7025)
@@ -23,5 +23,4 @@
 using HeuristicLab.Core;
 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
-using HeuristicLab.PluginInfrastructure;
 
 namespace HeuristicLab.Problems.DataAnalysis {
@@ -44,12 +43,4 @@
       ProblemData = problemData;
     }
-
-    public override void CreateProblemDataFromBenchmark(IDataAnalysisBenchmarkProblemDataGenerator benchmarkGenerator) {
-      throw new System.NotImplementedException();
-    }
-
-    public override System.Collections.Generic.IEnumerable<IDataAnalysisBenchmarkProblemDataGenerator> GetBenchmarkProblemDataGenerators() {
-      return ApplicationManager.Manager.GetInstances<IClusteringBenchmarkProblemDataGenerator>();
-    }
   }
 }
Index: /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/DataAnalysisProblem.cs
===================================================================
--- /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/DataAnalysisProblem.cs	(revision 7024)
+++ /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/DataAnalysisProblem.cs	(revision 7025)
@@ -21,5 +21,4 @@
 
 using System;
-using System.Collections.Generic;
 using HeuristicLab.Common;
 using HeuristicLab.Core;
@@ -46,4 +45,5 @@
     IDataAnalysisProblemData IDataAnalysisProblem.ProblemData {
       get { return ProblemData; }
+      set { ProblemData = (T)value; }
     }
     public T ProblemData {
@@ -93,8 +93,4 @@
 
     public abstract void ImportProblemDataFromFile(string fileName);
-
-    public abstract void CreateProblemDataFromBenchmark(IDataAnalysisBenchmarkProblemDataGenerator benchmarkGenerator);
-
-    public abstract IEnumerable<IDataAnalysisBenchmarkProblemDataGenerator> GetBenchmarkProblemDataGenerators();
   }
 }
Index: /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Regression/RegressionProblem.cs
===================================================================
--- /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Regression/RegressionProblem.cs	(revision 7024)
+++ /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Regression/RegressionProblem.cs	(revision 7025)
@@ -20,10 +20,7 @@
 #endregion
 
-using System;
-using System.Collections.Generic;
 using HeuristicLab.Common;
 using HeuristicLab.Core;
 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
-using HeuristicLab.PluginInfrastructure;
 
 namespace HeuristicLab.Problems.DataAnalysis {
@@ -46,21 +43,4 @@
       ProblemData = problemData;
     }
-
-    public override IEnumerable<IDataAnalysisBenchmarkProblemDataGenerator> GetBenchmarkProblemDataGenerators() {
-      return ApplicationManager.Manager.GetInstances<IRegressionBenchmarkProblemDataGenerator>();
-    }
-
-    public override void CreateProblemDataFromBenchmark(IDataAnalysisBenchmarkProblemDataGenerator benchmarkGenerator) {
-      if (!(benchmarkGenerator is IRegressionBenchmarkProblemDataGenerator)) {
-        throw new ArgumentException("BenchmarkGenerator is not an IRegressionBenchmarkProblemDataGenerator.");
-      }
-
-      IDataAnalysisProblemData problemData = benchmarkGenerator.GenerateProblemData();
-
-      if (problemData is IRegressionProblemData)
-        ProblemData = (IRegressionProblemData)problemData;
-      else
-        throw new InvalidCastException("ProblemDataGenerator didn't return an IRegressionProblemData.");
-    }
   }
 }
Index: /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/TimeSeriesPrognosis/TimeSeriesPrognosisProblem.cs
===================================================================
--- /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/TimeSeriesPrognosis/TimeSeriesPrognosisProblem.cs	(revision 7024)
+++ /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/TimeSeriesPrognosis/TimeSeriesPrognosisProblem.cs	(revision 7025)
@@ -20,9 +20,7 @@
 #endregion
 
-using System.Collections.Generic;
 using HeuristicLab.Common;
 using HeuristicLab.Core;
 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
-using HeuristicLab.PluginInfrastructure;
 
 namespace HeuristicLab.Problems.DataAnalysis {
@@ -45,12 +43,4 @@
       ProblemData = problemData;
     }
-
-    public override void CreateProblemDataFromBenchmark(IDataAnalysisBenchmarkProblemDataGenerator benchmarkGenerator) {
-      throw new System.NotImplementedException();
-    }
-
-    public override IEnumerable<IDataAnalysisBenchmarkProblemDataGenerator> GetBenchmarkProblemDataGenerators() {
-      return ApplicationManager.Manager.GetInstances<ITimeSeriesBenchmarkProblemDataGenerator>();
-    }
   }
 }
Index: /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis/3.4/Interfaces/IDataAnalysisProblem.cs
===================================================================
--- /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis/3.4/Interfaces/IDataAnalysisProblem.cs	(revision 7024)
+++ /branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis/3.4/Interfaces/IDataAnalysisProblem.cs	(revision 7025)
@@ -21,5 +21,4 @@
 
 using System;
-using System.Collections.Generic;
 using HeuristicLab.Core;
 using HeuristicLab.Optimization;
@@ -28,10 +27,8 @@
   public interface IDataAnalysisProblem : IProblem {
     IParameter ProblemDataParameter { get; }
-    IDataAnalysisProblemData ProblemData { get; }
+    IDataAnalysisProblemData ProblemData { get; set; }
     event EventHandler ProblemDataChanged;
 
     void ImportProblemDataFromFile(string fileName);
-    void CreateProblemDataFromBenchmark(IDataAnalysisBenchmarkProblemDataGenerator benchmarkGenerator);
-    IEnumerable<IDataAnalysisBenchmarkProblemDataGenerator> GetBenchmarkProblemDataGenerators();
   }
 
