Index: /branches/ScatterSearch (trunk integration)/HeuristicLab.Algorithms.ScatterSearch/3.3/ScatterSearch.cs
===================================================================
--- /branches/ScatterSearch (trunk integration)/HeuristicLab.Algorithms.ScatterSearch/3.3/ScatterSearch.cs	(revision 7953)
+++ /branches/ScatterSearch (trunk integration)/HeuristicLab.Algorithms.ScatterSearch/3.3/ScatterSearch.cs	(revision 7954)
@@ -194,4 +194,6 @@
       Placeholder solutionEvaluator = new Placeholder();
       Placeholder solutionImprover = new Placeholder();
+      SubScopesCounter subScopesCounter = new SubScopesCounter();
+      ResultsCollector resultsCollector = new ResultsCollector();
       BestSelector bestSelector = new BestSelector();
       ScatterSearchMainLoop mainLoop = new ScatterSearchMainLoop();
@@ -210,5 +212,5 @@
 
       uniformSubScopesProcessor.Operator = solutionImprover;
-      uniformSubScopesProcessor.Successor = bestSelector;
+      uniformSubScopesProcessor.Successor = subScopesCounter;
 
       solutionImprover.Name = "SolutionImprover";
@@ -219,4 +221,12 @@
       solutionEvaluator.OperatorParameter.ActualName = "Evaluator";
       solutionEvaluator.Successor = null;
+
+      subScopesCounter.Name = "Initialize EvaluatedSolutions";
+      subScopesCounter.ValueParameter.ActualName = "EvaluatedSolutions";
+      subScopesCounter.Successor = resultsCollector;
+
+      resultsCollector.Name = "ResultsCollector";
+      resultsCollector.CollectedValues.Add(new LookupParameter<IntValue>("EvaluatedSolutions", null, "EvaluatedSolutions"));
+      resultsCollector.Successor = bestSelector;
 
       bestSelector.NumberOfSelectedSubScopesParameter.ActualName = NumberOfHighQualitySolutionsParameter.Name;
Index: /branches/ScatterSearch (trunk integration)/HeuristicLab.Algorithms.ScatterSearch/3.3/ScatterSearchMainLoop.cs
===================================================================
--- /branches/ScatterSearch (trunk integration)/HeuristicLab.Algorithms.ScatterSearch/3.3/ScatterSearchMainLoop.cs	(revision 7953)
+++ /branches/ScatterSearch (trunk integration)/HeuristicLab.Algorithms.ScatterSearch/3.3/ScatterSearchMainLoop.cs	(revision 7954)
@@ -47,4 +47,7 @@
       get { return (IValueLookupParameter<ICrossover>)Parameters["Crossover"]; }
     }
