Index: anches/ParameterConfigurationEncoding/HeuristicLab.Encodings.ParameterConfigurationEncoding.Views/3.3/CreateExperimentDialogV2.Designer.cs
===================================================================
--- /branches/ParameterConfigurationEncoding/HeuristicLab.Encodings.ParameterConfigurationEncoding.Views/3.3/CreateExperimentDialogV2.Designer.cs	(revision 15170)
+++ 	(revision )
@@ -1,360 +1,0 @@
-﻿#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2012 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
-
-namespace HeuristicLab.Encodings.ParameterConfigurationEncoding.Views {
-  partial class CreateExperimentDialogV2 {
-    /// <summary>
-    /// Required designer variable.
-    /// </summary>
-    private System.ComponentModel.IContainer components = null;
-
-    /// <summary>
-    /// Clean up any resources being used.
-    /// </summary>
-    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
-    protected override void Dispose(bool disposing) {
-      if (disposing && (components != null)) {
-        components.Dispose();
-      }
-      base.Dispose(disposing);
-    }
-
-    #region Windows Form Designer generated code
-
-    /// <summary>
-    /// Required method for Designer support - do not modify
-    /// the contents of this method with the code editor.
-    /// </summary>
-    private void InitializeComponent() {
-      this.components = new System.ComponentModel.Container();
-      this.createBatchRunLabel = new System.Windows.Forms.Label();
-      this.createBatchRunCheckBox = new System.Windows.Forms.CheckBox();
-      this.toolTip = new System.Windows.Forms.ToolTip(this.components);
-      this.repetitionsNumericUpDown = new System.Windows.Forms.NumericUpDown();
-      this.repetitionsLabel = new System.Windows.Forms.Label();
-      this.errorProvider = new System.Windows.Forms.ErrorProvider(this.components);
-      this.warningProvider = new System.Windows.Forms.ErrorProvider(this.components);
-      this.engineComboBox = new System.Windows.Forms.ComboBox();
-      this.engineLabel = new System.Windows.Forms.Label();
-      this.okButton = new System.Windows.Forms.Button();
-      this.cancelButton = new System.Windows.Forms.Button();
-      this.combinationsLabel = new System.Windows.Forms.Label();
-      this.configurationTabControl = new System.Windows.Forms.TabControl();
-      this.parameterConfigurationTabPage = new System.Windows.Forms.TabPage();
-      this.parameterConfigurationTreeView = new HeuristicLab.Encodings.ParameterConfigurationEncoding.Views.ParameterConfigurationTreeView();
-      this.problemInstancesTabPage = new System.Windows.Forms.TabPage();
-      this.instanceTreeView = new System.Windows.Forms.TreeView();
-      this.libraryLabel = new System.Windows.Forms.Label();
-      this.libraryComboBox = new System.Windows.Forms.ComboBox();
-      this.instanceDiscoveryBackgroundWorker = new System.ComponentModel.BackgroundWorker();
-      this.combinationsCountLabel = new System.Windows.Forms.Label();
-      ((System.ComponentModel.ISupportInitialize)(this.repetitionsNumericUpDown)).BeginInit();
-      ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).BeginInit();
-      ((System.ComponentModel.ISupportInitialize)(this.warningProvider)).BeginInit();
-      this.configurationTabControl.SuspendLayout();
-      this.parameterConfigurationTabPage.SuspendLayout();
-      this.problemInstancesTabPage.SuspendLayout();
-      this.SuspendLayout();
-      // 
-      // createBatchRunLabel
-      // 
-      this.createBatchRunLabel.AutoSize = true;
-      this.createBatchRunLabel.Location = new System.Drawing.Point(12, 9);
-      this.createBatchRunLabel.Name = "createBatchRunLabel";
-      this.createBatchRunLabel.Size = new System.Drawing.Size(95, 13);
-      this.createBatchRunLabel.TabIndex = 0;
-      this.createBatchRunLabel.Text = "&Create Batch Run:";
-      // 
-      // createBatchRunCheckBox
-      // 
-      this.createBatchRunCheckBox.AutoSize = true;
-      this.createBatchRunCheckBox.Checked = true;
-      this.createBatchRunCheckBox.CheckState = System.Windows.Forms.CheckState.Checked;
-      this.createBatchRunCheckBox.Location = new System.Drawing.Point(113, 8);
-      this.createBatchRunCheckBox.Name = "createBatchRunCheckBox";
-      this.createBatchRunCheckBox.Size = new System.Drawing.Size(15, 14);
-      this.createBatchRunCheckBox.TabIndex = 1;
-      this.toolTip.SetToolTip(this.createBatchRunCheckBox, "Check to create a batch run for executing an optimizer multiple times.");
-      this.createBatchRunCheckBox.UseVisualStyleBackColor = true;
-      this.createBatchRunCheckBox.CheckedChanged += new System.EventHandler(this.createBatchRunCheckBox_CheckedChanged);
-      // 
-      // repetitionsNumericUpDown
-      // 
-      this.repetitionsNumericUpDown.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
-                  | System.Windows.Forms.AnchorStyles.Right)));
-      this.repetitionsNumericUpDown.Location = new System.Drawing.Point(113, 28);
-      this.repetitionsNumericUpDown.Maximum = new decimal(new int[] {
-            1000000,
-            0,
-            0,
-            0});
-      this.repetitionsNumericUpDown.Minimum = new decimal(new int[] {
-            1,
-            0,
-            0,
-            0});
-      this.repetitionsNumericUpDown.Name = "repetitionsNumericUpDown";
-      this.repetitionsNumericUpDown.Size = new System.Drawing.Size(859, 20);
-      this.repetitionsNumericUpDown.TabIndex = 3;
-      this.repetitionsNumericUpDown.ThousandsSeparator = true;
-      this.toolTip.SetToolTip(this.repetitionsNumericUpDown, "Number of repetitions executed by the batch run.");
-      this.repetitionsNumericUpDown.Value = new decimal(new int[] {
-            10,
-            0,
-            0,
-            0});
-      this.repetitionsNumericUpDown.Validated += new System.EventHandler(this.repetitionsNumericUpDown_Validated);
-      // 
-      // repetitionsLabel
-      // 
-      this.repetitionsLabel.AutoSize = true;
-      this.repetitionsLabel.Location = new System.Drawing.Point(12, 30);
-      this.repetitionsLabel.Name = "repetitionsLabel";
-      this.repetitionsLabel.Size = new System.Drawing.Size(63, 13);
-      this.repetitionsLabel.TabIndex = 2;
-      this.repetitionsLabel.Text = "&Repetitions:";
-      // 
-      // errorProvider
-      // 
-      this.errorProvider.BlinkStyle = System.Windows.Forms.ErrorBlinkStyle.NeverBlink;
-      this.errorProvider.ContainerControl = this;
-      // 
-      // warningProvider
-      // 
-      this.warningProvider.BlinkStyle = System.Windows.Forms.ErrorBlinkStyle.NeverBlink;
-      this.warningProvider.ContainerControl = this;
-      // 
-      // engineComboBox
-      // 
-      this.engineComboBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
-                  | System.Windows.Forms.AnchorStyles.Right)));
-      this.engineComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
-      this.engineComboBox.FormattingEnabled = true;
-      this.engineComboBox.Location = new System.Drawing.Point(113, 54);
-      this.engineComboBox.Name = "engineComboBox";
-      this.engineComboBox.Size = new System.Drawing.Size(859, 21);
-      this.engineComboBox.TabIndex = 4;
-      this.engineComboBox.SelectedIndexChanged += new System.EventHandler(this.engineComboBox_SelectedIndexChanged);
-      // 
-      // engineLabel
-      // 
-      this.engineLabel.AutoSize = true;
-      this.engineLabel.Location = new System.Drawing.Point(12, 57);
-      this.engineLabel.Name = "engineLabel";
-      this.engineLabel.Size = new System.Drawing.Size(43, 13);
-      this.engineLabel.TabIndex = 5;
-      this.engineLabel.Text = "&Engine:";
-      // 
-      // okButton
-      // 
-      this.okButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
-      this.okButton.DialogResult = System.Windows.Forms.DialogResult.OK;
-      this.okButton.Location = new System.Drawing.Point(816, 557);
-      this.okButton.Name = "okButton";
-      this.okButton.Size = new System.Drawing.Size(75, 23);
-      this.okButton.TabIndex = 7;
-      this.okButton.Text = "&OK";
-      this.okButton.UseVisualStyleBackColor = true;
-      this.okButton.Click += new System.EventHandler(this.okButton_Click);
-      // 
-      // cancelButton
-      // 
-      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(897, 557);
-      this.cancelButton.Name = "cancelButton";
-      this.cancelButton.Size = new System.Drawing.Size(75, 23);
-      this.cancelButton.TabIndex = 8;
-      this.cancelButton.Text = "&Cancel";
-      this.cancelButton.UseVisualStyleBackColor = true;
-      // 
-      // combinationsLabel
-      // 
-      this.combinationsLabel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
-      this.combinationsLabel.AutoSize = true;
-      this.combinationsLabel.Location = new System.Drawing.Point(12, 562);
-      this.combinationsLabel.Name = "combinationsLabel";
-      this.combinationsLabel.Size = new System.Drawing.Size(73, 13);
-      this.combinationsLabel.TabIndex = 10;
-      this.combinationsLabel.Text = "Combinations:";
-      // 
-      // configurationTabControl
-      // 
-      this.configurationTabControl.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
-                  | System.Windows.Forms.AnchorStyles.Left)
-                  | System.Windows.Forms.AnchorStyles.Right)));
-      this.configurationTabControl.Controls.Add(this.parameterConfigurationTabPage);
-      this.configurationTabControl.Controls.Add(this.problemInstancesTabPage);
-      this.configurationTabControl.Location = new System.Drawing.Point(12, 81);
-      this.configurationTabControl.Name = "configurationTabControl";
-      this.configurationTabControl.SelectedIndex = 0;
-      this.configurationTabControl.Size = new System.Drawing.Size(960, 470);
-      this.configurationTabControl.TabIndex = 12;
-      this.configurationTabControl.SelectedIndexChanged += new System.EventHandler(this.configurationTabControl_SelectedIndexChanged);
-      // 
-      // parameterConfigurationTabPage
-      // 
-      this.parameterConfigurationTabPage.Controls.Add(this.parameterConfigurationTreeView);
-      this.parameterConfigurationTabPage.Location = new System.Drawing.Point(4, 22);
-      this.parameterConfigurationTabPage.Name = "parameterConfigurationTabPage";
-      this.parameterConfigurationTabPage.Padding = new System.Windows.Forms.Padding(3);
-      this.parameterConfigurationTabPage.Size = new System.Drawing.Size(952, 444);
-      this.parameterConfigurationTabPage.TabIndex = 0;
-      this.parameterConfigurationTabPage.Text = "Parameter Configuration";
-      this.parameterConfigurationTabPage.UseVisualStyleBackColor = true;
-      // 
-      // parameterConfigurationTreeView
-      // 
-      this.parameterConfigurationTreeView.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
-                  | System.Windows.Forms.AnchorStyles.Left)
-                  | System.Windows.Forms.AnchorStyles.Right)));
-      this.parameterConfigurationTreeView.Caption = "ParameterConfiguration View";
-      this.parameterConfigurationTreeView.Content = null;
-      this.parameterConfigurationTreeView.Location = new System.Drawing.Point(6, 6);
-      this.parameterConfigurationTreeView.Name = "parameterConfigurationTreeView";
-      this.parameterConfigurationTreeView.ReadOnly = false;
-      this.parameterConfigurationTreeView.Size = new System.Drawing.Size(940, 432);
-      this.parameterConfigurationTreeView.TabIndex = 6;
-      // 
-      // problemInstancesTabPage
-      // 
-      this.problemInstancesTabPage.Controls.Add(this.instanceTreeView);
-      this.problemInstancesTabPage.Controls.Add(this.libraryLabel);
-      this.problemInstancesTabPage.Controls.Add(this.libraryComboBox);
-      this.problemInstancesTabPage.Location = new System.Drawing.Point(4, 22);
-      this.problemInstancesTabPage.Name = "problemInstancesTabPage";
-      this.problemInstancesTabPage.Padding = new System.Windows.Forms.Padding(3);
-      this.problemInstancesTabPage.Size = new System.Drawing.Size(952, 444);
-      this.problemInstancesTabPage.TabIndex = 1;
-      this.problemInstancesTabPage.Text = "Problem Instances";
-      this.problemInstancesTabPage.UseVisualStyleBackColor = true;
-      // 
-      // instanceTreeView
-      // 
-      this.instanceTreeView.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
-                  | System.Windows.Forms.AnchorStyles.Left)
-                  | System.Windows.Forms.AnchorStyles.Right)));
-      this.instanceTreeView.CheckBoxes = true;
-      this.instanceTreeView.Location = new System.Drawing.Point(6, 33);
-      this.instanceTreeView.Name = "instanceTreeView";
-      this.instanceTreeView.Size = new System.Drawing.Size(940, 405);
-      this.instanceTreeView.TabIndex = 2;
-      this.instanceTreeView.AfterCheck += new System.Windows.Forms.TreeViewEventHandler(this.instanceTreeView_AfterCheck);
-      // 
-      // libraryLabel
-      // 
-      this.libraryLabel.AutoSize = true;
-      this.libraryLabel.Location = new System.Drawing.Point(6, 9);
-      this.libraryLabel.Name = "libraryLabel";
-      this.libraryLabel.Size = new System.Drawing.Size(41, 13);
-      this.libraryLabel.TabIndex = 1;
-      this.libraryLabel.Text = "Library:";
-      // 
-      // libraryComboBox
-      // 
-      this.libraryComboBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
-                  | System.Windows.Forms.AnchorStyles.Right)));
-      this.libraryComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
-      this.libraryComboBox.FormattingEnabled = true;
-      this.libraryComboBox.Location = new System.Drawing.Point(53, 6);
-      this.libraryComboBox.Name = "libraryComboBox";
-      this.libraryComboBox.Size = new System.Drawing.Size(893, 21);
-      this.libraryComboBox.TabIndex = 0;
-      this.libraryComboBox.SelectedIndexChanged += new System.EventHandler(this.libraryComboBox_SelectedIndexChanged);
-      // 
-      // instanceDiscoveryBackgroundWorker
-      // 
-      this.instanceDiscoveryBackgroundWorker.DoWork += new System.ComponentModel.DoWorkEventHandler(this.instanceDiscoveryBackgroundWorker_DoWork);
-      this.instanceDiscoveryBackgroundWorker.RunWorkerCompleted += new System.ComponentModel.RunWorkerCompletedEventHandler(this.instanceDiscoveryBackgroundWorker_RunWorkerCompleted);
-      // 
-      // combinationsCountLabel
-      // 
-      this.combinationsCountLabel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
-      this.combinationsCountLabel.AutoSize = true;
-      this.combinationsCountLabel.Location = new System.Drawing.Point(91, 562);
-      this.combinationsCountLabel.Name = "combinationsCountLabel";
-      this.combinationsCountLabel.Size = new System.Drawing.Size(13, 13);
-      this.combinationsCountLabel.TabIndex = 13;
-      this.combinationsCountLabel.Text = "1";
-      // 
-      // CreateExperimentDialogV2
-      // 
-      this.AcceptButton = this.okButton;
-      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Inherit;
-      this.CancelButton = this.cancelButton;
-      this.ClientSize = new System.Drawing.Size(984, 592);
-      this.Controls.Add(this.combinationsCountLabel);
-      this.Controls.Add(this.configurationTabControl);
-      this.Controls.Add(this.combinationsLabel);
-      this.Controls.Add(this.cancelButton);
-      this.Controls.Add(this.okButton);
-      this.Controls.Add(this.engineLabel);
-      this.Controls.Add(this.engineComboBox);
-      this.Controls.Add(this.repetitionsNumericUpDown);
-      this.Controls.Add(this.repetitionsLabel);
-      this.Controls.Add(this.createBatchRunCheckBox);
-      this.Controls.Add(this.createBatchRunLabel);
-      this.MaximizeBox = false;
-      this.MinimizeBox = false;
-      this.Name = "CreateExperimentDialogV2";
-      this.ShowIcon = false;
-      this.ShowInTaskbar = false;
-      this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
-      this.Text = "Create Experiment [v2]";
-      this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.CreateExperimentDialogV2_FormClosing);
-      this.Load += new System.EventHandler(this.CreateExperimentDialogV2_Load);
-      ((System.ComponentModel.ISupportInitialize)(this.repetitionsNumericUpDown)).EndInit();
-      ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).EndInit();
-      ((System.ComponentModel.ISupportInitialize)(this.warningProvider)).EndInit();
-      this.configurationTabControl.ResumeLayout(false);
-      this.parameterConfigurationTabPage.ResumeLayout(false);
-      this.problemInstancesTabPage.ResumeLayout(false);
-      this.problemInstancesTabPage.PerformLayout();
-      this.ResumeLayout(false);
-      this.PerformLayout();
-
-    }
-
-    #endregion
-
-    private System.Windows.Forms.Label createBatchRunLabel;
-    private System.Windows.Forms.CheckBox createBatchRunCheckBox;
-    private System.Windows.Forms.ToolTip toolTip;
-    private System.Windows.Forms.Label repetitionsLabel;
-    private System.Windows.Forms.ErrorProvider errorProvider;
-    private System.Windows.Forms.Button cancelButton;
-    private System.Windows.Forms.Button okButton;
-    private System.Windows.Forms.Label engineLabel;
-    private System.Windows.Forms.ComboBox engineComboBox;
-    private System.Windows.Forms.NumericUpDown repetitionsNumericUpDown;
-    private System.Windows.Forms.ErrorProvider warningProvider;
-    private ParameterConfigurationTreeView parameterConfigurationTreeView;
-    private System.Windows.Forms.Label combinationsLabel;
-    private System.Windows.Forms.TabControl configurationTabControl;
-    private System.Windows.Forms.TabPage parameterConfigurationTabPage;
-    private System.Windows.Forms.TabPage problemInstancesTabPage;
-    private System.Windows.Forms.TreeView instanceTreeView;
-    private System.Windows.Forms.Label libraryLabel;
-    private System.Windows.Forms.ComboBox libraryComboBox;
-    private System.ComponentModel.BackgroundWorker instanceDiscoveryBackgroundWorker;
-    private System.Windows.Forms.Label combinationsCountLabel;
-  }
-}
Index: anches/ParameterConfigurationEncoding/HeuristicLab.Encodings.ParameterConfigurationEncoding.Views/3.3/CreateExperimentDialogV2.cs
===================================================================
--- /branches/ParameterConfigurationEncoding/HeuristicLab.Encodings.ParameterConfigurationEncoding.Views/3.3/CreateExperimentDialogV2.cs	(revision 15170)
+++ 	(revision )
@@ -1,266 +1,0 @@
-﻿#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2012 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 System.Collections.Generic;
-using System.ComponentModel;
-using System.Linq;
-using System.Threading;
-using System.Threading.Tasks;
-using System.Windows.Forms;
-using HeuristicLab.Core;
-using HeuristicLab.MainForm;
-using HeuristicLab.MainForm.WindowsForms;
-using HeuristicLab.Optimization;
-using HeuristicLab.PluginInfrastructure;
-using HeuristicLab.Problems.Instances;
-
-namespace HeuristicLab.Encodings.ParameterConfigurationEncoding.Views {
-  public partial class CreateExperimentDialogV2 : Form {
-    private readonly IAlgorithm algorithm;
-    private readonly ExperimentFactory experimentFactory;
-    private readonly Progress progress;
-    private ParameterConfigurationTree parameterConfigurationTree;
-    private bool createBatchRun;
-    private int repetitions;
-    private IEngine engine;
-    private Task experimentGenerator;
-    private CancellationTokenSource cts;
-    private Dictionary<IProblemInstanceProvider, HashSet<IDataDescriptor>> problemInstanceProviders;
-    private Dictionary<IProblemInstanceProvider, HashSet<IDataDescriptor>> selectedProblemInstanceProviders;
-
-    public Experiment Experiment { get; private set; }
-
-    public CreateExperimentDialogV2() : this(null, null) { }
-    public CreateExperimentDialogV2(IAlgorithm algorithm, IEnumerable<IEngine> engines) {
-      InitializeComponent();
-      if (algorithm != null && engines != null) {
-        this.algorithm = (IAlgorithm)algorithm.Clone();
-        foreach (var engine in engines) engineComboBox.Items.Add(engine);
-        if (engineComboBox.SelectedItem == null) {
-          engineComboBox.SelectedIndex = 0;
-          engine = (IEngine)engineComboBox.SelectedItem;
-        }
-      }
-      createBatchRun = createBatchRunCheckBox.Checked;
-      repetitions = (int)repetitionsNumericUpDown.Value;
-      selectedProblemInstanceProviders = new Dictionary<IProblemInstanceProvider, HashSet<IDataDescriptor>>();
-      progress = new Progress {
-        CanBeCanceled = true,
-        ProgressState = ProgressState.Finished
-      };
-      progress.CancelRequested += (sender, args) => cts.Cancel();
-      progress.ProgressValueChanged += (sender, args) => progress.Status = string.Format("Generating experiment. Please be patient. ({0} %)", (int)(progress.ProgressValue * 100));
-      experimentFactory = new ExperimentFactory();
-      cts = new CancellationTokenSource();
-    }
-
-    #region Background worker
-    private void instanceDiscoveryBackgroundWorker_DoWork(object sender, DoWorkEventArgs e) {
-      var instanceProviders = new Dictionary<IProblemInstanceProvider, HashSet<IDataDescriptor>>();
-      foreach (var provider in ProblemInstanceManager.GetProviders(algorithm.Problem))
-        instanceProviders[provider] = new HashSet<IDataDescriptor>(ProblemInstanceManager.GetDataDescriptors(provider));
-      e.Result = instanceProviders;
-    }
-
-    private void instanceDiscoveryBackgroundWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) {
-      problemInstanceProviders = (Dictionary<IProblemInstanceProvider, HashSet<IDataDescriptor>>)e.Result;
-      libraryComboBox.DisplayMember = "Name";
-      libraryComboBox.DataSource = problemInstanceProviders.Keys.ToList();
-      libraryComboBox.Enabled = true;
-    }
-    #endregion
-
-    #region Events
-    private void CreateExperimentDialogV2_Load(object sender, System.EventArgs e) {
-      if (algorithm.Problem != null) {
-        parameterConfigurationTreeView.Content = parameterConfigurationTree = new ParameterConfigurationTree(algorithm, algorithm.Problem);
-        parameterConfigurationTree.CombinationsCountChanged += (o, args) => UpdateCombinationsCount();
-        experimentFactory.ExperimentGenerationProgressChanged += (o, args) => progress.ProgressValue = experimentFactory.ExperimentGenerationProgress;
-        new ProgressView(parameterConfigurationTreeView, progress) { CancelTimeoutMs = 10000 };
-      } else {
-        configurationTabControl.TabPages.Remove(problemInstancesTabPage);
-        SetEnabledStateOfControls(false);
-      }
-    }
-
-    private void CreateExperimentDialogV2_FormClosing(object sender, FormClosingEventArgs e) {
-      if (experimentGenerator != null) e.Cancel = true;
-    }
-
-    private void createBatchRunCheckBox_CheckedChanged(object sender, System.EventArgs e) {
-      repetitionsNumericUpDown.Enabled = createBatchRun = createBatchRunCheckBox.Checked;
-    }
-
-    private void repetitionsNumericUpDown_Validated(object sender, System.EventArgs e) {
-      if (repetitionsNumericUpDown.Text == string.Empty)
-        repetitionsNumericUpDown.Text = repetitionsNumericUpDown.Value.ToString();
-      repetitions = (int)repetitionsNumericUpDown.Value;
-    }
-
-    private void engineComboBox_SelectedIndexChanged(object sender, System.EventArgs e) {
-      engine = (IEngine)engineComboBox.SelectedItem;
-    }
-
-    private void configurationTabControl_SelectedIndexChanged(object sender, EventArgs e) {
-      if (configurationTabControl.SelectedTab == problemInstancesTabPage && problemInstanceProviders == null) {
-        libraryComboBox.Enabled = false;
-        instanceDiscoveryBackgroundWorker.RunWorkerAsync();
-      }
-    }
-
-    private void libraryComboBox_SelectedIndexChanged(object sender, EventArgs e) {
-      UpdateTreeView((IProblemInstanceProvider)libraryComboBox.SelectedItem);
-    }
-
-    private void instanceTreeView_AfterCheck(object sender, TreeViewEventArgs e) {
-      if (e.Action != TreeViewAction.Unknown) {
-        var provider = e.Node.Tag as IProblemInstanceProvider;
-        if (provider != null) {
-          if (e.Node.Checked) {
-            if (!selectedProblemInstanceProviders.ContainsKey(provider))
-              selectedProblemInstanceProviders[provider] = new HashSet<IDataDescriptor>();
-            foreach (TreeNode node in e.Node.Nodes) {
-              selectedProblemInstanceProviders[provider].Add((IDataDescriptor)node.Tag);
-              node.Checked = e.Node.Checked;
-            }
-          } else {
-            selectedProblemInstanceProviders[provider].Clear();
-            foreach (TreeNode node in e.Node.Nodes) {
-              node.Checked = e.Node.Checked;
-            }
-          }
-        } else {
-          provider = (IProblemInstanceProvider)e.Node.Parent.Tag;
-          if (!selectedProblemInstanceProviders.ContainsKey(provider))
-            selectedProblemInstanceProviders[provider] = new HashSet<IDataDescriptor>();
-          if (e.Node.Checked) {
-            selectedProblemInstanceProviders[provider].Add((IDataDescriptor)e.Node.Tag);
-            var instances = new TreeNode[e.Node.Parent.Nodes.Count];
-            e.Node.Parent.Nodes.CopyTo(instances, 0);
-            e.Node.Parent.Checked = instances.All(x => x.Checked);
-          } else {
-            selectedProblemInstanceProviders[provider].Remove((IDataDescriptor)e.Node.Tag);
-            e.Node.Parent.Checked = e.Node.Checked;
-          }
-        }
-        UpdateCombinationsCount();
-      }
-    }
-
-    private void okButton_Click(object sender, System.EventArgs e) {
-      configurationTabControl.SelectedTab = parameterConfigurationTabPage;
-      experimentGenerator = Task.Factory.StartNew(() => {
-        StartProgressView();
-        var engineAlgorithm = algorithm as EngineAlgorithm;
-        if (engineAlgorithm != null) engineAlgorithm.Engine = engine;
-        try {
-          Experiment = createBatchRun ? experimentFactory.GenerateExperiment(engineAlgorithm, parameterConfigurationTree, true, repetitions, selectedProblemInstanceProviders, cts.Token)
-                                      : experimentFactory.GenerateExperiment(engineAlgorithm, parameterConfigurationTree, false, 0, selectedProblemInstanceProviders, cts.Token);
-        }
-        finally { FinishProgressView(); }
-      }, cts.Token);
-      experimentGenerator.ContinueWith(t => {
-        experimentGenerator = null;
-        CloseDialog();
-      }, TaskContinuationOptions.OnlyOnRanToCompletion);
-      experimentGenerator.ContinueWith(t => {
-        experimentGenerator = null;
-        if (t.IsCanceled) cts = new CancellationTokenSource();
-        if (t.IsFaulted) {
-          ReportError(t.Exception.Flatten());
-          t.Exception.Flatten().Handle(ex => true);
-        }
-      }, TaskContinuationOptions.NotOnRanToCompletion);
-    }
-    #endregion
-
-    #region Helpers
-    private void SetEnabledStateOfControls(bool state) {
-      createBatchRunCheckBox.Enabled = state;
-      repetitionsNumericUpDown.Enabled = state;
-      engineComboBox.Enabled = state;
-      okButton.Enabled = state;
-      cancelButton.Enabled = state;
-    }
-
-    private void UpdateTreeView(IProblemInstanceProvider provider) {
-      instanceTreeView.Nodes.Clear();
-      var rootNode = new TreeNode("All") { Tag = provider };
-      TreeNode[] instances = problemInstanceProviders[provider]
-                              .Select(x => new TreeNode(x.Name) {
-                                Tag = x,
-                                Checked = selectedProblemInstanceProviders.ContainsKey(provider)
-                                          && selectedProblemInstanceProviders[provider].Contains(x)
-                              })
-                              .ToArray();
-      rootNode.Checked = instances.All(x => x.Checked);
-      rootNode.Nodes.AddRange(instances);
-      rootNode.ExpandAll();
-      instanceTreeView.Nodes.Add(rootNode);
-    }
-
-    private void UpdateCombinationsCount() {
-      var combinationsCount = parameterConfigurationTree.CombinationsCount;
-      var instanceCount = 1 + selectedProblemInstanceProviders.Values.Sum(x => x.Count);
-      combinationsCountLabel.Text = (combinationsCount * instanceCount).ToString();
-    }
-
-    private void StartProgressView() {
-      if (InvokeRequired) {
-        Invoke(new Action(StartProgressView));
-      } else {
-        SetEnabledStateOfControls(false);
-        problemInstancesTabPage.Enabled = false;
-        progress.ProgressValue = 0;
-        progress.ProgressState = ProgressState.Started;
-      }
-    }
-
-    private void FinishProgressView() {
-      if (InvokeRequired) {
-        Invoke(new Action(FinishProgressView));
-      } else {
-        progress.Finish();
-        problemInstancesTabPage.Enabled = true;
-        SetEnabledStateOfControls(true);
-      }
-    }
-
-    private void ReportError(Exception e) {
-      if (InvokeRequired) {
-        Invoke(new Action<Exception>(ReportError), e);
-      } else {
-        ErrorHandling.ShowErrorDialog(this, "An error occurred generating the experiment.", e);
-      }
-    }
-
-    private void CloseDialog() {
-      if (InvokeRequired) {
-        Invoke(new Action(CloseDialog));
-      } else {
-        this.DialogResult = DialogResult.OK;
-        this.Close();
-      }
-    }
-    #endregion
-  }
-}
Index: /branches/ParameterConfigurationEncoding/HeuristicLab.Encodings.ParameterConfigurationEncoding.Views/3.3/CreateExperimentView.Designer.cs
===================================================================
--- /branches/ParameterConfigurationEncoding/HeuristicLab.Encodings.ParameterConfigurationEncoding.Views/3.3/CreateExperimentView.Designer.cs	(revision 15171)
+++ /branches/ParameterConfigurationEncoding/HeuristicLab.Encodings.ParameterConfigurationEncoding.Views/3.3/CreateExperimentView.Designer.cs	(revision 15171)
@@ -0,0 +1,290 @@
+﻿namespace HeuristicLab.Encodings.ParameterConfigurationEncoding.Views {
+  partial class CreateExperimentView {
+    /// <summary> 
+    /// Required designer variable.
+    /// </summary>
+    private System.ComponentModel.IContainer components = null;
+
+    /// <summary> 
+    /// Clean up any resources being used.
+    /// </summary>
+    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+    protected override void Dispose(bool disposing) {
+      if (disposing && (components != null)) {
+        components.Dispose();
+      }
+      base.Dispose(disposing);
+    }
+
+    #region Component Designer generated code
+
+    /// <summary> 
+    /// Required method for Designer support - do not modify 
+    /// the contents of this method with the code editor.
+    /// </summary>
+    private void InitializeComponent() {
+      this.components = new System.ComponentModel.Container();
+      this.instanceTreeView = new System.Windows.Forms.TreeView();
+      this.libraryLabel = new System.Windows.Forms.Label();
+      this.libraryComboBox = new System.Windows.Forms.ComboBox();
+      this.problemInstancesTabPage = new System.Windows.Forms.TabPage();
+      this.parameterConfigurationTreeView = new HeuristicLab.Encodings.ParameterConfigurationEncoding.Views.ParameterConfigurationTreeView();
+      this.parameterConfigurationTabPage = new System.Windows.Forms.TabPage();
+      this.configurationTabControl = new System.Windows.Forms.TabControl();
+      this.instanceDiscoveryBackgroundWorker = new System.ComponentModel.BackgroundWorker();
+      this.engineLabel = new System.Windows.Forms.Label();
+      this.engineComboBox = new System.Windows.Forms.ComboBox();
+      this.warningProvider = new System.Windows.Forms.ErrorProvider(this.components);
+      this.errorProvider = new System.Windows.Forms.ErrorProvider(this.components);
+      this.repetitionsNumericUpDown = new System.Windows.Forms.NumericUpDown();
+      this.repetitionsLabel = new System.Windows.Forms.Label();
+      this.toolTip = new System.Windows.Forms.ToolTip(this.components);
+      this.createBatchRunCheckBox = new System.Windows.Forms.CheckBox();
+      this.generateButton = new System.Windows.Forms.Button();
+      this.createBatchRunLabel = new System.Windows.Forms.Label();
+      this.problemInstancesTabPage.SuspendLayout();
+      this.parameterConfigurationTabPage.SuspendLayout();
+      this.configurationTabControl.SuspendLayout();
+      ((System.ComponentModel.ISupportInitialize)(this.warningProvider)).BeginInit();
+      ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).BeginInit();
+      ((System.ComponentModel.ISupportInitialize)(this.repetitionsNumericUpDown)).BeginInit();
+      this.SuspendLayout();
+      // 
+      // instanceTreeView
+      // 
+      this.instanceTreeView.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 
+            | System.Windows.Forms.AnchorStyles.Left) 
+            | System.Windows.Forms.AnchorStyles.Right)));
+      this.instanceTreeView.CheckBoxes = true;
+      this.instanceTreeView.Location = new System.Drawing.Point(6, 33);
+      this.instanceTreeView.Name = "instanceTreeView";
+      this.instanceTreeView.Size = new System.Drawing.Size(743, 337);
+      this.instanceTreeView.TabIndex = 2;
+      this.instanceTreeView.AfterCheck += new System.Windows.Forms.TreeViewEventHandler(this.instanceTreeView_AfterCheck);
+      // 
+      // libraryLabel
+      // 
+      this.libraryLabel.AutoSize = true;
+      this.libraryLabel.Location = new System.Drawing.Point(6, 9);
+      this.libraryLabel.Name = "libraryLabel";
+      this.libraryLabel.Size = new System.Drawing.Size(41, 13);
+      this.libraryLabel.TabIndex = 1;
+      this.libraryLabel.Text = "Library:";
+      // 
+      // libraryComboBox
+      // 
+      this.libraryComboBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
+            | System.Windows.Forms.AnchorStyles.Right)));
+      this.libraryComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
+      this.libraryComboBox.FormattingEnabled = true;
+      this.libraryComboBox.Location = new System.Drawing.Point(53, 6);
+      this.libraryComboBox.Name = "libraryComboBox";
+      this.libraryComboBox.Size = new System.Drawing.Size(696, 21);
+      this.libraryComboBox.TabIndex = 0;
+      this.libraryComboBox.SelectedIndexChanged += new System.EventHandler(this.libraryComboBox_SelectedIndexChanged);
+      // 
+      // problemInstancesTabPage
+      // 
+      this.problemInstancesTabPage.Controls.Add(this.instanceTreeView);
+      this.problemInstancesTabPage.Controls.Add(this.libraryLabel);
+      this.problemInstancesTabPage.Controls.Add(this.libraryComboBox);
+      this.problemInstancesTabPage.Location = new System.Drawing.Point(4, 22);
+      this.problemInstancesTabPage.Name = "problemInstancesTabPage";
+      this.problemInstancesTabPage.Padding = new System.Windows.Forms.Padding(3);
+      this.problemInstancesTabPage.Size = new System.Drawing.Size(755, 376);
+      this.problemInstancesTabPage.TabIndex = 1;
+      this.problemInstancesTabPage.Text = "Problem Instances";
+      this.problemInstancesTabPage.UseVisualStyleBackColor = true;
+      // 
+      // parameterConfigurationTreeView
+      // 
+      this.parameterConfigurationTreeView.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 
+            | System.Windows.Forms.AnchorStyles.Left) 
+            | System.Windows.Forms.AnchorStyles.Right)));
+      this.parameterConfigurationTreeView.Caption = "ParameterConfiguration View";
+      this.parameterConfigurationTreeView.Content = null;
+      this.parameterConfigurationTreeView.Location = new System.Drawing.Point(6, 6);
+      this.parameterConfigurationTreeView.Name = "parameterConfigurationTreeView";
+      this.parameterConfigurationTreeView.ReadOnly = false;
+      this.parameterConfigurationTreeView.Size = new System.Drawing.Size(743, 364);
+      this.parameterConfigurationTreeView.TabIndex = 6;
+      // 
+      // parameterConfigurationTabPage
+      // 
+      this.parameterConfigurationTabPage.Controls.Add(this.parameterConfigurationTreeView);
+      this.parameterConfigurationTabPage.Location = new System.Drawing.Point(4, 22);
+      this.parameterConfigurationTabPage.Name = "parameterConfigurationTabPage";
+      this.parameterConfigurationTabPage.Padding = new System.Windows.Forms.Padding(3);
+      this.parameterConfigurationTabPage.Size = new System.Drawing.Size(755, 376);
+      this.parameterConfigurationTabPage.TabIndex = 0;
+      this.parameterConfigurationTabPage.Text = "Parameter Configuration";
+      this.parameterConfigurationTabPage.UseVisualStyleBackColor = true;
+      // 
+      // configurationTabControl
+      // 
+      this.configurationTabControl.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 
+            | System.Windows.Forms.AnchorStyles.Left) 
+            | System.Windows.Forms.AnchorStyles.Right)));
+      this.configurationTabControl.Controls.Add(this.parameterConfigurationTabPage);
+      this.configurationTabControl.Controls.Add(this.problemInstancesTabPage);
+      this.configurationTabControl.Location = new System.Drawing.Point(2, 76);
+      this.configurationTabControl.Name = "configurationTabControl";
+      this.configurationTabControl.SelectedIndex = 0;
+      this.configurationTabControl.Size = new System.Drawing.Size(763, 402);
+      this.configurationTabControl.TabIndex = 23;
+      this.configurationTabControl.SelectedIndexChanged += new System.EventHandler(this.configurationTabControl_SelectedIndexChanged);
+      // 
+      // instanceDiscoveryBackgroundWorker
+      // 
+      this.instanceDiscoveryBackgroundWorker.DoWork += new System.ComponentModel.DoWorkEventHandler(this.instanceDiscoveryBackgroundWorker_DoWork);
+      this.instanceDiscoveryBackgroundWorker.RunWorkerCompleted += new System.ComponentModel.RunWorkerCompletedEventHandler(this.instanceDiscoveryBackgroundWorker_RunWorkerCompleted);
+      // 
+      // engineLabel
+      // 
+      this.engineLabel.AutoSize = true;
+      this.engineLabel.Location = new System.Drawing.Point(2, 52);
+      this.engineLabel.Name = "engineLabel";
+      this.engineLabel.Size = new System.Drawing.Size(43, 13);
+      this.engineLabel.TabIndex = 19;
+      this.engineLabel.Text = "&Engine:";
+      // 
+      // engineComboBox
+      // 
+      this.engineComboBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
+            | System.Windows.Forms.AnchorStyles.Right)));
+      this.engineComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
+      this.engineComboBox.FormattingEnabled = true;
+      this.engineComboBox.Location = new System.Drawing.Point(103, 49);
+      this.engineComboBox.Name = "engineComboBox";
+      this.engineComboBox.Size = new System.Drawing.Size(662, 21);
+      this.engineComboBox.TabIndex = 18;
+      this.engineComboBox.SelectedIndexChanged += new System.EventHandler(this.engineComboBox_SelectedIndexChanged);
+      // 
+      // warningProvider
+      // 
+      this.warningProvider.BlinkStyle = System.Windows.Forms.ErrorBlinkStyle.NeverBlink;
+      this.warningProvider.ContainerControl = this;
+      // 
+      // errorProvider
+      // 
+      this.errorProvider.BlinkStyle = System.Windows.Forms.ErrorBlinkStyle.NeverBlink;
+      this.errorProvider.ContainerControl = this;
+      // 
+      // repetitionsNumericUpDown
+      // 
+      this.repetitionsNumericUpDown.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
+            | System.Windows.Forms.AnchorStyles.Right)));
+      this.repetitionsNumericUpDown.Location = new System.Drawing.Point(103, 23);
+      this.repetitionsNumericUpDown.Maximum = new decimal(new int[] {
+            1000000,
+            0,
+            0,
+            0});
+      this.repetitionsNumericUpDown.Minimum = new decimal(new int[] {
+            1,
+            0,
+            0,
+            0});
+      this.repetitionsNumericUpDown.Name = "repetitionsNumericUpDown";
+      this.repetitionsNumericUpDown.Size = new System.Drawing.Size(662, 20);
+      this.repetitionsNumericUpDown.TabIndex = 17;
+      this.repetitionsNumericUpDown.ThousandsSeparator = true;
+      this.toolTip.SetToolTip(this.repetitionsNumericUpDown, "Number of repetitions executed by the batch run.");
+      this.repetitionsNumericUpDown.Value = new decimal(new int[] {
+            10,
+            0,
+            0,
+            0});
+      this.repetitionsNumericUpDown.Validated += new System.EventHandler(this.repetitionsNumericUpDown_Validated);
+      // 
+      // repetitionsLabel
+      // 
+      this.repetitionsLabel.AutoSize = true;
+      this.repetitionsLabel.Location = new System.Drawing.Point(2, 25);
+      this.repetitionsLabel.Name = "repetitionsLabel";
+      this.repetitionsLabel.Size = new System.Drawing.Size(63, 13);
+      this.repetitionsLabel.TabIndex = 16;
+      this.repetitionsLabel.Text = "&Repetitions:";
+      // 
+      // createBatchRunCheckBox
+      // 
+      this.createBatchRunCheckBox.AutoSize = true;
+      this.createBatchRunCheckBox.Checked = true;
+      this.createBatchRunCheckBox.CheckState = System.Windows.Forms.CheckState.Checked;
+      this.createBatchRunCheckBox.Location = new System.Drawing.Point(103, 3);
+      this.createBatchRunCheckBox.Name = "createBatchRunCheckBox";
+      this.createBatchRunCheckBox.Size = new System.Drawing.Size(15, 14);
+      this.createBatchRunCheckBox.TabIndex = 15;
+      this.toolTip.SetToolTip(this.createBatchRunCheckBox, "Check to create a batch run for executing an optimizer multiple times.");
+      this.createBatchRunCheckBox.UseVisualStyleBackColor = true;
+      this.createBatchRunCheckBox.CheckedChanged += new System.EventHandler(this.createBatchRunCheckBox_CheckedChanged);
+      // 
+      // generateButton
+      // 
+      this.generateButton.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left) 
+            | System.Windows.Forms.AnchorStyles.Right)));
+      this.generateButton.DialogResult = System.Windows.Forms.DialogResult.OK;
+      this.generateButton.Location = new System.Drawing.Point(3, 484);
+      this.generateButton.Name = "generateButton";
+      this.generateButton.Size = new System.Drawing.Size(762, 23);
+      this.generateButton.TabIndex = 20;
+      this.generateButton.Text = "&Create Experiment (Combinations: 1)";
+      this.generateButton.UseVisualStyleBackColor = true;
+      this.generateButton.Click += new System.EventHandler(this.generateButton_Click);
+      // 
+      // createBatchRunLabel
+      // 
+      this.createBatchRunLabel.AutoSize = true;
+      this.createBatchRunLabel.Location = new System.Drawing.Point(2, 4);
+      this.createBatchRunLabel.Name = "createBatchRunLabel";
+      this.createBatchRunLabel.Size = new System.Drawing.Size(95, 13);
+      this.createBatchRunLabel.TabIndex = 14;
+      this.createBatchRunLabel.Text = "&Create Batch Run:";
+      // 
+      // CreateExperimentView
+      // 
+      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+      this.Controls.Add(this.configurationTabControl);
+      this.Controls.Add(this.engineLabel);
+      this.Controls.Add(this.engineComboBox);
+      this.Controls.Add(this.repetitionsNumericUpDown);
+      this.Controls.Add(this.repetitionsLabel);
+      this.Controls.Add(this.generateButton);
+      this.Controls.Add(this.createBatchRunCheckBox);
+      this.Controls.Add(this.createBatchRunLabel);
+      this.Name = "CreateExperimentView";
+      this.Size = new System.Drawing.Size(768, 510);
+      this.problemInstancesTabPage.ResumeLayout(false);
+      this.problemInstancesTabPage.PerformLayout();
+      this.parameterConfigurationTabPage.ResumeLayout(false);
+      this.configurationTabControl.ResumeLayout(false);
+      ((System.ComponentModel.ISupportInitialize)(this.warningProvider)).EndInit();
+      ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).EndInit();
+      ((System.ComponentModel.ISupportInitialize)(this.repetitionsNumericUpDown)).EndInit();
+      this.ResumeLayout(false);
+      this.PerformLayout();
+
+    }
+
+    #endregion
+    private System.Windows.Forms.TreeView instanceTreeView;
+    private System.Windows.Forms.Label libraryLabel;
+    private System.Windows.Forms.ComboBox libraryComboBox;
+    private System.Windows.Forms.TabPage problemInstancesTabPage;
+    private ParameterConfigurationTreeView parameterConfigurationTreeView;
+    private System.Windows.Forms.TabPage parameterConfigurationTabPage;
+    private System.Windows.Forms.TabControl configurationTabControl;
+    private System.ComponentModel.BackgroundWorker instanceDiscoveryBackgroundWorker;
+    private System.Windows.Forms.Label engineLabel;
+    private System.Windows.Forms.ComboBox engineComboBox;
+    private System.Windows.Forms.ErrorProvider warningProvider;
+    private System.Windows.Forms.NumericUpDown repetitionsNumericUpDown;
+    private System.Windows.Forms.ToolTip toolTip;
+    private System.Windows.Forms.Label repetitionsLabel;
+    private System.Windows.Forms.Button generateButton;
+    private System.Windows.Forms.CheckBox createBatchRunCheckBox;
+    private System.Windows.Forms.Label createBatchRunLabel;
+    private System.Windows.Forms.ErrorProvider errorProvider;
+  }
+}
Index: /branches/ParameterConfigurationEncoding/HeuristicLab.Encodings.ParameterConfigurationEncoding.Views/3.3/CreateExperimentView.cs
===================================================================
--- /branches/ParameterConfigurationEncoding/HeuristicLab.Encodings.ParameterConfigurationEncoding.Views/3.3/CreateExperimentView.cs	(revision 15171)
+++ /branches/ParameterConfigurationEncoding/HeuristicLab.Encodings.ParameterConfigurationEncoding.Views/3.3/CreateExperimentView.cs	(revision 15171)
@@ -0,0 +1,248 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2017 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 System.Collections.Generic;
+using System.ComponentModel;
+using System.Linq;
+using System.Threading;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+using HeuristicLab.Core;
+using HeuristicLab.MainForm;
+using HeuristicLab.MainForm.WindowsForms;
+using HeuristicLab.Optimization;
+using HeuristicLab.PluginInfrastructure;
+using HeuristicLab.Problems.Instances;
+
+namespace HeuristicLab.Encodings.ParameterConfigurationEncoding.Views {
+  [View("CreateExperiment View")]
+  [Content(typeof(IAlgorithm), false)]
+  public partial class CreateExperimentView : AsynchronousContentView {
+    private readonly ExperimentFactory experimentFactory;
+    private readonly Progress progress;
+    private ParameterConfigurationTree parameterConfigurationTree;
+    private bool createBatchRun;
+    private int repetitions;
+    private IEngine engine;
+    private Task experimentGenerator;
+    private CancellationTokenSource cts;
+    private Dictionary<IProblemInstanceProvider, HashSet<IDataDescriptor>> problemInstanceProviders;
+    private Dictionary<IProblemInstanceProvider, HashSet<IDataDescriptor>> selectedProblemInstanceProviders;
+
+    public new IAlgorithm Content {
+      get { return (IAlgorithm)base.Content; }
+      set { base.Content = value; }
+    }
+
+    public CreateExperimentView() {
+      InitializeComponent();
+      engineComboBox.DataSource = ApplicationManager.Manager.GetInstances<IEngine>().ToArray();
+      if (engineComboBox.SelectedItem == null) {
+        engineComboBox.SelectedIndex = 0;
+        engine = (IEngine)engineComboBox.SelectedItem;
+      }
+
+      createBatchRun = createBatchRunCheckBox.Checked;
+      repetitions = (int)repetitionsNumericUpDown.Value;
+      selectedProblemInstanceProviders = new Dictionary<IProblemInstanceProvider, HashSet<IDataDescriptor>>();
+
+      progress = new Progress { CanBeCanceled = true };
+      progress.CancelRequested += (sender, args) => cts.Cancel();
+      progress.ProgressValueChanged += (sender, args) => progress.Status = string.Format("Generating experiment. Please be patient. ({0} %)", (int)(progress.ProgressValue * 100));
+
+      experimentFactory = new ExperimentFactory();
+      cts = new CancellationTokenSource();
+    }
+
+    #region Background worker
+    private void instanceDiscoveryBackgroundWorker_DoWork(object sender, DoWorkEventArgs e) {
+      var instanceProviders = new Dictionary<IProblemInstanceProvider, HashSet<IDataDescriptor>>();
+      foreach (var provider in ProblemInstanceManager.GetProviders(Content.Problem))
+        instanceProviders[provider] = new HashSet<IDataDescriptor>(ProblemInstanceManager.GetDataDescriptors(provider));
+      e.Result = instanceProviders;
+    }
+
+    private void instanceDiscoveryBackgroundWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) {
+      problemInstanceProviders = (Dictionary<IProblemInstanceProvider, HashSet<IDataDescriptor>>)e.Result;
+      libraryComboBox.DisplayMember = "Name";
+      libraryComboBox.DataSource = problemInstanceProviders.Keys.ToList();
+      libraryComboBox.Enabled = true;
+    }
+    #endregion
+
+    protected override void OnContentChanged() {
+      base.OnContentChanged();
+      if (Content != null && Content.Problem != null) {
+        parameterConfigurationTreeView.Content = parameterConfigurationTree = new ParameterConfigurationTree(Content, Content.Problem);
+        parameterConfigurationTree.CombinationsCountChanged += (o, args) => UpdateCombinationsCount();
+        experimentFactory.ExperimentGenerationProgressChanged += (o, args) => progress.ProgressValue = experimentFactory.ExperimentGenerationProgress;
+      } else {
+        configurationTabControl.TabPages.Remove(problemInstancesTabPage);
+        SetEnabledStateOfControls();
+      }
+    }
+
+    protected override void OnClosing(FormClosingEventArgs e) {
+      cts.Cancel();
+      base.OnClosing(e);
+    }
+
+    #region Events
+    private void createBatchRunCheckBox_CheckedChanged(object sender, EventArgs e) {
+      repetitionsNumericUpDown.Enabled = createBatchRun = createBatchRunCheckBox.Checked;
+    }
+
+    private void repetitionsNumericUpDown_Validated(object sender, EventArgs e) {
+      if (repetitionsNumericUpDown.Text == string.Empty)
+        repetitionsNumericUpDown.Text = repetitionsNumericUpDown.Value.ToString();
+      repetitions = (int)repetitionsNumericUpDown.Value;
+    }
+
+    private void engineComboBox_SelectedIndexChanged(object sender, EventArgs e) {
+      engine = (IEngine)engineComboBox.SelectedItem;
+    }
+
+    private void configurationTabControl_SelectedIndexChanged(object sender, EventArgs e) {
+      if (configurationTabControl.SelectedTab == problemInstancesTabPage && problemInstanceProviders == null) {
+        libraryComboBox.Enabled = false;
+        instanceDiscoveryBackgroundWorker.RunWorkerAsync();
+      }
+    }
+
+    private void libraryComboBox_SelectedIndexChanged(object sender, EventArgs e) {
+      UpdateTreeView((IProblemInstanceProvider)libraryComboBox.SelectedItem);
+    }
+
+    private void instanceTreeView_AfterCheck(object sender, TreeViewEventArgs e) {
+      if (e.Action != TreeViewAction.Unknown) {
+        var provider = e.Node.Tag as IProblemInstanceProvider;
+        if (provider != null) {
+          if (e.Node.Checked) {
+            if (!selectedProblemInstanceProviders.ContainsKey(provider))
+              selectedProblemInstanceProviders[provider] = new HashSet<IDataDescriptor>();
+            foreach (TreeNode node in e.Node.Nodes) {
+              selectedProblemInstanceProviders[provider].Add((IDataDescriptor)node.Tag);
+              node.Checked = e.Node.Checked;
+            }
+          } else {
+            selectedProblemInstanceProviders[provider].Clear();
+            foreach (TreeNode node in e.Node.Nodes) {
+              node.Checked = e.Node.Checked;
+            }
+          }
+        } else {
+          provider = (IProblemInstanceProvider)e.Node.Parent.Tag;
+          if (!selectedProblemInstanceProviders.ContainsKey(provider))
+            selectedProblemInstanceProviders[provider] = new HashSet<IDataDescriptor>();
+          if (e.Node.Checked) {
+            selectedProblemInstanceProviders[provider].Add((IDataDescriptor)e.Node.Tag);
+            var instances = new TreeNode[e.Node.Parent.Nodes.Count];
+            e.Node.Parent.Nodes.CopyTo(instances, 0);
+            e.Node.Parent.Checked = instances.All(x => x.Checked);
+          } else {
+            selectedProblemInstanceProviders[provider].Remove((IDataDescriptor)e.Node.Tag);
+            e.Node.Parent.Checked = e.Node.Checked;
+          }
+        }
+        UpdateCombinationsCount();
+      }
+    }
+
+    private void generateButton_Click(object sender, EventArgs e) {
+      experimentGenerator = Task.Factory.StartNew(() => {
+        StartProgressView();
+        var engineAlgorithm = Content as EngineAlgorithm;
+        if (engineAlgorithm != null) engineAlgorithm.Engine = engine;
+
+        try {
+          var experiment = experimentFactory.GenerateExperiment(
+            Content, parameterConfigurationTree, createBatchRun,
+            createBatchRun ? repetitions : 0, selectedProblemInstanceProviders, cts.Token);
+
+          MainFormManager.MainForm.ShowContent(experiment);
+        } finally {
+          FinishProgressView();
+        }
+      }, cts.Token);
+
+      experimentGenerator.ContinueWith(t => {
+        experimentGenerator = null;
+      }, TaskContinuationOptions.OnlyOnRanToCompletion);
+
+      experimentGenerator.ContinueWith(t => {
+        experimentGenerator = null;
+        if (t.IsCanceled) cts = new CancellationTokenSource();
+        if (t.IsFaulted) {
+          ReportError(t.Exception.Flatten());
+          t.Exception.Flatten().Handle(ex => true);
+        }
+      }, TaskContinuationOptions.NotOnRanToCompletion);
+    }
+    #endregion
+
+    #region Helpers
+
+
+    private void UpdateTreeView(IProblemInstanceProvider provider) {
+      instanceTreeView.Nodes.Clear();
+      var rootNode = new TreeNode("All") { Tag = provider };
+      TreeNode[] instances = problemInstanceProviders[provider]
+                              .Select(x => new TreeNode(x.Name) {
+                                Tag = x,
+                                Checked = selectedProblemInstanceProviders.ContainsKey(provider)
+                                          && selectedProblemInstanceProviders[provider].Contains(x)
+                              })
+                              .ToArray();
+      rootNode.Checked = instances.All(x => x.Checked);
+      rootNode.Nodes.AddRange(instances);
+      rootNode.ExpandAll();
+      instanceTreeView.Nodes.Add(rootNode);
+    }
+
+    private void UpdateCombinationsCount() {
+      var combinationsCount = parameterConfigurationTree.CombinationsCount;
+      var instanceCount = Math.Max(1, selectedProblemInstanceProviders.Values.Sum(x => x.Count));
+      generateButton.Text = string.Format("&Create Experiment (Combinations: {0})", combinationsCount * instanceCount);
+    }
+
+    private void StartProgressView() {
+      progress.Start();
+      var mainForm = MainFormManager.GetMainForm<MainForm.WindowsForms.MainForm>();
+      mainForm.AddOperationProgressToView(this, progress);
+    }
+
+    private void FinishProgressView() {
+      var mainForm = MainFormManager.GetMainForm<MainForm.WindowsForms.MainForm>();
+      mainForm.RemoveOperationProgressFromView(this);
+      progress.Finish();
+    }
+
+    private void ReportError(Exception e) {
+      if (InvokeRequired) {
+        Invoke(new Action<Exception>(ReportError), e);
+      } else {
+        ErrorHandling.ShowErrorDialog(this, "An error occurred generating the experiment.", e);
+      }
+    }
+    #endregion
+  }
+}
Index: /branches/ParameterConfigurationEncoding/HeuristicLab.Encodings.ParameterConfigurationEncoding.Views/3.3/HeuristicLab.Encodings.ParameterConfigurationEncoding.Views-3.3.csproj
===================================================================
--- /branches/ParameterConfigurationEncoding/HeuristicLab.Encodings.ParameterConfigurationEncoding.Views/3.3/HeuristicLab.Encodings.ParameterConfigurationEncoding.Views-3.3.csproj	(revision 15170)
+++ /branches/ParameterConfigurationEncoding/HeuristicLab.Encodings.ParameterConfigurationEncoding.Views/3.3/HeuristicLab.Encodings.ParameterConfigurationEncoding.Views-3.3.csproj	(revision 15171)
@@ -11,5 +11,5 @@
     <RootNamespace>HeuristicLab.Encodings.ParameterConfigurationEncoding.Views</RootNamespace>
     <AssemblyName>HeuristicLab.Encodings.ParameterConfigurationEncoding.Views-3.3</AssemblyName>
