Index: branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/HeuristicLab.Problems.Instances.DataAnalysis-3.3.csproj
===================================================================
--- branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/HeuristicLab.Problems.Instances.DataAnalysis-3.3.csproj	(revision 17641)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/HeuristicLab.Problems.Instances.DataAnalysis-3.3.csproj	(revision 17642)
@@ -157,15 +157,21 @@
     <Compile Include="Regression\FeatureSelection\FeatureSelection.cs" />
     <Compile Include="Regression\FeatureSelection\FeatureSelectionInstanceProvider.cs" />
+    <Compile Include="Regression\Feynman\Feynman1.cs" />
+    <Compile Include="Regression\Feynman\Feynman10.cs" />
     <Compile Include="Regression\Feynman\Feynman100.cs" />
+    <Compile Include="Regression\Feynman\Feynman11.cs" />
+    <Compile Include="Regression\Feynman\Feynman12.cs" />
+    <Compile Include="Regression\Feynman\Feynman13.cs" />
+    <Compile Include="Regression\Feynman\Feynman14.cs" />
+    <Compile Include="Regression\Feynman\Feynman15.cs" />
+    <Compile Include="Regression\Feynman\Feynman16.cs" />
+    <Compile Include="Regression\Feynman\Feynman17.cs" />
+    <Compile Include="Regression\Feynman\Feynman18.cs" />
+    <Compile Include="Regression\Feynman\Feynman19.cs" />
+    <Compile Include="Regression\Feynman\Feynman2.cs" />
+    <Compile Include="Regression\Feynman\Feynman20.cs" />
+    <Compile Include="Regression\Feynman\Feynman21.cs" />
+    <Compile Include="Regression\Feynman\Feynman22.cs" />
     <Compile Include="Regression\Feynman\Feynman23.cs" />
-    <Compile Include="Regression\Feynman\Feynman22.cs" />
-    <Compile Include="Regression\Feynman\Feynman21.cs" />
-    <Compile Include="Regression\Feynman\Feynman20.cs" />
-    <Compile Include="Regression\Feynman\Feynman19.cs" />
-    <Compile Include="Regression\Feynman\Feynman18.cs" />
-    <Compile Include="Regression\Feynman\Feynman17.cs" />
-    <Compile Include="Regression\Feynman\Feynman16.cs" />
-    <Compile Include="Regression\Feynman\Feynman15.cs" />
-    <Compile Include="Regression\Feynman\Feynman14.cs" />
     <Compile Include="Regression\Feynman\Feynman24.cs" />
     <Compile Include="Regression\Feynman\Feynman25.cs" />
@@ -174,4 +180,5 @@
     <Compile Include="Regression\Feynman\Feynman28.cs" />
     <Compile Include="Regression\Feynman\Feynman29.cs" />
+    <Compile Include="Regression\Feynman\Feynman3.cs" />
     <Compile Include="Regression\Feynman\Feynman30.cs" />
     <Compile Include="Regression\Feynman\Feynman31.cs" />
@@ -184,4 +191,5 @@
     <Compile Include="Regression\Feynman\Feynman38.cs" />
     <Compile Include="Regression\Feynman\Feynman39.cs" />
+    <Compile Include="Regression\Feynman\Feynman4.cs" />
     <Compile Include="Regression\Feynman\Feynman40.cs" />
     <Compile Include="Regression\Feynman\Feynman41.cs" />
@@ -194,4 +202,5 @@
     <Compile Include="Regression\Feynman\Feynman48.cs" />
     <Compile Include="Regression\Feynman\Feynman49.cs" />
+    <Compile Include="Regression\Feynman\Feynman5.cs" />
     <Compile Include="Regression\Feynman\Feynman50.cs" />
     <Compile Include="Regression\Feynman\Feynman51.cs" />
@@ -204,4 +213,5 @@
     <Compile Include="Regression\Feynman\Feynman58.cs" />
     <Compile Include="Regression\Feynman\Feynman59.cs" />
+    <Compile Include="Regression\Feynman\Feynman6.cs" />
     <Compile Include="Regression\Feynman\Feynman60.cs" />
     <Compile Include="Regression\Feynman\Feynman61.cs" />
@@ -214,4 +224,5 @@
     <Compile Include="Regression\Feynman\Feynman68.cs" />
     <Compile Include="Regression\Feynman\Feynman69.cs" />
+    <Compile Include="Regression\Feynman\Feynman7.cs" />
     <Compile Include="Regression\Feynman\Feynman70.cs" />
     <Compile Include="Regression\Feynman\Feynman71.cs" />
@@ -224,4 +235,5 @@
     <Compile Include="Regression\Feynman\Feynman78.cs" />
     <Compile Include="Regression\Feynman\Feynman79.cs" />
+    <Compile Include="Regression\Feynman\Feynman8.cs" />
     <Compile Include="Regression\Feynman\Feynman80.cs" />
     <Compile Include="Regression\Feynman\Feynman81.cs" />
@@ -235,10 +247,4 @@
     <Compile Include="Regression\Feynman\Feynman89.cs" />
     <Compile Include="Regression\Feynman\Feynman9.cs" />
-    <Compile Include="Regression\Feynman\Feynman13.cs" />
-    <Compile Include="Regression\Feynman\Feynman12.cs" />
-    <Compile Include="Regression\Feynman\Feynman11.cs" />
-    <Compile Include="Regression\Feynman\Feynman10.cs" />
-    <Compile Include="Regression\Feynman\Feynman8.cs" />
-    <Compile Include="Regression\Feynman\Feynman7.cs" />
     <Compile Include="Regression\Feynman\Feynman90.cs" />
     <Compile Include="Regression\Feynman\Feynman91.cs" />
@@ -253,10 +259,4 @@
     <Compile Include="Regression\Feynman\FeynmanDescriptor.cs" />
     <Compile Include="Regression\Feynman\FeynmanInstanceProvider.cs" />
-    <Compile Include="Regression\Feynman\Feynman2.cs" />
-    <Compile Include="Regression\Feynman\Feynman6.cs" />
-    <Compile Include="Regression\Feynman\Feynman5.cs" />
-    <Compile Include="Regression\Feynman\Feynman4.cs" />
-    <Compile Include="Regression\Feynman\Feynman3.cs" />
-    <Compile Include="Regression\Feynman\Feynman1.cs" />
     <Compile Include="Regression\MibaFriction\CF3.cs" />
     <Compile Include="Regression\MibaFriction\Wear1.cs" />
Index: branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman1.cs
===================================================================
--- branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman1.cs	(revision 17641)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman1.cs	(revision 17642)
@@ -1,30 +1,45 @@
-﻿using System;
+using System;
 using System.Collections.Generic;
 using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using HeuristicLab.Common;
 using HeuristicLab.Random;
 
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
-  public class Feynman1 : FeynmanDescriptor{
- public override string Name { get { return "Feynman I.6.2a f = exp(-theta^2/2)/sqrt(2*pi)"; } }
+  public class Feynman1 : FeynmanDescriptor {
+    private readonly int trainingSamples;
+    private readonly int testSamples;
 
- protected override string TargetVariable { get { return "f"; } }
-    protected override string[] VariableNames { get { return new string[] { "theta", "f" }; } }
-    protected override string[] AllowedInputVariables { get { return new string[] { "theta" }; } }
+    public override string Name {
+      get { return string.Format("Feynman I.6.2a exp(-theta**2/2)/sqrt(2*pi) | {0} samples", trainingSamples); }
+    }
+
+    protected override string TargetVariable { get { return "f"; } }
+    protected override string[] VariableNames { get { return new[] {"theta", "f"}; } }
+    protected override string[] AllowedInputVariables { get { return new[] {"theta"}; } }
 
     public int Seed { get; private set; }
 
-    public Feynman1() : this((int)System.DateTime.Now.Ticks) { }
+    public Feynman1() : this((int) DateTime.Now.Ticks, 10000, 10000) { }
 
     public Feynman1(int seed) {
-      Seed = seed;
+      Seed            = seed;
+      trainingSamples = 10000;
+      testSamples     = 10000;
     }
 
+    public Feynman1(int seed, int trainingSamples, int testSamples) {
+      Seed                 = seed;
+      this.trainingSamples = trainingSamples;
+      this.testSamples     = testSamples;
+    }
+
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return trainingSamples; } }
+    protected override int TestPartitionStart { get { return trainingSamples; } }
+    protected override int TestPartitionEnd { get { return trainingSamples + testSamples; } }
+
     protected override List<List<double>> GenerateValues() {
-      var rand = new MersenneTwister((uint)Seed);
+      var rand = new MersenneTwister((uint) Seed);
 
-      var data = new List<List<double>>();
+      var data  = new List<List<double>>();
       var theta = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 3).ToList();
 
@@ -34,5 +49,4 @@
       data.Add(f);
 
-
       for (var i = 0; i < theta.Count; i++) {
         var res = Math.Exp(Math.Pow(-theta[i], 2) / 2) / Math.Sqrt(2 * Math.PI);
@@ -40,5 +54,4 @@
       }
 
-
       return data;
     }
Index: branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman10.cs
===================================================================
--- branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman10.cs	(revision 17641)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman10.cs	(revision 17642)
@@ -1,35 +1,49 @@
-﻿using System;
+using System;
 using System.Collections.Generic;
 using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using HeuristicLab.Common;
 using HeuristicLab.Random;
 
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
-  public class Feynman10 : FeynmanDescriptor{
- public override string Name { get { return "Feynman I.12.2 F = q1*q2*r/(4*pi*epsilon*r^3)"; } }
+  public class Feynman10 : FeynmanDescriptor {
+    private readonly int testSamples;
+    private readonly int trainingSamples;
 
- protected override string TargetVariable { get { return "F"; } }
-    protected override string[] VariableNames { get { return new string[] { "q1", "q2", "epsilon", "r", "F"}; } }
-    protected override string[] AllowedInputVariables { get { return new string[] {"q1", "q2", "epsilon", "r"}; } }
+    public Feynman10() : this((int) DateTime.Now.Ticks, 10000, 10000) { }
+
+    public Feynman10(int seed) {
+      Seed            = seed;
+      trainingSamples = 10000;
+      testSamples     = 10000;
+    }
+
+    public Feynman10(int seed, int trainingSamples, int testSamples) {
+      Seed                 = seed;
+      this.trainingSamples = trainingSamples;
+      this.testSamples     = testSamples;
+    }
+
+    public override string Name {
+      get { return string.Format("Feynman I.12.2 q1*q2*r/(4*pi*epsilon*r**3) | {0} samples", trainingSamples); }
+    }
+
+    protected override string TargetVariable { get { return "F"; } }
+    protected override string[] VariableNames { get { return new[] {"q1", "q2", "epsilon", "r", "F"}; } }
+    protected override string[] AllowedInputVariables { get { return new[] {"q1", "q2", "epsilon", "r"}; } }
 
     public int Seed { get; private set; }
 
-    public Feynman10() : this((int)System.DateTime.Now.Ticks) { }
-
-    public Feynman10(int seed) {
-      Seed = seed;
-    }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return trainingSamples; } }
+    protected override int TestPartitionStart { get { return trainingSamples; } }
+    protected override int TestPartitionEnd { get { return trainingSamples + testSamples; } }
 
     protected override List<List<double>> GenerateValues() {
-      var rand = new MersenneTwister((uint)Seed);
+      var rand = new MersenneTwister((uint) Seed);
 
-      var data = new List<List<double>>();
-      var q1 = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
-      var q2 = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
+      var data    = new List<List<double>>();
+      var q1      = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
+      var q2      = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
       var epsilon = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
-      var r = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
-
+      var r       = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
 
       var F = new List<double>();
@@ -46,5 +60,4 @@
       }
 
-
       return data;
     }
Index: branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman100.cs
===================================================================
--- branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman100.cs	(revision 17641)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman100.cs	(revision 17642)
@@ -6,5 +6,24 @@
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
   public class Feynman100 : FeynmanDescriptor {
-    public override string Name { get { return "Feynman III.21.20 -rho_c_0*q*A_vec/m"; } }
+    private readonly int testSamples;
+    private readonly int trainingSamples;
+
+    public Feynman100() : this((int) DateTime.Now.Ticks, 10000, 10000) { }
+
+    public Feynman100(int seed) {
+      Seed            = seed;
+      trainingSamples = 10000;
+      testSamples     = 10000;
+    }
+
+    public Feynman100(int seed, int trainingSamples, int testSamples) {
+      Seed                 = seed;
+      this.trainingSamples = trainingSamples;
+      this.testSamples     = testSamples;
+    }
+
+    public override string Name {
+      get { return string.Format("Feynman III.21.20 -rho_c_0*q*A_vec/m | {0} samples", trainingSamples); }
+    }
 
     protected override string TargetVariable { get { return "j"; } }
@@ -14,9 +33,8 @@
     public int Seed { get; private set; }
 
-    public Feynman100() : this((int) DateTime.Now.Ticks) { }
-
-    public Feynman100(int seed) {
-      Seed = seed;
-    }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return trainingSamples; } }
+    protected override int TestPartitionStart { get { return trainingSamples; } }
+    protected override int TestPartitionEnd { get { return trainingSamples + testSamples; } }
 
     protected override List<List<double>> GenerateValues() {
Index: branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman11.cs
===================================================================
--- branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman11.cs	(revision 17641)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman11.cs	(revision 17642)
@@ -1,34 +1,48 @@
-﻿using System;
+using System;
 using System.Collections.Generic;
 using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using HeuristicLab.Common;
 using HeuristicLab.Random;
 
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
-  public class Feynman11 : FeynmanDescriptor{
- public override string Name { get { return "Feynman I.12.4 Ef = q1*r/(4*pi*epsilon*r^3)"; } }
+  public class Feynman11 : FeynmanDescriptor {
+    private readonly int testSamples;
+    private readonly int trainingSamples;
 
- protected override string TargetVariable { get { return "Ef"; } }
-    protected override string[] VariableNames { get { return new string[] { "q1", "epsilon", "r", "Ef"}; } }
-    protected override string[] AllowedInputVariables { get { return new string[] {"q1", "epsilon", "r"}; } }
+    public Feynman11() : this((int) DateTime.Now.Ticks, 10000, 10000) { }
+
+    public Feynman11(int seed) {
+      Seed            = seed;
+      trainingSamples = 10000;
+      testSamples     = 10000;
+    }
+
+    public Feynman11(int seed, int trainingSamples, int testSamples) {
+      Seed                 = seed;
+      this.trainingSamples = trainingSamples;
+      this.testSamples     = testSamples;
+    }
+
+    public override string Name {
+      get { return string.Format("Feynman I.12.4 q1*r/(4*pi*epsilon*r**3) | {0} samples", trainingSamples); }
+    }
+
+    protected override string TargetVariable { get { return "Ef"; } }
+    protected override string[] VariableNames { get { return new[] {"q1", "epsilon", "r", "Ef"}; } }
+    protected override string[] AllowedInputVariables { get { return new[] {"q1", "epsilon", "r"}; } }
 
     public int Seed { get; private set; }
 
-    public Feynman11() : this((int)System.DateTime.Now.Ticks) { }
-
-    public Feynman11(int seed) {
-      Seed = seed;
-    }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return trainingSamples; } }
+    protected override int TestPartitionStart { get { return trainingSamples; } }
+    protected override int TestPartitionEnd { get { return trainingSamples + testSamples; } }
 
     protected override List<List<double>> GenerateValues() {
-      var rand = new MersenneTwister((uint)Seed);
+      var rand = new MersenneTwister((uint) Seed);
 
-      var data = new List<List<double>>();
-      var q1 = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
+      var data    = new List<List<double>>();
+      var q1      = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
       var epsilon = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
-      var r = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
-
+      var r       = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
 
       var Ef = new List<double>();
@@ -44,5 +58,4 @@
       }
 
-
       return data;
     }
Index: branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman12.cs
===================================================================
--- branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman12.cs	(revision 17641)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman12.cs	(revision 17642)
@@ -1,32 +1,45 @@
-﻿using System;
+using System;
 using System.Collections.Generic;
 using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using HeuristicLab.Common;
 using HeuristicLab.Random;
 
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
-  public class Feynman12 : FeynmanDescriptor{
- public override string Name { get { return "Feynman I.12.5 F = q2*Ef"; } }
+  public class Feynman12 : FeynmanDescriptor {
+    private readonly int testSamples;
+    private readonly int trainingSamples;
 
- protected override string TargetVariable { get { return "F"; } }
-    protected override string[] VariableNames { get { return new string[] { "q2", "Ef", "F"}; } }
-    protected override string[] AllowedInputVariables { get { return new string[] {"q2", "Ef"}; } }
+    public Feynman12() : this((int) DateTime.Now.Ticks, 10000, 10000) { }
+
+    public Feynman12(int seed) {
+      Seed            = seed;
+      trainingSamples = 10000;
+      testSamples     = 10000;
+    }
+
+    public Feynman12(int seed, int trainingSamples, int testSamples) {
+      Seed                 = seed;
+      this.trainingSamples = trainingSamples;
+      this.testSamples     = testSamples;
+    }
+
+    public override string Name { get { return string.Format("Feynman I.12.5 q2*Ef | {0} samples", trainingSamples); } }
+
+    protected override string TargetVariable { get { return "F"; } }
+    protected override string[] VariableNames { get { return new[] {"q2", "Ef", "F"}; } }
+    protected override string[] AllowedInputVariables { get { return new[] {"q2", "Ef"}; } }
 
     public int Seed { get; private set; }
 
-    public Feynman12() : this((int)System.DateTime.Now.Ticks) { }
-
-    public Feynman12(int seed) {
-      Seed = seed;
-    }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return trainingSamples; } }
+    protected override int TestPartitionStart { get { return trainingSamples; } }
+    protected override int TestPartitionEnd { get { return trainingSamples + testSamples; } }
 
     protected override List<List<double>> GenerateValues() {
-      var rand = new MersenneTwister((uint)Seed);
+      var rand = new MersenneTwister((uint) Seed);
 
       var data = new List<List<double>>();
-      var q2 = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
-      var Ef = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
+      var q2   = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
+      var Ef   = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
 
       var F = new List<double>();
Index: branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman13.cs
===================================================================
--- branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman13.cs	(revision 17641)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman13.cs	(revision 17642)
@@ -1,34 +1,49 @@
-﻿using System;
+using System;
 using System.Collections.Generic;
 using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using HeuristicLab.Common;
 using HeuristicLab.Random;
 
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
-  public class Feynman13 : FeynmanDescriptor{
- public override string Name { get { return "Feynman I.12.11 F = q*(Ef+B*v*sin(theta))"; } }
+  public class Feynman13 : FeynmanDescriptor {
+    private readonly int testSamples;
+    private readonly int trainingSamples;
 
- protected override string TargetVariable { get { return "F"; } }
-    protected override string[] VariableNames { get { return new string[] { "q", "Ef", "B", "v", "theta", "F"}; } }
-    protected override string[] AllowedInputVariables { get { return new string[] {"q", "Ef", "B", "v", "theta"}; } }
+    public Feynman13() : this((int) DateTime.Now.Ticks, 10000, 10000) { }
+
+    public Feynman13(int seed) {
+      Seed            = seed;
+      trainingSamples = 10000;
+      testSamples     = 10000;
+    }
+
+    public Feynman13(int seed, int trainingSamples, int testSamples) {
+      Seed                 = seed;
+      this.trainingSamples = trainingSamples;
+      this.testSamples     = testSamples;
+    }
+
+    public override string Name {
+      get { return string.Format("Feynman I.12.11 q*(Ef+B*v*sin(theta)) | {0} samples", trainingSamples); }
+    }
+
+    protected override string TargetVariable { get { return "F"; } }
+    protected override string[] VariableNames { get { return new[] {"q", "Ef", "B", "v", "theta", "F"}; } }
+    protected override string[] AllowedInputVariables { get { return new[] {"q", "Ef", "B", "v", "theta"}; } }
 
     public int Seed { get; private set; }
 
-    public Feynman13() : this((int)System.DateTime.Now.Ticks) { }
-
-    public Feynman13(int seed) {
-      Seed = seed;
-    }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return trainingSamples; } }
+    protected override int TestPartitionStart { get { return trainingSamples; } }
+    protected override int TestPartitionEnd { get { return trainingSamples + testSamples; } }
 
     protected override List<List<double>> GenerateValues() {
-      var rand = new MersenneTwister((uint)Seed);
+      var rand = new MersenneTwister((uint) Seed);
 
-      var data = new List<List<double>>();
-      var q = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
-      var Ef = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
-      var B = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
-      var v = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
+      var data  = new List<List<double>>();
+      var q     = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
+      var Ef    = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
+      var B     = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
+      var v     = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
       var theta = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
 
Index: branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman14.cs
===================================================================
--- branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman14.cs	(revision 17641)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman14.cs	(revision 17642)
@@ -1,36 +1,50 @@
-﻿using System;
+using System;
 using System.Collections.Generic;
 using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using HeuristicLab.Common;
 using HeuristicLab.Random;
 
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
-  public class Feynman14 : FeynmanDescriptor{
- public override string Name { get { return "Feynman I.13.12 U = G*m1*m2*(1/r2-1/r1)"; } }
+  public class Feynman14 : FeynmanDescriptor {
+    private readonly int testSamples;
+    private readonly int trainingSamples;
 
- protected override string TargetVariable { get { return "U"; } }
-    protected override string[] VariableNames { get { return new string[] { "m1", "m2", "r1", "r2", "G", "U"}; } }
-    protected override string[] AllowedInputVariables { get { return new string[] {"m1", "m2", "r1", "r2", "G"}; } }
+    public Feynman14() : this((int) DateTime.Now.Ticks, 10000, 10000) { }
+
+    public Feynman14(int seed) {
+      Seed            = seed;
+      trainingSamples = 10000;
+      testSamples     = 10000;
+    }
+
+    public Feynman14(int seed, int trainingSamples, int testSamples) {
+      Seed                 = seed;
+      this.trainingSamples = trainingSamples;
+      this.testSamples     = testSamples;
+    }
+
+    public override string Name {
+      get { return string.Format("Feynman I.13.12 G*m1*m2*(1/r2-1/r1) | {0} samples", trainingSamples); }
+    }
+
+    protected override string TargetVariable { get { return "U"; } }
+    protected override string[] VariableNames { get { return new[] {"m1", "m2", "r1", "r2", "G", "U"}; } }
+    protected override string[] AllowedInputVariables { get { return new[] {"m1", "m2", "r1", "r2", "G"}; } }
 
     public int Seed { get; private set; }
 
-    public Feynman14() : this((int)System.DateTime.Now.Ticks) { }
-
-    public Feynman14(int seed) {
-      Seed = seed;
-    }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return trainingSamples; } }
+    protected override int TestPartitionStart { get { return trainingSamples; } }
+    protected override int TestPartitionEnd { get { return trainingSamples + testSamples; } }
 
     protected override List<List<double>> GenerateValues() {
-      var rand = new MersenneTwister((uint)Seed);
+      var rand = new MersenneTwister((uint) Seed);
 
       var data = new List<List<double>>();
-      var m1 = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
-      var m2 = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
-      var r1 = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
-      var r2 = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
-      var G = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
-
+      var m1   = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
+      var m2   = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
+      var r1   = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
+      var r2   = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
+      var G    = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
 
       var U = new List<double>();
Index: branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman15.cs
===================================================================
--- branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman15.cs	(revision 17641)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman15.cs	(revision 17642)
@@ -1,33 +1,46 @@
-﻿using System;
+using System;
 using System.Collections.Generic;
 using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using HeuristicLab.Common;
 using HeuristicLab.Random;
 
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
-  public class Feynman15 : FeynmanDescriptor{
- public override string Name { get { return "Feynman I.14.3 U = m*g*z"; } }
+  public class Feynman15 : FeynmanDescriptor {
+    private readonly int testSamples;
+    private readonly int trainingSamples;
 
- protected override string TargetVariable { get { return "U"; } }
-    protected override string[] VariableNames { get { return new string[] { "m", "g", "z", "U"}; } }
-    protected override string[] AllowedInputVariables { get { return new string[] {"m", "g", "z"}; } }
+    public Feynman15() : this((int) DateTime.Now.Ticks, 10000, 10000) { }
+
+    public Feynman15(int seed) {
+      Seed            = seed;
+      trainingSamples = 10000;
+      testSamples     = 10000;
+    }
+
+    public Feynman15(int seed, int trainingSamples, int testSamples) {
+      Seed                 = seed;
+      this.trainingSamples = trainingSamples;
+      this.testSamples     = testSamples;
+    }
+
+    public override string Name { get { return string.Format("Feynman I.14.3 m*g*z | {0} samples", trainingSamples); } }
+
+    protected override string TargetVariable { get { return "U"; } }
+    protected override string[] VariableNames { get { return new[] {"m", "g", "z", "U"}; } }
+    protected override string[] AllowedInputVariables { get { return new[] {"m", "g", "z"}; } }
 
     public int Seed { get; private set; }
 
-    public Feynman15() : this((int)System.DateTime.Now.Ticks) { }
-
-    public Feynman15(int seed) {
-      Seed = seed;
-    }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return trainingSamples; } }
+    protected override int TestPartitionStart { get { return trainingSamples; } }
+    protected override int TestPartitionEnd { get { return trainingSamples + testSamples; } }
 
     protected override List<List<double>> GenerateValues() {
-      var rand = new MersenneTwister((uint)Seed);
+      var rand = new MersenneTwister((uint) Seed);
 
       var data = new List<List<double>>();
-      var m = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
-      var g = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
-      var z = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
+      var m    = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
+      var g    = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
+      var z    = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
 
       var U = new List<double>();
Index: branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman16.cs
===================================================================
--- branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman16.cs	(revision 17641)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman16.cs	(revision 17642)
@@ -1,32 +1,47 @@
-﻿using System;
+using System;
 using System.Collections.Generic;
 using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using HeuristicLab.Common;
 using HeuristicLab.Random;
 
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
-  public class Feynman16 : FeynmanDescriptor{
- public override string Name { get { return "Feynman I.14.4 U = 1/2*k_spring*x^2"; } }
+  public class Feynman16 : FeynmanDescriptor {
+    private readonly int testSamples;
+    private readonly int trainingSamples;
 
- protected override string TargetVariable { get { return "U"; } }
-    protected override string[] VariableNames { get { return new string[] { "k_spring", "x", "U"}; } }
-    protected override string[] AllowedInputVariables { get { return new string[] {"k_spring", "x"}; } }
+    public Feynman16() : this((int) DateTime.Now.Ticks, 10000, 10000) { }
+
+    public Feynman16(int seed) {
+      Seed            = seed;
+      trainingSamples = 10000;
+      testSamples     = 10000;
+    }
+
+    public Feynman16(int seed, int trainingSamples, int testSamples) {
+      Seed                 = seed;
+      this.trainingSamples = trainingSamples;
+      this.testSamples     = testSamples;
+    }
+
+    public override string Name {
+      get { return string.Format("Feynman I.14.4 1/2*k_spring*x**2 | {0} samples", trainingSamples); }
+    }
+
+    protected override string TargetVariable { get { return "U"; } }
+    protected override string[] VariableNames { get { return new[] {"k_spring", "x", "U"}; } }
+    protected override string[] AllowedInputVariables { get { return new[] {"k_spring", "x"}; } }
 
     public int Seed { get; private set; }
 
-    public Feynman16() : this((int)System.DateTime.Now.Ticks) { }
-
-    public Feynman16(int seed) {
-      Seed = seed;
-    }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return trainingSamples; } }
+    protected override int TestPartitionStart { get { return trainingSamples; } }
+    protected override int TestPartitionEnd { get { return trainingSamples + testSamples; } }
 
     protected override List<List<double>> GenerateValues() {
-      var rand = new MersenneTwister((uint)Seed);
+      var rand = new MersenneTwister((uint) Seed);
 
-      var data = new List<List<double>>();
+      var data     = new List<List<double>>();
       var k_spring = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
-      var x = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
+      var x        = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
 
       var U = new List<double>();
Index: branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman17.cs
===================================================================
--- branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman17.cs	(revision 17641)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman17.cs	(revision 17642)
@@ -1,34 +1,49 @@
-﻿using System;
+using System;
 using System.Collections.Generic;
 using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using HeuristicLab.Common;
 using HeuristicLab.Random;
 
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
-  public class Feynman17 : FeynmanDescriptor{
- public override string Name { get { return "Feynman I.15.3x x1 = (x-u*t)/sqrt(1-u^2/c^2)"; } }
+  public class Feynman17 : FeynmanDescriptor {
+    private readonly int testSamples;
+    private readonly int trainingSamples;
 
- protected override string TargetVariable { get { return "x1"; } }
-    protected override string[] VariableNames { get { return new string[] { "x", "u", "c", "t", "x1"}; } }
-    protected override string[] AllowedInputVariables { get { return new string[] {"x", "u", "c", "t"}; } }
+    public Feynman17() : this((int) DateTime.Now.Ticks, 10000, 10000) { }
+
+    public Feynman17(int seed) {
+      Seed            = seed;
+      trainingSamples = 10000;
+      testSamples     = 10000;
+    }
+
+    public Feynman17(int seed, int trainingSamples, int testSamples) {
+      Seed                 = seed;
+      this.trainingSamples = trainingSamples;
+      this.testSamples     = testSamples;
+    }
+
+    public override string Name {
+      get { return string.Format("Feynman I.15.3x (x-u*t)/sqrt(1-u**2/c**2) | {0} samples", trainingSamples); }
+    }
+
+    protected override string TargetVariable { get { return "x1"; } }
+    protected override string[] VariableNames { get { return new[] {"x", "u", "c", "t", "x1"}; } }
+    protected override string[] AllowedInputVariables { get { return new[] {"x", "u", "c", "t"}; } }
 
     public int Seed { get; private set; }
 
-    public Feynman17() : this((int)System.DateTime.Now.Ticks) { }
-
-    public Feynman17(int seed) {
-      Seed = seed;
-    }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return trainingSamples; } }
+    protected override int TestPartitionStart { get { return trainingSamples; } }
+    protected override int TestPartitionEnd { get { return trainingSamples + testSamples; } }
 
     protected override List<List<double>> GenerateValues() {
-      var rand = new MersenneTwister((uint)Seed);
+      var rand = new MersenneTwister((uint) Seed);
 
       var data = new List<List<double>>();
-      var x = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 5, 10).ToList();
-      var u = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 2).ToList();
-      var c = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 3, 20).ToList();
-      var t = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 2).ToList();
+      var x    = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 5, 10).ToList();
+      var u    = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 2).ToList();
+      var c    = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 3, 20).ToList();
+      var t    = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 2).ToList();
 
       var x1 = new List<double>();
