Index: trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Alba/Moves/LambdaInterchange/LambdaInterchangeMove.cs
===================================================================
--- trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Alba/Moves/LambdaInterchange/LambdaInterchangeMove.cs	(revision 4204)
+++ trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Alba/Moves/LambdaInterchange/LambdaInterchangeMove.cs	(revision 4205)
@@ -25,9 +25,11 @@
 using HeuristicLab.Common;
 using System.Collections.Generic;
+using HeuristicLab.Problems.VehicleRouting.Encodings.General;
+using HeuristicLab.Data;
 
 namespace HeuristicLab.Problems.VehicleRouting.Encodings.Alba {
   [Item("InversionMove", "Item that describes a lambda move on an Alba VRP representation.")]
   [StorableClass]
-  public class LambdaInterchangeMove: Item {
+  public class LambdaInterchangeMove: Item, IVRPMove {
     [Storable]
     public int Tour1 { get; protected set; }
@@ -83,4 +85,25 @@
       return clone;
     }
+
+    #region IVRPMove Members
+
+    public TourEvaluation GetMoveQuality(
+      IVRPEncoding individual, 
+      DoubleArray dueTimeArray, DoubleArray serviceTimeArray, DoubleArray readyTimeArray, 
+      DoubleArray demandArray, DoubleValue capacity, DoubleMatrix coordinates,
+      DoubleValue fleetUsageFactor, DoubleValue timeFactor, DoubleValue distanceFactor,
+      DoubleValue overloadPenalty, DoubleValue tardinessPenalty,
+      ILookupParameter<DoubleMatrix> distanceMatrix, Data.BoolValue useDistanceMatrix) {
+        return LambdaInterchangeMoveEvaluator.GetMoveQuality(individual as AlbaEncoding, this,
+          dueTimeArray, serviceTimeArray, readyTimeArray, demandArray, capacity,
+          coordinates, fleetUsageFactor, timeFactor, distanceFactor,
+          overloadPenalty, tardinessPenalty, distanceMatrix, useDistanceMatrix);
+    }
+
+    public void MakeMove(IRandom random, IVRPEncoding individual) {
+      LambdaInterchangeMoveMaker.Apply(individual as AlbaEncoding, this);
+    }
+
+    #endregion
   }
 }
Index: trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Alba/Moves/LambdaInterchange/LambdaInterchangeMoveEvaluator.cs
===================================================================
--- trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Alba/Moves/LambdaInterchange/LambdaInterchangeMoveEvaluator.cs	(revision 4204)
+++ trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Alba/Moves/LambdaInterchange/LambdaInterchangeMoveEvaluator.cs	(revision 4205)
@@ -25,4 +25,5 @@
 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
 using HeuristicLab.Problems.VehicleRouting.Encodings.Alba;
+using HeuristicLab.Data;
 
 namespace HeuristicLab.Problems.VehicleRouting {
@@ -42,16 +43,26 @@
     }
 
-    protected override TourEvaluation GetMoveQuality() {
-      LambdaInterchangeMove move = LambdaInterchangeMoveParameter.ActualValue;
-      //perform move
-      AlbaEncoding newSolution = VRPToursParameter.ActualValue.Clone() as AlbaEncoding;
+    public static TourEvaluation GetMoveQuality(AlbaEncoding individual, LambdaInterchangeMove move, 
+      DoubleArray dueTimeArray, DoubleArray serviceTimeArray, DoubleArray readyTimeArray, 
+      DoubleArray demandArray, DoubleValue capacity, DoubleMatrix coordinates, 
+      DoubleValue fleetUsageFactor, DoubleValue timeFactor, DoubleValue distanceFactor, 
+      DoubleValue overloadPenalty, DoubleValue tardinessPenalty,
+      ILookupParameter<DoubleMatrix> distanceMatrix, Data.BoolValue useDistanceMatrix) {
+      AlbaEncoding newSolution = individual.Clone() as AlbaEncoding;
       LambdaInterchangeMoveMaker.Apply(newSolution, move);
 
       return VRPEvaluator.Evaluate(
-        newSolution,
+        newSolution, dueTimeArray, serviceTimeArray, readyTimeArray, 
+        demandArray, capacity, fleetUsageFactor, timeFactor, distanceFactor, 
+        overloadPenalty, tardinessPenalty, coordinates, distanceMatrix, useDistanceMatrix);
+    }
+
+    protected override TourEvaluation GetMoveQuality() {
+      return GetMoveQuality(
+        VRPToursParameter.ActualValue as AlbaEncoding, LambdaInterchangeMoveParameter.ActualValue, 
         DueTimeParameter.ActualValue, ServiceTimeParameter.ActualValue, ReadyTimeParameter.ActualValue,
-        DemandParameter.ActualValue, CapacityParameter.ActualValue,
-        FleetUsageFactor.ActualValue, TimeFactor.ActualValue, DistanceFactor.ActualValue, OverloadPenalty.ActualValue, TardinessPenalty.ActualValue,
-        CoordinatesParameter.ActualValue, DistanceMatrixParameter, UseDistanceMatrixParameter.ActualValue);
+        DemandParameter.ActualValue, CapacityParameter.ActualValue, CoordinatesParameter.ActualValue, 
+        FleetUsageFactor.ActualValue, TimeFactor.ActualValue, DistanceFactor.ActualValue, OverloadPenalty.ActualValue, 
+        TardinessPenalty.ActualValue, DistanceMatrixParameter, UseDistanceMatrixParameter.ActualValue);
     }
   }
