Index: branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/FeynmanBonus1.cs
===================================================================
--- branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/FeynmanBonus1.cs	(revision 17647)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/FeynmanBonus1.cs	(revision 17649)
@@ -2,4 +2,5 @@
 using System.Collections.Generic;
 using System.Linq;
+using HeuristicLab.Common;
 using HeuristicLab.Random;
 
@@ -9,5 +10,5 @@
     private readonly int trainingSamples;
 
-    public FeynmanBonus1() : this((int) DateTime.Now.Ticks, 10000, 10000) { }
+    public FeynmanBonus1() : this((int) DateTime.Now.Ticks, 10000, 10000, null) { }
 
     public FeynmanBonus1(int seed) {
@@ -15,10 +16,12 @@
       trainingSamples = 10000;
       testSamples     = 10000;
+      noiseRatio      = null;
     }
 
-    public FeynmanBonus1(int seed, int trainingSamples, int testSamples) {
+    public FeynmanBonus1(int seed, int trainingSamples, int testSamples, double? noiseRatio) {
       Seed                 = seed;
       this.trainingSamples = trainingSamples;
       this.testSamples     = testSamples;
+      this.noiseRatio      = noiseRatio;
     }
 
@@ -26,13 +29,13 @@
       get {
         return string.Format(
-          "Feynman Rutherford scattering (Z_1*Z_2*alpha*hbar*c/(4*E_n*sin(theta/2)**2))**2 | {0} samples",
-          trainingSamples);
+          "Feynman Rutherford scattering (Z_1*Z_2*alpha*hbar*c/(4*E_n*sin(theta/2)**2))**2 | {0} samples | noise ({1})",
+          trainingSamples, noiseRatio == null ? "no noise" : noiseRatio.ToString());
       }
     }
 
-    protected override string TargetVariable { get { return "A"; } }
+    protected override string TargetVariable { get { return noiseRatio == null ? "A" : "A_noise"; } }
 
     protected override string[] VariableNames {
-      get { return new[] {"Z_1", "Z_2", "alpha", "hbar", "c", "E_n", "theta", "A"}; }
+      get { return new[] {"Z_1", "Z_2", "alpha", "hbar", "c", "E_n", "theta", noiseRatio == null ? "A" : "A_noise"}; }
     }
 
@@ -72,6 +75,15 @@
 
       for (var i = 0; i < Z_1.Count; i++) {
-        var res = Math.Pow(Z_1[i] * Z_2[i] * alpha[i] * hbar[i] * c[i] / Math.Pow(4 * E_n[i] * Math.Sin(theta[i] / 2), 2), 2);
+        var res = Math.Pow(
+          Z_1[i] * Z_2[i] * alpha[i] * hbar[i] * c[i] / Math.Pow(4 * E_n[i] * Math.Sin(theta[i] / 2), 2), 2);
         A.Add(res);
+      }
+
+      if (noiseRatio != null) {
+        var A_noise     = new List<double>();
+        var sigma_noise = (double) noiseRatio * A.StandardDeviationPop();
+        A_noise.AddRange(A.Select(md => md + NormalDistributedRandom.NextDouble(rand, 0, sigma_noise)));
+        data.Remove(A);
+        data.Add(A_noise);
       }
 
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 17647)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/FeynmanBonus10.cs	(revision 17649)
@@ -2,4 +2,5 @@
 using System.Collections.Generic;
 using System.Linq;
+using HeuristicLab.Common;
 using HeuristicLab.Random;
 
@@ -9,5 +10,5 @@
     private readonly int trainingSamples;
 
-    public FeynmanBonus10() : this((int) DateTime.Now.Ticks, 10000, 10000) { }
+    public FeynmanBonus10() : this((int) DateTime.Now.Ticks, 10000, 10000, null) { }
 
     public FeynmanBonus10(int seed) {
@@ -15,10 +16,12 @@
       trainingSamples = 10000;
       testSamples     = 10000;
+      noiseRatio      = null;
     }
 
