Index: /trunk/sources/HeuristicLab.Problems.TSP/3.3/Evaluators/TSPCoordinatesPathEvaluator.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.TSP/3.3/Evaluators/TSPCoordinatesPathEvaluator.cs	(revision 2988)
+++ /trunk/sources/HeuristicLab.Problems.TSP/3.3/Evaluators/TSPCoordinatesPathEvaluator.cs	(revision 2988)
@@ -0,0 +1,71 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2010 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using HeuristicLab.Core;
+using HeuristicLab.Data;
+using HeuristicLab.Encodings.Permutation;
+using HeuristicLab.Parameters;
+using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+
+namespace HeuristicLab.Problems.TSP {
+  /// <summary>
+  /// A base class for operators which evaluate TSP solutions given in path representation using city coordinates.
+  /// </summary>
+  [Item("TSPCoordinatesPathEvaluator", "A base class for operators which evaluate TSP solutions given in path representation using city coordinates.")]
+  [EmptyStorableClass]
+  public abstract class TSPCoordinatesPathEvaluator : TSPEvaluator, ITSPCoordinatesPathEvaluator {
+    public ILookupParameter<Permutation> PermutationParameter {
+      get { return (ILookupParameter<Permutation>)Parameters["Permutation"]; }
+    }
+    public ILookupParameter<DoubleMatrixData> CoordinatesParameter {
+      get { return (ILookupParameter<DoubleMatrixData>)Parameters["Coordinates"]; }
+    }
+
+    protected TSPCoordinatesPathEvaluator()
+      : base() {
+      Parameters.Add(new LookupParameter<Permutation>("Permutation", "The TSP solution given in path representation which should be evaluated."));
+      Parameters.Add(new LookupParameter<DoubleMatrixData>("Coordinates", "The x- and y-Coordinates of the cities."));
+    }
+
+    public sealed override IOperation Apply() {
+      Permutation p = PermutationParameter.ActualValue;
+      DoubleMatrixData c = CoordinatesParameter.ActualValue;
+
+      double length = 0;
+      for (int i = 0; i < p.Length - 1; i++)
+        length += CalculateDistance(c[p[i], 0], c[p[i], 1], c[p[i + 1], 0], c[p[i + 1], 1]);
+      length += CalculateDistance(c[p[p.Length - 1], 0], c[p[p.Length - 1], 1], c[p[0], 0], c[p[0], 1]);
+      QualityParameter.ActualValue = new DoubleData(length);
+
+      return base.Apply();
+    }
+
+    /// <summary>
+    /// Calculates the distance between two points.
+    /// </summary>
+    /// <param name="x1">The x-coordinate of point 1.</param>
+    /// <param name="y1">The y-coordinate of point 1.</param>
+    /// <param name="x2">The x-coordinate of point 2.</param>
+    /// <param name="y2">The y-coordinate of point 2.</param>
+    /// <returns>The calculated distance.</returns>
+    protected abstract double CalculateDistance(double x1, double y1, double x2, double y2);
+  }
+}
Index: /trunk/sources/HeuristicLab.Problems.TSP/3.3/Evaluators/TSPDistanceMatrixPathEvaluator.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.TSP/3.3/Evaluators/TSPDistanceMatrixPathEvaluator.cs	(revision 2988)
+++ /trunk/sources/HeuristicLab.Problems.TSP/3.3/Evaluators/TSPDistanceMatrixPathEvaluator.cs	(revision 2988)
@@ -0,0 +1,62 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2010 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using HeuristicLab.Core;
+using HeuristicLab.Data;
+using HeuristicLab.Encodings.Permutation;
+using HeuristicLab.Parameters;
+using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+
+namespace HeuristicLab.Problems.TSP {
+  /// <summary>
+  /// An operator which evaluates TSP solutions given in path representation using a distance matrix.
+  /// </summary>
+  [Item("TSPDistanceMatrixPathEvaluator", "An operator which evaluates TSP solutions given in path representation using a distance matrix.")]
+  [Creatable("Test")]
+  [EmptyStorableClass]
+  public sealed class TSPDistanceMatrixPathEvaluator : TSPEvaluator, ITSPDistanceMatrixPathEvaluator {
+    public ILookupParameter<Permutation> PermutationParameter {
+      get { return (ILookupParameter<Permutation>)Parameters["Permutation"]; }
+    }
+    public ILookupParameter<DoubleMatrixData> DistanceMatrixParameter {
+      get { return (ILookupParameter<DoubleMatrixData>)Parameters["DistanceMatrix"]; }
+    }
+
+    public TSPDistanceMatrixPathEvaluator()
+      : base() {
+      Parameters.Add(new LookupParameter<Permutation>("Permutation", "The TSP solution given in path representation which should be evaluated."));
+      Parameters.Add(new LookupParameter<DoubleMatrixData>("DistanceMatrix", "The distance matrix of the cities."));
+    }
+
+    public sealed override IOperation Apply() {
+      Permutation p = PermutationParameter.ActualValue;
+      DoubleMatrixData d = DistanceMatrixParameter.ActualValue;
+
+      double length = 0;
+      for (int i = 0; i < p.Length - 1; i++)
+        length += d[p[i], p[i + 1]];
+      length += d[p[p.Length - 1], p[0]];
+      QualityParameter.ActualValue = new DoubleData(length);
+
+      return base.Apply();
+    }
+  }
+}
Index: /trunk/sources/HeuristicLab.Problems.TSP/3.3/Evaluators/TSPEvaluator.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.TSP/3.3/Evaluators/TSPEvaluator.cs	(revision 2988)
+++ /trunk/sources/HeuristicLab.Problems.TSP/3.3/Evaluators/TSPEvaluator.cs	(revision 2988)
@@ -0,0 +1,44 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2010 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using HeuristicLab.Core;
+using HeuristicLab.Data;
+using HeuristicLab.Operators;
+using HeuristicLab.Parameters;
+using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+
+namespace HeuristicLab.Problems.TSP {
+  /// <summary>
+  /// A base class for operators which evaluate TSP solutions.
+  /// </summary>
+  [Item("TSPEvaluator", "A base class for operators which evaluate TSP solutions.")]
+  [EmptyStorableClass]
+  public abstract class TSPEvaluator : SingleSuccessorOperator, ITSPEvaluator {
+    public ILookupParameter<DoubleData> QualityParameter {
+      get { return (ILookupParameter<DoubleData>)Parameters["Quality"]; }
+    }
+
+    protected TSPEvaluator()
+      : base() {
+      Parameters.Add(new LookupParameter<DoubleData>("Quality", "The evaluated quality of the TSP solution."));
+    }
+  }
+}
Index: /trunk/sources/HeuristicLab.Problems.TSP/3.3/Evaluators/TSPRoundedEuclideanPathEvaluator.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.TSP/3.3/Evaluators/TSPRoundedEuclideanPathEvaluator.cs	(revision 2988)
+++ /trunk/sources/HeuristicLab.Problems.TSP/3.3/Evaluators/TSPRoundedEuclideanPathEvaluator.cs	(revision 2988)
@@ -0,0 +1,46 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2010 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using HeuristicLab.Core;
+using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+
+namespace HeuristicLab.Problems.TSP {
+  /// <summary>
+  /// An operator which evaluates TSP solutions given in path representation using the rounded Euclidean distance metric.
+  /// </summary>
+  [Item("TSPRoundedEuclideanPathEvaluator", "An operator which evaluates TSP solutions given in path representation using the rounded Euclidean distance metric.")]
+  [Creatable("Test")]
+  [EmptyStorableClass]
+  public sealed class TSPRoundedEuclideanPathEvaluator : TSPCoordinatesPathEvaluator {
+    /// <summary>
+    /// Calculates the distance between two points using the rounded Euclidean distance metric.
+    /// </summary>
+    /// <param name="x1">The x-coordinate of point 1.</param>
+    /// <param name="y1">The y-coordinate of point 1.</param>
+    /// <param name="x2">The x-coordinate of point 2.</param>
+    /// <param name="y2">The y-coordinate of point 2.</param>
+    /// <returns>The calculated distance.</returns>
+    protected override double CalculateDistance(double x1, double y1, double x2, double y2) {
+      return Math.Round(Math.Sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2)));
+    }
+  }
+}
Index: /trunk/sources/HeuristicLab.Problems.TSP/3.3/HeuristicLab.Problems.TSP-3.3.csproj
===================================================================
--- /trunk/sources/HeuristicLab.Problems.TSP/3.3/HeuristicLab.Problems.TSP-3.3.csproj	(revision 2987)
+++ /trunk/sources/HeuristicLab.Problems.TSP/3.3/HeuristicLab.Problems.TSP-3.3.csproj	(revision 2988)
@@ -84,15 +84,14 @@
   </ItemGroup>
   <ItemGroup>
