Index: trunk/sources/HeuristicLab.GP.StructureIdentification/OffspringSelectionGP.cs
===================================================================
--- trunk/sources/HeuristicLab.GP.StructureIdentification/OffspringSelectionGP.cs	(revision 1346)
+++ trunk/sources/HeuristicLab.GP.StructureIdentification/OffspringSelectionGP.cs	(revision 1347)
@@ -35,4 +35,5 @@
 using HeuristicLab.Operators.Programmable;
 using HeuristicLab.Selection.OffspringSelection;
+using HeuristicLab.Evolutionary;
 
 namespace HeuristicLab.GP.StructureIdentification {
@@ -123,4 +124,5 @@
       CombinedOperator childCreater = new CombinedOperator();
       childCreater.Name = "Create children";
+      SequentialProcessor main = new SequentialProcessor();
       SequentialProcessor seq = new SequentialProcessor();
       SequentialProcessor offspringSelectionSeq = new SequentialProcessor();
@@ -131,11 +133,10 @@
       EmptyOperator emptyOp = new EmptyOperator();
       OffspringSelector offspringSelector = new OffspringSelector();
-      OffspringAnalyzer offspringAnalyzer = new OffspringAnalyzer();
-      SequentialProcessor selectedProc = new SequentialProcessor();
+      ChildrenInitializer childInitializer = new ChildrenInitializer();
+      UniformSequentialSubScopesProcessor individualProc = new UniformSequentialSubScopesProcessor();
+      SequentialProcessor individualSeqProc = new SequentialProcessor();
       OperatorExtractor crossover = new OperatorExtractor();
       crossover.Name = "Crossover (extr.)";
       crossover.GetVariableInfo("Operator").ActualName = "Crossover";
-      UniformSequentialSubScopesProcessor individualProc = new UniformSequentialSubScopesProcessor();
-      SequentialProcessor individualSeqProc = new SequentialProcessor();
       StochasticBranch cond = new StochasticBranch();
       cond.GetVariableInfo("Probability").ActualName = "MutationRate";
@@ -148,4 +149,6 @@
       Counter evalCounter = new Counter();
       evalCounter.GetVariableInfo("Value").ActualName = "EvaluatedSolutions";
+      WeightedOffspringFitnessComparer offspringFitnessComparer = new WeightedOffspringFitnessComparer();
+      SubScopesRemover parentScopesRemover = new SubScopesRemover();
 
       Sorter sorter = new Sorter();
@@ -160,24 +163,27 @@
       validationQualityEvaluator.GetVariableInfo("SamplesEnd").ActualName = "ValidationSamplesEnd";
 
+      main.AddSubOperator(seq);
+      seq.AddSubOperator(selector);
+      seq.AddSubOperator(seqSubScopesProc);
       seqSubScopesProc.AddSubOperator(emptyOp);
-      seqSubScopesProc.AddSubOperator(offspringAnalyzer);
-
-      seq.AddSubOperator(offspringSelectionSeq);
-      offspringSelectionSeq.AddSubOperator(selector);
-      offspringSelectionSeq.AddSubOperator(seqSubScopesProc);
-      offspringSelectionSeq.AddSubOperator(offspringSelector);
-      offspringSelector.AddSubOperator(offspringSelectionSeq);
-
-      offspringAnalyzer.AddSubOperator(selectedProc);
-      selectedProc.AddSubOperator(crossover);
-      selectedProc.AddSubOperator(individualProc);
+      seqSubScopesProc.AddSubOperator(offspringSelectionSeq);
+      seq.AddSubOperator(offspringSelector);
+      offspringSelector.AddSubOperator(seq);
+
+      offspringSelectionSeq.AddSubOperator(childInitializer);
+      offspringSelectionSeq.AddSubOperator(individualProc);
+      offspringSelectionSeq.AddSubOperator(sorter);
+
       individualProc.AddSubOperator(individualSeqProc);
+      individualSeqProc.AddSubOperator(crossover);
       individualSeqProc.AddSubOperator(cond);
       cond.AddSubOperator(manipulator);
       individualSeqProc.AddSubOperator(evaluator);
       individualSeqProc.AddSubOperator(evalCounter);
+      individualSeqProc.AddSubOperator(offspringFitnessComparer);
+      individualSeqProc.AddSubOperator(parentScopesRemover);
 
       SequentialSubScopesProcessor seqSubScopesProc2 = new SequentialSubScopesProcessor();
-      seq.AddSubOperator(seqSubScopesProc2);
+      main.AddSubOperator(seqSubScopesProc2);
       seqSubScopesProc2.AddSubOperator(emptyOp);
 
@@ -189,6 +195,6 @@
       validationEvaluator.AddSubOperator(validationQualityEvaluator);
 
-      childCreater.OperatorGraph.AddOperator(seq);
-      childCreater.OperatorGraph.InitialOperator = seq;
+      childCreater.OperatorGraph.AddOperator(main);
+      childCreater.OperatorGraph.InitialOperator = main;
       return childCreater;
     }