-    public FeynmanBonus10(int seed, int trainingSamples, int testSamples) {
+    public FeynmanBonus10(int seed, int trainingSamples, int testSamples, double? noiseRatio) {
       Seed                 = seed;
       this.trainingSamples = trainingSamples;
       this.testSamples     = testSamples;
+      this.noiseRatio      = noiseRatio;
     }
 
@@ -26,11 +29,15 @@
       get {
         return string.Format(
-          "Feynman Relativistic aberation arccos((cos(theta2)-v/c)/(1-v/c*cos(theta2))) | {0} samples",
-          trainingSamples);
+          "Feynman 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 "theta1"; } }
-    protected override string[] VariableNames { get { return new[] {"c", "v", "theta2", "theta1"}; } }
+    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"}; } }
 
@@ -62,4 +69,12 @@
       }
 
+      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/FeynmanBonus11.cs
===================================================================
--- branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/FeynmanBonus11.cs	(revision 17647)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/FeynmanBonus11.cs	(revision 17649)
@@ -2,4 +2,5 @@
 using System.Collections.Generic;
 using System.Linq;
+using HeuristicLab.Common;
 using HeuristicLab.Random;
 
@@ -9,5 +10,5 @@
     private readonly int trainingSamples;
 
-    public FeynmanBonus11() : this((int) DateTime.Now.Ticks, 10000, 10000) { }
+    public FeynmanBonus11() : this((int) DateTime.Now.Ticks, 10000, 10000, null) { }
 
     public FeynmanBonus11(int seed) {
@@ -15,10 +16,12 @@
       trainingSamples = 10000;
       testSamples     = 10000;
+      noiseRatio      = null;
     }
 
-    public FeynmanBonus11(int seed, int trainingSamples, int testSamples) {
+    public FeynmanBonus11(int seed, int trainingSamples, int testSamples, double? noiseRatio) {
       Seed                 = seed;
       this.trainingSamples = trainingSamples;
       this.testSamples     = testSamples;
+      this.noiseRatio      = noiseRatio;
     }
 
@@ -26,11 +29,15 @@
       get {
         return string.Format(
-          "Feynman N-slit diffraction I_0*(sin(alpha/2)*sin(n*delta/2)/(alpha/2*sin(delta/2)))**2 | {0} samples",
-          trainingSamples);
+          "Feynman 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 "I"; } }
-    protected override string[] VariableNames { get { return new[] {"I_0", "alpha", "delta", "n", "I"}; } }
+    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"}; } }
 
@@ -61,6 +68,15 @@
       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);
+                    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);
       }
 
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 17647)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/FeynmanBonus12.cs	(revision 17649)
@@ -2,4 +2,5 @@
 using System.Collections.Generic;
 using System.Linq;
+using HeuristicLab.Common;
 using HeuristicLab.Random;
 
@@ -9,5 +10,5 @@
     private readonly int trainingSamples;
 
-    public FeynmanBonus12() : this((int) DateTime.Now.Ticks, 10000, 10000) { }
+    public FeynmanBonus12() : this((int) DateTime.Now.Ticks, 10000, 10000, null) { }
 
     public FeynmanBonus12(int seed) {
@@ -15,10 +16,12 @@
       trainingSamples = 10000;
       testSamples     = 10000;
+      noiseRatio      = null;
     }
 
-    public FeynmanBonus12(int seed, int trainingSamples, int testSamples) {
+    public FeynmanBonus12(int seed, int trainingSamples, int testSamples, double? noiseRatio) {
       Seed                 = seed;
       this.trainingSamples = trainingSamples;
       this.testSamples     = testSamples;
+      this.noiseRatio      = noiseRatio;
     }
 
@@ -26,11 +29,15 @@
       get {
         return string.Format(
-          "Feynman 2.11 Jackson q/(4*pi*epsilon*y**2)*(4*pi*epsilon*Volt*d-q*d*y**3/(y**2-d**2)**2) | {0} samples",
-          trainingSamples);
+          "Feynman 2.11 Jackson 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 "F"; } }
-    protected override string[] VariableNames { get { return new[] {"q", "y", "Volt", "d", "epsilon", "F"}; } }
+    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"}; } }
 
@@ -68,4 +75,12 @@
       }
 
+      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/FeynmanBonus13.cs
===================================================================
--- branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/FeynmanBonus13.cs	(revision 17647)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/FeynmanBonus13.cs	(revision 17649)
@@ -2,4 +2,5 @@
 using System.Collections.Generic;
 using System.Linq;
+using HeuristicLab.Common;
 using HeuristicLab.Random;
 
@@ -9,5 +10,5 @@
     private readonly int trainingSamples;
 
-    public FeynmanBonus13() : this((int) DateTime.Now.Ticks, 10000, 10000) { }
+    public FeynmanBonus13() : this((int) DateTime.Now.Ticks, 10000, 10000, null) { }
 
     public FeynmanBonus13(int seed) {
@@ -15,21 +16,28 @@
       trainingSamples = 10000;
       testSamples     = 10000;
+      noiseRatio      = null;
     }
 
-    public FeynmanBonus13(int seed, int trainingSamples, int testSamples) {
+    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("Feynman 3.45 Jackson 1/(4*pi*epsilon)*q/sqrt(r**2+d**2-2*r*d*cos(alpha)) | {0} samples",
-          trainingSamples);
+        return string.Format(
+          "Feynman 3.45 Jackson 1/(4*pi*epsilon)*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 "Volt"; } }
-    protected override string[] VariableNames { get { return new[] {"q", "r", "d", "alpha", "epsilon", "Volt"}; } }
+    protected override string TargetVariable { get { return noiseRatio == null ? "Volt" : "Volt_noise"; } }
+
+    protected override string[] VariableNames {
+      get { return new[] {"q", "r", "d", "alpha", "epsilon", noiseRatio == null ? "Volt" : "Volt_noise"}; }
+    }
+
     protected override string[] AllowedInputVariables { get { return new[] {"q", "r", "d", "alpha", "epsilon"}; } }
 
@@ -61,6 +69,15 @@
 
       for (var i = 0; i < q.Count; i++) {
-        var res = 1.0 / (4 * Math.PI * epsilon[i]) * q[i] / Math.Sqrt(Math.Pow(r[i], 2) + Math.Pow(d[i], 2) - 2 * r[i] * d[i] * Math.Cos(alpha[i]));
+        var res = 1.0 / (4 * Math.PI * epsilon[i]) * 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);
       }
 
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 17647)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/FeynmanBonus14.cs	(revision 17649)
@@ -2,4 +2,5 @@
 using System.Collections.Generic;
 using System.Linq;
+using HeuristicLab.Common;
 using HeuristicLab.Random;
 
@@ -9,5 +10,5 @@
     private readonly int trainingSamples;
 
-    public FeynmanBonus14() : this((int) DateTime.Now.Ticks, 10000, 10000) { }
+    public FeynmanBonus14() : this((int) DateTime.Now.Ticks, 10000, 10000, null) { }
 
     public FeynmanBonus14(int seed) {
@@ -15,21 +16,28 @@
       trainingSamples = 10000;
       testSamples     = 10000;
+      noiseRatio      = null;
     }
 
-    public FeynmanBonus14(int seed, int trainingSamples, int testSamples) {
+    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("Feynman 4.60' Jackson Ef*cos(theta)*(-r+d**3/r**2*(alpha-1)/(alpha+2)) | {0} samples",
-          trainingSamples);
+        return string.Format(
+          "Feynman 4.60' Jackson Ef*cos(theta)*(-r+d**3/r**2*(alpha-1)/(alpha+2)) | {0} samples | noise ({1})",
+          trainingSamples, noiseRatio == null ? "no noise" : noiseRatio.ToString());
       }
     }
 