-    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
+    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
     <FileAlignment>512</FileAlignment>
   </PropertyGroup>
@@ -40,49 +40,81 @@
   <ItemGroup>
     <Reference Include="HeuristicLab.Collections-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.Collections-3.3.dll</HintPath>
       <Private>False</Private>
     </Reference>
     <Reference Include="HeuristicLab.Common-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.Common-3.3.dll</HintPath>
       <Private>False</Private>
     </Reference>
     <Reference Include="HeuristicLab.Common.Resources-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.Common.Resources-3.3.dll</HintPath>
       <Private>False</Private>
     </Reference>
     <Reference Include="HeuristicLab.Core-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.Core-3.3.dll</HintPath>
       <Private>False</Private>
     </Reference>
     <Reference Include="HeuristicLab.Core.Views-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.Core.Views-3.3.dll</HintPath>
       <Private>False</Private>
     </Reference>
     <Reference Include="HeuristicLab.Data-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.Data-3.3.dll</HintPath>
       <Private>False</Private>
     </Reference>
     <Reference Include="HeuristicLab.Data.Views-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.Data.Views-3.3.dll</HintPath>
       <Private>False</Private>
     </Reference>
     <Reference Include="HeuristicLab.MainForm-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.MainForm-3.3.dll</HintPath>
       <Private>False</Private>
     </Reference>
     <Reference Include="HeuristicLab.MainForm.WindowsForms-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.MainForm.WindowsForms-3.3.dll</HintPath>
       <Private>False</Private>
     </Reference>
     <Reference Include="HeuristicLab.Optimization-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.Optimization-3.3.dll</HintPath>
       <Private>False</Private>
     </Reference>
     <Reference Include="HeuristicLab.Optimization.Views-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.Optimization.Views-3.3.dll</HintPath>
       <Private>False</Private>
     </Reference>
     <Reference Include="HeuristicLab.Optimizer-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.Optimizer-3.3.dll</HintPath>
       <Private>False</Private>
     </Reference>
     <Reference Include="HeuristicLab.Parameters-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.Parameters-3.3.dll</HintPath>
       <Private>False</Private>
     </Reference>
     <Reference Include="HeuristicLab.Parameters.Views-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.Parameters.Views-3.3.dll</HintPath>
       <Private>False</Private>
     </Reference>
     <Reference Include="HeuristicLab.PluginInfrastructure-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.PluginInfrastructure-3.3.dll</HintPath>
       <Private>False</Private>
     </Reference>
     <Reference Include="HeuristicLab.Problems.Instances-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.Problems.Instances-3.3.dll</HintPath>
       <Private>False</Private>
     </Reference>
