Index: branches/PerformanceComparison/HeuristicLab.Algorithms.MemPR/3.3/HeuristicLab.Algorithms.MemPR-3.3.csproj
===================================================================
--- branches/PerformanceComparison/HeuristicLab.Algorithms.MemPR/3.3/HeuristicLab.Algorithms.MemPR-3.3.csproj	(revision 14690)
+++ branches/PerformanceComparison/HeuristicLab.Algorithms.MemPR/3.3/HeuristicLab.Algorithms.MemPR-3.3.csproj	(revision 14691)
@@ -132,4 +132,14 @@
     <Reference Include="HeuristicLab.Problems.DataAnalysis-3.4">
       <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.Problems.DataAnalysis-3.4.dll</HintPath>
+      <Private>False</Private>
+    </Reference>
+    <Reference Include="HeuristicLab.Problems.Instances-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.Problems.Instances-3.3.dll</HintPath>
+      <Private>False</Private>
+    </Reference>
+    <Reference Include="HeuristicLab.Problems.QuadraticAssignment-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.Problems.QuadraticAssignment-3.3.dll</HintPath>
       <Private>False</Private>
     </Reference>
Index: branches/PerformanceComparison/HeuristicLab.Algorithms.MemPR/3.3/MemPRContext.cs
===================================================================
--- branches/PerformanceComparison/HeuristicLab.Algorithms.MemPR/3.3/MemPRContext.cs	(revision 14690)
+++ branches/PerformanceComparison/HeuristicLab.Algorithms.MemPR/3.3/MemPRContext.cs	(revision 14691)
@@ -469,4 +469,7 @@
 
     private TContext parent;