-    protected override string TargetVariable { get { return "Volt"; } }
-    protected override string[] VariableNames { get { return new[] {"Ef", "theta", "r", "d", "alpha", "Volt"}; } }
+    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"}; } }
 
@@ -66,4 +74,12 @@
       }
 
+      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/FeynmanBonus15.cs
===================================================================
--- branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/FeynmanBonus15.cs	(revision 17647)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/FeynmanBonus15.cs	(revision 17649)
@@ -2,4 +2,5 @@
 using System.Collections.Generic;
 using System.Linq;
+using HeuristicLab.Common;
 using HeuristicLab.Random;
 
@@ -9,5 +10,5 @@
     private readonly int trainingSamples;
 
-    public FeynmanBonus15() : this((int) DateTime.Now.Ticks, 10000, 10000) { }
+    public FeynmanBonus15() : this((int) DateTime.Now.Ticks, 10000, 10000, null) { }
 
     public FeynmanBonus15(int seed) {
@@ -15,21 +16,28 @@
       trainingSamples = 10000;
       testSamples     = 10000;
+      noiseRatio      = null;
     }
 
-    public FeynmanBonus15(int seed, int trainingSamples, int testSamples) {
+    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("Feynman 11.38 Jackson sqrt(1-v**2/c**2)*omega/(1+v/c*cos(theta)) | {0} samples",
-          trainingSamples);
+        return string.Format(
+          "Feynman 11.38 Jackson 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 "omega_0"; } }
-    protected override string[] VariableNames { get { return new[] {"c", "v", "omega", "theta", "omega_0"}; } }
+    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"}; } }
 
@@ -64,4 +72,12 @@
       }
 
+      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/FeynmanBonus16.cs
===================================================================
--- branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/FeynmanBonus16.cs	(revision 17647)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/FeynmanBonus16.cs	(revision 17649)
@@ -2,4 +2,5 @@
 using System.Collections.Generic;
 using System.Linq;
+using HeuristicLab.Common;
 using HeuristicLab.Random;
 
@@ -9,5 +10,5 @@
     private readonly int trainingSamples;
 
-    public FeynmanBonus16() : this((int) DateTime.Now.Ticks, 10000, 10000) { }
+    public FeynmanBonus16() : this((int) DateTime.Now.Ticks, 10000, 10000, null) { }
 
     public FeynmanBonus16(int seed) {
@@ -15,21 +16,28 @@
       trainingSamples = 10000;
       testSamples     = 10000;
+      noiseRatio      = null;
     }
 
-    public FeynmanBonus16(int seed, int trainingSamples, int testSamples) {
+    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("Feynman 8.56 Goldstein sqrt((p-q*A_vec)**2*c**2+m**2*c**4)+q*Volt | {0} samples",
-          trainingSamples);
+        return string.Format(
+          "Feynman 8.56 Goldstein 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 "E_n"; } }
-    protected override string[] VariableNames { get { return new[] {"m", "c", "p", "q", "A_vec", "Volt", "E_n"}; } }
+    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"}; } }
 
@@ -63,7 +71,15 @@
 
       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) +
+        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);
       }
 
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 17647)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/FeynmanBonus17.cs	(revision 17649)
@@ -2,4 +2,5 @@
 using System.Collections.Generic;
 using System.Linq;
+using HeuristicLab.Common;
 using HeuristicLab.Random;
 
@@ -9,5 +10,5 @@
     private readonly int trainingSamples;
 
-    public FeynmanBonus17() : this((int) DateTime.Now.Ticks, 10000, 10000) { }
+    public FeynmanBonus17() : this((int) DateTime.Now.Ticks, 10000, 10000, null) { }
 
     public FeynmanBonus17(int seed) {
@@ -15,21 +16,28 @@
       trainingSamples = 10000;
       testSamples     = 10000;
+      noiseRatio      = null;
     }
 
