Index: /trunk/sources/HeuristicLab.Algorithms.SGA/3.3/SGA.cs
===================================================================
--- /trunk/sources/HeuristicLab.Algorithms.SGA/3.3/SGA.cs	(revision 3022)
+++ /trunk/sources/HeuristicLab.Algorithms.SGA/3.3/SGA.cs	(revision 3023)
@@ -120,9 +120,9 @@
       get { return (RandomCreator)OperatorGraph.InitialOperator; }
     }
-    private PopulationCreator PopulationCreator {
-      get { return (PopulationCreator)RandomCreator.Successor; }
+    private SolutionsCreator SolutionsCreator {
+      get { return (SolutionsCreator)RandomCreator.Successor; }
     }
     private SGAMainLoop SGAMainLoop {
-      get { return (SGAMainLoop)PopulationCreator.Successor; }
+      get { return (SGAMainLoop)SolutionsCreator.Successor; }
     }
     private List<ISelector> selectors;
@@ -145,5 +145,5 @@
 
       RandomCreator randomCreator = new RandomCreator();
-      PopulationCreator populationCreator = new PopulationCreator();
+      SolutionsCreator solutionsCreator = new SolutionsCreator();
       SGAMainLoop sgaMainLoop = new SGAMainLoop();
       OperatorGraph.InitialOperator = randomCreator;
@@ -154,8 +154,8 @@
       randomCreator.SetSeedRandomlyParameter.ActualName = SetSeedRandomlyParameter.Name;
       randomCreator.SetSeedRandomlyParameter.Value = null;
-      randomCreator.Successor = populationCreator;
-
-      populationCreator.PopulationSizeParameter.ActualName = PopulationSizeParameter.Name;
-      populationCreator.Successor = sgaMainLoop;
+      randomCreator.Successor = solutionsCreator;
+
+      solutionsCreator.NumberOfSolutionsParameter.ActualName = PopulationSizeParameter.Name;
+      solutionsCreator.Successor = sgaMainLoop;
 
       sgaMainLoop.SelectorParameter.ActualName = SelectorParameter.Name;
@@ -184,5 +184,5 @@
       ParameterizeStochasticOperator(Problem.Evaluator);
       foreach (IOperator op in Problem.Operators) ParameterizeStochasticOperator(op);
-      ParameterizePopulationCreator();
+      ParameterizeSolutionsCreator();
       ParameterizeSGAMainLoop();
       ParameterizeSelectors();
@@ -194,10 +194,10 @@
     protected override void Problem_SolutionCreatorChanged(object sender, EventArgs e) {
       ParameterizeStochasticOperator(Problem.SolutionCreator);
-      ParameterizePopulationCreator();
+      ParameterizeSolutionsCreator();
       base.Problem_SolutionCreatorChanged(sender, e);
     }
     protected override void Problem_EvaluatorChanged(object sender, EventArgs e) {
       ParameterizeStochasticOperator(Problem.Evaluator);
-      ParameterizePopulationCreator();
+      ParameterizeSolutionsCreator();
       ParameterizeSGAMainLoop();
       ParameterizeSelectors();
@@ -244,7 +244,7 @@
     }
 
-    private void ParameterizePopulationCreator() {
-      PopulationCreator.EvaluatorParameter.ActualName = Problem.EvaluatorParameter.Name;
-      PopulationCreator.SolutionCreatorParameter.ActualName = Problem.SolutionCreatorParameter.Name;
+    private void ParameterizeSolutionsCreator() {
+      SolutionsCreator.EvaluatorParameter.ActualName = Problem.EvaluatorParameter.Name;
+      SolutionsCreator.SolutionCreatorParameter.ActualName = Problem.SolutionCreatorParameter.Name;
     }
     private void ParameterizeSGAMainLoop() {
Index: /trunk/sources/HeuristicLab.Optimization.Operators/3.3/HeuristicLab.Optimization.Operators-3.3.csproj
===================================================================
--- /trunk/sources/HeuristicLab.Optimization.Operators/3.3/HeuristicLab.Optimization.Operators-3.3.csproj	(revision 3022)
+++ /trunk/sources/HeuristicLab.Optimization.Operators/3.3/HeuristicLab.Optimization.Operators-3.3.csproj	(revision 3023)
@@ -82,7 +82,7 @@
   <ItemGroup>
     <Compile Include="HeuristicLabOptimizationOperatorsPlugin.cs" />
-    <Compile Include="PopulationCreator.cs" />
     <Compile Include="Properties\AssemblyInfo.cs" />
     <Compile Include="ChildrenCreator.cs" />
+    <Compile Include="SolutionsCreator.cs" />
   </ItemGroup>
   <ItemGroup>
Index: unk/sources/HeuristicLab.Optimization.Operators/3.3/PopulationCreator.cs
===================================================================
--- /trunk/sources/HeuristicLab.Optimization.Operators/3.3/PopulationCreator.cs	(revision 3022)
+++ 	(revision )
@@ -1,80 +1,0 @@
-﻿#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2010 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
- *
- * This file is part of HeuristicLab.
- *
- * HeuristicLab is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * HeuristicLab is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
- */
-#endregion
-
-using System;
-using HeuristicLab.Core;
-using HeuristicLab.Data;
-using HeuristicLab.Operators;
-using HeuristicLab.Parameters;
-using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
-
-namespace HeuristicLab.Optimization.Operators {
-  /// <summary>
-  /// An operator which creates a new population of solutions.
-  /// </summary>
-  [Item("PopulationCreator", "An operator which creates a new population of solutions.")]
-  [StorableClass]
-  [Creatable("Test")]
-  public sealed class PopulationCreator : SingleSuccessorOperator {
-    public ValueLookupParameter<IntData> PopulationSizeParameter {
-      get { return (ValueLookupParameter<IntData>)Parameters["PopulationSize"]; }
-    }
-    public ValueLookupParameter<IOperator> SolutionCreatorParameter {
-      get { return (ValueLookupParameter<IOperator>)Parameters["SolutionCreator"]; }
-    }
-    public ValueLookupParameter<IOperator> EvaluatorParameter {
-      get { return (ValueLookupParameter<IOperator>)Parameters["Evaluator"]; }
-    }
-    private ScopeParameter CurrentScopeParameter {
-      get { return (ScopeParameter)Parameters["CurrentScope"]; }
-    }
-    public IScope CurrentScope {
-      get { return CurrentScopeParameter.ActualValue; }
-    }
-
-    public PopulationCreator()
-      : base() {
-      Parameters.Add(new ValueLookupParameter<IntData>("PopulationSize", "The number of individuals that should be created."));
-      Parameters.Add(new ValueLookupParameter<IOperator>("SolutionCreator", "The operator which is used to create new solutions."));
-      Parameters.Add(new ValueLookupParameter<IOperator>("Evaluator", "The operator which is used to evaluate new solutions."));
-      Parameters.Add(new ScopeParameter("CurrentScope", "The current scope which represents the population."));
-    }
-
-    public override IOperation Apply() {
-      int size = PopulationSizeParameter.ActualValue.Value;
-      IOperator creator = SolutionCreatorParameter.ActualValue;
-      IOperator evaluator = EvaluatorParameter.ActualValue;
-
-      if (CurrentScope.SubScopes.Count > 0) throw new InvalidOperationException("Population is not empty. PopulationCreator cannot be applied on scopes which already contain sub-scopes.");
-
-      for (int i = 0; i < size; i++)
-        CurrentScope.SubScopes.Add(new Scope(i.ToString()));
-
-      OperationCollection next = new OperationCollection();
-      for (int i = 0; i < CurrentScope.SubScopes.Count; i++) {
-        if (creator != null) next.Add(ExecutionContext.CreateOperation(creator, CurrentScope.SubScopes[i]));
-        if (evaluator != null) next.Add(ExecutionContext.CreateOperation(evaluator, CurrentScope.SubScopes[i]));
-      }
-      next.Add(base.Apply());
-      return next;
-    }
-  }
-}
Index: /trunk/sources/HeuristicLab.Optimization.Operators/3.3/SolutionsCreator.cs
===================================================================
--- /trunk/sources/HeuristicLab.Optimization.Operators/3.3/SolutionsCreator.cs	(revision 3023)
+++ /trunk/sources/HeuristicLab.Optimization.Operators/3.3/SolutionsCreator.cs	(revision 3023)
@@ -0,0 +1,79 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2010 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using HeuristicLab.Core;
+using HeuristicLab.Data;
+using HeuristicLab.Operators;
+using HeuristicLab.Parameters;
+using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+
+namespace HeuristicLab.Optimization.Operators {
+  /// <summary>
+  /// An operator which creates new solutions.
+  /// </summary>
+  [Item("SolutionsCreator", "An operator which creates new solutions.")]
+  [StorableClass]
+  [Creatable("Test")]
+  public sealed class SolutionsCreator : SingleSuccessorOperator {
+    public ValueLookupParameter<IntData> NumberOfSolutionsParameter {
+      get { return (ValueLookupParameter<IntData>)Parameters["NumberOfSolutions"]; }
+    }
+    public ValueLookupParameter<IOperator> SolutionCreatorParameter {
+      get { return (ValueLookupParameter<IOperator>)Parameters["SolutionCreator"]; }
+    }
+    public ValueLookupParameter<IOperator> EvaluatorParameter {
+      get { return (ValueLookupParameter<IOperator>)Parameters["Evaluator"]; }
+    }
+    private ScopeParameter CurrentScopeParameter {
+      get { return (ScopeParameter)Parameters["CurrentScope"]; }
+    }
+    public IScope CurrentScope {
+      get { return CurrentScopeParameter.ActualValue; }
+    }
+
+    public SolutionsCreator()
+      : base() {
+      Parameters.Add(new ValueLookupParameter<IntData>("NumberOfSolutions", "The number of solutions that should be created."));
+      Parameters.Add(new ValueLookupParameter<IOperator>("SolutionCreator", "The operator which is used to create new solutions."));
+      Parameters.Add(new ValueLookupParameter<IOperator>("Evaluator", "The operator which is used to evaluate new solutions."));
+      Parameters.Add(new ScopeParameter("CurrentScope", "The current scope to which the new solutions are added as sub-scopes."));
+    }
+
+    public override IOperation Apply() {
+      int count = NumberOfSolutionsParameter.ActualValue.Value;
+      IOperator creator = SolutionCreatorParameter.ActualValue;
+      IOperator evaluator = EvaluatorParameter.ActualValue;
+
+      int current = CurrentScope.SubScopes.Count;
+      for (int i = 0; i < count; i++)
+        CurrentScope.SubScopes.Add(new Scope((current + i).ToString()));
+
+      OperationCollection next = new OperationCollection();
+      for (int i = 0; i < count; i++) {
+        if (creator != null) next.Add(ExecutionContext.CreateOperation(creator, CurrentScope.SubScopes[current + i]));
+        if (evaluator != null) next.Add(ExecutionContext.CreateOperation(evaluator, CurrentScope.SubScopes[current + i]));
+      }
+      next.Add(base.Apply());
+      return next;
+    }
+  }
+}
