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 17672)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman10.cs	(revision 17673)
@@ -6,11 +6,11 @@
 
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
-  public class Feynman10 : FeynmanDescriptor {
+  public class Feynman11 : FeynmanDescriptor {
     private readonly int testSamples;
     private readonly int trainingSamples;
 
-    public Feynman10() : this((int) DateTime.Now.Ticks, 10000, 10000, null) { }
+    public Feynman11() : this((int) DateTime.Now.Ticks, 10000, 10000, null) { }
 
-    public Feynman10(int seed) {
+    public Feynman11(int seed) {
       Seed            = seed;
       trainingSamples = 10000;
@@ -19,5 +19,5 @@
     }
 
-    public Feynman10(int seed, int trainingSamples, int testSamples, double? noiseRatio) {
+    public Feynman11(int seed, int trainingSamples, int testSamples, double? noiseRatio) {
       Seed                 = seed;
       this.trainingSamples = trainingSamples;
@@ -28,16 +28,16 @@
     public override string Name {
       get {
-        return string.Format("I.12.2 q1*q2*r/(4*pi*epsilon*r**3) | {0} samples | noise ({1})", trainingSamples,
+        return string.Format("I.12.4 q1*r/(4*pi*epsilon*r**3) | {0} samples | noise ({1})", trainingSamples,
           noiseRatio == null ? "no noise" : noiseRatio.ToString());
       }
     }
 
-    protected override string TargetVariable { get { return noiseRatio == null ? "F" : "F_noise"; } }
+    protected override string TargetVariable { get { return noiseRatio == null ? "Ef" : "Ef_noise"; } }
 
     protected override string[] VariableNames {
-      get { return new[] {"q1", "q2", "epsilon", "r", noiseRatio == null ? "F" : "F_noise"}; }
+      get { return new[] {"q1", "epsilon", "r", noiseRatio == null ? "Ef" : "Ef_noise"}; }
     }
 
-    protected override string[] AllowedInputVariables { get { return new[] {"q1", "q2", "epsilon", "r"}; } }
+    protected override string[] AllowedInputVariables { get { return new[] {"q1", "epsilon", "r"}; } }
 
     public int Seed { get; private set; }
@@ -53,27 +53,25 @@
       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 F = new List<double>();
+      var Ef = new List<double>();
 
       data.Add(q1);
-      data.Add(q2);
       data.Add(epsilon);
       data.Add(r);
-      data.Add(F);
+      data.Add(Ef);
 
       for (var i = 0; i < q1.Count; i++) {
-        var res = q1[i] * q2[i] * r[i] / (4 * Math.PI * epsilon[i] * Math.Pow(r[i], 3));
-        F.Add(res);
+        var res = q1[i] * r[i] / (4 * Math.PI * epsilon[i] * Math.Pow(r[i], 3));
+        Ef.Add(res);
       }
 
       if (noiseRatio != null) {
-        var F_noise     = new List<double>();
-        var sigma_noise = (double) noiseRatio * F.StandardDeviationPop();
-        F_noise.AddRange(F.Select(md => md + NormalDistributedRandom.NextDouble(rand, 0, sigma_noise)));
-        data.Remove(F);
-        data.Add(F_noise);
+        var Ef_noise    = new List<double>();
+        var sigma_noise = (double) noiseRatio * Ef.StandardDeviationPop();
+        Ef_noise.AddRange(Ef.Select(md => md + NormalDistributedRandom.NextDouble(rand, 0, sigma_noise)));
+        data.Remove(Ef);
+        data.Add(Ef_noise);
       }
 
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 17672)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman11.cs	(revision 17673)
@@ -6,11 +6,11 @@
 
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
-  public class Feynman11 : FeynmanDescriptor {
+  public class Feynman12 : FeynmanDescriptor {
     private readonly int testSamples;
     private readonly int trainingSamples;
 
-    public Feynman11() : this((int) DateTime.Now.Ticks, 10000, 10000, null) { }
+    public Feynman12() : this((int) DateTime.Now.Ticks, 10000, 10000, null) { }
 
-    public Feynman11(int seed) {
+    public Feynman12(int seed) {
       Seed            = seed;
       trainingSamples = 10000;
@@ -19,5 +19,5 @@
     }
 
-    public Feynman11(int seed, int trainingSamples, int testSamples, double? noiseRatio) {
+    public Feynman12(int seed, int trainingSamples, int testSamples, double? noiseRatio) {
       Seed                 = seed;
       this.trainingSamples = trainingSamples;
@@ -28,16 +28,16 @@
     public override string Name {
       get {
-        return string.Format("I.12.4 q1*r/(4*pi*epsilon*r**3) | {0} samples | noise ({1})", trainingSamples,
+        return string.Format("I.12.5 q2*Ef | {0} samples | noise ({1})", trainingSamples,
           noiseRatio == null ? "no noise" : noiseRatio.ToString());
       }
     }
 
-    protected override string TargetVariable { get { return noiseRatio == null ? "Ef" : "Ef_noise"; } }
+    protected override string TargetVariable { get { return noiseRatio == null ? "F" : "F_noise"; } }
 
     protected override string[] VariableNames {
-      get { return new[] {"q1", "epsilon", "r", noiseRatio == null ? "Ef" : "Ef_noise"}; }
+      get { return new[] {"q2", "Ef", noiseRatio == null ? "F" : "F_noise"}; }
     }
 
-    protected override string[] AllowedInputVariables { get { return new[] {"q1", "epsilon", "r"}; } }
+    protected override string[] AllowedInputVariables { get { return new[] {"q2", "Ef"}; } }
 
     public int Seed { get; private set; }
@@ -51,27 +51,25 @@
       var rand = new MersenneTwister((uint) Seed);
 
-      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 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 Ef = new List<double>();
+      var F = new List<double>();
 
-      data.Add(q1);
-      data.Add(epsilon);
-      data.Add(r);
+      data.Add(q2);
       data.Add(Ef);
+      data.Add(F);
 
-      for (var i = 0; i < q1.Count; i++) {
-        var res = q1[i] * r[i] / (4 * Math.PI * epsilon[i] * Math.Pow(r[i], 3));
-        Ef.Add(res);
+      for (var i = 0; i < q2.Count; i++) {
+        var res = q2[i] * Ef[i];
+        F.Add(res);
       }
 
       if (noiseRatio != null) {
-        var Ef_noise    = new List<double>();
-        var sigma_noise = (double) noiseRatio * Ef.StandardDeviationPop();
-        Ef_noise.AddRange(Ef.Select(md => md + NormalDistributedRandom.NextDouble(rand, 0, sigma_noise)));
-        data.Remove(Ef);
-        data.Add(Ef_noise);
+        var F_noise     = new List<double>();
+        var sigma_noise = (double) noiseRatio * F.StandardDeviationPop();
+        F_noise.AddRange(F.Select(md => md + NormalDistributedRandom.NextDouble(rand, 0, sigma_noise)));
+        data.Remove(F);
+        data.Add(F_noise);
       }
 
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 17672)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman12.cs	(revision 17673)
@@ -6,11 +6,11 @@
 
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
-  public class Feynman12 : FeynmanDescriptor {
+  public class Feynman13 : FeynmanDescriptor {
     private readonly int testSamples;
     private readonly int trainingSamples;
 
-    public Feynman12() : this((int) DateTime.Now.Ticks, 10000, 10000, null) { }
+    public Feynman13() : this((int) DateTime.Now.Ticks, 10000, 10000, null) { }
 
-    public Feynman12(int seed) {
+    public Feynman13(int seed) {
       Seed            = seed;
       trainingSamples = 10000;
@@ -19,5 +19,5 @@
     }
 
-    public Feynman12(int seed, int trainingSamples, int testSamples, double? noiseRatio) {
+    public Feynman13(int seed, int trainingSamples, int testSamples, double? noiseRatio) {
       Seed                 = seed;
       this.trainingSamples = trainingSamples;
@@ -28,5 +28,5 @@
     public override string Name {
       get {
-        return string.Format("I.12.5 q2*Ef | {0} samples | noise ({1})", trainingSamples,
+        return string.Format("I.12.11 q*(Ef+B*v*sin(theta)) | {0} samples | noise ({1})", trainingSamples,
           noiseRatio == null ? "no noise" : noiseRatio.ToString());
       }
@@ -36,8 +36,8 @@
 
     protected override string[] VariableNames {
-      get { return new[] {"q2", "Ef", noiseRatio == null ? "F" : "F_noise"}; }
+      get { return new[] {"q", "Ef", "B", "v", "theta", noiseRatio == null ? "F" : "F_noise"}; }
     }
 
-    protected override string[] AllowedInputVariables { get { return new[] {"q2", "Ef"}; } }
+    protected override string[] AllowedInputVariables { get { return new[] {"q", "Ef", "B", "v", "theta"}; } }
 
     public int Seed { get; private set; }
@@ -51,16 +51,22 @@
       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 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();
 
       var F = new List<double>();
 
-      data.Add(q2);
+      data.Add(q);
       data.Add(Ef);
+      data.Add(B);
+      data.Add(v);
+      data.Add(theta);
       data.Add(F);
 
-      for (var i = 0; i < q2.Count; i++) {
-        var res = q2[i] * Ef[i];
+      for (var i = 0; i < q.Count; i++) {
+        var res = q[i] * (Ef[i] + B[i] * v[i] * Math.Sin(theta[i]));
         F.Add(res);
       }
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 17672)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman13.cs	(revision 17673)
@@ -6,11 +6,11 @@
 
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
-  public class Feynman13 : FeynmanDescriptor {
+  public class Feynman9 : FeynmanDescriptor {
     private readonly int testSamples;
     private readonly int trainingSamples;
 
-    public Feynman13() : this((int) DateTime.Now.Ticks, 10000, 10000, null) { }
+    public Feynman9() : this((int) DateTime.Now.Ticks, 10000, 10000, null) { }
 
-    public Feynman13(int seed) {
+    public Feynman9(int seed) {
       Seed            = seed;
       trainingSamples = 10000;
@@ -19,5 +19,5 @@
     }
 
-    public Feynman13(int seed, int trainingSamples, int testSamples, double? noiseRatio) {
+    public Feynman9(int seed, int trainingSamples, int testSamples, double? noiseRatio) {
       Seed                 = seed;
       this.trainingSamples = trainingSamples;
@@ -28,16 +28,16 @@
     public override string Name {
       get {
-        return string.Format("I.12.11 q*(Ef+B*v*sin(theta)) | {0} samples | noise ({1})", trainingSamples,
+        return string.Format("I.13.4 1/2*m*(v**2+u**2+w**2) | {0} samples | noise ({1})", trainingSamples,
           noiseRatio == null ? "no noise" : noiseRatio.ToString());
       }
     }
 
-    protected override string TargetVariable { get { return noiseRatio == null ? "F" : "F_noise"; } }
+    protected override string TargetVariable { get { return noiseRatio == null ? "K" : "K_noise"; } }
 
     protected override string[] VariableNames {
-      get { return new[] {"q", "Ef", "B", "v", "theta", noiseRatio == null ? "F" : "F_noise"}; }
+      get { return new[] {"m", "v", "u", "w", noiseRatio == null ? "K" : "K_noise"}; }
     }
 
-    protected override string[] AllowedInputVariables { get { return new[] {"q", "Ef", "B", "v", "theta"}; } }
+    protected override string[] AllowedInputVariables { get { return new[] {"m", "v", "u", "w"}; } }
 
     public int Seed { get; private set; }
@@ -51,31 +51,29 @@
       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 theta = 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 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 F = new List<double>();
+      var K = new List<double>();
 
-      data.Add(q);
-      data.Add(Ef);
-      data.Add(B);
+      data.Add(m);
       data.Add(v);
-      data.Add(theta);
-      data.Add(F);
+      data.Add(u);
+      data.Add(w);
+      data.Add(K);
 
-      for (var i = 0; i < q.Count; i++) {
-        var res = q[i] * (Ef[i] + B[i] * v[i] * Math.Sin(theta[i]));
-        F.Add(res);
+      for (var i = 0; i < m.Count; i++) {
+        var res = 1.0 / 2 * m[i] * (Math.Pow(v[i], 2) + Math.Pow(u[i], 2) + Math.Pow(w[i], 2));
+        K.Add(res);
       }
 
       if (noiseRatio != null) {
-        var F_noise     = new List<double>();
-        var sigma_noise = (double) noiseRatio * F.StandardDeviationPop();
-        F_noise.AddRange(F.Select(md => md + NormalDistributedRandom.NextDouble(rand, 0, sigma_noise)));
-        data.Remove(F);
-        data.Add(F_noise);
+        var K_noise     = new List<double>();
+        var sigma_noise = (double) noiseRatio * K.StandardDeviationPop();
+        K_noise.AddRange(K.Select(md => md + NormalDistributedRandom.NextDouble(rand, 0, sigma_noise)));
+        data.Remove(K);
+        data.Add(K_noise);
       }
 
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 17672)
+++ 	(revision )
@@ -1,83 +1,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using HeuristicLab.Common;
-using HeuristicLab.Random;
-
-namespace HeuristicLab.Problems.Instances.DataAnalysis {
-  public class Feynman9 : FeynmanDescriptor {
-    private readonly int testSamples;
-    private readonly int trainingSamples;
-
-    public Feynman9() : this((int) DateTime.Now.Ticks, 10000, 10000, null) { }
-
-    public Feynman9(int seed) {
-      Seed            = seed;
-      trainingSamples = 10000;
-      testSamples     = 10000;
-      noiseRatio      = null;
-    }
-
-    public Feynman9(int seed, int trainingSamples, int testSamples, double? noiseRatio) {
-      Seed                 = seed;
-      this.trainingSamples = trainingSamples;
-      this.testSamples     = testSamples;
-      this.noiseRatio      = noiseRatio;
-    }
-
-    public override string Name {
-      get {
-        return string.Format("I.13.4 1/2*m*(v**2+u**2+w**2) | {0} samples | noise ({1})", trainingSamples,
-          noiseRatio == null ? "no noise" : noiseRatio.ToString());
-      }
-    }
-
-    protected override string TargetVariable { get { return noiseRatio == null ? "K" : "K_noise"; } }
-
-    protected override string[] VariableNames {
-      get { return new[] {"m", "v", "u", "w", noiseRatio == null ? "K" : "K_noise"}; }
-    }
-
-    protected override string[] AllowedInputVariables { get { return new[] {"m", "v", "u", "w"}; } }
-
-    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() {
-      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 K = new List<double>();
-
-      data.Add(m);
-      data.Add(v);
-      data.Add(u);
-      data.Add(w);
-      data.Add(K);
-
-      for (var i = 0; i < m.Count; i++) {
-        var res = 1.0 / 2 * m[i] * (Math.Pow(v[i], 2) + Math.Pow(u[i], 2) + Math.Pow(w[i], 2));
-        K.Add(res);
-      }
-
-      if (noiseRatio != null) {
-        var K_noise     = new List<double>();
-        var sigma_noise = (double) noiseRatio * K.StandardDeviationPop();
-        K_noise.AddRange(K.Select(md => md + NormalDistributedRandom.NextDouble(rand, 0, sigma_noise)));
-        data.Remove(K);
-        data.Add(K_noise);
-      }
-
-      return data;
-    }
-  }
-}
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 17673)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/Feynman9.cs	(revision 17673)
@@ -0,0 +1,83 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using HeuristicLab.Common;
+using HeuristicLab.Random;
+
+namespace HeuristicLab.Problems.Instances.DataAnalysis {
+  public class Feynman10 : FeynmanDescriptor {
+    private readonly int testSamples;
+    private readonly int trainingSamples;
+
+    public Feynman10() : this((int) DateTime.Now.Ticks, 10000, 10000, null) { }
+
+    public Feynman10(int seed) {
+      Seed            = seed;
+      trainingSamples = 10000;
+      testSamples     = 10000;
+      noiseRatio      = null;
+    }
+
+    public Feynman10(int seed, int trainingSamples, int testSamples, double? noiseRatio) {
+      Seed                 = seed;
+      this.trainingSamples = trainingSamples;
+      this.testSamples     = testSamples;
+      this.noiseRatio      = noiseRatio;
+    }
+
+    public override string Name {
+      get {
+        return string.Format("I.12.2 q1*q2*r/(4*pi*epsilon*r**3) | {0} samples | noise ({1})", trainingSamples,
+          noiseRatio == null ? "no noise" : noiseRatio.ToString());
+      }
+    }
+
+    protected override string TargetVariable { get { return noiseRatio == null ? "F" : "F_noise"; } }
+
+    protected override string[] VariableNames {
+      get { return new[] {"q1", "q2", "epsilon", "r", noiseRatio == null ? "F" : "F_noise"}; }
+    }
+
+    protected override string[] AllowedInputVariables { get { return new[] {"q1", "q2", "epsilon", "r"}; } }
+
+    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() {
+      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 epsilon = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
+      var r       = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
+
+      var F = new List<double>();
+
+      data.Add(q1);
+      data.Add(q2);
+      data.Add(epsilon);
+      data.Add(r);
+      data.Add(F);
+
+      for (var i = 0; i < q1.Count; i++) {
+        var res = q1[i] * q2[i] * r[i] / (4 * Math.PI * epsilon[i] * Math.Pow(r[i], 3));
+        F.Add(res);
+      }
+
+      if (noiseRatio != null) {
+        var F_noise     = new List<double>();
+        var sigma_noise = (double) noiseRatio * F.StandardDeviationPop();
+        F_noise.AddRange(F.Select(md => md + NormalDistributedRandom.NextDouble(rand, 0, sigma_noise)));
+        data.Remove(F);
+        data.Add(F_noise);
+      }
+
+      return data;
+    }
+  }
+}
