Index: trunk/sources/HeuristicLab.Algorithms.OffspringSelectionGeneticAlgorithm/3.3/OffspringSelectionGeneticAlgorithmMainLoop.cs
===================================================================
--- trunk/sources/HeuristicLab.Algorithms.OffspringSelectionGeneticAlgorithm/3.3/OffspringSelectionGeneticAlgorithmMainLoop.cs	(revision 3445)
+++ trunk/sources/HeuristicLab.Algorithms.OffspringSelectionGeneticAlgorithm/3.3/OffspringSelectionGeneticAlgorithmMainLoop.cs	(revision 3446)
@@ -37,7 +37,4 @@
   public sealed class OffspringSelectionGeneticAlgorithmMainLoop : AlgorithmOperator {
     #region Parameter properties
-    public OptionalValueParameter<VariableCreator> VariableInitializerParameter {
-      get { return (OptionalValueParameter<VariableCreator>)Parameters["VariableInitializer"]; }
-    }
     public ValueLookupParameter<IRandom> RandomParameter {
       get { return (ValueLookupParameter<IRandom>)Parameters["Random"]; }
@@ -104,9 +101,4 @@
     }
     #endregion
-
-    public VariableCreator VariableInitializer {
-      get { return VariableInitializerParameter.Value; }
-      set { VariableInitializerParameter.Value = value; }
-    }
 
     [StorableConstructor]
@@ -119,5 +111,4 @@
     private void Initialize() {
       #region Create parameters
-      Parameters.Add(new OptionalValueParameter<VariableCreator>("VariableInitializer", "Operator to initialize some variables.", new VariableCreator()));
       Parameters.Add(new ValueLookupParameter<IRandom>("Random", "A pseudo random number generator."));
       Parameters.Add(new ValueLookupParameter<BoolValue>("Maximization", "True if the problem is a maximization problem, otherwise false."));
@@ -144,5 +135,5 @@
 
       #region Create operators
-      Placeholder variableInitializer = new Placeholder();
+      ConditionalBranch initializationBranch = new ConditionalBranch();
       VariableCreator variableCreator = new VariableCreator();
       Assigner variableAssigner = new Assigner();
@@ -196,17 +187,15 @@
       ConditionalBranch conditionalBranch2 = new ConditionalBranch();
 
-      VariableInitializer.CollectedValues.Add(new ValueParameter<IntValue>("Generations", new IntValue(0)));
-      VariableInitializer.CollectedValues.Add(new ValueParameter<IntValue>("EvaluatedSolutions", new IntValue(0)));
-      VariableInitializer.Successor = variableAssigner;
-
-      variableAssigner.LeftSideParameter.ActualName = "ComparisonFactor";
-      variableAssigner.RightSideParameter.ActualName = ComparisonFactorLowerBoundParameter.Name;
-
-      variableInitializer.Name = "VariableInitializer (placeholder)";
-      variableInitializer.OperatorParameter.ActualName = VariableInitializerParameter.Name;
-
+      initializationBranch.ConditionParameter.ActualName = "IsInitialized";
+
+      variableCreator.CollectedValues.Add(new ValueParameter<IntValue>("Generations", new IntValue(0)));
+      variableCreator.CollectedValues.Add(new ValueParameter<IntValue>("EvaluatedSolutions", new IntValue(0)));
       variableCreator.CollectedValues.Add(new ValueParameter<DoubleValue>("SelectionPressure", new DoubleValue(0)));
       variableCreator.CollectedValues.Add(new ValueParameter<DoubleValue>("CurrentSuccessRatio", new DoubleValue(0)));
       variableCreator.CollectedValues.Add(new ValueParameter<IntValue>("EvaluatedSolutionsResult", new IntValue(0)));
+      variableCreator.CollectedValues.Add(new ValueParameter<BoolValue>("IsInitialized", new BoolValue(true)));
+
+      variableAssigner.LeftSideParameter.ActualName = "ComparisonFactor";
+      variableAssigner.RightSideParameter.ActualName = ComparisonFactorLowerBoundParameter.Name;
 
       bestQualityMemorizer1.BestQualityParameter.ActualName = "BestQuality";
@@ -397,7 +386,9 @@
 
       #region Create operator graph
-      OperatorGraph.InitialOperator = variableInitializer;
-      variableInitializer.Successor = variableCreator;
-      variableCreator.Successor = bestQualityMemorizer1;
+      OperatorGraph.InitialOperator = initializationBranch;
+      initializationBranch.FalseBranch = variableCreator;
+      initializationBranch.Successor = selector;
+      variableCreator.Successor = variableAssigner;
+      variableAssigner.Successor = bestQualityMemorizer1;
       bestQualityMemorizer1.Successor = bestQualityMemorizer2;
       bestQualityMemorizer2.Successor = bestAverageWorstQualityCalculator1;
@@ -407,5 +398,5 @@
       qualityDifferenceCalculator1.Successor = visualizer1;
       visualizer1.Successor = resultsCollector;
-      resultsCollector.Successor = selector;
+      resultsCollector.Successor = null;
       selector.Successor = subScopesProcessor1;
       subScopesProcessor1.Operators.Add(new EmptyOperator());
Index: trunk/sources/HeuristicLab.Algorithms.OffspringSelectionGeneticAlgorithm/3.3/OffspringSelectionIslandGeneticAlgorithmMainLoop.cs
===================================================================
--- trunk/sources/HeuristicLab.Algorithms.OffspringSelectionGeneticAlgorithm/3.3/OffspringSelectionIslandGeneticAlgorithmMainLoop.cs	(revision 3445)
+++ trunk/sources/HeuristicLab.Algorithms.OffspringSelectionGeneticAlgorithm/3.3/OffspringSelectionIslandGeneticAlgorithmMainLoop.cs	(revision 3446)
@@ -192,9 +192,7 @@
       
       islandVariableCreator.CollectedValues.Add(new ValueParameter<ResultCollection>("IslandResults", new ResultCollection()));
-      islandVariableCreator.CollectedValues.Add(new ValueParameter<IntValue>("Generations", new IntValue(0)));
-      islandVariableCreator.CollectedValues.Add(new ValueParameter<IntValue>("EvaluatedSolutions", new IntValue(0)));
-
-      islandVariableAssigner.LeftSideParameter.ActualName = "ComparisonFactor";
-      islandVariableAssigner.RightSideParameter.ActualName = ComparisonFactorLowerBoundParameter.Name;
+
+      islandVariableAssigner.LeftSideParameter.ActualName = "MaximumGenerations";
+      islandVariableAssigner.RightSideParameter.ActualName = "MigrationInterval";
 
       bestQualityMemorizer1.BestQualityParameter.ActualName = "BestQuality";
@@ -242,5 +240,4 @@
       resultsCollector.ResultsParameter.ActualName = ResultsParameter.Name;
 
-      mainLoop.VariableInitializer = null; // we do the variable initialization here
       mainLoop.BestKnownQualityParameter.ActualName = BestKnownQualityParameter.Name;
       mainLoop.MaximizationParameter.ActualName = MaximizationParameter.Name;