Index: branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman18.cs
===================================================================
--- branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman18.cs	(revision 17641)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman18.cs	(revision 17642)
@@ -1,34 +1,49 @@
-﻿using System;
+using System;
 using System.Collections.Generic;
 using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using HeuristicLab.Common;
 using HeuristicLab.Random;
 
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
-  public class Feynman18 : FeynmanDescriptor{
- public override string Name { get { return "Feynman I.15.3t t1 = (t-u*x/c^2)/sqrt(1-u^2/c^2)"; } }
+  public class Feynman18 : FeynmanDescriptor {
+    private readonly int testSamples;
+    private readonly int trainingSamples;
 
- protected override string TargetVariable { get { return "t1"; } }
-    protected override string[] VariableNames { get { return new string[] { "x", "c", "u", "t", "t1"}; } }
-    protected override string[] AllowedInputVariables { get { return new string[] {"x", "c", "u", "t"}; } }
+    public Feynman18() : this((int) DateTime.Now.Ticks, 10000, 10000) { }
+
+    public Feynman18(int seed) {
+      Seed            = seed;
+      trainingSamples = 10000;
+      testSamples     = 10000;
+    }
+
+    public Feynman18(int seed, int trainingSamples, int testSamples) {
+      Seed                 = seed;
+      this.trainingSamples = trainingSamples;
+      this.testSamples     = testSamples;
+    }
+
+    public override string Name {
+      get { return string.Format("Feynman I.15.3t (t-u*x/c**2)/sqrt(1-u**2/c**2) | {0} samples", trainingSamples); }
+    }
+
+    protected override string TargetVariable { get { return "t1"; } }
+    protected override string[] VariableNames { get { return new[] {"x", "c", "u", "t", "t1"}; } }
+    protected override string[] AllowedInputVariables { get { return new[] {"x", "c", "u", "t"}; } }
 
     public int Seed { get; private set; }
 
-    public Feynman18() : this((int)System.DateTime.Now.Ticks) { }
-
-    public Feynman18(int seed) {
-      Seed = seed;
-    }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return trainingSamples; } }
+    protected override int TestPartitionStart { get { return trainingSamples; } }
+    protected override int TestPartitionEnd { get { return trainingSamples + testSamples; } }
 
     protected override List<List<double>> GenerateValues() {
-      var rand = new MersenneTwister((uint)Seed);
+      var rand = new MersenneTwister((uint) Seed);
 
       var data = new List<List<double>>();
-      var x = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
-      var c = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 3, 10).ToList();
-      var u = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 2).ToList();
-      var t = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
+      var x    = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
+      var c    = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 3, 10).ToList();
+      var u    = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 2).ToList();
+      var t    = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
 
       var t1 = new List<double>();
Index: branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman19.cs
===================================================================
--- branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman19.cs	(revision 17641)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman19.cs	(revision 17642)
@@ -1,33 +1,48 @@
-﻿using System;
+using System;
 using System.Collections.Generic;
 using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using HeuristicLab.Common;
 using HeuristicLab.Random;
 
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
-  public class Feynman19 : FeynmanDescriptor{
- public override string Name { get { return "Feynman I.15.1 p = m_0*v/sqrt(1-v^2/c^2)"; } }
+  public class Feynman19 : FeynmanDescriptor {
+    private readonly int testSamples;
+    private readonly int trainingSamples;
 
- protected override string TargetVariable { get { return "p"; } }
-    protected override string[] VariableNames { get { return new string[] { "m_0", "v", "c", "p"}; } }
-    protected override string[] AllowedInputVariables { get { return new string[] {"m_0", "v", "c"}; } }
+    public Feynman19() : this((int) DateTime.Now.Ticks, 10000, 10000) { }
+
+    public Feynman19(int seed) {
+      Seed            = seed;
+      trainingSamples = 10000;
+      testSamples     = 10000;
+    }
+
+    public Feynman19(int seed, int trainingSamples, int testSamples) {
+      Seed                 = seed;
+      this.trainingSamples = trainingSamples;
+      this.testSamples     = testSamples;
+    }
+
+    public override string Name {
+      get { return string.Format("Feynman I.15.1 m_0*v/sqrt(1-v**2/c**2) | {0} samples", trainingSamples); }
+    }
+
+    protected override string TargetVariable { get { return "p"; } }
+    protected override string[] VariableNames { get { return new[] {"m_0", "v", "c", "p"}; } }
+    protected override string[] AllowedInputVariables { get { return new[] {"m_0", "v", "c"}; } }
 
     public int Seed { get; private set; }
 
-    public Feynman19() : this((int)System.DateTime.Now.Ticks) { }
-
-    public Feynman19(int seed) {
-      Seed = seed;
-    }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return trainingSamples; } }
+    protected override int TestPartitionStart { get { return trainingSamples; } }
+    protected override int TestPartitionEnd { get { return trainingSamples + testSamples; } }
 
     protected override List<List<double>> GenerateValues() {
-      var rand = new MersenneTwister((uint)Seed);
+      var rand = new MersenneTwister((uint) Seed);
 
       var data = new List<List<double>>();
-      var m_0 = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
-      var v = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 2).ToList();
-      var c = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 3, 10).ToList();
+      var m_0  = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
+      var v    = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 2).ToList();
+      var c    = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 3, 10).ToList();
 
       var p = new List<double>();
Index: branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman2.cs
===================================================================
--- branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman2.cs	(revision 17641)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman2.cs	(revision 17642)
@@ -1,45 +1,61 @@
-﻿using System;
+using System;
 using System.Collections.Generic;
 using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using HeuristicLab.Common;
 using HeuristicLab.Random;
 
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
-  public class Feynman2 : FeynmanDescriptor{
- public override string Name { get { return "Feynman I.6.2a f = exp(-(theta/sigma)^2)/2)/sqrt(2*pi)*sigma)"; } }
+  public class Feynman2 : FeynmanDescriptor {
+    private readonly int testSamples;
+    private readonly int trainingSamples;
 
- protected override string TargetVariable { get { return "f"; } }
-    protected override string[] VariableNames { get { return new string[] { "sigma", "theta", "f"}; } }
-    protected override string[] AllowedInputVariables { get { return new string[] { "sigma", "theta" }; } }
+    public Feynman2() : this((int) DateTime.Now.Ticks, 10000, 10000) { }
+
+    public Feynman2(int seed) {
+      Seed            = seed;
+      trainingSamples = 10000;
+      testSamples     = 10000;
+    }
+
+    public Feynman2(int seed, int trainingSamples, int testSamples) {
+      Seed                 = seed;
+      this.trainingSamples = trainingSamples;
+      this.testSamples     = testSamples;
+    }
+
+    public override string Name {
+      get {
+        return string.Format("Feynman I.6.2 exp(-(theta/sigma)**2/2)/(sqrt(2*pi)*sigma) | {0} samples",
+          trainingSamples);
+      }
+    }
+
+    protected override string TargetVariable { get { return "f"; } }
+    protected override string[] VariableNames { get { return new[] {"sigma", "theta", "f"}; } }
+    protected override string[] AllowedInputVariables { get { return new[] {"sigma", "theta"}; } }
 
     public int Seed { get; private set; }
 
-    public Feynman2() : this((int)System.DateTime.Now.Ticks) { }
-
-    public Feynman2(int seed) {
-      Seed = seed;
-    }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return trainingSamples; } }
+    protected override int TestPartitionStart { get { return trainingSamples; } }
+    protected override int TestPartitionEnd { get { return trainingSamples + testSamples; } }
 
     protected override List<List<double>> GenerateValues() {
-      var rand = new MersenneTwister((uint)Seed);
+      var rand = new MersenneTwister((uint) Seed);
 
-      var data = new List<List<double>>();
+      var data  = new List<List<double>>();
+      var sigma = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 3).ToList();
       var theta = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 3).ToList();
-      var sigma = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 3).ToList();
 
       var f = new List<double>();
 
+      data.Add(sigma);
       data.Add(theta);
-      data.Add(sigma);
       data.Add(f);
 
