Index: branches/GeneralizedQAP/HeuristicLab.Problems.GeneralizedQuadraticAssignment/3.3/GeneralizedQuadraticAssignmentProblem.cs
===================================================================
--- branches/GeneralizedQAP/HeuristicLab.Problems.GeneralizedQuadraticAssignment/3.3/GeneralizedQuadraticAssignmentProblem.cs	(revision 7438)
+++ branches/GeneralizedQAP/HeuristicLab.Problems.GeneralizedQuadraticAssignment/3.3/GeneralizedQuadraticAssignmentProblem.cs	(revision 7443)
@@ -31,4 +31,5 @@
 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
 using HeuristicLab.PluginInfrastructure;
+using HeuristicLab.Problems.Instances;
 
 namespace HeuristicLab.Problems.GeneralizedQuadraticAssignment {
@@ -82,6 +83,6 @@
       get { return (FixedValueParameter<DoubleValue>)Parameters["OverbookedCapacityPenalty"]; }
     }
-    public OptionalValueParameter<IItem> BestKnownSolutionParameter {
-      get { return (OptionalValueParameter<IItem>)Parameters["BestKnownSolution"]; }
+    public OptionalValueParameter<GQAPSolution> BestKnownSolutionParameter {
+      get { return (OptionalValueParameter<GQAPSolution>)Parameters["BestKnownSolution"]; }
     }
     public OptionalValueParameter<GQAPAssignmentArchive> BestKnownSolutionsParameter {
@@ -117,11 +118,11 @@
       set { CapacitiesParameter.Value = value; }
     }
-    public double TransportationCosts {
-      get { return TransportationCostsParameter.Value.Value; }
-      set { TransportationCostsParameter.Value.Value = value; }
-    }
-    public double OverbookedCapacityPenalty {
-      get { return TransportationCostsParameter.Value.Value; }
-      set { TransportationCostsParameter.Value.Value = value; }
+    public DoubleValue TransportationCosts {
+      get { return TransportationCostsParameter.Value; }
+      set { TransportationCostsParameter.Value = value; }
+    }
+    public DoubleValue OverbookedCapacityPenalty {
+      get { return TransportationCostsParameter.Value; }
+      set { TransportationCostsParameter.Value = value; }
     }
     public StringArray EquipmentNames {
@@ -132,4 +133,8 @@
       get { return LocationNamesParameter.Value; }
       set { LocationNamesParameter.Value = value; }
+    }
+    public GQAPSolution BestKnownSolution {
+      get { return BestKnownSolutionParameter.Value; }
+      set { BestKnownSolutionParameter.Value = value; }
     }
     #endregion
@@ -157,10 +162,8 @@
       Parameters.Add(new ValueParameter<DoubleArray>("Demands", DemandsDescription, new DoubleArray(), false));
       Parameters.Add(new ValueParameter<DoubleArray>("Capacities", CapacitiesDescription, new DoubleArray(), false));
-      Parameters.Add(new OptionalValueParameter<IItem>("BestKnownSolution", BestKnownSolutionDescription, null, false));
+      Parameters.Add(new OptionalValueParameter<GQAPSolution>("BestKnownSolution", BestKnownSolutionDescription, null, false));
       Parameters.Add(new OptionalValueParameter<GQAPAssignmentArchive>("BestKnownSolutions", BestKnownSolutionsDescription, null, false));
       Parameters.Add(new OptionalValueParameter<StringArray>("EquipmentNames", EquipmentNamesDescription, null, false));
       Parameters.Add(new OptionalValueParameter<StringArray>("LocationNames", LocationNamesDescription, null, false));
-
-      BestKnownQualityParameter.Value = null;
 
       WeightsParameter.ReactOnValueToStringChangedAndValueItemImageChanged = false;
@@ -182,6 +185,4 @@
       InstallationCosts = new DoubleMatrix(5, 3);
 
-      TransportationCosts = 1;
-
       Demands = new DoubleArray(5);
       Demands[0] = 2; Demands[1] = 1; Demands[2] = 3; Demands[3] = 1; Demands[4] = 1;
@@ -198,4 +199,22 @@
     public override IDeepCloneable Clone(Cloner cloner) {
       return new GeneralizedQuadraticAssignmentProblem(this, cloner);
+    }
+
+    public void LoadFrom(IQAPInstance format) {
+      Weights = new DoubleMatrix(format.Weights);
+      Distances = new DoubleMatrix(format.Distances);
+      InstallationCosts = new DoubleMatrix(Weights.Rows, Distances.Columns);
+      Capacities = new DoubleArray(Enumerable.Range(0, Distances.Rows).Select(x => 1.0).ToArray());
+      Demands = new DoubleArray(Enumerable.Range(0, Weights.Rows).Select(x => 1.0).ToArray());
+
+      if (format.BestKnownAssignment != null) {
+        var assignment = new IntegerVector(format.BestKnownAssignment);
+        double flowDistanceQuality, installationQuality, overbookedCapacity;
+        GQAPEvaluator.Evaluate(assignment, Weights, Distances, InstallationCosts, Demands, Capacities,
+          out flowDistanceQuality, out installationQuality, out overbookedCapacity);
+        double quality = GQAPEvaluator.GetCombinedQuality(flowDistanceQuality, installationQuality, overbookedCapacity, TransportationCosts.Value, OverbookedCapacityPenalty.Value);
+        BestKnownSolution = new GQAPSolution(assignment, new DoubleValue(quality), new DoubleValue(flowDistanceQuality), new DoubleValue(installationQuality), new DoubleValue(overbookedCapacity));
+        BestKnownQuality = new DoubleValue(quality);
+      }
     }
 
Index: branches/GeneralizedQAP/HeuristicLab.Problems.GeneralizedQuadraticAssignment/3.3/HeuristicLab.Problems.GeneralizedQuadraticAssignment-3.3.csproj
===================================================================
--- branches/GeneralizedQAP/HeuristicLab.Problems.GeneralizedQuadraticAssignment/3.3/HeuristicLab.Problems.GeneralizedQuadraticAssignment-3.3.csproj	(revision 7438)
+++ branches/GeneralizedQAP/HeuristicLab.Problems.GeneralizedQuadraticAssignment/3.3/HeuristicLab.Problems.GeneralizedQuadraticAssignment-3.3.csproj	(revision 7443)
@@ -166,4 +166,8 @@
       <Name>HeuristicLab.Problems.GeneralizedQuadraticAssignment.Common-3.3</Name>
     </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Problems.Instances\3.3\HeuristicLab.Problems.Instances-3.3.csproj">
+      <Project>{3540E29E-4793-49E7-8EE2-FEA7F61C3994}</Project>
+      <Name>HeuristicLab.Problems.Instances-3.3</Name>
+    </ProjectReference>
   </ItemGroup>
   <ItemGroup />
Index: branches/GeneralizedQAP/HeuristicLab.Problems.GeneralizedQuadraticAssignment/3.3/Interfaces/IBestKnownSolutionAwareGQAPOperator.cs
===================================================================
--- branches/GeneralizedQAP/HeuristicLab.Problems.GeneralizedQuadraticAssignment/3.3/Interfaces/IBestKnownSolutionAwareGQAPOperator.cs	(revision 7438)
+++ branches/GeneralizedQAP/HeuristicLab.Problems.GeneralizedQuadraticAssignment/3.3/Interfaces/IBestKnownSolutionAwareGQAPOperator.cs	(revision 7443)
@@ -21,9 +21,8 @@
 
 using HeuristicLab.Core;
-using HeuristicLab.Encodings.IntegerVectorEncoding;
 
 namespace HeuristicLab.Problems.GeneralizedQuadraticAssignment {
   public interface IBestKnownSolutionAwareGQAPOperator : IGQAPOperator {
-    ILookupParameter<IntegerVector> BestKnownSolutionParameter { get; }
+    ILookupParameter<GQAPSolution> BestKnownSolutionParameter { get; }
   }
 }
