Index: branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.2D/3.3/BinUtilizationEvaluator.cs
===================================================================
--- branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.2D/3.3/BinUtilizationEvaluator.cs	(revision 14147)
+++ branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.2D/3.3/BinUtilizationEvaluator.cs	(revision 14147)
@@ -0,0 +1,64 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2015 Joseph Helm and 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 System.Linq;
+using HeuristicLab.Core;
+using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HeuristicLab.Common;
+
+namespace HeuristicLab.Problems.BinPacking2D {
+  [Item("Bin-Utilization Evaluator (2d)", "Calculates the overall utilization of bin space.")]
+  [StorableClass]
+  public class BinUtilizationEvaluator : Item, IEvaluator {
+
+    [StorableConstructor]
+    protected BinUtilizationEvaluator(bool deserializing) : base(deserializing) { }
+    protected BinUtilizationEvaluator(BinUtilizationEvaluator original, Cloner cloner)
+      : base(original, cloner) {
+    }
+    public BinUtilizationEvaluator() : base() { }
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new BinUtilizationEvaluator(this, cloner);
+    }
+
+    #region IEvaluator Members
+    public double Evaluate(Solution solution) {
+      return CalculateBinUtilization(solution);
+    }
+
+
+    public static double CalculateBinUtilization(Solution solution) {
+      int nrOfBins = solution.NrOfBins;
+      double totalUsedSpace = 0;
+      double totalUsableSpace = 0;
+
+      for (int i = 0; i < nrOfBins; i++) {
+        totalUsableSpace += solution.BinPackings[i].BinMeasures.Volume;
+        totalUsedSpace += solution.BinPackings[i].ItemMeasures.Sum(kvp => kvp.Value.Volume);
+      }
+
+      return totalUsedSpace / totalUsableSpace;
+    }
+
+    #endregion
+  }
+}
Index: branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.2D/3.3/BottomLefttPermutationDecoder.cs
===================================================================
--- branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.2D/3.3/BottomLefttPermutationDecoder.cs	(revision 14147)
+++ branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.2D/3.3/BottomLefttPermutationDecoder.cs	(revision 14147)
@@ -0,0 +1,55 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2015 Joseph Helm and 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.Common;
+using System.Collections.Generic;
+using HeuristicLab.Encodings.PermutationEncoding;
+
+namespace HeuristicLab.Problems.BinPacking2D {
+  [Item("Bottom-left Permutation Decoder (2d)", "Decodes the permutation and creates a packing solution candidate")]
+  [StorableClass]
+  public class BottomLeftPermutationDecoder : Item, IPermutationDecoder {
+
+    [StorableConstructor]
+    protected BottomLeftPermutationDecoder(bool deserializing) : base(deserializing) { }
+    protected BottomLeftPermutationDecoder(BottomLeftPermutationDecoder original, Cloner cloner)
+      : base(original, cloner) {
+    }
+    public BottomLeftPermutationDecoder() : base() { }
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new BottomLeftPermutationDecoder(this, cloner);
+    }
+
+    public Solution Decode(Permutation permutation, PackingShape binShape, IList<PackingItem> items) {
+      Solution result = new Solution(binShape, true, false);
+      IList<int> remainingIDs = new List<int>(permutation);
+      while (remainingIDs.Count > 0) {
+        var bp = result.NewBinPacking();
+        bp.SlidingBasedPacking(ref remainingIDs, items);
+        result.BinPackings.Add(bp);
+      }
+      result.UpdateBinPackings();
+      return result;
+    }
+  }
+}
Index: branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.2D/3.3/ExtremePointPermutationDecoder.cs
===================================================================
--- branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.2D/3.3/ExtremePointPermutationDecoder.cs	(revision 14147)
+++ branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.2D/3.3/ExtremePointPermutationDecoder.cs	(revision 14147)
@@ -0,0 +1,55 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2015 Joseph Helm and 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.Common;
+using System.Collections.Generic;
+using HeuristicLab.Encodings.PermutationEncoding;
+
+namespace HeuristicLab.Problems.BinPacking2D {
+  [Item("Extreme-point Permutation Decoder (2d)", "Decodes the permutation and creates a packing solution candidate")]
+  [StorableClass]
+  public class ExtremePointPermutationDecoder : Item, IPermutationDecoder {
+
+    [StorableConstructor]
+    protected ExtremePointPermutationDecoder(bool deserializing) : base(deserializing) { }
+    protected ExtremePointPermutationDecoder(ExtremePointPermutationDecoder original, Cloner cloner)
+      : base(original, cloner) {
+    }
+    public ExtremePointPermutationDecoder() : base() { }
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new ExtremePointPermutationDecoder(this, cloner);
+    }
+
+    public Solution Decode(Permutation permutation, PackingShape binShape, IList<PackingItem> items) {
+      Solution result = new Solution(binShape, true, false);
+      IList<int> remainingIDs = new List<int>(permutation);
+      while (remainingIDs.Count > 0) {
+        var bp = result.NewBinPacking();
+        bp.ExtremePointBasedPacking(ref remainingIDs, items, stackingConstraints: false);
+        result.BinPackings.Add(bp);
+      }
+      result.UpdateBinPackings();
+      return result;
+    }
+  }
+}
Index: branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.2D/3.3/HeuristicLab.Problems.BinPacking2D-3.3.csproj
===================================================================
--- branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.2D/3.3/HeuristicLab.Problems.BinPacking2D-3.3.csproj	(revision 14146)
+++ branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.2D/3.3/HeuristicLab.Problems.BinPacking2D-3.3.csproj	(revision 14147)
@@ -164,4 +164,5 @@
     <Compile Include="BinPacking2D.cs" />
     <Compile Include="BinUtilizationEvaluator.cs" />
