Index: branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/FeynmanBonus10.cs
===================================================================
--- branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/FeynmanBonus10.cs	(revision 17674)
+++ 	(revision )
@@ -1,82 +1,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using HeuristicLab.Common;
-using HeuristicLab.Random;
-
-namespace HeuristicLab.Problems.Instances.DataAnalysis {
-  public class FeynmanBonus10 : FeynmanDescriptor {
-    private readonly int testSamples;
-    private readonly int trainingSamples;
-
-    public FeynmanBonus10() : this((int) DateTime.Now.Ticks, 10000, 10000, null) { }
-
-    public FeynmanBonus10(int seed) {
-      Seed            = seed;
-      trainingSamples = 10000;
-      testSamples     = 10000;
-      noiseRatio      = null;
-    }
-
-    public FeynmanBonus10(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(
-          "Relativistic aberation: arccos((cos(theta2)-v/c)/(1-v/c*cos(theta2))) | {0} samples | noise ({1})",
-          trainingSamples, noiseRatio == null ? "no noise" : noiseRatio.ToString());
-      }
-    }
-
-    protected override string TargetVariable { get { return noiseRatio == null ? "theta1" : "theta1_noise"; } }
-
-    protected override string[] VariableNames {
-      get { return new[] {"c", "v", "theta2", noiseRatio == null ? "theta1" : "theta1_noise"}; }
-    }
-
-    protected override string[] AllowedInputVariables { get { return new[] {"c", "v", "theta2"}; } }
-
-    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 c      = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 4, 6).ToList();
-      var v      = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 3).ToList();
-      var theta2 = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 3).ToList();
-
-      var theta1 = new List<double>();
-
-      data.Add(c);
-      data.Add(v);
-      data.Add(theta2);
-      data.Add(theta1);
-
-      for (var i = 0; i < c.Count; i++) {
-        var res = Math.Acos((Math.Cos(theta2[i]) - v[i] / c[i]) / (1 - v[i] / c[i] * Math.Cos(theta2[i])));
-        theta1.Add(res);
-      }
-
-      if (noiseRatio != null) {
-        var theta1_noise = new List<double>();
-        var sigma_noise  = (double) noiseRatio * theta1.StandardDeviationPop();
-        theta1_noise.AddRange(theta1.Select(md => md + NormalDistributedRandom.NextDouble(rand, 0, sigma_noise)));
-        data.Remove(theta1);
-        data.Add(theta1_noise);
-      }
-
-      return data;
-    }
-  }
-}
Index: branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/FeynmanBonus10_.cs
===================================================================
--- branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/FeynmanBonus10_.cs	(revision 17675)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/FeynmanBonus10_.cs	(revision 17675)
@@ -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 FeynmanBonus5 : FeynmanDescriptor {
+    private readonly int testSamples;
+    private readonly int trainingSamples;
+
+    public FeynmanBonus5() : this((int) DateTime.Now.Ticks, 10000, 10000, null) { }
+
+    public FeynmanBonus5(int seed) {
+      Seed            = seed;
+      trainingSamples = 10000;
+      testSamples     = 10000;
+      noiseRatio      = null;
+    }
+
+    public FeynmanBonus5(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("Goldstein 3.74: 2*pi*d**(3/2)/sqrt(G*(m1+m2)) | {0} samples | noise ({1})",
+          trainingSamples, noiseRatio == null ? "no noise" : noiseRatio.ToString());
+      }
+    }
+
+    protected override string TargetVariable { get { return noiseRatio == null ? "t" : "t_noise"; } }
+
+    protected override string[] VariableNames {
+      get { return new[] {"d", "G", "m1", "m2", noiseRatio == null ? "t" : "t_noise"}; }
+    }
+
+    protected override string[] AllowedInputVariables { get { return new[] {"d", "G", "m1", "m2"}; } }
+
+    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 d    = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 3).ToList();
+      var G    = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 3).ToList();
+      var m1   = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 3).ToList();
+      var m2   = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 3).ToList();
+
+      var t = new List<double>();
+
+      data.Add(d);
+      data.Add(G);
+      data.Add(m1);
+      data.Add(m2);
+      data.Add(t);
+
+      for (var i = 0; i < d.Count; i++) {
+        var res = 2 * Math.PI * Math.Pow(d[i], 3.0 / 2) / Math.Sqrt(G[i] * (m1[i] + m2[i]));
+        t.Add(res);
+      }
+
+      if (noiseRatio != null) {
+        var t_noise     = new List<double>();
+        var sigma_noise = (double) noiseRatio * t.StandardDeviationPop();
+        t_noise.AddRange(t.Select(md => md + NormalDistributedRandom.NextDouble(rand, 0, sigma_noise)));
+        data.Remove(t);
+        data.Add(t_noise);
+      }
+
+      return data;
+    }
+  }
+}
Index: branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/FeynmanBonus11.cs
===================================================================
--- branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/FeynmanBonus11.cs	(revision 17674)
+++ 	(revision )
@@ -1,86 +1,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using HeuristicLab.Common;
-using HeuristicLab.Random;
-
-namespace HeuristicLab.Problems.Instances.DataAnalysis {
-  public class FeynmanBonus11 : FeynmanDescriptor {
-    private readonly int testSamples;
-    private readonly int trainingSamples;
-
-    public FeynmanBonus11() : this((int) DateTime.Now.Ticks, 10000, 10000, null) { }
-
-    public FeynmanBonus11(int seed) {
-      Seed            = seed;
-      trainingSamples = 10000;
-      testSamples     = 10000;
-      noiseRatio      = null;
-    }
-
-    public FeynmanBonus11(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(
-          "N-slit diffraction: I_0*(sin(alpha/2)*sin(n*delta/2)/(alpha/2*sin(delta/2)))**2 | {0} samples | noise ({1})",
-          trainingSamples, noiseRatio == null ? "no noise" : noiseRatio.ToString());
-      }
-    }
-
-    protected override string TargetVariable { get { return noiseRatio == null ? "I" : "I_noise"; } }
-
-    protected override string[] VariableNames {
-      get { return new[] {"I_0", "alpha", "delta", "n", noiseRatio == null ? "I" : "I_noise"}; }
-    }
-
-    protected override string[] AllowedInputVariables { get { return new[] {"I_0", "alpha", "delta", "n"}; } }
-
-    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 I_0   = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 3).ToList();
-      var alpha = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 3).ToList();
-      var delta = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 3).ToList();
-      var n     = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 2).ToList();
-
-      var I = new List<double>();
-
-      data.Add(I_0);
-      data.Add(alpha);
-      data.Add(delta);
-      data.Add(n);
-      data.Add(I);
-
-      for (var i = 0; i < I_0.Count; i++) {
-        var res = I_0[i] * Math.Pow(
-                    Math.Sin(alpha[i] / 2) * Math.Sin(n[i] * delta[i] / 2) / (alpha[i] / 2 * Math.Sin(delta[i] / 2)),
-                    2);
-        I.Add(res);
-      }
-
-      if (noiseRatio != null) {
-        var I_noise     = new List<double>();
-        var sigma_noise = (double) noiseRatio * I.StandardDeviationPop();
-        I_noise.AddRange(I.Select(md => md + NormalDistributedRandom.NextDouble(rand, 0, sigma_noise)));
-        data.Remove(I);
-        data.Add(I_noise);
-      }
-
-      return data;
-    }
-  }
-}
Index: branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/FeynmanBonus11_.cs
===================================================================
--- branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/FeynmanBonus11_.cs	(revision 17675)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/FeynmanBonus11_.cs	(revision 17675)
@@ -0,0 +1,95 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using HeuristicLab.Common;
+using HeuristicLab.Random;
+
+namespace HeuristicLab.Problems.Instances.DataAnalysis {
+  public class FeynmanBonus6 : FeynmanDescriptor {
+    private readonly int testSamples;
+    private readonly int trainingSamples;
+
+    public FeynmanBonus6() : this((int) DateTime.Now.Ticks, 10000, 10000, null) { }
+
+    public FeynmanBonus6(int seed) {
+      Seed            = seed;
+      trainingSamples = 10000;
+      testSamples     = 10000;
+      noiseRatio      = null;
+    }
+
+    public FeynmanBonus6(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(
+          "Goldstein 3.99: sqrt(1+2*epsilon**2*E_n*L**2/(m*(Z_1*Z_2*q**2)**2)) | {0} samples | noise ({1})",
+          trainingSamples, noiseRatio == null ? "no noise" : noiseRatio.ToString());
+      }
+    }
+
+    protected override string TargetVariable { get { return noiseRatio == null ? "alpha" : "alpha_noise"; } }
+
+    protected override string[] VariableNames {
+      get {
+        return new[] {"epsilon", "L", "m", "Z_1", "Z_2", "q", "E_n", noiseRatio == null ? "alpha" : "alpha_noise"};
+      }
+    }
+
+    protected override string[] AllowedInputVariables {
+      get { return new[] {"epsilon", "L", "m", "Z_1", "Z_2", "q", "E_n"}; }
+    }
+
+    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 epsilon = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 3).ToList();
+      var L       = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 3).ToList();
+      var m       = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 3).ToList();
+      var Z_1     = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 3).ToList();
+      var Z_2     = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 3).ToList();
+      var q       = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 3).ToList();
+      var E_n     = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 3).ToList();
+
+      var alpha = new List<double>();
+
+      data.Add(epsilon);
+      data.Add(L);
+      data.Add(m);
+      data.Add(Z_1);
+      data.Add(Z_2);
+      data.Add(q);
+      data.Add(E_n);
+      data.Add(alpha);
+
+      for (var i = 0; i < epsilon.Count; i++) {
+        var res = Math.Sqrt(1 + 2 * Math.Pow(epsilon[i], 2) * E_n[i] * Math.Pow(L[i], 2) /
+                            (m[i] * Math.Pow(Z_1[i] * Z_2[i] * Math.Pow(q[i], 2), 2)));
+        alpha.Add(res);
+      }
+
+      if (noiseRatio != null) {
+        var alpha_noise = new List<double>();
+        var sigma_noise = (double) noiseRatio * alpha.StandardDeviationPop();
+        alpha_noise.AddRange(alpha.Select(md => md + NormalDistributedRandom.NextDouble(rand, 0, sigma_noise)));
+        data.Remove(alpha);
+        data.Add(alpha_noise);
+      }
+
+      return data;
+    }
+  }
+}
Index: branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/FeynmanBonus12.cs
===================================================================
--- branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/FeynmanBonus12.cs	(revision 17674)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/FeynmanBonus12.cs	(revision 17675)
@@ -6,11 +6,11 @@
 
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
-  public class FeynmanBonus12 : FeynmanDescriptor {
+  public class FeynmanBonus16 : FeynmanDescriptor {
     private readonly int testSamples;
     private readonly int trainingSamples;
 
-    public FeynmanBonus12() : this((int) DateTime.Now.Ticks, 10000, 10000, null) { }
+    public FeynmanBonus16() : this((int) DateTime.Now.Ticks, 10000, 10000, null) { }
 
-    public FeynmanBonus12(int seed) {
+    public FeynmanBonus16(int seed) {
       Seed            = seed;
       trainingSamples = 10000;
@@ -19,5 +19,5 @@
     }
 
-    public FeynmanBonus12(int seed, int trainingSamples, int testSamples, double? noiseRatio) {
+    public FeynmanBonus16(int seed, int trainingSamples, int testSamples, double? noiseRatio) {
       Seed                 = seed;
       this.trainingSamples = trainingSamples;
@@ -29,16 +29,16 @@
       get {
         return string.Format(
-          "Jackson 2.11: q/(4*pi*epsilon*y**2)*(4*pi*epsilon*Volt*d-q*d*y**3/(y**2-d**2)**2) | {0} samples | noise ({1})",
+          "Goldstein 8.56: sqrt((p-q*A_vec)**2*c**2+m**2*c**4)+q*Volt | {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 ? "E_n" : "E_n_noise"; } }
 
     protected override string[] VariableNames {
-      get { return new[] {"q", "y", "Volt", "d", "epsilon", noiseRatio == null ? "F" : "F_noise"}; }
+      get { return new[] {"m", "c", "p", "q", "A_vec", "Volt", noiseRatio == null ? "E_n" : "E_n_noise"}; }
     }
 
-    protected override string[] AllowedInputVariables { get { return new[] {"q", "y", "Volt", "d", "epsilon"}; } }
+    protected override string[] AllowedInputVariables { get { return new[] {"m", "c", "p", "q", "A_vec", "Volt"}; } }
 
     public int Seed { get; private set; }
@@ -52,33 +52,34 @@
       var rand = new MersenneTwister((uint) Seed);
 
-      var data    = new List<List<double>>();
-      var q       = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
-      var y       = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 3).ToList();
-      var Volt    = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
-      var d       = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 4, 6).ToList();
-      var epsilon = 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 c     = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
+      var p     = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
+      var q     = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
+      var A_vec = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
+      var Volt  = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
 
-      var F = new List<double>();
+      var E_n = new List<double>();
 
+      data.Add(m);
+      data.Add(c);
+      data.Add(p);
       data.Add(q);
-      data.Add(y);
+      data.Add(A_vec);
       data.Add(Volt);
-      data.Add(d);
-      data.Add(epsilon);
-      data.Add(F);
+      data.Add(E_n);
 
-      for (var i = 0; i < q.Count; i++) {
-        var res = q[i] / (4 * Math.PI * epsilon[i] * Math.Pow(y[i], 2)) * (
-                    4 * Math.PI * epsilon[i] * Volt[i] * d[i] - q[i] * d[i] * Math.Pow(y[i], 3) /
-                    Math.Pow(Math.Pow(y[i], 2) - Math.Pow(d[i], 2), 2));
-        F.Add(res);
+      for (var i = 0; i < m.Count; i++) {
+        var res = Math.Sqrt(Math.Pow(p[i] - q[i] * A_vec[i], 2) * Math.Pow(c[i], 2) +
+                            Math.Pow(m[i], 2) * Math.Pow(c[i], 4)) + q[i] * Volt[i];
+        E_n.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 E_n_noise   = new List<double>();
+        var sigma_noise = (double) noiseRatio * E_n.StandardDeviationPop();
+        E_n_noise.AddRange(E_n.Select(md => md + NormalDistributedRandom.NextDouble(rand, 0, sigma_noise)));
+        data.Remove(E_n);
+        data.Add(E_n_noise);
       }
 
Index: branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/FeynmanBonus13.cs
===================================================================
--- branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/FeynmanBonus13.cs	(revision 17674)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/FeynmanBonus13.cs	(revision 17675)
@@ -6,11 +6,11 @@
 
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
-  public class FeynmanBonus13 : FeynmanDescriptor {
+  public class FeynmanBonus17 : FeynmanDescriptor {
     private readonly int testSamples;
     private readonly int trainingSamples;
 
-    public FeynmanBonus13() : this((int) DateTime.Now.Ticks, 10000, 10000, null) { }
+    public FeynmanBonus17() : this((int) DateTime.Now.Ticks, 10000, 10000, null) { }
 
-    public FeynmanBonus13(int seed) {
+    public FeynmanBonus17(int seed) {
       Seed            = seed;
       trainingSamples = 10000;
@@ -19,5 +19,5 @@
     }
 
-    public FeynmanBonus13(int seed, int trainingSamples, int testSamples, double? noiseRatio) {
+    public FeynmanBonus17(int seed, int trainingSamples, int testSamples, double? noiseRatio) {
       Seed                 = seed;
       this.trainingSamples = trainingSamples;
@@ -29,16 +29,16 @@
       get {
         return string.Format(
-          "Jackson 3.45: q/sqrt(r**2+d**2-2*r*d*cos(alpha)) | {0} samples | noise ({1})",
+          "Goldstein 12.80: 1/(2*m)*(p**2+m**2*omega**2*x**2*(1+alpha*x/y)) | {0} samples | noise ({1})",
           trainingSamples, noiseRatio == null ? "no noise" : noiseRatio.ToString());
       }
     }
 
-    protected override string TargetVariable { get { return noiseRatio == null ? "Volt" : "Volt_noise"; } }
+    protected override string TargetVariable { get { return noiseRatio == null ? "E_n" : "E_n_noise"; } }
 
     protected override string[] VariableNames {
-      get { return new[] {"q", "r", "d", "alpha", noiseRatio == null ? "Volt" : "Volt_noise"}; }
+      get { return new[] {"m", "omega", "p", "y", "x", "alpha", noiseRatio == null ? "E_n" : "E_n_noise"}; }
     }
 
-    protected override string[] AllowedInputVariables { get { return new[] {"q", "r", "d", "alpha"}; } }
+    protected override string[] AllowedInputVariables { get { return new[] {"m", "omega", "p", "y", "x", "alpha"}; } }
 
     public int Seed { get; private set; }
@@ -52,30 +52,35 @@
       var rand = new MersenneTwister((uint) Seed);
 
-      var data    = new List<List<double>>();
-      var q       = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
-      var r       = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 3).ToList();
-      var d       = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 4, 6).ToList();
-      var alpha   = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 0, 6).ToList();
+      var data  = new List<List<double>>();
+      var m     = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
+      var omega = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
+      var p     = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
+      var y     = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
+      var x     = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
+      var alpha = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
 
-      var Volt = new List<double>();
+      var E_n = new List<double>();
 
-      data.Add(q);
-      data.Add(r);
-      data.Add(d);
+      data.Add(m);
+      data.Add(omega);
+      data.Add(p);
+      data.Add(y);
+      data.Add(x);
       data.Add(alpha);
-      data.Add(Volt);
+      data.Add(E_n);
 
-      for (var i = 0; i < q.Count; i++) {
-        var res = q[i] /
-                  Math.Sqrt(Math.Pow(r[i], 2) + Math.Pow(d[i], 2) - 2 * r[i] * d[i] * Math.Cos(alpha[i]));
-        Volt.Add(res);
+      for (var i = 0; i < m.Count; i++) {
+        var res = 1.0 / (2 * m[i]) * (Math.Pow(p[i], 2) +
+                                      Math.Pow(m[i], 2) * Math.Pow(omega[i], 2) * Math.Pow(x[i], 2) *
+                                      (1 + alpha[i] * x[i] / y[i]));
+        E_n.Add(res);
       }
 
       if (noiseRatio != null) {
-        var Volt_noise  = new List<double>();
-        var sigma_noise = (double) noiseRatio * Volt.StandardDeviationPop();
-        Volt_noise.AddRange(Volt.Select(md => md + NormalDistributedRandom.NextDouble(rand, 0, sigma_noise)));
-        data.Remove(Volt);
-        data.Add(Volt_noise);
+        var E_n_noise   = new List<double>();
+        var sigma_noise = (double) noiseRatio * E_n.StandardDeviationPop();
+        E_n_noise.AddRange(E_n.Select(md => md + NormalDistributedRandom.NextDouble(rand, 0, sigma_noise)));
+        data.Remove(E_n);
+        data.Add(E_n_noise);
       }
 
Index: branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/FeynmanBonus14.cs
===================================================================
--- branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/FeynmanBonus14.cs	(revision 17674)
+++ 	(revision )
@@ -1,87 +1,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using HeuristicLab.Common;
-using HeuristicLab.Random;
-
-namespace HeuristicLab.Problems.Instances.DataAnalysis {
-  public class FeynmanBonus14 : FeynmanDescriptor {
-    private readonly int testSamples;
-    private readonly int trainingSamples;
-
-    public FeynmanBonus14() : this((int) DateTime.Now.Ticks, 10000, 10000, null) { }
-
-    public FeynmanBonus14(int seed) {
-      Seed            = seed;
-      trainingSamples = 10000;
-      testSamples     = 10000;
-      noiseRatio      = null;
-    }
-
-    public FeynmanBonus14(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(
-          "Jackson 4.60: Ef*cos(theta)*((alpha-1)/(alpha+2)*d**3/r**2-r) | {0} samples | noise ({1})",
-          trainingSamples, noiseRatio == null ? "no noise" : noiseRatio.ToString());
-      }
-    }
-
-    protected override string TargetVariable { get { return noiseRatio == null ? "Volt" : "Volt_noise"; } }
-
-    protected override string[] VariableNames {
-      get { return new[] {"Ef", "theta", "r", "d", "alpha", noiseRatio == null ? "Volt" : "Volt_noise"}; }
-    }
-
-    protected override string[] AllowedInputVariables { get { return new[] {"Ef", "theta", "r", "d", "alpha"}; } }
-
-    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 Ef    = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
-      var theta = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 0, 6).ToList();
-      var r     = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
-      var d     = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
-      var alpha = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
-
-      var Volt = new List<double>();
-
-      data.Add(Ef);
-      data.Add(theta);
-      data.Add(r);
-      data.Add(d);
-      data.Add(alpha);
-      data.Add(Volt);
-
-      for (var i = 0; i < Ef.Count; i++) {
-        var res = Ef[i] * Math.Cos(theta[i]) *
-                  ((alpha[i] - 1) / (alpha[i] + 2) * Math.Pow(d[i], 3) / Math.Pow(r[i], 2) - r[i] );
-        Volt.Add(res);
-      }
-
-      if (noiseRatio != null) {
-        var Volt_noise  = new List<double>();
-        var sigma_noise = (double) noiseRatio * Volt.StandardDeviationPop();
-        Volt_noise.AddRange(Volt.Select(md => md + NormalDistributedRandom.NextDouble(rand, 0, sigma_noise)));
-        data.Remove(Volt);
-        data.Add(Volt_noise);
-      }
-
-      return data;
-    }
-  }
-}
Index: branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/FeynmanBonus14_.cs
===================================================================
--- branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/FeynmanBonus14_.cs	(revision 17675)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/FeynmanBonus14_.cs	(revision 17675)
@@ -0,0 +1,88 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using HeuristicLab.Common;
+using HeuristicLab.Random;
+
+namespace HeuristicLab.Problems.Instances.DataAnalysis {
+  public class FeynmanBonus12 : FeynmanDescriptor {
+    private readonly int testSamples;
+    private readonly int trainingSamples;
+
+    public FeynmanBonus12() : this((int) DateTime.Now.Ticks, 10000, 10000, null) { }
+
+    public FeynmanBonus12(int seed) {
+      Seed            = seed;
+      trainingSamples = 10000;
+      testSamples     = 10000;
+      noiseRatio      = null;
+    }
+
+    public FeynmanBonus12(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(
+          "Jackson 2.11: q/(4*pi*epsilon*y**2)*(4*pi*epsilon*Volt*d-q*d*y**3/(y**2-d**2)**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[] VariableNames {
+      get { return new[] {"q", "y", "Volt", "d", "epsilon", noiseRatio == null ? "F" : "F_noise"}; }
+    }
+
+    protected override string[] AllowedInputVariables { get { return new[] {"q", "y", "Volt", "d", "epsilon"}; } }
+
+    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 q       = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
+      var y       = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 3).ToList();
+      var Volt    = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
+      var d       = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 4, 6).ToList();
+      var epsilon = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
+
+      var F = new List<double>();
+
+      data.Add(q);
+      data.Add(y);
+      data.Add(Volt);
+      data.Add(d);
+      data.Add(epsilon);
+      data.Add(F);
+
+      for (var i = 0; i < q.Count; i++) {
+        var res = q[i] / (4 * Math.PI * epsilon[i] * Math.Pow(y[i], 2)) * (
+                    4 * Math.PI * epsilon[i] * Volt[i] * d[i] - q[i] * d[i] * Math.Pow(y[i], 3) /
+                    Math.Pow(Math.Pow(y[i], 2) - Math.Pow(d[i], 2), 2));
+        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;
+    }
+  }
+}
Index: branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/FeynmanBonus15.cs
===================================================================
--- branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/FeynmanBonus15.cs	(revision 17674)
+++ 	(revision )
@@ -1,85 +1,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using HeuristicLab.Common;
-using HeuristicLab.Random;
-
-namespace HeuristicLab.Problems.Instances.DataAnalysis {
-  public class FeynmanBonus15 : FeynmanDescriptor {
-    private readonly int testSamples;
-    private readonly int trainingSamples;
-
-    public FeynmanBonus15() : this((int) DateTime.Now.Ticks, 10000, 10000, null) { }
-
-    public FeynmanBonus15(int seed) {
-      Seed            = seed;
-      trainingSamples = 10000;
-      testSamples     = 10000;
-      noiseRatio      = null;
-    }
-
-    public FeynmanBonus15(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(
-          "Jackson 11.38: sqrt(1-v**2/c**2)*omega/(1+v/c*cos(theta)) | {0} samples | noise ({1})",
-          trainingSamples, noiseRatio == null ? "no noise" : noiseRatio.ToString());
-      }
-    }
-
-    protected override string TargetVariable { get { return noiseRatio == null ? "omega_0" : "omega_0_noise"; } }
-
-    protected override string[] VariableNames {
-      get { return new[] {"c", "v", "omega", "theta", noiseRatio == null ? "omega_0" : "omega_0_noise"}; }
-    }
-
-    protected override string[] AllowedInputVariables { get { return new[] {"c", "v", "omega", "theta"}; } }
-
-    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 c     = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 5, 20).ToList();
-      var v     = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 3).ToList();
-      var omega = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
-      var theta = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 0, 6).ToList();
-
-      var omega_0 = new List<double>();
-
-      data.Add(c);
-      data.Add(v);
-      data.Add(omega);
-      data.Add(theta);
-      data.Add(omega_0);
-
-      for (var i = 0; i < c.Count; i++) {
-        var res = Math.Sqrt(1 - Math.Pow(v[i], 2) / Math.Pow(c[i], 2)) * omega[i] /
-                  (1 + v[i] / c[i] * Math.Cos(theta[i]));
-        omega_0.Add(res);
-      }
-
-      if (noiseRatio != null) {
-        var omega_0_noise = new List<double>();
-        var sigma_noise   = (double) noiseRatio * omega_0.StandardDeviationPop();
-        omega_0_noise.AddRange(omega_0.Select(md => md + NormalDistributedRandom.NextDouble(rand, 0, sigma_noise)));
-        data.Remove(omega_0);
-        data.Add(omega_0_noise);
-      }
-
-      return data;
-    }
-  }
-}
Index: branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/FeynmanBonus15_.cs
===================================================================
--- branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/FeynmanBonus15_.cs	(revision 17675)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/FeynmanBonus15_.cs	(revision 17675)
@@ -0,0 +1,85 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using HeuristicLab.Common;
+using HeuristicLab.Random;
+
+namespace HeuristicLab.Problems.Instances.DataAnalysis {
+  public class FeynmanBonus13 : FeynmanDescriptor {
+    private readonly int testSamples;
+    private readonly int trainingSamples;
+
+    public FeynmanBonus13() : this((int) DateTime.Now.Ticks, 10000, 10000, null) { }
+
+    public FeynmanBonus13(int seed) {
+      Seed            = seed;
+      trainingSamples = 10000;
+      testSamples     = 10000;
+      noiseRatio      = null;
+    }
+
+    public FeynmanBonus13(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(
+          "Jackson 3.45: q/sqrt(r**2+d**2-2*r*d*cos(alpha)) | {0} samples | noise ({1})",
+          trainingSamples, noiseRatio == null ? "no noise" : noiseRatio.ToString());
+      }
+    }
+
+    protected override string TargetVariable { get { return noiseRatio == null ? "Volt" : "Volt_noise"; } }
+
+    protected override string[] VariableNames {
+      get { return new[] {"q", "r", "d", "alpha", noiseRatio == null ? "Volt" : "Volt_noise"}; }
+    }
+
+    protected override string[] AllowedInputVariables { get { return new[] {"q", "r", "d", "alpha"}; } }
+
+    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 q       = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
+      var r       = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 3).ToList();
+      var d       = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 4, 6).ToList();
+      var alpha   = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 0, 6).ToList();
+
+      var Volt = new List<double>();
+
+      data.Add(q);
+      data.Add(r);
+      data.Add(d);
+      data.Add(alpha);
+      data.Add(Volt);
+
+      for (var i = 0; i < q.Count; i++) {
+        var res = q[i] /
+                  Math.Sqrt(Math.Pow(r[i], 2) + Math.Pow(d[i], 2) - 2 * r[i] * d[i] * Math.Cos(alpha[i]));
+        Volt.Add(res);
+      }
+
+      if (noiseRatio != null) {
+        var Volt_noise  = new List<double>();
+        var sigma_noise = (double) noiseRatio * Volt.StandardDeviationPop();
+        Volt_noise.AddRange(Volt.Select(md => md + NormalDistributedRandom.NextDouble(rand, 0, sigma_noise)));
+        data.Remove(Volt);
+        data.Add(Volt_noise);
+      }
+
+      return data;
+    }
+  }
+}
Index: branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/FeynmanBonus16.cs
===================================================================
--- branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/FeynmanBonus16.cs	(revision 17674)
+++ 	(revision )
@@ -1,89 +1,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using HeuristicLab.Common;
-using HeuristicLab.Random;
-
-namespace HeuristicLab.Problems.Instances.DataAnalysis {
-  public class FeynmanBonus16 : FeynmanDescriptor {
-    private readonly int testSamples;
-    private readonly int trainingSamples;
-
-    public FeynmanBonus16() : this((int) DateTime.Now.Ticks, 10000, 10000, null) { }
-
-    public FeynmanBonus16(int seed) {
-      Seed            = seed;
-      trainingSamples = 10000;
-      testSamples     = 10000;
-      noiseRatio      = null;
-    }
-
-    public FeynmanBonus16(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(
-          "Goldstein 8.56: sqrt((p-q*A_vec)**2*c**2+m**2*c**4)+q*Volt | {0} samples | noise ({1})",
-          trainingSamples, noiseRatio == null ? "no noise" : noiseRatio.ToString());
-      }
-    }
-
-    protected override string TargetVariable { get { return noiseRatio == null ? "E_n" : "E_n_noise"; } }
-
-    protected override string[] VariableNames {
-      get { return new[] {"m", "c", "p", "q", "A_vec", "Volt", noiseRatio == null ? "E_n" : "E_n_noise"}; }
-    }
-
-    protected override string[] AllowedInputVariables { get { return new[] {"m", "c", "p", "q", "A_vec", "Volt"}; } }
-
-    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 c     = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
-      var p     = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
-      var q     = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
-      var A_vec = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
-      var Volt  = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
-
-      var E_n = new List<double>();
-
-      data.Add(m);
-      data.Add(c);
-      data.Add(p);
-      data.Add(q);
-      data.Add(A_vec);
-      data.Add(Volt);
-      data.Add(E_n);
-
-      for (var i = 0; i < m.Count; i++) {
-        var res = Math.Sqrt(Math.Pow(p[i] - q[i] * A_vec[i], 2) * Math.Pow(c[i], 2) +
-                            Math.Pow(m[i], 2) * Math.Pow(c[i], 4)) + q[i] * Volt[i];
-        E_n.Add(res);
-      }
-
-      if (noiseRatio != null) {
-        var E_n_noise   = new List<double>();
-        var sigma_noise = (double) noiseRatio * E_n.StandardDeviationPop();
-        E_n_noise.AddRange(E_n.Select(md => md + NormalDistributedRandom.NextDouble(rand, 0, sigma_noise)));
-        data.Remove(E_n);
-        data.Add(E_n_noise);
-      }
-
-      return data;
-    }
-  }
-}
Index: branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/FeynmanBonus16_.cs
===================================================================
--- branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/FeynmanBonus16_.cs	(revision 17675)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/FeynmanBonus16_.cs	(revision 17675)
@@ -0,0 +1,87 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using HeuristicLab.Common;
+using HeuristicLab.Random;
+
+namespace HeuristicLab.Problems.Instances.DataAnalysis {
+  public class FeynmanBonus14 : FeynmanDescriptor {
+    private readonly int testSamples;
+    private readonly int trainingSamples;
+
+    public FeynmanBonus14() : this((int) DateTime.Now.Ticks, 10000, 10000, null) { }
+
+    public FeynmanBonus14(int seed) {
+      Seed            = seed;
+      trainingSamples = 10000;
+      testSamples     = 10000;
+      noiseRatio      = null;
+    }
+
+    public FeynmanBonus14(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(
+          "Jackson 4.60: Ef*cos(theta)*((alpha-1)/(alpha+2)*d**3/r**2-r) | {0} samples | noise ({1})",
+          trainingSamples, noiseRatio == null ? "no noise" : noiseRatio.ToString());
+      }
+    }
+
+    protected override string TargetVariable { get { return noiseRatio == null ? "Volt" : "Volt_noise"; } }
+
+    protected override string[] VariableNames {
+      get { return new[] {"Ef", "theta", "r", "d", "alpha", noiseRatio == null ? "Volt" : "Volt_noise"}; }
+    }
+
+    protected override string[] AllowedInputVariables { get { return new[] {"Ef", "theta", "r", "d", "alpha"}; } }
+
+    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 Ef    = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
+      var theta = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 0, 6).ToList();
+      var r     = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
+      var d     = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
+      var alpha = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
+
+      var Volt = new List<double>();
+
+      data.Add(Ef);
+      data.Add(theta);
+      data.Add(r);
+      data.Add(d);
+      data.Add(alpha);
+      data.Add(Volt);
+
+      for (var i = 0; i < Ef.Count; i++) {
+        var res = Ef[i] * Math.Cos(theta[i]) *
+                  ((alpha[i] - 1) / (alpha[i] + 2) * Math.Pow(d[i], 3) / Math.Pow(r[i], 2) - r[i] );
+        Volt.Add(res);
+      }
+
+      if (noiseRatio != null) {
+        var Volt_noise  = new List<double>();
+        var sigma_noise = (double) noiseRatio * Volt.StandardDeviationPop();
+        Volt_noise.AddRange(Volt.Select(md => md + NormalDistributedRandom.NextDouble(rand, 0, sigma_noise)));
+        data.Remove(Volt);
+        data.Add(Volt_noise);
+      }
+
+      return data;
+    }
+  }
+}
Index: branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/FeynmanBonus17.cs
===================================================================
--- branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/FeynmanBonus17.cs	(revision 17674)
+++ 	(revision )
@@ -1,90 +1,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using HeuristicLab.Common;
-using HeuristicLab.Random;
-
-namespace HeuristicLab.Problems.Instances.DataAnalysis {
-  public class FeynmanBonus17 : FeynmanDescriptor {
-    private readonly int testSamples;
-    private readonly int trainingSamples;
-
-    public FeynmanBonus17() : this((int) DateTime.Now.Ticks, 10000, 10000, null) { }
-
-    public FeynmanBonus17(int seed) {
-      Seed            = seed;
-      trainingSamples = 10000;
-      testSamples     = 10000;
-      noiseRatio      = null;
-    }
-
-    public FeynmanBonus17(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(
-          "Goldstein 12.80: 1/(2*m)*(p**2+m**2*omega**2*x**2*(1+alpha*x/y)) | {0} samples | noise ({1})",
-          trainingSamples, noiseRatio == null ? "no noise" : noiseRatio.ToString());
-      }
-    }
-
-    protected override string TargetVariable { get { return noiseRatio == null ? "E_n" : "E_n_noise"; } }
-
-    protected override string[] VariableNames {
-      get { return new[] {"m", "omega", "p", "y", "x", "alpha", noiseRatio == null ? "E_n" : "E_n_noise"}; }
-    }
-
-    protected override string[] AllowedInputVariables { get { return new[] {"m", "omega", "p", "y", "x", "alpha"}; } }
-
-    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 omega = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
-      var p     = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
-      var y     = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
-      var x     = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
-      var alpha = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
-
-      var E_n = new List<double>();
-
-      data.Add(m);
-      data.Add(omega);
-      data.Add(p);
-      data.Add(y);
-      data.Add(x);
-      data.Add(alpha);
-      data.Add(E_n);
-
-      for (var i = 0; i < m.Count; i++) {
-        var res = 1.0 / (2 * m[i]) * (Math.Pow(p[i], 2) +
-                                      Math.Pow(m[i], 2) * Math.Pow(omega[i], 2) * Math.Pow(x[i], 2) *
-                                      (1 + alpha[i] * x[i] / y[i]));
-        E_n.Add(res);
-      }
-
-      if (noiseRatio != null) {
-        var E_n_noise   = new List<double>();
-        var sigma_noise = (double) noiseRatio * E_n.StandardDeviationPop();
-        E_n_noise.AddRange(E_n.Select(md => md + NormalDistributedRandom.NextDouble(rand, 0, sigma_noise)));
-        data.Remove(E_n);
-        data.Add(E_n_noise);
-      }
-
-      return data;
-    }
-  }
-}
Index: branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/FeynmanBonus17_.cs
===================================================================
--- branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/FeynmanBonus17_.cs	(revision 17675)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/FeynmanBonus17_.cs	(revision 17675)
@@ -0,0 +1,85 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using HeuristicLab.Common;
+using HeuristicLab.Random;
+
+namespace HeuristicLab.Problems.Instances.DataAnalysis {
+  public class FeynmanBonus15 : FeynmanDescriptor {
+    private readonly int testSamples;
+    private readonly int trainingSamples;
+
+    public FeynmanBonus15() : this((int) DateTime.Now.Ticks, 10000, 10000, null) { }
+
+    public FeynmanBonus15(int seed) {
+      Seed            = seed;
+      trainingSamples = 10000;
+      testSamples     = 10000;
+      noiseRatio      = null;
+    }
+
+    public FeynmanBonus15(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(
+          "Jackson 11.38: sqrt(1-v**2/c**2)*omega/(1+v/c*cos(theta)) | {0} samples | noise ({1})",
+          trainingSamples, noiseRatio == null ? "no noise" : noiseRatio.ToString());
+      }
+    }
+
+    protected override string TargetVariable { get { return noiseRatio == null ? "omega_0" : "omega_0_noise"; } }
+
+    protected override string[] VariableNames {
+      get { return new[] {"c", "v", "omega", "theta", noiseRatio == null ? "omega_0" : "omega_0_noise"}; }
+    }
+
+    protected override string[] AllowedInputVariables { get { return new[] {"c", "v", "omega", "theta"}; } }
+
+    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 c     = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 5, 20).ToList();
+      var v     = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 3).ToList();
+      var omega = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
+      var theta = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 0, 6).ToList();
+
+      var omega_0 = new List<double>();
+
+      data.Add(c);
+      data.Add(v);
+      data.Add(omega);
+      data.Add(theta);
+      data.Add(omega_0);
+
+      for (var i = 0; i < c.Count; i++) {
+        var res = Math.Sqrt(1 - Math.Pow(v[i], 2) / Math.Pow(c[i], 2)) * omega[i] /
+                  (1 + v[i] / c[i] * Math.Cos(theta[i]));
+        omega_0.Add(res);
+      }
+
+      if (noiseRatio != null) {
+        var omega_0_noise = new List<double>();
+        var sigma_noise   = (double) noiseRatio * omega_0.StandardDeviationPop();
+        omega_0_noise.AddRange(omega_0.Select(md => md + NormalDistributedRandom.NextDouble(rand, 0, sigma_noise)));
+        data.Remove(omega_0);
+        data.Add(omega_0_noise);
+      }
+
+      return data;
+    }
+  }
+}
Index: branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/FeynmanBonus2.cs
===================================================================
--- branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/FeynmanBonus2.cs	(revision 17674)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/FeynmanBonus2.cs	(revision 17675)
@@ -6,11 +6,11 @@
 
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
-  public class FeynmanBonus2 : FeynmanDescriptor {
+  public class FeynmanBonus7 : FeynmanDescriptor {
     private readonly int testSamples;
     private readonly int trainingSamples;
 
-    public FeynmanBonus2() : this((int) DateTime.Now.Ticks, 10000, 10000, null) { }
+    public FeynmanBonus7() : this((int) DateTime.Now.Ticks, 10000, 10000, null) { }
 
-    public FeynmanBonus2(int seed) {
+    public FeynmanBonus7(int seed) {
       Seed            = seed;
       trainingSamples = 10000;
@@ -19,5 +19,5 @@
     }
 
-    public FeynmanBonus2(int seed, int trainingSamples, int testSamples, double? noiseRatio) {
+    public FeynmanBonus7(int seed, int trainingSamples, int testSamples, double? noiseRatio) {
       Seed                 = seed;
       this.trainingSamples = trainingSamples;
@@ -28,19 +28,16 @@
     public override string Name {
       get {
-        return string.Format(
-          "Goldstein 3.55: m*k_G/L**2*(1+sqrt(1+2*E_n*L**2/(m*k_G**2))*cos(theta1-theta2)) | {0} samples | noise ({1})",
+        return string.Format("Friedman Equation: sqrt(8*pi*G*rho/3-alpha*c**2/d**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 TargetVariable { get { return noiseRatio == null ? "H_G" : "H_G_noise"; } }
 
     protected override string[] VariableNames {
-      get { return new[] {"m", "k_G", "L", "E_n", "theta1", "theta2", noiseRatio == null ? "k" : "k_noise"}; }
+      get { return new[] {"G", "rho", "alpha", "c", "d", noiseRatio == null ? "H_G" : "H_G_noise"}; }
     }
 
-    protected override string[] AllowedInputVariables {
-      get { return new[] {"m", "k_G", "L", "E_n", "theta1", "theta2"}; }
-    }
+    protected override string[] AllowedInputVariables { get { return new[] {"G", "rho", "alpha", "c", "d"}; } }
 
     public int Seed { get; private set; }
@@ -54,35 +51,31 @@
       var rand = new MersenneTwister((uint) Seed);
 
-      var data   = new List<List<double>>();
-      var m      = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 3).ToList();
-      var k_G    = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 3).ToList();
-      var L      = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 3).ToList();
-      var E_n    = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 3).ToList();
-      var theta1 = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 0, 6).ToList();
-      var theta2 = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 0, 6).ToList();
+      var data  = new List<List<double>>();
+      var G     = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 3).ToList();
+      var rho   = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 3).ToList();
+      var alpha = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 2).ToList();
+      var c     = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 2).ToList();
+      var d     = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 3).ToList();
 