-    <Compile Include="TSPCoordinatesPathEvaluator.cs" />
-    <Compile Include="ITSPDistanceMatrixPathEvaluator.cs" />
-    <Compile Include="ITSPCoordinatesPathEvaluator.cs" />
-    <Compile Include="ITSPPathEvaluator.cs" />
+    <Compile Include="Evaluators\TSPCoordinatesPathEvaluator.cs" />
+    <Compile Include="Evaluators\TSPDistanceMatrixPathEvaluator.cs" />
+    <Compile Include="Evaluators\TSPEvaluator.cs" />
+    <Compile Include="Evaluators\TSPRoundedEuclideanPathEvaluator.cs" />
+    <Compile Include="Interfaces\ITSPCoordinatesPathEvaluator.cs" />
+    <Compile Include="Interfaces\ITSPDistanceMatrixPathEvaluator.cs" />
+    <Compile Include="Interfaces\ITSPEvaluator.cs" />
+    <Compile Include="Interfaces\ITSPPathEvaluator.cs" />
     <Compile Include="HeuristicLabProblemsTSPPlugin.cs" />
-    <Compile Include="TSPEvaluator.cs" />
-    <Compile Include="ITSPEvaluator.cs" />
-    <Compile Include="TSPDistanceMatrixPathEvaluator.cs" />
     <Compile Include="TSPLIBParser.cs" />
