Index: branches/OaaS/HeuristicLab.Problems.Knapsack/3.3/KnapsackProblem.cs
===================================================================
--- branches/OaaS/HeuristicLab.Problems.Knapsack/3.3/KnapsackProblem.cs	(revision 8228)
+++ branches/OaaS/HeuristicLab.Problems.Knapsack/3.3/KnapsackProblem.cs	(revision 9363)
@@ -23,4 +23,5 @@
 using System.Collections.Generic;
 using System.Linq;
+using HeuristicLab.Analysis;
 using HeuristicLab.Common;
 using HeuristicLab.Core;
@@ -80,4 +81,7 @@
     private BestKnapsackSolutionAnalyzer BestKnapsackSolutionAnalyzer {
       get { return Operators.OfType<BestKnapsackSolutionAnalyzer>().FirstOrDefault(); }
+    }
+    private SingleObjectivePopulationDiversityAnalyzer SingleObjectivePopulationDiversityAnalyzer {
+      get { return Operators.OfType<SingleObjectivePopulationDiversityAnalyzer>().FirstOrDefault(); }
     }
     #endregion
@@ -228,21 +232,36 @@
     }
     private void ParameterizeAnalyzer() {
-      BestKnapsackSolutionAnalyzer.MaximizationParameter.ActualName = MaximizationParameter.Name;
-      BestKnapsackSolutionAnalyzer.MaximizationParameter.Hidden = true;
-      BestKnapsackSolutionAnalyzer.BestKnownQualityParameter.ActualName = BestKnownQualityParameter.Name;
-      BestKnapsackSolutionAnalyzer.BestKnownQualityParameter.Hidden = true;
-      BestKnapsackSolutionAnalyzer.BestKnownSolutionParameter.ActualName = BestKnownSolutionParameter.Name;
-      BestKnapsackSolutionAnalyzer.BestKnownSolutionParameter.Hidden = true;
-      BestKnapsackSolutionAnalyzer.BinaryVectorParameter.ActualName = SolutionCreator.BinaryVectorParameter.ActualName;
-      BestKnapsackSolutionAnalyzer.BinaryVectorParameter.Hidden = true;
-      BestKnapsackSolutionAnalyzer.KnapsackCapacityParameter.ActualName = KnapsackCapacityParameter.Name;
-      BestKnapsackSolutionAnalyzer.KnapsackCapacityParameter.Hidden = true;
-      BestKnapsackSolutionAnalyzer.WeightsParameter.ActualName = WeightsParameter.Name;
-      BestKnapsackSolutionAnalyzer.WeightsParameter.Hidden = true;
-      BestKnapsackSolutionAnalyzer.ValuesParameter.ActualName = ValuesParameter.Name;
-      BestKnapsackSolutionAnalyzer.ValuesParameter.Hidden = true;
+      if (BestKnapsackSolutionAnalyzer != null) {
+        BestKnapsackSolutionAnalyzer.MaximizationParameter.ActualName = MaximizationParameter.Name;
+        BestKnapsackSolutionAnalyzer.MaximizationParameter.Hidden = true;
+        BestKnapsackSolutionAnalyzer.BestKnownQualityParameter.ActualName = BestKnownQualityParameter.Name;
+        BestKnapsackSolutionAnalyzer.BestKnownQualityParameter.Hidden = true;
+        BestKnapsackSolutionAnalyzer.BestKnownSolutionParameter.ActualName = BestKnownSolutionParameter.Name;
+        BestKnapsackSolutionAnalyzer.BestKnownSolutionParameter.Hidden = true;
+        BestKnapsackSolutionAnalyzer.BinaryVectorParameter.ActualName = SolutionCreator.BinaryVectorParameter.ActualName;
+        BestKnapsackSolutionAnalyzer.BinaryVectorParameter.Hidden = true;
+        BestKnapsackSolutionAnalyzer.KnapsackCapacityParameter.ActualName = KnapsackCapacityParameter.Name;
+        BestKnapsackSolutionAnalyzer.KnapsackCapacityParameter.Hidden = true;
+        BestKnapsackSolutionAnalyzer.WeightsParameter.ActualName = WeightsParameter.Name;
+        BestKnapsackSolutionAnalyzer.WeightsParameter.Hidden = true;
+        BestKnapsackSolutionAnalyzer.ValuesParameter.ActualName = ValuesParameter.Name;
+        BestKnapsackSolutionAnalyzer.ValuesParameter.Hidden = true;
+      }
+
+      if (SingleObjectivePopulationDiversityAnalyzer != null) {
+        SingleObjectivePopulationDiversityAnalyzer.MaximizationParameter.ActualName = MaximizationParameter.Name;
+        SingleObjectivePopulationDiversityAnalyzer.QualityParameter.ActualName = Evaluator.QualityParameter.ActualName;
+        SingleObjectivePopulationDiversityAnalyzer.ResultsParameter.ActualName = "Results";
+        SingleObjectivePopulationDiversityAnalyzer.SimilarityCalculator = Operators.OfType<KnapsackSimilarityCalculator>().SingleOrDefault();
+      }
     }
     private void InitializeOperators() {
+      Operators.Add(new KnapsackImprovementOperator());
+      Operators.Add(new KnapsackPathRelinker());
+      Operators.Add(new KnapsackSimultaneousPathRelinker());
+      Operators.Add(new KnapsackSimilarityCalculator());
+
       Operators.Add(new BestKnapsackSolutionAnalyzer());
+      Operators.Add(new SingleObjectivePopulationDiversityAnalyzer());
       ParameterizeAnalyzer();
       foreach (IBinaryVectorOperator op in ApplicationManager.Manager.GetInstances<IBinaryVectorOperator>()) {
@@ -286,7 +305,19 @@
         op.ValuesParameter.Hidden = true;
       }
-      foreach (var op in Operators.OfType<IBinaryVectorMultiNeighborhoodShakingOperator>()) {
+      foreach (IBinaryVectorMultiNeighborhoodShakingOperator op in Operators.OfType<IBinaryVectorMultiNeighborhoodShakingOperator>()) {
         op.BinaryVectorParameter.ActualName = SolutionCreator.BinaryVectorParameter.ActualName;
         op.BinaryVectorParameter.Hidden = true;
+      }
+      foreach (ISingleObjectiveImprovementOperator op in Operators.OfType<ISingleObjectiveImprovementOperator>()) {
+        op.SolutionParameter.ActualName = SolutionCreator.BinaryVectorParameter.ActualName;
+        op.SolutionParameter.Hidden = true;
+      }
+      foreach (ISingleObjectivePathRelinker op in Operators.OfType<ISingleObjectivePathRelinker>()) {
+        op.ParentsParameter.ActualName = SolutionCreator.BinaryVectorParameter.ActualName;
+        op.ParentsParameter.Hidden = true;
+      }
+      foreach (KnapsackSimilarityCalculator op in Operators.OfType<KnapsackSimilarityCalculator>()) {
+        op.SolutionVariableName = SolutionCreator.BinaryVectorParameter.ActualName;
+        op.QualityVariableName = Evaluator.QualityParameter.ActualName;
       }
     }