@@ -96,9 +128,9 @@
   <ItemGroup>
     <None Include="Plugin.cs.frame" />
-    <Compile Include="CreateExperimentDialogV2.cs">
-      <SubType>Form</SubType>
-    </Compile>
-    <Compile Include="CreateExperimentDialogV2.Designer.cs">
-      <DependentUpon>CreateExperimentDialogV2.cs</DependentUpon>
+    <Compile Include="CreateExperimentView.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Include="CreateExperimentView.Designer.cs">
+      <DependentUpon>CreateExperimentView.cs</DependentUpon>
     </Compile>
     <Compile Include="MenuItems\CreateExperimentMenuItemV2.cs" />
@@ -145,5 +177,5 @@
   <ItemGroup>
     <ProjectReference Include="..\..\HeuristicLab.Encodings.ParameterConfigurationEncoding\3.3\HeuristicLab.Encodings.ParameterConfigurationEncoding-3.3.csproj">
-      <Project>{7520D3F4-7526-4BB7-B71E-F41F5D5559F9}</Project>
+      <Project>{7520d3f4-7526-4bb7-b71e-f41f5d5559f9}</Project>
       <Name>HeuristicLab.Encodings.ParameterConfigurationEncoding-3.3</Name>
       <Private>False</Private>
Index: /branches/ParameterConfigurationEncoding/HeuristicLab.Encodings.ParameterConfigurationEncoding.Views/3.3/MenuItems/CreateExperimentMenuItemV2.cs
===================================================================
--- /branches/ParameterConfigurationEncoding/HeuristicLab.Encodings.ParameterConfigurationEncoding.Views/3.3/MenuItems/CreateExperimentMenuItemV2.cs	(revision 15170)
+++ /branches/ParameterConfigurationEncoding/HeuristicLab.Encodings.ParameterConfigurationEncoding.Views/3.3/MenuItems/CreateExperimentMenuItemV2.cs	(revision 15171)
@@ -23,14 +23,12 @@
 using System.Collections.Generic;
 using System.Windows.Forms;
