Index: /branches/HeuristicLab.Analysis.AlgorithmBehavior/HeuristicLab.Analysis.AlgorithmBehavior.Analyzers.Views/3.3/CreateExperimentDialog.Designer.cs
===================================================================
--- /branches/HeuristicLab.Analysis.AlgorithmBehavior/HeuristicLab.Analysis.AlgorithmBehavior.Analyzers.Views/3.3/CreateExperimentDialog.Designer.cs	(revision 9363)
+++ /branches/HeuristicLab.Analysis.AlgorithmBehavior/HeuristicLab.Analysis.AlgorithmBehavior.Analyzers.Views/3.3/CreateExperimentDialog.Designer.cs	(revision 9364)
@@ -80,4 +80,6 @@
       this.combinationsTextBox = new System.Windows.Forms.TextBox();
       this.label2 = new System.Windows.Forms.Label();
+      this.label3 = new System.Windows.Forms.Label();
+      this.repetitionsTextBox = new System.Windows.Forms.TextBox();
       ((System.ComponentModel.ISupportInitialize)(this.repetitionsNumericUpDown)).BeginInit();
       this.tabControl.SuspendLayout();
@@ -97,5 +99,5 @@
       this.okButton.DialogResult = System.Windows.Forms.DialogResult.OK;
       this.okButton.Enabled = false;
-      this.okButton.Location = new System.Drawing.Point(474, 377);
+      this.okButton.Location = new System.Drawing.Point(630, 377);
       this.okButton.Name = "okButton";
       this.okButton.Size = new System.Drawing.Size(75, 23);
@@ -109,5 +111,5 @@
       this.cancelButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
       this.cancelButton.DialogResult = System.Windows.Forms.DialogResult.Cancel;
-      this.cancelButton.Location = new System.Drawing.Point(555, 377);
+      this.cancelButton.Location = new System.Drawing.Point(711, 377);
       this.cancelButton.Name = "cancelButton";
       this.cancelButton.Size = new System.Drawing.Size(75, 23);
@@ -163,5 +165,5 @@
             0});
       this.repetitionsNumericUpDown.Name = "repetitionsNumericUpDown";
-      this.repetitionsNumericUpDown.Size = new System.Drawing.Size(517, 20);
+      this.repetitionsNumericUpDown.Size = new System.Drawing.Size(673, 20);
       this.repetitionsNumericUpDown.TabIndex = 3;
       this.repetitionsNumericUpDown.ThousandsSeparator = true;
@@ -244,5 +246,5 @@
       this.tabControl.Name = "tabControl";
       this.tabControl.SelectedIndex = 0;
-      this.tabControl.Size = new System.Drawing.Size(615, 317);
+      this.tabControl.Size = new System.Drawing.Size(771, 317);
       this.tabControl.TabIndex = 4;
       // 
@@ -253,5 +255,5 @@
       this.parametersTabPage.Name = "parametersTabPage";
       this.parametersTabPage.Padding = new System.Windows.Forms.Padding(3);
-      this.parametersTabPage.Size = new System.Drawing.Size(607, 291);
+      this.parametersTabPage.Size = new System.Drawing.Size(763, 291);
       this.parametersTabPage.TabIndex = 1;
       this.parametersTabPage.Text = "Parameter Variations";
@@ -275,5 +277,5 @@
       this.parametersSplitContainer.Panel2.Controls.Add(this.detailsTypeLabel);
       this.parametersSplitContainer.Panel2.Controls.Add(this.choicesListView);
-      this.parametersSplitContainer.Size = new System.Drawing.Size(601, 285);
+      this.parametersSplitContainer.Size = new System.Drawing.Size(757, 285);
       this.parametersSplitContainer.SplitterDistance = 155;
       this.parametersSplitContainer.TabIndex = 1;
@@ -320,5 +322,5 @@
       this.stringConvertibleArrayView.Name = "stringConvertibleArrayView";
       this.stringConvertibleArrayView.ReadOnly = false;
-      this.stringConvertibleArrayView.Size = new System.Drawing.Size(411, 233);
+      this.stringConvertibleArrayView.Size = new System.Drawing.Size(567, 233);
       this.stringConvertibleArrayView.TabIndex = 7;
       // 
@@ -343,5 +345,5 @@
       this.choicesListView.Location = new System.Drawing.Point(16, 34);
       this.choicesListView.Name = "choicesListView";
-      this.choicesListView.Size = new System.Drawing.Size(411, 238);
+      this.choicesListView.Size = new System.Drawing.Size(567, 238);
       this.choicesListView.TabIndex = 6;
       this.choicesListView.UseCompatibleStateImageBehavior = false;
@@ -426,7 +428,7 @@
       this.experimentCreationProgressBar.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left) 
             | System.Windows.Forms.AnchorStyles.Right)));
-      this.experimentCreationProgressBar.Location = new System.Drawing.Point(371, 377);
+      this.experimentCreationProgressBar.Location = new System.Drawing.Point(587, 377);
       this.experimentCreationProgressBar.Name = "experimentCreationProgressBar";
