Index: trunk/sources/HeuristicLab.GP.StructureIdentification/3.3/AlgorithmBase.cs
===================================================================
--- trunk/sources/HeuristicLab.GP.StructureIdentification/3.3/AlgorithmBase.cs	(revision 2136)
+++ trunk/sources/HeuristicLab.GP.StructureIdentification/3.3/AlgorithmBase.cs	(revision 2161)
@@ -65,9 +65,9 @@
 
     public virtual IOperator ProblemInjector {
-      get { return algorithm.SubOperators[0]; }
+      get { return algorithm.SubOperators[1]; }
       set {
         value.Name = "ProblemInjector";
-        algorithm.RemoveSubOperator(0);
-        algorithm.AddSubOperator(value, 0);
+        algorithm.RemoveSubOperator(1);
+        algorithm.AddSubOperator(value, 1);
       }
     }
@@ -155,6 +155,6 @@
       MeanSquaredErrorEvaluator evaluator = new MeanSquaredErrorEvaluator();
       evaluator.GetVariableInfo("MSE").ActualName = "Quality";
-      evaluator.GetVariableInfo("SamplesStart").ActualName = "TrainingSamplesStart";
-      evaluator.GetVariableInfo("SamplesEnd").ActualName = "TrainingSamplesEnd";
+      evaluator.GetVariableInfo("SamplesStart").ActualName = "ActualTrainingSamplesStart";
+      evaluator.GetVariableInfo("SamplesEnd").ActualName = "ActualTrainingSamplesEnd";
       evaluator.Name = "Evaluator";
 
@@ -165,6 +165,6 @@
       LeftReducer cleanUp = new LeftReducer();
 
+      seq.AddSubOperator(randomInjector);
       seq.AddSubOperator(problemInjector);
-      seq.AddSubOperator(randomInjector);
       seq.AddSubOperator(globalInjector);
       seq.AddSubOperator(funLibInjector);
@@ -465,5 +465,5 @@
       // SequentialProcessor in GP
       algorithm = (SequentialProcessor)co1.OperatorGraph.InitialOperator;
-      return (RandomInjector)algorithm.SubOperators[1];
+      return (RandomInjector)algorithm.SubOperators[0];
     }
 
Index: trunk/sources/HeuristicLab.GP.StructureIdentification/3.3/StandardGP.cs
===================================================================
--- trunk/sources/HeuristicLab.GP.StructureIdentification/3.3/StandardGP.cs	(revision 2136)
+++ trunk/sources/HeuristicLab.GP.StructureIdentification/3.3/StandardGP.cs	(revision 2161)
@@ -96,4 +96,13 @@
     }
 
