Index: /branches/Robocode.TrunkInt/HeuristicLab.Problems.Robocode.Views/3.3/SolutionCodeView.cs
===================================================================
--- /branches/Robocode.TrunkInt/HeuristicLab.Problems.Robocode.Views/3.3/SolutionCodeView.cs	(revision 9925)
+++ /branches/Robocode.TrunkInt/HeuristicLab.Problems.Robocode.Views/3.3/SolutionCodeView.cs	(revision 9926)
@@ -50,5 +50,5 @@
 
     private void btnRunInRobocode_Click(object sender, EventArgs e) {
-      Interpreter.EvaluateTankProgram(Content.Tree, Content.Path, programName, true);
+      Interpreter.EvaluateTankProgram(Content.Tree, Content.Path, programName, true, Content.NrOfRounds);
     }
   }
Index: /branches/Robocode.TrunkInt/HeuristicLab.Problems.Robocode/3.3/BestSolutionAnalyzer.cs
===================================================================
--- /branches/Robocode.TrunkInt/HeuristicLab.Problems.Robocode/3.3/BestSolutionAnalyzer.cs	(revision 9925)
+++ /branches/Robocode.TrunkInt/HeuristicLab.Problems.Robocode/3.3/BestSolutionAnalyzer.cs	(revision 9926)
@@ -38,5 +38,6 @@
     private const string BestSolutionParameterName = "Best solution";
     private const string ResultsParameterName = "Results";
-    private const string RobocodePathParamaterName = "Path";
+    private const string RobocodePathParamaterName = "RobocodePath";
+    private const string NrOfRoundsParameterName = "NrOfRounds";
 
     public bool EnabledByDefault {
@@ -60,4 +61,7 @@
       get { return (ILookupParameter<DirectoryValue>)Parameters[RobocodePathParamaterName]; }
     }
+    public ILookupParameter<IntValue> NrOfRoundsParameter {
+      get { return (ILookupParameter<IntValue>)Parameters[NrOfRoundsParameterName]; }
+    }
     #endregion
 
@@ -73,4 +77,5 @@
       Parameters.Add(new LookupParameter<ResultCollection>(ResultsParameterName, "The result collection of the algorithm."));
       Parameters.Add(new LookupParameter<DirectoryValue>(RobocodePathParamaterName, "Path of the Robocode installation."));
+      Parameters.Add(new LookupParameter<IntValue>(NrOfRoundsParameterName, "Nr. of Rounds a Robot has to fight against each opponent."));
     }
 
@@ -92,5 +97,5 @@
 
       // create a solution instance
-      var bestSolution = new Solution(bestTree, RobocodePathParameter.ActualValue.Value);
+      var bestSolution = new Solution(bestTree, RobocodePathParameter.ActualValue.Value, NrOfRoundsParameter.ActualValue.Value);
       // store the new solution in the best solution parameter
       BestSolutionParameter.ActualValue = bestSolution;
Index: /branches/Robocode.TrunkInt/HeuristicLab.Problems.Robocode/3.3/External Evaluator/BattleRunner.java
===================================================================
--- /branches/Robocode.TrunkInt/HeuristicLab.Problems.Robocode/3.3/External Evaluator/BattleRunner.java	(revision 9925)
+++ /branches/Robocode.TrunkInt/HeuristicLab.Problems.Robocode/3.3/External Evaluator/BattleRunner.java	(revision 9926)
@@ -40,10 +40,9 @@
     public static List<Double> score = new ArrayList<Double>();
 
-	//
 	// This program requires at least 1 argument: the name of the robot.
 	// The second argument is the path to the robocode installation. If not give, c:\robocode is assumed. 
 	// The third argument is optional. If it is true, robocode is shown, otherwise it is hidden. 