-    public FeynmanBonus17(int seed, int trainingSamples, int testSamples) {
+    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("Feynman 12.80' Goldstein 1/(2*m)*(p**2+m**2*omega**2*x**2*(1+alpha*x/y)) | {0} samples",
-          trainingSamples);
+        return string.Format(
+          "Feynman 12.80' Goldstein 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 "E_n"; } }
-    protected override string[] VariableNames { get { return new[] {"m", "omega", "p", "y", "x", "alpha", "E_n"}; } }
+    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"}; } }
 
@@ -69,4 +77,12 @@
       }
 
+      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/FeynmanBonus18.cs
===================================================================
--- branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/FeynmanBonus18.cs	(revision 17647)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/FeynmanBonus18.cs	(revision 17649)
@@ -2,4 +2,5 @@
 using System.Collections.Generic;
 using System.Linq;
+using HeuristicLab.Common;
 using HeuristicLab.Random;
 
@@ -9,5 +10,5 @@
     private readonly int trainingSamples;
 
-    public FeynmanBonus18() : this((int) DateTime.Now.Ticks, 10000, 10000) { }
+    public FeynmanBonus18() : this((int) DateTime.Now.Ticks, 10000, 10000, null) { }
 
     public FeynmanBonus18(int seed) {
@@ -15,21 +16,27 @@
       trainingSamples = 10000;
       testSamples     = 10000;
+      noiseRatio      = null;
     }
 
-    public FeynmanBonus18(int seed, int trainingSamples, int testSamples) {
+    public FeynmanBonus18(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("Feynman 15.2.1 Weinberg 3/(8*pi*G)*(c**2*k_f/r**2+H_G**2) | {0} samples",
-          trainingSamples);
+        return string.Format("Feynman 15.2.1 Weinberg 3/(8*pi*G)*(c**2*k_f/r**2+H_G**2) | {0} samples | noise ({1})",
+          trainingSamples, noiseRatio == null ? "no noise" : noiseRatio.ToString());
       }
     }
 
-    protected override string TargetVariable { get { return "rho_0"; } }
-    protected override string[] VariableNames { get { return new[] {"G", "k_f", "r", "H_G", "c", "rho_0"}; } }
+    protected override string TargetVariable { get { return noiseRatio == null ? "rho_0" : "rho_0_noise"; } }
+
+    protected override string[] VariableNames {
+      get { return new[] {"G", "k_f", "r", "H_G", "c", noiseRatio == null ? "rho_0" : "rho_0_noise"}; }
+    }
+
     protected override string[] AllowedInputVariables { get { return new[] {"G", "k_f", "r", "H_G", "c"}; } }
 
@@ -65,4 +72,12 @@
       }
 
+      if (noiseRatio != null) {
+        var rho_0_noise = new List<double>();
+        var sigma_noise = (double) noiseRatio * rho_0.StandardDeviationPop();
+        rho_0_noise.AddRange(rho_0.Select(md => md + NormalDistributedRandom.NextDouble(rand, 0, sigma_noise)));
+        data.Remove(rho_0);
+        data.Add(rho_0_noise);
+      }
+
       return data;
     }
Index: branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/FeynmanBonus19.cs
===================================================================
--- branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/FeynmanBonus19.cs	(revision 17647)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/FeynmanBonus19.cs	(revision 17649)
@@ -2,4 +2,5 @@
 using System.Collections.Generic;
 using System.Linq;
+using HeuristicLab.Common;
 using HeuristicLab.Random;
 
@@ -9,5 +10,5 @@
     private readonly int trainingSamples;
 
-    public FeynmanBonus19() : this((int) DateTime.Now.Ticks, 10000, 10000) { }
+    public FeynmanBonus19() : this((int) DateTime.Now.Ticks, 10000, 10000, null) { }
 
     public FeynmanBonus19(int seed) {
@@ -15,10 +16,12 @@
       trainingSamples = 10000;
       testSamples     = 10000;
+      noiseRatio      = null;
     }
 
-    public FeynmanBonus19(int seed, int trainingSamples, int testSamples) {
+    public FeynmanBonus19(int seed, int trainingSamples, int testSamples, double? noiseRatio) {
       Seed                 = seed;
       this.trainingSamples = trainingSamples;
       this.testSamples     = testSamples;
+      this.noiseRatio      = noiseRatio;
     }
 
@@ -26,10 +29,15 @@
       get {
         return string.Format(
-          "Feynman 15.2.2 Weinberg -1/(8*pi*G)*(c**4*k_f/r**2+H_G**2*c**2*(1-2*alpha)) | {0} samples", trainingSamples);
+          "Feynman 15.2.2 Weinberg -1/(8*pi*G)*(c**4*k_f/r**2+H_G**2*c**2*(1-2*alpha)) | {0} samples | noise ({1})",
+          trainingSamples, noiseRatio == null ? "no noise" : noiseRatio.ToString());
       }
     }
 
-    protected override string TargetVariable { get { return "pr"; } }
-    protected override string[] VariableNames { get { return new[] {"G", "k_f", "r", "H_G", "alpha", "c", "pr"}; } }
+    protected override string TargetVariable { get { return noiseRatio == null ? "pr" : "pr_noise"; } }
+
+    protected override string[] VariableNames {
+      get { return new[] {"G", "k_f", "r", "H_G", "alpha", "c", noiseRatio == null ? "pr" : "pr_noise"}; }
+    }
+
     protected override string[] AllowedInputVariables { get { return new[] {"G", "k_f", "r", "H_G", "alpha", "c"}; } }
 
