Index: branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Alba/AlbaEncoding.cs
===================================================================
--- branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Alba/AlbaEncoding.cs	(revision 4379)
+++ branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Alba/AlbaEncoding.cs	(revision 4383)
@@ -83,5 +83,5 @@
     public override IDeepCloneable Clone(HeuristicLab.Common.Cloner cloner) {
       AlbaEncoding clone = new AlbaEncoding(
-        new Permutation(this.PermutationType, this.array), ProblemInstance);
+        new Permutation(this.PermutationType, new IntArray(this.array)), ProblemInstance);
       cloner.RegisterClonedObject(this, clone);
       clone.readOnly = readOnly;
Index: branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Alba/Moves/IntraRouteInversion/AlbaIntraRouteInversionEvaluator.cs
===================================================================
--- branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Alba/Moves/IntraRouteInversion/AlbaIntraRouteInversionEvaluator.cs	(revision 4379)
+++ branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Alba/Moves/IntraRouteInversion/AlbaIntraRouteInversionEvaluator.cs	(revision 4383)
@@ -48,5 +48,5 @@
 
     protected override void EvaluateMove() {
-      AlbaEncoding newSolution = VRPToursParameter.ActualValue.Clone() as AlbaEncoding;
+      AlbaEncoding newSolution = IntraRouteInversionMoveParameter.ActualValue.Permutation.Clone() as AlbaEncoding;
       AlbaIntraRouteInversionMoveMaker.Apply(newSolution, IntraRouteInversionMoveParameter.ActualValue);
 
Index: branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Alba/Moves/IntraRouteInversion/AlbaIntraRouteInversionMove.cs
===================================================================
--- branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Alba/Moves/IntraRouteInversion/AlbaIntraRouteInversionMove.cs	(revision 4379)
+++ branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Alba/Moves/IntraRouteInversion/AlbaIntraRouteInversionMove.cs	(revision 4383)
@@ -29,5 +29,5 @@
 
 namespace HeuristicLab.Problems.VehicleRouting.Encodings.Alba {
-  [Item("IntraRouteInversionMove", "Item that describes an intra route inversion move on a VRP representation.  It is implemented as described in Alba, E. and Dorronsoro, B. (2004). Solving the Vehicle Routing Problem by Using Cellular Genetic Algorithms.")]
+  [Item("AlbaIntraRouteInversionMove", "Item that describes an intra route inversion move on a VRP representation.  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 AlbaIntraRouteInversionMove : TwoIndexMove, IVRPMove {
@@ -43,7 +43,6 @@
 
     public AlbaIntraRouteInversionMove(int index1, int index2, AlbaEncoding permutation)
-      : base(index1, index2, permutation) {
-        this.Permutation = permutation.Clone() as AlbaEncoding;
-    }
+      : base(index1, index2, permutation.Clone() as AlbaEncoding) {
+     }
 
     public override IDeepCloneable Clone(HeuristicLab.Common.Cloner cloner) {
@@ -52,5 +51,5 @@
 
       if (Permutation != null)
-        clone.Permutation = (AlbaEncoding)cloner.Clone(Permutation);
+        clone.Permutation = Permutation.Clone() as AlbaEncoding;
 
       cloner.RegisterClonedObject(this, clone);
Index: branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Alba/Moves/IntraRouteInversion/AlbaIntraRouteInversionMoveMaker.cs
===================================================================
--- branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Alba/Moves/IntraRouteInversion/AlbaIntraRouteInversionMoveMaker.cs	(revision 4379)
+++ branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Alba/Moves/IntraRouteInversion/AlbaIntraRouteInversionMoveMaker.cs	(revision 4383)
@@ -54,5 +54,6 @@
       AlbaIntraRouteInversionMove move = IntraRouteInversionMoveParameter.ActualValue;
 
-      Apply(VRPToursParameter.ActualValue as AlbaEncoding, move);
+      Apply(move.Individual as AlbaEncoding, move);
+      VRPToursParameter.ActualValue = move.Individual as AlbaEncoding;
     }
   }
Index: branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Alba/Moves/LambdaInterchange/AlbaLambdaInterchangeMove.cs
===================================================================
--- branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Alba/Moves/LambdaInterchange/AlbaLambdaInterchangeMove.cs	(revision 4379)
+++ branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Alba/Moves/LambdaInterchange/AlbaLambdaInterchangeMove.cs	(revision 4383)
@@ -30,5 +30,5 @@
 
 namespace HeuristicLab.Problems.VehicleRouting.Encodings.Alba {
-  [Item("InversionMove", "Item that describes a lambda move on a VRP representation.  It is implemented as described in Alba, E. and Dorronsoro, B. (2004). Solving the Vehicle Routing Problem by Using Cellular Genetic Algorithms.")]
+  [Item("AlbaLambdaInterchangeMove", "Item that describes a lambda move on a VRP representation.  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 AlbaLambdaInterchangeMove: Item, IVRPMove {
@@ -91,5 +91,5 @@
 
       if (Individual != null)
-        clone.Individual = (AlbaEncoding)cloner.Clone(Individual);
+        clone.Individual = Individual.Clone() as AlbaEncoding;
 
       cloner.RegisterClonedObject(this, clone);
Index: branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Alba/Moves/LambdaInterchange/AlbaLambdaInterchangeMoveEvaluator.cs
===================================================================
--- branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Alba/Moves/LambdaInterchange/AlbaLambdaInterchangeMoveEvaluator.cs	(revision 4379)
+++ branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Alba/Moves/LambdaInterchange/AlbaLambdaInterchangeMoveEvaluator.cs	(revision 4383)
@@ -48,5 +48,5 @@
 
     protected override void EvaluateMove() {
-      AlbaEncoding newSolution = VRPToursParameter.ActualValue.Clone() as AlbaEncoding;
+      AlbaEncoding newSolution = LambdaInterchangeMoveParameter.ActualValue.Individual.Clone() as AlbaEncoding;
       AlbaLambdaInterchangeMoveMaker.Apply(newSolution, LambdaInterchangeMoveParameter.ActualValue);
 
Index: branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Alba/Moves/LambdaInterchange/AlbaLambdaInterchangeMoveMaker.cs
===================================================================
--- branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Alba/Moves/LambdaInterchange/AlbaLambdaInterchangeMoveMaker.cs	(revision 4379)
+++ branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Alba/Moves/LambdaInterchange/AlbaLambdaInterchangeMoveMaker.cs	(revision 4383)
@@ -61,5 +61,6 @@
       AlbaLambdaInterchangeMove move = LambdaInterchangeMoveParameter.ActualValue;
 
-      Apply(VRPToursParameter.ActualValue as AlbaEncoding, move);
+      Apply(move.Individual as AlbaEncoding, move);
+      VRPToursParameter.ActualValue = move.Individual;
     }
   }
Index: branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Alba/Moves/ThreeOpt/AlbaStochasticTranslocationSingleMoveGenerator.cs
===================================================================
--- branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Alba/Moves/ThreeOpt/AlbaStochasticTranslocationSingleMoveGenerator.cs	(revision 4383)
+++ branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Alba/Moves/ThreeOpt/AlbaStochasticTranslocationSingleMoveGenerator.cs	(revision 4383)
@@ -0,0 +1,90 @@
+﻿#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.Collections.Generic;
+using HeuristicLab.Core;
+using HeuristicLab.Data;
+using HeuristicLab.Encodings.PermutationEncoding;
+using HeuristicLab.Optimization;
+using HeuristicLab.Parameters;
+using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HeuristicLab.Problems.VehicleRouting.Interfaces;
+using HeuristicLab.Problems.VehicleRouting.Encodings.General;
+
+namespace HeuristicLab.Problems.VehicleRouting.Encodings.Alba {
+  [Item("AlbaStochasticTranslocationSingleMoveGenerator", "An operator which generates a single translocation move for a VRP representation.  It is implemented as described in Alba, E. and Dorronsoro, B. (2004). Solving the Vehicle Routing Problem by Using Cellular Genetic Algorithms.")]
+  [StorableClass]
+  public sealed class AlbaStochasticTranslocationSingleMoveGenerator : AlbaMoveGenerator, IAlbaTranslocationMoveOperator, IMultiVRPMoveGenerator {
+    private TranslocationMoveGenerator generator = new StochasticTranslocationSingleMoveGenerator();
+    
+    public ILookupParameter<TranslocationMove> TranslocationMoveParameter {
+      get {
+         return generator.TranslocationMoveParameter;
+      }
+    }
+
+    public override ILookupParameter VRPMoveParameter {
+      get { return TranslocationMoveParameter; }
+    }
+
+    public ILookupParameter<Permutation> PermutationParameter {
+      get {
+        return generator.PermutationParameter;
+      }
+    }
+
+    public IValueLookupParameter<IntValue> SampleSizeParameter {
+      get { return (IValueLookupParameter<IntValue>)Parameters["SampleSize"]; }
+    }
+
+    [StorableConstructor]
+    private AlbaStochasticTranslocationSingleMoveGenerator(bool deserializing) : base(deserializing) { }
+
+    public AlbaStochasticTranslocationSingleMoveGenerator()
+      : base() {
+    }
+
+    public override IOperation Apply() {
+      IOperation next = base.Apply();
+
+      IVRPEncoding solution = VRPToursParameter.ActualValue;
+
+      generator.PermutationParameter.ActualName = VRPToursParameter.ActualName;
+      IAtomicOperation op = this.ExecutionContext.CreateChildOperation(generator);
+      op.Operator.Execute((IExecutionContext)op);
+
+      foreach (IScope scope in this.ExecutionContext.Scope.SubScopes) {
+        IVariable moveVariable = scope.Variables[
+          TranslocationMoveParameter.ActualName];
+
+        if (moveVariable.Value is TranslocationMove &&
+          !(moveVariable.Value is AlbaTranslocationMove)) {
+          TranslocationMove move = moveVariable.Value as TranslocationMove;
+          moveVariable.Value =
+            new AlbaTranslocationMove(
+              move.Index1, move.Index2, move.Index3, solution as AlbaEncoding);
+        }
+      }
+
+      return next;
+    }
+  }
+}
Index: branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Alba/Moves/ThreeOpt/AlbaTranslocationMove.cs
===================================================================
--- branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Alba/Moves/ThreeOpt/AlbaTranslocationMove.cs	(revision 4383)
+++ branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Alba/Moves/ThreeOpt/AlbaTranslocationMove.cs	(revision 4383)
@@ -0,0 +1,67 @@
+﻿#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.Persistence.Default.CompositeSerializers.Storable;
+using HeuristicLab.Encodings.PermutationEncoding;
+using HeuristicLab.Common;
+using System.Collections.Generic;
+using HeuristicLab.Problems.VehicleRouting.Encodings.General;
+using HeuristicLab.Data;
+using HeuristicLab.Problems.VehicleRouting.Interfaces;
+
+namespace HeuristicLab.Problems.VehicleRouting.Encodings.Alba {
+  [Item("AlbaTranslocationMove", "Item that describes a translocation move on a VRP representation.  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 AlbaTranslocationMove: TranslocationMove, IVRPMove {
+    public IVRPEncoding Individual { get { return Permutation as AlbaEncoding; } }
+
+    public AlbaTranslocationMove(int index1, int index2, int index3): 
+      base(index1, index2, index3) {
+    }
+
+    public AlbaTranslocationMove(int index1, int index2, int index3, AlbaEncoding individual): 
+      base(index1, index2, index3, individual.Clone() as AlbaEncoding){
+    }
+
+    public override IDeepCloneable Clone(HeuristicLab.Common.Cloner cloner) {
+      AlbaTranslocationMove clone = new AlbaTranslocationMove(
+        Index1, Index2, Index3);
+      if (Permutation != null)
+        clone.Permutation = Permutation.Clone() as AlbaEncoding;
+
+      cloner.RegisterClonedObject(this, clone);
+      return clone;
+    }
+
+    #region IVRPMove Members
+
+    public VRPMoveEvaluator GetMoveEvaluator() {
+      return new AlbaTranslocationMoveEvaluator();
+    }
+
+    public VRPMoveMaker GetMoveMaker() {
+      return new AlbaTranslocationMoveMaker();
+    }
+
+    #endregion
+  }
+}
Index: branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Alba/Moves/ThreeOpt/AlbaTranslocationMoveEvaluator.cs
===================================================================
--- branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Alba/Moves/ThreeOpt/AlbaTranslocationMoveEvaluator.cs	(revision 4379)
+++ branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Alba/Moves/ThreeOpt/AlbaTranslocationMoveEvaluator.cs	(revision 4383)
@@ -50,5 +50,5 @@
       TranslocationMove move = TranslocationMoveParameter.ActualValue;
       //perform move
-      AlbaEncoding newSolution = VRPToursParameter.ActualValue.Clone() as AlbaEncoding;
+      AlbaEncoding newSolution = move.Permutation.Clone() as AlbaEncoding;
       TranslocationManipulator.Apply(newSolution, move.Index1, move.Index2, move.Index3);
 
Index: branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Alba/Moves/ThreeOpt/AlbaTranslocationMoveMaker.cs
===================================================================
--- branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Alba/Moves/ThreeOpt/AlbaTranslocationMoveMaker.cs	(revision 4379)
+++ branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Alba/Moves/ThreeOpt/AlbaTranslocationMoveMaker.cs	(revision 4383)
@@ -54,4 +54,9 @@
 
     protected override void PerformMove() {
+      IVariable moveVariable = this.ExecutionContext.Scope.Variables[
+        TranslocationMoveParameter.ActualName];
+      TranslocationMove move = moveVariable.Value as TranslocationMove;
+      VRPToursParameter.ActualValue = move.Permutation as AlbaEncoding;
+
       moveMaker.PermutationParameter.ActualName = VRPToursParameter.ActualName;
       IAtomicOperation op = this.ExecutionContext.CreateChildOperation(moveMaker);
