Index: branches/VRP/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Alba/AlbaEncoding.cs
===================================================================
--- branches/VRP/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Alba/AlbaEncoding.cs	(revision 4230)
+++ branches/VRP/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Alba/AlbaEncoding.cs	(revision 4268)
@@ -31,10 +31,10 @@
   [Item("AlbaEncoding", "Represents an Alba encoding of VRP solutions. It is implemented as described in Alba, E. and Dorronsoro, B. (2004). Solving the Vehicle Routing Problem by Using Cellular Genetic Algorithms.")]
   [StorableClass]
-  public class AlbaEncoding : Permutation, IVRPEncoding {
+  public class AlbaEncoding : PermutationEncoding {
     [Storable]
     private int cities;
     
     #region IVRPEncoding Members
-    public List<Tour> GetTours() {
+    public override List<Tour> GetTours(ILookupParameter<DoubleMatrix> distanceMatrix = null, int maxVehicles = int.MaxValue) {
       List<Tour> result = new List<Tour>();
 
@@ -78,9 +78,5 @@
 
     public AlbaEncoding(Permutation permutation, int cities)
-      : base(PermutationTypes.RelativeUndirected) {
-      this.array = new int[permutation.Length];
-      for (int i = 0; i < array.Length; i++)
-        this.array[i] = permutation[i];
-
+      : base(permutation) {
       this.cities = cities;
     }
@@ -88,9 +84,9 @@
     [StorableConstructor]
     private AlbaEncoding(bool serializing)
-      : base() {
+      : base(serializing) {
     }
 
-    public static AlbaEncoding ConvertFrom(IVRPEncoding encoding, int vehicles) {
-      List<Tour> tours = encoding.GetTours();
+    public static AlbaEncoding ConvertFrom(IVRPEncoding encoding, int vehicles, ILookupParameter<DoubleMatrix> distanceMatrix) {
+      List<Tour> tours = encoding.GetTours(distanceMatrix, vehicles);
 
       int cities = 0;
@@ -155,5 +151,4 @@
 
     internal static void RemoveUnusedParameters(ParameterCollection parameters) {
-      parameters.Remove("DistanceMatrix");
       parameters.Remove("UseDistanceMatrix");
       parameters.Remove("Capacity");
Index: branches/VRP/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Alba/Crossovers/AlbaCrossover.cs
===================================================================
--- branches/VRP/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Alba/Crossovers/AlbaCrossover.cs	(revision 4230)
+++ branches/VRP/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Alba/Crossovers/AlbaCrossover.cs	(revision 4268)
@@ -53,5 +53,6 @@
 
         if (!(solution is AlbaEncoding)) {
-          parents[i] = AlbaEncoding.ConvertFrom(solution, VehiclesParameter.ActualValue.Value);
+          parents[i] = AlbaEncoding.ConvertFrom(solution, VehiclesParameter.ActualValue.Value,
+            DistanceMatrixParameter);
         } else {
           parents[i] = solution;
Index: branches/VRP/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Alba/Manipulators/AlbaManipulator.cs
===================================================================
--- branches/VRP/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Alba/Manipulators/AlbaManipulator.cs	(revision 4230)
+++ branches/VRP/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Alba/Manipulators/AlbaManipulator.cs	(revision 4268)
@@ -62,5 +62,5 @@
       IVRPEncoding solution = VRPToursParameter.ActualValue;
       if (!(solution is AlbaEncoding)) {
-        VRPToursParameter.ActualValue = AlbaEncoding.ConvertFrom(solution, VehiclesParameter.ActualValue.Value);
+        VRPToursParameter.ActualValue = AlbaEncoding.ConvertFrom(solution, VehiclesParameter.ActualValue.Value, DistanceMatrixParameter);
       }
 
Index: branches/VRP/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Alba/Moves/AlbaMoveOperator.cs
===================================================================
--- branches/VRP/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Alba/Moves/AlbaMoveOperator.cs	(revision 4230)
+++ branches/VRP/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Alba/Moves/AlbaMoveOperator.cs	(revision 4268)
@@ -41,5 +41,6 @@
       IVRPEncoding solution = VRPToursParameter.ActualValue;
       if (!(solution is AlbaEncoding)) {
-        VRPToursParameter.ActualValue = AlbaEncoding.ConvertFrom(solution, VehiclesParameter.ActualValue.Value);
+        VRPToursParameter.ActualValue = AlbaEncoding.ConvertFrom(solution, VehiclesParameter.ActualValue.Value, 
+          DistanceMatrixParameter);
       }
 
Index: branches/VRP/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Alba/Moves/IntraRouteInversion/IntraRouteInversionEvaluator.cs
===================================================================
--- branches/VRP/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Alba/Moves/IntraRouteInversion/IntraRouteInversionEvaluator.cs	(revision 4230)
+++ branches/VRP/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Alba/Moves/IntraRouteInversion/IntraRouteInversionEvaluator.cs	(revision 4268)
@@ -44,4 +44,5 @@
 
     public static TourEvaluation GetMoveQuality(AlbaEncoding individual, IntraRouteInversionMove move,
+      IntValue vehicles,
       DoubleArray dueTimeArray, DoubleArray serviceTimeArray, DoubleArray readyTimeArray,
       DoubleArray demandArray, DoubleValue capacity, DoubleMatrix coordinates,
@@ -53,5 +54,5 @@
 
       return VRPEvaluator.Evaluate(
-        newSolution, dueTimeArray, serviceTimeArray, readyTimeArray,
+        newSolution, vehicles, dueTimeArray, serviceTimeArray, readyTimeArray,
         demandArray, capacity, fleetUsageFactor, timeFactor, distanceFactor,
         overloadPenalty, tardinessPenalty, coordinates, distanceMatrix, useDistanceMatrix);
@@ -61,4 +62,5 @@
       return GetMoveQuality(
         VRPToursParameter.ActualValue as AlbaEncoding, IntraRouteInversionMoveParameter.ActualValue,
+        VehiclesParameter.ActualValue,
         DueTimeParameter.ActualValue, ServiceTimeParameter.ActualValue, ReadyTimeParameter.ActualValue,
         DemandParameter.ActualValue, CapacityParameter.ActualValue, CoordinatesParameter.ActualValue,
Index: branches/VRP/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Alba/Moves/IntraRouteInversion/IntraRouteInversionMove.cs
===================================================================
--- branches/VRP/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Alba/Moves/IntraRouteInversion/IntraRouteInversionMove.cs	(revision 4230)
+++ branches/VRP/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Alba/Moves/IntraRouteInversion/IntraRouteInversionMove.cs	(revision 4268)
@@ -57,5 +57,5 @@
 
     public TourEvaluation GetMoveQuality(
-      IVRPEncoding individual, 
+      IVRPEncoding individual, IntValue vehicles,
       DoubleArray dueTimeArray, DoubleArray serviceTimeArray, DoubleArray readyTimeArray, 
       DoubleArray demandArray, DoubleValue capacity, DoubleMatrix coordinates,
@@ -63,5 +63,5 @@
       DoubleValue overloadPenalty, DoubleValue tardinessPenalty,
       ILookupParameter<DoubleMatrix> distanceMatrix, Data.BoolValue useDistanceMatrix) {
-        return IntraRouteInversionMoveEvaluator.GetMoveQuality(individual as AlbaEncoding, this,
+        return IntraRouteInversionMoveEvaluator.GetMoveQuality(individual as AlbaEncoding, this, vehicles,
           dueTimeArray, serviceTimeArray, readyTimeArray, demandArray, capacity,
           coordinates, fleetUsageFactor, timeFactor, distanceFactor,
Index: branches/VRP/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Alba/Moves/LambdaInterchange/LambdaInterchangeMove.cs
===================================================================
--- branches/VRP/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Alba/Moves/LambdaInterchange/LambdaInterchangeMove.cs	(revision 4230)
+++ branches/VRP/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Alba/Moves/LambdaInterchange/LambdaInterchangeMove.cs	(revision 4268)
@@ -89,5 +89,5 @@
 
     public TourEvaluation GetMoveQuality(
-      IVRPEncoding individual, 
+      IVRPEncoding individual, IntValue vehicles,
       DoubleArray dueTimeArray, DoubleArray serviceTimeArray, DoubleArray readyTimeArray, 
       DoubleArray demandArray, DoubleValue capacity, DoubleMatrix coordinates,
@@ -95,5 +95,5 @@
       DoubleValue overloadPenalty, DoubleValue tardinessPenalty,
       ILookupParameter<DoubleMatrix> distanceMatrix, Data.BoolValue useDistanceMatrix) {
-        return LambdaInterchangeMoveEvaluator.GetMoveQuality(individual as AlbaEncoding, this,
+        return LambdaInterchangeMoveEvaluator.GetMoveQuality(individual as AlbaEncoding, this,  vehicles,
           dueTimeArray, serviceTimeArray, readyTimeArray, demandArray, capacity,
           coordinates, fleetUsageFactor, timeFactor, distanceFactor,
Index: branches/VRP/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Alba/Moves/LambdaInterchange/LambdaInterchangeMoveEvaluator.cs
===================================================================
--- branches/VRP/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Alba/Moves/LambdaInterchange/LambdaInterchangeMoveEvaluator.cs	(revision 4230)
+++ branches/VRP/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Alba/Moves/LambdaInterchange/LambdaInterchangeMoveEvaluator.cs	(revision 4268)
@@ -44,4 +44,5 @@
 
     public static TourEvaluation GetMoveQuality(AlbaEncoding individual, LambdaInterchangeMove move, 
+      IntValue vehicles, 
       DoubleArray dueTimeArray, DoubleArray serviceTimeArray, DoubleArray readyTimeArray, 
       DoubleArray demandArray, DoubleValue capacity, DoubleMatrix coordinates, 
@@ -53,5 +54,5 @@
 
       return VRPEvaluator.Evaluate(
-        newSolution, dueTimeArray, serviceTimeArray, readyTimeArray, 
+        newSolution, vehicles, dueTimeArray, serviceTimeArray, readyTimeArray, 
         demandArray, capacity, fleetUsageFactor, timeFactor, distanceFactor, 
         overloadPenalty, tardinessPenalty, coordinates, distanceMatrix, useDistanceMatrix);
@@ -61,4 +62,5 @@
       return GetMoveQuality(
         VRPToursParameter.ActualValue as AlbaEncoding, LambdaInterchangeMoveParameter.ActualValue, 
+        VehiclesParameter.ActualValue,
         DueTimeParameter.ActualValue, ServiceTimeParameter.ActualValue, ReadyTimeParameter.ActualValue,
         DemandParameter.ActualValue, CapacityParameter.ActualValue, CoordinatesParameter.ActualValue, 
Index: branches/VRP/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Alba/Moves/ThreeOpt/PermutationTranslocationMoveEvaluator.cs
===================================================================
--- branches/VRP/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Alba/Moves/ThreeOpt/PermutationTranslocationMoveEvaluator.cs	(revision 4230)
+++ branches/VRP/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Alba/Moves/ThreeOpt/PermutationTranslocationMoveEvaluator.cs	(revision 4268)
@@ -51,4 +51,5 @@
       return VRPEvaluator.Evaluate(
         newSolution,
+        VehiclesParameter.ActualValue,
         DueTimeParameter.ActualValue, ServiceTimeParameter.ActualValue, ReadyTimeParameter.ActualValue,
         DemandParameter.ActualValue, CapacityParameter.ActualValue,
