Index: /branches/DataAnalysis.IslandAlgorithms/HeuristicLab.Algorithms.DataAnalysis.Symbolic/3.3/HeuristicLab.Algorithms.DataAnalysis.Symbolic.csproj
===================================================================
--- /branches/DataAnalysis.IslandAlgorithms/HeuristicLab.Algorithms.DataAnalysis.Symbolic/3.3/HeuristicLab.Algorithms.DataAnalysis.Symbolic.csproj	(revision 9181)
+++ /branches/DataAnalysis.IslandAlgorithms/HeuristicLab.Algorithms.DataAnalysis.Symbolic/3.3/HeuristicLab.Algorithms.DataAnalysis.Symbolic.csproj	(revision 9182)
@@ -99,4 +99,8 @@
       <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.Random-3.3.dll</HintPath>
     </Reference>
+    <Reference Include="HeuristicLab.Selection-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.Selection-3.3.dll</HintPath>
+    </Reference>
     <Reference Include="System" />
     <Reference Include="System.Core" />
Index: /branches/DataAnalysis.IslandAlgorithms/HeuristicLab.Algorithms.DataAnalysis.Symbolic/3.3/SymbolicDataAnalysisIslandGAEvaluator.cs
===================================================================
--- /branches/DataAnalysis.IslandAlgorithms/HeuristicLab.Algorithms.DataAnalysis.Symbolic/3.3/SymbolicDataAnalysisIslandGAEvaluator.cs	(revision 9181)
+++ /branches/DataAnalysis.IslandAlgorithms/HeuristicLab.Algorithms.DataAnalysis.Symbolic/3.3/SymbolicDataAnalysisIslandGAEvaluator.cs	(revision 9182)
@@ -44,8 +44,5 @@
     private const string FitnessCalculationPartitionParameterName = "FitnessCalculationPartition";
     private const string FixedSamplesPartitionParameterName = "FixedSamplesPartition";
-    private const string FixedSamplesParameterName = "FixedSamples";
-    private const string FixedSamplesFitnessWeightParameterName = "FixedSamplesFitnessWeight";
     private const string RandomSamplesParameterName = "RandomSamples";
-    private const string RandomSamplesFitnessWeightParameterName = "RandomSamplesFitnessWeight";
 
     #region parameter properties
@@ -71,28 +68,9 @@
       get { return (ILookupParameter<IntRange>)Parameters[FixedSamplesPartitionParameterName]; }
     }
-    public ILookupParameter<IntValue> FixedSamplesParameter {
-      get { return (ILookupParameter<IntValue>)Parameters[FixedSamplesParameterName]; }
-    }
-    public IFixedValueParameter<DoubleValue> FixedSamplesFitnessWeightParameter {
-      get { return (IFixedValueParameter<DoubleValue>)Parameters[FixedSamplesFitnessWeightParameterName]; }
-    }
     public ILookupParameter<IntValue> RandomSamplesParameter {
       get { return (ILookupParameter<IntValue>)Parameters[RandomSamplesParameterName]; }
     }
-    public IFixedValueParameter<DoubleValue> RandomSamplesFitnessWeightParameter {
-      get { return (IFixedValueParameter<DoubleValue>)Parameters[RandomSamplesFitnessWeightParameterName]; }
-    }
     #endregion
 
-    #region properties
-    public double FixedSamplesFitnessWeight {
-      get { return FixedSamplesFitnessWeightParameter.Value.Value; }
-      set { FixedSamplesFitnessWeightParameter.Value.Value = value; }
-    }
-    public double RandomSamplesFitnessWeight {
-      get { return RandomSamplesFitnessWeightParameter.Value.Value; }
-      set { RandomSamplesFitnessWeightParameter.Value.Value = value; }
-    }
-    #endregion
 
     [StorableConstructor]
@@ -114,8 +92,5 @@
       Parameters.Add(new ValueLookupParameter<IntRange>(FitnessCalculationPartitionParameterName, "The data partition used to calculate the fitness"));
       Parameters.Add(new LookupParameter<IntRange>(FixedSamplesPartitionParameterName, "The data partition which is used to calculate the fitness on the fixed samples."));
-      Parameters.Add(new LookupParameter<IntValue>(FixedSamplesParameterName, "The number of fixed samples used for fitness calculation in each island."));
-      Parameters.Add(new FixedValueParameter<DoubleValue>(FixedSamplesFitnessWeightParameterName, "The weight of the fitness obtained on the fixed samples.", new DoubleValue(1)));
       Parameters.Add(new LookupParameter<IntValue>(RandomSamplesParameterName, "The number of random samples used for fitness calculation in each island."));
-      Parameters.Add(new FixedValueParameter<DoubleValue>(RandomSamplesFitnessWeightParameterName, "The weight of the fitness obtained on the random samples.", new DoubleValue(1)));
 
       EvaluatorParameter.Hidden = true;