+    public IValueLookupParameter<IntValue> EvaluatedSolutionsParameter {
+      get { return (IValueLookupParameter<IntValue>)Parameters["EvaluatedSolutions"]; }
+    }
     public IValueLookupParameter<IEvaluator> EvaluatorParameter {
       get { return (IValueLookupParameter<IEvaluator>)Parameters["Evaluator"]; }
@@ -109,4 +112,8 @@
       get { return CrossoverParameter.ActualValue; }
       set { CrossoverParameter.ActualValue = value; }
+    }
+    private IntValue EvaluatedSolutions {
+      get { return EvaluatedSolutionsParameter.ActualValue; }
+      set { EvaluatedSolutionsParameter.ActualValue = value; }
     }
     private IEvaluator Evaluator {
@@ -190,4 +197,5 @@
       Parameters.Add(new ValueLookupParameter<DoubleValue>("BestKnownQuality"));
       Parameters.Add(new ValueLookupParameter<ICrossover>("Crossover"));
+      Parameters.Add(new ValueLookupParameter<IntValue>("EvaluatedSolutions"));
       Parameters.Add(new ValueLookupParameter<IEvaluator>("Evaluator"));
       Parameters.Add(new ValueLookupParameter<BoolValue>("ExecutePathRelinking"));
@@ -231,4 +239,6 @@
       SolutionPoolUpdateMethod solutionPoolUpdateMethod = new SolutionPoolUpdateMethod();
       SolutionsCreator solutionsCreator = new SolutionsCreator();
+      SubScopesCounter subScopesCounter1 = new SubScopesCounter();
+      SubScopesCounter subScopesCounter2 = new SubScopesCounter();
       SubScopesProcessor subScopesProcessor1 = new SubScopesProcessor();
       SubScopesProcessor subScopesProcessor2 = new SubScopesProcessor();
@@ -316,4 +326,5 @@
       uniformSubScopesProcessor2.DepthParameter.Value = new IntValue(2);
       uniformSubScopesProcessor2.Operator = solutionImprover1;
+      uniformSubScopesProcessor2.Successor = subScopesCounter1;
 
       solutionImprover1.Name = "SolutionImprover";
@@ -323,4 +334,7 @@
       solutionEvaluator1.Name = "SolutionEvaluator";
       solutionEvaluator1.OperatorParameter.ActualName = "Evaluator";
+
+      subScopesCounter1.Name = "Increment EvaluatedSolutions";
+      subScopesCounter1.ValueParameter.ActualName = EvaluatedSolutionsParameter.Name;
 
       solutionPoolUpdateMethod.QualityParameter.ActualName = QualityParameter.ActualName;
@@ -350,4 +364,5 @@
       uniformSubScopesProcessor3.DepthParameter.Value = new IntValue(1);
       uniformSubScopesProcessor3.Operator = solutionImprover2;
+      uniformSubScopesProcessor3.Successor = subScopesCounter2;
 
       solutionImprover2.Name = "SolutionImprover";
@@ -357,4 +372,7 @@
       solutionEvaluator2.Name = "SolutionEvaluator";
       solutionEvaluator2.OperatorParameter.ActualName = "Evaluator";
+
+      subScopesCounter2.Name = "Increment EvaluatedSolutions";
+      subScopesCounter2.ValueParameter.ActualName = EvaluatedSolutionsParameter.Name;
 
       iterationsCounter.Name = "IterationCounter";
Index: /branches/ScatterSearch (trunk integration)/HeuristicLab.Problems.TestFunctions/3.3/Improvers/SingleObjectiveTestFunctionImprovementOperator.cs
===================================================================
--- /branches/ScatterSearch (trunk integration)/HeuristicLab.Problems.TestFunctions/3.3/Improvers/SingleObjectiveTestFunctionImprovementOperator.cs	(revision 7953)
+++ /branches/ScatterSearch (trunk integration)/HeuristicLab.Problems.TestFunctions/3.3/Improvers/SingleObjectiveTestFunctionImprovementOperator.cs	(revision 7954)
@@ -45,4 +45,7 @@
       get { return (IValueParameter<DoubleValue>)Parameters["Beta"]; }
     }