-
-      for (var i = 0; i < theta.Count; i++) {
+      for (var i = 0; i < sigma.Count; i++) {
         var res = Math.Exp(-Math.Pow(theta[i] / sigma[i], 2) / 2) / (Math.Sqrt(2 * Math.PI) * sigma[i]);
         f.Add(res);
       }
-
 
       return data;
Index: branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman20.cs
===================================================================
--- branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman20.cs	(revision 17641)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman20.cs	(revision 17642)
@@ -1,33 +1,48 @@
-﻿using System;
+using System;
 using System.Collections.Generic;
 using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using HeuristicLab.Common;
 using HeuristicLab.Random;
 
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
-  public class Feynman20 : FeynmanDescriptor{
- public override string Name { get { return "Feynman I.16.6 v1 = (u+v)/(1+u*v/c^2)"; } }
+  public class Feynman20 : FeynmanDescriptor {
+    private readonly int testSamples;
+    private readonly int trainingSamples;
 
- protected override string TargetVariable { get { return "v1"; } }
-    protected override string[] VariableNames { get { return new string[] { "c", "v", "u", "v1"}; } }
-    protected override string[] AllowedInputVariables { get { return new string[] {"c", "v", "u"}; } }
+    public Feynman20() : this((int) DateTime.Now.Ticks, 10000, 10000) { }
+
+    public Feynman20(int seed) {
+      Seed            = seed;
+      trainingSamples = 10000;
+      testSamples     = 10000;
+    }
+
+    public Feynman20(int seed, int trainingSamples, int testSamples) {
+      Seed                 = seed;
+      this.trainingSamples = trainingSamples;
+      this.testSamples     = testSamples;
+    }
+
+    public override string Name {
+      get { return string.Format("Feynman I.16.6 (u+v)/(1+u*v/c**2) | {0} samples", trainingSamples); }
+    }
+
+    protected override string TargetVariable { get { return "v1"; } }
+    protected override string[] VariableNames { get { return new[] {"c", "v", "u", "v1"}; } }
+    protected override string[] AllowedInputVariables { get { return new[] {"c", "v", "u"}; } }
 
     public int Seed { get; private set; }
 
-    public Feynman20() : this((int)System.DateTime.Now.Ticks) { }
-
-    public Feynman20(int seed) {
-      Seed = seed;
-    }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return trainingSamples; } }
+    protected override int TestPartitionStart { get { return trainingSamples; } }
+    protected override int TestPartitionEnd { get { return trainingSamples + testSamples; } }
 
     protected override List<List<double>> GenerateValues() {
-      var rand = new MersenneTwister((uint)Seed);
+      var rand = new MersenneTwister((uint) Seed);
 
       var data = new List<List<double>>();
-      var c = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
-      var v = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
-      var u = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
+      var c    = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
+      var v    = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
+      var u    = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
 
       var v1 = new List<double>();
Index: branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman21.cs
===================================================================
--- branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman21.cs	(revision 17641)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman21.cs	(revision 17642)
@@ -1,34 +1,49 @@
-﻿using System;
+using System;
 using System.Collections.Generic;
 using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using HeuristicLab.Common;
 using HeuristicLab.Random;
 
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
-  public class Feynman21 : FeynmanDescriptor{
- public override string Name { get { return "Feynman I.18.4 r = (m1*r1+m2*r2)/(m1+m2)"; } }
+  public class Feynman21 : FeynmanDescriptor {
+    private readonly int testSamples;
+    private readonly int trainingSamples;
 
- protected override string TargetVariable { get { return "r"; } }
-    protected override string[] VariableNames { get { return new string[] { "m1", "m2", "r1", "r2", "r"}; } }
-    protected override string[] AllowedInputVariables { get { return new string[] {"m1", "m2", "r1", "r2"}; } }
+    public Feynman21() : this((int) DateTime.Now.Ticks, 10000, 10000) { }
+
+    public Feynman21(int seed) {
+      Seed            = seed;
+      trainingSamples = 10000;
+      testSamples     = 10000;
+    }
+
+    public Feynman21(int seed, int trainingSamples, int testSamples) {
+      Seed                 = seed;
+      this.trainingSamples = trainingSamples;
+      this.testSamples     = testSamples;
+    }
+
+    public override string Name {
+      get { return string.Format("Feynman I.18.4 (m1*r1+m2*r2)/(m1+m2) | {0} samples", trainingSamples); }
+    }
+
+    protected override string TargetVariable { get { return "r"; } }
+    protected override string[] VariableNames { get { return new[] {"m1", "m2", "r1", "r2", "r"}; } }
+    protected override string[] AllowedInputVariables { get { return new[] {"m1", "m2", "r1", "r2"}; } }
 
     public int Seed { get; private set; }
 
-    public Feynman21() : this((int)System.DateTime.Now.Ticks) { }
-
-    public Feynman21(int seed) {
-      Seed = seed;
-    }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return trainingSamples; } }
+    protected override int TestPartitionStart { get { return trainingSamples; } }
+    protected override int TestPartitionEnd { get { return trainingSamples + testSamples; } }
 
     protected override List<List<double>> GenerateValues() {
-      var rand = new MersenneTwister((uint)Seed);
+      var rand = new MersenneTwister((uint) Seed);
 
       var data = new List<List<double>>();
-      var m1 = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
-      var m2 = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
-      var r1 = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
-      var r2 = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
+      var m1   = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
+      var m2   = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
+      var r1   = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
+      var r2   = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
 
       var r = new List<double>();
Index: branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman22.cs
===================================================================
--- branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman22.cs	(revision 17641)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman22.cs	(revision 17642)
@@ -1,32 +1,47 @@
-﻿using System;
+using System;
 using System.Collections.Generic;
 using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using HeuristicLab.Common;
 using HeuristicLab.Random;
 
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
-  public class Feynman22 : FeynmanDescriptor{
- public override string Name { get { return "Feynman I.18.12 tau = (m1*r1+m2*r2)/(m1+m2)"; } }
+  public class Feynman22 : FeynmanDescriptor {
+    private readonly int testSamples;
+    private readonly int trainingSamples;
 
- protected override string TargetVariable { get { return "tau"; } }
-    protected override string[] VariableNames { get { return new string[] { "r", "F", "theta", "tau"}; } }
-    protected override string[] AllowedInputVariables { get { return new string[] {"r", "F", "theta"}; } }
+    public Feynman22() : this((int) DateTime.Now.Ticks, 10000, 10000) { }
+
+    public Feynman22(int seed) {
+      Seed            = seed;
+      trainingSamples = 10000;
+      testSamples     = 10000;
+    }
+
+    public Feynman22(int seed, int trainingSamples, int testSamples) {
+      Seed                 = seed;
+      this.trainingSamples = trainingSamples;
+      this.testSamples     = testSamples;
+    }
+
+    public override string Name {
+      get { return string.Format("Feynman I.18.12 r*F*sin(theta) | {0} samples", trainingSamples); }
+    }
+
+    protected override string TargetVariable { get { return "tau"; } }
+    protected override string[] VariableNames { get { return new[] {"r", "F", "theta", "tau"}; } }
+    protected override string[] AllowedInputVariables { get { return new[] {"r", "F", "theta"}; } }
 
     public int Seed { get; private set; }
 
-    public Feynman22() : this((int)System.DateTime.Now.Ticks) { }
-
-    public Feynman22(int seed) {
-      Seed = seed;
-    }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return trainingSamples; } }
+    protected override int TestPartitionStart { get { return trainingSamples; } }
+    protected override int TestPartitionEnd { get { return trainingSamples + testSamples; } }
 
     protected override List<List<double>> GenerateValues() {
-      var rand = new MersenneTwister((uint)Seed);
+      var rand = new MersenneTwister((uint) Seed);
 
-      var data = new List<List<double>>();
-      var r = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
-      var F = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
+      var data  = new List<List<double>>();
+      var r     = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
+      var F     = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
       var theta = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 0, 5).ToList();
 
Index: branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman23.cs
===================================================================
--- branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman23.cs	(revision 17641)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman23.cs	(revision 17642)
@@ -1,33 +1,48 @@
-﻿using System;
+using System;
 using System.Collections.Generic;
 using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using HeuristicLab.Common;
 using HeuristicLab.Random;
 
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
-  public class Feynman23 : FeynmanDescriptor{
- public override string Name { get { return "Feynman I.18.14 L = m*r*v*sin(theta)"; } }
+  public class Feynman23 : FeynmanDescriptor {
+    private readonly int testSamples;
+    private readonly int trainingSamples;
 
- protected override string TargetVariable { get { return "L"; } }
-    protected override string[] VariableNames { get { return new string[] { "m", "r", "v", "theta", "L"}; } }
-    protected override string[] AllowedInputVariables { get { return new string[] {"m", "r", "v", "theta"}; } }
+    public Feynman23() : this((int) DateTime.Now.Ticks, 10000, 10000) { }
+
+    public Feynman23(int seed) {
+      Seed            = seed;
+      trainingSamples = 10000;
+      testSamples     = 10000;
+    }
+
+    public Feynman23(int seed, int trainingSamples, int testSamples) {
+      Seed                 = seed;
+      this.trainingSamples = trainingSamples;
+      this.testSamples     = testSamples;
+    }
+
+    public override string Name {
+      get { return string.Format("Feynman I.18.14 m*r*v*sin(theta) | {0} samples", trainingSamples); }
+    }
+
+    protected override string TargetVariable { get { return "L"; } }
+    protected override string[] VariableNames { get { return new[] {"m", "r", "v", "theta", "L"}; } }
+    protected override string[] AllowedInputVariables { get { return new[] {"m", "r", "v", "theta"}; } }
 
     public int Seed { get; private set; }
 
-    public Feynman23() : this((int)System.DateTime.Now.Ticks) { }
-
-    public Feynman23(int seed) {
-      Seed = seed;
-    }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return trainingSamples; } }
+    protected override int TestPartitionStart { get { return trainingSamples; } }
+    protected override int TestPartitionEnd { get { return trainingSamples + testSamples; } }
 
     protected override List<List<double>> GenerateValues() {
-      var rand = new MersenneTwister((uint)Seed);
+      var rand = new MersenneTwister((uint) Seed);
 
-      var data = new List<List<double>>();
-      var m = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
-      var r = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
-      var v = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
+      var data  = new List<List<double>>();
+      var m     = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
+      var r     = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
+      var v     = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
       var theta = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
 
@@ -37,7 +52,8 @@
       data.Add(r);
       data.Add(v);
+      data.Add(theta);
       data.Add(L);
 
-      for (var i = 0; i < r.Count; i++) {
+      for (var i = 0; i < m.Count; i++) {
         var res = m[i] * r[i] * v[i] * Math.Sin(theta[i]);
         L.Add(res);
Index: branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman24.cs
===================================================================
--- branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman24.cs	(revision 17641)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman24.cs	(revision 17642)
@@ -6,5 +6,26 @@
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
   public class Feynman24 : FeynmanDescriptor {
-    public override string Name { get { return "Feynman I.24.6 1/2*m*(omega**2+omega_0**2)*1/2*x**2"; } }
+    private readonly int testSamples;
+    private readonly int trainingSamples;
+
+    public Feynman24() : this((int) DateTime.Now.Ticks, 10000, 10000) { }
+
+    public Feynman24(int seed) {
+      Seed            = seed;
+      trainingSamples = 10000;
+      testSamples     = 10000;
+    }
+
+    public Feynman24(int seed, int trainingSamples, int testSamples) {
+      Seed                 = seed;
+      this.trainingSamples = trainingSamples;
+      this.testSamples     = testSamples;
+    }
+
+    public override string Name {
+      get {
+        return string.Format("Feynman I.24.6 1/2*m*(omega**2+omega_0**2)*1/2*x**2 | {0} samples", trainingSamples);
+      }
+    }
 
     protected override string TargetVariable { get { return "E_n"; } }
@@ -14,9 +35,8 @@
     public int Seed { get; private set; }
 
-    public Feynman24() : this((int) DateTime.Now.Ticks) { }
-
-    public Feynman24(int seed) {
-      Seed = seed;
-    }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return trainingSamples; } }
+    protected override int TestPartitionStart { get { return trainingSamples; } }
+    protected override int TestPartitionEnd { get { return trainingSamples + testSamples; } }
 
     protected override List<List<double>> GenerateValues() {
Index: branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman25.cs
===================================================================
--- branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman25.cs	(revision 17641)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman25.cs	(revision 17642)
@@ -6,5 +6,22 @@
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
   public class Feynman25 : FeynmanDescriptor {
-    public override string Name { get { return "Feynman I.25.13 q/C"; } }
+    private readonly int testSamples;
+    private readonly int trainingSamples;
+
+    public Feynman25() : this((int) DateTime.Now.Ticks, 10000, 10000) { }
+
+    public Feynman25(int seed) {
+      Seed            = seed;
+      trainingSamples = 10000;
+      testSamples     = 10000;
+    }
+
+    public Feynman25(int seed, int trainingSamples, int testSamples) {
+      Seed                 = seed;
+      this.trainingSamples = trainingSamples;
+      this.testSamples     = testSamples;
+    }
+
+    public override string Name { get { return string.Format("Feynman I.25.13 q/C | {0} samples", trainingSamples); } }
 
     protected override string TargetVariable { get { return "Volt"; } }
@@ -14,9 +31,8 @@
     public int Seed { get; private set; }
 
-    public Feynman25() : this((int) DateTime.Now.Ticks) { }
-
-    public Feynman25(int seed) {
-      Seed = seed;
-    }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return trainingSamples; } }
+    protected override int TestPartitionStart { get { return trainingSamples; } }
+    protected override int TestPartitionEnd { get { return trainingSamples + testSamples; } }
 
     protected override List<List<double>> GenerateValues() {
Index: branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman26.cs
===================================================================
--- branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman26.cs	(revision 17641)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman26.cs	(revision 17642)
@@ -6,5 +6,24 @@
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
   public class Feynman26 : FeynmanDescriptor {
-    public override string Name { get { return "Feynman I.26.2 arcsin(n*sin(theta2))"; } }
+    private readonly int testSamples;
+    private readonly int trainingSamples;
+
+    public Feynman26() : this((int) DateTime.Now.Ticks, 10000, 10000) { }
+
+    public Feynman26(int seed) {
+      Seed            = seed;
+      trainingSamples = 10000;
+      testSamples     = 10000;
+    }
+
+    public Feynman26(int seed, int trainingSamples, int testSamples) {
+      Seed                 = seed;
+      this.trainingSamples = trainingSamples;
+      this.testSamples     = testSamples;
+    }
+
+    public override string Name {
+      get { return string.Format("Feynman I.26.2 arcsin(n*sin(theta2)) | {0} samples", trainingSamples); }
+    }
 
     protected override string TargetVariable { get { return "theta1"; } }
@@ -14,9 +33,8 @@
     public int Seed { get; private set; }
 
-    public Feynman26() : this((int) DateTime.Now.Ticks) { }
-
-    public Feynman26(int seed) {
-      Seed = seed;
-    }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return trainingSamples; } }
+    protected override int TestPartitionStart { get { return trainingSamples; } }
+    protected override int TestPartitionEnd { get { return trainingSamples + testSamples; } }
 
     protected override List<List<double>> GenerateValues() {
Index: branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman27.cs
===================================================================
--- branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman27.cs	(revision 17641)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman27.cs	(revision 17642)
@@ -6,5 +6,24 @@
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
   public class Feynman27 : FeynmanDescriptor {
-    public override string Name { get { return "Feynman I.27.6 1/(1/d1+n/d2)"; } }
+    private readonly int testSamples;
+    private readonly int trainingSamples;
+
+    public Feynman27() : this((int) DateTime.Now.Ticks, 10000, 10000) { }
+
+    public Feynman27(int seed) {
+      Seed            = seed;
+      trainingSamples = 10000;
+      testSamples     = 10000;
+    }
+
+    public Feynman27(int seed, int trainingSamples, int testSamples) {
+      Seed                 = seed;
+      this.trainingSamples = trainingSamples;
+      this.testSamples     = testSamples;
+    }
+
+    public override string Name {
+      get { return string.Format("Feynman I.27.6 1/(1/d1+n/d2) | {0} samples", trainingSamples); }
+    }
 
     protected override string TargetVariable { get { return "foc"; } }
@@ -14,9 +33,8 @@
     public int Seed { get; private set; }
 
-    public Feynman27() : this((int) DateTime.Now.Ticks) { }
-
-    public Feynman27(int seed) {
-      Seed = seed;
-    }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return trainingSamples; } }
+    protected override int TestPartitionStart { get { return trainingSamples; } }
+    protected override int TestPartitionEnd { get { return trainingSamples + testSamples; } }
 
     protected override List<List<double>> GenerateValues() {
Index: branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman28.cs
===================================================================
--- branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman28.cs	(revision 17641)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman28.cs	(revision 17642)
@@ -6,5 +6,24 @@
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
   public class Feynman28 : FeynmanDescriptor {
-    public override string Name { get { return "Feynman I.29.4 omega/c"; } }
+    private readonly int testSamples;
+    private readonly int trainingSamples;
+
+    public Feynman28() : this((int) DateTime.Now.Ticks, 10000, 10000) { }
+
+    public Feynman28(int seed) {
+      Seed            = seed;
+      trainingSamples = 10000;
+      testSamples     = 10000;
+    }
+
+    public Feynman28(int seed, int trainingSamples, int testSamples) {
+      Seed                 = seed;
+      this.trainingSamples = trainingSamples;
+      this.testSamples     = testSamples;
+    }
+
+    public override string Name {
+      get { return string.Format("Feynman I.29.4 omega/c | {0} samples", trainingSamples); }
+    }
 
     protected override string TargetVariable { get { return "k"; } }
@@ -14,9 +33,8 @@
     public int Seed { get; private set; }
 
-    public Feynman28() : this((int) DateTime.Now.Ticks) { }
-
-    public Feynman28(int seed) {
-      Seed = seed;
-    }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return trainingSamples; } }
+    protected override int TestPartitionStart { get { return trainingSamples; } }
+    protected override int TestPartitionEnd { get { return trainingSamples + testSamples; } }
 
     protected override List<List<double>> GenerateValues() {
Index: branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman29.cs
===================================================================
--- branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman29.cs	(revision 17641)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman29.cs	(revision 17642)
@@ -6,5 +6,27 @@
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
   public class Feynman29 : FeynmanDescriptor {
-    public override string Name { get { return "Feynman I.29.16 sqrt(x1**2+x2**2-2*x1*x2*cos(theta1-theta2))"; } }
+    private readonly int testSamples;
+    private readonly int trainingSamples;
+
+    public Feynman29() : this((int) DateTime.Now.Ticks, 10000, 10000) { }
+
+    public Feynman29(int seed) {
+      Seed            = seed;
+      trainingSamples = 10000;
+      testSamples     = 10000;
+    }
+
+    public Feynman29(int seed, int trainingSamples, int testSamples) {
+      Seed                 = seed;
+      this.trainingSamples = trainingSamples;
+      this.testSamples     = testSamples;
+    }
+
+    public override string Name {
+      get {
+        return string.Format("Feynman I.29.16 sqrt(x1**2+x2**2-2*x1*x2*cos(theta1-theta2)) | {0} samples",
+          trainingSamples);
+      }
+    }
 
     protected override string TargetVariable { get { return "x"; } }
@@ -14,9 +36,8 @@
     public int Seed { get; private set; }
 
-    public Feynman29() : this((int) DateTime.Now.Ticks) { }
-
-    public Feynman29(int seed) {
-      Seed = seed;
-    }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return trainingSamples; } }
+    protected override int TestPartitionStart { get { return trainingSamples; } }
+    protected override int TestPartitionEnd { get { return trainingSamples + testSamples; } }
 
     protected override List<List<double>> GenerateValues() {
@@ -38,5 +59,6 @@
 
       for (var i = 0; i < x1.Count; i++) {
-        var res = Math.Sqrt(Math.Pow(x1[i], 2) + Math.Pow(x2[i], 2) - 2 * x1[i] * x2[i] * Math.Cos(theta1[i] - theta2[i]));
+        var res = Math.Sqrt(Math.Pow(x1[i], 2) + Math.Pow(x2[i], 2) -
+                            2 * x1[i] * x2[i] * Math.Cos(theta1[i] - theta2[i]));
         x.Add(res);
       }
Index: branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman3.cs
===================================================================
--- branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman3.cs	(revision 17641)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman3.cs	(revision 17642)
@@ -1,32 +1,50 @@
-﻿using System;
+using System;
 using System.Collections.Generic;
 using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using HeuristicLab.Common;
 using HeuristicLab.Random;
 
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
-  public class Feynman3 : FeynmanDescriptor{
- public override string Name { get { return "Feynman I.6.2b f = exp(-((theta-theta1)/sigma)^2/2)/(sqrt(2*pi)*sigma)"; } }
+  public class Feynman3 : FeynmanDescriptor {
+    private readonly int testSamples;
+    private readonly int trainingSamples;
 
- protected override string TargetVariable { get { return "f"; } }
-    protected override string[] VariableNames { get { return new string[] { "sigma", "theta", "theta1", "f"}; } }
-    protected override string[] AllowedInputVariables { get { return new string[] { "sigma", "theta", "theta1" }; } }
+    public Feynman3() : this((int) DateTime.Now.Ticks, 10000, 10000) { }
+
+    public Feynman3(int seed) {
+      Seed            = seed;
+      trainingSamples = 10000;
+      testSamples     = 10000;
+    }
+
+    public Feynman3(int seed, int trainingSamples, int testSamples) {
+      Seed                 = seed;
+      this.trainingSamples = trainingSamples;
+      this.testSamples     = testSamples;
+    }
+
+    public override string Name {
+      get {
+        return string.Format("Feynman I.6.2b exp(-((theta-theta1)/sigma)**2/2)/(sqrt(2*pi)*sigma) | {0} samples",
+          trainingSamples);
+      }
+    }
+
+    protected override string TargetVariable { get { return "f"; } }
+    protected override string[] VariableNames { get { return new[] {"sigma", "theta", "theta1", "f"}; } }
+    protected override string[] AllowedInputVariables { get { return new[] {"sigma", "theta", "theta1"}; } }
 
     public int Seed { get; private set; }
 
-    public Feynman3() : this((int)System.DateTime.Now.Ticks) { }
-
-    public Feynman3(int seed) {
-      Seed = seed;
-    }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return trainingSamples; } }
+    protected override int TestPartitionStart { get { return trainingSamples; } }
+    protected override int TestPartitionEnd { get { return trainingSamples + testSamples; } }
 
     protected override List<List<double>> GenerateValues() {
-      var rand = new MersenneTwister((uint)Seed);
+      var rand = new MersenneTwister((uint) Seed);
 
-      var data = new List<List<double>>();
-      var sigma = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 3).ToList();
-      var theta = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 3).ToList();
+      var data   = new List<List<double>>();
+      var sigma  = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 3).ToList();
+      var theta  = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 3).ToList();
       var theta1 = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 3).ToList();
 
@@ -38,10 +56,8 @@
       data.Add(f);
 
-
-      for (var i = 0; i < theta.Count; i++) {
+      for (var i = 0; i < sigma.Count; i++) {
         var res = Math.Exp(-(Math.Pow(theta[i] - theta1[i], 2) / sigma[i]) / 2) / (Math.Sqrt(2 * Math.PI) * sigma[i]);
         f.Add(res);
       }
-
 
       return data;
Index: branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman30.cs
===================================================================
--- branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman30.cs	(revision 17641)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman30.cs	(revision 17642)
@@ -6,5 +6,26 @@
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
   public class Feynman30 : FeynmanDescriptor {
-    public override string Name { get { return "Feynman I.30.3 Int_0*sin(n*theta/2)**2/sin(theta/2)**2"; } }
+    private readonly int testSamples;
+    private readonly int trainingSamples;
+
+    public Feynman30() : this((int) DateTime.Now.Ticks, 10000, 10000) { }
+
+    public Feynman30(int seed) {
+      Seed            = seed;
+      trainingSamples = 10000;
+      testSamples     = 10000;
+    }
+
+    public Feynman30(int seed, int trainingSamples, int testSamples) {
+      Seed                 = seed;
+      this.trainingSamples = trainingSamples;
+      this.testSamples     = testSamples;
+    }
+
+    public override string Name {
+      get {
+        return string.Format("Feynman I.30.3 Int_0*sin(n*theta/2)**2/sin(theta/2)**2 | {0} samples", trainingSamples);
+      }
+    }
 
     protected override string TargetVariable { get { return "Int"; } }
@@ -14,9 +35,8 @@
     public int Seed { get; private set; }
 
-    public Feynman30() : this((int) DateTime.Now.Ticks) { }
-
-    public Feynman30(int seed) {
-      Seed = seed;
-    }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return trainingSamples; } }
+    protected override int TestPartitionStart { get { return trainingSamples; } }
+    protected override int TestPartitionEnd { get { return trainingSamples + testSamples; } }
 
     protected override List<List<double>> GenerateValues() {
Index: branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman31.cs
===================================================================
--- branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman31.cs	(revision 17641)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman31.cs	(revision 17642)
@@ -6,5 +6,24 @@
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
   public class Feynman31 : FeynmanDescriptor {
-    public override string Name { get { return "Feynman I.30.5 arcsin(lambd/(n*d))"; } }
+    private readonly int testSamples;
+    private readonly int trainingSamples;
+
+    public Feynman31() : this((int) DateTime.Now.Ticks, 10000, 10000) { }
+
+    public Feynman31(int seed) {
+      Seed            = seed;
+      trainingSamples = 10000;
+      testSamples     = 10000;
+    }
+
+    public Feynman31(int seed, int trainingSamples, int testSamples) {
+      Seed                 = seed;
+      this.trainingSamples = trainingSamples;
+      this.testSamples     = testSamples;
+    }
+
+    public override string Name {
+      get { return string.Format("Feynman I.30.5 arcsin(lambd/(n*d)) | {0} samples", trainingSamples); }
+    }
 
     protected override string TargetVariable { get { return "theta"; } }
@@ -14,9 +33,8 @@
     public int Seed { get; private set; }
 
-    public Feynman31() : this((int) DateTime.Now.Ticks) { }
-
-    public Feynman31(int seed) {
-      Seed = seed;
-    }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return trainingSamples; } }
+    protected override int TestPartitionStart { get { return trainingSamples; } }
+    protected override int TestPartitionEnd { get { return trainingSamples + testSamples; } }
 
     protected override List<List<double>> GenerateValues() {
Index: branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman32.cs
===================================================================
--- branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman32.cs	(revision 17641)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman32.cs	(revision 17642)
@@ -6,17 +6,35 @@
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
   public class Feynman32 : FeynmanDescriptor {
-    public override string Name { get { return "Feynman I.32.5 q**2*a**2/(6*pi*epsilon*c**3)"; } }
+    private readonly int testSamples;
+    private readonly int trainingSamples;
+
+    public Feynman32() : this((int) DateTime.Now.Ticks, 10000, 10000) { }
+
+    public Feynman32(int seed) {
+      Seed            = seed;
+      trainingSamples = 10000;
+      testSamples     = 10000;
+    }
+
+    public Feynman32(int seed, int trainingSamples, int testSamples) {
+      Seed                 = seed;
+      this.trainingSamples = trainingSamples;
+      this.testSamples     = testSamples;
+    }
+
+    public override string Name {
+      get { return string.Format("Feynman I.32.5 q**2*a**2/(6*pi*epsilon*c**3) | {0} samples", trainingSamples); }
+    }
 
     protected override string TargetVariable { get { return "Pwr"; } }
-    protected override string[] VariableNames { get { return new string[] {"q", "a", "epsilon", "c", "Pwr"}; } }
-    protected override string[] AllowedInputVariables { get { return new string[] {"q", "a", "epsilon", "c"}; } }
+    protected override string[] VariableNames { get { return new[] {"q", "a", "epsilon", "c", "Pwr"}; } }
+    protected override string[] AllowedInputVariables { get { return new[] {"q", "a", "epsilon", "c"}; } }
 
     public int Seed { get; private set; }
 
-    public Feynman32() : this((int) System.DateTime.Now.Ticks) { }
-
-    public Feynman32(int seed) {
-      Seed = seed;
-    }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return trainingSamples; } }
+    protected override int TestPartitionStart { get { return trainingSamples; } }
+    protected override int TestPartitionEnd { get { return trainingSamples + testSamples; } }
 
     protected override List<List<double>> GenerateValues() {
Index: branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman33.cs
===================================================================
--- branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman33.cs	(revision 17641)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman33.cs	(revision 17642)
@@ -6,6 +6,27 @@
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
   public class Feynman33 : FeynmanDescriptor {
+    private readonly int testSamples;
+    private readonly int trainingSamples;
+
+    public Feynman33() : this((int) DateTime.Now.Ticks, 10000, 10000) { }
+
+    public Feynman33(int seed) {
+      Seed            = seed;
+      trainingSamples = 10000;
+      testSamples     = 10000;
+    }
+
+    public Feynman33(int seed, int trainingSamples, int testSamples) {
+      Seed                 = seed;
+      this.trainingSamples = trainingSamples;
+      this.testSamples     = testSamples;
+    }
+
     public override string Name {
-      get { return "Feynman I.32.17 (1/2*epsilon*c*Ef**2)*(8*pi*r**2/3)*(omega**4/(omega**2-omega_0**2)**2)"; }
+      get {
+        return string.Format(
+          "Feynman I.32.17 (1/2*epsilon*c*Ef**2)*(8*pi*r**2/3)*(omega**4/(omega**2-omega_0**2)**2) | {0} samples",
+          trainingSamples);
+      }
     }
 
@@ -22,9 +43,8 @@
     public int Seed { get; private set; }
 
-    public Feynman33() : this((int) DateTime.Now.Ticks) { }
-
-    public Feynman33(int seed) {
-      Seed = seed;
-    }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return trainingSamples; } }
+    protected override int TestPartitionStart { get { return trainingSamples; } }
+    protected override int TestPartitionEnd { get { return trainingSamples + testSamples; } }
 
     protected override List<List<double>> GenerateValues() {
@@ -50,5 +70,6 @@
 
       for (var i = 0; i < epsilon.Count; i++) {
-        var res = 1.0 / 2 * epsilon[i] * c[i] * Math.Pow(Ef[i], 2) * (8 * Math.PI + Math.Pow(r[i], 2) / 3) * (Math.Pow(omega[i], 4) / Math.Pow((Math.Pow(omega[i], 2) - Math.Pow(omega_0[i], 2)),2));
+        var res = 1.0 / 2 * epsilon[i] * c[i] * Math.Pow(Ef[i], 2) * (8 * Math.PI + Math.Pow(r[i], 2) / 3) *
+                  (Math.Pow(omega[i], 4) / Math.Pow(Math.Pow(omega[i], 2) - Math.Pow(omega_0[i], 2), 2));
         Pwr.Add(res);
       }
Index: branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman34.cs
===================================================================
--- branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman34.cs	(revision 17641)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman34.cs	(revision 17642)
@@ -6,5 +6,24 @@
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
   public class Feynman34 : FeynmanDescriptor {
-    public override string Name { get { return "Feynman I.34.8 q*v*B/p"; } }
+    private readonly int testSamples;
+    private readonly int trainingSamples;
+
+    public Feynman34() : this((int) DateTime.Now.Ticks, 10000, 10000) { }
+
+    public Feynman34(int seed) {
+      Seed            = seed;
+      trainingSamples = 10000;
+      testSamples     = 10000;
+    }
+
+    public Feynman34(int seed, int trainingSamples, int testSamples) {
+      Seed                 = seed;
+      this.trainingSamples = trainingSamples;
+      this.testSamples     = testSamples;
+    }
+
+    public override string Name {
+      get { return string.Format("Feynman I.34.8 q*v*B/p | {0} samples", trainingSamples); }
+    }
 
     protected override string TargetVariable { get { return "omega"; } }
@@ -14,9 +33,8 @@
     public int Seed { get; private set; }
 
-    public Feynman34() : this((int) DateTime.Now.Ticks) { }
-
-    public Feynman34(int seed) {
-      Seed = seed;
-    }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return trainingSamples; } }
+    protected override int TestPartitionStart { get { return trainingSamples; } }
+    protected override int TestPartitionEnd { get { return trainingSamples + testSamples; } }
 
     protected override List<List<double>> GenerateValues() {
Index: branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman35.cs
===================================================================
--- branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman35.cs	(revision 17641)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman35.cs	(revision 17642)
@@ -6,5 +6,24 @@
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
   public class Feynman35 : FeynmanDescriptor {
-    public override string Name { get { return "Feynman I.34.1 omega_0/(1-v/c)"; } }
+    private readonly int testSamples;
+    private readonly int trainingSamples;
+
+    public Feynman35() : this((int) DateTime.Now.Ticks, 10000, 10000) { }
+
+    public Feynman35(int seed) {
+      Seed            = seed;
+      trainingSamples = 10000;
+      testSamples     = 10000;
+    }
+
+    public Feynman35(int seed, int trainingSamples, int testSamples) {
+      Seed                 = seed;
+      this.trainingSamples = trainingSamples;
+      this.testSamples     = testSamples;
+    }
+
+    public override string Name {
+      get { return string.Format("Feynman I.34.1 omega_0/(1-v/c) | {0} samples", trainingSamples); }
+    }
 
     protected override string TargetVariable { get { return "omega"; } }
@@ -14,9 +33,8 @@
     public int Seed { get; private set; }
 
-    public Feynman35() : this((int) DateTime.Now.Ticks) { }
-
-    public Feynman35(int seed) {
-      Seed = seed;
-    }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return trainingSamples; } }
+    protected override int TestPartitionStart { get { return trainingSamples; } }
+    protected override int TestPartitionEnd { get { return trainingSamples + testSamples; } }
 
     protected override List<List<double>> GenerateValues() {
Index: branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman36.cs
===================================================================
--- branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman36.cs	(revision 17641)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman36.cs	(revision 17642)
@@ -6,5 +6,24 @@
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
   public class Feynman36 : FeynmanDescriptor {
-    public override string Name { get { return "Feynman I.34.14 (1+v/c)/sqrt(1-v**2/c**2)*omega_0"; } }
+    private readonly int testSamples;
+    private readonly int trainingSamples;
+
+    public Feynman36() : this((int) DateTime.Now.Ticks, 10000, 10000) { }
+
+    public Feynman36(int seed) {
+      Seed            = seed;
+      trainingSamples = 10000;
+      testSamples     = 10000;
+    }
+
+    public Feynman36(int seed, int trainingSamples, int testSamples) {
+      Seed                 = seed;
+      this.trainingSamples = trainingSamples;
+      this.testSamples     = testSamples;
+    }
+
+    public override string Name {
+      get { return string.Format("Feynman I.34.14 (1+v/c)/sqrt(1-v**2/c**2)*omega_0 | {0} samples", trainingSamples); }
+    }
 
     protected override string TargetVariable { get { return "omega"; } }
@@ -14,9 +33,8 @@
     public int Seed { get; private set; }
 
-    public Feynman36() : this((int) DateTime.Now.Ticks) { }
-
-    public Feynman36(int seed) {
-      Seed = seed;
-    }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return trainingSamples; } }
+    protected override int TestPartitionStart { get { return trainingSamples; } }
+    protected override int TestPartitionEnd { get { return trainingSamples + testSamples; } }
 
     protected override List<List<double>> GenerateValues() {
Index: branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman37.cs
===================================================================
--- branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman37.cs	(revision 17641)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman37.cs	(revision 17642)
@@ -6,5 +6,24 @@
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
   public class Feynman37 : FeynmanDescriptor {
-    public override string Name { get { return "Feynman I.34.27 (h/(2*pi))*omega"; } }
+    private readonly int testSamples;
+    private readonly int trainingSamples;
+
+    public Feynman37() : this((int) DateTime.Now.Ticks, 10000, 10000) { }
+
+    public Feynman37(int seed) {
+      Seed            = seed;
+      trainingSamples = 10000;
+      testSamples     = 10000;
+    }
+
+    public Feynman37(int seed, int trainingSamples, int testSamples) {
+      Seed                 = seed;
+      this.trainingSamples = trainingSamples;
+      this.testSamples     = testSamples;
+    }
+
+    public override string Name {
+      get { return string.Format("Feynman I.34.27 (h/(2*pi))*omega | {0} samples", trainingSamples); }
+    }
 
     protected override string TargetVariable { get { return "E_n"; } }
@@ -14,9 +33,8 @@
     public int Seed { get; private set; }
 
-    public Feynman37() : this((int) DateTime.Now.Ticks) { }
-
-    public Feynman37(int seed) {
-      Seed = seed;
-    }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return trainingSamples; } }
+    protected override int TestPartitionStart { get { return trainingSamples; } }
+    protected override int TestPartitionEnd { get { return trainingSamples + testSamples; } }
 
     protected override List<List<double>> GenerateValues() {
Index: branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman38.cs
===================================================================
--- branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman38.cs	(revision 17641)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman38.cs	(revision 17642)
@@ -6,5 +6,24 @@
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
   public class Feynman38 : FeynmanDescriptor {
-    public override string Name { get { return "Feynman I.37.4 I1+I2+2*sqrt(I1*I2)*cos(delta)"; } }
+    private readonly int testSamples;
+    private readonly int trainingSamples;
+
+    public Feynman38() : this((int) DateTime.Now.Ticks, 10000, 10000) { }
+
+    public Feynman38(int seed) {
+      Seed            = seed;
+      trainingSamples = 10000;
+      testSamples     = 10000;
+    }
+
+    public Feynman38(int seed, int trainingSamples, int testSamples) {
+      Seed                 = seed;
+      this.trainingSamples = trainingSamples;
+      this.testSamples     = testSamples;
+    }
+
+    public override string Name {
+      get { return string.Format("Feynman I.37.4 I1+I2+2*sqrt(I1*I2)*cos(delta) | {0} samples", trainingSamples); }
+    }
 
     protected override string TargetVariable { get { return "Int"; } }
@@ -14,9 +33,8 @@
     public int Seed { get; private set; }
 
-    public Feynman38() : this((int) DateTime.Now.Ticks) { }
-
-    public Feynman38(int seed) {
-      Seed = seed;
-    }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return trainingSamples; } }
+    protected override int TestPartitionStart { get { return trainingSamples; } }
+    protected override int TestPartitionEnd { get { return trainingSamples + testSamples; } }
 
     protected override List<List<double>> GenerateValues() {
Index: branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman39.cs
===================================================================
--- branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman39.cs	(revision 17641)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman39.cs	(revision 17642)
@@ -6,5 +6,26 @@
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
   public class Feynman39 : FeynmanDescriptor {
-    public override string Name { get { return "Feynman I.38.12 4*pi*epsilon*(h/(2*pi))**2/(m*q**2)"; } }
+    private readonly int testSamples;
+    private readonly int trainingSamples;
+
+    public Feynman39() : this((int) DateTime.Now.Ticks, 10000, 10000) { }
+
+    public Feynman39(int seed) {
+      Seed            = seed;
+      trainingSamples = 10000;
+      testSamples     = 10000;
+    }
+
+    public Feynman39(int seed, int trainingSamples, int testSamples) {
+      Seed                 = seed;
+      this.trainingSamples = trainingSamples;
+      this.testSamples     = testSamples;
+    }
+
+    public override string Name {
+      get {
+        return string.Format("Feynman I.38.12 4*pi*epsilon*(h/(2*pi))**2/(m*q**2) | {0} samples", trainingSamples);
+      }
+    }
 
     protected override string TargetVariable { get { return "r"; } }
@@ -14,9 +35,8 @@
     public int Seed { get; private set; }
 
-    public Feynman39() : this((int) DateTime.Now.Ticks) { }
-
-    public Feynman39(int seed) {
-      Seed = seed;
-    }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return trainingSamples; } }
+    protected override int TestPartitionStart { get { return trainingSamples; } }
+    protected override int TestPartitionEnd { get { return trainingSamples + testSamples; } }
 
     protected override List<List<double>> GenerateValues() {
@@ -38,5 +58,5 @@
 
       for (var i = 0; i < m.Count; i++) {
-        var res = 4 * Math.PI * epsilon[i] * Math.Pow((h[i] / (2 * Math.PI)), 2) / (m[i] * Math.Pow(q[i], 2));
+        var res = 4 * Math.PI * epsilon[i] * Math.Pow(h[i] / (2 * Math.PI), 2) / (m[i] * Math.Pow(q[i], 2));
         r.Add(res);
       }
Index: branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman4.cs
===================================================================
--- branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman4.cs	(revision 17641)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman4.cs	(revision 17642)
@@ -1,34 +1,49 @@
-﻿using System;
+using System;
 using System.Collections.Generic;
 using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using HeuristicLab.Common;
 using HeuristicLab.Random;
 
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
-  public class Feynman4 : FeynmanDescriptor{
- public override string Name { get { return "Feynman I.8.14 d = sqrt((x2-x1)^2+(y2-y1)^2)"; } }
+  public class Feynman4 : FeynmanDescriptor {
+    private readonly int testSamples;
+    private readonly int trainingSamples;
 
- protected override string TargetVariable { get { return "d"; } }
-    protected override string[] VariableNames { get { return new string[] { "x1", "x2", "y1", "y2", "d"}; } }
-    protected override string[] AllowedInputVariables { get { return new string[] {"x1", "x2", "y1", "y2"}; } }
+    public Feynman4() : this((int) DateTime.Now.Ticks, 10000, 10000) { }
+
+    public Feynman4(int seed) {
+      Seed            = seed;
+      trainingSamples = 10000;
+      testSamples     = 10000;
+    }
+
+    public Feynman4(int seed, int trainingSamples, int testSamples) {
+      Seed                 = seed;
+      this.trainingSamples = trainingSamples;
+      this.testSamples     = testSamples;
+    }
+
+    public override string Name {
+      get { return string.Format("Feynman I.8.14 sqrt((x2-x1)**2+(y2-y1)**2) | {0} samples", trainingSamples); }
+    }
+
+    protected override string TargetVariable { get { return "d"; } }
+    protected override string[] VariableNames { get { return new[] {"x1", "x2", "y1", "y2", "d"}; } }
+    protected override string[] AllowedInputVariables { get { return new[] {"x1", "x2", "y1", "y2"}; } }
 
     public int Seed { get; private set; }
 
-    public Feynman4() : this((int)System.DateTime.Now.Ticks) { }
-
-    public Feynman4(int seed) {
-      Seed = seed;
-    }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return trainingSamples; } }
+    protected override int TestPartitionStart { get { return trainingSamples; } }
+    protected override int TestPartitionEnd { get { return trainingSamples + testSamples; } }
 
     protected override List<List<double>> GenerateValues() {
-      var rand = new MersenneTwister((uint)Seed);
+      var rand = new MersenneTwister((uint) Seed);
 
       var data = new List<List<double>>();
-      var x1 = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
-      var x2 = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
-      var y1 = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
-      var y2 = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
+      var x1   = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
+      var x2   = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
+      var y1   = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
+      var y2   = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
 
       var d = new List<double>();
@@ -40,10 +55,8 @@
       data.Add(d);
 
-
       for (var i = 0; i < x1.Count; i++) {
-        var res = Math.Sqrt(Math.Pow((x2[i] - x1[i]), 2) + Math.Pow((y2[i] - y1[i]), 2));
+        var res = Math.Sqrt(Math.Pow(x2[i] - x1[i], 2) + Math.Pow(y2[i] - y1[i], 2));
         d.Add(res);
       }
-
 
       return data;
Index: branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman40.cs
===================================================================
--- branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman40.cs	(revision 17641)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman40.cs	(revision 17642)
@@ -6,5 +6,24 @@
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
   public class Feynman40 : FeynmanDescriptor {
-    public override string Name { get { return "Feynman I.39.1 3/2*pr*V"; } }
+    private readonly int testSamples;
+    private readonly int trainingSamples;
+
+    public Feynman40() : this((int) DateTime.Now.Ticks, 10000, 10000) { }
+
+    public Feynman40(int seed) {
+      Seed            = seed;
+      trainingSamples = 10000;
+      testSamples     = 10000;
+    }
+
+    public Feynman40(int seed, int trainingSamples, int testSamples) {
+      Seed                 = seed;
+      this.trainingSamples = trainingSamples;
+      this.testSamples     = testSamples;
+    }
+
+    public override string Name {
+      get { return string.Format("Feynman I.39.1 3/2*pr*V | {0} samples", trainingSamples); }
+    }
 
     protected override string TargetVariable { get { return "E_n"; } }
@@ -14,9 +33,8 @@
     public int Seed { get; private set; }
 
-    public Feynman40() : this((int) DateTime.Now.Ticks) { }
-
-    public Feynman40(int seed) {
-      Seed = seed;
-    }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return trainingSamples; } }
+    protected override int TestPartitionStart { get { return trainingSamples; } }
+    protected override int TestPartitionEnd { get { return trainingSamples + testSamples; } }
 
     protected override List<List<double>> GenerateValues() {
Index: branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman41.cs
===================================================================
--- branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman41.cs	(revision 17641)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman41.cs	(revision 17642)
@@ -6,5 +6,24 @@
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
   public class Feynman41 : FeynmanDescriptor {
-    public override string Name { get { return "Feynman I.39.11 1/(gamma-1)*pr*V"; } }
+    private readonly int testSamples;
+    private readonly int trainingSamples;
+
+    public Feynman41() : this((int) DateTime.Now.Ticks, 10000, 10000) { }
+
+    public Feynman41(int seed) {
+      Seed            = seed;
+      trainingSamples = 10000;
+      testSamples     = 10000;
+    }
+
+    public Feynman41(int seed, int trainingSamples, int testSamples) {
+      Seed                 = seed;
+      this.trainingSamples = trainingSamples;
+      this.testSamples     = testSamples;
+    }
+
+    public override string Name {
+      get { return string.Format("Feynman I.39.11 1/(gamma-1)*pr*V | {0} samples", trainingSamples); }
+    }
 
     protected override string TargetVariable { get { return "E_n"; } }
@@ -14,9 +33,8 @@
     public int Seed { get; private set; }
 
-    public Feynman41() : this((int) DateTime.Now.Ticks) { }
-
-    public Feynman41(int seed) {
-      Seed = seed;
-    }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return trainingSamples; } }
+    protected override int TestPartitionStart { get { return trainingSamples; } }
+    protected override int TestPartitionEnd { get { return trainingSamples + testSamples; } }
 
     protected override List<List<double>> GenerateValues() {
Index: branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman42.cs
===================================================================
--- branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman42.cs	(revision 17641)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman42.cs	(revision 17642)
@@ -6,5 +6,24 @@
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
   public class Feynman42 : FeynmanDescriptor {
-    public override string Name { get { return "Feynman I.39.22 n*kb*T/V"; } }
+    private readonly int testSamples;
+    private readonly int trainingSamples;
+
+    public Feynman42() : this((int) DateTime.Now.Ticks, 10000, 10000) { }
+
+    public Feynman42(int seed) {
+      Seed            = seed;
+      trainingSamples = 10000;
+      testSamples     = 10000;
+    }
+
+    public Feynman42(int seed, int trainingSamples, int testSamples) {
+      Seed                 = seed;
+      this.trainingSamples = trainingSamples;
+      this.testSamples     = testSamples;
+    }
+
+    public override string Name {
+      get { return string.Format("Feynman I.39.22 n*kb*T/V | {0} samples", trainingSamples); }
+    }
 
     protected override string TargetVariable { get { return "pr"; } }
@@ -14,9 +33,8 @@
     public int Seed { get; private set; }
 
-    public Feynman42() : this((int) DateTime.Now.Ticks) { }
-
-    public Feynman42(int seed) {
-      Seed = seed;
-    }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return trainingSamples; } }
+    protected override int TestPartitionStart { get { return trainingSamples; } }
+    protected override int TestPartitionEnd { get { return trainingSamples + testSamples; } }
 
     protected override List<List<double>> GenerateValues() {
Index: branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman43.cs
===================================================================
--- branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman43.cs	(revision 17641)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman43.cs	(revision 17642)
@@ -6,5 +6,24 @@
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
   public class Feynman43 : FeynmanDescriptor {
-    public override string Name { get { return "Feynman I.40.1 n_0*exp(-m*g*x/(kb*T))"; } }
+    private readonly int testSamples;
+    private readonly int trainingSamples;
+
+    public Feynman43() : this((int) DateTime.Now.Ticks, 10000, 10000) { }
+
+    public Feynman43(int seed) {
+      Seed            = seed;
+      trainingSamples = 10000;
+      testSamples     = 10000;
+    }
+
+    public Feynman43(int seed, int trainingSamples, int testSamples) {
+      Seed                 = seed;
+      this.trainingSamples = trainingSamples;
+      this.testSamples     = testSamples;
+    }
+
+    public override string Name {
+      get { return string.Format("Feynman I.40.1 n_0*exp(-m*g*x/(kb*T)) | {0} samples", trainingSamples); }
+    }
 
     protected override string TargetVariable { get { return "n"; } }
@@ -14,9 +33,8 @@
     public int Seed { get; private set; }
 
-    public Feynman43() : this((int) DateTime.Now.Ticks) { }
-
-    public Feynman43(int seed) {
-      Seed = seed;
-    }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return trainingSamples; } }
+    protected override int TestPartitionStart { get { return trainingSamples; } }
+    protected override int TestPartitionEnd { get { return trainingSamples + testSamples; } }
 
     protected override List<List<double>> GenerateValues() {
Index: branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman44.cs
===================================================================
--- branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman44.cs	(revision 17641)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman44.cs	(revision 17642)
@@ -6,6 +6,27 @@
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
   public class Feynman44 : FeynmanDescriptor {
+    private readonly int testSamples;
+    private readonly int trainingSamples;
+
+    public Feynman44() : this((int) DateTime.Now.Ticks, 10000, 10000) { }
+
+    public Feynman44(int seed) {
+      Seed            = seed;
+      trainingSamples = 10000;
+      testSamples     = 10000;
+    }
+
+    public Feynman44(int seed, int trainingSamples, int testSamples) {
+      Seed                 = seed;
+      this.trainingSamples = trainingSamples;
+      this.testSamples     = testSamples;
+    }
+
     public override string Name {
-      get { return "Feynman I.41.16 h/(2*pi)*omega**3/(pi**2*c**2*(exp((h/(2*pi))*omega/(kb*T))-1))"; }
+      get {
+        return string.Format(
+          "Feynman I.41.16 h/(2*pi)*omega**3/(pi**2*c**2*(exp((h/(2*pi))*omega/(kb*T))-1)) | {0} samples",
+          trainingSamples);
+      }
     }
 
@@ -16,9 +37,8 @@
     public int Seed { get; private set; }
 
-    public Feynman44() : this((int) DateTime.Now.Ticks) { }
-
-    public Feynman44(int seed) {
-      Seed = seed;
-    }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return trainingSamples; } }
+    protected override int TestPartitionStart { get { return trainingSamples; } }
+    protected override int TestPartitionEnd { get { return trainingSamples + testSamples; } }
 
     protected override List<List<double>> GenerateValues() {
@@ -42,5 +62,7 @@
 
       for (var i = 0; i < omega.Count; i++) {
-        var res = h[i] / (2 * Math.PI) * Math.Pow(omega[i], 3) / (Math.Pow(Math.PI, 2) * Math.Pow(c[i], 2) * (Math.Exp(h[i] / (2 * Math.PI) * omega[i] / (kb[i] * T[i])) - 1));
+        var res = h[i] / (2 * Math.PI) * Math.Pow(omega[i], 3) /
+                  (Math.Pow(Math.PI, 2) * Math.Pow(c[i], 2) *
+                   (Math.Exp(h[i] / (2 * Math.PI) * omega[i] / (kb[i] * T[i])) - 1));
         L_rad.Add(res);
       }
Index: branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman45.cs
===================================================================
--- branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman45.cs	(revision 17641)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman45.cs	(revision 17642)
@@ -6,5 +6,24 @@
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
   public class Feynman45 : FeynmanDescriptor {
-    public override string Name { get { return "Feynman I.43.16 mu_drift*q*Volt/d"; } }
+    private readonly int testSamples;
+    private readonly int trainingSamples;
+
+    public Feynman45() : this((int) DateTime.Now.Ticks, 10000, 10000) { }
+
+    public Feynman45(int seed) {
+      Seed            = seed;
+      trainingSamples = 10000;
+      testSamples     = 10000;
+    }
+
+    public Feynman45(int seed, int trainingSamples, int testSamples) {
+      Seed                 = seed;
+      this.trainingSamples = trainingSamples;
+      this.testSamples     = testSamples;
+    }
+
+    public override string Name {
+      get { return string.Format("Feynman I.43.16 mu_drift*q*Volt/d | {0} samples", trainingSamples); }
+    }
 
     protected override string TargetVariable { get { return "v"; } }
@@ -14,9 +33,8 @@
     public int Seed { get; private set; }
 
-    public Feynman45() : this((int) DateTime.Now.Ticks) { }
-
-    public Feynman45(int seed) {
-      Seed = seed;
-    }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return trainingSamples; } }
+    protected override int TestPartitionStart { get { return trainingSamples; } }
+    protected override int TestPartitionEnd { get { return trainingSamples + testSamples; } }
 
     protected override List<List<double>> GenerateValues() {
Index: branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman46.cs
===================================================================
--- branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman46.cs	(revision 17641)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman46.cs	(revision 17642)
@@ -6,5 +6,24 @@
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
   public class Feynman46 : FeynmanDescriptor {
-    public override string Name { get { return "Feynman I.43.31 mob*kb*T"; } }
+    private readonly int testSamples;
+    private readonly int trainingSamples;
+
+    public Feynman46() : this((int) DateTime.Now.Ticks, 10000, 10000) { }
+
+    public Feynman46(int seed) {
+      Seed            = seed;
+      trainingSamples = 10000;
+      testSamples     = 10000;
+    }
+
+    public Feynman46(int seed, int trainingSamples, int testSamples) {
+      Seed                 = seed;
+      this.trainingSamples = trainingSamples;
+      this.testSamples     = testSamples;
+    }
+
+    public override string Name {
+      get { return string.Format("Feynman I.43.31 mob*kb*T | {0} samples", trainingSamples); }
+    }
 
     protected override string TargetVariable { get { return "D"; } }
@@ -14,9 +33,8 @@
     public int Seed { get; private set; }
 
-    public Feynman46() : this((int) DateTime.Now.Ticks) { }
-
-    public Feynman46(int seed) {
-      Seed = seed;
-    }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return trainingSamples; } }
+    protected override int TestPartitionStart { get { return trainingSamples; } }
+    protected override int TestPartitionEnd { get { return trainingSamples + testSamples; } }
 
     protected override List<List<double>> GenerateValues() {
Index: branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman47.cs
===================================================================
--- branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman47.cs	(revision 17641)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman47.cs	(revision 17642)
@@ -6,5 +6,24 @@
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
   public class Feynman47 : FeynmanDescriptor {
-    public override string Name { get { return "Feynman I.43.43 1/(gamma-1)*kb*v/A"; } }
+    private readonly int testSamples;
+    private readonly int trainingSamples;
+
+    public Feynman47() : this((int) DateTime.Now.Ticks, 10000, 10000) { }
+
+    public Feynman47(int seed) {
+      Seed            = seed;
+      trainingSamples = 10000;
+      testSamples     = 10000;
+    }
+
+    public Feynman47(int seed, int trainingSamples, int testSamples) {
+      Seed                 = seed;
+      this.trainingSamples = trainingSamples;
+      this.testSamples     = testSamples;
+    }
+
+    public override string Name {
+      get { return string.Format("Feynman I.43.43 1/(gamma-1)*kb*v/A | {0} samples", trainingSamples); }
+    }
 
     protected override string TargetVariable { get { return "kappa"; } }
@@ -14,9 +33,8 @@
     public int Seed { get; private set; }
 
-    public Feynman47() : this((int) DateTime.Now.Ticks) { }
-
-    public Feynman47(int seed) {
-      Seed = seed;
-    }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return trainingSamples; } }
+    protected override int TestPartitionStart { get { return trainingSamples; } }
+    protected override int TestPartitionEnd { get { return trainingSamples + testSamples; } }
 
     protected override List<List<double>> GenerateValues() {
Index: branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman48.cs
===================================================================
--- branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman48.cs	(revision 17641)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman48.cs	(revision 17642)
@@ -6,5 +6,24 @@
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
   public class Feynman48 : FeynmanDescriptor {
-    public override string Name { get { return "Feynman I.44.4 n*kb*T*ln(V2/V1)"; } }
+    private readonly int testSamples;
+    private readonly int trainingSamples;
+
+    public Feynman48() : this((int) DateTime.Now.Ticks, 10000, 10000) { }
+
+    public Feynman48(int seed) {
+      Seed            = seed;
+      trainingSamples = 10000;
+      testSamples     = 10000;
+    }
+
+    public Feynman48(int seed, int trainingSamples, int testSamples) {
+      Seed                 = seed;
+      this.trainingSamples = trainingSamples;
+      this.testSamples     = testSamples;
+    }
+
+    public override string Name {
+      get { return string.Format("Feynman I.44.4 n*kb*T*ln(V2/V1) | {0} samples", trainingSamples); }
+    }
 
     protected override string TargetVariable { get { return "E_n"; } }
@@ -14,9 +33,8 @@
     public int Seed { get; private set; }
 
-    public Feynman48() : this((int) DateTime.Now.Ticks) { }
-
-    public Feynman48(int seed) {
-      Seed = seed;
-    }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return trainingSamples; } }
+    protected override int TestPartitionStart { get { return trainingSamples; } }
+    protected override int TestPartitionEnd { get { return trainingSamples + testSamples; } }
 
     protected override List<List<double>> GenerateValues() {
Index: branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman49.cs
===================================================================
--- branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman49.cs	(revision 17641)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman49.cs	(revision 17642)
@@ -6,11 +6,24 @@
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
   public class Feynman49 : FeynmanDescriptor {
-    public Feynman49() : this((int) DateTime.Now.Ticks) { }
+    private readonly int testSamples;
+    private readonly int trainingSamples;
+
+    public Feynman49() : this((int) DateTime.Now.Ticks, 10000, 10000) { }
 
     public Feynman49(int seed) {
-      Seed = seed;
+      Seed            = seed;
+      trainingSamples = 10000;
+      testSamples     = 10000;
     }
 
-    public override string Name { get { return "Feynman I.47.23 sqrt(gamma*pr/rho)"; } }
+    public Feynman49(int seed, int trainingSamples, int testSamples) {
+      Seed                 = seed;
+      this.trainingSamples = trainingSamples;
+      this.testSamples     = testSamples;
+    }
+
+    public override string Name {
+      get { return string.Format("Feynman I.47.23 sqrt(gamma*pr/rho) | {0} samples", trainingSamples); }
+    }
 
     protected override string TargetVariable { get { return "c"; } }
@@ -19,4 +32,9 @@
 
     public int Seed { get; private set; }
+
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return trainingSamples; } }
+    protected override int TestPartitionStart { get { return trainingSamples; } }
+    protected override int TestPartitionEnd { get { return trainingSamples + testSamples; } }
 
     protected override List<List<double>> GenerateValues() {
Index: branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman5.cs
===================================================================
--- branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman5.cs	(revision 17641)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman5.cs	(revision 17642)
@@ -1,39 +1,63 @@
-﻿using System;
+using System;
 using System.Collections.Generic;
 using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using HeuristicLab.Common;
 using HeuristicLab.Random;
 
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
-  public class Feynman5 : FeynmanDescriptor{
- public override string Name { get { return "Feynman I.9.18 F = G*m1*m2/((x2-x1)^2+(y2-y1)^2+(z2-z1)^2)"; } }
+  public class Feynman5 : FeynmanDescriptor {
+    private readonly int testSamples;
+    private readonly int trainingSamples;
 
- protected override string TargetVariable { get { return "F"; } }
-    protected override string[] VariableNames { get { return new string[] { "m1", "m2", "G", "x1", "x2", "y1", "y2", "z1", "z2", "F"}; } }
-    protected override string[] AllowedInputVariables { get { return new string[] {"m1", "m2", "G", "x1", "x2", "y1", "y2", "z1", "z2"}; } }
+    public Feynman5() : this((int) DateTime.Now.Ticks, 10000, 10000) { }
+
+    public Feynman5(int seed) {
+      Seed            = seed;
+      trainingSamples = 10000;
+      testSamples     = 10000;
+    }
+
+    public Feynman5(int seed, int trainingSamples, int testSamples) {
+      Seed                 = seed;
+      this.trainingSamples = trainingSamples;
+      this.testSamples     = testSamples;
+    }
+
+    public override string Name {
+      get {
+        return string.Format("Feynman I.9.18 G*m1*m2/((x2-x1)**2+(y2-y1)**2+(z2-z1)**2) | {0} samples",
+          trainingSamples);
+      }
+    }
+
+    protected override string TargetVariable { get { return "F"; } }
+
+    protected override string[] VariableNames {
+      get { return new[] {"m1", "m2", "G", "x1", "x2", "y1", "y2", "z1", "z2", "F"}; }
+    }
+
+    protected override string[] AllowedInputVariables {
+      get { return new[] {"m1", "m2", "G", "x1", "x2", "y1", "y2", "z1", "z2"}; }
+    }
 
     public int Seed { get; private set; }
 
-    public Feynman5() : this((int)System.DateTime.Now.Ticks) { }
-
-    public Feynman5(int seed) {
-      Seed = seed;
-    }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return trainingSamples; } }
+    protected override int TestPartitionStart { get { return trainingSamples; } }
+    protected override int TestPartitionEnd { get { return trainingSamples + testSamples; } }
 
     protected override List<List<double>> GenerateValues() {
-      var rand = new MersenneTwister((uint)Seed);
+      var rand = new MersenneTwister((uint) Seed);
 
       var data = new List<List<double>>();
-      var m1 = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 2).ToList();
-      var m2 = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 2).ToList();
-      var G = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 2).ToList();
-      var x1 = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 3, 4).ToList();
-      var x2 = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 2).ToList();
-      var y1 = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 3, 4).ToList();
-      var y2 = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 2).ToList();
-      var z1 = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 3, 4).ToList();
-      var z2 = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 2).ToList();
+      var m1   = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 2).ToList();
+      var m2   = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 2).ToList();
+      var G    = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 2).ToList();
+      var x1   = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 3, 4).ToList();
+      var x2   = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 2).ToList();
+      var y1   = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 3, 4).ToList();
+      var y2   = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 2).ToList();
+      var z1   = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 3, 4).ToList();
+      var z2   = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 2).ToList();
 
       var F = new List<double>();
