Index: trunk/sources/HeuristicLab.Algorithms.GeneticAlgorithm/3.3/GeneticAlgorithm.cs
===================================================================
--- trunk/sources/HeuristicLab.Algorithms.GeneticAlgorithm/3.3/GeneticAlgorithm.cs	(revision 5307)
+++ trunk/sources/HeuristicLab.Algorithms.GeneticAlgorithm/3.3/GeneticAlgorithm.cs	(revision 5346)
@@ -26,4 +26,5 @@
 using HeuristicLab.Core;
 using HeuristicLab.Data;
+using HeuristicLab.Operators;
 using HeuristicLab.Optimization;
 using HeuristicLab.Optimization.Operators;
@@ -134,5 +135,5 @@
     }
     private GeneticAlgorithmMainLoop GeneticAlgorithmMainLoop {
-      get { return (GeneticAlgorithmMainLoop)SolutionsCreator.Successor; }
+      get { return (GeneticAlgorithmMainLoop)((Assigner)SolutionsCreator.Successor).Successor; }
     }
     [Storable]
@@ -155,4 +156,5 @@
       RandomCreator randomCreator = new RandomCreator();
       SolutionsCreator solutionsCreator = new SolutionsCreator();
+      Assigner assigner = new Assigner();
       GeneticAlgorithmMainLoop geneticAlgorithmMainLoop = new GeneticAlgorithmMainLoop();
       OperatorGraph.InitialOperator = randomCreator;
@@ -166,5 +168,10 @@
 
       solutionsCreator.NumberOfSolutionsParameter.ActualName = PopulationSizeParameter.Name;
-      solutionsCreator.Successor = geneticAlgorithmMainLoop;
+      solutionsCreator.Successor = assigner;
+
+      assigner.Name = "Initialize EvaluatedSolutions";
+      assigner.LeftSideParameter.ActualName = "EvaluatedSolutions";
+      assigner.RightSideParameter.ActualName = PopulationSizeParameter.Name;
+      assigner.Successor = geneticAlgorithmMainLoop;
 
       geneticAlgorithmMainLoop.SelectorParameter.ActualName = SelectorParameter.Name;
@@ -176,4 +183,6 @@
       geneticAlgorithmMainLoop.RandomParameter.ActualName = RandomCreator.RandomParameter.ActualName;
       geneticAlgorithmMainLoop.AnalyzerParameter.ActualName = AnalyzerParameter.Name;
+      geneticAlgorithmMainLoop.EvaluatedSolutionsParameter.ActualName = "EvaluatedSolutions";
+      geneticAlgorithmMainLoop.PopulationSizeParameter.ActualName = PopulationSizeParameter.Name;
       geneticAlgorithmMainLoop.ResultsParameter.ActualName = "Results";
 