@@ -68,4 +76,12 @@
       }
 
+      if (noiseRatio != null) {
+        var pr_noise    = new List<double>();
+        var sigma_noise = (double) noiseRatio * pr.StandardDeviationPop();
+        pr_noise.AddRange(pr.Select(md => md + NormalDistributedRandom.NextDouble(rand, 0, sigma_noise)));
+        data.Remove(pr);
+        data.Add(pr_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 17647)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/FeynmanBonus2.cs	(revision 17649)
@@ -2,4 +2,5 @@
 using System.Collections.Generic;
 using System.Linq;
+using HeuristicLab.Common;
 using HeuristicLab.Random;
 
@@ -9,5 +10,5 @@
     private readonly int trainingSamples;
 
-    public FeynmanBonus2() : this((int) DateTime.Now.Ticks, 10000, 10000) { }
+    public FeynmanBonus2() : this((int) DateTime.Now.Ticks, 10000, 10000, null) { }
 
     public FeynmanBonus2(int seed) {
@@ -15,10 +16,12 @@
       trainingSamples = 10000;
       testSamples     = 10000;
+      noiseRatio      = null;
     }
 
-    public FeynmanBonus2(int seed, int trainingSamples, int testSamples) {
+    public FeynmanBonus2(int seed, int trainingSamples, int testSamples, double? noiseRatio) {
       Seed                 = seed;
       this.trainingSamples = trainingSamples;
       this.testSamples     = testSamples;
+      this.noiseRatio      = noiseRatio;
     }
 
@@ -26,13 +29,13 @@
       get {
         return string.Format(
-          "Feynman 3.55 Goldstein m*k_G/L**2*(1+sqrt(1+2*E_n*L**2/(m*k_G**2))*cos(theta1-theta2)) | {0} samples",
-          trainingSamples);
+          "Feynman 3.55 Goldstein 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 "k"; } }
+    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", "k"}; }
+      get { return new[] {"m", "k_G", "L", "E_n", "theta1", "theta2", noiseRatio == null ? "k" : "k_noise"}; }
     }
 
@@ -76,4 +79,12 @@
       }
 
+      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/FeynmanBonus20.cs
===================================================================
--- branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/FeynmanBonus20.cs	(revision 17647)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/FeynmanBonus20.cs	(revision 17649)
@@ -2,4 +2,5 @@
 using System.Collections.Generic;
 using System.Linq;
+using HeuristicLab.Common;
 using HeuristicLab.Random;
 
@@ -9,5 +10,5 @@
     private readonly int trainingSamples;
 
-    public FeynmanBonus20() : this((int) DateTime.Now.Ticks, 10000, 10000) { }
+    public FeynmanBonus20() : this((int) DateTime.Now.Ticks, 10000, 10000, null) { }
 
     public FeynmanBonus20(int seed) {
@@ -15,10 +16,12 @@
       trainingSamples = 10000;
       testSamples     = 10000;
+      noiseRatio      = null;
     }
 
-    public FeynmanBonus20(int seed, int trainingSamples, int testSamples) {
+    public FeynmanBonus20(int seed, int trainingSamples, int testSamples, double? noiseRatio) {
       Seed                 = seed;
       this.trainingSamples = trainingSamples;
       this.testSamples     = testSamples;
+      this.noiseRatio      = noiseRatio;
     }
 
@@ -26,13 +29,13 @@
       get {
         return string.Format(
-          "Feynman Klein-Nishina (13.132 Schwarz) 1/(4*pi)*alpha**2*h**2/(m**2*c**2)*(omega_0/omega)**2*(omega_0/omega+omega/omega_0-sin(beta)**2) | {0} samples",
-          trainingSamples);
+          "Feynman Klein-Nishina (13.132 Schwarz) 1/(4*pi)*alpha**2*h**2/(m**2*c**2)*(omega_0/omega)**2*(omega_0/omega+omega/omega_0-sin(beta)**2) | {0} samples | noise ({1})",
+          trainingSamples, noiseRatio == null ? "no noise" : noiseRatio.ToString());
       }
     }
 
-    protected override string TargetVariable { get { return "A"; } }
+    protected override string TargetVariable { get { return noiseRatio == null ? "A" : "A_noise"; } }
 
     protected override string[] VariableNames {
-      get { return new[] {"omega", "omega_0", "alpha", "h", "m", "c", "beta", "A"}; }
+      get { return new[] {"omega", "omega_0", "alpha", "h", "m", "c", "beta", noiseRatio == null ? "A" : "A_noise"}; }
     }
 
