Index: branches/HeuristicLab.Hive.Azure/HeuristicLab.Problems.QuadraticAssignment.Algorithms/3.3/RobustTabooSearch.cs
===================================================================
--- branches/HeuristicLab.Hive.Azure/HeuristicLab.Problems.QuadraticAssignment.Algorithms/3.3/RobustTabooSearch.cs	(revision 6988)
+++ branches/HeuristicLab.Hive.Azure/HeuristicLab.Problems.QuadraticAssignment.Algorithms/3.3/RobustTabooSearch.cs	(revision 7215)
@@ -51,6 +51,6 @@
 
     #region Parameter Properties
-    public FixedValueParameter<MultiAnalyzer> AnalyzerParameter {
-      get { return (FixedValueParameter<MultiAnalyzer>)Parameters["Analyzer"]; }
+    public IValueParameter<MultiAnalyzer> AnalyzerParameter {
+      get { return (IValueParameter<MultiAnalyzer>)Parameters["Analyzer"]; }
     }
     public FixedValueParameter<IntValue> SeedParameter {
@@ -77,4 +77,7 @@
     public FixedValueParameter<BoolValue> UseNewTabuTenureAdaptionSchemeParameter {
       get { return (FixedValueParameter<BoolValue>)Parameters["UseNewTabuTenureAdaptionScheme"]; }
+    }
+    public FixedValueParameter<BoolValue> TerminateOnOptimalSolutionParameter {
+      get { return (FixedValueParameter<BoolValue>)Parameters["TerminateOnOptimalSolution"]; }
     }
     #endregion
@@ -112,4 +115,8 @@
       get { return UseNewTabuTenureAdaptionSchemeParameter.Value.Value; }
       set { UseNewTabuTenureAdaptionSchemeParameter.Value.Value = value; }
+    }
+    public bool TerminateOnOptimalSolution {
+      get { return TerminateOnOptimalSolutionParameter.Value.Value; }
+      set { TerminateOnOptimalSolutionParameter.Value.Value = value; }
     }
     #endregion
@@ -132,5 +139,5 @@
     }
     public RobustTabooSearch() {
-      Parameters.Add(new FixedValueParameter<MultiAnalyzer>("Analyzer", "The analyzers that are applied after each iteration.", new MultiAnalyzer()));
+      Parameters.Add(new ValueParameter<MultiAnalyzer>("Analyzer", "The analyzers that are applied after each iteration.", new MultiAnalyzer()));
       Parameters.Add(new FixedValueParameter<IntValue>("Seed", "The seed value of the random number generator.", new IntValue(0)));
       Parameters.Add(new FixedValueParameter<BoolValue>("SetSeedRandomly", "True whether the seed should be set randomly for each run, false if it should be fixed.", new BoolValue(true)));
@@ -140,9 +147,11 @@
       Parameters.Add(new FixedValueParameter<BoolValue>("UseAlternativeAspiration", "True if the alternative aspiration condition should be used that takes moves that have not been made for some time above others.", new BoolValue(false)));
       Parameters.Add(new FixedValueParameter<IntValue>("AlternativeAspirationTenure", "The time t that a move will be remembered for the alternative aspiration condition.", new IntValue(int.MaxValue)));
-      Parameters.Add(new FixedValueParameter<BoolValue>("TerminateOnOptimalSolution", "True when the algorithm should stop if it reached a quality equal or smaller to the BestKnownQuality.", new BoolValue(true)));
+      Parameters.Add(new FixedValueParameter<BoolValue>("TerminateOnOptimalSolution", "True when the algorithm should stop if it reached a quality equal or smaller to the BestKnownQuality.", new BoolValue(false)));
       Parameters.Add(new FixedValueParameter<BoolValue>("UseNewTabuTenureAdaptionScheme", @"In an updated version of his implementation, Eric Taillard introduced a different way to change the tabu tenure.
 Instead of setting it uniformly between min and max, it will be set between 0 and max according to a right-skewed distribution.
 Set this option to false if you want to optimize using the earlier 1991 version, and set to true if you want to optimize using the newer version.
 Please note that the MinimumTabuTenure parameter has no effect in the new version.", new BoolValue(true)));
+
+      TerminateOnOptimalSolutionParameter.Hidden = true;
 
       qualityAnalyzer = new BestAverageWorstQualityAnalyzer();
@@ -298,4 +307,12 @@
     [StorableHook(HookType.AfterDeserialization)]
     private void AfterDeserialization() {
+      // BackwardsCompatibility3.3
+      #region Backwards compatible code, remove with 3.4
+      if (Parameters["Analyzer"] is FixedValueParameter<MultiAnalyzer>) {
+        MultiAnalyzer analyzer = AnalyzerParameter.Value;
+        Parameters.Remove("Analyzer");
+        Parameters.Add(new ValueParameter<MultiAnalyzer>("Analyzer", "The analyzers that are applied after each iteration.", analyzer));
+      }
+      #endregion
       RegisterEventHandlers();
     }
@@ -365,10 +382,10 @@
       if (Problem != null) {
         foreach (IAnalyzer analyzer in ((IProblem)Problem).Operators.OfType<IAnalyzer>()) {
-          AnalyzerParameter.Value.Operators.Add(analyzer);
+          AnalyzerParameter.Value.Operators.Add(analyzer, analyzer.EnabledByDefault);
           if (!(analyzer is BestQAPSolutionAnalyzer))
             AnalyzerParameter.Value.Operators.SetItemCheckedState(analyzer, false);
         }
       }
-      AnalyzerParameter.Value.Operators.Add(qualityAnalyzer);
+      AnalyzerParameter.Value.Operators.Add(qualityAnalyzer, qualityAnalyzer.EnabledByDefault);
     }
 