Index: trunk/sources/HeuristicLab.Algorithms.GeneticAlgorithm/3.3/GeneticAlgorithmMainLoop.cs
===================================================================
--- trunk/sources/HeuristicLab.Algorithms.GeneticAlgorithm/3.3/GeneticAlgorithmMainLoop.cs	(revision 5307)
+++ trunk/sources/HeuristicLab.Algorithms.GeneticAlgorithm/3.3/GeneticAlgorithmMainLoop.cs	(revision 5346)
@@ -72,4 +72,10 @@
     public ValueLookupParameter<IOperator> AnalyzerParameter {
       get { return (ValueLookupParameter<IOperator>)Parameters["Analyzer"]; }
+    }
+    public ValueLookupParameter<IntValue> EvaluatedSolutionsParameter {
+      get { return (ValueLookupParameter<IntValue>)Parameters["EvaluatedSolutions"]; }
+    }
+    public ValueLookupParameter<IntValue> PopulationSizeParameter {
+      get { return (ValueLookupParameter<IntValue>)Parameters["PopulationSize"]; }
     }
     private ScopeParameter CurrentScopeParameter {
@@ -109,4 +115,6 @@
       Parameters.Add(new ValueLookupParameter<VariableCollection>("Results", "The variable collection where results should be stored."));
       Parameters.Add(new ValueLookupParameter<IOperator>("Analyzer", "The operator used to analyze each generation."));
+      Parameters.Add(new ValueLookupParameter<IntValue>("EvaluatedSolutions", "The number of times solutions have been evaluated."));
+      Parameters.Add(new ValueLookupParameter<IntValue>("PopulationSize", "The size of the population."));
       Parameters.Add(new ScopeParameter("CurrentScope", "The current scope which represents a population of solutions on which the genetic algorithm should be applied."));
       #endregion
@@ -126,9 +134,10 @@
       UniformSubScopesProcessor uniformSubScopesProcessor2 = new UniformSubScopesProcessor();
       Placeholder evaluator = new Placeholder();
+      IntCounter intCounter1 = new IntCounter();
       SubScopesProcessor subScopesProcessor2 = new SubScopesProcessor();
       BestSelector bestSelector = new BestSelector();
       RightReducer rightReducer = new RightReducer();
       MergingReducer mergingReducer = new MergingReducer();
-      IntCounter intCounter = new IntCounter();
+      IntCounter intCounter2 = new IntCounter();
       Comparator comparator = new Comparator();
       ResultsCollector resultsCollector2 = new ResultsCollector();
@@ -139,4 +148,5 @@
 
       resultsCollector1.CollectedValues.Add(new LookupParameter<IntValue>("Generations"));
+      resultsCollector1.CollectedValues.Add(new LookupParameter<IntValue>(EvaluatedSolutionsParameter.Name));
       resultsCollector1.ResultsParameter.ActualName = "Results";
 
@@ -164,4 +174,9 @@
       evaluator.Name = "Evaluator";
       evaluator.OperatorParameter.ActualName = "Evaluator";
+
+      intCounter1.Name = "Increment EvaluatedSolutions";
+      intCounter1.ValueParameter.ActualName = EvaluatedSolutionsParameter.Name;
+      intCounter1.Increment = null;
+      intCounter1.IncrementParameter.ActualName = PopulationSizeParameter.Name;
 
       bestSelector.CopySelected = new BoolValue(false);
@@ -170,6 +185,6 @@
       bestSelector.QualityParameter.ActualName = "Quality";
 
-      intCounter.Increment = new IntValue(1);
-      intCounter.ValueParameter.ActualName = "Generations";
+      intCounter2.Increment = new IntValue(1);
+      intCounter2.ValueParameter.ActualName = "Generations";
 
       comparator.Comparison = new Comparison(ComparisonType.GreaterOrEqual);
@@ -179,4 +194,5 @@
 
       resultsCollector2.CollectedValues.Add(new LookupParameter<IntValue>("Generations"));
+      resultsCollector2.CollectedValues.Add(new LookupParameter<IntValue>(EvaluatedSolutionsParameter.Name));
       resultsCollector2.ResultsParameter.ActualName = "Results";
 
@@ -206,6 +222,7 @@
       subScopesRemover.Successor = null;
       uniformSubScopesProcessor2.Operator = evaluator;
-      uniformSubScopesProcessor2.Successor = null;
+      uniformSubScopesProcessor2.Successor = intCounter1;
       evaluator.Successor = null;
+      intCounter1.Successor = null;
       subScopesProcessor2.Operators.Add(bestSelector);
       subScopesProcessor2.Operators.Add(new EmptyOperator());
@@ -213,6 +230,6 @@
       bestSelector.Successor = rightReducer;
       rightReducer.Successor = null;
-      mergingReducer.Successor = intCounter;
-      intCounter.Successor = comparator;
+      mergingReducer.Successor = intCounter2;
+      intCounter2.Successor = comparator;
       comparator.Successor = resultsCollector2;
       resultsCollector2.Successor = analyzer2;