@@ -73,7 +76,15 @@
       for (var i = 0; i < omega.Count; i++) {
         var res = 1.0 / (4 * Math.PI) * Math.Pow(alpha[i], 2) * Math.Pow(h[i], 2) /
-                  (Math.Pow(m[i], 2) * Math.Pow(c[i], 2)) * Math.Pow(
-                    (omega_0[i] / omega[i]), 2) * (omega_0[i] / omega[i] + omega[i] / omega_0[i] - Math.Pow(Math.Sin(beta[i]), 2));
+                  (Math.Pow(m[i], 2) * Math.Pow(c[i], 2)) * Math.Pow(omega_0[i] / omega[i], 2) *
+                  (omega_0[i] / omega[i] + omega[i] / omega_0[i] - Math.Pow(Math.Sin(beta[i]), 2));
         A.Add(res);
+      }
+
+      if (noiseRatio != null) {
+        var A_noise     = new List<double>();
+        var sigma_noise = (double) noiseRatio * A.StandardDeviationPop();
+        A_noise.AddRange(A.Select(md => md + NormalDistributedRandom.NextDouble(rand, 0, sigma_noise)));
+        data.Remove(A);
+        data.Add(A_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 17647)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/FeynmanBonus3.cs	(revision 17649)
@@ -2,4 +2,5 @@
 using System.Collections.Generic;
 using System.Linq;
+using HeuristicLab.Common;
 using HeuristicLab.Random;
 
@@ -9,5 +10,5 @@
     private readonly int trainingSamples;
 
-    public FeynmanBonus3() : this((int) DateTime.Now.Ticks, 10000, 10000) { }
+    public FeynmanBonus3() : this((int) DateTime.Now.Ticks, 10000, 10000, null) { }
 
     public FeynmanBonus3(int seed) {
@@ -15,21 +16,28 @@
       trainingSamples = 10000;
       testSamples     = 10000;
+      noiseRatio      = null;
     }
 
-    public FeynmanBonus3(int seed, int trainingSamples, int testSamples) {
+    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("Feynman 3.64 Goldstein d*(1-alpha**2)/(1+alpha*cos(theta1-theta2)) | {0} samples",
-          trainingSamples);
+        return string.Format(
+          "Feynman 3.64 Goldstein 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 "r"; } }
-    protected override string[] VariableNames { get { return new[] {"d", "alpha", "theta1", "theta2", "r"}; } }
+    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"}; } }
 
@@ -63,4 +71,12 @@
       }
 
+      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;
     }
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 17647)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/FeynmanBonus4.cs	(revision 17649)
@@ -2,4 +2,5 @@
 using System.Collections.Generic;
 using System.Linq;
+using HeuristicLab.Common;
 using HeuristicLab.Random;
 
@@ -9,5 +10,5 @@
     private readonly int trainingSamples;
 
-    public FeynmanBonus4() : this((int) DateTime.Now.Ticks, 10000, 10000) { }
+    public FeynmanBonus4() : this((int) DateTime.Now.Ticks, 10000, 10000, null) { }
 
     public FeynmanBonus4(int seed) {
@@ -15,20 +16,27 @@
       trainingSamples = 10000;
       testSamples     = 10000;
+      noiseRatio      = null;
     }
 
-    public FeynmanBonus4(int seed, int trainingSamples, int testSamples) {
+    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("Feynman 3.16 Goldstein sqrt(2/m*(E_n-U-L**2/(2*m*r**2))) | {0} samples", trainingSamples);
+        return string.Format("Feynman 3.16 Goldstein 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 "v"; } }
-    protected override string[] VariableNames { get { return new[] {"m", "E_n", "U", "L", "r", "v"}; } }
+    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"}; } }
 
@@ -64,4 +72,12 @@
       }
 
+      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/FeynmanBonus5.cs
===================================================================
--- branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/FeynmanBonus5.cs	(revision 17647)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/FeynmanBonus5.cs	(revision 17649)
@@ -2,4 +2,5 @@
 using System.Collections.Generic;
 using System.Linq;
+using HeuristicLab.Common;
 using HeuristicLab.Random;
 
@@ -9,5 +10,5 @@
     private readonly int trainingSamples;
 
-    public FeynmanBonus5() : this((int) DateTime.Now.Ticks, 10000, 10000) { }
+    public FeynmanBonus5() : this((int) DateTime.Now.Ticks, 10000, 10000, null) { }
 
     public FeynmanBonus5(int seed) {
@@ -15,20 +16,27 @@
       trainingSamples = 10000;
       testSamples     = 10000;
+      noiseRatio      = null;
     }
 
-    public FeynmanBonus5(int seed, int trainingSamples, int testSamples) {
+    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("Feynman 3.74 Goldstein 2*pi*d**(3/2)/sqrt(G*(m1+m2)) | {0} samples", trainingSamples);
+        return string.Format("Feynman 3.74 Goldstein 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 "t"; } }
-    protected override string[] VariableNames { get { return new[] {"d", "G", "m1", "m2", "t"}; } }
+    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"}; } }
 
@@ -58,6 +66,14 @@
 
       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]));
+        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);
       }
 
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 17647)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/FeynmanBonus6.cs	(revision 17649)
@@ -2,4 +2,5 @@
 using System.Collections.Generic;
 using System.Linq;
+using HeuristicLab.Common;
 using HeuristicLab.Random;
 
@@ -9,5 +10,5 @@
     private readonly int trainingSamples;
 
-    public FeynmanBonus6() : this((int) DateTime.Now.Ticks, 10000, 10000) { }
+    public FeynmanBonus6() : this((int) DateTime.Now.Ticks, 10000, 10000, null) { }
 
     public FeynmanBonus6(int seed) {
@@ -15,23 +16,28 @@
       trainingSamples = 10000;
       testSamples     = 10000;
+      noiseRatio      = null;
     }
 
