Index: stable/HeuristicLab.Algorithms.RandomSearch/3.3/HeuristicLab.Algorithms.RandomSearch-3.3.csproj
===================================================================
--- trunk/sources/HeuristicLab.Algorithms.RandomSearch/3.3/HeuristicLab.Algorithms.RandomSearch-3.3.csproj	(revision 13581)
+++ stable/HeuristicLab.Algorithms.RandomSearch/3.3/HeuristicLab.Algorithms.RandomSearch-3.3.csproj	(revision 13952)
@@ -136,11 +136,18 @@
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
   <PropertyGroup>
-    <PreBuildEvent>set Path=%25Path%25;$(ProjectDir);$(SolutionDir)
-set ProjectDir=$(ProjectDir)
-set SolutionDir=$(SolutionDir)
-set Outdir=$(Outdir)
+    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">
+      set Path=%25Path%25;$(ProjectDir);$(SolutionDir)
+      set ProjectDir=$(ProjectDir)
+      set SolutionDir=$(SolutionDir)
+      set Outdir=$(Outdir)
 
-call PreBuildEvent.cmd
-</PreBuildEvent>
+      call PreBuildEvent.cmd
+    </PreBuildEvent>
+    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+      export ProjectDir=$(ProjectDir)
+      export SolutionDir=$(SolutionDir)
+
+      $SolutionDir/PreBuildEvent.sh
+    </PreBuildEvent>
   </PropertyGroup>
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
Index: stable/HeuristicLab.Algorithms.RandomSearch/3.3/RandomSearchAlgorithm.cs
===================================================================
--- trunk/sources/HeuristicLab.Algorithms.RandomSearch/3.3/RandomSearchAlgorithm.cs	(revision 13581)
+++ stable/HeuristicLab.Algorithms.RandomSearch/3.3/RandomSearchAlgorithm.cs	(revision 13952)
@@ -35,5 +35,5 @@
 
 namespace HeuristicLab.Algorithms.RandomSearch {
-  [Item("Random Search Algorithm", "An random search algorithm.")]
+  [Item("Random Search Algorithm (RS)", "A random search algorithm.")]
   [Creatable(CreatableAttribute.Categories.Algorithms, Priority = 150)]
   [StorableClass]
@@ -63,12 +63,12 @@
       get { return (IFixedValueParameter<MultiAnalyzer>)Parameters["Analyzer"]; }
     }