-      var k = new List<double>();
+      var H_G = new List<double>();
 
-      data.Add(m);
-      data.Add(k_G);
-      data.Add(L);
-      data.Add(E_n);
-      data.Add(theta1);
-      data.Add(theta2);
-      data.Add(k);
+      data.Add(G);
+      data.Add(rho);
+      data.Add(alpha);
+      data.Add(c);
+      data.Add(d);
+      data.Add(H_G);
 
-      for (var i = 0; i < m.Count; i++) {
-        var res = m[i] * k_G[i] / Math.Pow(L[i], 2) *
-                  (1 + Math.Sqrt(1 + 2 * E_n[i] * Math.Pow(L[i], 2) / (m[i] * Math.Pow(k_G[i], 2))) *
-                   Math.Cos(theta1[i] - theta2[i]));
-        k.Add(res);
+      for (var i = 0; i < G.Count; i++) {
+        var res = Math.Sqrt(8 * Math.PI * G[i] * rho[i] / 3 - alpha[i] * Math.Pow(c[i], 2) / Math.Pow(d[i], 2));
+        H_G.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);
+        var H_G_noise   = new List<double>();
+        var sigma_noise = (double) noiseRatio * H_G.StandardDeviationPop();
+        H_G_noise.AddRange(H_G.Select(md => md + NormalDistributedRandom.NextDouble(rand, 0, sigma_noise)));
+        data.Remove(H_G);
+        data.Add(H_G_noise);
       }
 