-    public FeynmanBonus6(int seed, int trainingSamples, int testSamples) {
+    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("Feynman 3.99 Goldstein sqrt(1+2*epsilon**2*E_n*L**2/(m*(Z_1*Z_2*q**2)**2)) | {0} samples",
-          trainingSamples);
+        return string.Format(
+          "Feynman 3.99 Goldstein 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 "alpha"; } }
+    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", "alpha"}; }
+      get {
+        return new[] {"epsilon", "L", "m", "Z_1", "Z_2", "q", "E_n", noiseRatio == null ? "alpha" : "alpha_noise"};
+      }
     }
 
@@ -72,6 +78,14 @@
       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)));
+                            (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);
       }
 
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 17647)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/FeynmanBonus7.cs	(revision 17649)
@@ -2,4 +2,5 @@
 using System.Collections.Generic;
 using System.Linq;
+using HeuristicLab.Common;
 using HeuristicLab.Random;
 
@@ -9,5 +10,5 @@
     private readonly int trainingSamples;
 
-    public FeynmanBonus7() : this((int) DateTime.Now.Ticks, 10000, 10000) { }
+    public FeynmanBonus7() : this((int) DateTime.Now.Ticks, 10000, 10000, null) { }
 
     public FeynmanBonus7(int seed) {
@@ -15,21 +16,27 @@
       trainingSamples = 10000;
       testSamples     = 10000;
+      noiseRatio      = null;
     }
 
-    public FeynmanBonus7(int seed, int trainingSamples, int testSamples) {
+    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("Feynman Friedman Equation sqrt(8*pi*G*rho/3-alpha*c**2/d**2) | {0} samples",
-          trainingSamples);
+        return string.Format("Feynman 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 "H_G"; } }
-    protected override string[] VariableNames { get { return new[] {"G", "rho", "alpha", "c", "d", "H_G"}; } }
+    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"}; } }
 
@@ -65,4 +72,12 @@
       }
 
+      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/FeynmanBonus8.cs
===================================================================
--- branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/FeynmanBonus8.cs	(revision 17647)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/FeynmanBonus8.cs	(revision 17649)
@@ -2,4 +2,5 @@
 using System.Collections.Generic;
 using System.Linq;
+using HeuristicLab.Common;
 using HeuristicLab.Random;
 
@@ -9,5 +10,5 @@
     private readonly int trainingSamples;
 
-    public FeynmanBonus8() : this((int) DateTime.Now.Ticks, 10000, 10000) { }
+    public FeynmanBonus8() : this((int) DateTime.Now.Ticks, 10000, 10000, null) { }
 
     public FeynmanBonus8(int seed) {
@@ -15,21 +16,28 @@
       trainingSamples = 10000;
       testSamples     = 10000;
+      noiseRatio      = null;
     }
 
-    public FeynmanBonus8(int seed, int trainingSamples, int testSamples) {
+    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("Feynman Compton Scattering E_n/(1+E_n/(m*c**2)*(1-cos(theta))) | {0} samples",
-          trainingSamples);
+        return string.Format(
+          "Feynman 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 "K"; } }
-    protected override string[] VariableNames { get { return new[] {"E_n", "m", "c", "theta", "K"}; } }
+    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"}; } }
 
@@ -63,4 +71,12 @@
       }
 
+      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 17647)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/FeynmanBonus9.cs	(revision 17649)
@@ -2,4 +2,5 @@
 using System.Collections.Generic;
 using System.Linq;
+using HeuristicLab.Common;
 using HeuristicLab.Random;
 
@@ -9,5 +10,5 @@
     private readonly int trainingSamples;
 
-    public FeynmanBonus9() : this((int) DateTime.Now.Ticks, 10000, 10000) { }
+    public FeynmanBonus9() : this((int) DateTime.Now.Ticks, 10000, 10000, null) { }
 
     public FeynmanBonus9(int seed) {
@@ -15,10 +16,12 @@
       trainingSamples = 10000;
       testSamples     = 10000;
+      noiseRatio      = null;
     }
 
-    public FeynmanBonus9(int seed, int trainingSamples, int testSamples) {
+    public FeynmanBonus9(int seed, int trainingSamples, int testSamples, double? noiseRatio) {
       Seed                 = seed;
       this.trainingSamples = trainingSamples;
       this.testSamples     = testSamples;
+      this.noiseRatio      = noiseRatio;
     }
 
@@ -26,11 +29,15 @@
       get {
         return string.Format(
-          "Feynman Gravitational wave ratiated power -32/5*G**4/c**5*(m1*m2)**2*(m1+m2)/r**5 | {0} samples",
-          trainingSamples);
+          "Feynman Gravitational wave ratiated 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 "Pwr"; } }
-    protected override string[] VariableNames { get { return new[] {"G", "c", "m1", "m2", "r", "Pwr"}; } }
+    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"}; } }
 
@@ -62,7 +69,15 @@
 
       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]) /
+        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);
       }
 
Index: branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/FeynmanInstanceProvider.cs
===================================================================
--- branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/FeynmanInstanceProvider.cs	(revision 17647)
+++ branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/FeynmanInstanceProvider.cs	(revision 17649)
@@ -140,55 +140,27 @@
           descriptorList.Add(new Feynman99(rand.Next(), s, s, n));
           descriptorList.Add(new Feynman100(rand.Next(), s, s, n));