@@ -50,9 +74,9 @@
       data.Add(F);
 
-      for (var i = 0; i < x1.Count; i++) {
-        var res = G[i] * m1[i] * m2[i] / (Math.Pow(x2[i] - x1[i], 2) + Math.Pow(y2[i] - y1[i], 2) + Math.Pow(z2[i] - z1[i], 2));
+      for (var i = 0; i < m1.Count; i++) {
+        var res = G[i] * m1[i] * m2[i] /
+                  (Math.Pow(x2[i] - x1[i], 2) + Math.Pow(y2[i] - y1[i], 2) + Math.Pow(z2[i] - z1[i], 2));
         F.Add(res);
       }
-
 
       return data;
Index: branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman50.cs
===================================================================
--- branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman50.cs	(revision 17641)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman50.cs	(revision 17642)
@@ -6,5 +6,24 @@
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
   public class Feynman50 : FeynmanDescriptor {
-    public override string Name { get { return "Feynman I.48.2 m*c**2/sqrt(1-v**2/c**2)"; } }
+    private readonly int testSamples;
+    private readonly int trainingSamples;
+
+    public Feynman50() : this((int) DateTime.Now.Ticks, 10000, 10000) { }
+
+    public Feynman50(int seed) {
+      Seed            = seed;
+      trainingSamples = 10000;
+      testSamples     = 10000;
+    }
+
+    public Feynman50(int seed, int trainingSamples, int testSamples) {
+      Seed                 = seed;
+      this.trainingSamples = trainingSamples;
+      this.testSamples     = testSamples;
+    }
+
+    public override string Name {
+      get { return string.Format("Feynman I.48.2 m*c**2/sqrt(1-v**2/c**2) | {0} samples", trainingSamples); }
+    }
 
     protected override string TargetVariable { get { return "E_n"; } }
@@ -14,9 +33,8 @@
     public int Seed { get; private set; }
 
-    public Feynman50() : this((int) DateTime.Now.Ticks) { }
-
-    public Feynman50(int seed) {
-      Seed = seed;
-    }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return trainingSamples; } }
+    protected override int TestPartitionStart { get { return trainingSamples; } }
+    protected override int TestPartitionEnd { get { return trainingSamples + testSamples; } }
 
     protected override List<List<double>> GenerateValues() {
Index: branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman51.cs
===================================================================
--- branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman51.cs	(revision 17641)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman51.cs	(revision 17642)
@@ -6,5 +6,26 @@
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
   public class Feynman51 : FeynmanDescriptor {
-    public override string Name { get { return "Feynman I.50.26 x1*(cos(omega*t)+alpha*cos(omega*t)**2)"; } }
+    private readonly int testSamples;
+    private readonly int trainingSamples;
+
+    public Feynman51() : this((int) DateTime.Now.Ticks, 10000, 10000) { }
+
+    public Feynman51(int seed) {
+      Seed            = seed;
+      trainingSamples = 10000;
+      testSamples     = 10000;
+    }
+
+    public Feynman51(int seed, int trainingSamples, int testSamples) {
+      Seed                 = seed;
+      this.trainingSamples = trainingSamples;
+      this.testSamples     = testSamples;
+    }
+
+    public override string Name {
+      get {
+        return string.Format("Feynman I.50.26 x1*(cos(omega*t)+alpha*cos(omega*t)**2) | {0} samples", trainingSamples);
+      }
+    }
 
     protected override string TargetVariable { get { return "x"; } }
@@ -14,9 +35,8 @@
     public int Seed { get; private set; }
 
-    public Feynman51() : this((int) DateTime.Now.Ticks) { }
-
-    public Feynman51(int seed) {
-      Seed = seed;
-    }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return trainingSamples; } }
+    protected override int TestPartitionStart { get { return trainingSamples; } }
+    protected override int TestPartitionEnd { get { return trainingSamples + testSamples; } }
 
     protected override List<List<double>> GenerateValues() {
Index: branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman52.cs
===================================================================
--- branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman52.cs	(revision 17641)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman52.cs	(revision 17642)
@@ -6,5 +6,24 @@
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
   public class Feynman52 : FeynmanDescriptor {
-    public override string Name { get { return "Feynman II.2.42 kappa*(T2-T1)*A/d"; } }
+    private readonly int testSamples;
+    private readonly int trainingSamples;
+
+    public Feynman52() : this((int) DateTime.Now.Ticks, 10000, 10000) { }
+
+    public Feynman52(int seed) {
+      Seed            = seed;
+      trainingSamples = 10000;
+      testSamples     = 10000;
+    }
+
+    public Feynman52(int seed, int trainingSamples, int testSamples) {
+      Seed                 = seed;
+      this.trainingSamples = trainingSamples;
+      this.testSamples     = testSamples;
+    }
+
+    public override string Name {
+      get { return string.Format("Feynman II.2.42 kappa*(T2-T1)*A/d | {0} samples", trainingSamples); }
+    }
 
     protected override string TargetVariable { get { return "Pwr"; } }
@@ -14,9 +33,8 @@
     public int Seed { get; private set; }
 
-    public Feynman52() : this((int) DateTime.Now.Ticks) { }
-
-    public Feynman52(int seed) {
-      Seed = seed;
-    }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return trainingSamples; } }
+    protected override int TestPartitionStart { get { return trainingSamples; } }
+    protected override int TestPartitionEnd { get { return trainingSamples + testSamples; } }
 
     protected override List<List<double>> GenerateValues() {
Index: branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman53.cs
===================================================================
--- branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman53.cs	(revision 17641)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman53.cs	(revision 17642)
@@ -6,5 +6,24 @@
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
   public class Feynman53 : FeynmanDescriptor {
-    public override string Name { get { return "Feynman II.3.24 Pwr/(4*pi*r**2)"; } }
+    private readonly int testSamples;
+    private readonly int trainingSamples;
+
+    public Feynman53() : this((int) DateTime.Now.Ticks, 10000, 10000) { }
+
+    public Feynman53(int seed) {
+      Seed            = seed;
+      trainingSamples = 10000;
+      testSamples     = 10000;
+    }
+
+    public Feynman53(int seed, int trainingSamples, int testSamples) {
+      Seed                 = seed;
+      this.trainingSamples = trainingSamples;
+      this.testSamples     = testSamples;
+    }
+
+    public override string Name {
+      get { return string.Format("Feynman II.3.24 Pwr/(4*pi*r**2) | {0} samples", trainingSamples); }
+    }
 
     protected override string TargetVariable { get { return "flux"; } }
@@ -14,9 +33,8 @@
     public int Seed { get; private set; }
 
-    public Feynman53() : this((int) DateTime.Now.Ticks) { }
-
-    public Feynman53(int seed) {
-      Seed = seed;
-    }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return trainingSamples; } }
+    protected override int TestPartitionStart { get { return trainingSamples; } }
+    protected override int TestPartitionEnd { get { return trainingSamples + testSamples; } }
 
     protected override List<List<double>> GenerateValues() {
Index: branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman54.cs
===================================================================
--- branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman54.cs	(revision 17641)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman54.cs	(revision 17642)
@@ -6,5 +6,24 @@
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
   public class Feynman54 : FeynmanDescriptor {
-    public override string Name { get { return "Feynman II.4.23 q/(4*pi*epsilon*r)"; } }
+    private readonly int testSamples;
+    private readonly int trainingSamples;
+
+    public Feynman54() : this((int) DateTime.Now.Ticks, 10000, 10000) { }
+
+    public Feynman54(int seed) {
+      Seed            = seed;
+      trainingSamples = 10000;
+      testSamples     = 10000;
+    }
+
+    public Feynman54(int seed, int trainingSamples, int testSamples) {
+      Seed                 = seed;
+      this.trainingSamples = trainingSamples;
+      this.testSamples     = testSamples;
+    }
+
+    public override string Name {
+      get { return string.Format("Feynman II.4.23 q/(4*pi*epsilon*r) | {0} samples", trainingSamples); }
+    }
 
     protected override string TargetVariable { get { return "Volt"; } }
@@ -14,9 +33,8 @@
     public int Seed { get; private set; }
 
-    public Feynman54() : this((int) DateTime.Now.Ticks) { }
-
-    public Feynman54(int seed) {
-      Seed = seed;
-    }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return trainingSamples; } }
+    protected override int TestPartitionStart { get { return trainingSamples; } }
+    protected override int TestPartitionEnd { get { return trainingSamples + testSamples; } }
 
     protected override List<List<double>> GenerateValues() {
Index: branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman55.cs
===================================================================
--- branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman55.cs	(revision 17641)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman55.cs	(revision 17642)
@@ -6,5 +6,26 @@
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
   public class Feynman55 : FeynmanDescriptor {
-    public override string Name { get { return "Feynman II.6.11 1/(4*pi*epsilon)*p_d*cos(theta)/r**2"; } }
+    private readonly int testSamples;
+    private readonly int trainingSamples;
+
+    public Feynman55() : this((int) DateTime.Now.Ticks, 10000, 10000) { }
+
+    public Feynman55(int seed) {
+      Seed            = seed;
+      trainingSamples = 10000;
+      testSamples     = 10000;
+    }
+
+    public Feynman55(int seed, int trainingSamples, int testSamples) {
+      Seed                 = seed;
+      this.trainingSamples = trainingSamples;
+      this.testSamples     = testSamples;
+    }
+
+    public override string Name {
+      get {
+        return string.Format("Feynman II.6.11 1/(4*pi*epsilon)*p_d*cos(theta)/r**2 | {0} samples", trainingSamples);
+      }
+    }
 
     protected override string TargetVariable { get { return "Volt"; } }
@@ -14,9 +35,8 @@
     public int Seed { get; private set; }
 
-    public Feynman55() : this((int) DateTime.Now.Ticks) { }
-
-    public Feynman55(int seed) {
-      Seed = seed;
-    }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return trainingSamples; } }
+    protected override int TestPartitionStart { get { return trainingSamples; } }
+    protected override int TestPartitionEnd { get { return trainingSamples + testSamples; } }
 
     protected override List<List<double>> GenerateValues() {
Index: branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman56.cs
===================================================================
--- branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman56.cs	(revision 17641)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman56.cs	(revision 17642)
@@ -6,5 +6,27 @@
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
   public class Feynman56 : FeynmanDescriptor {
-    public override string Name { get { return "Feynman II.6.15a p_d/(4*pi*epsilon)*3*z/r**5*sqrt(x**2+y**2)"; } }
+    private readonly int testSamples;
+    private readonly int trainingSamples;
+
+    public Feynman56() : this((int) DateTime.Now.Ticks, 10000, 10000) { }
+
+    public Feynman56(int seed) {
+      Seed            = seed;
+      trainingSamples = 10000;
+      testSamples     = 10000;
+    }
+
+    public Feynman56(int seed, int trainingSamples, int testSamples) {
+      Seed                 = seed;
+      this.trainingSamples = trainingSamples;
+      this.testSamples     = testSamples;
+    }
+
+    public override string Name {
+      get {
+        return string.Format("Feynman II.6.15a p_d/(4*pi*epsilon)*3*z/r**5*sqrt(x**2+y**2) | {0} samples",
+          trainingSamples);
+      }
+    }
 
     protected override string TargetVariable { get { return "Ef"; } }
@@ -14,9 +36,8 @@
     public int Seed { get; private set; }
 
-    public Feynman56() : this((int) DateTime.Now.Ticks) { }
-
-    public Feynman56(int seed) {
-      Seed = seed;
-    }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return trainingSamples; } }
+    protected override int TestPartitionStart { get { return trainingSamples; } }
+    protected override int TestPartitionEnd { get { return trainingSamples + testSamples; } }
 
     protected override List<List<double>> GenerateValues() {
@@ -42,5 +63,6 @@
 
       for (var i = 0; i < epsilon.Count; i++) {
-        var res = p_d[i] / (4 * Math.PI * epsilon[i]) * 3 * z[i] / Math.Pow(r[i], 2) * Math.Sqrt(Math.Pow(x[i], 2) + Math.Pow(y[i], 2));
+        var res = p_d[i] / (4 * Math.PI * epsilon[i]) * 3 * z[i] / Math.Pow(r[i], 2) *
+                  Math.Sqrt(Math.Pow(x[i], 2) + Math.Pow(y[i], 2));
         Ef.Add(res);
       }
Index: branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman57.cs
===================================================================
--- branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman57.cs	(revision 17641)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman57.cs	(revision 17642)
@@ -6,5 +6,27 @@
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
   public class Feynman57 : FeynmanDescriptor {
-    public override string Name { get { return "Feynman II.6.15b p_d/(4*pi*epsilon)*3*cos(theta)*sin(theta)/r**3"; } }
+    private readonly int testSamples;
+    private readonly int trainingSamples;
+
+    public Feynman57() : this((int) DateTime.Now.Ticks, 10000, 10000) { }
+
+    public Feynman57(int seed) {
+      Seed            = seed;
+      trainingSamples = 10000;
+      testSamples     = 10000;
+    }
+
+    public Feynman57(int seed, int trainingSamples, int testSamples) {
+      Seed                 = seed;
+      this.trainingSamples = trainingSamples;
+      this.testSamples     = testSamples;
+    }
+
+    public override string Name {
+      get {
+        return string.Format("Feynman II.6.15b p_d/(4*pi*epsilon)*3*cos(theta)*sin(theta)/r**3 | {0} samples",
+          trainingSamples);
+      }
+    }
 
     protected override string TargetVariable { get { return "Ef"; } }
@@ -14,9 +36,8 @@
     public int Seed { get; private set; }
 
-    public Feynman57() : this((int) DateTime.Now.Ticks) { }
-
-    public Feynman57(int seed) {
-      Seed = seed;
-    }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return trainingSamples; } }
+    protected override int TestPartitionStart { get { return trainingSamples; } }
+    protected override int TestPartitionEnd { get { return trainingSamples + testSamples; } }
 
     protected override List<List<double>> GenerateValues() {
Index: branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman58.cs
===================================================================
--- branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman58.cs	(revision 17641)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman58.cs	(revision 17642)
@@ -6,5 +6,24 @@
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
   public class Feynman58 : FeynmanDescriptor {
-    public override string Name { get { return "Feynman II.8.7 3/5*q**2/(4*pi*epsilon*d)"; } }
+    private readonly int testSamples;
+    private readonly int trainingSamples;
+
+    public Feynman58() : this((int) DateTime.Now.Ticks, 10000, 10000) { }
+
+    public Feynman58(int seed) {
+      Seed            = seed;
+      trainingSamples = 10000;
+      testSamples     = 10000;
+    }
+
+    public Feynman58(int seed, int trainingSamples, int testSamples) {
+      Seed                 = seed;
+      this.trainingSamples = trainingSamples;
+      this.testSamples     = testSamples;
+    }
+
+    public override string Name {
+      get { return string.Format("Feynman II.8.7 3/5*q**2/(4*pi*epsilon*d) | {0} samples", trainingSamples); }
+    }
 
     protected override string TargetVariable { get { return "E_n"; } }
@@ -14,9 +33,8 @@
     public int Seed { get; private set; }
 
-    public Feynman58() : this((int) DateTime.Now.Ticks) { }
-
-    public Feynman58(int seed) {
-      Seed = seed;
-    }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return trainingSamples; } }
+    protected override int TestPartitionStart { get { return trainingSamples; } }
+    protected override int TestPartitionEnd { get { return trainingSamples + testSamples; } }
 
     protected override List<List<double>> GenerateValues() {
Index: branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman59.cs
===================================================================
--- branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman59.cs	(revision 17641)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman59.cs	(revision 17642)
@@ -6,5 +6,24 @@
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
   public class Feynman59 : FeynmanDescriptor {
-    public override string Name { get { return "Feynman II.8.31 epsilon*Ef**2/2"; } }
+    private readonly int testSamples;
+    private readonly int trainingSamples;
+
+    public Feynman59() : this((int) DateTime.Now.Ticks, 10000, 10000) { }
+
+    public Feynman59(int seed) {
+      Seed            = seed;
+      trainingSamples = 10000;
+      testSamples     = 10000;
+    }
+
+    public Feynman59(int seed, int trainingSamples, int testSamples) {
+      Seed                 = seed;
+      this.trainingSamples = trainingSamples;
+      this.testSamples     = testSamples;
+    }
+
+    public override string Name {
+      get { return string.Format("Feynman II.8.31 epsilon*Ef**2/2 | {0} samples", trainingSamples); }
+    }
 
     protected override string TargetVariable { get { return "E_den"; } }
@@ -14,9 +33,8 @@
     public int Seed { get; private set; }
 
-    public Feynman59() : this((int) DateTime.Now.Ticks) { }
-
-    public Feynman59(int seed) {
-      Seed = seed;
-    }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return trainingSamples; } }
+    protected override int TestPartitionStart { get { return trainingSamples; } }
+    protected override int TestPartitionEnd { get { return trainingSamples + testSamples; } }
 
     protected override List<List<double>> GenerateValues() {
Index: branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman6.cs
===================================================================
--- branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman6.cs	(revision 17641)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman6.cs	(revision 17642)
@@ -1,34 +1,48 @@
-﻿using System;
+using System;
 using System.Collections.Generic;
 using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using HeuristicLab.Common;
 using HeuristicLab.Random;
 
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
-  public class Feynman6 : FeynmanDescriptor{
- public override string Name { get { return "Feynman I.10.7 m = m_0/sqrt(1-v^2/c^2)"; } }
+  public class Feynman6 : FeynmanDescriptor {
+    private readonly int testSamples;
+    private readonly int trainingSamples;
 
- protected override string TargetVariable { get { return "m"; } }
-    protected override string[] VariableNames { get { return new string[] { "m_0", "v", "c", "m"}; } }
-    protected override string[] AllowedInputVariables { get { return new string[] {"m_0", "v", "c"}; } }
+    public Feynman6() : this((int) DateTime.Now.Ticks, 10000, 10000) { }
+
+    public Feynman6(int seed) {
+      Seed            = seed;
+      trainingSamples = 10000;
+      testSamples     = 10000;
+    }
+
+    public Feynman6(int seed, int trainingSamples, int testSamples) {
+      Seed                 = seed;
+      this.trainingSamples = trainingSamples;
+      this.testSamples     = testSamples;
+    }
+
+    public override string Name {
+      get { return string.Format("Feynman I.10.7 m_0/sqrt(1-v**2/c**2) | {0} samples", trainingSamples); }
+    }
+
+    protected override string TargetVariable { get { return "m"; } }
+    protected override string[] VariableNames { get { return new[] {"m_0", "v", "c", "m"}; } }
+    protected override string[] AllowedInputVariables { get { return new[] {"m_0", "v", "c"}; } }
 
     public int Seed { get; private set; }
 
-    public Feynman6() : this((int)System.DateTime.Now.Ticks) { }
-
-    public Feynman6(int seed) {
-      Seed = seed;
-    }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return trainingSamples; } }
+    protected override int TestPartitionStart { get { return trainingSamples; } }
+    protected override int TestPartitionEnd { get { return trainingSamples + testSamples; } }
 
     protected override List<List<double>> GenerateValues() {
-      var rand = new MersenneTwister((uint)Seed);
+      var rand = new MersenneTwister((uint) Seed);
 
       var data = new List<List<double>>();
-      var m_0 = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
-      var v = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 2).ToList();
-      var c = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 3, 10).ToList();
-
+      var m_0  = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
+      var v    = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 2).ToList();
+      var c    = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 3, 10).ToList();
 
       var m = new List<double>();