-	//
-    public static void main(String[] args) {
+	// The fourth argument is the number of rounds. 
+	public static void main(String[] args) {
 		String roboCodePath = "C:\\robocode";
 		Boolean visible = false;		
@@ -70,4 +69,12 @@
 			roboCodePath = args[1];
             visible = Boolean.valueOf(args[2]);
+        }
+		else if (args.length == 4)
+        {
+            robots[0] = args[0];            
+			player = args[0];        
+			roboCodePath = args[1];
+            visible = Boolean.valueOf(args[2]);
+			numberOfRounds = Integer.valueOf(args[3]);
         }
         else
Index: /branches/Robocode.TrunkInt/HeuristicLab.Problems.Robocode/3.3/Interpreter.cs
===================================================================
--- /branches/Robocode.TrunkInt/HeuristicLab.Problems.Robocode/3.3/Interpreter.cs	(revision 9925)
+++ /branches/Robocode.TrunkInt/HeuristicLab.Problems.Robocode/3.3/Interpreter.cs	(revision 9926)
@@ -29,6 +29,6 @@
 
 namespace HeuristicLab.Problems.Robocode {
-  public class Interpreter {
-    public static double EvaluateTankProgram(ISymbolicExpressionTree tree, string path, string robotName = null, bool showUI = false) {
+  public static class Interpreter {
+    public static double EvaluateTankProgram(ISymbolicExpressionTree tree, string path, string robotName = null, bool showUI = false, int nrOfRounds = 3) {
       if (robotName == null)
         robotName = GenerateRobotName();
@@ -43,10 +43,5 @@
       string srcRobotPath = Path.Combine(robotsPath, robotName + ".java");
 
-      try {
-        File.WriteAllText(srcRobotPath, interpretedProgram, System.Text.Encoding.Default);
-      }
-      catch (Exception ex) {
-        throw;
-      }
+      File.WriteAllText(srcRobotPath, interpretedProgram, System.Text.Encoding.Default);
 
       ProcessStartInfo javaCompileInfo = new ProcessStartInfo();
@@ -81,6 +76,9 @@
                                   ";" + picocontainerJar + ";" + " BattleRunner Evaluation." + robotName + "* " + path;
 
-      if (showUI)
-        evaluateCodeInfo.Arguments += " true";
+      if (showUI) {
+        evaluateCodeInfo.Arguments += " true " + nrOfRounds;
+      } else {
+        evaluateCodeInfo.Arguments += " false " + nrOfRounds;
+      }
 
       evaluateCodeInfo.RedirectStandardOutput = true;
Index: /branches/Robocode.TrunkInt/HeuristicLab.Problems.Robocode/3.3/RobocodeEvaluator.cs
===================================================================
--- /branches/Robocode.TrunkInt/HeuristicLab.Problems.Robocode/3.3/RobocodeEvaluator.cs	(revision 9925)
+++ /branches/Robocode.TrunkInt/HeuristicLab.Problems.Robocode/3.3/RobocodeEvaluator.cs	(revision 9926)
@@ -35,5 +35,6 @@
     private const string QualityParameterName = "Quality";
     private const string TankProgramParameterName = "TankProgram";
-    private const string RobocodePathParamaterName = "Path";
+    private const string RobocodePathParamaterName = "RobocodePath";
+    private const string NrOfRoundsParameterName = "NrOfRounds";
 
     #region Parameters
@@ -46,4 +47,7 @@
     public ILookupParameter<DirectoryValue> RobocodePathParameter {
       get { return (ILookupParameter<DirectoryValue>)Parameters[RobocodePathParamaterName]; }
+    }
+    public ILookupParameter<IntValue> NrOfRoundsParameter {
+      get { return (ILookupParameter<IntValue>)Parameters[NrOfRoundsParameterName]; }
     }
     #endregion
@@ -58,4 +62,5 @@
       Parameters.Add(new LookupParameter<ISymbolicExpressionTree>(TankProgramParameterName, "The Robocode tank program to evaluate represented as a symbolic expression tree."));
       Parameters.Add(new LookupParameter<DirectoryValue>(RobocodePathParamaterName, "Path of the Robocode installation."));
+      Parameters.Add(new LookupParameter<IntValue>(NrOfRoundsParameterName, "Nr. of Rounds a Robot has to fight against each opponent."));
     }
 
@@ -63,5 +68,5 @@
       ISymbolicExpressionTree tree = TankProgramParameter.ActualValue;
       string path = RobocodePathParameter.ActualValue.Value;
-      QualityParameter.ActualValue = new DoubleValue(Interpreter.EvaluateTankProgram(tree, path));
+      QualityParameter.ActualValue = new DoubleValue(Interpreter.EvaluateTankProgram(tree, path, null, false, NrOfRoundsParameter.ActualValue.Value));
 
       return base.Apply();
Index: /branches/Robocode.TrunkInt/HeuristicLab.Problems.Robocode/3.3/RobocodeProblem.cs
===================================================================
--- /branches/Robocode.TrunkInt/HeuristicLab.Problems.Robocode/3.3/RobocodeProblem.cs	(revision 9925)
+++ /branches/Robocode.TrunkInt/HeuristicLab.Problems.Robocode/3.3/RobocodeProblem.cs	(revision 9926)
@@ -42,5 +42,6 @@
     private const string MaxTankProgramDepthParameterName = "MaxProgramDepth";
     private const string TankGrammarParameterName = "Grammar";
-    private const string RobocodePathParamaterName = "Path";
+    private const string RobocodePathParamaterName = "RobocodePath";
+    private const string NrOfRoundsParameterName = "NrOfRounds";
     #endregion
 
@@ -57,4 +58,7 @@
     public IFixedValueParameter<DirectoryValue> RobocodePathParameter {
       get { return (IFixedValueParameter<DirectoryValue>)Parameters[RobocodePathParamaterName]; }
+    }
+    public IFixedValueParameter<IntValue> NrOfRoundsParameter {
+      get { return (IFixedValueParameter<IntValue>)Parameters[NrOfRoundsParameterName]; }
     }
     #endregion
@@ -77,4 +81,5 @@
       Parameters.Add(new ValueParameter<Grammar>(TankGrammarParameterName, "Grammar for the tank program.", new Grammar()));
       Parameters.Add(new FixedValueParameter<DirectoryValue>(RobocodePathParamaterName, "Path of the Robocode installation.", robocodeDir));
+      Parameters.Add(new FixedValueParameter<IntValue>(NrOfRoundsParameterName, "Nr. of Rounds a Robot has to fight against each opponent.", new IntValue(3)));
 
       Maximization.Value = true;
Index: /branches/Robocode.TrunkInt/HeuristicLab.Problems.Robocode/3.3/Solution.cs
===================================================================
--- /branches/Robocode.TrunkInt/HeuristicLab.Problems.Robocode/3.3/Solution.cs	(revision 9925)
+++ /branches/Robocode.TrunkInt/HeuristicLab.Problems.Robocode/3.3/Solution.cs	(revision 9926)
@@ -35,4 +35,7 @@
     public string Path { get; set; }
 
+    [Storable]
+    public int NrOfRounds { get; set; }
+
     [StorableConstructor]
     private Solution(bool deserializing) : base(deserializing) { }
@@ -41,10 +44,12 @@
       Tree = cloner.Clone(original.Tree);
       Path = (string)original.Path.Clone();
+      NrOfRounds = original.NrOfRounds;
     }
 
-    public Solution(ISymbolicExpressionTree tree, string path)
+    public Solution(ISymbolicExpressionTree tree, string path, int nrOfRounds)
       : base() {
       this.Tree = tree;
       this.Path = path;
+      this.NrOfRounds = nrOfRounds;
     }
 