+    public IValueLookupParameter<DoubleMatrix> BoundsParameter {
+      get { return (IValueLookupParameter<DoubleMatrix>)Parameters["Bounds"]; }
+    }
     public ScopeParameter CurrentScopeParameter {
       get { return (ScopeParameter)Parameters["CurrentScope"]; }
@@ -74,4 +77,7 @@
     private DoubleValue Beta {
       get { return BetaParameter.Value; }
+    }
+    private DoubleMatrix Bounds {
+      get { return BoundsParameter.ActualValue; }
     }
     public IScope CurrentScope {
@@ -109,4 +115,5 @@
       Parameters.Add(new ValueParameter<DoubleValue>("Alpha", new DoubleValue(1.0)));
       Parameters.Add(new ValueParameter<DoubleValue>("Beta", new DoubleValue(2.0)));
+      Parameters.Add(new ValueLookupParameter<DoubleMatrix>("Bounds"));
       Parameters.Add(new ScopeParameter("CurrentScope"));
       Parameters.Add(new ValueParameter<DoubleValue>("Delta", new DoubleValue(0.5)));
@@ -136,7 +143,7 @@
       for (int i = 0; i < simplex.Length; i++) {
         simplex[i] = bestSol.Clone() as RealVector;
-        simplex[i][i] += 0.1 * (Evaluator.Bounds[0, 1] - Evaluator.Bounds[0, 0]);
-        if (simplex[i][i] > Evaluator.Bounds[0, 1]) simplex[i][i] = Evaluator.Bounds[0, 1];
-        if (simplex[i][i] < Evaluator.Bounds[0, 0]) simplex[i][i] = Evaluator.Bounds[0, 0];
+        simplex[i][i] += 0.1 * (Bounds[0, 1] - Bounds[0, 0]);
+        if (simplex[i][i] > Bounds[0, 1]) simplex[i][i] = Bounds[0, 1];
+        if (simplex[i][i] < Bounds[0, 0]) simplex[i][i] = Bounds[0, 0];
       }
 
@@ -195,6 +202,6 @@
 
       for (int i = 0; i < simplex[0].Length; i++) {
-        if (simplex[0][i] > Evaluator.Bounds[0, 1]) simplex[0][i] = Evaluator.Bounds[0, 1];
-        if (simplex[0][i] < Evaluator.Bounds[0, 0]) simplex[0][i] = Evaluator.Bounds[0, 0];
+        if (simplex[0][i] > Bounds[0, 1]) simplex[0][i] = Bounds[0, 1];
+        if (simplex[0][i] < Bounds[0, 0]) simplex[0][i] = Bounds[0, 0];
       }
 
Index: /branches/ScatterSearch (trunk integration)/HeuristicLab.Problems.TestFunctions/3.3/SimilarityCalculators/SingleObjectiveTestFunctionSimilarityCalculator.cs
===================================================================
--- /branches/ScatterSearch (trunk integration)/HeuristicLab.Problems.TestFunctions/3.3/SimilarityCalculators/SingleObjectiveTestFunctionSimilarityCalculator.cs	(revision 7953)
+++ /branches/ScatterSearch (trunk integration)/HeuristicLab.Problems.TestFunctions/3.3/SimilarityCalculators/SingleObjectiveTestFunctionSimilarityCalculator.cs	(revision 7954)
@@ -26,5 +26,4 @@
 using HeuristicLab.Encodings.RealVectorEncoding;
 using HeuristicLab.Optimization.Operators;
-using HeuristicLab.Parameters;
 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
 
@@ -36,15 +35,6 @@
   [StorableClass]
   public sealed class SingleObjectiveTestFunctionSimilarityCalculator : SimilarityCalculator {
-    #region Parameter properties
-    public ILookupParameter<DoubleMatrix> BoundsParameter {
-      get { return (ILookupParameter<DoubleMatrix>)Parameters["Bounds"]; }
-    }
-    #endregion
-
     #region Properties
-    private DoubleMatrix Bounds {
-      get { return BoundsParameter.ActualValue; }
-      set { BoundsParameter.ActualValue = value; }
-    }
+    public DoubleMatrix Bounds { get; set; }
     #endregion
 
@@ -52,10 +42,5 @@
     private SingleObjectiveTestFunctionSimilarityCalculator(bool deserializing) : base(deserializing) { }
     private SingleObjectiveTestFunctionSimilarityCalculator(SingleObjectiveTestFunctionSimilarityCalculator original, Cloner cloner) : base(original, cloner) { }
-    public SingleObjectiveTestFunctionSimilarityCalculator()
-      : base() {
-      #region Create parameters
-      Parameters.Add(new LookupParameter<DoubleMatrix>("Bounds"));
-      #endregion
-    }
+    public SingleObjectiveTestFunctionSimilarityCalculator() : base() { }
 
     public override IDeepCloneable Clone(Cloner cloner) {
Index: /branches/ScatterSearch (trunk integration)/HeuristicLab.Problems.TestFunctions/3.3/SingleObjectiveTestFunctionProblem.cs
===================================================================
--- /branches/ScatterSearch (trunk integration)/HeuristicLab.Problems.TestFunctions/3.3/SingleObjectiveTestFunctionProblem.cs	(revision 7953)
+++ /branches/ScatterSearch (trunk integration)/HeuristicLab.Problems.TestFunctions/3.3/SingleObjectiveTestFunctionProblem.cs	(revision 7954)
@@ -376,7 +376,8 @@
         op.ParentsParameter.Hidden = true;
       }
-      foreach (ISimilarityCalculator op in Operators.OfType<ISimilarityCalculator>()) {
+      foreach (SingleObjectiveTestFunctionSimilarityCalculator op in Operators.OfType<ISimilarityCalculator>()) {
         op.TargetParameter.ActualName = SolutionCreator.RealVectorParameter.ActualName;
         op.TargetParameter.Hidden = true;
+        op.Bounds = Bounds;
       }
     }