+          descriptorList.Add(new FeynmanBonus1(rand.Next(), s, s, n));
+          descriptorList.Add(new FeynmanBonus2(rand.Next(), s, s, n));
+          descriptorList.Add(new FeynmanBonus3(rand.Next(), s, s, n));
+          descriptorList.Add(new FeynmanBonus4(rand.Next(), s, s, n));
+          descriptorList.Add(new FeynmanBonus5(rand.Next(), s, s, n));
+          descriptorList.Add(new FeynmanBonus6(rand.Next(), s, s, n));
+          descriptorList.Add(new FeynmanBonus7(rand.Next(), s, s, n));
+          descriptorList.Add(new FeynmanBonus8(rand.Next(), s, s, n));
+          descriptorList.Add(new FeynmanBonus9(rand.Next(), s, s, n));
+          descriptorList.Add(new FeynmanBonus10(rand.Next(), s, s, n));
+          descriptorList.Add(new FeynmanBonus11(rand.Next(), s, s, n));
+          descriptorList.Add(new FeynmanBonus12(rand.Next(), s, s, n));
+          descriptorList.Add(new FeynmanBonus13(rand.Next(), s, s, n));
+          descriptorList.Add(new FeynmanBonus14(rand.Next(), s, s, n));
+          descriptorList.Add(new FeynmanBonus15(rand.Next(), s, s, n));
+          descriptorList.Add(new FeynmanBonus16(rand.Next(), s, s, n));
+          descriptorList.Add(new FeynmanBonus17(rand.Next(), s, s, n));
+          descriptorList.Add(new FeynmanBonus18(rand.Next(), s, s, n));
+          descriptorList.Add(new FeynmanBonus19(rand.Next(), s, s, n));
+          descriptorList.Add(new FeynmanBonus20(rand.Next(), s, s, n));
         }
       }
-
-      descriptorList.Add(new FeynmanBonus1(rand.Next()));
-      descriptorList.Add(new FeynmanBonus2(rand.Next()));
-      descriptorList.Add(new FeynmanBonus3(rand.Next()));
-      descriptorList.Add(new FeynmanBonus4(rand.Next()));
-      descriptorList.Add(new FeynmanBonus5(rand.Next()));
-      descriptorList.Add(new FeynmanBonus6(rand.Next()));
-      descriptorList.Add(new FeynmanBonus7(rand.Next()));
-      descriptorList.Add(new FeynmanBonus8(rand.Next()));
-      descriptorList.Add(new FeynmanBonus9(rand.Next()));
-      descriptorList.Add(new FeynmanBonus10(rand.Next()));
-      descriptorList.Add(new FeynmanBonus11(rand.Next()));
-      descriptorList.Add(new FeynmanBonus12(rand.Next()));
-      descriptorList.Add(new FeynmanBonus13(rand.Next()));
-      descriptorList.Add(new FeynmanBonus14(rand.Next()));
-      descriptorList.Add(new FeynmanBonus15(rand.Next()));
-      descriptorList.Add(new FeynmanBonus16(rand.Next()));
-      descriptorList.Add(new FeynmanBonus17(rand.Next()));
-      descriptorList.Add(new FeynmanBonus18(rand.Next()));
-      descriptorList.Add(new FeynmanBonus19(rand.Next()));
-      descriptorList.Add(new FeynmanBonus20(rand.Next()));
-      
-
-      var sortedList = descriptorList.OrderBy(x => x.Name).ToList();
-
-
-      //descriptorList.Add(new FeynmanBonus1(rand.Next(), 100, 100));
-      //descriptorList.Add(new FeynmanBonus2(rand.Next(), 100, 100));
-      //descriptorList.Add(new FeynmanBonus3(rand.Next(), 100, 100));
-      //descriptorList.Add(new FeynmanBonus4(rand.Next(), 100, 100));
-      //descriptorList.Add(new FeynmanBonus5(rand.Next(), 100, 100));
-      //descriptorList.Add(new FeynmanBonus6(rand.Next(), 100, 100));
-      //descriptorList.Add(new FeynmanBonus7(rand.Next(), 100, 100));
-      //descriptorList.Add(new FeynmanBonus8(rand.Next(), 100, 100));
-      //descriptorList.Add(new FeynmanBonus9(rand.Next(), 100, 100));
-      //descriptorList.Add(new FeynmanBonus10(rand.Next(), 100, 100));
-      //descriptorList.Add(new FeynmanBonus11(rand.Next(), 100, 100));
-      //descriptorList.Add(new FeynmanBonus12(rand.Next(), 100, 100));
-      //descriptorList.Add(new FeynmanBonus13(rand.Next(), 100, 100));
-      //descriptorList.Add(new FeynmanBonus14(rand.Next(), 100, 100));
-      //descriptorList.Add(new FeynmanBonus15(rand.Next(), 100, 100));
-      //descriptorList.Add(new FeynmanBonus16(rand.Next(), 100, 100));
-      //descriptorList.Add(new FeynmanBonus17(rand.Next(), 100, 100));
-      //descriptorList.Add(new FeynmanBonus18(rand.Next(), 100, 100));
-      //descriptorList.Add(new FeynmanBonus19(rand.Next(), 100, 100));
-      //descriptorList.Add(new FeynmanBonus20(rand.Next(), 100, 100));
-
-
-      return sortedList;
+      return descriptorList.OrderBy(x => x.Name).ToList();
     }
   }