-    private IFixedValueParameter<IntValue> NumberOfSamplesParameter {
-      get { return (IFixedValueParameter<IntValue>)Parameters["NumberOfSamples"]; }
+    private IFixedValueParameter<IntValue> MaximumEvaluatedSolutionsParameter {
+      get { return (IFixedValueParameter<IntValue>)Parameters["MaximumEvaluatedSolutions"]; }
     }
     private IFixedValueParameter<IntValue> BatchSizeParameter {
       get { return (IFixedValueParameter<IntValue>)Parameters["BatchSize"]; }
     }
-    private IFixedValueParameter<IntValue> NumberOfBatchesParameter {
-      get { return (IFixedValueParameter<IntValue>)Parameters["NumberOfBatches"]; }
+    private IFixedValueParameter<IntValue> MaximumIterationsParameter {
+      get { return (IFixedValueParameter<IntValue>)Parameters["MaximumIterations"]; }
     }
     private IFixedValueParameter<MultiTerminator> TerminatorParameter {
@@ -89,7 +89,7 @@
       get { return AnalyzerParameter.Value; }
     }
-    public int NumberOfSamples {
-      get { return NumberOfSamplesParameter.Value.Value; }
-      set { NumberOfSamplesParameter.Value.Value = value; }
+    public int MaximumEvaluatedSolutions {
+      get { return MaximumEvaluatedSolutionsParameter.Value.Value; }
+      set { MaximumEvaluatedSolutionsParameter.Value.Value = value; }
     }
     public int BatchSize {
@@ -97,7 +97,7 @@
       set { BatchSizeParameter.Value.Value = value; }
     }
-    public int NumberOfBatches {
-      get { return NumberOfBatchesParameter.Value.Value; }
-      set { NumberOfBatchesParameter.Value.Value = value; }
+    public int MaximumIterations {
+      get { return MaximumIterationsParameter.Value.Value; }
+      set { MaximumIterationsParameter.Value.Value = value; }
     }
     public MultiTerminator Terminators {
@@ -151,8 +151,8 @@
       Parameters.Add(new FixedValueParameter<IntValue>("Seed", "The random seed used to initialize the new pseudo random number generator.", new IntValue(0)));
       Parameters.Add(new FixedValueParameter<BoolValue>("SetSeedRandomly", "True if the random seed should be set to a random value, otherwise false.", new BoolValue(true)));
-      Parameters.Add(new FixedValueParameter<MultiAnalyzer>("Analyzer", "The operator used to analyze all individuals from all layers combined.", new MultiAnalyzer()));
-      Parameters.Add(new FixedValueParameter<IntValue>("NumberOfSamples", "The number of random samples the algorithm should evaluate.", new IntValue(1000)));
-      Parameters.Add(new FixedValueParameter<IntValue>("BatchSize", "The number of random samples that are evaluated (in parallel) until they are analyzed.", new IntValue(100)));
-      Parameters.Add(new FixedValueParameter<IntValue>("NumberOfBatches", "The number batch runs (iterations) that the algorithm will run.", new IntValue(10)) { Hidden = true });
+      Parameters.Add(new FixedValueParameter<MultiAnalyzer>("Analyzer", "The operator used to analyze the solutions each iteration.", new MultiAnalyzer()));
+      Parameters.Add(new FixedValueParameter<IntValue>("MaximumEvaluatedSolutions", "The number of random solutions the algorithm should evaluate.", new IntValue(1000)));
+      Parameters.Add(new FixedValueParameter<IntValue>("BatchSize", "The number of random solutions that are evaluated (in parallel) per iteration.", new IntValue(100)));
+      Parameters.Add(new FixedValueParameter<IntValue>("MaximumIterations", "The number of iterations that the algorithm will run.", new IntValue(10)) { Hidden = true });
       Parameters.Add(new FixedValueParameter<MultiTerminator>("Terminator", "The termination criteria that defines if the algorithm should continue or stop.", new MultiTerminator()) { Hidden = true });
       #endregion
@@ -166,5 +166,5 @@
       var evaluationsCounter = new IntCounter() { Name = "Increment EvaluatedSolutions" };
       var subScopesRemover = new SubScopesRemover();
-      var batchNumberCounter = new IntCounter() { Name = "Increment BatchNumber" };
+      var iterationsCounter = new IntCounter() { Name = "Increment Iterations" };
       var terminationOperator = new TerminationOperator();
       #endregion
@@ -179,9 +179,9 @@
       randomCreator.Successor = variableCreator;
 
-      variableCreator.CollectedValues.Add(new ValueParameter<IntValue>("BatchNumber", new IntValue(0)));
+      variableCreator.CollectedValues.Add(new ValueParameter<IntValue>("Iterations", new IntValue(0)));
       variableCreator.CollectedValues.Add(new ValueParameter<IntValue>("EvaluatedSolutions", new IntValue(0)));
       variableCreator.Successor = resultsCollector;
 
-      resultsCollector.CollectedValues.Add(new LookupParameter<IntValue>("BatchNumber", "The current batch number."));
+      resultsCollector.CollectedValues.Add(new LookupParameter<IntValue>("Iterations", "The current iteration number."));
       resultsCollector.CollectedValues.Add(new LookupParameter<IntValue>("EvaluatedSolutions", "The current number of evaluated solutions."));
       resultsCollector.Successor = solutionCreator;
@@ -200,9 +200,9 @@
 
       subScopesRemover.RemoveAllSubScopes = true;
-      subScopesRemover.Successor = batchNumberCounter;
-
-      batchNumberCounter.ValueParameter.ActualName = "BatchNumber";
-      batchNumberCounter.Increment = new IntValue(1);
-      batchNumberCounter.Successor = terminationOperator;
+      subScopesRemover.Successor = iterationsCounter;
+
+      iterationsCounter.ValueParameter.ActualName = "Iterations";
+      iterationsCounter.Increment = new IntValue(1);
+      iterationsCounter.Successor = terminationOperator;
 
       terminationOperator.TerminatorParameter.ActualName = TerminatorParameter.Name;
@@ -215,5 +215,5 @@
 
       #region Create terminators
-      evaluationsTerminator = new ComparisonTerminator<IntValue>("EvaluatedSolutions", ComparisonType.Less, NumberOfSamplesParameter) { Name = "Number of Samples" };
+      evaluationsTerminator = new ComparisonTerminator<IntValue>("EvaluatedSolutions", ComparisonType.Less, MaximumEvaluatedSolutionsParameter) { Name = "Evaluated solutions." };
       qualityTerminator = new SingleObjectiveQualityTerminator() { Name = "Quality" };
       executionTimeTerminator = new ExecutionTimeTerminator(this, new TimeSpanValue(TimeSpan.FromMinutes(5)));
@@ -312,7 +312,6 @@
       singleObjectiveQualityAnalyzer.CurrentBestQualityParameter.NameChanged += QualityAnalyzer_CurrentBestQualityParameter_NameChanged;
 
-      NumberOfSamplesParameter.Value.ValueChanged += NumberOfSamples_ValueChanged;
+      MaximumEvaluatedSolutionsParameter.Value.ValueChanged += MaximumEvaluatedSolutions_ValueChanged;
       BatchSizeParameter.Value.ValueChanged += BatchSize_ValueChanged;
-      NumberOfBatchesParameter.Value.ValueChanged += NumberOfBatches_ValueChanged;
     }
     private void ParameterizeSolutionsCreator() {
@@ -337,7 +336,7 @@
       if (Problem != null) {
         foreach (IIterationBasedOperator op in Problem.Operators.OfType<IIterationBasedOperator>()) {
-          op.IterationsParameter.ActualName = "BatchNumber";
+          op.IterationsParameter.ActualName = "Iterations";
           op.IterationsParameter.Hidden = true;
-          op.MaximumIterationsParameter.ActualName = NumberOfBatchesParameter.Name;
+          op.MaximumIterationsParameter.ActualName = MaximumIterationsParameter.Name;
         }
       }
@@ -354,12 +353,9 @@
       }
     }
-    private void NumberOfSamples_ValueChanged(object sender, EventArgs e) {
-      NumberOfBatches = NumberOfSamples / BatchSize;
+    private void MaximumEvaluatedSolutions_ValueChanged(object sender, EventArgs e) {
+      MaximumIterations = MaximumEvaluatedSolutions / BatchSize;
     }
     private void BatchSize_ValueChanged(object sender, EventArgs e) {
-      NumberOfBatches = NumberOfSamples / BatchSize;
-    }
-    private void NumberOfBatches_ValueChanged(object sender, EventArgs e) {
-      BatchSize = NumberOfSamples / NumberOfBatches;
+      MaximumIterations = MaximumEvaluatedSolutions / BatchSize;
     }
     #endregion
