Index: /branches/HeuristicLab.Problems.MultiObjectiveTestFunctions/HeuristicLab.Problems.MultiObjectiveTestFunctions/3.3/MultiObjectiveTestFunctionProblem.cs
===================================================================
--- /branches/HeuristicLab.Problems.MultiObjectiveTestFunctions/HeuristicLab.Problems.MultiObjectiveTestFunctions/3.3/MultiObjectiveTestFunctionProblem.cs	(revision 13450)
+++ /branches/HeuristicLab.Problems.MultiObjectiveTestFunctions/HeuristicLab.Problems.MultiObjectiveTestFunctions/3.3/MultiObjectiveTestFunctionProblem.cs	(revision 13451)
@@ -148,6 +148,8 @@
         || ProblemSize > TestFunction.MaximumProblemSize)
         ProblemSize = Math.Min(TestFunction.MaximumProblemSize, Math.Max(TestFunction.MinimumProblemSize, ProblemSize));
-      //TODO problemsize dominates solutionSize 
-      SolutionSizeOnValueChanged(sender, eventArgs);
+      if (SolutionSize < TestFunction.MinimumSolutionSize
+        || SolutionSize > TestFunction.MaximumSolutionSize)
+        SolutionSize = Math.Min(TestFunction.MaximumSolutionSize, Math.Max(TestFunction.MinimumSolutionSize, SolutionSize));
+      TestFunction.ActualSolutionSize = SolutionSize;
     }
 
@@ -157,5 +159,7 @@
         SolutionSize = Math.Min(TestFunction.MaximumSolutionSize, Math.Max(TestFunction.MinimumSolutionSize, SolutionSize));
       TestFunction.ActualSolutionSize = SolutionSize;
-      OnReset();
+      if (ProblemSize < TestFunction.MinimumProblemSize
+        || ProblemSize > TestFunction.MaximumProblemSize)
+        ProblemSize = Math.Min(TestFunction.MaximumProblemSize, Math.Max(TestFunction.MinimumProblemSize, ProblemSize));
     }
 
@@ -174,8 +178,7 @@
     }
 
-    
+
     #endregion
   }
 }
 
-   
Index: /branches/HeuristicLab.Problems.MultiObjectiveTestFunctions/HeuristicLab.Problems.MultiObjectiveTestFunctions/3.3/Testfunctions/DTLZ1.cs
===================================================================
--- /branches/HeuristicLab.Problems.MultiObjectiveTestFunctions/HeuristicLab.Problems.MultiObjectiveTestFunctions/3.3/Testfunctions/DTLZ1.cs	(revision 13450)
+++ /branches/HeuristicLab.Problems.MultiObjectiveTestFunctions/HeuristicLab.Problems.MultiObjectiveTestFunctions/3.3/Testfunctions/DTLZ1.cs	(revision 13451)
@@ -36,7 +36,5 @@
     public override bool[] Maximization {
       get {
-        bool[] res = new bool[actualSolutionSize];
-        for(int i =0; i < res.Length; i++)  res[i] = false; //TODO: diligent initialzation
-        return res;
+        return new bool[actualSolutionSize];
       }
     }
@@ -57,5 +55,5 @@
     public override int MinimumProblemSize {
       get {
-        return Math.Max(2, ActualSolutionSize+1);
+        return Math.Max(2, ActualSolutionSize);
       }
     }