Index: branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/FeynmanBonus3.cs
===================================================================
--- branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/FeynmanBonus3.cs	(revision 17674)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/FeynmanBonus3.cs	(revision 17675)
@@ -6,11 +6,11 @@
 
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
-  public class FeynmanBonus3 : FeynmanDescriptor {
+  public class FeynmanBonus8 : FeynmanDescriptor {
     private readonly int testSamples;
     private readonly int trainingSamples;
 
-    public FeynmanBonus3() : this((int) DateTime.Now.Ticks, 10000, 10000, null) { }
+    public FeynmanBonus8() : this((int) DateTime.Now.Ticks, 10000, 10000, null) { }
 
-    public FeynmanBonus3(int seed) {
+    public FeynmanBonus8(int seed) {
       Seed            = seed;
       trainingSamples = 10000;
@@ -19,5 +19,5 @@
     }
 
-    public FeynmanBonus3(int seed, int trainingSamples, int testSamples, double? noiseRatio) {
+    public FeynmanBonus8(int seed, int trainingSamples, int testSamples, double? noiseRatio) {
       Seed                 = seed;
       this.trainingSamples = trainingSamples;
@@ -29,16 +29,16 @@
       get {
         return string.Format(
-          "Goldstein 3.64: d*(1-alpha**2)/(1+alpha*cos(theta1-theta2)) | {0} samples | noise ({1})",
-          trainingSamples, noiseRatio == null ? "no noise" : noiseRatio.ToString());
+          "Compton Scattering: E_n/(1+E_n/(m*c**2)*(1-cos(theta))) | {0} samples | noise ({1})", trainingSamples,
+          noiseRatio == null ? "no noise" : noiseRatio.ToString());
       }
     }
 
-    protected override string TargetVariable { get { return noiseRatio == null ? "r" : "r_noise"; } }
+    protected override string TargetVariable { get { return noiseRatio == null ? "K" : "K_noise"; } }
 
     protected override string[] VariableNames {
-      get { return new[] {"d", "alpha", "theta1", "theta2", noiseRatio == null ? "r" : "r_noise"}; }
+      get { return new[] {"E_n", "m", "c", "theta", noiseRatio == null ? "K" : "K_noise"}; }
     }
 
-    protected override string[] AllowedInputVariables { get { return new[] {"d", "alpha", "theta1", "theta2"}; } }
+    protected override string[] AllowedInputVariables { get { return new[] {"E_n", "m", "c", "theta"}; } }
 
     public int Seed { get; private set; }
@@ -52,29 +52,29 @@
       var rand = new MersenneTwister((uint) Seed);
 
-      var data   = new List<List<double>>();
-      var d      = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 3).ToList();
-      var alpha  = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 2, 4).ToList();
-      var theta1 = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 4, 5).ToList();
-      var theta2 = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 4, 5).ToList();
+      var data  = new List<List<double>>();
+      var E_n   = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 3).ToList();
+      var m     = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 3).ToList();
+      var c     = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 3).ToList();
+      var theta = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 3).ToList();
 