-using HeuristicLab.Core;
 using HeuristicLab.MainForm;
 using HeuristicLab.Optimization;
 using HeuristicLab.Optimizer;
-using HeuristicLab.PluginInfrastructure;
 
 namespace HeuristicLab.Encodings.ParameterConfigurationEncoding.Views {
   public class CreateExperimentMenuItemV2 : HeuristicLab.MainForm.WindowsForms.MenuItem, IOptimizerUserInterfaceItemProvider {
     public override string Name {
-      get { return "Create Experiment (v2)"; }
+      get { return "Create E&xperiment (v2)"; }
     }
     public override IEnumerable<string> Structure {
@@ -49,13 +47,15 @@
     protected override void OnActiveViewChanged(object sender, EventArgs e) {
       IContentView activeView = MainFormManager.MainForm.ActiveView as IContentView;
-      ToolStripItem.Enabled = (activeView != null) && (activeView.Content != null) && (activeView.Content is IAlgorithm) && !activeView.Locked;
+      ToolStripItem.Enabled = (activeView != null) && (activeView.Content as IAlgorithm != null) && !activeView.Locked;
     }
 
     public override void Execute() {
-      IContentView activeView = MainFormManager.MainForm.ActiveView as IContentView;
-      if ((activeView != null) && (activeView.Content != null) && (activeView.Content is IAlgorithm) && !activeView.Locked) {
-        using (CreateExperimentDialogV2 dialog = new CreateExperimentDialogV2((IAlgorithm)activeView.Content, ApplicationManager.Manager.GetInstances<IEngine>())) {
-          if (dialog.ShowDialog() == DialogResult.OK) MainFormManager.MainForm.ShowContent(dialog.Experiment);
-        }
+      var activeView = MainFormManager.MainForm.ActiveView as IContentView;
+      if (activeView == null) return;
+      var algorithm = activeView.Content as IAlgorithm;
+      if (algorithm == null) return;
+
+      if (!activeView.Locked) {
+        MainFormManager.MainForm.ShowContent(algorithm, typeof(CreateExperimentView));
       }
     }
Index: /branches/ParameterConfigurationEncoding/HeuristicLab.Encodings.ParameterConfigurationEncoding.Views/3.3/Plugin.cs.frame
===================================================================
--- /branches/ParameterConfigurationEncoding/HeuristicLab.Encodings.ParameterConfigurationEncoding.Views/3.3/Plugin.cs.frame	(revision 15170)
+++ /branches/ParameterConfigurationEncoding/HeuristicLab.Encodings.ParameterConfigurationEncoding.Views/3.3/Plugin.cs.frame	(revision 15171)
@@ -28,5 +28,4 @@
   [Plugin("HeuristicLab.Encodings.ParameterConfigurationEncoding.Views", "3.3.7.$WCREV$")]
   [PluginFile("HeuristicLab.Encodings.ParameterConfigurationEncoding.Views-3.3.dll", PluginFileType.Assembly)]
-  [PluginDependency("HeuristicLab.Collections", "3.3")]
   [PluginDependency("HeuristicLab.Common", "3.3")]
   [PluginDependency("HeuristicLab.Common.Resources", "3.3")]
@@ -39,8 +38,5 @@
   [PluginDependency("HeuristicLab.MainForm.WindowsForms", "3.3")]
   [PluginDependency("HeuristicLab.Optimization", "3.3")]
-  [PluginDependency("HeuristicLab.Optimization.Views", "3.3")]
   [PluginDependency("HeuristicLab.Optimizer", "3.3")]
-  [PluginDependency("HeuristicLab.Parameters", "3.3")]
-  [PluginDependency("HeuristicLab.Parameters.Views", "3.3")]
   [PluginDependency("HeuristicLab.Problems.Instances", "3.3")]
   public class HeuristicLabEncodingsParameterConfigurationEncodingViewsPlugin : PluginBase {
Index: /branches/ParameterConfigurationEncoding/HeuristicLab.Encodings.ParameterConfigurationEncoding/3.3/ExperimentFactory.cs
===================================================================
--- /branches/ParameterConfigurationEncoding/HeuristicLab.Encodings.ParameterConfigurationEncoding/3.3/ExperimentFactory.cs	(revision 15170)
+++ /branches/ParameterConfigurationEncoding/HeuristicLab.Encodings.ParameterConfigurationEncoding/3.3/ExperimentFactory.cs	(revision 15171)
@@ -22,4 +22,5 @@
 using System;
 using System.Collections.Generic;
+using System.Linq;
 using System.Threading;
 using HeuristicLab.Optimization;
@@ -32,8 +33,6 @@
       get { return experimentGenerationProgress; }
       private set {
-        if (experimentGenerationProgress != value) {
-          experimentGenerationProgress = value;
-          OnExperimentGenerationProgressChanged();
-        }
+        experimentGenerationProgress = value;
+        OnExperimentGenerationProgressChanged();
       }
     }
@@ -47,13 +46,18 @@
     public Experiment GenerateExperiment(IAlgorithm algorithm, ParameterConfigurationTree configuration, bool createBatchRuns, int repetitions, Dictionary<IProblemInstanceProvider, HashSet<IDataDescriptor>> problemInstances, CancellationToken ct) {
       var experiment = new Experiment();
-      var algorithms = new List<IAlgorithm>(1 + problemInstances.Values.Count) { (IAlgorithm)algorithm.Clone() };
-      foreach (var provider in problemInstances) {
-        foreach (var descriptor in provider.Value) {
-          var alg = (IAlgorithm)algorithm.Clone();
-          ProblemInstanceManager.LoadData(provider.Key, descriptor, (IProblemInstanceConsumer)alg.Problem);
-          algorithms.Add(alg);
+      var algorithms = new List<IAlgorithm>();
+
+      if (problemInstances.Values.Sum(x => x.Count) > 0) {
+        foreach (var provider in problemInstances) {
+          foreach (var descriptor in provider.Value) {
+            var alg = (IAlgorithm)algorithm.Clone();
+            ProblemInstanceManager.LoadData(provider.Key, descriptor, (IProblemInstanceConsumer)alg.Problem);
+            algorithms.Add(alg);
+          }
         }
-      }
+      } else algorithms.Add((IAlgorithm)algorithm.Clone());
+
       ExperimentGenerationProgress = 0;
+
       foreach (var alg in algorithms) {
         foreach (ParameterizedValueConfiguration combination in configuration) {
@@ -74,4 +78,5 @@
         }
       }
+
       return experiment;
     }
Index: /branches/ParameterConfigurationEncoding/HeuristicLab.Encodings.ParameterConfigurationEncoding/3.3/HeuristicLab.Encodings.ParameterConfigurationEncoding-3.3.csproj
===================================================================
--- /branches/ParameterConfigurationEncoding/HeuristicLab.Encodings.ParameterConfigurationEncoding/3.3/HeuristicLab.Encodings.ParameterConfigurationEncoding-3.3.csproj	(revision 15170)
+++ /branches/ParameterConfigurationEncoding/HeuristicLab.Encodings.ParameterConfigurationEncoding/3.3/HeuristicLab.Encodings.ParameterConfigurationEncoding-3.3.csproj	(revision 15171)
@@ -11,5 +11,5 @@
     <RootNamespace>HeuristicLab.Encodings.ParameterConfigurationEncoding</RootNamespace>
     <AssemblyName>HeuristicLab.Encodings.ParameterConfigurationEncoding-3.3</AssemblyName>
-    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
+    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
     <FileAlignment>512</FileAlignment>
   </PropertyGroup>
@@ -39,55 +39,89 @@
   </PropertyGroup>
   <ItemGroup>
-    <Reference Include="HeuristicLab.Collections-3.3">
+    <Reference Include="HeuristicLab.Collections-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
       <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.Collections-3.3.dll</HintPath>
       <Private>False</Private>
     </Reference>
-    <Reference Include="HeuristicLab.Common-3.3">
+    <Reference Include="HeuristicLab.Common-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
       <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.Common-3.3.dll</HintPath>
       <Private>False</Private>
     </Reference>
     <Reference Include="HeuristicLab.Common.Resources-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
-      <Private>False</Private>
-    </Reference>
-    <Reference Include="HeuristicLab.Core-3.3">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.Common.Resources-3.3.dll</HintPath>
+      <Private>False</Private>
+    </Reference>
+    <Reference Include="HeuristicLab.Core-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
       <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.Core-3.3.dll</HintPath>
       <Private>False</Private>
     </Reference>
-    <Reference Include="HeuristicLab.Data-3.3">
+    <Reference Include="HeuristicLab.Data-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
       <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.Data-3.3.dll</HintPath>
       <Private>False</Private>
     </Reference>
-    <Reference Include="HeuristicLab.Encodings.IntegerVectorEncoding-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL" />
-    <Reference Include="HeuristicLab.Encodings.RealVectorEncoding-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL" />
-    <Reference Include="HeuristicLab.Encodings.SymbolicExpressionTreeEncoding-3.4">
+    <Reference Include="HeuristicLab.Encodings.IntegerVectorEncoding-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.Encodings.IntegerVectorEncoding-3.3.dll</HintPath>
+      <Private>False</Private>
+    </Reference>
+    <Reference Include="HeuristicLab.Encodings.RealVectorEncoding-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.Encodings.RealVectorEncoding-3.3.dll</HintPath>
+      <Private>False</Private>
+    </Reference>
+    <Reference Include="HeuristicLab.Encodings.SymbolicExpressionTreeEncoding-3.4, Version=3.4.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
       <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.Encodings.SymbolicExpressionTreeEncoding-3.4.dll</HintPath>
       <Private>False</Private>
     </Reference>
-    <Reference Include="HeuristicLab.Operators-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL" />
-    <Reference Include="HeuristicLab.Optimization-3.3">
+    <Reference Include="HeuristicLab.Operators-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.Operators-3.3.dll</HintPath>
+      <Private>False</Private>
+    </Reference>
+    <Reference Include="HeuristicLab.Optimization-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
       <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.Optimization-3.3.dll</HintPath>
       <Private>False</Private>
     </Reference>
-    <Reference Include="HeuristicLab.Parameters-3.3">
+    <Reference Include="HeuristicLab.Parameters-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
       <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.Parameters-3.3.dll</HintPath>
       <Private>False</Private>
     </Reference>
-    <Reference Include="HeuristicLab.Persistence-3.3">
+    <Reference Include="HeuristicLab.Persistence-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
       <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.Persistence-3.3.dll</HintPath>
       <Private>False</Private>
     </Reference>
-    <Reference Include="HeuristicLab.PluginInfrastructure-3.3">
+    <Reference Include="HeuristicLab.PluginInfrastructure-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
       <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.PluginInfrastructure-3.3.dll</HintPath>
       <Private>False</Private>
     </Reference>
-    <Reference Include="HeuristicLab.Problems.DataAnalysis-3.4, Version=3.4.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL" />
-    <Reference Include="HeuristicLab.Problems.DataAnalysis.Symbolic-3.4">
+    <Reference Include="HeuristicLab.Problems.DataAnalysis-3.4, Version=3.4.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.Problems.DataAnalysis-3.4.dll</HintPath>
+      <Private>False</Private>
+    </Reference>
+    <Reference Include="HeuristicLab.Problems.DataAnalysis.Symbolic-3.4, Version=3.4.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
       <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.Problems.DataAnalysis.Symbolic-3.4.dll</HintPath>
       <Private>False</Private>
     </Reference>
     <Reference Include="HeuristicLab.Problems.Instances-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
-      <Private>False</Private>
-    </Reference>
-    <Reference Include="HeuristicLab.Random-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL" />
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.Problems.Instances-3.3.dll</HintPath>
+      <Private>False</Private>
+    </Reference>
+    <Reference Include="HeuristicLab.Random-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.Random-3.3.dll</HintPath>
+      <Private>False</Private>
+    </Reference>
     <Reference Include="Microsoft.CSharp" />
     <Reference Include="System" />
Index: /branches/ParameterConfigurationEncoding/HeuristicLab.Encodings.ParameterConfigurationEncoding/3.3/ParameterCombinationsEnumerator.cs
===================================================================
--- /branches/ParameterConfigurationEncoding/HeuristicLab.Encodings.ParameterConfigurationEncoding/3.3/ParameterCombinationsEnumerator.cs	(revision 15170)
+++ /branches/ParameterConfigurationEncoding/HeuristicLab.Encodings.ParameterConfigurationEncoding/3.3/ParameterCombinationsEnumerator.cs	(revision 15171)
@@ -160,5 +160,5 @@
 
     public bool MoveNext() {
-      bool ok = currentEnumerator.Current.MoveNext();
+      bool ok = currentEnumerator.Current != null && currentEnumerator.Current.MoveNext();
       if (!ok) {
         ok = currentEnumerator.MoveNext();
Index: /branches/ParameterConfigurationEncoding/HeuristicLab.Encodings.ParameterConfigurationEncoding/3.3/ParameterConfigurationTree.cs
===================================================================
--- /branches/ParameterConfigurationEncoding/HeuristicLab.Encodings.ParameterConfigurationEncoding/3.3/ParameterConfigurationTree.cs	(revision 15170)
+++ /branches/ParameterConfigurationEncoding/HeuristicLab.Encodings.ParameterConfigurationEncoding/3.3/ParameterConfigurationTree.cs	(revision 15171)
@@ -25,5 +25,4 @@
 using System.Linq;
 using System.Text;
-using System.Threading;
 using HeuristicLab.Common;
 using HeuristicLab.Core;
@@ -31,5 +30,4 @@
 using HeuristicLab.Optimization;
 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
-using HeuristicLab.Problems.Instances;
 
 namespace HeuristicLab.Encodings.ParameterConfigurationEncoding {
@@ -340,17 +338,9 @@
         string algorithmInfo = this.AlgorithmConfiguration.ParameterInfoString;
         string problemInfo = this.ProblemConfiguration.ParameterInfoString;
-        var sb = new StringBuilder();
-        if (!string.IsNullOrEmpty(algorithmInfo)) {
-          sb.Append("Algorithm (");
-          sb.Append(algorithmInfo);
-          sb.Append(")");
-        }
-        if (!string.IsNullOrEmpty(problemInfo)) {
-          if (sb.Length > 0)
-            sb.Append(", ");
-          sb.Append("Problem( ");
-          sb.Append(problemInfo);
-          sb.Append(")");
-        }
+
+        var sb = new StringBuilder(AlgorithmConfiguration.NumberedName);
+        if (!string.IsNullOrEmpty(algorithmInfo)) sb.AppendFormat(" ({0})", algorithmInfo);
+        if (!string.IsNullOrEmpty(problemInfo)) sb.AppendFormat(", {0} ({1})", ProblemConfiguration.NumberedName, problemInfo);
+
         return sb.ToString();
       }
Index: /branches/ParameterConfigurationEncoding/HeuristicLab.Encodings.ParameterConfigurationEncoding/3.3/Plugin.cs.frame
===================================================================
--- /branches/ParameterConfigurationEncoding/HeuristicLab.Encodings.ParameterConfigurationEncoding/3.3/Plugin.cs.frame	(revision 15170)
+++ /branches/ParameterConfigurationEncoding/HeuristicLab.Encodings.ParameterConfigurationEncoding/3.3/Plugin.cs.frame	(revision 15171)
@@ -40,5 +40,4 @@
   [PluginDependency("HeuristicLab.Parameters", "3.3")]
   [PluginDependency("HeuristicLab.Persistence", "3.3")]
-  [PluginDependency("HeuristicLab.Problems.DataAnalysis", "3.4")]
   [PluginDependency("HeuristicLab.Problems.DataAnalysis.Symbolic", "3.4")]
   [PluginDependency("HeuristicLab.Problems.Instances", "3.3")]