@@ -84,4 +82,8 @@
 
     private double[] Evaluate(RealVector r, int objectives) {
+      if (r.Length < objectives) {
+        throw new Exception("The dimensionality of the problem(ProblemSize) must be larger or equal than the dimensionality of the solution(SolutionSize) ");
+      }
+
       double[] res = new double[objectives];
 
@@ -98,5 +100,5 @@
       //calculating f0...fM-1
       for (int i = 0; i < objectives; i++) {
-        double f = 0.5 * i == 0 ? 1 : (1 - r[objectives - i - 1]) * (1 + g);
+        double f = 0.5 * (i == 0 ? 1 : (1 - r[objectives - i - 1])) * (1 + g);
         for (int j = 0; j < objectives - i - 1; j++) {
           f *= r[j];
Index: /branches/HeuristicLab.Problems.MultiObjectiveTestFunctions/HeuristicLab.Problems.MultiObjectiveTestFunctions/3.3/Testfunctions/DTLZ2.cs
===================================================================
--- /branches/HeuristicLab.Problems.MultiObjectiveTestFunctions/HeuristicLab.Problems.MultiObjectiveTestFunctions/3.3/Testfunctions/DTLZ2.cs	(revision 13450)
+++ /branches/HeuristicLab.Problems.MultiObjectiveTestFunctions/HeuristicLab.Problems.MultiObjectiveTestFunctions/3.3/Testfunctions/DTLZ2.cs	(revision 13451)
@@ -36,7 +36,5 @@
     public override bool[] Maximization {
       get {
-        bool[] res = new bool[actualSolutionSize];
-        for(int i =0; i < res.Length; i++)  res[i] = false; //TODO: diligent initialzation
-        return res;
+        return new bool[actualSolutionSize];
       }
     }
@@ -48,6 +46,7 @@
     }
 
-    public override int MaximumSolutionSize { //TODO ask Michael
+    public override int MaximumSolutionSize {
       get {
+
         return int.MaxValue;
       }
@@ -56,5 +55,5 @@
     public override int MinimumProblemSize {
       get {
-        return Math.Max(2,actualSolutionSize);
+        return Math.Max(2, ActualSolutionSize);
       }
     }
@@ -82,4 +81,8 @@
 
     private double[] Evaluate(RealVector r, int objectives) {
+      if (r.Length < objectives) {
+        throw new Exception("The dimensionality of the problem(ProblemSize) must be larger or equal than the dimensionality of the solution(SolutionSize) ");
+      }
+
       double[] res = new double[objectives];
 
Index: /branches/HeuristicLab.Problems.MultiObjectiveTestFunctions/HeuristicLab.Problems.MultiObjectiveTestFunctions/3.3/Testfunctions/DTLZ3.cs
===================================================================
--- /branches/HeuristicLab.Problems.MultiObjectiveTestFunctions/HeuristicLab.Problems.MultiObjectiveTestFunctions/3.3/Testfunctions/DTLZ3.cs	(revision 13450)
+++ /branches/HeuristicLab.Problems.MultiObjectiveTestFunctions/HeuristicLab.Problems.MultiObjectiveTestFunctions/3.3/Testfunctions/DTLZ3.cs	(revision 13451)
@@ -17,4 +17,15 @@
   public class DTLZ3 : MultiObjectiveTestFunction {
 
+    private int actualSolutionSize = 2;
+    public override int ActualSolutionSize {
+      get {
+        return actualSolutionSize;
+      }
+
+      set {
+        actualSolutionSize = value;
+      }
+    }
+
     public override DoubleMatrix Bounds {
       get {
@@ -25,7 +36,5 @@
     public override bool[] Maximization {
       get {
-        bool[] res = new bool[((ValueParameter<IntValue>)Parameters["SolutionSize"]).Value.Value];
-        for(int i =0; i < res.Length; i++)  res[i] = false; //TODO: diligent initialzation
-        return res;
+        return new bool[actualSolutionSize];
       }
     }
@@ -37,7 +46,8 @@
     }
 
-    public override int MaximumSolutionSize { //TODO ask Michael
+    public override int MaximumSolutionSize {
       get {
-        return ((ValueParameter<IntValue>)Parameters["ProblemSize"]).Value.Value;
+
+        return int.MaxValue;
       }
     }
@@ -45,5 +55,5 @@
     public override int MinimumProblemSize {
       get {
-        return 2;
+        return Math.Max(2, ActualSolutionSize);
       }
     }
@@ -52,14 +62,4 @@
       get {
         return 2;
-      }
-    }
-
-    public override int ActualSolutionSize {
-      get {
-        throw new NotImplementedException();
-      }
-
-      set {
-        throw new NotImplementedException();
       }
     }
@@ -77,8 +77,11 @@
 
     public override double[] Evaluate(RealVector r) {
-      return Evaluate(r, ((ValueParameter<IntValue>)Parameters["SolutionSize"]).Value.Value);
+      return Evaluate(r, ActualSolutionSize);
     }
 
     private double[] Evaluate(RealVector r, int objectives) {
+      if (r.Length < objectives) {
+        throw new Exception("The dimensionality of the problem(ProblemSize) must be larger or equal than the dimensionality of the solution(SolutionSize) ");
+      }
       double[] res = new double[objectives];
 
Index: /branches/HeuristicLab.Problems.MultiObjectiveTestFunctions/HeuristicLab.Problems.MultiObjectiveTestFunctions/3.3/Testfunctions/DTLZ4.cs
===================================================================
--- /branches/HeuristicLab.Problems.MultiObjectiveTestFunctions/HeuristicLab.Problems.MultiObjectiveTestFunctions/3.3/Testfunctions/DTLZ4.cs	(revision 13450)
+++ /branches/HeuristicLab.Problems.MultiObjectiveTestFunctions/HeuristicLab.Problems.MultiObjectiveTestFunctions/3.3/Testfunctions/DTLZ4.cs	(revision 13451)
@@ -17,4 +17,15 @@
   public class DTLZ4 : MultiObjectiveTestFunction {
 
+    private int actualSolutionSize = 2;
+    public override int ActualSolutionSize {
+      get {
+        return actualSolutionSize;
+      }
+
+      set {
+        actualSolutionSize = value;
+      }
+    }
+
     public override DoubleMatrix Bounds {
       get {
@@ -25,7 +36,5 @@
     public override bool[] Maximization {
       get {
-        bool[] res = new bool[((ValueParameter<IntValue>)Parameters["SolutionSize"]).Value.Value];
-        for(int i =0; i < res.Length; i++)  res[i] = false; //TODO: diligent initialzation
-        return res;
+        return new bool[actualSolutionSize];
       }
     }
@@ -37,7 +46,8 @@
     }
 
-    public override int MaximumSolutionSize { //TODO ask Michael
+    public override int MaximumSolutionSize {
       get {
-        return ((ValueParameter<IntValue>)Parameters["ProblemSize"]).Value.Value;
+
+        return int.MaxValue;
       }
     }
@@ -45,5 +55,5 @@
     public override int MinimumProblemSize {
       get {
-        return 2;
+        return Math.Max(3, ActualSolutionSize+1);
       }
     }
@@ -52,14 +62,4 @@
       get {
         return 2;
-      }
-    }
-
-    public override int ActualSolutionSize {
-      get {
-        throw new NotImplementedException();
-      }
-
-      set {
-        throw new NotImplementedException();
       }
     }
@@ -77,8 +77,11 @@
 
     public override double[] Evaluate(RealVector r) {
-      return Evaluate(r, ((ValueParameter<IntValue>)Parameters["SolutionSize"]).Value.Value);
+      return Evaluate(r, ActualSolutionSize);
     }
 
     private double[] Evaluate(RealVector r, int objectives) {
+      if (r.Length < objectives) {
+        throw new Exception("The dimensionality of the problem(ProblemSize) must be larger or equal than the dimensionality of the solution(SolutionSize) ");
+      }
       double[] res = new double[objectives];
 
Index: /branches/HeuristicLab.Problems.MultiObjectiveTestFunctions/HeuristicLab.Problems.MultiObjectiveTestFunctions/3.3/Testfunctions/DTLZ5.cs
===================================================================
--- /branches/HeuristicLab.Problems.MultiObjectiveTestFunctions/HeuristicLab.Problems.MultiObjectiveTestFunctions/3.3/Testfunctions/DTLZ5.cs	(revision 13450)
+++ /branches/HeuristicLab.Problems.MultiObjectiveTestFunctions/HeuristicLab.Problems.MultiObjectiveTestFunctions/3.3/Testfunctions/DTLZ5.cs	(revision 13451)
@@ -17,4 +17,15 @@
   public class DTLZ5 : MultiObjectiveTestFunction {
 
+    private int actualSolutionSize = 2;
+    public override int ActualSolutionSize {
+      get {
+        return actualSolutionSize;
+      }
+
+      set {
+        actualSolutionSize = value;
+      }
+    }
+
     public override DoubleMatrix Bounds {
       get {
@@ -25,7 +36,5 @@
     public override bool[] Maximization {
       get {
-        bool[] res = new bool[((ValueParameter<IntValue>)Parameters["SolutionSize"]).Value.Value];
-        for(int i =0; i < res.Length; i++)  res[i] = false; //TODO: diligent initialzation
-        return res;
+        return new bool[actualSolutionSize];
       }
     }
@@ -37,7 +46,8 @@
     }
 
-    public override int MaximumSolutionSize { //TODO ask Michael
+    public override int MaximumSolutionSize {
       get {
-        return ((ValueParameter<IntValue>)Parameters["ProblemSize"]).Value.Value;
+
+        return int.MaxValue;
       }
     }
@@ -45,5 +55,5 @@
     public override int MinimumProblemSize {
       get {
-        return 2;
+        return Math.Max(2, ActualSolutionSize+1);
       }
     }
@@ -52,14 +62,4 @@
       get {
         return 2;
-      }
-    }
-
-    public override int ActualSolutionSize {
-      get {
-        throw new NotImplementedException();
-      }
-
-      set {
-        throw new NotImplementedException();
       }
     }
@@ -77,8 +77,11 @@
 
     public override double[] Evaluate(RealVector r) {
-      return Evaluate(r, ((ValueParameter<IntValue>)Parameters["SolutionSize"]).Value.Value);
+      return Evaluate(r, ActualSolutionSize);
     }
 
     private double[] Evaluate(RealVector r, int objectives) {
+      if (r.Length < objectives) {
+        throw new Exception("The dimensionality of the problem(ProblemSize) must be larger than the dimensionality of the solution(SolutionSize) ");
+      }
       double[] res = new double[objectives];
 
Index: /branches/HeuristicLab.Problems.MultiObjectiveTestFunctions/HeuristicLab.Problems.MultiObjectiveTestFunctions/3.3/Testfunctions/DTLZ6.cs
===================================================================
--- /branches/HeuristicLab.Problems.MultiObjectiveTestFunctions/HeuristicLab.Problems.MultiObjectiveTestFunctions/3.3/Testfunctions/DTLZ6.cs	(revision 13450)
+++ /branches/HeuristicLab.Problems.MultiObjectiveTestFunctions/HeuristicLab.Problems.MultiObjectiveTestFunctions/3.3/Testfunctions/DTLZ6.cs	(revision 13451)
@@ -17,4 +17,15 @@
   public class DTLZ6 : MultiObjectiveTestFunction {
 
+    private int actualSolutionSize = 2;
+    public override int ActualSolutionSize {
+      get {
+        return actualSolutionSize;
+      }
+
+      set {
+        actualSolutionSize = value;
+      }
+    }
+
     public override DoubleMatrix Bounds {
       get {
@@ -25,7 +36,5 @@
     public override bool[] Maximization {
       get {
-        bool[] res = new bool[((ValueParameter<IntValue>)Parameters["SolutionSize"]).Value.Value];
-        for(int i =0; i < res.Length; i++)  res[i] = false; //TODO: diligent initialzation
-        return res;
+        return new bool[actualSolutionSize];
       }
     }
@@ -37,7 +46,8 @@
     }
 
-    public override int MaximumSolutionSize { //TODO ask Michael
+    public override int MaximumSolutionSize {
       get {
-        return ((ValueParameter<IntValue>)Parameters["ProblemSize"]).Value.Value;
+
+        return int.MaxValue;
       }
     }
@@ -45,5 +55,5 @@
     public override int MinimumProblemSize {
       get {
-        return 2;
+        return Math.Max(2, ActualSolutionSize);
       }
     }
@@ -52,14 +62,4 @@
       get {
         return 2;
-      }
-    }
-
-    public override int ActualSolutionSize {
-      get {
-        throw new NotImplementedException();
-      }
-
-      set {
-        throw new NotImplementedException();
       }
     }
@@ -77,8 +77,11 @@
 
     public override double[] Evaluate(RealVector r) {
-      return Evaluate(r, ((ValueParameter<IntValue>)Parameters["SolutionSize"]).Value.Value);
+      return Evaluate(r, ActualSolutionSize);
     }
 
     private double[] Evaluate(RealVector r, int objectives) {
+      if (r.Length < objectives) {
+        throw new Exception("The dimensionality of the problem(ProblemSize) must be larger than or equal to the dimensionality of the solution(SolutionSize) ");
+      }
       double[] res = new double[objectives];
 
@@ -91,4 +94,5 @@
       length = Math.Sqrt(length);
       g = 1.0 + 9.0 / length * g;
+      if (length == 0) { g = 1; }
 
       //calculating f0...fM-2
Index: /branches/HeuristicLab.Problems.MultiObjectiveTestFunctions/HeuristicLab.Problems.MultiObjectiveTestFunctions/3.3/Testfunctions/DTLZ7.cs
===================================================================
--- /branches/HeuristicLab.Problems.MultiObjectiveTestFunctions/HeuristicLab.Problems.MultiObjectiveTestFunctions/3.3/Testfunctions/DTLZ7.cs	(revision 13450)
+++ /branches/HeuristicLab.Problems.MultiObjectiveTestFunctions/HeuristicLab.Problems.MultiObjectiveTestFunctions/3.3/Testfunctions/DTLZ7.cs	(revision 13451)
@@ -17,4 +17,15 @@
   public class DTLZ7 : MultiObjectiveTestFunction {
 
+    private int actualSolutionSize = 2;
+    public override int ActualSolutionSize {
+      get {
+        return actualSolutionSize;
+      }
+
+      set {
+        actualSolutionSize = value;
+      }
+    }
+
     public override DoubleMatrix Bounds {
       get {
@@ -25,7 +36,5 @@
     public override bool[] Maximization {
       get {
-        bool[] res = new bool[((ValueParameter<IntValue>)Parameters["SolutionSize"]).Value.Value];
-        for(int i =0; i < res.Length; i++)  res[i] = false; //TODO: diligent initialzation
-        return res;
+        return new bool[actualSolutionSize];
       }
     }
@@ -37,7 +46,8 @@
     }
 
-    public override int MaximumSolutionSize { //TODO ask Michael
+    public override int MaximumSolutionSize {
       get {
-        return ((ValueParameter<IntValue>)Parameters["ProblemSize"]).Value.Value;
+
+        return int.MaxValue;
       }
     }
@@ -45,5 +55,5 @@
     public override int MinimumProblemSize {
       get {
-        return 2;
+        return Math.Max(2, ActualSolutionSize*10);
       }
     }
@@ -52,14 +62,4 @@
       get {
         return 2;
-      }
-    }
-
-    public override int ActualSolutionSize {
-      get {
-        throw new NotImplementedException();
-      }
-
-      set {
-        throw new NotImplementedException();
       }
     }
@@ -77,24 +77,29 @@
 
     public override double[] Evaluate(RealVector r) {
-      return Evaluate(r, ((ValueParameter<IntValue>)Parameters["SolutionSize"]).Value.Value);
+      return Evaluate(r, ActualSolutionSize);
     }
 
     private double[] Evaluate(RealVector r, int objectives) {
+      if (r.Length < objectives) {
+        throw new Exception("The dimensionality of the problem(ProblemSize) must be larger than or equal to ten times the dimensionality of the solution(SolutionSize) ");
+      }
       double[] res = new double[objectives];
 
       //calculate f0...fM-1;
       double n = 10 * objectives;
-      for (int i = 0; i < objectives; i++) {
+      for (int i = 1; i <= objectives; i++) {
         double d = 0;
-        for (int j = (int)Math.Floor((i - 1) * n / objectives); j < (int)Math.Floor(i * n / objectives); j++) {
+        int c = 0;
+        for (int j = (int)Math.Floor((i - 1) * n / objectives); j < Math.Min((int)Math.Floor(i * n / objectives), r.Length); j++) {
           d += r[j];
+          c++;
         }
-        d *= 1 / Math.Floor(n / objectives);
-        res[i] = d;
+        d *= 1.0 / c;
+        res[i-1] = d;
       }
 
       //evaluate constraints g0...gM-2
       for (int i = 0; i < objectives - 1; i++) {
-        if (res[objectives - 1] + 4 * res[i] - 1 < 0) return null; //TODO null is not the way to go
+        if (res[objectives - 1] + 4 * res[i] - 1 < 0) return MultiObjectiveTestFunction.IllegalValue(objectives,Maximization); 
       }
       //evaluate gM-1
@@ -103,5 +108,5 @@
         for (int j = 0; j < i; j++) min = Math.Min(min, res[i] + res[j]);
       };
-      if (2 * res[objectives - 1] + min - 1 < 0) return null;  //TODO null is not the way to go
+      if (2 * res[objectives - 1] + min - 1 < 0) return MultiObjectiveTestFunction.IllegalValue(objectives, Maximization); 
 
       return res;
Index: /branches/HeuristicLab.Problems.MultiObjectiveTestFunctions/HeuristicLab.Problems.MultiObjectiveTestFunctions/3.3/Testfunctions/Kursawe.cs
===================================================================
--- /branches/HeuristicLab.Problems.MultiObjectiveTestFunctions/HeuristicLab.Problems.MultiObjectiveTestFunctions/3.3/Testfunctions/Kursawe.cs	(revision 13450)
+++ /branches/HeuristicLab.Problems.MultiObjectiveTestFunctions/HeuristicLab.Problems.MultiObjectiveTestFunctions/3.3/Testfunctions/Kursawe.cs	(revision 13451)
@@ -42,5 +42,5 @@
     public override int MinimumProblemSize {
       get {
-        return 2;
+        return 3;
       }
     }
@@ -75,11 +75,11 @@
       //objective 1
       double f0 = 0.0;
-      for (int i = 0; i < r.Length - 1; i++) {
+      for (int i = 0; i < 2; i++) {
         f0 += -10 * Math.Exp(-0.2 * Math.Sqrt(r[i] * r[i] + r[i + 1] * r[i + 1]));
       }
       //objective2
       double f1 = 0.0;
-      for (int i = 0; i < r.Length; i++) {
-        f1 += Math.Pow(Math.Abs(r[i]), 0.2) + 5 * Math.Sin(Math.Pow(r[i], 3));
+      for (int i = 0; i < 3; i++) {
+        f1 += Math.Pow(Math.Abs(r[i]), 0.8) + 5 * Math.Sin(Math.Pow(r[i], 3));
       }
 
Index: /branches/HeuristicLab.Problems.MultiObjectiveTestFunctions/HeuristicLab.Problems.MultiObjectiveTestFunctions/3.3/Testfunctions/MultiObjectiveTestFunction.cs
===================================================================
--- /branches/HeuristicLab.Problems.MultiObjectiveTestFunctions/HeuristicLab.Problems.MultiObjectiveTestFunctions/3.3/Testfunctions/MultiObjectiveTestFunction.cs	(revision 13450)
+++ /branches/HeuristicLab.Problems.MultiObjectiveTestFunctions/HeuristicLab.Problems.MultiObjectiveTestFunctions/3.3/Testfunctions/MultiObjectiveTestFunction.cs	(revision 13451)
@@ -31,7 +31,15 @@
   /// Base class for a test function evaluator.
   /// </summary>
-  [Item("Single-Objective Function", "Base class for single objective functions.")]
+  [Item("Multi-Objective Function", "Base class for multi objective functions.")]
   [StorableClass]
   public abstract class MultiObjectiveTestFunction : ParameterizedNamedItem, IMultiObjectiveTestFunction {
+    public static double[] IllegalValue(int size, bool[] maximization) {
+      double[] res = new double[size];
+      for(int i =0; i< size; i++) {
+        res[i] = maximization[i] ? Double.MinValue : Double.MaxValue;
+      }
+      return res;
+    }
+
     /// <summary>
     /// These operators should not change their name through the GUI
Index: /branches/HeuristicLab.Problems.MultiObjectiveTestFunctions/HeuristicLab.Problems.MultiObjectiveTestFunctions/3.3/Testfunctions/SchafferN2.cs
===================================================================
--- /branches/HeuristicLab.Problems.MultiObjectiveTestFunctions/HeuristicLab.Problems.MultiObjectiveTestFunctions/3.3/Testfunctions/SchafferN2.cs	(revision 13450)
+++ /branches/HeuristicLab.Problems.MultiObjectiveTestFunctions/HeuristicLab.Problems.MultiObjectiveTestFunctions/3.3/Testfunctions/SchafferN2.cs	(revision 13451)
@@ -77,5 +77,5 @@
       //objective1
       double f0;
-      if (x <= 11) f0 = -x;
+      if (x <= 1) f0 = -x;
       else if (x <= 3) f0 = x - 2;
       else if (x <= 4) f0 = 4 - x;
Index: /branches/HeuristicLab.Problems.MultiObjectiveTestFunctions/HeuristicLab.Problems.MultiObjectiveTestFunctions/3.3/Testfunctions/ZDT1.cs
===================================================================
--- /branches/HeuristicLab.Problems.MultiObjectiveTestFunctions/HeuristicLab.Problems.MultiObjectiveTestFunctions/3.3/Testfunctions/ZDT1.cs	(revision 13450)
+++ /branches/HeuristicLab.Problems.MultiObjectiveTestFunctions/HeuristicLab.Problems.MultiObjectiveTestFunctions/3.3/Testfunctions/ZDT1.cs	(revision 13451)
@@ -76,5 +76,6 @@
       for (int i = 1; i < r.Length; i++) g += r[i];
       g = 1.0 + 9.0 * g / (r.Length - 1);
-      return new double[] { r[0], g * (1.0 - Math.Sqrt(r[0] / g)) };
+      double f1 = g * (1.0 - Math.Sqrt(r[0] / g));
+      return new double[] { r[0], f1};
     }
   }
Index: /branches/HeuristicLab.Problems.MultiObjectiveTestFunctions/HeuristicLab.Problems.MultiObjectiveTestFunctions/3.3/Testfunctions/ZDT4.cs
===================================================================
--- /branches/HeuristicLab.Problems.MultiObjectiveTestFunctions/HeuristicLab.Problems.MultiObjectiveTestFunctions/3.3/Testfunctions/ZDT4.cs	(revision 13450)
+++ /branches/HeuristicLab.Problems.MultiObjectiveTestFunctions/HeuristicLab.Problems.MultiObjectiveTestFunctions/3.3/Testfunctions/ZDT4.cs	(revision 13451)
@@ -18,5 +18,5 @@
     public override DoubleMatrix Bounds {
       get {
-        return new DoubleMatrix(new double[,] { { -5, 5 } });   //TODO definition in the source is contradicting itself
+        return new DoubleMatrix(new double[,] { { 0, 1 } });   //definition in the source is contradicting itself the known paretofront is for [0,1] 
       }
     }
Index: /branches/HeuristicLab.Problems.MultiObjectiveTestFunctions/HeuristicLab.Problems.MultiObjectiveTestFunctions/3.3/Testfunctions/ZDT6.cs
===================================================================
--- /branches/HeuristicLab.Problems.MultiObjectiveTestFunctions/HeuristicLab.Problems.MultiObjectiveTestFunctions/3.3/Testfunctions/ZDT6.cs	(revision 13450)
+++ /branches/HeuristicLab.Problems.MultiObjectiveTestFunctions/HeuristicLab.Problems.MultiObjectiveTestFunctions/3.3/Testfunctions/ZDT6.cs	(revision 13451)
@@ -75,7 +75,8 @@
       double g = 0;
       for (int i = 1; i < r.Length; i++) g += r[i];
-      g = g = 1.0 + 9.0 * Math.Pow(g / (r.Length - 1), 0.25);
-      double d = r[0] / g;
-      return new double[] { 1 - Math.Exp(-4 * r[0]) * Math.Pow(Math.Sin(6 * Math.PI * r[0]), 6), g * (1.0 - d * d) };
+      g = 1.0 + 9.0 * Math.Pow(g / (r.Length - 1), 0.25);
+      double f1 = 1 - Math.Exp(-4 * r[0]) * Math.Pow(Math.Sin(6 * Math.PI * r[0]), 6);
+      double d = f1 / g;
+      return new double[] { f1, g*(1.0 - d * d) };
     }
   }
