Index: branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/ProblemInstances/SingleDepotVRP/CVRP/CVRPEvaluator.cs
===================================================================
--- branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/ProblemInstances/SingleDepotVRP/CVRP/CVRPEvaluator.cs	(revision 6838)
+++ branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/ProblemInstances/SingleDepotVRP/CVRP/CVRPEvaluator.cs	(revision 6851)
@@ -38,5 +38,5 @@
   [Item("CVRPEvaluator", "Represents a single depot CVRP evaluator.")]
   [StorableClass]
-  public class CVRPEvaluator: SingleDepotVRPEvaluator {
+  public class CVRPEvaluator: VRPEvaluator {
     public ILookupParameter<DoubleValue> OverloadParameter {
       get { return (ILookupParameter<DoubleValue>)Parameters["Overload"]; }
@@ -79,5 +79,5 @@
 
         //drive there
-        double currentDistace = instance.GetDistance(start, end);
+        double currentDistace = instance.GetDistance(start, end, solution);
         distance += currentDistace;
 
@@ -103,5 +103,5 @@
     }
 
-    protected override double GetTourInsertionCosts(IVRPProblemInstance instance, TourInsertionInfo tourInsertionInfo, int index, int customer, 
+    protected override double GetTourInsertionCosts(IVRPProblemInstance instance, IVRPEncoding solution, TourInsertionInfo tourInsertionInfo, int index, int customer, 
       out bool feasible) {
       CVRPInsertionInfo insertionInfo = tourInsertionInfo.GetStopInsertionInfo(index) as CVRPInsertionInfo;
@@ -113,8 +113,8 @@
       double overloadPenalty = cvrp.OverloadPenalty.Value;
 
-      double distance = instance.GetDistance(insertionInfo.Start, insertionInfo.End);
+      double distance = instance.GetDistance(insertionInfo.Start, insertionInfo.End, solution);
       double newDistance =
-        instance.GetDistance(insertionInfo.Start, customer) +
-        instance.GetDistance(customer, insertionInfo.End);
+        instance.GetDistance(insertionInfo.Start, customer, solution) +
+        instance.GetDistance(customer, insertionInfo.End, solution);
       costs += instance.DistanceFactor.Value * (newDistance - distance);
 
Index: branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/ProblemInstances/SingleDepotVRP/CVRP/CVRPTW/CVRPPDTW/CVRPPDTWEvaluator.cs
===================================================================
--- branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/ProblemInstances/SingleDepotVRP/CVRP/CVRPTW/CVRPPDTW/CVRPPDTWEvaluator.cs	(revision 6838)
+++ branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/ProblemInstances/SingleDepotVRP/CVRP/CVRPTW/CVRPPDTW/CVRPPDTWEvaluator.cs	(revision 6851)
@@ -85,5 +85,5 @@
 
         //drive there
-        double currentDistace = vrptw.GetDistance(start, end);
+        double currentDistace = vrptw.GetDistance(start, end, solution);
         time += currentDistace;
         distance += currentDistace;
@@ -166,5 +166,5 @@
     }
 
-    protected override double GetTourInsertionCosts(IVRPProblemInstance instance, TourInsertionInfo tourInsertionInfo, int index, int customer, 
+    protected override double GetTourInsertionCosts(IVRPProblemInstance instance, IVRPEncoding solution, TourInsertionInfo tourInsertionInfo, int index, int customer, 
       out bool feasible) {
       CVRPPDTWInsertionInfo insertionInfo = tourInsertionInfo.GetStopInsertionInfo(index) as CVRPPDTWInsertionInfo;
@@ -187,8 +187,8 @@
       double pickupPenalty = pdp.PickupViolationPenalty.Value;
 
-      double distance = instance.GetDistance(insertionInfo.Start, insertionInfo.End);
+      double distance = instance.GetDistance(insertionInfo.Start, insertionInfo.End, solution);
       double newDistance =
-        instance.GetDistance(insertionInfo.Start, customer) +
-        instance.GetDistance(customer, insertionInfo.End);
+        instance.GetDistance(insertionInfo.Start, customer, solution) +
+        instance.GetDistance(customer, insertionInfo.End, solution);
       costs += instance.DistanceFactor.Value * (newDistance - distance);
 
@@ -215,5 +215,5 @@
       if (index > 0)
         time = (tourInsertionInfo.GetStopInsertionInfo(index - 1) as CVRPTWInsertionInfo).LeaveTime;
-      time += instance.GetDistance(insertionInfo.Start, customer);
+      time += instance.GetDistance(insertionInfo.Start, customer, solution);
       if (time > dueTime[customer]) {
         tardiness += time - dueTime[customer];
@@ -222,5 +222,5 @@
         time += readyTime[customer] - time;
       time += serviceTimes[customer];
-      time += instance.GetDistance(customer, insertionInfo.End);
+      time += instance.GetDistance(customer, insertionInfo.End, solution);
 
       double additionalTime = time - (tourInsertionInfo.GetStopInsertionInfo(index) as CVRPTWInsertionInfo).ArrivalTime;
Index: branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/ProblemInstances/SingleDepotVRP/CVRP/CVRPTW/CVRPTWEvaluator.cs
===================================================================
--- branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/ProblemInstances/SingleDepotVRP/CVRP/CVRPTW/CVRPTWEvaluator.cs	(revision 6838)
+++ branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/ProblemInstances/SingleDepotVRP/CVRP/CVRPTW/CVRPTWEvaluator.cs	(revision 6851)
@@ -92,5 +92,5 @@
 
         //drive there
-        double currentDistace = vrptw.GetDistance(start, end);
+        double currentDistace = vrptw.GetDistance(start, end, solution);
         time += currentDistace;
         distance += currentDistace;
@@ -150,5 +150,5 @@
     }
 
-    protected override double GetTourInsertionCosts(IVRPProblemInstance instance, TourInsertionInfo tourInsertionInfo, int index, int customer,
+    protected override double GetTourInsertionCosts(IVRPProblemInstance instance, IVRPEncoding solution, TourInsertionInfo tourInsertionInfo, int index, int customer,
       out bool feasible) {
       CVRPTWInsertionInfo insertionInfo = tourInsertionInfo.GetStopInsertionInfo(index) as CVRPTWInsertionInfo;
@@ -166,8 +166,8 @@
       double tardinessPenalty = vrptw.TardinessPenalty.Value;
 
-      double distance = instance.GetDistance(insertionInfo.Start, insertionInfo.End);
+      double distance = instance.GetDistance(insertionInfo.Start, insertionInfo.End, solution);
       double newDistance =
-        instance.GetDistance(insertionInfo.Start, customer) +
-        instance.GetDistance(customer, insertionInfo.End);
+        instance.GetDistance(insertionInfo.Start, customer, solution) +
+        instance.GetDistance(customer, insertionInfo.End, solution);
       costs += instance.DistanceFactor.Value * (newDistance - distance);
 
@@ -186,5 +186,5 @@
       if (index > 0)
         time = (tourInsertionInfo.GetStopInsertionInfo(index - 1) as CVRPTWInsertionInfo).LeaveTime;
-      time += instance.GetDistance(insertionInfo.Start, customer);
+      time += instance.GetDistance(insertionInfo.Start, customer, solution);
       if (time > dueTime[customer]) {
         tardiness += time - dueTime[customer];
@@ -193,5 +193,5 @@
         time += readyTime[customer] - time;
       time += serviceTimes[customer];
-      time += instance.GetDistance(customer, insertionInfo.End);
+      time += instance.GetDistance(customer, insertionInfo.End, solution);
 
       double additionalTime = time - (tourInsertionInfo.GetStopInsertionInfo(index) as CVRPTWInsertionInfo).ArrivalTime;
Index: branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/ProblemInstances/SingleDepotVRP/SingleDepotVRPEvaluator.cs
===================================================================
--- branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/ProblemInstances/SingleDepotVRP/SingleDepotVRPEvaluator.cs	(revision 6838)
+++ branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/ProblemInstances/SingleDepotVRP/SingleDepotVRPEvaluator.cs	(revision 6851)
@@ -57,5 +57,5 @@
 
         //drive there
-        double currentDistace = instance.GetDistance(start, end);
+        double currentDistace = instance.GetDistance(start, end, solution);
         distance += currentDistace;
 
@@ -75,5 +75,5 @@
     }
 
-    protected override double GetTourInsertionCosts(IVRPProblemInstance instance, TourInsertionInfo tourInsertionInfo, int index, int customer,
+    protected override double GetTourInsertionCosts(IVRPProblemInstance instance, IVRPEncoding solution, TourInsertionInfo tourInsertionInfo, int index, int customer,
       out bool feasible) {
       StopInsertionInfo insertionInfo = tourInsertionInfo.GetStopInsertionInfo(index);
@@ -82,8 +82,8 @@
       feasible = true;
 
-      double distance = instance.GetDistance(insertionInfo.Start, insertionInfo.End);
+      double distance = instance.GetDistance(insertionInfo.Start, insertionInfo.End, solution);
       double newDistance =
-        instance.GetDistance(insertionInfo.Start, customer) +
-        instance.GetDistance(customer, insertionInfo.End);
+        instance.GetDistance(insertionInfo.Start, customer, solution) +
+        instance.GetDistance(customer, insertionInfo.End, solution);
 
       costs += instance.DistanceFactor.Value * (newDistance - distance);