@@ -39,9 +53,8 @@
       data.Add(m);
 
-      for (var i = 0; i < v.Count; i++) {
+      for (var i = 0; i < m_0.Count; i++) {
         var res = m_0[i] / Math.Sqrt(1 - Math.Pow(v[i], 2) / Math.Pow(c[i], 2));
         m.Add(res);
       }
-
 
       return data;
Index: branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman60.cs
===================================================================
--- branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman60.cs	(revision 17641)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman60.cs	(revision 17642)
@@ -6,5 +6,24 @@
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
   public class Feynman60 : FeynmanDescriptor {
-    public override string Name { get { return "Feynman II.10.9 sigma_den/epsilon*1/(1+chi)"; } }
+    private readonly int testSamples;
+    private readonly int trainingSamples;
+
+    public Feynman60() : this((int) DateTime.Now.Ticks, 10000, 10000) { }
+
+    public Feynman60(int seed) {
+      Seed            = seed;
+      trainingSamples = 10000;
+      testSamples     = 10000;
+    }
+
+    public Feynman60(int seed, int trainingSamples, int testSamples) {
+      Seed                 = seed;
+      this.trainingSamples = trainingSamples;
+      this.testSamples     = testSamples;
+    }
+
+    public override string Name {
+      get { return string.Format("Feynman II.10.9 sigma_den/epsilon*1/(1+chi) | {0} samples", trainingSamples); }
+    }
 
     protected override string TargetVariable { get { return "Ef"; } }
@@ -14,9 +33,8 @@
     public int Seed { get; private set; }
 
-    public Feynman60() : this((int) DateTime.Now.Ticks) { }
-
-    public Feynman60(int seed) {
-      Seed = seed;
-    }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return trainingSamples; } }
+    protected override int TestPartitionStart { get { return trainingSamples; } }
+    protected override int TestPartitionEnd { get { return trainingSamples + testSamples; } }
 
     protected override List<List<double>> GenerateValues() {
Index: branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman61.cs
===================================================================
--- branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman61.cs	(revision 17641)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman61.cs	(revision 17642)
@@ -6,5 +6,24 @@
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
   public class Feynman61 : FeynmanDescriptor {
-    public override string Name { get { return "Feynman II.11.3 q*Ef/(m*(omega_0**2-omega**2))"; } }
+    private readonly int testSamples;
+    private readonly int trainingSamples;
+
+    public Feynman61() : this((int) DateTime.Now.Ticks, 10000, 10000) { }
+
+    public Feynman61(int seed) {
+      Seed            = seed;
+      trainingSamples = 10000;
+      testSamples     = 10000;
+    }
+
+    public Feynman61(int seed, int trainingSamples, int testSamples) {
+      Seed                 = seed;
+      this.trainingSamples = trainingSamples;
+      this.testSamples     = testSamples;
+    }
+
+    public override string Name {
+      get { return string.Format("Feynman II.11.3 q*Ef/(m*(omega_0**2-omega**2)) | {0} samples", trainingSamples); }
+    }
 
     protected override string TargetVariable { get { return "x"; } }
@@ -14,9 +33,8 @@
     public int Seed { get; private set; }
 
-    public Feynman61() : this((int) DateTime.Now.Ticks) { }
-
-    public Feynman61(int seed) {
-      Seed = seed;
-    }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return trainingSamples; } }
+    protected override int TestPartitionStart { get { return trainingSamples; } }
+    protected override int TestPartitionEnd { get { return trainingSamples + testSamples; } }
 
     protected override List<List<double>> GenerateValues() {
Index: branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman62.cs
===================================================================
--- branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman62.cs	(revision 17641)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman62.cs	(revision 17642)
@@ -6,5 +6,24 @@
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
   public class Feynman62 : FeynmanDescriptor {
-    public override string Name { get { return "Feynman II.11.17 n_0*(1+p_d*Ef*cos(theta)/(kb*T))"; } }
+    private readonly int testSamples;
+    private readonly int trainingSamples;
+
+    public Feynman62() : this((int) DateTime.Now.Ticks, 10000, 10000) { }
+
+    public Feynman62(int seed) {
+      Seed            = seed;
+      trainingSamples = 10000;
+      testSamples     = 10000;
+    }
+
+    public Feynman62(int seed, int trainingSamples, int testSamples) {
+      Seed                 = seed;
+      this.trainingSamples = trainingSamples;
+      this.testSamples     = testSamples;
+    }
+
+    public override string Name {
+      get { return string.Format("Feynman II.11.17 n_0*(1+p_d*Ef*cos(theta)/(kb*T)) | {0} samples", trainingSamples); }
+    }
 
     protected override string TargetVariable { get { return "n"; } }
@@ -14,9 +33,8 @@
     public int Seed { get; private set; }
 
-    public Feynman62() : this((int) DateTime.Now.Ticks) { }
-
-    public Feynman62(int seed) {
-      Seed = seed;
-    }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return trainingSamples; } }
+    protected override int TestPartitionStart { get { return trainingSamples; } }
+    protected override int TestPartitionEnd { get { return trainingSamples + testSamples; } }
 
     protected override List<List<double>> GenerateValues() {
Index: branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman63.cs
===================================================================
--- branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman63.cs	(revision 17641)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman63.cs	(revision 17642)
@@ -6,5 +6,24 @@
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
   public class Feynman63 : FeynmanDescriptor {
-    public override string Name { get { return "Feynman II.11.20 n_rho*p_d**2*Ef/(3*kb*T)"; } }
+    private readonly int testSamples;
+    private readonly int trainingSamples;
+
+    public Feynman63() : this((int) DateTime.Now.Ticks, 10000, 10000) { }
+
+    public Feynman63(int seed) {
+      Seed            = seed;
+      trainingSamples = 10000;
+      testSamples     = 10000;
+    }
+
+    public Feynman63(int seed, int trainingSamples, int testSamples) {
+      Seed                 = seed;
+      this.trainingSamples = trainingSamples;
+      this.testSamples     = testSamples;
+    }
+
+    public override string Name {
+      get { return string.Format("Feynman II.11.20 n_rho*p_d**2*Ef/(3*kb*T) | {0} samples", trainingSamples); }
+    }
 
     protected override string TargetVariable { get { return "Pol"; } }
@@ -14,9 +33,8 @@
     public int Seed { get; private set; }
 
-    public Feynman63() : this((int) DateTime.Now.Ticks) { }
-
-    public Feynman63(int seed) {
-      Seed = seed;
-    }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return trainingSamples; } }
+    protected override int TestPartitionStart { get { return trainingSamples; } }
+    protected override int TestPartitionEnd { get { return trainingSamples + testSamples; } }
 
     protected override List<List<double>> GenerateValues() {
Index: branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman64.cs
===================================================================
--- branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman64.cs	(revision 17641)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman64.cs	(revision 17642)
@@ -6,5 +6,26 @@
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
   public class Feynman64 : FeynmanDescriptor {
-    public override string Name { get { return "Feynman II.11.27 n*alpha/(1-(n*alpha/3))*epsilon*Ef"; } }
+    private readonly int testSamples;
+    private readonly int trainingSamples;
+
+    public Feynman64() : this((int) DateTime.Now.Ticks, 10000, 10000) { }
+
+    public Feynman64(int seed) {
+      Seed            = seed;
+      trainingSamples = 10000;
+      testSamples     = 10000;
+    }
+
+    public Feynman64(int seed, int trainingSamples, int testSamples) {
+      Seed                 = seed;
+      this.trainingSamples = trainingSamples;
+      this.testSamples     = testSamples;
+    }
+
+    public override string Name {
+      get {
+        return string.Format("Feynman II.11.27 n*alpha/(1-(n*alpha/3))*epsilon*Ef | {0} samples", trainingSamples);
+      }
+    }
 
     protected override string TargetVariable { get { return "Pol"; } }
@@ -14,9 +35,8 @@
     public int Seed { get; private set; }
 
-    public Feynman64() : this((int) DateTime.Now.Ticks) { }
-
-    public Feynman64(int seed) {
-      Seed = seed;
-    }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return trainingSamples; } }
+    protected override int TestPartitionStart { get { return trainingSamples; } }
+    protected override int TestPartitionEnd { get { return trainingSamples + testSamples; } }
 
     protected override List<List<double>> GenerateValues() {
Index: branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman65.cs
===================================================================
--- branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman65.cs	(revision 17641)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman65.cs	(revision 17642)
@@ -6,5 +6,24 @@
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
   public class Feynman65 : FeynmanDescriptor {
-    public override string Name { get { return "Feynman II.11.28 1+n*alpha/(1-(n*alpha/3))"; } }
+    private readonly int testSamples;
+    private readonly int trainingSamples;
+
+    public Feynman65() : this((int) DateTime.Now.Ticks, 10000, 10000) { }
+
+    public Feynman65(int seed) {
+      Seed            = seed;
+      trainingSamples = 10000;
+      testSamples     = 10000;
+    }
+
+    public Feynman65(int seed, int trainingSamples, int testSamples) {
+      Seed                 = seed;
+      this.trainingSamples = trainingSamples;
+      this.testSamples     = testSamples;
+    }
+
+    public override string Name {
+      get { return string.Format("Feynman II.11.28 1+n*alpha/(1-(n*alpha/3)) | {0} samples", trainingSamples); }
+    }
 
     protected override string TargetVariable { get { return "theta"; } }
@@ -14,9 +33,8 @@
     public int Seed { get; private set; }
 
-    public Feynman65() : this((int) DateTime.Now.Ticks) { }
-
-    public Feynman65(int seed) {
-      Seed = seed;
-    }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return trainingSamples; } }
+    protected override int TestPartitionStart { get { return trainingSamples; } }
+    protected override int TestPartitionEnd { get { return trainingSamples + testSamples; } }
 
     protected override List<List<double>> GenerateValues() {
Index: branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman66.cs
===================================================================
--- branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman66.cs	(revision 17641)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman66.cs	(revision 17642)
@@ -6,5 +6,24 @@
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
   public class Feynman66 : FeynmanDescriptor {
-    public override string Name { get { return "Feynman II.13.17 1/(4*pi*epsilon*c**2)*2*I/r"; } }
+    private readonly int testSamples;
+    private readonly int trainingSamples;
+
+    public Feynman66() : this((int) DateTime.Now.Ticks, 10000, 10000) { }
+
+    public Feynman66(int seed) {
+      Seed            = seed;
+      trainingSamples = 10000;
+      testSamples     = 10000;
+    }
+
+    public Feynman66(int seed, int trainingSamples, int testSamples) {
+      Seed                 = seed;
+      this.trainingSamples = trainingSamples;
+      this.testSamples     = testSamples;
+    }
+
+    public override string Name {
+      get { return string.Format("Feynman II.13.17 1/(4*pi*epsilon*c**2)*2*I/r | {0} samples", trainingSamples); }
+    }
 
     protected override string TargetVariable { get { return "B"; } }
@@ -14,9 +33,8 @@
     public int Seed { get; private set; }
 
-    public Feynman66() : this((int) DateTime.Now.Ticks) { }
-
-    public Feynman66(int seed) {
-      Seed = seed;
-    }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return trainingSamples; } }
+    protected override int TestPartitionStart { get { return trainingSamples; } }
+    protected override int TestPartitionEnd { get { return trainingSamples + testSamples; } }
 
     protected override List<List<double>> GenerateValues() {
Index: branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman67.cs
===================================================================
--- branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman67.cs	(revision 17641)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman67.cs	(revision 17642)
@@ -6,5 +6,24 @@
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
   public class Feynman67 : FeynmanDescriptor {
-    public override string Name { get { return "Feynman II.13.23 rho_c_0/sqrt(1-v**2/c**2)"; } }
+    private readonly int testSamples;
+    private readonly int trainingSamples;
+
+    public Feynman67() : this((int) DateTime.Now.Ticks, 10000, 10000) { }
+
+    public Feynman67(int seed) {
+      Seed            = seed;
+      trainingSamples = 10000;
+      testSamples     = 10000;
+    }
+
+    public Feynman67(int seed, int trainingSamples, int testSamples) {
+      Seed                 = seed;
+      this.trainingSamples = trainingSamples;
+      this.testSamples     = testSamples;
+    }
+
+    public override string Name {
+      get { return string.Format("Feynman II.13.23 rho_c_0/sqrt(1-v**2/c**2) | {0} samples", trainingSamples); }
+    }
 
     protected override string TargetVariable { get { return "rho_c"; } }
@@ -14,9 +33,8 @@
     public int Seed { get; private set; }
 
-    public Feynman67() : this((int) DateTime.Now.Ticks) { }
-
-    public Feynman67(int seed) {
-      Seed = seed;
-    }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return trainingSamples; } }
+    protected override int TestPartitionStart { get { return trainingSamples; } }
+    protected override int TestPartitionEnd { get { return trainingSamples + testSamples; } }
 
     protected override List<List<double>> GenerateValues() {
Index: branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman68.cs
===================================================================
--- branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman68.cs	(revision 17641)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman68.cs	(revision 17642)
@@ -6,5 +6,24 @@
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
   public class Feynman68 : FeynmanDescriptor {
-    public override string Name { get { return "Feynman II.13.34 rho_c_0*v/sqrt(1-v**2/c**2)"; } }
+    private readonly int testSamples;
+    private readonly int trainingSamples;
+
+    public Feynman68() : this((int) DateTime.Now.Ticks, 10000, 10000) { }
+
+    public Feynman68(int seed) {
+      Seed            = seed;
+      trainingSamples = 10000;
+      testSamples     = 10000;
+    }
+
+    public Feynman68(int seed, int trainingSamples, int testSamples) {
+      Seed                 = seed;
+      this.trainingSamples = trainingSamples;
+      this.testSamples     = testSamples;
+    }
+
+    public override string Name {
+      get { return string.Format("Feynman II.13.34 rho_c_0*v/sqrt(1-v**2/c**2) | {0} samples", trainingSamples); }
+    }
 
     protected override string TargetVariable { get { return "j"; } }
@@ -14,9 +33,8 @@
     public int Seed { get; private set; }
 
-    public Feynman68() : this((int) DateTime.Now.Ticks) { }
-
-    public Feynman68(int seed) {
-      Seed = seed;
-    }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return trainingSamples; } }
+    protected override int TestPartitionStart { get { return trainingSamples; } }
+    protected override int TestPartitionEnd { get { return trainingSamples + testSamples; } }
 
     protected override List<List<double>> GenerateValues() {
Index: branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman69.cs
===================================================================
--- branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman69.cs	(revision 17641)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman69.cs	(revision 17642)
@@ -6,5 +6,24 @@
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
   public class Feynman69 : FeynmanDescriptor {
-    public override string Name { get { return "Feynman II.15.4 -mom*B*cos(theta)"; } }
+    private readonly int testSamples;
+    private readonly int trainingSamples;
+
+    public Feynman69() : this((int) DateTime.Now.Ticks, 10000, 10000) { }
+
+    public Feynman69(int seed) {
+      Seed            = seed;
+      trainingSamples = 10000;
+      testSamples     = 10000;
+    }
+
+    public Feynman69(int seed, int trainingSamples, int testSamples) {
+      Seed                 = seed;
+      this.trainingSamples = trainingSamples;
+      this.testSamples     = testSamples;
+    }
+
+    public override string Name {
+      get { return string.Format("Feynman II.15.4 -mom*B*cos(theta) | {0} samples", trainingSamples); }
+    }
 
     protected override string TargetVariable { get { return "E_n"; } }
@@ -14,9 +33,8 @@
     public int Seed { get; private set; }
 
-    public Feynman69() : this((int) DateTime.Now.Ticks) { }
-
-    public Feynman69(int seed) {
-      Seed = seed;
-    }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return trainingSamples; } }
+    protected override int TestPartitionStart { get { return trainingSamples; } }
+    protected override int TestPartitionEnd { get { return trainingSamples + testSamples; } }
 
     protected override List<List<double>> GenerateValues() {
Index: branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman7.cs
===================================================================
--- branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman7.cs	(revision 17641)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman7.cs	(revision 17642)
@@ -1,36 +1,51 @@
-﻿using System;
+using System;
 using System.Collections.Generic;
 using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using HeuristicLab.Common;
 using HeuristicLab.Random;
 
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
-  public class Feynman7 : FeynmanDescriptor{
- public override string Name { get { return "Feynman I.11.19 A = x1*y1+x2*y2+x3*y3"; } }
+  public class Feynman7 : FeynmanDescriptor {
+    private readonly int testSamples;
+    private readonly int trainingSamples;
 
- protected override string TargetVariable { get { return "A"; } }
-    protected override string[] VariableNames { get { return new string[] { "x1", "x2", "x3", "y1", "y2", "y3", "A"}; } }
-    protected override string[] AllowedInputVariables { get { return new string[] {"x1", "x2", "x3", "y1", "y2", "y3"}; } }
+    public Feynman7() : this((int) DateTime.Now.Ticks, 10000, 10000) { }
+
+    public Feynman7(int seed) {
+      Seed            = seed;
+      trainingSamples = 10000;
+      testSamples     = 10000;
+    }
+
+    public Feynman7(int seed, int trainingSamples, int testSamples) {
+      Seed                 = seed;
+      this.trainingSamples = trainingSamples;
+      this.testSamples     = testSamples;
+    }
+
+    public override string Name {
+      get { return string.Format("Feynman I.11.19 x1*y1+x2*y2+x3*y3 | {0} samples", trainingSamples); }
+    }
+
+    protected override string TargetVariable { get { return "A"; } }
+    protected override string[] VariableNames { get { return new[] {"x1", "x2", "x3", "y1", "y2", "y3", "A"}; } }
+    protected override string[] AllowedInputVariables { get { return new[] {"x1", "x2", "x3", "y1", "y2", "y3"}; } }
 
     public int Seed { get; private set; }
 
-    public Feynman7() : this((int)System.DateTime.Now.Ticks) { }
-
-    public Feynman7(int seed) {
-      Seed = seed;
-    }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return trainingSamples; } }
+    protected override int TestPartitionStart { get { return trainingSamples; } }
+    protected override int TestPartitionEnd { get { return trainingSamples + testSamples; } }
 
     protected override List<List<double>> GenerateValues() {
-      var rand = new MersenneTwister((uint)Seed);
+      var rand = new MersenneTwister((uint) Seed);
 
       var data = new List<List<double>>();
-      var x1 = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
-      var x2 = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
-      var x3 = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
-      var y1 = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
-      var y2 = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
-      var y3 = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
+      var x1   = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
+      var x2   = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
+      var x3   = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
+      var y1   = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
+      var y2   = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
+      var y3   = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
 
       var A = new List<double>();
@@ -49,5 +64,4 @@
       }
 
-
       return data;
     }