-      this.experimentCreationProgressBar.Size = new System.Drawing.Size(178, 23);
+      this.experimentCreationProgressBar.Size = new System.Drawing.Size(118, 23);
       this.experimentCreationProgressBar.TabIndex = 9;
       this.experimentCreationProgressBar.Visible = false;
@@ -435,5 +437,5 @@
       // 
       this.combinationsTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
-      this.combinationsTextBox.Location = new System.Drawing.Point(265, 379);
+      this.combinationsTextBox.Location = new System.Drawing.Point(306, 379);
       this.combinationsTextBox.Name = "combinationsTextBox";
       this.combinationsTextBox.Size = new System.Drawing.Size(100, 20);
@@ -445,5 +447,5 @@
       this.label2.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
       this.label2.AutoSize = true;
-      this.label2.Location = new System.Drawing.Point(173, 382);
+      this.label2.Location = new System.Drawing.Point(214, 382);
       this.label2.Name = "label2";
       this.label2.Size = new System.Drawing.Size(86, 13);
@@ -451,4 +453,23 @@
       this.label2.Text = "Var. to generate:";
       // 
+      // label3
+      // 
+      this.label3.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
+      this.label3.AutoSize = true;
+      this.label3.Location = new System.Drawing.Point(412, 382);
+      this.label3.Name = "label3";
+      this.label3.Size = new System.Drawing.Size(63, 13);
+      this.label3.TabIndex = 12;
+      this.label3.Text = "Repetitions:";
+      // 
+      // repetitionsTextBox
+      // 
+      this.repetitionsTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
+      this.repetitionsTextBox.Location = new System.Drawing.Point(481, 379);
+      this.repetitionsTextBox.Name = "repetitionsTextBox";
+      this.repetitionsTextBox.Size = new System.Drawing.Size(100, 20);
+      this.repetitionsTextBox.TabIndex = 13;
+      this.repetitionsTextBox.Text = "1";
+      // 
       // CreateExperimentDialog
       // 
@@ -456,5 +477,7 @@
       this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Inherit;
       this.CancelButton = this.cancelButton;
-      this.ClientSize = new System.Drawing.Size(642, 412);
+      this.ClientSize = new System.Drawing.Size(798, 412);
+      this.Controls.Add(this.repetitionsTextBox);
+      this.Controls.Add(this.label3);
       this.Controls.Add(this.label2);
       this.Controls.Add(this.combinationsTextBox);
@@ -530,4 +553,6 @@
     private System.Windows.Forms.Label label2;
     private System.Windows.Forms.TextBox combinationsTextBox;
+    private System.Windows.Forms.TextBox repetitionsTextBox;
+    private System.Windows.Forms.Label label3;
 
   }
Index: /branches/HeuristicLab.Analysis.AlgorithmBehavior/HeuristicLab.Analysis.AlgorithmBehavior.Analyzers.Views/3.3/CreateExperimentDialog.cs
===================================================================
--- /branches/HeuristicLab.Analysis.AlgorithmBehavior/HeuristicLab.Analysis.AlgorithmBehavior.Analyzers.Views/3.3/CreateExperimentDialog.cs	(revision 9363)
+++ /branches/HeuristicLab.Analysis.AlgorithmBehavior/HeuristicLab.Analysis.AlgorithmBehavior.Analyzers.Views/3.3/CreateExperimentDialog.cs	(revision 9364)
@@ -44,5 +44,5 @@
       set {
         optimizer = value;
-        Experiment = null;
+        Experiments = null;
         okButton.Enabled = optimizer != null;
         SetTabControlVisibility();
@@ -52,5 +52,5 @@
     }
 
-    public Experiment Experiment { get; private set; }
+    public List<Experiment> Experiments { get; private set; }
 
     private bool createBatchRun;
@@ -75,5 +75,5 @@
       // do not set the Optimizer property here, because we want to delay instance discovery to the time when the form loads
       this.optimizer = optimizer;
-      Experiment = null;
+      Experiments = null;
       okButton.Enabled = optimizer != null;
 