-      var r = new List<double>();
+      var K = new List<double>();
 
-      data.Add(d);
-      data.Add(alpha);
-      data.Add(theta1);
-      data.Add(theta2);
-      data.Add(r);
+      data.Add(E_n);
+      data.Add(m);
+      data.Add(c);
+      data.Add(theta);
+      data.Add(K);
 
-      for (var i = 0; i < d.Count; i++) {
-        var res = d[i] * (1 - Math.Pow(alpha[i], 2)) / (1 + alpha[i] * Math.Cos(theta1[i] - theta2[i]));
-        r.Add(res);
+      for (var i = 0; i < E_n.Count; i++) {
+        var res = E_n[i] / (1 + E_n[i] / (m[i] * Math.Pow(c[i], 2)) * (1 - Math.Cos(theta[i])));
+        K.Add(res);
       }
 
       if (noiseRatio != null) {
-        var r_noise     = new List<double>();
-        var sigma_noise = (double) noiseRatio * r.StandardDeviationPop();
-        r_noise.AddRange(r.Select(md => md + NormalDistributedRandom.NextDouble(rand, 0, sigma_noise)));
-        data.Remove(r);
-        data.Add(r_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/FeynmanBonus4.cs
===================================================================
--- branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/FeynmanBonus4.cs	(revision 17674)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/FeynmanBonus4.cs	(revision 17675)
@@ -6,11 +6,11 @@
 
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
-  public class FeynmanBonus4 : FeynmanDescriptor {
+  public class FeynmanBonus9 : FeynmanDescriptor {
     private readonly int testSamples;
     private readonly int trainingSamples;
 
-    public FeynmanBonus4() : this((int) DateTime.Now.Ticks, 10000, 10000, null) { }
+    public FeynmanBonus9() : this((int) DateTime.Now.Ticks, 10000, 10000, null) { }
 
-    public FeynmanBonus4(int seed) {
+    public FeynmanBonus9(int seed) {
       Seed            = seed;
       trainingSamples = 10000;
@@ -19,5 +19,5 @@
     }
 
-    public FeynmanBonus4(int seed, int trainingSamples, int testSamples, double? noiseRatio) {
+    public FeynmanBonus9(int seed, int trainingSamples, int testSamples, double? noiseRatio) {
       Seed                 = seed;
       this.trainingSamples = trainingSamples;
@@ -28,16 +28,17 @@
     public override string Name {
       get {
-        return string.Format("Goldstein 3.16: sqrt(2/m*(E_n-U-L**2/(2*m*r**2))) | {0} samples | noise ({1})",
+        return string.Format(
+          "Radiated gravitational wave power: -32/5*G**4/c**5*(m1*m2)**2*(m1+m2)/r**5 | {0} samples | noise ({1})",
           trainingSamples, noiseRatio == null ? "no noise" : noiseRatio.ToString());
       }
     }
 
-    protected override string TargetVariable { get { return noiseRatio == null ? "v" : "v_noise"; } }
+    protected override string TargetVariable { get { return noiseRatio == null ? "Pwr" : "Pwr_noise"; } }
 
     protected override string[] VariableNames {
-      get { return new[] {"m", "E_n", "U", "L", "r", noiseRatio == null ? "v" : "v_noise"}; }
+      get { return new[] {"G", "c", "m1", "m2", "r", noiseRatio == null ? "Pwr" : "Pwr_noise"}; }
     }
 
-    protected override string[] AllowedInputVariables { get { return new[] {"m", "E_n", "U", "L", "r"}; } }
+    protected override string[] AllowedInputVariables { get { return new[] {"G", "c", "m1", "m2", "r"}; } }
 
     public int Seed { get; private set; }
@@ -52,30 +53,31 @@
 
       var data = new List<List<double>>();
-      var m    = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 3).ToList();
-      var E_n  = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 8, 12).ToList();
-      var U    = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 3).ToList();
-      var L    = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 3).ToList();
-      var r    = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 3).ToList();
+      var G    = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 2).ToList();
+      var c    = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 2).ToList();
+      var m1   = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
+      var m2   = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
+      var r    = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 2).ToList();
 
-      var v = new List<double>();
+      var Pwr = new List<double>();
 
-      data.Add(m);
-      data.Add(E_n);
-      data.Add(U);
-      data.Add(L);
+      data.Add(G);
+      data.Add(c);
+      data.Add(m1);
+      data.Add(m2);
       data.Add(r);
-      data.Add(v);
+      data.Add(Pwr);
 
-      for (var i = 0; i < m.Count; i++) {
-        var res = Math.Sqrt(2 / m[i] * (E_n[i] - U[i] - Math.Pow(L[i], 2) / (2 * m[i] * Math.Pow(r[i], 2))));
-        v.Add(res);
+      for (var i = 0; i < G.Count; i++) {
+        var res = -32.0 / 5 * Math.Pow(G[i], 4) / Math.Pow(c[i], 5) * Math.Pow(m1[i] * m2[i], 2) * (m1[i] + m2[i]) /
+                  Math.Pow(r[i], 5);
+        Pwr.Add(res);
       }
 
       if (noiseRatio != null) {
-        var v_noise     = new List<double>();
-        var sigma_noise = (double) noiseRatio * v.StandardDeviationPop();
-        v_noise.AddRange(v.Select(md => md + NormalDistributedRandom.NextDouble(rand, 0, sigma_noise)));
-        data.Remove(v);
-        data.Add(v_noise);
+        var Pwr_noise   = new List<double>();
+        var sigma_noise = (double) noiseRatio * Pwr.StandardDeviationPop();
+        Pwr_noise.AddRange(Pwr.Select(md => md + NormalDistributedRandom.NextDouble(rand, 0, sigma_noise)));
+        data.Remove(Pwr);
+        data.Add(Pwr_noise);
       }
 
Index: branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/FeynmanBonus5.cs
===================================================================
--- branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/FeynmanBonus5.cs	(revision 17674)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/FeynmanBonus5.cs	(revision 17675)
@@ -6,11 +6,11 @@
 
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
-  public class FeynmanBonus5 : FeynmanDescriptor {
+  public class FeynmanBonus10 : FeynmanDescriptor {
     private readonly int testSamples;
     private readonly int trainingSamples;
 
-    public FeynmanBonus5() : this((int) DateTime.Now.Ticks, 10000, 10000, null) { }
+    public FeynmanBonus10() : this((int) DateTime.Now.Ticks, 10000, 10000, null) { }
 
-    public FeynmanBonus5(int seed) {
+    public FeynmanBonus10(int seed) {
       Seed            = seed;
       trainingSamples = 10000;
@@ -19,5 +19,5 @@
     }
 
-    public FeynmanBonus5(int seed, int trainingSamples, int testSamples, double? noiseRatio) {
+    public FeynmanBonus10(int seed, int trainingSamples, int testSamples, double? noiseRatio) {
       Seed                 = seed;
       this.trainingSamples = trainingSamples;
@@ -28,16 +28,17 @@
     public override string Name {
       get {
-        return string.Format("Goldstein 3.74: 2*pi*d**(3/2)/sqrt(G*(m1+m2)) | {0} samples | noise ({1})",
+        return string.Format(
+          "Relativistic aberation: arccos((cos(theta2)-v/c)/(1-v/c*cos(theta2))) | {0} samples | noise ({1})",
           trainingSamples, noiseRatio == null ? "no noise" : noiseRatio.ToString());
       }
     }
 
-    protected override string TargetVariable { get { return noiseRatio == null ? "t" : "t_noise"; } }
+    protected override string TargetVariable { get { return noiseRatio == null ? "theta1" : "theta1_noise"; } }
 
     protected override string[] VariableNames {
-      get { return new[] {"d", "G", "m1", "m2", noiseRatio == null ? "t" : "t_noise"}; }
+      get { return new[] {"c", "v", "theta2", noiseRatio == null ? "theta1" : "theta1_noise"}; }
     }
 
-    protected override string[] AllowedInputVariables { get { return new[] {"d", "G", "m1", "m2"}; } }
+    protected override string[] AllowedInputVariables { get { return new[] {"c", "v", "theta2"}; } }
 
     public int Seed { get; private set; }
@@ -51,29 +52,27 @@
       var rand = new MersenneTwister((uint) Seed);
 
-      var data = new List<List<double>>();
-      var d    = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 3).ToList();
-      var G    = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 3).ToList();
-      var m1   = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 3).ToList();
-      var m2   = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 3).ToList();
+      var data   = new List<List<double>>();
+      var c      = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 4, 6).ToList();
+      var v      = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 3).ToList();
+      var theta2 = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 3).ToList();
 
-      var t = new List<double>();
+      var theta1 = new List<double>();
 
-      data.Add(d);
-      data.Add(G);
-      data.Add(m1);
-      data.Add(m2);
-      data.Add(t);
+      data.Add(c);
+      data.Add(v);
+      data.Add(theta2);
+      data.Add(theta1);
 
-      for (var i = 0; i < d.Count; i++) {
-        var res = 2 * Math.PI * Math.Pow(d[i], 3.0 / 2) / Math.Sqrt(G[i] * (m1[i] + m2[i]));
-        t.Add(res);
+      for (var i = 0; i < c.Count; i++) {
+        var res = Math.Acos((Math.Cos(theta2[i]) - v[i] / c[i]) / (1 - v[i] / c[i] * Math.Cos(theta2[i])));
+        theta1.Add(res);
       }
 
       if (noiseRatio != null) {
-        var t_noise     = new List<double>();
-        var sigma_noise = (double) noiseRatio * t.StandardDeviationPop();
-        t_noise.AddRange(t.Select(md => md + NormalDistributedRandom.NextDouble(rand, 0, sigma_noise)));
-        data.Remove(t);
-        data.Add(t_noise);
+        var theta1_noise = new List<double>();
+        var sigma_noise  = (double) noiseRatio * theta1.StandardDeviationPop();
+        theta1_noise.AddRange(theta1.Select(md => md + NormalDistributedRandom.NextDouble(rand, 0, sigma_noise)));
+        data.Remove(theta1);
+        data.Add(theta1_noise);
       }
 
Index: branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/FeynmanBonus6.cs
===================================================================
--- branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/FeynmanBonus6.cs	(revision 17674)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/FeynmanBonus6.cs	(revision 17675)
@@ -6,11 +6,11 @@
 
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
-  public class FeynmanBonus6 : FeynmanDescriptor {
+  public class FeynmanBonus11 : FeynmanDescriptor {
     private readonly int testSamples;
     private readonly int trainingSamples;
 
-    public FeynmanBonus6() : this((int) DateTime.Now.Ticks, 10000, 10000, null) { }
+    public FeynmanBonus11() : this((int) DateTime.Now.Ticks, 10000, 10000, null) { }
 
-    public FeynmanBonus6(int seed) {
+    public FeynmanBonus11(int seed) {
       Seed            = seed;
       trainingSamples = 10000;
@@ -19,5 +19,5 @@
     }
 
-    public FeynmanBonus6(int seed, int trainingSamples, int testSamples, double? noiseRatio) {
+    public FeynmanBonus11(int seed, int trainingSamples, int testSamples, double? noiseRatio) {
       Seed                 = seed;
       this.trainingSamples = trainingSamples;
@@ -29,20 +29,16 @@
       get {
         return string.Format(
-          "Goldstein 3.99: sqrt(1+2*epsilon**2*E_n*L**2/(m*(Z_1*Z_2*q**2)**2)) | {0} samples | noise ({1})",
+          "N-slit diffraction: I_0*(sin(alpha/2)*sin(n*delta/2)/(alpha/2*sin(delta/2)))**2 | {0} samples | noise ({1})",
           trainingSamples, noiseRatio == null ? "no noise" : noiseRatio.ToString());
       }
     }
 
-    protected override string TargetVariable { get { return noiseRatio == null ? "alpha" : "alpha_noise"; } }
+    protected override string TargetVariable { get { return noiseRatio == null ? "I" : "I_noise"; } }
 
     protected override string[] VariableNames {
-      get {
-        return new[] {"epsilon", "L", "m", "Z_1", "Z_2", "q", "E_n", noiseRatio == null ? "alpha" : "alpha_noise"};
-      }
+      get { return new[] {"I_0", "alpha", "delta", "n", noiseRatio == null ? "I" : "I_noise"}; }
     }
 
-    protected override string[] AllowedInputVariables {
-      get { return new[] {"epsilon", "L", "m", "Z_1", "Z_2", "q", "E_n"}; }
-    }
+    protected override string[] AllowedInputVariables { get { return new[] {"I_0", "alpha", "delta", "n"}; } }
 
     public int Seed { get; private set; }
@@ -56,36 +52,31 @@
       var rand = new MersenneTwister((uint) Seed);
 
-      var data    = new List<List<double>>();
-      var epsilon = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 3).ToList();
-      var L       = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 3).ToList();
-      var m       = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 3).ToList();
-      var Z_1     = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 3).ToList();
-      var Z_2     = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 3).ToList();
-      var q       = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 3).ToList();
-      var E_n     = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 3).ToList();
+      var data  = new List<List<double>>();
+      var I_0   = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 3).ToList();
+      var alpha = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 3).ToList();
+      var delta = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 3).ToList();
+      var n     = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 2).ToList();
 