+    public override IOperator ProblemInjector {
+      get { return base.ProblemInjector.SubOperators[0]; }
+      set {
+        value.Name = "ProblemInjector";
+        base.ProblemInjector.RemoveSubOperator(0);
+        base.ProblemInjector.AddSubOperator(value, 0);
+      }
+    }
+
     public StandardGP()
       : base() {
@@ -113,5 +122,16 @@
 
     protected internal override IOperator CreateProblemInjector() {
-      return new ProblemInjector();
+      SequentialProcessor seq = new SequentialProcessor();      
+      var probInject = new ProblemInjector();
+      probInject.GetVariableInfo("MaxNumberOfTrainingSamples").Local = true;
+      probInject.AddVariable(new HeuristicLab.Core.Variable("MaxNumberOfTrainingSamples", new IntData(5000)));
+
+      var shuffler = new DatasetShuffler();
+      shuffler.GetVariableInfo("ShuffleStart").ActualName = "TrainingSamplesStart";
+      shuffler.GetVariableInfo("ShuffleEnd").ActualName = "TrainingSamplesEnd";
+
+      seq.AddSubOperator(probInject);
+      seq.AddSubOperator(shuffler);
+      return seq;
     }
 
@@ -200,4 +220,5 @@
     protected internal override IOperator CreateBestSolutionProcessor() {
       SequentialProcessor bestSolutionProcessor = new SequentialProcessor();
+      #region MSE
       MeanSquaredErrorEvaluator testMseEvaluator = new MeanSquaredErrorEvaluator();
       testMseEvaluator.Name = "TestMeanSquaredErrorEvaluator";
@@ -205,9 +226,11 @@
       testMseEvaluator.GetVariableInfo("SamplesStart").ActualName = "TestSamplesStart";
       testMseEvaluator.GetVariableInfo("SamplesEnd").ActualName = "TestSamplesEnd";
+      #endregion
+      #region MAPE
       MeanAbsolutePercentageErrorEvaluator trainingMapeEvaluator = new MeanAbsolutePercentageErrorEvaluator();
       trainingMapeEvaluator.Name = "TrainingMapeEvaluator";
       trainingMapeEvaluator.GetVariableInfo("MAPE").ActualName = "TrainingMAPE";
-      trainingMapeEvaluator.GetVariableInfo("SamplesStart").ActualName = "TrainingSamplesStart";
-      trainingMapeEvaluator.GetVariableInfo("SamplesEnd").ActualName = "TrainingSamplesEnd";
+      trainingMapeEvaluator.GetVariableInfo("SamplesStart").ActualName = "ActualTrainingSamplesStart";
+      trainingMapeEvaluator.GetVariableInfo("SamplesEnd").ActualName = "ActualTrainingSamplesEnd";
       MeanAbsolutePercentageErrorEvaluator validationMapeEvaluator = new MeanAbsolutePercentageErrorEvaluator();
       validationMapeEvaluator.Name = "ValidationMapeEvaluator";
@@ -220,9 +243,11 @@
       testMapeEvaluator.GetVariableInfo("SamplesStart").ActualName = "TestSamplesStart";
       testMapeEvaluator.GetVariableInfo("SamplesEnd").ActualName = "TestSamplesEnd";
+      #endregion
+      #region MAPRE
       MeanAbsolutePercentageOfRangeErrorEvaluator trainingMapreEvaluator = new MeanAbsolutePercentageOfRangeErrorEvaluator();
       trainingMapreEvaluator.Name = "TrainingMapreEvaluator";
       trainingMapreEvaluator.GetVariableInfo("MAPRE").ActualName = "TrainingMAPRE";
-      trainingMapreEvaluator.GetVariableInfo("SamplesStart").ActualName = "TrainingSamplesStart";
-      trainingMapreEvaluator.GetVariableInfo("SamplesEnd").ActualName = "TrainingSamplesEnd";
+      trainingMapreEvaluator.GetVariableInfo("SamplesStart").ActualName = "ActualTrainingSamplesStart";
+      trainingMapreEvaluator.GetVariableInfo("SamplesEnd").ActualName = "ActualTrainingSamplesEnd";
       MeanAbsolutePercentageOfRangeErrorEvaluator validationMapreEvaluator = new MeanAbsolutePercentageOfRangeErrorEvaluator();
       validationMapreEvaluator.Name = "ValidationMapreEvaluator";
@@ -235,9 +260,11 @@
       testMapreEvaluator.GetVariableInfo("SamplesStart").ActualName = "TestSamplesStart";
       testMapreEvaluator.GetVariableInfo("SamplesEnd").ActualName = "TestSamplesEnd";
+      #endregion MAPRE
+      #region R2
       CoefficientOfDeterminationEvaluator trainingR2Evaluator = new CoefficientOfDeterminationEvaluator();
       trainingR2Evaluator.Name = "TrainingR2Evaluator";
       trainingR2Evaluator.GetVariableInfo("R2").ActualName = "TrainingR2";
-      trainingR2Evaluator.GetVariableInfo("SamplesStart").ActualName = "TrainingSamplesStart";
-      trainingR2Evaluator.GetVariableInfo("SamplesEnd").ActualName = "TrainingSamplesEnd";
+      trainingR2Evaluator.GetVariableInfo("SamplesStart").ActualName = "ActualTrainingSamplesStart";
+      trainingR2Evaluator.GetVariableInfo("SamplesEnd").ActualName = "ActualTrainingSamplesEnd";
       CoefficientOfDeterminationEvaluator validationR2Evaluator = new CoefficientOfDeterminationEvaluator();
       validationR2Evaluator.Name = "ValidationR2Evaluator";
@@ -250,9 +277,11 @@
       testR2Evaluator.GetVariableInfo("SamplesStart").ActualName = "TestSamplesStart";
       testR2Evaluator.GetVariableInfo("SamplesEnd").ActualName = "TestSamplesEnd";
+      #endregion
+      #region VAF
       VarianceAccountedForEvaluator trainingVAFEvaluator = new VarianceAccountedForEvaluator();
       trainingVAFEvaluator.Name = "TrainingVAFEvaluator";
       trainingVAFEvaluator.GetVariableInfo("VAF").ActualName = "TrainingVAF";
-      trainingVAFEvaluator.GetVariableInfo("SamplesStart").ActualName = "TrainingSamplesStart";
-      trainingVAFEvaluator.GetVariableInfo("SamplesEnd").ActualName = "TrainingSamplesEnd";
+      trainingVAFEvaluator.GetVariableInfo("SamplesStart").ActualName = "ActualTrainingSamplesStart";
+      trainingVAFEvaluator.GetVariableInfo("SamplesEnd").ActualName = "ActualTrainingSamplesEnd";
       VarianceAccountedForEvaluator validationVAFEvaluator = new VarianceAccountedForEvaluator();
       validationVAFEvaluator.Name = "ValidationVAFEvaluator";
@@ -265,5 +294,5 @@
       testVAFEvaluator.GetVariableInfo("SamplesStart").ActualName = "TestSamplesStart";
       testVAFEvaluator.GetVariableInfo("SamplesEnd").ActualName = "TestSamplesEnd";
-
+      #endregion
       ProgrammableOperator progOperator = new ProgrammableOperator();
       progOperator.RemoveVariableInfo("Result");