Index: trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Alba/Moves/LambdaInterchange/StochasticLambdaInterchangeSingleMoveGenerator.cs
===================================================================
--- trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Alba/Moves/LambdaInterchange/StochasticLambdaInterchangeSingleMoveGenerator.cs	(revision 4204)
+++ trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Alba/Moves/LambdaInterchange/StochasticLambdaInterchangeSingleMoveGenerator.cs	(revision 4205)
@@ -27,9 +27,19 @@
 using HeuristicLab.Parameters;
 using System.Collections.Generic;
+using HeuristicLab.Problems.VehicleRouting.Encodings.General;
 
 namespace HeuristicLab.Problems.VehicleRouting.Encodings.Alba {
   [Item("StochasticLambdaInterchangeSingleMoveGenerator", "Generates one random lambda interchange move from a given Alba VRP encoding.")]
   [StorableClass]
-  public sealed class StochasticLambdaInterchangeSingleMoveGenerator : LambdaInterchangeMoveGenerator, IStochasticOperator, ISingleMoveGenerator, IAlbaLambdaInterchangeMoveOperator {
+  public sealed class StochasticLambdaInterchangeSingleMoveGenerator : LambdaInterchangeMoveGenerator,
+    IStochasticOperator, ISingleMoveGenerator, IAlbaLambdaInterchangeMoveOperator, IMultiVRPMoveGenerator {
+    #region IMultiVRPMoveOperator Members
+
+    public ILookupParameter VRPMoveParameter {
+      get { return (ILookupParameter)Parameters["LambdaInterchangeMove"]; }
+    }
+
+    #endregion
+    
     public ILookupParameter<IRandom> RandomParameter {
       get { return (ILookupParameter<IRandom>)Parameters["Random"]; }
Index: trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Alba/Moves/SimpleLocalSearch/SimpleLocalSearchMove.cs
===================================================================
--- trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Alba/Moves/SimpleLocalSearch/SimpleLocalSearchMove.cs	(revision 4204)
+++ trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Alba/Moves/SimpleLocalSearch/SimpleLocalSearchMove.cs	(revision 4205)
@@ -24,9 +24,11 @@
 using HeuristicLab.Encodings.PermutationEncoding;
 using HeuristicLab.Common;
+using HeuristicLab.Problems.VehicleRouting.Encodings.General;
+using HeuristicLab.Data;
 
 namespace HeuristicLab.Problems.VehicleRouting.Encodings.Alba {
   [Item("InversionMove", "Item that describes a simple local search move on an Alba VRP representation.")]
   [StorableClass]
-  public class SimpleLocalSearchMove : TwoIndexMove {
+  public class SimpleLocalSearchMove : TwoIndexMove, IVRPMove {
     public SimpleLocalSearchMove()
       : base() {
@@ -51,4 +53,25 @@
       return clone;
     }
+
+    #region IVRPMove Members
+
+    public TourEvaluation GetMoveQuality(
+      IVRPEncoding individual, 
+      DoubleArray dueTimeArray, DoubleArray serviceTimeArray, DoubleArray readyTimeArray, 
+      DoubleArray demandArray, DoubleValue capacity, DoubleMatrix coordinates,
+      DoubleValue fleetUsageFactor, DoubleValue timeFactor, DoubleValue distanceFactor,
+      DoubleValue overloadPenalty, DoubleValue tardinessPenalty,
+      ILookupParameter<DoubleMatrix> distanceMatrix, Data.BoolValue useDistanceMatrix) {
+        return SimpleLocalSearchMoveEvaluator.GetMoveQuality(individual as AlbaEncoding, this,
+          dueTimeArray, serviceTimeArray, readyTimeArray, demandArray, capacity,
+          coordinates, fleetUsageFactor, timeFactor, distanceFactor,
+          overloadPenalty, tardinessPenalty, distanceMatrix, useDistanceMatrix);
+    }
+
+    public void MakeMove(IRandom random, IVRPEncoding individual) {
+      SimpleLocalSearchMoveMaker.Apply(individual as AlbaEncoding, this);
+    }
+
+    #endregion
   }
 }
Index: trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Alba/Moves/SimpleLocalSearch/SimpleLocalSearchMoveEvaluator.cs
===================================================================
--- trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Alba/Moves/SimpleLocalSearch/SimpleLocalSearchMoveEvaluator.cs	(revision 4204)
+++ trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Alba/Moves/SimpleLocalSearch/SimpleLocalSearchMoveEvaluator.cs	(revision 4205)
@@ -25,4 +25,5 @@
 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
 using HeuristicLab.Problems.VehicleRouting.Encodings.Alba;
+using HeuristicLab.Data;
 
 namespace HeuristicLab.Problems.VehicleRouting {
@@ -42,16 +43,26 @@
     }
 
-    protected override TourEvaluation GetMoveQuality() {
-      SimpleLocalSearchMove move = SimpleLocalSearchMoveParameter.ActualValue;
-      //perform move
-      AlbaEncoding newSolution = VRPToursParameter.ActualValue.Clone() as AlbaEncoding;
+    public static TourEvaluation GetMoveQuality(AlbaEncoding individual, SimpleLocalSearchMove move,
+      DoubleArray dueTimeArray, DoubleArray serviceTimeArray, DoubleArray readyTimeArray,
+      DoubleArray demandArray, DoubleValue capacity, DoubleMatrix coordinates,
+      DoubleValue fleetUsageFactor, DoubleValue timeFactor, DoubleValue distanceFactor,
+      DoubleValue overloadPenalty, DoubleValue tardinessPenalty,
+      ILookupParameter<DoubleMatrix> distanceMatrix, Data.BoolValue useDistanceMatrix) {
+      AlbaEncoding newSolution = individual.Clone() as AlbaEncoding;
       SimpleLocalSearchMoveMaker.Apply(newSolution, move);
 
       return VRPEvaluator.Evaluate(
-        newSolution,
+        newSolution, dueTimeArray, serviceTimeArray, readyTimeArray,
+        demandArray, capacity, fleetUsageFactor, timeFactor, distanceFactor,
+        overloadPenalty, tardinessPenalty, coordinates, distanceMatrix, useDistanceMatrix);
+    }
+
+    protected override TourEvaluation GetMoveQuality() {
+      return GetMoveQuality(
+        VRPToursParameter.ActualValue as AlbaEncoding, SimpleLocalSearchMoveParameter.ActualValue,
         DueTimeParameter.ActualValue, ServiceTimeParameter.ActualValue, ReadyTimeParameter.ActualValue,
-        DemandParameter.ActualValue, CapacityParameter.ActualValue,
-        FleetUsageFactor.ActualValue, TimeFactor.ActualValue, DistanceFactor.ActualValue, OverloadPenalty.ActualValue, TardinessPenalty.ActualValue,
-        CoordinatesParameter.ActualValue, DistanceMatrixParameter, UseDistanceMatrixParameter.ActualValue);
+        DemandParameter.ActualValue, CapacityParameter.ActualValue, CoordinatesParameter.ActualValue,
+        FleetUsageFactor.ActualValue, TimeFactor.ActualValue, DistanceFactor.ActualValue, OverloadPenalty.ActualValue,
+        TardinessPenalty.ActualValue, DistanceMatrixParameter, UseDistanceMatrixParameter.ActualValue);
     }
   }
Index: trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Alba/Moves/SimpleLocalSearch/StochasticSimpleLocalSearchSingleMoveGenerator.cs
===================================================================
--- trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Alba/Moves/SimpleLocalSearch/StochasticSimpleLocalSearchSingleMoveGenerator.cs	(revision 4204)
+++ trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Alba/Moves/SimpleLocalSearch/StochasticSimpleLocalSearchSingleMoveGenerator.cs	(revision 4205)
@@ -27,9 +27,19 @@
 using HeuristicLab.Parameters;
 using System.Collections.Generic;
+using HeuristicLab.Problems.VehicleRouting.Encodings.General;
 
 namespace HeuristicLab.Problems.VehicleRouting.Encodings.Alba {
   [Item("StochasticSimpleLocalSearchSingleMoveGenerator", "Generates one random simple local search move from a given Alba VRP encoding.")]
   [StorableClass]
-  public sealed class StochasticSimpleLocalSearchSingleMoveGenerator : SimpleLocalSearchMoveGenerator, IStochasticOperator, ISingleMoveGenerator, IAlbaSimpleLocalSearchMoveOperator {
+  public sealed class StochasticSimpleLocalSearchSingleMoveGenerator : SimpleLocalSearchMoveGenerator,
+    IStochasticOperator, ISingleMoveGenerator, IAlbaSimpleLocalSearchMoveOperator, IMultiVRPMoveGenerator {
+    #region IMultiVRPMoveOperator Members
+
+    public ILookupParameter VRPMoveParameter {
+      get { return (ILookupParameter)Parameters["SimpleLocalSearchMove"]; }
+    }
+
+    #endregion
+    
     public ILookupParameter<IRandom> RandomParameter {
       get { return (ILookupParameter<IRandom>)Parameters["Random"]; }