@@ -124,10 +99,7 @@
     public override IOperation Apply() {
       var evaluator = EvaluatorParameter.ActualValue;
-      //calculate fitness on fixed samples
-      if (QualityParameter.ActualValue == null) {
-        var operation = ExecutionContext.CreateOperation(evaluator, ExecutionContext.Scope);
-        return new OperationCollection() { operation, ExecutionContext.CreateOperation(this) };
-      }
-      //calculate fitness on random samples;
+      var tree = SymbolicExpressionTreeParameter.ActualValue;
+      var problemData = ProblemDataParameter.ActualValue;
+
       var samplesStart = FitnessCalculationPartitionParameter.ActualValue.Start;
       var samplesEnd = FitnessCalculationPartitionParameter.ActualValue.End;
@@ -137,14 +109,13 @@
       var maxRandomSamples = samplesEnd - samplesStart - fixedSamplesEnd + fixedSamplesStart;
 
-      var rows = Enumerable.Range(samplesStart, samplesEnd - samplesStart).Where(r => r < fixedSamplesStart || r >= fixedSamplesEnd);
-      rows = rows.SampleRandomWithoutRepetition(RandomParameter.ActualValue, randomSamples, maxRandomSamples);
-
-      var fixedSamplesFitness = QualityParameter.ActualValue.Value;
-      var tree = SymbolicExpressionTreeParameter.ActualValue;
-      var problemData = ProblemDataParameter.ActualValue;
+      //create rows for evaluation
+      var fixedRows = Enumerable.Range(fixedSamplesStart, fixedSamplesEnd - fixedSamplesStart);
+      var randomRows = Enumerable.Range(samplesStart, samplesEnd - samplesStart).Where(r => r < fixedSamplesStart || r >= fixedSamplesEnd);
+      randomRows = randomRows.SampleRandomWithoutRepetition(RandomParameter.ActualValue, randomSamples, maxRandomSamples);
+      var rows = fixedRows.Concat(randomRows);
 
       var executionContext = new ExecutionContext(ExecutionContext, evaluator, ExecutionContext.Scope);
-      var randomSamplesFitness = evaluator.Evaluate(executionContext, tree, problemData, rows);
-      QualityParameter.ActualValue.Value = fixedSamplesFitness * FixedSamplesFitnessWeight + randomSamplesFitness * RandomSamplesFitnessWeight;
+      var fitness = evaluator.Evaluate(executionContext, tree, problemData, rows);
+      QualityParameter.ActualValue = new DoubleValue(fitness);
       return base.Apply();
     }
Index: /branches/DataAnalysis.IslandAlgorithms/HeuristicLab.Algorithms.DataAnalysis.Symbolic/3.3/SymbolicDataAnalysisIslandGeneticAlgorithm.cs
===================================================================
--- /branches/DataAnalysis.IslandAlgorithms/HeuristicLab.Algorithms.DataAnalysis.Symbolic/3.3/SymbolicDataAnalysisIslandGeneticAlgorithm.cs	(revision 9181)
+++ /branches/DataAnalysis.IslandAlgorithms/HeuristicLab.Algorithms.DataAnalysis.Symbolic/3.3/SymbolicDataAnalysisIslandGeneticAlgorithm.cs	(revision 9182)
@@ -27,4 +27,5 @@
 using HeuristicLab.Core;
 using HeuristicLab.Data;
+using HeuristicLab.Operators;
 using HeuristicLab.Optimization;
 using HeuristicLab.Parameters;
@@ -33,8 +34,9 @@
 using HeuristicLab.Problems.DataAnalysis.Symbolic;
 using HeuristicLab.Random;
+using HeuristicLab.Selection;
 
 namespace HeuristicLab.Algorithms.DataAnalysis.Symbolic {
   [Item("Symbolic DataAnalysis Island Genetic Algorithm", "A symbolic data analysis island genetic algorithm.")]
-  [Creatable("Algorithms")]
+  [Creatable("Data Analysis")]
   [StorableClass]
   public sealed class SymbolicDataAnalysisIslandGeneticAlgorithm : IslandGeneticAlgorithm {
@@ -122,4 +124,14 @@
       insertionPoint.Successor = fixedSamplesPartitionCreator;
 
+      //necessary to reevaluate elites 
+      var evaluatorPlaceHolder = new Placeholder();
+      evaluatorPlaceHolder.OperatorParameter.ActualName = "Evaluator";
+
+      UniformSubScopesProcessor subScopesProcessor = new UniformSubScopesProcessor();
+      subScopesProcessor.Name = "Reevaluate elites";
+      subScopesProcessor.Parallel.Value = true;
+      subScopesProcessor.Operator = evaluatorPlaceHolder;
+      OperatorGraph.Iterate().OfType<RightReducer>().First().Successor = subScopesProcessor;
+
       RegisterParameterEvents();
       RecalculateFixedSamplesPartitions();
@@ -161,5 +173,5 @@
     }
 
-   
+
     private void ParameterizeAnalyzers() {
       foreach (var analyzer in Analyzer.Operators.OfType<ISymbolicDataAnalysisAnalyzer>()) {
@@ -192,10 +204,8 @@
       if (Problem is IRegressionProblem) {
         var evaluator = new SymbolicDataAnalysisIslandGAEvaluator<IRegressionProblemData>();
-        evaluator.FixedSamplesParameter.ActualName = FixedSamplesParameterName;
         evaluator.RandomSamplesParameter.ActualName = RandomSamplesParameterName;
         EvaluatorParameter.Value = evaluator;
       } else if (Problem is IClassificationProblem) {
         var evaluator = new SymbolicDataAnalysisIslandGAEvaluator<IClassificationProblemData>();
-        evaluator.FixedSamplesParameter.ActualName = FixedSamplesParameterName;
         evaluator.RandomSamplesParameter.ActualName = RandomSamplesParameterName;
         EvaluatorParameter.Value = evaluator;