+    protected TContext BaseContext {
+      get { return parent;}
+    }
     public IExecutionContext Parent {
       get { return parent; }
Index: branches/PerformanceComparison/HeuristicLab.Algorithms.MemPR/3.3/Permutation/LocalSearch/ExhaustiveHillClimb.cs
===================================================================
--- branches/PerformanceComparison/HeuristicLab.Algorithms.MemPR/3.3/Permutation/LocalSearch/ExhaustiveHillClimb.cs	(revision 14690)
+++ branches/PerformanceComparison/HeuristicLab.Algorithms.MemPR/3.3/Permutation/LocalSearch/ExhaustiveHillClimb.cs	(revision 14691)
@@ -28,4 +28,5 @@
 using HeuristicLab.Optimization;
 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HeuristicLab.Problems.QuadraticAssignment;
 
 namespace HeuristicLab.Algorithms.MemPR.Permutation.LocalSearch {
@@ -54,17 +55,26 @@
       var quality = context.Solution.Fitness;
       try {
+
+        var min = 0.0;
+        var max = 1.0;
+        var qap = context.Problem as QuadraticAssignmentProblem;
+        if (qap != null) {
+          min = qap.LowerBound.Value;
+          max = qap.AverageQuality.Value;
+        }
+
         var path = new List<Tuple<Encodings.PermutationEncoding.Permutation, double>>();
-        path.Add(Tuple.Create((Encodings.PermutationEncoding.Permutation)context.Solution.Solution.Clone(), quality));
+        path.Add(Tuple.Create((Encodings.PermutationEncoding.Permutation)context.Solution.Solution.Clone(), (quality - min) / (max - min)));
 
         var result = Exhaustive.HillClimb(context.Random, context.Solution.Solution, quality,
           context.Maximization, context.Evaluate, CancellationToken.None);
-
-        Tuple<Encodings.PermutationEncoding.Permutation, double, int> last = null;
+        
+        var evaluations = 0;
         foreach (var step in result) {
-          path.Add(Tuple.Create((Encodings.PermutationEncoding.Permutation)step.Item1.Clone(), step.Item2));
-          last = step;
+          path.Add(Tuple.Create((Encodings.PermutationEncoding.Permutation)step.Item1.Clone(), (step.Item2 - min) / (max - min)));
+          evaluations = step.Item3; // last one will be actual evaluations
         }
         context.LocalSearchPaths.AddPath(path);
-        context.IncrementEvaluatedSolutions(last.Item3);
+        context.IncrementEvaluatedSolutions(evaluations);
         context.Iterations = path.Count - 2;
       } finally {
Index: branches/PerformanceComparison/HeuristicLab.Algorithms.MemPR/3.3/Permutation/LocalSearch/ExhaustiveHillClimbSubspace.cs
===================================================================
--- branches/PerformanceComparison/HeuristicLab.Algorithms.MemPR/3.3/Permutation/LocalSearch/ExhaustiveHillClimbSubspace.cs	(revision 14690)
+++ branches/PerformanceComparison/HeuristicLab.Algorithms.MemPR/3.3/Permutation/LocalSearch/ExhaustiveHillClimbSubspace.cs	(revision 14691)
@@ -28,4 +28,5 @@
 using HeuristicLab.Optimization;
 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HeuristicLab.Problems.QuadraticAssignment;
 
 namespace HeuristicLab.Algorithms.MemPR.Permutation.LocalSearch {
@@ -54,17 +55,25 @@
       var quality = context.Solution.Fitness;
       try {
+        var min = 0.0;
+        var max = 1.0;
+        var qap = context.Problem as QuadraticAssignmentProblem;
+        if (qap != null) {
+          min = qap.LowerBound.Value;
+          max = qap.AverageQuality.Value;
+        }
+
         var path = new List<Tuple<Encodings.PermutationEncoding.Permutation, double>>();
-        path.Add(Tuple.Create((Encodings.PermutationEncoding.Permutation)context.Solution.Solution.Clone(), quality));
+        path.Add(Tuple.Create((Encodings.PermutationEncoding.Permutation)context.Solution.Solution.Clone(), (quality - min) / (max - min)));
 
         var result = Exhaustive.HillClimb(context.Random, context.Solution.Solution, quality,
           context.Maximization, context.Evaluate, CancellationToken.None, context.Subspace.Subspace);
 
-        Tuple<Encodings.PermutationEncoding.Permutation, double, int> last = null;
+        var evaluations = 0;
         foreach (var step in result) {
-          path.Add(Tuple.Create((Encodings.PermutationEncoding.Permutation)step.Item1.Clone(), step.Item2));
-          last = step;
+          path.Add(Tuple.Create((Encodings.PermutationEncoding.Permutation)step.Item1.Clone(), (step.Item2 - min) / (max - min)));
+          evaluations = step.Item3; // last one will be actual evaluations
         }
         context.LocalSearchPaths.AddPath(path);
-        context.IncrementEvaluatedSolutions(last.Item3);
+        context.IncrementEvaluatedSolutions(evaluations);
         context.Iterations = path.Count - 2;
       } finally {
Index: branches/PerformanceComparison/HeuristicLab.Algorithms.MemPR/3.3/Permutation/PermutationMemPRContext.cs
===================================================================
--- branches/PerformanceComparison/HeuristicLab.Algorithms.MemPR/3.3/Permutation/PermutationMemPRContext.cs	(revision 14690)
+++ branches/PerformanceComparison/HeuristicLab.Algorithms.MemPR/3.3/Permutation/PermutationMemPRContext.cs	(revision 14691)
@@ -23,4 +23,5 @@
 using System.Runtime.Remoting.Contexts;
 using HeuristicLab.Algorithms.MemPR.Interfaces;
+using HeuristicLab.Analysis.FitnessLandscape;
 using HeuristicLab.Common;
 using HeuristicLab.Core;
@@ -61,5 +62,6 @@
   [Item("MemPR Solution Context (permutation)", "MemPR solution context for permutation encoded problems.")]
   [StorableClass]
-  public sealed class PermutationMemPRSolutionContext : MemPRSolutionContext<ISingleObjectiveHeuristicOptimizationProblem, Encodings.PermutationEncoding.Permutation, PermutationMemPRPopulationContext, PermutationMemPRSolutionContext>, IPermutationSubspaceContext {
+  public sealed class PermutationMemPRSolutionContext : MemPRSolutionContext<ISingleObjectiveHeuristicOptimizationProblem, Encodings.PermutationEncoding.Permutation, PermutationMemPRPopulationContext, PermutationMemPRSolutionContext>, IPermutationSubspaceContext,
+    ILocalSearchPathContext<Encodings.PermutationEncoding.Permutation> {
 
     [Storable]
@@ -87,4 +89,8 @@
       return new PermutationMemPRSolutionContext(this, cloner);
     }
+
+    public DirectedPath<Encodings.PermutationEncoding.Permutation> LocalSearchPaths {
+      get { return BaseContext.LocalSearchPaths; }
+    }
   }
 }