-      var alpha = new List<double>();
+      var I = new List<double>();
 
-      data.Add(epsilon);
-      data.Add(L);
-      data.Add(m);
-      data.Add(Z_1);
-      data.Add(Z_2);
-      data.Add(q);
-      data.Add(E_n);
+      data.Add(I_0);
       data.Add(alpha);
+      data.Add(delta);
+      data.Add(n);
+      data.Add(I);
 
-      for (var i = 0; i < epsilon.Count; i++) {
-        var res = Math.Sqrt(1 + 2 * Math.Pow(epsilon[i], 2) * E_n[i] * Math.Pow(L[i], 2) /
-                            (m[i] * Math.Pow(Z_1[i] * Z_2[i] * Math.Pow(q[i], 2), 2)));
-        alpha.Add(res);
+      for (var i = 0; i < I_0.Count; i++) {
+        var res = I_0[i] * Math.Pow(
+                    Math.Sin(alpha[i] / 2) * Math.Sin(n[i] * delta[i] / 2) / (alpha[i] / 2 * Math.Sin(delta[i] / 2)),
+                    2);
+        I.Add(res);
       }
 
       if (noiseRatio != null) {
-        var alpha_noise = new List<double>();
-        var sigma_noise = (double) noiseRatio * alpha.StandardDeviationPop();
-        alpha_noise.AddRange(alpha.Select(md => md + NormalDistributedRandom.NextDouble(rand, 0, sigma_noise)));
-        data.Remove(alpha);
-        data.Add(alpha_noise);
+        var I_noise     = new List<double>();
+        var sigma_noise = (double) noiseRatio * I.StandardDeviationPop();
+        I_noise.AddRange(I.Select(md => md + NormalDistributedRandom.NextDouble(rand, 0, sigma_noise)));
+        data.Remove(I);
+        data.Add(I_noise);
       }
 
Index: branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/FeynmanBonus7.cs
===================================================================
--- branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/FeynmanBonus7.cs	(revision 17674)
+++ 	(revision )
@@ -1,85 +1,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using HeuristicLab.Common;
-using HeuristicLab.Random;
-
-namespace HeuristicLab.Problems.Instances.DataAnalysis {
-  public class FeynmanBonus7 : FeynmanDescriptor {
-    private readonly int testSamples;
-    private readonly int trainingSamples;
-
-    public FeynmanBonus7() : this((int) DateTime.Now.Ticks, 10000, 10000, null) { }
-
-    public FeynmanBonus7(int seed) {
-      Seed            = seed;
-      trainingSamples = 10000;
-      testSamples     = 10000;
-      noiseRatio      = null;
-    }
-
-    public FeynmanBonus7(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("Friedman Equation: sqrt(8*pi*G*rho/3-alpha*c**2/d**2) | {0} samples | noise ({1})",
-          trainingSamples, noiseRatio == null ? "no noise" : noiseRatio.ToString());
-      }
-    }
-
-    protected override string TargetVariable { get { return noiseRatio == null ? "H_G" : "H_G_noise"; } }
-
-    protected override string[] VariableNames {
-      get { return new[] {"G", "rho", "alpha", "c", "d", noiseRatio == null ? "H_G" : "H_G_noise"}; }
-    }
-
-    protected override string[] AllowedInputVariables { get { return new[] {"G", "rho", "alpha", "c", "d"}; } }
-
-    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 G     = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 3).ToList();
-      var rho   = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 3).ToList();
-      var alpha = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 2).ToList();
-      var c     = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 2).ToList();
-      var d     = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 3).ToList();
-
-      var H_G = new List<double>();
-
-      data.Add(G);
-      data.Add(rho);
-      data.Add(alpha);
-      data.Add(c);
-      data.Add(d);
-      data.Add(H_G);
-
-      for (var i = 0; i < G.Count; i++) {
-        var res = Math.Sqrt(8 * Math.PI * G[i] * rho[i] / 3 - alpha[i] * Math.Pow(c[i], 2) / Math.Pow(d[i], 2));
-        H_G.Add(res);
-      }
-
-      if (noiseRatio != null) {
-        var H_G_noise   = new List<double>();
-        var sigma_noise = (double) noiseRatio * H_G.StandardDeviationPop();
-        H_G_noise.AddRange(H_G.Select(md => md + NormalDistributedRandom.NextDouble(rand, 0, sigma_noise)));
-        data.Remove(H_G);
-        data.Add(H_G_noise);
-      }
-
-      return data;
-    }
-  }
-}
Index: branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/FeynmanBonus7_.cs
===================================================================
--- branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/FeynmanBonus7_.cs	(revision 17675)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/FeynmanBonus7_.cs	(revision 17675)
@@ -0,0 +1,85 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using HeuristicLab.Common;
+using HeuristicLab.Random;
+
+namespace HeuristicLab.Problems.Instances.DataAnalysis {
+  public class FeynmanBonus4 : FeynmanDescriptor {
+    private readonly int testSamples;
+    private readonly int trainingSamples;
+
+    public FeynmanBonus4() : this((int) DateTime.Now.Ticks, 10000, 10000, null) { }
+
+    public FeynmanBonus4(int seed) {
+      Seed            = seed;
+      trainingSamples = 10000;
+      testSamples     = 10000;
+      noiseRatio      = null;
+    }
+
+    public FeynmanBonus4(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("Goldstein 3.16: sqrt(2/m*(E_n-U-L**2/(2*m*r**2))) | {0} samples | noise ({1})",
+          trainingSamples, noiseRatio == null ? "no noise" : noiseRatio.ToString());
+      }
+    }
+
+    protected override string TargetVariable { get { return noiseRatio == null ? "v" : "v_noise"; } }
+
+    protected override string[] VariableNames {
+      get { return new[] {"m", "E_n", "U", "L", "r", noiseRatio == null ? "v" : "v_noise"}; }
+    }
+
+    protected override string[] AllowedInputVariables { get { return new[] {"m", "E_n", "U", "L", "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 m    = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 3).ToList();
+      var E_n  = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 8, 12).ToList();
+      var U    = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 3).ToList();
+      var L    = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 3).ToList();
+      var r    = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 3).ToList();
+
+      var v = new List<double>();
+
+      data.Add(m);
+      data.Add(E_n);
+      data.Add(U);
+      data.Add(L);
+      data.Add(r);
+      data.Add(v);
+
+      for (var i = 0; i < m.Count; i++) {
+        var res = Math.Sqrt(2 / m[i] * (E_n[i] - U[i] - Math.Pow(L[i], 2) / (2 * m[i] * Math.Pow(r[i], 2))));
+        v.Add(res);
+      }
+
+      if (noiseRatio != null) {
+        var v_noise     = new List<double>();
+        var sigma_noise = (double) noiseRatio * v.StandardDeviationPop();
+        v_noise.AddRange(v.Select(md => md + NormalDistributedRandom.NextDouble(rand, 0, sigma_noise)));
+        data.Remove(v);
+        data.Add(v_noise);
+      }
+
+      return data;
+    }
+  }
+}
Index: branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/FeynmanBonus8.cs
===================================================================
--- branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/FeynmanBonus8.cs	(revision 17674)
+++ 	(revision )
@@ -1,84 +1,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using HeuristicLab.Common;
-using HeuristicLab.Random;
-
-namespace HeuristicLab.Problems.Instances.DataAnalysis {
-  public class FeynmanBonus8 : FeynmanDescriptor {
-    private readonly int testSamples;
-    private readonly int trainingSamples;
-
-    public FeynmanBonus8() : this((int) DateTime.Now.Ticks, 10000, 10000, null) { }
-
-    public FeynmanBonus8(int seed) {
-      Seed            = seed;
-      trainingSamples = 10000;
-      testSamples     = 10000;
-      noiseRatio      = null;
-    }
-
-    public FeynmanBonus8(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(
-          "Compton Scattering: E_n/(1+E_n/(m*c**2)*(1-cos(theta))) | {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[] {"E_n", "m", "c", "theta", noiseRatio == null ? "K" : "K_noise"}; }
-    }
-
-    protected override string[] AllowedInputVariables { get { return new[] {"E_n", "m", "c", "theta"}; } }
-
-    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 E_n   = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 3).ToList();
-      var m     = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 3).ToList();
-      var c     = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 3).ToList();
-      var theta = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 3).ToList();
-
-      var K = new List<double>();
-
-      data.Add(E_n);
-      data.Add(m);
-      data.Add(c);
-      data.Add(theta);
-      data.Add(K);
-
-      for (var i = 0; i < E_n.Count; i++) {
-        var res = E_n[i] / (1 + E_n[i] / (m[i] * Math.Pow(c[i], 2)) * (1 - Math.Cos(theta[i])));
-        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/FeynmanBonus8_.cs
===================================================================
--- branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/FeynmanBonus8_.cs	(revision 17675)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/FeynmanBonus8_.cs	(revision 17675)
@@ -0,0 +1,92 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using HeuristicLab.Common;
+using HeuristicLab.Random;
+
+namespace HeuristicLab.Problems.Instances.DataAnalysis {
+  public class FeynmanBonus2 : FeynmanDescriptor {
+    private readonly int testSamples;
+    private readonly int trainingSamples;
+
+    public FeynmanBonus2() : this((int) DateTime.Now.Ticks, 10000, 10000, null) { }
+
+    public FeynmanBonus2(int seed) {
+      Seed            = seed;
+      trainingSamples = 10000;
+      testSamples     = 10000;
+      noiseRatio      = null;
+    }
+
+    public FeynmanBonus2(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(
+          "Goldstein 3.55: m*k_G/L**2*(1+sqrt(1+2*E_n*L**2/(m*k_G**2))*cos(theta1-theta2)) | {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", "k_G", "L", "E_n", "theta1", "theta2", noiseRatio == null ? "k" : "k_noise"}; }
+    }
+
+    protected override string[] AllowedInputVariables {
+      get { return new[] {"m", "k_G", "L", "E_n", "theta1", "theta2"}; }
+    }
+
+    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, 3).ToList();
+      var k_G    = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 3).ToList();
+      var L      = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 3).ToList();
+      var E_n    = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 3).ToList();
+      var theta1 = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 0, 6).ToList();
+      var theta2 = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 0, 6).ToList();
+
+      var k = new List<double>();
+
+      data.Add(m);
+      data.Add(k_G);
+      data.Add(L);
+      data.Add(E_n);
+      data.Add(theta1);
+      data.Add(theta2);
+      data.Add(k);
+
+      for (var i = 0; i < m.Count; i++) {
+        var res = m[i] * k_G[i] / Math.Pow(L[i], 2) *
+                  (1 + Math.Sqrt(1 + 2 * E_n[i] * Math.Pow(L[i], 2) / (m[i] * Math.Pow(k_G[i], 2))) *
+                   Math.Cos(theta1[i] - theta2[i]));
+        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/FeynmanBonus9.cs
===================================================================
--- branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/FeynmanBonus9.cs	(revision 17674)
+++ 	(revision )
@@ -1,87 +1,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using HeuristicLab.Common;
-using HeuristicLab.Random;
-
-namespace HeuristicLab.Problems.Instances.DataAnalysis {
-  public class FeynmanBonus9 : FeynmanDescriptor {
-    private readonly int testSamples;
-    private readonly int trainingSamples;
-
-    public FeynmanBonus9() : this((int) DateTime.Now.Ticks, 10000, 10000, null) { }
-
-    public FeynmanBonus9(int seed) {
-      Seed            = seed;
-      trainingSamples = 10000;
-      testSamples     = 10000;
-      noiseRatio      = null;
-    }
-
-    public FeynmanBonus9(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(
-          "Radiated gravitational wave power: -32/5*G**4/c**5*(m1*m2)**2*(m1+m2)/r**5 | {0} samples | noise ({1})",
-          trainingSamples, noiseRatio == null ? "no noise" : noiseRatio.ToString());
-      }
-    }
-
-    protected override string TargetVariable { get { return noiseRatio == null ? "Pwr" : "Pwr_noise"; } }
-
-    protected override string[] VariableNames {
-      get { return new[] {"G", "c", "m1", "m2", "r", noiseRatio == null ? "Pwr" : "Pwr_noise"}; }
-    }
-
-    protected override string[] AllowedInputVariables { get { return new[] {"G", "c", "m1", "m2", "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 G    = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 2).ToList();
-      var c    = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 2).ToList();
-      var m1   = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
-      var m2   = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList();
-      var r    = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 2).ToList();
-
-      var Pwr = new List<double>();
-
-      data.Add(G);
-      data.Add(c);
-      data.Add(m1);
-      data.Add(m2);
-      data.Add(r);
-      data.Add(Pwr);
-
-      for (var i = 0; i < G.Count; i++) {
-        var res = -32.0 / 5 * Math.Pow(G[i], 4) / Math.Pow(c[i], 5) * Math.Pow(m1[i] * m2[i], 2) * (m1[i] + m2[i]) /
-                  Math.Pow(r[i], 5);
-        Pwr.Add(res);
-      }
-
-      if (noiseRatio != null) {
-        var Pwr_noise   = new List<double>();
-        var sigma_noise = (double) noiseRatio * Pwr.StandardDeviationPop();
-        Pwr_noise.AddRange(Pwr.Select(md => md + NormalDistributedRandom.NextDouble(rand, 0, sigma_noise)));
-        data.Remove(Pwr);
-        data.Add(Pwr_noise);
-      }
-
-      return data;
-    }
-  }
-}
Index: branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/FeynmanBonus9_.cs
===================================================================
--- branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/FeynmanBonus9_.cs	(revision 17675)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/FeynmanBonus9_.cs	(revision 17675)
@@ -0,0 +1,84 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using HeuristicLab.Common;
+using HeuristicLab.Random;
+
+namespace HeuristicLab.Problems.Instances.DataAnalysis {
+  public class FeynmanBonus3 : FeynmanDescriptor {
+    private readonly int testSamples;
+    private readonly int trainingSamples;
+
+    public FeynmanBonus3() : this((int) DateTime.Now.Ticks, 10000, 10000, null) { }
+
+    public FeynmanBonus3(int seed) {
+      Seed            = seed;
+      trainingSamples = 10000;
+      testSamples     = 10000;
+      noiseRatio      = null;
+    }
+
+    public FeynmanBonus3(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(
+          "Goldstein 3.64: d*(1-alpha**2)/(1+alpha*cos(theta1-theta2)) | {0} samples | noise ({1})",
+          trainingSamples, noiseRatio == null ? "no noise" : noiseRatio.ToString());
+      }
+    }
+
+    protected override string TargetVariable { get { return noiseRatio == null ? "r" : "r_noise"; } }
+
+    protected override string[] VariableNames {
+      get { return new[] {"d", "alpha", "theta1", "theta2", noiseRatio == null ? "r" : "r_noise"}; }
+    }
+
+    protected override string[] AllowedInputVariables { get { return new[] {"d", "alpha", "theta1", "theta2"}; } }
+
+    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 d      = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 3).ToList();
+      var alpha  = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 2, 4).ToList();
+      var theta1 = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 4, 5).ToList();
+      var theta2 = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 4, 5).ToList();
+
+      var r = new List<double>();
+
+      data.Add(d);
+      data.Add(alpha);
+      data.Add(theta1);
+      data.Add(theta2);
+      data.Add(r);
+
+      for (var i = 0; i < d.Count; i++) {
+        var res = d[i] * (1 - Math.Pow(alpha[i], 2)) / (1 + alpha[i] * Math.Cos(theta1[i] - theta2[i]));
+        r.Add(res);
+      }
+
+      if (noiseRatio != null) {
+        var r_noise     = new List<double>();
+        var sigma_noise = (double) noiseRatio * r.StandardDeviationPop();
+        r_noise.AddRange(r.Select(md => md + NormalDistributedRandom.NextDouble(rand, 0, sigma_noise)));
+        data.Remove(r);
+        data.Add(r_noise);
+      }
+
+      return data;
+    }
+  }
+}