Index: branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman70.cs
===================================================================
--- branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman70.cs	(revision 17641)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman70.cs	(revision 17642)
@@ -6,5 +6,24 @@
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
   public class Feynman70 : FeynmanDescriptor {
-    public override string Name { get { return "Feynman II.15.5 -p_d*Ef*cos(theta)"; } }
+    private readonly int testSamples;
+    private readonly int trainingSamples;
+
+    public Feynman70() : this((int) DateTime.Now.Ticks, 10000, 10000) { }
+
+    public Feynman70(int seed) {
+      Seed            = seed;
+      trainingSamples = 10000;
+      testSamples     = 10000;
+    }
+
+    public Feynman70(int seed, int trainingSamples, int testSamples) {
+      Seed                 = seed;
+      this.trainingSamples = trainingSamples;
+      this.testSamples     = testSamples;
+    }
+
+    public override string Name {
+      get { return string.Format("Feynman II.15.5 -p_d*Ef*cos(theta) | {0} samples", trainingSamples); }
+    }
 
     protected override string TargetVariable { get { return "E_n"; } }
@@ -14,9 +33,8 @@
     public int Seed { get; private set; }
 
-    public Feynman70() : this((int) DateTime.Now.Ticks) { }
-
-    public Feynman70(int seed) {
-      Seed = seed;
-    }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return trainingSamples; } }
+    protected override int TestPartitionStart { get { return trainingSamples; } }
+    protected override int TestPartitionEnd { get { return trainingSamples + testSamples; } }
 
     protected override List<List<double>> GenerateValues() {
Index: branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman71.cs
===================================================================
--- branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman71.cs	(revision 17641)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman71.cs	(revision 17642)
@@ -6,5 +6,24 @@
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
   public class Feynman71 : FeynmanDescriptor {
-    public override string Name { get { return "Feynman II.21.32 q/(4*pi*epsilon*r*(1-v/c))"; } }
+    private readonly int testSamples;
+    private readonly int trainingSamples;
+
+    public Feynman71() : this((int) DateTime.Now.Ticks, 10000, 10000) { }
+
+    public Feynman71(int seed) {
+      Seed            = seed;
+      trainingSamples = 10000;
+      testSamples     = 10000;
+    }
+
+    public Feynman71(int seed, int trainingSamples, int testSamples) {
+      Seed                 = seed;
+      this.trainingSamples = trainingSamples;
+      this.testSamples     = testSamples;
+    }
+
+    public override string Name {
+      get { return string.Format("Feynman II.21.32 q/(4*pi*epsilon*r*(1-v/c)) | {0} samples", trainingSamples); }
+    }
 
     protected override string TargetVariable { get { return "Volt"; } }
@@ -14,9 +33,8 @@
     public int Seed { get; private set; }
 
-    public Feynman71() : this((int) DateTime.Now.Ticks) { }
-
-    public Feynman71(int seed) {
-      Seed = seed;
-    }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return trainingSamples; } }
+    protected override int TestPartitionStart { get { return trainingSamples; } }
+    protected override int TestPartitionEnd { get { return trainingSamples + testSamples; } }
 
     protected override List<List<double>> GenerateValues() {
Index: branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman72.cs
===================================================================
--- branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman72.cs	(revision 17641)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman72.cs	(revision 17642)
@@ -6,5 +6,24 @@
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
   public class Feynman72 : FeynmanDescriptor {
-    public override string Name { get { return "Feynman II.24.17 sqrt(omega**2/c**2-pi**2/d**2)"; } }
+    private readonly int testSamples;
+    private readonly int trainingSamples;
+
+    public Feynman72() : this((int) DateTime.Now.Ticks, 10000, 10000) { }
+
+    public Feynman72(int seed) {
+      Seed            = seed;
+      trainingSamples = 10000;
+      testSamples     = 10000;
+    }
+
+    public Feynman72(int seed, int trainingSamples, int testSamples) {
+      Seed                 = seed;
+      this.trainingSamples = trainingSamples;
+      this.testSamples     = testSamples;
+    }
+
+    public override string Name {
+      get { return string.Format("Feynman II.24.17 sqrt(omega**2/c**2-pi**2/d**2) | {0} samples", trainingSamples); }
+    }
 
     protected override string TargetVariable { get { return "k"; } }
@@ -14,9 +33,8 @@
     public int Seed { get; private set; }
 
-    public Feynman72() : this((int) DateTime.Now.Ticks) { }
-
-    public Feynman72(int seed) {
-      Seed = seed;
-    }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return trainingSamples; } }
+    protected override int TestPartitionStart { get { return trainingSamples; } }
+    protected override int TestPartitionEnd { get { return trainingSamples + testSamples; } }
 
     protected override List<List<double>> GenerateValues() {
@@ -37,4 +55,5 @@
       for (var i = 0; i < omega.Count; i++) {
         var res = Math.Sqrt(Math.Pow(omega[i], 2) / Math.Pow(c[i], 2) - Math.Pow(Math.PI, 2) / Math.Pow(d[i], 2));
+        ;
         k.Add(res);
       }
Index: branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman73.cs
===================================================================
--- branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman73.cs	(revision 17641)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman73.cs	(revision 17642)
@@ -6,5 +6,24 @@
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
   public class Feynman73 : FeynmanDescriptor {
-    public override string Name { get { return "Feynman II.27.16 epsilon*c*Ef**2"; } }
+    private readonly int testSamples;
+    private readonly int trainingSamples;
+
+    public Feynman73() : this((int) DateTime.Now.Ticks, 10000, 10000) { }
+
+    public Feynman73(int seed) {
+      Seed            = seed;
+      trainingSamples = 10000;
+      testSamples     = 10000;
+    }
+
+    public Feynman73(int seed, int trainingSamples, int testSamples) {
+      Seed                 = seed;
+      this.trainingSamples = trainingSamples;
+      this.testSamples     = testSamples;
+    }
+
+    public override string Name {
+      get { return string.Format("Feynman II.27.16 epsilon*c*Ef**2 | {0} samples", trainingSamples); }
+    }
 
     protected override string TargetVariable { get { return "flux"; } }
@@ -14,9 +33,8 @@
     public int Seed { get; private set; }
 
-    public Feynman73() : this((int) DateTime.Now.Ticks) { }
-
-    public Feynman73(int seed) {
-      Seed = seed;
-    }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return trainingSamples; } }
+    protected override int TestPartitionStart { get { return trainingSamples; } }
+    protected override int TestPartitionEnd { get { return trainingSamples + testSamples; } }
 
     protected override List<List<double>> GenerateValues() {
Index: branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman74.cs
===================================================================
--- branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman74.cs	(revision 17641)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman74.cs	(revision 17642)
@@ -6,5 +6,24 @@
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
   public class Feynman74 : FeynmanDescriptor {
-    public override string Name { get { return "Feynman II.27.18 epsilon*Ef**2"; } }
+    private readonly int testSamples;
+    private readonly int trainingSamples;
+
+    public Feynman74() : this((int) DateTime.Now.Ticks, 10000, 10000) { }
+
+    public Feynman74(int seed) {
+      Seed            = seed;
+      trainingSamples = 10000;
+      testSamples     = 10000;
+    }
+
+    public Feynman74(int seed, int trainingSamples, int testSamples) {
+      Seed                 = seed;
+      this.trainingSamples = trainingSamples;
+      this.testSamples     = testSamples;
+    }
+
+    public override string Name {
+      get { return string.Format("Feynman II.27.18 epsilon*Ef**2 | {0} samples", trainingSamples); }
+    }
 
     protected override string TargetVariable { get { return "E_den"; } }
@@ -14,9 +33,8 @@
     public int Seed { get; private set; }
 
-    public Feynman74() : this((int) DateTime.Now.Ticks) { }
-
-    public Feynman74(int seed) {
-      Seed = seed;
-    }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return trainingSamples; } }
+    protected override int TestPartitionStart { get { return trainingSamples; } }
+    protected override int TestPartitionEnd { get { return trainingSamples + testSamples; } }
 
     protected override List<List<double>> GenerateValues() {
Index: branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman75.cs
===================================================================
--- branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman75.cs	(revision 17641)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman75.cs	(revision 17642)
@@ -6,5 +6,24 @@
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
   public class Feynman75 : FeynmanDescriptor {
-    public override string Name { get { return "Feynman II.34.2a q*v/(2*pi*r)"; } }
+    private readonly int testSamples;
+    private readonly int trainingSamples;
+
+    public Feynman75() : this((int) DateTime.Now.Ticks, 10000, 10000) { }
+
+    public Feynman75(int seed) {
+      Seed            = seed;
+      trainingSamples = 10000;
+      testSamples     = 10000;
+    }
+
+    public Feynman75(int seed, int trainingSamples, int testSamples) {
+      Seed                 = seed;
+      this.trainingSamples = trainingSamples;
+      this.testSamples     = testSamples;
+    }
+
+    public override string Name {
+      get { return string.Format("Feynman II.34.2a q*v/(2*pi*r) | {0} samples", trainingSamples); }
+    }
 
     protected override string TargetVariable { get { return "I"; } }
@@ -14,9 +33,8 @@
     public int Seed { get; private set; }
 
-    public Feynman75() : this((int) DateTime.Now.Ticks) { }
-
-    public Feynman75(int seed) {
-      Seed = seed;
-    }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return trainingSamples; } }
+    protected override int TestPartitionStart { get { return trainingSamples; } }
+    protected override int TestPartitionEnd { get { return trainingSamples + testSamples; } }
 
     protected override List<List<double>> GenerateValues() {
@@ -37,4 +55,5 @@
       for (var i = 0; i < q.Count; i++) {
         var res = q[i] * v[i] / (2 * Math.PI * r[i]);
+        ;
         I.Add(res);
       }
Index: branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman76.cs
===================================================================
--- branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman76.cs	(revision 17641)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman76.cs	(revision 17642)
@@ -6,5 +6,24 @@
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
   public class Feynman76 : FeynmanDescriptor {
-    public override string Name { get { return "Feynman II.34.2 q*v*r/2"; } }
+    private readonly int testSamples;
+    private readonly int trainingSamples;
+
+    public Feynman76() : this((int) DateTime.Now.Ticks, 10000, 10000) { }
+
+    public Feynman76(int seed) {
+      Seed            = seed;
+      trainingSamples = 10000;
+      testSamples     = 10000;
+    }
+
+    public Feynman76(int seed, int trainingSamples, int testSamples) {
+      Seed                 = seed;
+      this.trainingSamples = trainingSamples;
+      this.testSamples     = testSamples;
+    }
+
+    public override string Name {
+      get { return string.Format("Feynman II.34.2 q*v*r/2 | {0} samples", trainingSamples); }
+    }
 
     protected override string TargetVariable { get { return "mom"; } }
@@ -14,9 +33,8 @@
     public int Seed { get; private set; }
 
-    public Feynman76() : this((int) DateTime.Now.Ticks) { }
-
-    public Feynman76(int seed) {
-      Seed = seed;
-    }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return trainingSamples; } }
+    protected override int TestPartitionStart { get { return trainingSamples; } }
+    protected override int TestPartitionEnd { get { return trainingSamples + testSamples; } }
 
     protected override List<List<double>> GenerateValues() {
Index: branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman77.cs
===================================================================
--- branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman77.cs	(revision 17641)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman77.cs	(revision 17642)
@@ -6,5 +6,24 @@
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
   public class Feynman77 : FeynmanDescriptor {
-    public override string Name { get { return "Feynman II.34.11 g_*q*B/(2*m)"; } }
+    private readonly int testSamples;
+    private readonly int trainingSamples;
+
+    public Feynman77() : this((int) DateTime.Now.Ticks, 10000, 10000) { }
+
+    public Feynman77(int seed) {
+      Seed            = seed;
+      trainingSamples = 10000;
+      testSamples     = 10000;
+    }
+
+    public Feynman77(int seed, int trainingSamples, int testSamples) {
+      Seed                 = seed;
+      this.trainingSamples = trainingSamples;
+      this.testSamples     = testSamples;
+    }
+
+    public override string Name {
+      get { return string.Format("Feynman II.34.11 g_*q*B/(2*m) | {0} samples", trainingSamples); }
+    }
 
     protected override string TargetVariable { get { return "omega"; } }
@@ -14,9 +33,8 @@
     public int Seed { get; private set; }
 
-    public Feynman77() : this((int) DateTime.Now.Ticks) { }
-
-    public Feynman77(int seed) {
-      Seed = seed;
-    }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return trainingSamples; } }
+    protected override int TestPartitionStart { get { return trainingSamples; } }
+    protected override int TestPartitionEnd { get { return trainingSamples + testSamples; } }
 
     protected override List<List<double>> GenerateValues() {
Index: branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman78.cs
===================================================================
--- branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman78.cs	(revision 17641)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman78.cs	(revision 17642)
@@ -6,5 +6,24 @@
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
   public class Feynman78 : FeynmanDescriptor {
-    public override string Name { get { return "Feynman II.34.29a q*h/(4*pi*m)"; } }
+    private readonly int testSamples;
+    private readonly int trainingSamples;
+
+    public Feynman78() : this((int) DateTime.Now.Ticks, 10000, 10000) { }
+
+    public Feynman78(int seed) {
+      Seed            = seed;
+      trainingSamples = 10000;
+      testSamples     = 10000;
+    }
+
+    public Feynman78(int seed, int trainingSamples, int testSamples) {
+      Seed                 = seed;
+      this.trainingSamples = trainingSamples;
+      this.testSamples     = testSamples;
+    }
+
+    public override string Name {
+      get { return string.Format("Feynman II.34.29a q*h/(4*pi*m) | {0} samples", trainingSamples); }
+    }
 
     protected override string TargetVariable { get { return "mom"; } }
@@ -14,9 +33,8 @@
     public int Seed { get; private set; }
 
-    public Feynman78() : this((int) DateTime.Now.Ticks) { }
-
-    public Feynman78(int seed) {
-      Seed = seed;
-    }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return trainingSamples; } }
+    protected override int TestPartitionStart { get { return trainingSamples; } }
+    protected override int TestPartitionEnd { get { return trainingSamples + testSamples; } }
 
     protected override List<List<double>> GenerateValues() {
Index: branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman79.cs
===================================================================
--- branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman79.cs	(revision 17641)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman79.cs	(revision 17642)
@@ -6,5 +6,24 @@
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
   public class Feynman79 : FeynmanDescriptor {
-    public override string Name { get { return "Feynman II.34.29b g_*mom*B*Jz/(h/(2*pi))"; } }
+    private readonly int testSamples;
+    private readonly int trainingSamples;
+
+    public Feynman79() : this((int) DateTime.Now.Ticks, 10000, 10000) { }
+
+    public Feynman79(int seed) {
+      Seed            = seed;
+      trainingSamples = 10000;
+      testSamples     = 10000;
+    }
+
+    public Feynman79(int seed, int trainingSamples, int testSamples) {
+      Seed                 = seed;
+      this.trainingSamples = trainingSamples;
+      this.testSamples     = testSamples;
+    }
+
+    public override string Name {
+      get { return string.Format("Feynman II.34.29b g_*mom*B*Jz/(h/(2*pi)) | {0} samples", trainingSamples); }
+    }
 
     protected override string TargetVariable { get { return "E_n"; } }
@@ -14,9 +33,8 @@
     public int Seed { get; private set; }
 
-    public Feynman79() : this((int) DateTime.Now.Ticks) { }
-
-    public Feynman79(int seed) {
-      Seed = seed;
-    }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return trainingSamples; } }
+    protected override int TestPartitionStart { get { return trainingSamples; } }
+    protected override int TestPartitionEnd { get { return trainingSamples + testSamples; } }
 
     protected override List<List<double>> GenerateValues() {
@@ -41,4 +59,5 @@
       for (var i = 0; i < g_.Count; i++) {
         var res = g_[i] * mom[i] * B[i] * Jz[i] / (h[i] / (2 * Math.PI));
+        ;
         E_n.Add(res);
       }
Index: branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman8.cs
===================================================================
--- branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman8.cs	(revision 17641)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman8.cs	(revision 17642)
@@ -1,44 +1,56 @@
-﻿using System;
+using System;
 using System.Collections.Generic;
 using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using HeuristicLab.Common;
 using HeuristicLab.Random;
 
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
-  public class Feynman8 : FeynmanDescriptor{
- public override string Name { get { return "Feynman I.12.1 F = mu*Nm"; } }
+  public class Feynman8 : FeynmanDescriptor {
+    private readonly int testSamples;
+    private readonly int trainingSamples;
 
- protected override string TargetVariable { get { return "F"; } }
-    protected override string[] VariableNames { get { return new string[] { "mu", "Nm", "F"}; } }
-    protected override string[] AllowedInputVariables { get { return new string[] {"mu", "Nm"}; } }
+    public Feynman8() : this((int) DateTime.Now.Ticks, 10000, 10000) { }
+
+    public Feynman8(int seed) {
+      Seed            = seed;
+      trainingSamples = 10000;
+      testSamples     = 10000;
+    }
+
+    public Feynman8(int seed, int trainingSamples, int testSamples) {
+      Seed                 = seed;
+      this.trainingSamples = trainingSamples;
+      this.testSamples     = testSamples;
+    }
+
+    public override string Name { get { return string.Format("Feynman I.12.1 mu*Nn | {0} samples", trainingSamples); } }
+
+    protected override string TargetVariable { get { return "F"; } }
+    protected override string[] VariableNames { get { return new[] {"mu", "Nn", "F"}; } }
+    protected override string[] AllowedInputVariables { get { return new[] {"mu", "Nn"}; } }
 
     public int Seed { get; private set; }
 
-    public Feynman8() : this((int)System.DateTime.Now.Ticks) { }
-
-    public Feynman8(int seed) {
-      Seed = seed;
-    }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return trainingSamples; } }
+    protected override int TestPartitionStart { get { return trainingSamples; } }
+    protected override int TestPartitionEnd { get { return trainingSamples + testSamples; } }
 
     protected override List<List<double>> GenerateValues() {
-      var rand = new MersenneTwister((uint)Seed);
+      var rand = new MersenneTwister((uint) Seed);
 
       var data = new List<List<double>>();
-      var mu = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
-      var Nm = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
+      var mu   = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
+      var Nn   = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
 
       var F = new List<double>();
 
       data.Add(mu);
-      data.Add(Nm);
+      data.Add(Nn);
       data.Add(F);
 
       for (var i = 0; i < mu.Count; i++) {
-        var res = mu[i] * Nm[i];
+        var res = mu[i] * Nn[i];
         F.Add(res);
       }
-
 
       return data;
Index: branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman80.cs
===================================================================
--- branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman80.cs	(revision 17641)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman80.cs	(revision 17642)
@@ -6,5 +6,27 @@
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
   public class Feynman80 : FeynmanDescriptor {
-    public override string Name { get { return "Feynman II.35.18 n_0/(exp(mom*B/(kb*T))+exp(-mom*B/(kb*T)))"; } }
+    private readonly int testSamples;
+    private readonly int trainingSamples;
+
+    public Feynman80() : this((int) DateTime.Now.Ticks, 10000, 10000) { }
+
+    public Feynman80(int seed) {
+      Seed            = seed;
+      trainingSamples = 10000;
+      testSamples     = 10000;
+    }
+
+    public Feynman80(int seed, int trainingSamples, int testSamples) {
+      Seed                 = seed;
+      this.trainingSamples = trainingSamples;
+      this.testSamples     = testSamples;
+    }
+
+    public override string Name {
+      get {
+        return string.Format("Feynman II.35.18 n_0/(exp(mom*B/(kb*T))+exp(-mom*B/(kb*T))) | {0} samples",
+          trainingSamples);
+      }
+    }
 
     protected override string TargetVariable { get { return "n"; } }
@@ -14,9 +36,8 @@
     public int Seed { get; private set; }
 
-    public Feynman80() : this((int) DateTime.Now.Ticks) { }
-
-    public Feynman80(int seed) {
-      Seed = seed;
-    }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return trainingSamples; } }
+    protected override int TestPartitionStart { get { return trainingSamples; } }
+    protected override int TestPartitionEnd { get { return trainingSamples + testSamples; } }
 
     protected override List<List<double>> GenerateValues() {
Index: branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman81.cs
===================================================================
--- branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman81.cs	(revision 17641)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman81.cs	(revision 17642)
@@ -6,5 +6,24 @@
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
   public class Feynman81 : FeynmanDescriptor {
-    public override string Name { get { return "Feynman II.35.21 n_rho*mom*tanh(mom*B/(kb*T))"; } }
+    private readonly int testSamples;
+    private readonly int trainingSamples;
+
+    public Feynman81() : this((int) DateTime.Now.Ticks, 10000, 10000) { }
+
+    public Feynman81(int seed) {
+      Seed            = seed;
+      trainingSamples = 10000;
+      testSamples     = 10000;
+    }
+
+    public Feynman81(int seed, int trainingSamples, int testSamples) {
+      Seed                 = seed;
+      this.trainingSamples = trainingSamples;
+      this.testSamples     = testSamples;
+    }
+
+    public override string Name {
+      get { return string.Format("Feynman II.35.21 n_rho*mom*tanh(mom*B/(kb*T)) | {0} samples", trainingSamples); }
+    }
 
     protected override string TargetVariable { get { return "M"; } }
@@ -14,9 +33,8 @@
     public int Seed { get; private set; }
 
-    public Feynman81() : this((int) DateTime.Now.Ticks) { }
-
-    public Feynman81(int seed) {
-      Seed = seed;
-    }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return trainingSamples; } }
+    protected override int TestPartitionStart { get { return trainingSamples; } }
+    protected override int TestPartitionEnd { get { return trainingSamples + testSamples; } }
 
     protected override List<List<double>> GenerateValues() {
Index: branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman82.cs
===================================================================
--- branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman82.cs	(revision 17641)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman82.cs	(revision 17642)
@@ -6,5 +6,27 @@
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
   public class Feynman82 : FeynmanDescriptor {
-    public override string Name { get { return "Feynman II.36.38 mom*H/(kb*T)+(mom*alpha)/(epsilon*c**2*kb*T)*M"; } }
+    private readonly int testSamples;
+    private readonly int trainingSamples;
+
+    public Feynman82() : this((int) DateTime.Now.Ticks, 10000, 10000) { }
+
+    public Feynman82(int seed) {
+      Seed            = seed;
+      trainingSamples = 10000;
+      testSamples     = 10000;
+    }
+
+    public Feynman82(int seed, int trainingSamples, int testSamples) {
+      Seed                 = seed;
+      this.trainingSamples = trainingSamples;
+      this.testSamples     = testSamples;
+    }
+
+    public override string Name {
+      get {
+        return string.Format("Feynman II.36.38 mom*H/(kb*T)+(mom*alpha)/(epsilon*c**2*kb*T)*M | {0} samples",
+          trainingSamples);
+      }
+    }
 
     protected override string TargetVariable { get { return "f"; } }
@@ -20,9 +42,8 @@
     public int Seed { get; private set; }
 
-    public Feynman82() : this((int) DateTime.Now.Ticks) { }
-
-    public Feynman82(int seed) {
-      Seed = seed;
-    }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return trainingSamples; } }
+    protected override int TestPartitionStart { get { return trainingSamples; } }
+    protected override int TestPartitionEnd { get { return trainingSamples + testSamples; } }
 
     protected override List<List<double>> GenerateValues() {
@@ -52,5 +73,6 @@
 
       for (var i = 0; i < mom.Count; i++) {
-        var res = mom[i] * H[i] / (kb[i] * T[i]) + mom[i] * alpha[i] / (epsilon[i] * Math.Pow(c[i],2) * kb[i] * T[i]) *M[i];
+        var res = mom[i] * H[i] / (kb[i] * T[i]) +
+                  mom[i] * alpha[i] / (epsilon[i] * Math.Pow(c[i], 2) * kb[i] * T[i]) * M[i];
         f.Add(res);
       }
Index: branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman83.cs
===================================================================
--- branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman83.cs	(revision 17641)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman83.cs	(revision 17642)
@@ -6,5 +6,24 @@
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
   public class Feynman83 : FeynmanDescriptor {
-    public override string Name { get { return "Feynman II.37.1 mom*(1+chi)*B"; } }
+    private readonly int testSamples;
+    private readonly int trainingSamples;
+
+    public Feynman83() : this((int) DateTime.Now.Ticks, 10000, 10000) { }
+
+    public Feynman83(int seed) {
+      Seed            = seed;
+      trainingSamples = 10000;
+      testSamples     = 10000;
+    }
+
+    public Feynman83(int seed, int trainingSamples, int testSamples) {
+      Seed                 = seed;
+      this.trainingSamples = trainingSamples;
+      this.testSamples     = testSamples;
+    }
+
+    public override string Name {
+      get { return string.Format("Feynman II.37.1 mom*(1+chi)*B | {0} samples", trainingSamples); }
+    }
 
     protected override string TargetVariable { get { return "E_n"; } }
@@ -14,9 +33,8 @@
     public int Seed { get; private set; }
 
-    public Feynman83() : this((int) DateTime.Now.Ticks) { }
-
-    public Feynman83(int seed) {
-      Seed = seed;
-    }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return trainingSamples; } }
+    protected override int TestPartitionStart { get { return trainingSamples; } }
+    protected override int TestPartitionEnd { get { return trainingSamples + testSamples; } }
 
     protected override List<List<double>> GenerateValues() {
Index: branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman84.cs
===================================================================
--- branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman84.cs	(revision 17641)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman84.cs	(revision 17642)
@@ -6,5 +6,24 @@
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
   public class Feynman84 : FeynmanDescriptor {
-    public override string Name { get { return "Feynman II.38.3 Y*A*x/d"; } }
+    private readonly int testSamples;
+    private readonly int trainingSamples;
+
+    public Feynman84() : this((int) DateTime.Now.Ticks, 10000, 10000) { }
+
+    public Feynman84(int seed) {
+      Seed            = seed;
+      trainingSamples = 10000;
+      testSamples     = 10000;
+    }
+
+    public Feynman84(int seed, int trainingSamples, int testSamples) {
+      Seed                 = seed;
+      this.trainingSamples = trainingSamples;
+      this.testSamples     = testSamples;
+    }
+
+    public override string Name {
+      get { return string.Format("Feynman II.38.3 Y*A*x/d | {0} samples", trainingSamples); }
+    }
 
     protected override string TargetVariable { get { return "F"; } }
@@ -14,9 +33,8 @@
     public int Seed { get; private set; }
 
-    public Feynman84() : this((int) DateTime.Now.Ticks) { }
-
-    public Feynman84(int seed) {
-      Seed = seed;
-    }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return trainingSamples; } }
+    protected override int TestPartitionStart { get { return trainingSamples; } }
+    protected override int TestPartitionEnd { get { return trainingSamples + testSamples; } }
 
     protected override List<List<double>> GenerateValues() {
Index: branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman85.cs
===================================================================
--- branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman85.cs	(revision 17641)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman85.cs	(revision 17642)
@@ -6,5 +6,24 @@
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
   public class Feynman85 : FeynmanDescriptor {
-    public override string Name { get { return "Feynman II.38.14 Y/(2*(1+sigma))"; } }
+    private readonly int testSamples;
+    private readonly int trainingSamples;
+
+    public Feynman85() : this((int) DateTime.Now.Ticks, 10000, 10000) { }
+
+    public Feynman85(int seed) {
+      Seed            = seed;
+      trainingSamples = 10000;
+      testSamples     = 10000;
+    }
+
+    public Feynman85(int seed, int trainingSamples, int testSamples) {
+      Seed                 = seed;
+      this.trainingSamples = trainingSamples;
+      this.testSamples     = testSamples;
+    }
+
+    public override string Name {
+      get { return string.Format("Feynman II.38.14 Y/(2*(1+sigma)) | {0} samples", trainingSamples); }
+    }
 
     protected override string TargetVariable { get { return "mu_S"; } }
@@ -14,9 +33,8 @@
     public int Seed { get; private set; }
 
-    public Feynman85() : this((int) DateTime.Now.Ticks) { }
-
-    public Feynman85(int seed) {
-      Seed = seed;
-    }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return trainingSamples; } }
+    protected override int TestPartitionStart { get { return trainingSamples; } }
+    protected override int TestPartitionEnd { get { return trainingSamples + testSamples; } }
 
     protected override List<List<double>> GenerateValues() {
Index: branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman86.cs
===================================================================
--- branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman86.cs	(revision 17641)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman86.cs	(revision 17642)
@@ -6,5 +6,26 @@
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
   public class Feynman86 : FeynmanDescriptor {
-    public override string Name { get { return "Feynman III.4.32 1/(exp((h/(2*pi))*omega/(kb*T))-1)"; } }
+    private readonly int testSamples;
+    private readonly int trainingSamples;
+
+    public Feynman86() : this((int) DateTime.Now.Ticks, 10000, 10000) { }
+
+    public Feynman86(int seed) {
+      Seed            = seed;
+      trainingSamples = 10000;
+      testSamples     = 10000;
+    }
+
+    public Feynman86(int seed, int trainingSamples, int testSamples) {
+      Seed                 = seed;
+      this.trainingSamples = trainingSamples;
+      this.testSamples     = testSamples;
+    }
+
+    public override string Name {
+      get {
+        return string.Format("Feynman III.4.32 1/(exp((h/(2*pi))*omega/(kb*T))-1) | {0} samples", trainingSamples);
+      }
+    }
 
     protected override string TargetVariable { get { return "n"; } }
@@ -14,9 +35,8 @@
     public int Seed { get; private set; }
 
-    public Feynman86() : this((int) DateTime.Now.Ticks) { }
-
-    public Feynman86(int seed) {
-      Seed = seed;
-    }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return trainingSamples; } }
+    protected override int TestPartitionStart { get { return trainingSamples; } }
+    protected override int TestPartitionEnd { get { return trainingSamples + testSamples; } }
 
     protected override List<List<double>> GenerateValues() {
@@ -38,5 +58,5 @@
 
       for (var i = 0; i < h.Count; i++) {
-        var res = 1.0 / (Math.Exp((h[i] / (2 * Math.PI)) * omega[i] / (kb[i] * T[i])) - 1);
+        var res = 1.0 / (Math.Exp(h[i] / (2 * Math.PI) * omega[i] / (kb[i] * T[i])) - 1);
         n.Add(res);
       }
Index: branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman87.cs
===================================================================
--- branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman87.cs	(revision 17641)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman87.cs	(revision 17642)
@@ -6,5 +6,27 @@
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
   public class Feynman87 : FeynmanDescriptor {
-    public override string Name { get { return "Feynman III.4.33 (h/(2*pi))*omega/(exp((h/(2*pi))*omega/(kb*T))-1)"; } }
+    private readonly int testSamples;
+    private readonly int trainingSamples;
+
+    public Feynman87() : this((int) DateTime.Now.Ticks, 10000, 10000) { }
+
+    public Feynman87(int seed) {
+      Seed            = seed;
+      trainingSamples = 10000;
+      testSamples     = 10000;
+    }
+
+    public Feynman87(int seed, int trainingSamples, int testSamples) {
+      Seed                 = seed;
+      this.trainingSamples = trainingSamples;
+      this.testSamples     = testSamples;
+    }
+
+    public override string Name {
+      get {
+        return string.Format("Feynman III.4.33 (h/(2*pi))*omega/(exp((h/(2*pi))*omega/(kb*T))-1) | {0} samples",
+          trainingSamples);
+      }
+    }
 
     protected override string TargetVariable { get { return "E_n"; } }
@@ -14,9 +36,8 @@
     public int Seed { get; private set; }
 
-    public Feynman87() : this((int) DateTime.Now.Ticks) { }
-
-    public Feynman87(int seed) {
-      Seed = seed;
-    }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return trainingSamples; } }
+    protected override int TestPartitionStart { get { return trainingSamples; } }
+    protected override int TestPartitionEnd { get { return trainingSamples + testSamples; } }
 
     protected override List<List<double>> GenerateValues() {
@@ -38,5 +59,5 @@
 
       for (var i = 0; i < h.Count; i++) {
-        var res = h[i] / (2 * Math.PI) * omega[i] / (Math.Exp((h[i] / (2 * Math.PI)) * omega[i] / (kb[i] * T[i])) - 1);
+        var res = h[i] / (2 * Math.PI) * omega[i] / (Math.Exp(h[i] / (2 * Math.PI) * omega[i] / (kb[i] * T[i])) - 1);
         E_n.Add(res);
       }
Index: branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman88.cs
===================================================================
--- branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman88.cs	(revision 17641)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman88.cs	(revision 17642)
@@ -6,5 +6,24 @@
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
   public class Feynman88 : FeynmanDescriptor {
-    public override string Name { get { return "Feynman III.7.38 2*mom*B/(h/(2*pi))"; } }
+    private readonly int testSamples;
+    private readonly int trainingSamples;
+
+    public Feynman88() : this((int) DateTime.Now.Ticks, 10000, 10000) { }
+
+    public Feynman88(int seed) {
+      Seed            = seed;
+      trainingSamples = 10000;
+      testSamples     = 10000;
+    }
+
+    public Feynman88(int seed, int trainingSamples, int testSamples) {
+      Seed                 = seed;
+      this.trainingSamples = trainingSamples;
+      this.testSamples     = testSamples;
+    }
+
+    public override string Name {
+      get { return string.Format("Feynman III.7.38 2*mom*B/(h/(2*pi)) | {0} samples", trainingSamples); }
+    }
 
     protected override string TargetVariable { get { return "omega"; } }
@@ -14,9 +33,8 @@
     public int Seed { get; private set; }
 
-    public Feynman88() : this((int) DateTime.Now.Ticks) { }
-
-    public Feynman88(int seed) {
-      Seed = seed;
-    }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return trainingSamples; } }
+    protected override int TestPartitionStart { get { return trainingSamples; } }
+    protected override int TestPartitionEnd { get { return trainingSamples + testSamples; } }
 
     protected override List<List<double>> GenerateValues() {
Index: branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman89.cs
===================================================================
--- branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman89.cs	(revision 17641)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman89.cs	(revision 17642)
@@ -6,5 +6,24 @@
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
   public class Feynman89 : FeynmanDescriptor {
-    public override string Name { get { return "Feynman III.8.54 sin(E_n*t/(h/(2*pi)))**2"; } }
+    private readonly int testSamples;
+    private readonly int trainingSamples;
+
+    public Feynman89() : this((int) DateTime.Now.Ticks, 10000, 10000) { }
+
+    public Feynman89(int seed) {
+      Seed            = seed;
+      trainingSamples = 10000;
+      testSamples     = 10000;
+    }
+
+    public Feynman89(int seed, int trainingSamples, int testSamples) {
+      Seed                 = seed;
+      this.trainingSamples = trainingSamples;
+      this.testSamples     = testSamples;
+    }
+
+    public override string Name {
+      get { return string.Format("Feynman III.8.54 sin(E_n*t/(h/(2*pi)))**2 | {0} samples", trainingSamples); }
+    }
 
     protected override string TargetVariable { get { return "prob"; } }
@@ -14,9 +33,8 @@
     public int Seed { get; private set; }
 
-    public Feynman89() : this((int) DateTime.Now.Ticks) { }
-
-    public Feynman89(int seed) {
-      Seed = seed;
-    }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return trainingSamples; } }
+    protected override int TestPartitionStart { get { return trainingSamples; } }
+    protected override int TestPartitionEnd { get { return trainingSamples + testSamples; } }
 
     protected override List<List<double>> GenerateValues() {
Index: branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman9.cs
===================================================================
--- branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman9.cs	(revision 17641)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman9.cs	(revision 17642)
@@ -1,34 +1,49 @@
-﻿using System;
+using System;
 using System.Collections.Generic;
 using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using HeuristicLab.Common;
 using HeuristicLab.Random;
 
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
-  public class Feynman9 : FeynmanDescriptor{
- public override string Name { get { return "Feynman I.13.4 K = 1/2*m*(v^2+u^2+w^2)"; } }
+  public class Feynman9 : FeynmanDescriptor {
+    private readonly int testSamples;
+    private readonly int trainingSamples;
 
- protected override string TargetVariable { get { return "K"; } }
-    protected override string[] VariableNames { get { return new string[] { "m", "v", "u", "w", "K"}; } }
-    protected override string[] AllowedInputVariables { get { return new string[] {"m", "v", "u", "w"}; } }
+    public Feynman9() : this((int) DateTime.Now.Ticks, 10000, 10000) { }
+
+    public Feynman9(int seed) {
+      Seed            = seed;
+      trainingSamples = 10000;
+      testSamples     = 10000;
+    }
+
+    public Feynman9(int seed, int trainingSamples, int testSamples) {
+      Seed                 = seed;
+      this.trainingSamples = trainingSamples;
+      this.testSamples     = testSamples;
+    }
+
+    public override string Name {
+      get { return string.Format("Feynman I.13.4 1/2*m*(v**2+u**2+w**2) | {0} samples", trainingSamples); }
+    }
+
+    protected override string TargetVariable { get { return "K"; } }
+    protected override string[] VariableNames { get { return new[] {"m", "v", "u", "w", "K"}; } }
+    protected override string[] AllowedInputVariables { get { return new[] {"m", "v", "u", "w"}; } }
 
     public int Seed { get; private set; }
 
-    public Feynman9() : this((int)System.DateTime.Now.Ticks) { }
-
-    public Feynman9(int seed) {
-      Seed = seed;
-    }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return trainingSamples; } }
+    protected override int TestPartitionStart { get { return trainingSamples; } }
+    protected override int TestPartitionEnd { get { return trainingSamples + testSamples; } }
 
     protected override List<List<double>> GenerateValues() {
-      var rand = new MersenneTwister((uint)Seed);
+      var rand = new MersenneTwister((uint) Seed);
 
       var data = new List<List<double>>();
-      var m = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
-      var v = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
-      var u = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
-      var w = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
+      var m    = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
+      var v    = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
+      var u    = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
+      var w    = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
 
       var K = new List<double>();
Index: branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman90.cs
===================================================================
--- branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman90.cs	(revision 17641)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman90.cs	(revision 17642)
@@ -6,6 +6,27 @@
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
   public class Feynman90 : FeynmanDescriptor {
+    private readonly int testSamples;
+    private readonly int trainingSamples;
+
+    public Feynman90() : this((int) DateTime.Now.Ticks, 10000, 10000) { }
+
+    public Feynman90(int seed) {
+      Seed            = seed;
+      trainingSamples = 10000;
+      testSamples     = 10000;
+    }
+
+    public Feynman90(int seed, int trainingSamples, int testSamples) {
+      Seed                 = seed;
+      this.trainingSamples = trainingSamples;
+      this.testSamples     = testSamples;
+    }
+
     public override string Name {
-      get { return "Feynman III.9.52 (p_d*Ef*t/(h/(2*pi)))*sin((omega-omega_0)*t/2)**2/((omega-omega_0)*t/2)**2"; }
+      get {
+        return string.Format(
+          "Feynman III.9.52 (p_d*Ef*t/(h/(2*pi)))*sin((omega-omega_0)*t/2)**2/((omega-omega_0)*t/2)**2 | {0} samples",
+          trainingSamples);
+      }
     }
 
@@ -22,9 +43,8 @@
     public int Seed { get; private set; }
 
-    public Feynman90() : this((int) DateTime.Now.Ticks) { }
-
-    public Feynman90(int seed) {
-      Seed = seed;
-    }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return trainingSamples; } }
+    protected override int TestPartitionStart { get { return trainingSamples; } }
+    protected override int TestPartitionEnd { get { return trainingSamples + testSamples; } }
 
     protected override List<List<double>> GenerateValues() {
@@ -50,5 +70,7 @@
 
       for (var i = 0; i < p_d.Count; i++) {
-        var res = p_d[i] * Ef[i] * t[i] / (h[i] / (2 * Math.PI)) * Math.Pow(Math.Sin((omega[i] - omega_0[i]) * t[i] / 2),2) / Math.Pow(((omega[i] - omega_0[i]) * t[i] / 2), 2);
+        var res = p_d[i] * Ef[i] * t[i] / (h[i] / (2 * Math.PI)) *
+                  Math.Pow(Math.Sin((omega[i] - omega_0[i]) * t[i] / 2), 2) /
+                  Math.Pow((omega[i] - omega_0[i]) * t[i] / 2, 2);
         prob.Add(res);
       }
Index: branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman91.cs
===================================================================
--- branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman91.cs	(revision 17641)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman91.cs	(revision 17642)
@@ -6,5 +6,24 @@
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
   public class Feynman91 : FeynmanDescriptor {
-    public override string Name { get { return "Feynman III.10.19 mom*sqrt(Bx**2+By**2+Bz**2)"; } }
+    private readonly int testSamples;
+    private readonly int trainingSamples;
+
+    public Feynman91() : this((int) DateTime.Now.Ticks, 10000, 10000) { }
+
+    public Feynman91(int seed) {
+      Seed            = seed;
+      trainingSamples = 10000;
+      testSamples     = 10000;
+    }
+
+    public Feynman91(int seed, int trainingSamples, int testSamples) {
+      Seed                 = seed;
+      this.trainingSamples = trainingSamples;
+      this.testSamples     = testSamples;
+    }
+
+    public override string Name {
+      get { return string.Format("Feynman III.10.19 mom*sqrt(Bx**2+By**2+Bz**2) | {0} samples", trainingSamples); }
+    }
 
     protected override string TargetVariable { get { return "E_n"; } }
@@ -14,9 +33,8 @@
     public int Seed { get; private set; }
 
-    public Feynman91() : this((int) DateTime.Now.Ticks) { }
-
-    public Feynman91(int seed) {
-      Seed = seed;
-    }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return trainingSamples; } }
+    protected override int TestPartitionStart { get { return trainingSamples; } }
+    protected override int TestPartitionEnd { get { return trainingSamples + testSamples; } }
 
     protected override List<List<double>> GenerateValues() {
Index: branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman92.cs
===================================================================
--- branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman92.cs	(revision 17641)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman92.cs	(revision 17642)
@@ -6,5 +6,24 @@
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
   public class Feynman92 : FeynmanDescriptor {
-    public override string Name { get { return "Feynman III.12.43 n*(h/(2*pi))"; } }
+    private readonly int testSamples;
+    private readonly int trainingSamples;
+
+    public Feynman92() : this((int) DateTime.Now.Ticks, 10000, 10000) { }
+
+    public Feynman92(int seed) {
+      Seed            = seed;
+      trainingSamples = 10000;
+      testSamples     = 10000;
+    }
+
+    public Feynman92(int seed, int trainingSamples, int testSamples) {
+      Seed                 = seed;
+      this.trainingSamples = trainingSamples;
+      this.testSamples     = testSamples;
+    }
+
+    public override string Name {
+      get { return string.Format("Feynman III.12.43 n*(h/(2*pi)) | {0} samples", trainingSamples); }
+    }
 
     protected override string TargetVariable { get { return "L"; } }
@@ -14,9 +33,8 @@
     public int Seed { get; private set; }
 
-    public Feynman92() : this((int) DateTime.Now.Ticks) { }
-
-    public Feynman92(int seed) {
-      Seed = seed;
-    }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return trainingSamples; } }
+    protected override int TestPartitionStart { get { return trainingSamples; } }
+    protected override int TestPartitionEnd { get { return trainingSamples + testSamples; } }
 
     protected override List<List<double>> GenerateValues() {
Index: branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman93.cs
===================================================================
--- branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman93.cs	(revision 17641)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman93.cs	(revision 17642)
@@ -6,5 +6,24 @@
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
   public class Feynman93 : FeynmanDescriptor {
-    public override string Name { get { return "Feynman III.13.18 2*E_n*d**2*k/(h/(2*pi))"; } }
+    private readonly int testSamples;
+    private readonly int trainingSamples;
+
+    public Feynman93() : this((int) DateTime.Now.Ticks, 10000, 10000) { }
+
+    public Feynman93(int seed) {
+      Seed            = seed;
+      trainingSamples = 10000;
+      testSamples     = 10000;
+    }
+
+    public Feynman93(int seed, int trainingSamples, int testSamples) {
+      Seed                 = seed;
+      this.trainingSamples = trainingSamples;
+      this.testSamples     = testSamples;
+    }
+
+    public override string Name {
+      get { return string.Format("Feynman III.13.18 2*E_n*d**2*k/(h/(2*pi)) | {0} samples", trainingSamples); }
+    }
 
     protected override string TargetVariable { get { return "v"; } }
@@ -14,9 +33,8 @@
     public int Seed { get; private set; }
 
-    public Feynman93() : this((int) DateTime.Now.Ticks) { }
-
-    public Feynman93(int seed) {
-      Seed = seed;
-    }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return trainingSamples; } }
+    protected override int TestPartitionStart { get { return trainingSamples; } }
+    protected override int TestPartitionEnd { get { return trainingSamples + testSamples; } }
 
     protected override List<List<double>> GenerateValues() {
Index: branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman94.cs
===================================================================
--- branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman94.cs	(revision 17641)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman94.cs	(revision 17642)
@@ -6,5 +6,24 @@
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
   public class Feynman94 : FeynmanDescriptor {
-    public override string Name { get { return "Feynman III.14.14 I_0*(exp(q*Volt/(kb*T))-1)"; } }
+    private readonly int testSamples;
+    private readonly int trainingSamples;
+
+    public Feynman94() : this((int) DateTime.Now.Ticks, 10000, 10000) { }
+
+    public Feynman94(int seed) {
+      Seed            = seed;
+      trainingSamples = 10000;
+      testSamples     = 10000;
+    }
+
+    public Feynman94(int seed, int trainingSamples, int testSamples) {
+      Seed                 = seed;
+      this.trainingSamples = trainingSamples;
+      this.testSamples     = testSamples;
+    }
+
+    public override string Name {
+      get { return string.Format("Feynman III.14.14 I_0*(exp(q*Volt/(kb*T))-1) | {0} samples", trainingSamples); }
+    }
 
     protected override string TargetVariable { get { return "I"; } }
@@ -14,9 +33,8 @@
     public int Seed { get; private set; }
 
-    public Feynman94() : this((int) DateTime.Now.Ticks) { }
-
-    public Feynman94(int seed) {
-      Seed = seed;
-    }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return trainingSamples; } }
+    protected override int TestPartitionStart { get { return trainingSamples; } }
+    protected override int TestPartitionEnd { get { return trainingSamples + testSamples; } }
 
     protected override List<List<double>> GenerateValues() {
Index: branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman95.cs
===================================================================
--- branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman95.cs	(revision 17641)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman95.cs	(revision 17642)
@@ -6,5 +6,24 @@
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
   public class Feynman95 : FeynmanDescriptor {
-    public override string Name { get { return "Feynman III.15.12 2*U*(1-cos(k*d))"; } }
+    private readonly int testSamples;
+    private readonly int trainingSamples;
+
+    public Feynman95() : this((int) DateTime.Now.Ticks, 10000, 10000) { }
+
+    public Feynman95(int seed) {
+      Seed            = seed;
+      trainingSamples = 10000;
+      testSamples     = 10000;
+    }
+
+    public Feynman95(int seed, int trainingSamples, int testSamples) {
+      Seed                 = seed;
+      this.trainingSamples = trainingSamples;
+      this.testSamples     = testSamples;
+    }
+
+    public override string Name {
+      get { return string.Format("Feynman III.15.12 2*U*(1-cos(k*d)) | {0} samples", trainingSamples); }
+    }
 
     protected override string TargetVariable { get { return "E_n"; } }
@@ -14,9 +33,8 @@
     public int Seed { get; private set; }
 
-    public Feynman95() : this((int) DateTime.Now.Ticks) { }
-
-    public Feynman95(int seed) {
-      Seed = seed;
-    }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return trainingSamples; } }
+    protected override int TestPartitionStart { get { return trainingSamples; } }
+    protected override int TestPartitionEnd { get { return trainingSamples + testSamples; } }
 
     protected override List<List<double>> GenerateValues() {
@@ -37,4 +55,5 @@
       for (var i = 0; i < U.Count; i++) {
         var res = 2 * U[i] * (1 - Math.Cos(k[i] * d[i]));
+        ;
         E_n.Add(res);
       }
Index: branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman96.cs
===================================================================
--- branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman96.cs	(revision 17641)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman96.cs	(revision 17642)
@@ -6,5 +6,24 @@
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
   public class Feynman96 : FeynmanDescriptor {
-    public override string Name { get { return "Feynman III.15.14 (h/(2*pi))**2/(2*E_n*d**2)"; } }
+    private readonly int testSamples;
+    private readonly int trainingSamples;
+
+    public Feynman96() : this((int) DateTime.Now.Ticks, 10000, 10000) { }
+
+    public Feynman96(int seed) {
+      Seed            = seed;
+      trainingSamples = 10000;
+      testSamples     = 10000;
+    }
+
+    public Feynman96(int seed, int trainingSamples, int testSamples) {
+      Seed                 = seed;
+      this.trainingSamples = trainingSamples;
+      this.testSamples     = testSamples;
+    }
+
+    public override string Name {
+      get { return string.Format("Feynman III.15.14 (h/(2*pi))**2/(2*E_n*d**2) | {0} samples", trainingSamples); }
+    }
 
     protected override string TargetVariable { get { return "m"; } }
@@ -14,9 +33,8 @@
     public int Seed { get; private set; }
 
-    public Feynman96() : this((int) DateTime.Now.Ticks) { }
-
-    public Feynman96(int seed) {
-      Seed = seed;
-    }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return trainingSamples; } }
+    protected override int TestPartitionStart { get { return trainingSamples; } }
+    protected override int TestPartitionEnd { get { return trainingSamples + testSamples; } }
 
     protected override List<List<double>> GenerateValues() {
@@ -36,5 +54,5 @@
 
       for (var i = 0; i < h.Count; i++) {
-        var res = h[i] / Math.Pow((2 * Math.PI), 2) / (2 * E_n[i] * Math.Pow(d[i], 2));
+        var res = h[i] / Math.Pow(2 * Math.PI, 2) / (2 * E_n[i] * Math.Pow(d[i], 2));
         m.Add(res);
       }
Index: branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman97.cs
===================================================================
--- branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman97.cs	(revision 17641)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman97.cs	(revision 17642)
@@ -6,5 +6,24 @@
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
   public class Feynman97 : FeynmanDescriptor {
-    public override string Name { get { return "Feynman III.15.27 2*pi*alpha/(n*d)"; } }
+    private readonly int testSamples;
+    private readonly int trainingSamples;
+
+    public Feynman97() : this((int) DateTime.Now.Ticks, 10000, 10000) { }
+
+    public Feynman97(int seed) {
+      Seed            = seed;
+      trainingSamples = 10000;
+      testSamples     = 10000;
+    }
+
+    public Feynman97(int seed, int trainingSamples, int testSamples) {
+      Seed                 = seed;
+      this.trainingSamples = trainingSamples;
+      this.testSamples     = testSamples;
+    }
+
+    public override string Name {
+      get { return string.Format("Feynman III.15.27 2*pi*alpha/(n*d) | {0} samples", trainingSamples); }
+    }
 
     protected override string TargetVariable { get { return "k"; } }
@@ -14,9 +33,8 @@
     public int Seed { get; private set; }
 
-    public Feynman97() : this((int) DateTime.Now.Ticks) { }
-
-    public Feynman97(int seed) {
-      Seed = seed;
-    }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return trainingSamples; } }
+    protected override int TestPartitionStart { get { return trainingSamples; } }
+    protected override int TestPartitionEnd { get { return trainingSamples + testSamples; } }
 
     protected override List<List<double>> GenerateValues() {
Index: branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman98.cs
===================================================================
--- branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman98.cs	(revision 17641)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman98.cs	(revision 17642)
@@ -6,5 +6,24 @@
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
   public class Feynman98 : FeynmanDescriptor {
-    public override string Name { get { return "Feynman III.17.37 beta*(1+alpha*cos(theta))"; } }
+    private readonly int testSamples;
+    private readonly int trainingSamples;
+
+    public Feynman98() : this((int) DateTime.Now.Ticks, 10000, 10000) { }
+
+    public Feynman98(int seed) {
+      Seed            = seed;
+      trainingSamples = 10000;
+      testSamples     = 10000;
+    }
+
+    public Feynman98(int seed, int trainingSamples, int testSamples) {
+      Seed                 = seed;
+      this.trainingSamples = trainingSamples;
+      this.testSamples     = testSamples;
+    }
+
+    public override string Name {
+      get { return string.Format("Feynman III.17.37 beta*(1+alpha*cos(theta)) | {0} samples", trainingSamples); }
+    }
 
     protected override string TargetVariable { get { return "f"; } }
@@ -14,9 +33,8 @@
     public int Seed { get; private set; }
 
-    public Feynman98() : this((int) DateTime.Now.Ticks) { }
-
-    public Feynman98(int seed) {
-      Seed = seed;
-    }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return trainingSamples; } }
+    protected override int TestPartitionStart { get { return trainingSamples; } }
+    protected override int TestPartitionEnd { get { return trainingSamples + testSamples; } }
 
     protected override List<List<double>> GenerateValues() {
Index: branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman99.cs
===================================================================
--- branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman99.cs	(revision 17641)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman99.cs	(revision 17642)
@@ -6,6 +6,26 @@
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
   public class Feynman99 : FeynmanDescriptor {
+    private readonly int testSamples;
+    private readonly int trainingSamples;
+
+    public Feynman99() : this((int) DateTime.Now.Ticks, 10000, 10000) { }
+
+    public Feynman99(int seed) {
+      Seed            = seed;
+      trainingSamples = 10000;
+      testSamples     = 10000;
+    }
+
+    public Feynman99(int seed, int trainingSamples, int testSamples) {
+      Seed                 = seed;
+      this.trainingSamples = trainingSamples;
+      this.testSamples     = testSamples;
+    }
+
     public override string Name {
-      get { return "Feynman III.19.51 -m*q**4/(2*(4*pi*epsilon)**2*(h/(2*pi))**2)*(1/n**2)"; }
+      get {
+        return string.Format("Feynman III.19.51 -m*q**4/(2*(4*pi*epsilon)**2*(h/(2*pi))**2)*(1/n**2) | {0} samples",
+          trainingSamples);
+      }
     }
 
@@ -16,9 +36,8 @@
     public int Seed { get; private set; }
 
-    public Feynman99() : this((int) DateTime.Now.Ticks) { }
-
-    public Feynman99(int seed) {
-      Seed = seed;
-    }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return trainingSamples; } }
+    protected override int TestPartitionStart { get { return trainingSamples; } }
+    protected override int TestPartitionEnd { get { return trainingSamples + testSamples; } }
 
     protected override List<List<double>> GenerateValues() {
@@ -42,5 +61,6 @@
 
       for (var i = 0; i < m.Count; i++) {
-        var res = -m[i] * Math.Pow(q[i], 4) / (2 * Math.Pow((4 * Math.PI * epsilon[i]), 2) * Math.Pow((h[i] / (2 * Math.PI)), 2) * (1.0 / Math.Pow(n[i], 2)));
+        var res = -m[i] * Math.Pow(q[i], 4) / (2 * Math.Pow(4 * Math.PI * epsilon[i], 2) *
+                                               Math.Pow(h[i] / (2 * Math.PI), 2) * (1.0 / Math.Pow(n[i], 2)));
         E_n.Add(res);
       }
Index: branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/FeynmanDescriptor.cs
===================================================================
--- branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/FeynmanDescriptor.cs	(revision 17641)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/FeynmanDescriptor.cs	(revision 17642)
@@ -14,7 +14,7 @@
 
     protected override int TrainingPartitionStart { get { return 0; } }
-    protected override int TrainingPartitionEnd { get { return 10000; } }
-    protected override int TestPartitionStart { get { return 10000; } }
-    protected override int TestPartitionEnd { get { return 20000; } }
+    protected override int TrainingPartitionEnd { get { return 100; } }
+    protected override int TestPartitionStart { get { return 100; } }
+    protected override int TestPartitionEnd { get { return 200; } }
   }
 }
Index: branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/FeynmanInstanceProvider.cs
===================================================================
--- branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/FeynmanInstanceProvider.cs	(revision 17641)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/FeynmanInstanceProvider.cs	(revision 17642)
@@ -32,5 +32,5 @@
       var descriptorList = new List<IDataDescriptor>();
       var rand           = new MersenneTwister((uint) Seed);
-      descriptorList.Add(new Feynman1(rand.Next()));
+      descriptorList.Add(new Feynman1(rand.Next(), 10000, 10000));
       descriptorList.Add(new Feynman2(rand.Next()));
       descriptorList.Add(new Feynman3(rand.Next()));