+    <Compile Include="BottomLefttPermutationDecoder.cs" />
     <Compile Include="ExtremePointPermutationDecoder.cs" />
     <Compile Include="Instances\BPPData.cs" />
@@ -174,4 +175,5 @@
     <Compile Include="Interfaces\I2DOperator.cs" />
     <Compile Include="Interfaces\I2DPSDecoder.cs" />
+    <Compile Include="MoveEvaluators\Swap2MoveEvaluator.cs" />
     <Compile Include="MoveEvaluators\TranslocationMoveEvaluator.cs">
       <SubType>Code</SubType>
Index: branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.2D/3.3/Interfaces/IEvaluator.cs
===================================================================
--- branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.2D/3.3/Interfaces/IEvaluator.cs	(revision 14147)
+++ branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.2D/3.3/Interfaces/IEvaluator.cs	(revision 14147)
@@ -0,0 +1,28 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2015 Joseph Helm and 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;
+
+namespace HeuristicLab.Problems.BinPacking2D {
+  public interface IEvaluator : IItem {
+    double Evaluate(Solution solution);
+  }
+}
Index: branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.2D/3.3/Interfaces/IPermutationDecoder.cs
===================================================================
--- branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.2D/3.3/Interfaces/IPermutationDecoder.cs	(revision 14147)
+++ branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.2D/3.3/Interfaces/IPermutationDecoder.cs	(revision 14147)
@@ -0,0 +1,32 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2015 Joseph Helm and 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;
+using System.Collections.Generic;
+using HeuristicLab.Core;
+using HeuristicLab.Encodings.PermutationEncoding;
+using HeuristicLab.Problems.BinPacking;
+
+namespace HeuristicLab.Problems.BinPacking2D {
+  public interface IPermutationDecoder : IItem {
+    Solution Decode(Permutation permutation, PackingShape binShape, IList<PackingItem> items);
+  }
+}
Index: branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.2D/3.3/MoveEvaluators/Swap2MoveEvaluator.cs
===================================================================
--- branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.2D/3.3/MoveEvaluators/Swap2MoveEvaluator.cs	(revision 14147)
+++ branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.2D/3.3/MoveEvaluators/Swap2MoveEvaluator.cs	(revision 14147)
@@ -0,0 +1,106 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2015 Joseph Helm and 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.Common;
+using HeuristicLab.Core;
+using HeuristicLab.Data;
+using HeuristicLab.Encodings.PermutationEncoding;
+using HeuristicLab.Operators;
+using HeuristicLab.Optimization;
+using HeuristicLab.Parameters;
+using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+
+namespace HeuristicLab.Problems.BinPacking2D {
+  [Item("Swap2MoveEvaluator", "Move evaluator for 2-opt moves.")]
+  [StorableClass]
+  public sealed class Swap2MoveEvaluator : SingleSuccessorOperator,
+    ISingleObjectiveMoveEvaluator, ISingleObjectiveMoveOperator, IPermutationSwap2MoveOperator {
+    public override bool CanChangeName {
+      get { return false; }
+    }
+    public ILookupParameter<Permutation> PermutationParameter {
+      get { return (ILookupParameter<Permutation>)Parameters["PackingSequence"]; }
+    }
+    public ILookupParameter<DoubleValue> QualityParameter {
+      get { return (ILookupParameter<DoubleValue>)Parameters["Quality"]; }
+    }
+    public ILookupParameter<DoubleValue> MoveQualityParameter {
+      get { return (ILookupParameter<DoubleValue>)Parameters["MoveQuality"]; }
+    }
+    public ILookupParameter<ReadOnlyItemList<PackingItem>> PackingItemMeasuresParameter {
+      get { return (LookupParameter<ReadOnlyItemList<PackingItem>>)Parameters["Items"]; }
+    }
+    public ILookupParameter<PackingShape> PackingBinMeasuresParameter {
+      get { return (LookupParameter<PackingShape>)Parameters["BinShape"]; }
+    }
+    public ILookupParameter<IPermutationDecoder> PackingSolutionDecoderParameter {
+      get { return (ILookupParameter<IPermutationDecoder>)Parameters["Decoder"]; }
+    }
+    public ILookupParameter<IEvaluator> PackingPlanEvaluatorParameter {
+      get { return (ILookupParameter<IEvaluator>)Parameters["SolutionEvaluator"]; }
+    }
+
+    public ILookupParameter<Swap2Move> Swap2MoveParameter {
+      get { return (ILookupParameter<Swap2Move>)Parameters["Swap2Move"]; }
+    }
+
+    [StorableConstructor]
+    private Swap2MoveEvaluator(bool deserializing) : base(deserializing) { }
+    private Swap2MoveEvaluator(Swap2MoveEvaluator original, Cloner cloner) : base(original, cloner) { }
+    public Swap2MoveEvaluator()
+      : base() {
+      Parameters.Add(new LookupParameter<Permutation>("PackingSequence", "The encoded solution candidate to evaluate"));
+      Parameters.Add(new LookupParameter<DoubleValue>("Quality", "The quality of a packing solution."));
+      Parameters.Add(new LookupParameter<DoubleValue>("MoveQuality", "The evaluated quality of a move on a packing solution."));
+      Parameters.Add(new LookupParameter<ReadOnlyItemList<PackingItem>>("Items", "Packing-item data taken from the bin-packing problem-instance."));
+      Parameters.Add(new LookupParameter<PackingShape>("BinShape", "Packing-bin data taken from the bin-packing problem-instance."));
+      Parameters.Add(new LookupParameter<IPermutationDecoder>("Decoder", "The decoding operator that is used to calculate a packing plan from the used representation."));
+      Parameters.Add(new LookupParameter<IEvaluator>("SolutionEvaluator", "The actual packing plan evaluation operator."));
+      Parameters.Add(new LookupParameter<Swap2Move>("Swap2Move", "The move to evaluate."));
+    }
+
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new Swap2MoveEvaluator(this, cloner);
+    }
+
+
+    public override IOperation Apply() {
+      var move = Swap2MoveParameter.ActualValue;
+      var permutation = PermutationParameter.ActualValue;
+      var binShape = PackingBinMeasuresParameter.ActualValue;
+      var items = PackingItemMeasuresParameter.ActualValue;
+
+      // uses full evaluation
+      Swap2Manipulator.Apply(permutation, move.Index1, move.Index2);
+      var solution = PackingSolutionDecoderParameter.ActualValue.Decode(permutation, binShape, items);
+
+      var quality = PackingPlanEvaluatorParameter.ActualValue.Evaluate(solution);
+
+      double moveQuality = quality;
+
+      if (MoveQualityParameter.ActualValue == null)
+        MoveQualityParameter.ActualValue = new DoubleValue(moveQuality);
+      else
+        MoveQualityParameter.ActualValue.Value = moveQuality;
+      return base.Apply();
+    }
+  }
+}
Index: branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.2D/3.3/MoveEvaluators/TranslocationMoveEvaluator.cs
===================================================================
--- branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.2D/3.3/MoveEvaluators/TranslocationMoveEvaluator.cs	(revision 14147)
+++ branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.2D/3.3/MoveEvaluators/TranslocationMoveEvaluator.cs	(revision 14147)
@@ -0,0 +1,107 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2015 Joseph Helm and 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.Common;
+using HeuristicLab.Core;
+using HeuristicLab.Data;
+using HeuristicLab.Encodings.PermutationEncoding;
+using HeuristicLab.Operators;
+using HeuristicLab.Optimization;
+using HeuristicLab.Parameters;
+using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+
+namespace HeuristicLab.Problems.BinPacking2D {
+  [Item("TranslocationMoveEvaluator", "Move evaluator for insertion or translocation moves.")]
+  [StorableClass]
+  public sealed class TranslocationMoveEvaluator : SingleSuccessorOperator,
+    ISingleObjectiveMoveEvaluator, ISingleObjectiveMoveOperator, IPermutationTranslocationMoveOperator {
+    public override bool CanChangeName {
+      get { return false; }
+    }
+    public ILookupParameter<Permutation> PermutationParameter {
+      get { return (ILookupParameter<Permutation>)Parameters["PackingSequence"]; }
+    }
+    public ILookupParameter<DoubleValue> QualityParameter {
+      get { return (ILookupParameter<DoubleValue>)Parameters["Quality"]; }
+    }
+    public ILookupParameter<DoubleValue> MoveQualityParameter {
+      get { return (ILookupParameter<DoubleValue>)Parameters["MoveQuality"]; }
+    }
+    public ILookupParameter<ReadOnlyItemList<PackingItem>> PackingItemMeasuresParameter {
+      get { return (LookupParameter<ReadOnlyItemList<PackingItem>>)Parameters["Items"]; }
+    }
+    public ILookupParameter<PackingShape> PackingBinMeasuresParameter {
+      get { return (LookupParameter<PackingShape>)Parameters["BinShape"]; }
+    }
+    public ILookupParameter<IPermutationDecoder> PackingSolutionDecoderParameter {
+      get { return (ILookupParameter<IPermutationDecoder>)Parameters["Decoder"]; }
+    }
+    public ILookupParameter<IEvaluator> PackingPlanEvaluatorParameter {
+      get { return (ILookupParameter<IEvaluator>)Parameters["SolutionEvaluator"]; }
+    }
+
+    public ILookupParameter<TranslocationMove> TranslocationMoveParameter {
+      get { return (ILookupParameter<TranslocationMove>)Parameters["TranslocationMove"]; }
+    }
+
+    [StorableConstructor]
+    private TranslocationMoveEvaluator(bool deserializing) : base(deserializing) { }
+    private TranslocationMoveEvaluator(TranslocationMoveEvaluator original, Cloner cloner) : base(original, cloner) { }
+    public TranslocationMoveEvaluator()
+      : base() {
+      Parameters.Add(new LookupParameter<Permutation>("PackingSequence", "The encoded solution candidate to evaluate"));
+      Parameters.Add(new LookupParameter<DoubleValue>("Quality", "The quality of a packing solution."));
+      Parameters.Add(new LookupParameter<DoubleValue>("MoveQuality", "The evaluated quality of a move on a packing solution."));
+      Parameters.Add(new LookupParameter<ReadOnlyItemList<PackingItem>>("Items", "Packing-item data taken from the bin-packing problem-instance."));
+      Parameters.Add(new LookupParameter<PackingShape>("BinShape", "Packing-bin data taken from the bin-packing problem-instance."));
+      Parameters.Add(new LookupParameter<IPermutationDecoder>("Decoder", "The decoding operator that is used to calculate a packing plan from the used representation."));
+      Parameters.Add(new LookupParameter<IEvaluator>("SolutionEvaluator", "The actual packing plan evaluation operator."));
+      Parameters.Add(new LookupParameter<TranslocationMove>("TranslocationMove", "The move to evaluate."));
+    }
+
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new TranslocationMoveEvaluator(this, cloner);
+    }
+
+
+    public override IOperation Apply() {
+      var move = TranslocationMoveParameter.ActualValue;
+      var permutation = PermutationParameter.ActualValue;
+      var binShape = PackingBinMeasuresParameter.ActualValue;
+      var items = PackingItemMeasuresParameter.ActualValue;
+
+      // uses full evaluation
+
+      TranslocationManipulator.Apply(permutation, move.Index1, move.Index2, move.Index3);
+      var solution = PackingSolutionDecoderParameter.ActualValue.Decode(permutation, binShape, items);
+
+      var quality = PackingPlanEvaluatorParameter.ActualValue.Evaluate(solution);
+
+      double moveQuality = quality;
+
+      if (MoveQualityParameter.ActualValue == null)
+        MoveQualityParameter.ActualValue = new DoubleValue(moveQuality);
+      else
+        MoveQualityParameter.ActualValue.Value = moveQuality;
+      return base.Apply();
+    }
+  }
+}
Index: branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.2D/3.3/PackingSequenceProblem.cs
===================================================================
--- branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.2D/3.3/PackingSequenceProblem.cs	(revision 14146)
+++ branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.2D/3.3/PackingSequenceProblem.cs	(revision 14147)
@@ -178,9 +178,6 @@
 
     private void AddOperators() {
-      Operators.Add(new StochasticInsertionMultiMoveGenerator());
-      Operators.Add(new ExhaustiveInsertionMoveGenerator());
-      Operators.Add(new TranslocationMoveMaker());
       Operators.Add(new TranslocationMoveEvaluator());
-      Operators.Add(new TranslocationMoveTabuMaker());
+      Operators.Add(new Swap2MoveEvaluator());
 
       Operators.RemoveAll(x => x is SingleObjectiveMoveGenerator);