@@ -715,54 +715,59 @@
     private void experimentCreationBackgroundWorker_DoWork(object sender, DoWorkEventArgs e) {
       backgroundWorkerWaitHandle.Set(); // notify the ok button that we're busy now
-      failedInstances = new StringBuilder();
-      var localExperiment = new Experiment();
-
-      int counter = 0, totalVariations = GetNumberOfVariations();
-      int totalInstances = instances.Values.SelectMany(x => x).Count();
-      if (totalInstances == 0) {
-        try {
-          AddParameterVariations(Optimizer, localExperiment, ref counter, totalVariations);
-        }
-        catch (OperationCanceledException) {
-          e.Cancel = true;
-          return;
-        }
-        experimentCreationBackgroundWorker.ReportProgress(100, string.Empty);
-      } else {
-        foreach (var provider in instances.Keys) {
-          foreach (var descriptor in instances[provider]) {
-            var algorithm = (IAlgorithm)Optimizer.Clone();
-            bool failed = false;
-            try {
-              ProblemInstanceManager.LoadData(provider, descriptor, (IProblemInstanceConsumer)algorithm.Problem);
-            }
-            catch (Exception ex) {
-              failedInstances.AppendLine(descriptor.Name + ": " + ex.Message);
-              failed = true;
-            }
-            if (!failed) {
+
+      int b = int.Parse(repetitionsTextBox.Text);
+      for (int i = 0; i < b; i++) {
+        failedInstances = new StringBuilder();
+        var localExperiment = new Experiment();
+
+        int counter = 0, totalVariations = GetNumberOfVariations();
+        int totalInstances = instances.Values.SelectMany(x => x).Count();
+        if (totalInstances == 0) {
+          try {
+            AddParameterVariations(Optimizer, localExperiment, ref counter, totalVariations);
+          }
+          catch (OperationCanceledException) {
+            e.Cancel = true;
+            return;
+          }
+          experimentCreationBackgroundWorker.ReportProgress(100, string.Empty);
+        } else {
+          foreach (var provider in instances.Keys) {
+            foreach (var descriptor in instances[provider]) {
+              var algorithm = (IAlgorithm)Optimizer.Clone();
+              bool failed = false;
               try {
-                if (totalInstances > 1 && totalVariations / totalInstances > 1) {
-                  var experiment = new Experiment(descriptor.Name);
-                  AddParameterVariations(algorithm, experiment, ref counter, totalVariations);
-                  localExperiment.Optimizers.Add(experiment);
-                } else {
-                  AddParameterVariations(algorithm, localExperiment, ref counter, totalVariations);
+                ProblemInstanceManager.LoadData(provider, descriptor, (IProblemInstanceConsumer)algorithm.Problem);
+              }
+              catch (Exception ex) {
+                failedInstances.AppendLine(descriptor.Name + ": " + ex.Message);
+                failed = true;
+              }
+              if (!failed) {
+                try {
+                  if (totalInstances > 1 && totalVariations / totalInstances > 1) {
+                    var experiment = new Experiment(descriptor.Name);
+                    AddParameterVariations(algorithm, experiment, ref counter, totalVariations);
+                    localExperiment.Optimizers.Add(experiment);
+                  } else {
+                    AddParameterVariations(algorithm, localExperiment, ref counter, totalVariations);
+                  }
                 }
-              }
-              catch (OperationCanceledException) {
-                e.Cancel = true;
-                return;
-              }
-            } else experimentCreationBackgroundWorker.ReportProgress((int)Math.Round((100.0 * counter) / totalVariations), "Loading failed (" + descriptor.Name + ")");
-          }
-        }
-      }
-      // this step can take some time
-      SetMode(DialogMode.PreparingExperiment);
-      experimentCreationBackgroundWorker.ReportProgress(-1);
-      localExperiment.Prepare(true);
-      experimentCreationBackgroundWorker.ReportProgress(100);
-      Experiment = localExperiment;
+                catch (OperationCanceledException) {
+                  e.Cancel = true;
+                  return;
+                }
+              } else experimentCreationBackgroundWorker.ReportProgress((int)Math.Round((100.0 * counter) / totalVariations), "Loading failed (" + descriptor.Name + ")");
+            }
+          }
+        }
+        // this step can take some time
+        SetMode(DialogMode.PreparingExperiment);
+        experimentCreationBackgroundWorker.ReportProgress(-1);
+        localExperiment.Prepare(true);
+        experimentCreationBackgroundWorker.ReportProgress(100);
+        if (Experiments == null) Experiments = new List<Experiment>();
+        Experiments.Add(localExperiment);
+      }
     }
 
Index: /branches/HeuristicLab.Analysis.AlgorithmBehavior/HeuristicLab.Analysis.AlgorithmBehavior.Analyzers.Views/3.3/CreateExperimentMenuItem.cs
===================================================================
--- /branches/HeuristicLab.Analysis.AlgorithmBehavior/HeuristicLab.Analysis.AlgorithmBehavior.Analyzers.Views/3.3/CreateExperimentMenuItem.cs	(revision 9363)
+++ /branches/HeuristicLab.Analysis.AlgorithmBehavior/HeuristicLab.Analysis.AlgorithmBehavior.Analyzers.Views/3.3/CreateExperimentMenuItem.cs	(revision 9364)
@@ -54,5 +54,10 @@
       if ((activeView != null) && (activeView.Content != null) && (activeView.Content is IOptimizer) && !activeView.Locked) {
         using (CreateExperimentDialog dialog = new CreateExperimentDialog((IOptimizer)activeView.Content)) {
-          if (dialog.ShowDialog() == DialogResult.OK) MainFormManager.MainForm.ShowContent(dialog.Experiment);
+          if (dialog.ShowDialog() == DialogResult.OK) {
+            foreach (var exp in dialog.Experiments) {
+              MainFormManager.MainForm.ShowContent(exp);
+            }
+
+          }
         }
       }