-    <Compile Include="TSPRoundedEuclideanPathEvaluator.cs" />
-    <Compile Include="TSPPathEvaluator.cs" />
     <Compile Include="TSP.cs" />
     <Compile Include="Properties\AssemblyInfo.cs" />
Index: unk/sources/HeuristicLab.Problems.TSP/3.3/ITSPCoordinatesPathEvaluator.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.TSP/3.3/ITSPCoordinatesPathEvaluator.cs	(revision 2987)
+++ 	(revision )
@@ -1,32 +1,0 @@
-#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2010 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
- *
- * This file is part of HeuristicLab.
- *
- * HeuristicLab is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * HeuristicLab is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
- */
-#endregion
-
-using HeuristicLab.Core;
-using HeuristicLab.Data;
-
-namespace HeuristicLab.Problems.TSP {
-  /// <summary>
-  /// An interface which represents an evaluation operator which evaluates TSP solutions given in path representation using city coordinates.
-  /// </summary>
-  public interface ITSPCoordinatesPathEvaluator : ITSPPathEvaluator {
-    ILookupParameter<DoubleMatrixData> CoordinatesParameter { get; }
-  }
-}
Index: unk/sources/HeuristicLab.Problems.TSP/3.3/ITSPDistanceMatrixPathEvaluator.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.TSP/3.3/ITSPDistanceMatrixPathEvaluator.cs	(revision 2987)
+++ 	(revision )
@@ -1,32 +1,0 @@
-#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2010 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
- *
- * This file is part of HeuristicLab.
- *
- * HeuristicLab is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * HeuristicLab is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
- */
-#endregion
-
-using HeuristicLab.Core;
-using HeuristicLab.Data;
-
-namespace HeuristicLab.Problems.TSP {
-  /// <summary>
-  /// An interface which represents an evaluation operator which evaluates TSP solutions given in path representation using a distance matrix.
-  /// </summary>
-  public interface ITSPDistanceMatrixPathEvaluator : ITSPPathEvaluator {
-    ILookupParameter<DoubleMatrixData> DistanceMatrixParameter { get; }
-  }
-}
Index: unk/sources/HeuristicLab.Problems.TSP/3.3/ITSPEvaluator.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.TSP/3.3/ITSPEvaluator.cs	(revision 2987)
+++ 	(revision )
@@ -1,29 +1,0 @@
-#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2010 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
- *
- * This file is part of HeuristicLab.
- *
- * HeuristicLab is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * HeuristicLab is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
- */
-#endregion
-
-using HeuristicLab.Optimization;
-
-namespace HeuristicLab.Problems.TSP {
-  /// <summary>
-  /// An interface which represents an evaluation operator for Traveling Salesman Problems.
-  /// </summary>
-  public interface ITSPEvaluator : ISingleObjectiveEvaluator { }
-}
Index: unk/sources/HeuristicLab.Problems.TSP/3.3/ITSPPathEvaluator.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.TSP/3.3/ITSPPathEvaluator.cs	(revision 2987)
+++ 	(revision )
@@ -1,32 +1,0 @@
-#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2010 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
- *
- * This file is part of HeuristicLab.
- *
- * HeuristicLab is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * HeuristicLab is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
- */
-#endregion
-
-using HeuristicLab.Core;
-using HeuristicLab.Encodings.Permutation;
-
-namespace HeuristicLab.Problems.TSP {
-  /// <summary>
-  /// An interface which represents an evaluation operator which evaluates TSP solutions given in path representation.
-  /// </summary>
-  public interface ITSPPathEvaluator : ITSPEvaluator {
-    ILookupParameter<Permutation> PermutationParameter { get; }
-  }
-}
Index: /trunk/sources/HeuristicLab.Problems.TSP/3.3/Interfaces/ITSPCoordinatesPathEvaluator.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.TSP/3.3/Interfaces/ITSPCoordinatesPathEvaluator.cs	(revision 2988)
+++ /trunk/sources/HeuristicLab.Problems.TSP/3.3/Interfaces/ITSPCoordinatesPathEvaluator.cs	(revision 2988)
@@ -0,0 +1,32 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2010 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using HeuristicLab.Core;
+using HeuristicLab.Data;
+
+namespace HeuristicLab.Problems.TSP {
+  /// <summary>
+  /// An interface which represents an evaluation operator which evaluates TSP solutions given in path representation using city coordinates.
+  /// </summary>
+  public interface ITSPCoordinatesPathEvaluator : ITSPPathEvaluator {
+    ILookupParameter<DoubleMatrixData> CoordinatesParameter { get; }
+  }
+}
Index: /trunk/sources/HeuristicLab.Problems.TSP/3.3/Interfaces/ITSPDistanceMatrixPathEvaluator.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.TSP/3.3/Interfaces/ITSPDistanceMatrixPathEvaluator.cs	(revision 2988)
+++ /trunk/sources/HeuristicLab.Problems.TSP/3.3/Interfaces/ITSPDistanceMatrixPathEvaluator.cs	(revision 2988)
@@ -0,0 +1,32 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2010 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using HeuristicLab.Core;
+using HeuristicLab.Data;
+
+namespace HeuristicLab.Problems.TSP {
+  /// <summary>
+  /// An interface which represents an evaluation operator which evaluates TSP solutions given in path representation using a distance matrix.
+  /// </summary>
+  public interface ITSPDistanceMatrixPathEvaluator : ITSPPathEvaluator {
+    ILookupParameter<DoubleMatrixData> DistanceMatrixParameter { get; }
+  }
+}
Index: /trunk/sources/HeuristicLab.Problems.TSP/3.3/Interfaces/ITSPEvaluator.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.TSP/3.3/Interfaces/ITSPEvaluator.cs	(revision 2988)
+++ /trunk/sources/HeuristicLab.Problems.TSP/3.3/Interfaces/ITSPEvaluator.cs	(revision 2988)
@@ -0,0 +1,29 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2010 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using HeuristicLab.Optimization;
+
+namespace HeuristicLab.Problems.TSP {
+  /// <summary>
+  /// An interface which represents an evaluation operator for Traveling Salesman Problems.
+  /// </summary>
+  public interface ITSPEvaluator : ISingleObjectiveEvaluator { }
+}
Index: /trunk/sources/HeuristicLab.Problems.TSP/3.3/Interfaces/ITSPPathEvaluator.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.TSP/3.3/Interfaces/ITSPPathEvaluator.cs	(revision 2988)
+++ /trunk/sources/HeuristicLab.Problems.TSP/3.3/Interfaces/ITSPPathEvaluator.cs	(revision 2988)
@@ -0,0 +1,32 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2010 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using HeuristicLab.Core;
+using HeuristicLab.Encodings.Permutation;
+
+namespace HeuristicLab.Problems.TSP {
+  /// <summary>
+  /// An interface which represents an evaluation operator which evaluates TSP solutions given in path representation.
+  /// </summary>
+  public interface ITSPPathEvaluator : ITSPEvaluator {
+    ILookupParameter<Permutation> PermutationParameter { get; }
+  }
+}
Index: unk/sources/HeuristicLab.Problems.TSP/3.3/TSPCoordinatesPathEvaluator.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.TSP/3.3/TSPCoordinatesPathEvaluator.cs	(revision 2987)
+++ 	(revision )
@@ -1,59 +1,0 @@
-#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2010 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
- *
- * This file is part of HeuristicLab.
- *
- * HeuristicLab is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * HeuristicLab is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
- */
-#endregion
-
-using HeuristicLab.Core;
-using HeuristicLab.Data;
-using HeuristicLab.Parameters;
-using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
-
-namespace HeuristicLab.Problems.TSP {
-  /// <summary>
-  /// A base class for operators which evaluate TSP solutions given in path representation using city coordinates.
-  /// </summary>
-  [Item("TSPCoordinatesPathEvaluator", "A base class for operators which evaluate TSP solutions given in path representation using city coordinates.")]
-  [EmptyStorableClass]
-  public abstract class TSPCoordinatesPathEvaluator : TSPPathEvaluator, ITSPCoordinatesPathEvaluator {
-    public ILookupParameter<DoubleMatrixData> CoordinatesParameter {
-      get { return (ILookupParameter<DoubleMatrixData>)Parameters["Coordinates"]; }
-    }
-
-    protected TSPCoordinatesPathEvaluator()
-      : base() {
-      Parameters.Add(new LookupParameter<DoubleMatrixData>("Coordinates", "The x- and y-Coordinates of the cities."));
-    }
-
-    protected sealed override double CalculateDistance(int a, int b) {
-      DoubleMatrixData coordinates = CoordinatesParameter.ActualValue;
-      return CalculateDistance(coordinates[a, 0], coordinates[a, 1],
-                               coordinates[b, 0], coordinates[b, 1]);
-    }
-
-    /// <summary>
-    /// Calculates the distance between two points.
-    /// </summary>
-    /// <param name="x1">The x-coordinate of point 1.</param>
-    /// <param name="y1">The y-coordinate of point 1.</param>
-    /// <param name="x2">The x-coordinate of point 2.</param>
-    /// <param name="y2">The y-coordinate of point 2.</param>
-    /// <returns>The calculated distance.</returns>
-    protected abstract double CalculateDistance(double x1, double y1, double x2, double y2);
-  }
-}
Index: unk/sources/HeuristicLab.Problems.TSP/3.3/TSPDistanceMatrixPathEvaluator.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.TSP/3.3/TSPDistanceMatrixPathEvaluator.cs	(revision 2987)
+++ 	(revision )
@@ -1,49 +1,0 @@
-#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2010 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
- *
- * This file is part of HeuristicLab.
- *
- * HeuristicLab is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * HeuristicLab is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
- */
-#endregion
-
-using HeuristicLab.Core;
-using HeuristicLab.Data;
-using HeuristicLab.Parameters;
-using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
-
-namespace HeuristicLab.Problems.TSP {
-  /// <summary>
-  /// An operator which evaluates TSP solutions given in path representation using a distance matrix.
-  /// </summary>
-  [Item("TSPDistanceMatrixPathEvaluator", "An operator which evaluates TSP solutions given in path representation using a distance matrix.")]
-  [Creatable("Test")]
-  [EmptyStorableClass]
-  public sealed class TSPDistanceMatrixPathEvaluator : TSPPathEvaluator, ITSPDistanceMatrixPathEvaluator {
-    public ILookupParameter<DoubleMatrixData> DistanceMatrixParameter {
-      get { return (ILookupParameter<DoubleMatrixData>)Parameters["DistanceMatrix"]; }
-    }
-
-    public TSPDistanceMatrixPathEvaluator()
-      : base() {
-      Parameters.Add(new LookupParameter<DoubleMatrixData>("DistanceMatrix", "The distance matrix of the cities."));
-    }
-
-    protected override double CalculateDistance(int a, int b) {
-      DoubleMatrixData distanceMatrix = DistanceMatrixParameter.ActualValue;
-      return distanceMatrix[a, b];
-    }
-  }
-}
Index: unk/sources/HeuristicLab.Problems.TSP/3.3/TSPEvaluator.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.TSP/3.3/TSPEvaluator.cs	(revision 2987)
+++ 	(revision )
@@ -1,44 +1,0 @@
-#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2010 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
- *
- * This file is part of HeuristicLab.
- *
- * HeuristicLab is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * HeuristicLab is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
- */
-#endregion
-
-using HeuristicLab.Core;
-using HeuristicLab.Data;
-using HeuristicLab.Operators;
-using HeuristicLab.Parameters;
-using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
-
-namespace HeuristicLab.Problems.TSP {
-  /// <summary>
-  /// A base class for operators which evaluate TSP solutions.
-  /// </summary>
-  [Item("TSPEvaluator", "A base class for operators which evaluate TSP solutions.")]
-  [EmptyStorableClass]
-  public abstract class TSPEvaluator : SingleSuccessorOperator, ITSPEvaluator {
-    public ILookupParameter<DoubleData> QualityParameter {
-      get { return (ILookupParameter<DoubleData>)Parameters["Quality"]; }
-    }
-
-    protected TSPEvaluator()
-      : base() {
-      Parameters.Add(new LookupParameter<DoubleData>("Quality", "The evaluated quality of the TSP solution."));
-    }
-  }
-}
Index: unk/sources/HeuristicLab.Problems.TSP/3.3/TSPPathEvaluator.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.TSP/3.3/TSPPathEvaluator.cs	(revision 2987)
+++ 	(revision )
@@ -1,64 +1,0 @@
-#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2010 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
- *
- * This file is part of HeuristicLab.
- *
- * HeuristicLab is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * HeuristicLab is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
- */
-#endregion
-
-using HeuristicLab.Core;
-using HeuristicLab.Data;
-using HeuristicLab.Encodings.Permutation;
-using HeuristicLab.Parameters;
-using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
-
-namespace HeuristicLab.Problems.TSP {
-  /// <summary>
-  /// A base class for operators which evaluate TSP solutions given in path representation.
-  /// </summary>
-  [Item("TSPPathEvaluator", "A base class for operators which evaluate TSP solutions given in path representation.")]
-  [EmptyStorableClass]
-  public abstract class TSPPathEvaluator : TSPEvaluator, ITSPPathEvaluator {
-    public ILookupParameter<Permutation> PermutationParameter {
-      get { return (ILookupParameter<Permutation>)Parameters["Permutation"]; }
-    }
-
-    protected TSPPathEvaluator()
-      : base() {
-      Parameters.Add(new LookupParameter<Permutation>("Permutation", "The TSP solution given in path representation which should be evaluated."));
-    }
-
-    public sealed override IOperation Apply() {
-      Permutation permutation = PermutationParameter.ActualValue;
-
-      double length = 0;
-      for (int i = 0; i < permutation.Length - 1; i++)
-        length += CalculateDistance(permutation[i], permutation[i + 1]);
-      length += CalculateDistance(permutation[permutation.Length - 1], permutation[0]);
-      QualityParameter.ActualValue = new DoubleData(length);
-
-      return base.Apply();
-    }
-
-    /// <summary>
-    /// Calculates the distance between two cities.
-    /// </summary>
-    /// <param name="a">The index of the first city.</param>
-    /// <param name="b">The index of the second city.</param>
-    /// <returns>The calculated distance.</returns>
-    protected abstract double CalculateDistance(int a, int b);
-  }
-}
Index: unk/sources/HeuristicLab.Problems.TSP/3.3/TSPRoundedEuclideanPathEvaluator.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.TSP/3.3/TSPRoundedEuclideanPathEvaluator.cs	(revision 2987)
+++ 	(revision )
@@ -1,46 +1,0 @@
-#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2010 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
- *
- * This file is part of HeuristicLab.
- *
- * HeuristicLab is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * HeuristicLab is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
- */
-#endregion
-
-using System;
-using HeuristicLab.Core;
-using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
-
-namespace HeuristicLab.Problems.TSP {
-  /// <summary>
-  /// An operator which evaluates TSP solutions given in path representation using the rounded Euclidean distance metric.
-  /// </summary>
-  [Item("TSPRoundedEuclideanPathEvaluator", "An operator which evaluates TSP solutions given in path representation using the rounded Euclidean distance metric.")]
-  [Creatable("Test")]
-  [EmptyStorableClass]
-  public sealed class TSPRoundedEuclideanPathEvaluator : TSPCoordinatesPathEvaluator {
-    /// <summary>
-    /// Calculates the distance between two points using the rounded Euclidean distance metric.
-    /// </summary>
-    /// <param name="x1">The x-coordinate of point 1.</param>
-    /// <param name="y1">The y-coordinate of point 1.</param>
-    /// <param name="x2">The x-coordinate of point 2.</param>
-    /// <param name="y2">The y-coordinate of point 2.</param>
-    /// <returns>The calculated distance.</returns>
-    protected override double CalculateDistance(double x1, double y1, double x2, double y2) {
-      return Math.Round(Math.Sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2)));
-    }
-  }
-}
