Index: branches/DataAnalysis Refactoring/HeuristicLab.Algorithms.DataAnalysis.Views/3.4/CrossValidationView.Designer.cs
===================================================================
--- branches/DataAnalysis Refactoring/HeuristicLab.Algorithms.DataAnalysis.Views/3.4/CrossValidationView.Designer.cs	(revision 5482)
+++ 	(revision )
@@ -1,618 +1,0 @@
-﻿#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2011 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.Algorithms.DataAnalysis.Views {
-  partial class CrossValidationView {
-    /// <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() {
-      System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(CrossValidationView));
-      this.startButton = new System.Windows.Forms.Button();
-      this.pauseButton = new System.Windows.Forms.Button();
-      this.stopButton = new System.Windows.Forms.Button();
-      this.resetButton = new System.Windows.Forms.Button();
-      this.executionTimeTextBox = new System.Windows.Forms.TextBox();
-      this.executionTimeLabel = new System.Windows.Forms.Label();
-      this.foldsNumericUpDown = new System.Windows.Forms.NumericUpDown();
-      this.foldsLabel = new System.Windows.Forms.Label();
-      this.workersNumericUpDown = new System.Windows.Forms.NumericUpDown();
-      this.workersLabel = new System.Windows.Forms.Label();
-      this.samplesStartLabel = new System.Windows.Forms.Label();
-      this.samplesEndLabel = new System.Windows.Forms.Label();
-      this.samplesEndStringConvertibleValueView = new HeuristicLab.Data.Views.StringConvertibleValueView();
-      this.samplesStartStringConvertibleValueView = new HeuristicLab.Data.Views.StringConvertibleValueView();
-      this.tabControl = new HeuristicLab.MainForm.WindowsForms.DragOverTabControl();
-      this.algorithmTabPage = new System.Windows.Forms.TabPage();
-      this.algorithmNamedItemView = new HeuristicLab.Core.Views.NamedItemView();
-      this.algorithmTabControl = new HeuristicLab.MainForm.WindowsForms.DragOverTabControl();
-      this.algorithmProblemTabPage = new System.Windows.Forms.TabPage();
-      this.openProblemButton = new System.Windows.Forms.Button();
-      this.algorithmProblemViewHost = new HeuristicLab.MainForm.WindowsForms.ViewHost();
-      this.newProblemButton = new System.Windows.Forms.Button();
-      this.algorithmParametersTabPage = new System.Windows.Forms.TabPage();
-      this.algorithmParameterCollectionView = new HeuristicLab.Core.Views.ParameterCollectionView();
-      this.openAlgorithmButton = new System.Windows.Forms.Button();
-      this.newAlgorithmButton = new System.Windows.Forms.Button();
-      this.resultsTabPage = new System.Windows.Forms.TabPage();
-      this.runsTabPage = new System.Windows.Forms.TabPage();
-      this.storeAlgorithmInEachRunCheckBox = new System.Windows.Forms.CheckBox();
-      this.runCollectionView = new HeuristicLab.Optimization.Views.RunCollectionView();
-      this.openFileDialog = new System.Windows.Forms.OpenFileDialog();
-      this.splitContainer = new System.Windows.Forms.SplitContainer();
-      this.resultCollectionView = new HeuristicLab.Optimization.Views.ResultCollectionView();
-      ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).BeginInit();
-      ((System.ComponentModel.ISupportInitialize)(this.foldsNumericUpDown)).BeginInit();
-      ((System.ComponentModel.ISupportInitialize)(this.workersNumericUpDown)).BeginInit();
-      this.tabControl.SuspendLayout();
-      this.algorithmTabPage.SuspendLayout();
-      this.algorithmTabControl.SuspendLayout();
-      this.algorithmProblemTabPage.SuspendLayout();
-      this.algorithmParametersTabPage.SuspendLayout();
-      this.resultsTabPage.SuspendLayout();
-      this.runsTabPage.SuspendLayout();
-      this.splitContainer.Panel1.SuspendLayout();
-      this.splitContainer.Panel2.SuspendLayout();
-      this.splitContainer.SuspendLayout();
-      this.SuspendLayout();
-      // 
-      // nameTextBox
-      // 
-      this.errorProvider.SetIconAlignment(this.nameTextBox, System.Windows.Forms.ErrorIconAlignment.MiddleLeft);
-      this.errorProvider.SetIconPadding(this.nameTextBox, 2);
-      this.nameTextBox.Location = new System.Drawing.Point(80, 0);
-      this.nameTextBox.Size = new System.Drawing.Size(533, 20);
-      // 
-      // descriptionTextBox
-      // 
-      this.descriptionTextBox.Location = new System.Drawing.Point(80, 26);
-      this.descriptionTextBox.Size = new System.Drawing.Size(533, 20);
-      // 
-      // startButton
-      // 
-      this.startButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
-      this.startButton.Image = HeuristicLab.Common.Resources.VSImageLibrary.Play;
-      this.startButton.Location = new System.Drawing.Point(0, 514);
-      this.startButton.Name = "startButton";
-      this.startButton.Size = new System.Drawing.Size(24, 24);
-      this.startButton.TabIndex = 11;
-      this.startButton.UseVisualStyleBackColor = true;
-      this.startButton.Click += new System.EventHandler(this.startButton_Click);
-      // 
-      // pauseButton
-      // 
-      this.pauseButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
-      this.pauseButton.Image = HeuristicLab.Common.Resources.VSImageLibrary.Pause;
-      this.pauseButton.Location = new System.Drawing.Point(30, 514);
-      this.pauseButton.Name = "pauseButton";
-      this.pauseButton.Size = new System.Drawing.Size(24, 24);
-      this.pauseButton.TabIndex = 12;
-      this.pauseButton.UseVisualStyleBackColor = true;
-      this.pauseButton.Click += new System.EventHandler(this.pauseButton_Click);
-      // 
-      // stopButton
-      // 
-      this.stopButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
-      this.stopButton.Image = HeuristicLab.Common.Resources.VSImageLibrary.Stop;
-      this.stopButton.Location = new System.Drawing.Point(60, 514);
-      this.stopButton.Name = "stopButton";
-      this.stopButton.Size = new System.Drawing.Size(24, 24);
-      this.stopButton.TabIndex = 13;
-      this.stopButton.UseVisualStyleBackColor = true;
-      this.stopButton.Click += new System.EventHandler(this.stopButton_Click);
-      // 
-      // resetButton
-      // 
-      this.resetButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
-      this.resetButton.Image = HeuristicLab.Common.Resources.VSImageLibrary.Restart;
-      this.resetButton.Location = new System.Drawing.Point(90, 514);
-      this.resetButton.Name = "resetButton";
-      this.resetButton.Size = new System.Drawing.Size(24, 24);
-      this.resetButton.TabIndex = 14;
-      this.resetButton.UseVisualStyleBackColor = true;
-      this.resetButton.Click += new System.EventHandler(this.resetButton_Click);
-      // 
-      // executionTimeTextBox
-      // 
-      this.executionTimeTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
-      this.executionTimeTextBox.Location = new System.Drawing.Point(478, 517);
-      this.executionTimeTextBox.Name = "executionTimeTextBox";
-      this.executionTimeTextBox.ReadOnly = true;
-      this.executionTimeTextBox.Size = new System.Drawing.Size(137, 20);
-      this.executionTimeTextBox.TabIndex = 16;
-      // 
-      // executionTimeLabel
-      // 
-      this.executionTimeLabel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
-      this.executionTimeLabel.AutoSize = true;
-      this.executionTimeLabel.Location = new System.Drawing.Point(389, 520);
-      this.executionTimeLabel.Name = "executionTimeLabel";
-      this.executionTimeLabel.Size = new System.Drawing.Size(83, 13);
-      this.executionTimeLabel.TabIndex = 15;
-      this.executionTimeLabel.Text = "&Execution Time:";
-      // 
-      // foldsNumericUpDown
-      // 
-      this.foldsNumericUpDown.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
-                  | System.Windows.Forms.AnchorStyles.Right)));
-      this.foldsNumericUpDown.Location = new System.Drawing.Point(55, 26);
-      this.foldsNumericUpDown.Maximum = new decimal(new int[] {
-            50,
-            0,
-            0,
-            0});
-      this.foldsNumericUpDown.Minimum = new decimal(new int[] {
-            2,
-            0,
-            0,
-            0});
-      this.foldsNumericUpDown.Name = "foldsNumericUpDown";
-      this.foldsNumericUpDown.Size = new System.Drawing.Size(248, 20);
-      this.foldsNumericUpDown.TabIndex = 18;
-      this.foldsNumericUpDown.ThousandsSeparator = true;
-      this.foldsNumericUpDown.Value = new decimal(new int[] {
-            2,
-            0,
-            0,
-            0});
-      this.foldsNumericUpDown.ValueChanged += new System.EventHandler(this.foldsNumericUpDown_ValueChanged);
-      this.foldsNumericUpDown.Validated += new System.EventHandler(this.foldsNumericUpDown_Validated);
-      // 
-      // foldsLabel
-      // 
-      this.foldsLabel.AutoSize = true;
-      this.foldsLabel.Location = new System.Drawing.Point(3, 29);
-      this.foldsLabel.Name = "foldsLabel";
-      this.foldsLabel.Size = new System.Drawing.Size(35, 13);
-      this.foldsLabel.TabIndex = 17;
-      this.foldsLabel.Text = "&Folds:";
-      // 
-      // workersNumericUpDown
-      // 
-      this.workersNumericUpDown.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
-                  | System.Windows.Forms.AnchorStyles.Right)));
-      this.workersNumericUpDown.Location = new System.Drawing.Point(55, 0);
-      this.workersNumericUpDown.Maximum = new decimal(new int[] {
-            50,
-            0,
-            0,
-            0});
-      this.workersNumericUpDown.Minimum = new decimal(new int[] {
-            1,
-            0,
-            0,
-            0});
-      this.workersNumericUpDown.Name = "workersNumericUpDown";
-      this.workersNumericUpDown.Size = new System.Drawing.Size(248, 20);
-      this.workersNumericUpDown.TabIndex = 20;
-      this.workersNumericUpDown.ThousandsSeparator = true;
-      this.workersNumericUpDown.Value = new decimal(new int[] {
-            1,
-            0,
-            0,
-            0});
-      this.workersNumericUpDown.ValueChanged += new System.EventHandler(this.workersNumericUpDown_ValueChanged);
-      this.workersNumericUpDown.Validated += new System.EventHandler(this.workersNumericUpDown_Validated);
-      // 
-      // workersLabel
-      // 
-      this.workersLabel.AutoSize = true;
-      this.workersLabel.Location = new System.Drawing.Point(3, 3);
-      this.workersLabel.Name = "workersLabel";
-      this.workersLabel.Size = new System.Drawing.Size(50, 13);
-      this.workersLabel.TabIndex = 19;
-      this.workersLabel.Text = "&Workers:";
-      // 
-      // samplesStartLabel
-      // 
-      this.samplesStartLabel.AutoSize = true;
-      this.samplesStartLabel.Location = new System.Drawing.Point(3, 3);
-      this.samplesStartLabel.Name = "samplesStartLabel";
-      this.samplesStartLabel.Size = new System.Drawing.Size(75, 13);
-      this.samplesStartLabel.TabIndex = 21;
-      this.samplesStartLabel.Text = "&Samples Start:";
-      // 
-      // samplesEndLabel
-      // 
-      this.samplesEndLabel.AutoSize = true;
-      this.samplesEndLabel.Location = new System.Drawing.Point(3, 29);
-      this.samplesEndLabel.Name = "samplesEndLabel";
-      this.samplesEndLabel.Size = new System.Drawing.Size(72, 13);
-      this.samplesEndLabel.TabIndex = 23;
-      this.samplesEndLabel.Text = "&Samples End:";
-      // 
-      // samplesEndStringConvertibleValueView
-      // 
-      this.samplesEndStringConvertibleValueView.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
-                  | System.Windows.Forms.AnchorStyles.Right)));
-      this.samplesEndStringConvertibleValueView.Caption = "StringConvertibleValue View";
-      this.samplesEndStringConvertibleValueView.Content = null;
-      this.samplesEndStringConvertibleValueView.LabelVisible = false;
-      this.samplesEndStringConvertibleValueView.Location = new System.Drawing.Point(80, 26);
-      this.samplesEndStringConvertibleValueView.Name = "samplesEndStringConvertibleValueView";
-      this.samplesEndStringConvertibleValueView.ReadOnly = false;
-      this.samplesEndStringConvertibleValueView.Size = new System.Drawing.Size(223, 20);
-      this.samplesEndStringConvertibleValueView.TabIndex = 24;
-      // 
-      // samplesStartStringConvertibleValueView
-      // 
-      this.samplesStartStringConvertibleValueView.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
-                  | System.Windows.Forms.AnchorStyles.Right)));
-      this.samplesStartStringConvertibleValueView.Caption = "StringConvertibleValue View";
-      this.samplesStartStringConvertibleValueView.Content = null;
-      this.samplesStartStringConvertibleValueView.LabelVisible = false;
-      this.samplesStartStringConvertibleValueView.Location = new System.Drawing.Point(80, 0);
-      this.samplesStartStringConvertibleValueView.Name = "samplesStartStringConvertibleValueView";
-      this.samplesStartStringConvertibleValueView.ReadOnly = false;
-      this.samplesStartStringConvertibleValueView.Size = new System.Drawing.Size(223, 20);
-      this.samplesStartStringConvertibleValueView.TabIndex = 22;
-      // 
-      // tabControl
-      // 
-      this.tabControl.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.tabControl.Controls.Add(this.algorithmTabPage);
-      this.tabControl.Controls.Add(this.resultsTabPage);
-      this.tabControl.Controls.Add(this.runsTabPage);
-      this.tabControl.Location = new System.Drawing.Point(0, 113);
-      this.tabControl.Name = "tabControl";
-      this.tabControl.SelectedIndex = 0;
-      this.tabControl.Size = new System.Drawing.Size(616, 395);
-      this.tabControl.TabIndex = 25;
-      // 
-      // algorithmTabPage
-      // 
-      this.algorithmTabPage.AllowDrop = true;
-      this.algorithmTabPage.Controls.Add(this.algorithmNamedItemView);
-      this.algorithmTabPage.Controls.Add(this.algorithmTabControl);
-      this.algorithmTabPage.Controls.Add(this.openAlgorithmButton);
-      this.algorithmTabPage.Controls.Add(this.newAlgorithmButton);
-      this.algorithmTabPage.Location = new System.Drawing.Point(4, 22);
-      this.algorithmTabPage.Name = "algorithmTabPage";
-      this.algorithmTabPage.Padding = new System.Windows.Forms.Padding(3);
-      this.algorithmTabPage.Size = new System.Drawing.Size(608, 369);
-      this.algorithmTabPage.TabIndex = 0;
-      this.algorithmTabPage.Text = "Algorithm";
-      this.algorithmTabPage.UseVisualStyleBackColor = true;
-      this.algorithmTabPage.DragDrop += new System.Windows.Forms.DragEventHandler(this.algorithmTabPage_DragDrop);
-      this.algorithmTabPage.DragEnter += new System.Windows.Forms.DragEventHandler(this.algorithmTabPage_DragEnterOver);
-      this.algorithmTabPage.DragOver += new System.Windows.Forms.DragEventHandler(this.algorithmTabPage_DragEnterOver);
-      // 
-      // algorithmNamedItemView
-      // 
-      this.algorithmNamedItemView.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
-                  | System.Windows.Forms.AnchorStyles.Right)));
-      this.algorithmNamedItemView.Caption = "NamedItem View";
-      this.algorithmNamedItemView.Content = null;
-      this.algorithmNamedItemView.Location = new System.Drawing.Point(6, 36);
-      this.algorithmNamedItemView.Name = "algorithmNamedItemView";
-      this.algorithmNamedItemView.ReadOnly = false;
-      this.algorithmNamedItemView.Size = new System.Drawing.Size(596, 52);
-      this.algorithmNamedItemView.TabIndex = 29;
-      // 
-      // algorithmTabControl
-      // 
-      this.algorithmTabControl.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.algorithmTabControl.Controls.Add(this.algorithmProblemTabPage);
-      this.algorithmTabControl.Controls.Add(this.algorithmParametersTabPage);
-      this.algorithmTabControl.Location = new System.Drawing.Point(8, 94);
-      this.algorithmTabControl.Name = "algorithmTabControl";
-      this.algorithmTabControl.SelectedIndex = 0;
-      this.algorithmTabControl.Size = new System.Drawing.Size(594, 269);
-      this.algorithmTabControl.TabIndex = 28;
-      // 
-      // algorithmProblemTabPage
-      // 
-      this.algorithmProblemTabPage.AllowDrop = true;
-      this.algorithmProblemTabPage.Controls.Add(this.openProblemButton);
-      this.algorithmProblemTabPage.Controls.Add(this.algorithmProblemViewHost);
-      this.algorithmProblemTabPage.Controls.Add(this.newProblemButton);
-      this.algorithmProblemTabPage.Location = new System.Drawing.Point(4, 22);
-      this.algorithmProblemTabPage.Name = "algorithmProblemTabPage";
-      this.algorithmProblemTabPage.Padding = new System.Windows.Forms.Padding(3);
-      this.algorithmProblemTabPage.Size = new System.Drawing.Size(586, 243);
-      this.algorithmProblemTabPage.TabIndex = 0;
-      this.algorithmProblemTabPage.Text = "Problem";
-      this.algorithmProblemTabPage.UseVisualStyleBackColor = true;
-      this.algorithmProblemTabPage.DragDrop += new System.Windows.Forms.DragEventHandler(this.algorithmProblemTabPage_DragDrop);
-      this.algorithmProblemTabPage.DragEnter += new System.Windows.Forms.DragEventHandler(this.algorithmProblemTabPage_DragEnterOver);
-      this.algorithmProblemTabPage.DragOver += new System.Windows.Forms.DragEventHandler(this.algorithmProblemTabPage_DragEnterOver);
-      // 
-      // openProblemButton
-      // 
-      this.openProblemButton.Image = HeuristicLab.Common.Resources.VSImageLibrary.Open;
-      this.openProblemButton.Location = new System.Drawing.Point(36, 6);
-      this.openProblemButton.Name = "openProblemButton";
-      this.openProblemButton.Size = new System.Drawing.Size(24, 24);
-      this.openProblemButton.TabIndex = 31;
-      this.toolTip.SetToolTip(this.openProblemButton, "Open Problem");
-      this.openProblemButton.UseVisualStyleBackColor = true;
-      this.openProblemButton.Click += new System.EventHandler(this.openProblemButton_Click);
-      // 
-      // algorithmProblemViewHost
-      // 
-      this.algorithmProblemViewHost.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.algorithmProblemViewHost.Caption = "View";
-      this.algorithmProblemViewHost.Content = null;
-      this.algorithmProblemViewHost.Enabled = false;
-      this.algorithmProblemViewHost.Location = new System.Drawing.Point(6, 36);
-      this.algorithmProblemViewHost.Name = "algorithmProblemViewHost";
-      this.algorithmProblemViewHost.ReadOnly = false;
-      this.algorithmProblemViewHost.Size = new System.Drawing.Size(574, 201);
-      this.algorithmProblemViewHost.TabIndex = 0;
-      this.algorithmProblemViewHost.ViewType = null;
-      // 
-      // newProblemButton
-      // 
-      this.newProblemButton.Image = HeuristicLab.Common.Resources.VSImageLibrary.NewDocument;
-      this.newProblemButton.Location = new System.Drawing.Point(6, 6);
-      this.newProblemButton.Name = "newProblemButton";
-      this.newProblemButton.Size = new System.Drawing.Size(24, 24);
-      this.newProblemButton.TabIndex = 30;
-      this.toolTip.SetToolTip(this.newProblemButton, "NewProblem");
-      this.newProblemButton.UseVisualStyleBackColor = true;
-      this.newProblemButton.Click += new System.EventHandler(this.newProblemButton_Click);
-      // 
-      // algorithmParametersTabPage
-      // 
-      this.algorithmParametersTabPage.Controls.Add(this.algorithmParameterCollectionView);
-      this.algorithmParametersTabPage.Location = new System.Drawing.Point(4, 22);
-      this.algorithmParametersTabPage.Name = "algorithmParametersTabPage";
-      this.algorithmParametersTabPage.Padding = new System.Windows.Forms.Padding(3);
-      this.algorithmParametersTabPage.Size = new System.Drawing.Size(586, 243);
-      this.algorithmParametersTabPage.TabIndex = 1;
-      this.algorithmParametersTabPage.Text = "Parameters";
-      this.algorithmParametersTabPage.UseVisualStyleBackColor = true;
-      // 
-      // algorithmParameterCollectionView
-      // 
-      this.algorithmParameterCollectionView.Caption = "ParameterCollection View";
-      this.algorithmParameterCollectionView.Content = null;
-      this.algorithmParameterCollectionView.Dock = System.Windows.Forms.DockStyle.Fill;
-      this.algorithmParameterCollectionView.Location = new System.Drawing.Point(3, 3);
-      this.algorithmParameterCollectionView.Name = "algorithmParameterCollectionView";
-      this.algorithmParameterCollectionView.ReadOnly = false;
-      this.algorithmParameterCollectionView.Size = new System.Drawing.Size(580, 237);
-      this.algorithmParameterCollectionView.TabIndex = 0;
-      // 
-      // openAlgorithmButton
-      // 
-      this.openAlgorithmButton.Image = HeuristicLab.Common.Resources.VSImageLibrary.Open;
-      this.openAlgorithmButton.Location = new System.Drawing.Point(38, 6);
-      this.openAlgorithmButton.Name = "openAlgorithmButton";
-      this.openAlgorithmButton.Size = new System.Drawing.Size(24, 24);
-      this.openAlgorithmButton.TabIndex = 27;
-      this.toolTip.SetToolTip(this.openAlgorithmButton, "Open Algorithm");
-      this.openAlgorithmButton.UseVisualStyleBackColor = true;
-      this.openAlgorithmButton.Click += new System.EventHandler(this.openAlgorithmButton_Click);
-      // 
-      // newAlgorithmButton
-      // 
-      this.newAlgorithmButton.Image = HeuristicLab.Common.Resources.VSImageLibrary.NewDocument;
-      this.newAlgorithmButton.Location = new System.Drawing.Point(8, 6);
-      this.newAlgorithmButton.Name = "newAlgorithmButton";
-      this.newAlgorithmButton.Size = new System.Drawing.Size(24, 24);
-      this.newAlgorithmButton.TabIndex = 26;
-      this.toolTip.SetToolTip(this.newAlgorithmButton, "New Algorithm");
-      this.newAlgorithmButton.UseVisualStyleBackColor = true;
-      this.newAlgorithmButton.Click += new System.EventHandler(this.newAlgorithmButton_Click);
-      // 
-      // resultsTabPage
-      // 
-      this.resultsTabPage.Controls.Add(this.resultCollectionView);
-      this.resultsTabPage.Location = new System.Drawing.Point(4, 22);
-      this.resultsTabPage.Name = "resultsTabPage";
-      this.resultsTabPage.Padding = new System.Windows.Forms.Padding(3);
-      this.resultsTabPage.Size = new System.Drawing.Size(608, 369);
-      this.resultsTabPage.TabIndex = 1;
-      this.resultsTabPage.Text = "Results";
-      this.resultsTabPage.UseVisualStyleBackColor = true;
-      // 
-      // runsTabPage
-      // 
-      this.runsTabPage.Controls.Add(this.storeAlgorithmInEachRunCheckBox);
-      this.runsTabPage.Controls.Add(this.runCollectionView);
-      this.runsTabPage.Location = new System.Drawing.Point(4, 22);
-      this.runsTabPage.Name = "runsTabPage";
-      this.runsTabPage.Padding = new System.Windows.Forms.Padding(3);
-      this.runsTabPage.Size = new System.Drawing.Size(608, 369);
-      this.runsTabPage.TabIndex = 2;
-      this.runsTabPage.Text = "Runs";
-      this.runsTabPage.UseVisualStyleBackColor = true;
-      // 
-      // storeAlgorithmInEachRunCheckBox
-      // 
-      this.storeAlgorithmInEachRunCheckBox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
-      this.storeAlgorithmInEachRunCheckBox.AutoSize = true;
-      this.storeAlgorithmInEachRunCheckBox.CheckAlign = System.Drawing.ContentAlignment.MiddleRight;
-      this.storeAlgorithmInEachRunCheckBox.Checked = true;
-      this.storeAlgorithmInEachRunCheckBox.CheckState = System.Windows.Forms.CheckState.Checked;
-      this.storeAlgorithmInEachRunCheckBox.Location = new System.Drawing.Point(440, 4);
-      this.storeAlgorithmInEachRunCheckBox.Name = "storeAlgorithmInEachRunCheckBox";
-      this.storeAlgorithmInEachRunCheckBox.Size = new System.Drawing.Size(161, 17);
-      this.storeAlgorithmInEachRunCheckBox.TabIndex = 2;
-      this.storeAlgorithmInEachRunCheckBox.Text = "&Store Algorithm in each Run:";
-      this.toolTip.SetToolTip(this.storeAlgorithmInEachRunCheckBox, "Check to store a copy of the algorithm in each run.");
-      this.storeAlgorithmInEachRunCheckBox.UseVisualStyleBackColor = true;
-      this.storeAlgorithmInEachRunCheckBox.CheckedChanged += new System.EventHandler(this.storeAlgorithmInEachRunCheckBox_CheckedChanged);
-      // 
-      // runCollectionView
-      // 
-      this.runCollectionView.Caption = "RunCollection View";
-      this.runCollectionView.Content = null;
-      this.runCollectionView.Dock = System.Windows.Forms.DockStyle.Fill;
-      this.runCollectionView.Location = new System.Drawing.Point(3, 3);
-      this.runCollectionView.Name = "runCollectionView";
-      this.runCollectionView.ReadOnly = false;
-      this.runCollectionView.Size = new System.Drawing.Size(602, 363);
-      this.runCollectionView.TabIndex = 3;
-      // 
-      // openFileDialog
-      // 
-      this.openFileDialog.DefaultExt = "hl";
-      this.openFileDialog.FileName = "Algorithm";
-      this.openFileDialog.Filter = "HeuristicLab Files|*.hl|All Files|*.*";
-      this.openFileDialog.Title = "Open Algorithm";
-      // 
-      // splitContainer
-      // 
-      this.splitContainer.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
-                  | System.Windows.Forms.AnchorStyles.Right)));
-      this.splitContainer.Location = new System.Drawing.Point(0, 52);
-      this.splitContainer.Name = "splitContainer";
-      // 
-      // splitContainer.Panel1
-      // 
-      this.splitContainer.Panel1.Controls.Add(this.samplesEndStringConvertibleValueView);
-      this.splitContainer.Panel1.Controls.Add(this.samplesStartStringConvertibleValueView);
-      this.splitContainer.Panel1.Controls.Add(this.samplesStartLabel);
-      this.splitContainer.Panel1.Controls.Add(this.samplesEndLabel);
-      // 
-      // splitContainer.Panel2
-      // 
-      this.splitContainer.Panel2.Controls.Add(this.foldsNumericUpDown);
-      this.splitContainer.Panel2.Controls.Add(this.foldsLabel);
-      this.splitContainer.Panel2.Controls.Add(this.workersLabel);
-      this.splitContainer.Panel2.Controls.Add(this.workersNumericUpDown);
-      this.splitContainer.Size = new System.Drawing.Size(616, 55);
-      this.splitContainer.SplitterDistance = 306;
-      this.splitContainer.TabIndex = 26;
-      // 
-      // resultCollectionView
-      // 
-      this.resultCollectionView.Caption = "ResultCollection View";
-      this.resultCollectionView.Content = null;
-      this.resultCollectionView.Dock = System.Windows.Forms.DockStyle.Fill;
-      this.resultCollectionView.Location = new System.Drawing.Point(3, 3);
-      this.resultCollectionView.Name = "resultCollectionView";
-      this.resultCollectionView.ReadOnly = true;
-      this.resultCollectionView.Size = new System.Drawing.Size(602, 363);
-      this.resultCollectionView.TabIndex = 0;
-      // 
-      // CrossValidationView
-      // 
-      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
-      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
-      this.Controls.Add(this.tabControl);
-      this.Controls.Add(this.executionTimeTextBox);
-      this.Controls.Add(this.executionTimeLabel);
-      this.Controls.Add(this.startButton);
-      this.Controls.Add(this.pauseButton);
-      this.Controls.Add(this.stopButton);
-      this.Controls.Add(this.resetButton);
-      this.Controls.Add(this.splitContainer);
-      this.Name = "CrossValidationView";
-      this.Size = new System.Drawing.Size(616, 538);
-      this.Controls.SetChildIndex(this.splitContainer, 0);
-      this.Controls.SetChildIndex(this.resetButton, 0);
-      this.Controls.SetChildIndex(this.stopButton, 0);
-      this.Controls.SetChildIndex(this.pauseButton, 0);
-      this.Controls.SetChildIndex(this.startButton, 0);
-      this.Controls.SetChildIndex(this.executionTimeLabel, 0);
-      this.Controls.SetChildIndex(this.executionTimeTextBox, 0);
-      this.Controls.SetChildIndex(this.tabControl, 0);
-      this.Controls.SetChildIndex(this.nameLabel, 0);
-      this.Controls.SetChildIndex(this.descriptionLabel, 0);
-      this.Controls.SetChildIndex(this.nameTextBox, 0);
-      this.Controls.SetChildIndex(this.descriptionTextBox, 0);
-      ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).EndInit();
-      ((System.ComponentModel.ISupportInitialize)(this.foldsNumericUpDown)).EndInit();
-      ((System.ComponentModel.ISupportInitialize)(this.workersNumericUpDown)).EndInit();
-      this.tabControl.ResumeLayout(false);
-      this.algorithmTabPage.ResumeLayout(false);
-      this.algorithmTabControl.ResumeLayout(false);
-      this.algorithmProblemTabPage.ResumeLayout(false);
-      this.algorithmParametersTabPage.ResumeLayout(false);
-      this.resultsTabPage.ResumeLayout(false);
-      this.runsTabPage.ResumeLayout(false);
-      this.runsTabPage.PerformLayout();
-      this.splitContainer.Panel1.ResumeLayout(false);
-      this.splitContainer.Panel1.PerformLayout();
-      this.splitContainer.Panel2.ResumeLayout(false);
-      this.splitContainer.Panel2.PerformLayout();
-      this.splitContainer.ResumeLayout(false);
-      this.ResumeLayout(false);
-      this.PerformLayout();
-
-    }
-
-    #endregion
-
-    private System.Windows.Forms.Button startButton;
-    private System.Windows.Forms.Button pauseButton;
-    private System.Windows.Forms.Button stopButton;
-    private System.Windows.Forms.Button resetButton;
-    private System.Windows.Forms.TextBox executionTimeTextBox;
-    private System.Windows.Forms.Label executionTimeLabel;
-    private System.Windows.Forms.NumericUpDown foldsNumericUpDown;
-    private System.Windows.Forms.Label foldsLabel;
-    private System.Windows.Forms.NumericUpDown workersNumericUpDown;
-    private System.Windows.Forms.Label workersLabel;
-    private System.Windows.Forms.Label samplesStartLabel;
-    private Data.Views.StringConvertibleValueView samplesStartStringConvertibleValueView;
-    private Data.Views.StringConvertibleValueView samplesEndStringConvertibleValueView;
-    private System.Windows.Forms.Label samplesEndLabel;
-    private HeuristicLab.MainForm.WindowsForms.DragOverTabControl tabControl;
-    private System.Windows.Forms.TabPage algorithmTabPage;
-    private System.Windows.Forms.TabPage resultsTabPage;
-    private System.Windows.Forms.Button openAlgorithmButton;
-    private System.Windows.Forms.Button newAlgorithmButton;
-    private Core.Views.NamedItemView algorithmNamedItemView;
-    private HeuristicLab.MainForm.WindowsForms.DragOverTabControl algorithmTabControl;
-    private System.Windows.Forms.TabPage algorithmProblemTabPage;
-    private System.Windows.Forms.TabPage algorithmParametersTabPage;
-    private MainForm.WindowsForms.ViewHost algorithmProblemViewHost;
-    private System.Windows.Forms.Button openProblemButton;
-    private System.Windows.Forms.Button newProblemButton;
-    private Core.Views.ParameterCollectionView algorithmParameterCollectionView;
-    private System.Windows.Forms.OpenFileDialog openFileDialog;
-    private System.Windows.Forms.TabPage runsTabPage;
-    private Optimization.Views.RunCollectionView runCollectionView;
-    private System.Windows.Forms.CheckBox storeAlgorithmInEachRunCheckBox;
-    private System.Windows.Forms.SplitContainer splitContainer;
-    private Optimization.Views.ResultCollectionView resultCollectionView;
-  }
-}
Index: branches/DataAnalysis Refactoring/HeuristicLab.Algorithms.DataAnalysis.Views/3.4/CrossValidationView.cs
===================================================================
--- branches/DataAnalysis Refactoring/HeuristicLab.Algorithms.DataAnalysis.Views/3.4/CrossValidationView.cs	(revision 5482)
+++ 	(revision )
@@ -1,366 +1,0 @@
-﻿#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2011 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.Linq;
-using System.Windows.Forms;
-using HeuristicLab.Common;
-using HeuristicLab.Core;
-using HeuristicLab.Core.Views;
-using HeuristicLab.MainForm;
-using HeuristicLab.Optimization;
-using HeuristicLab.PluginInfrastructure;
-using HeuristicLab.Problems.DataAnalysis;
-
-namespace HeuristicLab.Algorithms.DataAnalysis.Views {
-  [View("Cross Validation View")]
-  [Content(typeof(CrossValidation), true)]
-  public sealed partial class CrossValidationView : NamedItemView {
-    private TypeSelectorDialog algorithmTypeSelectorDialog;
-    private TypeSelectorDialog problemTypeSelectorDialog;
-
-    public CrossValidationView() {
-      InitializeComponent();
-      workersNumericUpDown.Maximum = Environment.ProcessorCount * 2;
-    }
-
-    public new CrossValidation Content {
-      get { return (CrossValidation)base.Content; }
-      set { base.Content = value; }
-    }
-
-    protected override void OnContentChanged() {
-      base.OnContentChanged();
-      if (Content == null) {
-        workersNumericUpDown.Value = 1;
-        foldsNumericUpDown.Value = 2;
-        samplesStartStringConvertibleValueView.Content = null;
-        samplesEndStringConvertibleValueView.Content = null;
-        algorithmNamedItemView.Content = null;
-        algorithmProblemViewHost.Content = null;
-        algorithmParameterCollectionView.Content = null;
-        resultCollectionView.Content = null;
-        runCollectionView.Content = null;
-        storeAlgorithmInEachRunCheckBox.Checked = true;
-      } else {
-        Locked = ReadOnly = Content.ExecutionState == ExecutionState.Started;
-        workersNumericUpDown.Value = Content.NumberOfWorkers.Value;
-        foldsNumericUpDown.Value = Content.Folds.Value;
-        samplesStartStringConvertibleValueView.Content = Content.SamplesStart;
-        samplesEndStringConvertibleValueView.Content = Content.SamplesEnd;
-        UpdateAlgorithmView();
-        UpdateProblemView();
-        runCollectionView.Content = Content.Runs;
-        algorithmParameterCollectionView.Content = ((IParameterizedNamedItem)Content).Parameters;
-        resultCollectionView.Content = Content.Results;
-        executionTimeTextBox.Text = Content.ExecutionTime.ToString();
-        storeAlgorithmInEachRunCheckBox.Checked = Content.StoreAlgorithmInEachRun;
-      }
-    }
-
-    protected override void RegisterContentEvents() {
-      base.RegisterContentEvents();
-      Content.AlgorithmChanged += new EventHandler(Content_AlgorithmChanged);
-      Content.ProblemChanged += new EventHandler(Content_ProblemChanged);
-      Content.Folds.ValueChanged += new EventHandler(Content_Folds_ValueChanged);
-      Content.NumberOfWorkers.ValueChanged += new EventHandler(Content_NumberOfWorker_ValueChanged);
-
-      Content.ExceptionOccurred += new EventHandler<EventArgs<Exception>>(Content_ExceptionOccurred);
-      Content.ExecutionStateChanged += new EventHandler(Content_ExecutionStateChanged);
-      Content.ExecutionTimeChanged += new EventHandler(Content_ExecutionTimeChanged);
-      Content.StoreAlgorithmInEachRunChanged += new EventHandler(Content_StoreAlgorithmInEachRunChanged);
-    }
-
-    protected override void DeregisterContentEvents() {
-      Content.AlgorithmChanged -= new EventHandler(Content_AlgorithmChanged);
-      Content.ProblemChanged -= new EventHandler(Content_ProblemChanged);
-      Content.Folds.ValueChanged -= new EventHandler(Content_Folds_ValueChanged);
-      Content.NumberOfWorkers.ValueChanged -= new EventHandler(Content_NumberOfWorker_ValueChanged);
-
-      Content.ExceptionOccurred -= new EventHandler<EventArgs<Exception>>(Content_ExceptionOccurred);
-      Content.ExecutionStateChanged -= new EventHandler(Content_ExecutionStateChanged);
-      Content.ExecutionTimeChanged -= new EventHandler(Content_ExecutionTimeChanged);
-      Content.StoreAlgorithmInEachRunChanged -= new EventHandler(Content_StoreAlgorithmInEachRunChanged);
-      base.DeregisterContentEvents();
-    }
-
-    protected override void OnClosed(FormClosedEventArgs e) {
-      if ((Content != null) && (Content.ExecutionState == ExecutionState.Started)) {
-        //The content must be stopped if no other view showing the content is available
-        var optimizers = MainFormManager.MainForm.Views.OfType<IContentView>().Where(v => v != this).Select(v => v.Content).OfType<IOptimizer>();
-        if (!optimizers.Contains(Content)) {
-          var nestedOptimizers = optimizers.SelectMany(opt => opt.NestedOptimizers);
-          if (!nestedOptimizers.Contains(Content)) Content.Stop();
-        }
-      }
-      base.OnClosed(e);
-    }
-
-    protected override void SetEnabledStateOfControls() {
-      if (InvokeRequired) Invoke((Action)SetEnabledStateOfControls);
-      else {
-        base.SetEnabledStateOfControls();
-        this.Enabled = Content != null;
-
-        if (Content != null) {
-          storeAlgorithmInEachRunCheckBox.Enabled = !ReadOnly;
-
-          algorithmNamedItemView.Enabled = Content.Algorithm != null && (Content.ExecutionState == ExecutionState.Prepared || Content.ExecutionState == ExecutionState.Stopped);
-          algorithmTabControl.Enabled = Content.Algorithm != null && (Content.ExecutionState == ExecutionState.Prepared || Content.ExecutionState == ExecutionState.Stopped);
-          foldsNumericUpDown.Enabled = Content.ExecutionState == ExecutionState.Prepared;
-          samplesStartStringConvertibleValueView.Enabled = Content.ExecutionState == ExecutionState.Prepared;
-          samplesEndStringConvertibleValueView.Enabled = Content.ExecutionState == ExecutionState.Prepared;
-          workersNumericUpDown.Enabled = (Content.ExecutionState == ExecutionState.Prepared) || (Content.ExecutionState == ExecutionState.Paused);
-
-          startButton.Enabled = (Content.ExecutionState == ExecutionState.Prepared) || (Content.ExecutionState == ExecutionState.Paused);
-          pauseButton.Enabled = Content.ExecutionState == ExecutionState.Started;
-          stopButton.Enabled = (Content.ExecutionState == ExecutionState.Started) || (Content.ExecutionState == ExecutionState.Paused);
-          resetButton.Enabled = Content.ExecutionState != ExecutionState.Started;
-        }
-      }
-    }
-
-    #region Content Events
-    private void Content_AlgorithmChanged(object sender, EventArgs e) {
-      UpdateAlgorithmView();
-      UpdateProblemView();
-      SetEnabledStateOfControls();
-    }
-    private void UpdateAlgorithmView() {
-      algorithmNamedItemView.Content = Content.Algorithm;
-      UpdateProblemView();
-    }
-
-    private void Content_ProblemChanged(object sender, EventArgs e) {
-      UpdateProblemView();
-      SetEnabledStateOfControls();
-    }
-    private void UpdateProblemView() {
-      algorithmProblemViewHost.Content = Content.Problem;
-    }
-
-    private void Content_Folds_ValueChanged(object sender, EventArgs e) {
-      foldsNumericUpDown.Value = Content.Folds.Value;
-    }
-    private void Content_NumberOfWorker_ValueChanged(object sender, EventArgs e) {
-      workersNumericUpDown.Value = Content.NumberOfWorkers.Value;
-    }
-
-    private void Content_ExecutionStateChanged(object sender, EventArgs e) {
-      if (InvokeRequired)
-        Invoke(new EventHandler(Content_ExecutionStateChanged), sender, e);
-      else {
-        Locked = ReadOnly = Content.ExecutionState == ExecutionState.Started;
-        SetEnabledStateOfControls();
-      }
-    }
-
-    private void Content_ExecutionTimeChanged(object sender, EventArgs e) {
-      if (InvokeRequired)
-        Invoke(new EventHandler(Content_ExecutionTimeChanged), sender, e);
-      else
-        executionTimeTextBox.Text = Content == null ? "-" : Content.ExecutionTime.ToString();
-    }
-    private void Content_ExceptionOccurred(object sender, EventArgs<Exception> e) {
-      if (InvokeRequired)
-        Invoke(new EventHandler<EventArgs<Exception>>(Content_ExceptionOccurred), sender, e);
-      else
-        ErrorHandling.ShowErrorDialog(this, e.Value);
-    }
-    private void Content_StoreAlgorithmInEachRunChanged(object sender, EventArgs e) {
-      if (InvokeRequired)
-        Invoke(new EventHandler(Content_StoreAlgorithmInEachRunChanged), sender, e);
-      else
-        storeAlgorithmInEachRunCheckBox.Checked = Content.StoreAlgorithmInEachRun;
-    }
-    #endregion
-
-    #region GUI events
-    private void foldsNumericUpDown_Validated(object sender, EventArgs e) {
-      if (foldsNumericUpDown.Text == string.Empty)
-        foldsNumericUpDown.Text = foldsNumericUpDown.Value.ToString();
-    }
-    private void foldsNumericUpDown_ValueChanged(object sender, EventArgs e) {
-      if (Content != null)
-        Content.Folds.Value = (int)foldsNumericUpDown.Value;
-    }
-
-    private void workersNumericUpDown_Validated(object sender, EventArgs e) {
-      if (workersNumericUpDown.Text == string.Empty)
-        workersNumericUpDown.Text = workersNumericUpDown.Value.ToString();
-    }
-    private void workersNumericUpDown_ValueChanged(object sender, EventArgs e) {
-      if (Content != null)
-        Content.NumberOfWorkers.Value = (int)workersNumericUpDown.Value;
-    }
-
-    private void startButton_Click(object sender, EventArgs e) {
-      Content.Start();
-    }
-    private void pauseButton_Click(object sender, EventArgs e) {
-      Content.Pause();
-    }
-    private void stopButton_Click(object sender, EventArgs e) {
-      Content.Stop();
-    }
-    private void resetButton_Click(object sender, EventArgs e) {
-      Content.Prepare(false);
-    }
-
-    private void newAlgorithmButton_Click(object sender, EventArgs e) {
-      if (algorithmTypeSelectorDialog == null) {
-        algorithmTypeSelectorDialog = new TypeSelectorDialog();
-        algorithmTypeSelectorDialog.Caption = "Select Algorithm";
-        algorithmTypeSelectorDialog.TypeSelector.Caption = "Available Algorithms";
-        algorithmTypeSelectorDialog.TypeSelector.Configure(typeof(IAlgorithm), false, true);
-      }
-      if (algorithmTypeSelectorDialog.ShowDialog(this) == DialogResult.OK) {
-        try {
-          Content.Algorithm = (IAlgorithm)algorithmTypeSelectorDialog.TypeSelector.CreateInstanceOfSelectedType();
-        }
-        catch (Exception ex) {
-          ErrorHandling.ShowErrorDialog(this, ex);
-        }
-      }
-    }
-
-    private void openAlgorithmButton_Click(object sender, EventArgs e) {
-      openFileDialog.Title = "Open Algorithm";
-      if (openFileDialog.ShowDialog(this) == DialogResult.OK) {
-        algorithmTabControl.Enabled = false;
-
-        ContentManager.LoadAsync(openFileDialog.FileName, delegate(IStorableContent content, Exception error) {
-          try {
-            if (error != null) throw error;
-            IAlgorithm algorithm = content as IAlgorithm;
-            if (algorithm == null || !(algorithm.Problem is IDataAnalysisProblem))
-              MessageBox.Show(this, "The selected file does not contain an algorithm or the problem of the algorithm is not a DataAnalysisProblem.", "Invalid File", MessageBoxButtons.OK, MessageBoxIcon.Error);
-            else
-              Content.Algorithm = algorithm;
-          }
-          catch (Exception ex) {
-            ErrorHandling.ShowErrorDialog(this, ex);
-          }
-          finally {
-            Invoke(new Action(delegate() {
-              algorithmTabControl.Enabled = true;
-            }));
-          }
-        });
-      }
-    }
-
-    private void newProblemButton_Click(object sender, EventArgs e) {
-      if (problemTypeSelectorDialog == null) {
-        problemTypeSelectorDialog = new TypeSelectorDialog();
-        problemTypeSelectorDialog.Caption = "Select Problem";
-        problemTypeSelectorDialog.TypeSelector.Caption = "Available Problems";
-        problemTypeSelectorDialog.TypeSelector.Configure(Content.ProblemType, false, true);
-      }
-      if (problemTypeSelectorDialog.ShowDialog(this) == DialogResult.OK) {
-        try {
-          Content.Problem = (ISingleObjectiveDataAnalysisProblem)problemTypeSelectorDialog.TypeSelector.CreateInstanceOfSelectedType();
-        }
-        catch (Exception ex) {
-          ErrorHandling.ShowErrorDialog(this, ex);
-        }
-      }
-    }
-
-    private void openProblemButton_Click(object sender, EventArgs e) {
-      openFileDialog.Title = "Open Problem";
-      if (openFileDialog.ShowDialog(this) == DialogResult.OK) {
-        newProblemButton.Enabled = openProblemButton.Enabled = false;
-        algorithmProblemViewHost.Enabled = false;
-
-        ContentManager.LoadAsync(openFileDialog.FileName, delegate(IStorableContent content, Exception error) {
-          try {
-            if (error != null) throw error;
-            ISingleObjectiveDataAnalysisProblem problem = content as ISingleObjectiveDataAnalysisProblem;
-            if (problem == null && (Content.Algorithm.ProblemType.IsAssignableFrom(content.GetType())))
-              Invoke(new Action(() =>
-                MessageBox.Show(this, "The selected file does not contain a DataAnalysisProblem problem.", "Invalid File", MessageBoxButtons.OK, MessageBoxIcon.Error)));
-            else
-              Content.Problem = problem;
-          }
-          catch (Exception ex) {
-            Invoke(new Action(() => ErrorHandling.ShowErrorDialog(this, ex)));
-          }
-          finally {
-            Invoke(new Action(delegate() {
-              algorithmProblemViewHost.Enabled = true;
-              newProblemButton.Enabled = openProblemButton.Enabled = true;
-            }));
-          }
-        });
-      }
-    }
-
-    private void algorithmTabPage_DragEnterOver(object sender, DragEventArgs e) {
-      e.Effect = DragDropEffects.None;
-      if (ReadOnly) return;
-      Type type = e.Data.GetData("Type") as Type;
-      IAlgorithm algorithm = e.Data.GetData("Value") as IAlgorithm;
-      if ((type != null) && (typeof(IAlgorithm).IsAssignableFrom(type)) &&
-        algorithm != null && Content.ProblemType.IsAssignableFrom(algorithm.Problem.GetType())) {
-        if ((e.KeyState & 32) == 32) e.Effect = DragDropEffects.Link;  // ALT key
-        else if ((e.KeyState & 4) == 4) e.Effect = DragDropEffects.Move;  // SHIFT key
-        else if ((e.AllowedEffect & DragDropEffects.Copy) == DragDropEffects.Copy) e.Effect = DragDropEffects.Copy;
-        else if ((e.AllowedEffect & DragDropEffects.Move) == DragDropEffects.Move) e.Effect = DragDropEffects.Move;
-        else if ((e.AllowedEffect & DragDropEffects.Link) == DragDropEffects.Link) e.Effect = DragDropEffects.Link;
-      }
-    }
-    private void algorithmTabPage_DragDrop(object sender, DragEventArgs e) {
-      if (e.Effect != DragDropEffects.None) {
-        IAlgorithm algorithm = e.Data.GetData("Value") as IAlgorithm;
-        if ((e.Effect & DragDropEffects.Copy) == DragDropEffects.Copy) algorithm = (IAlgorithm)algorithm.Clone();
-        Content.Algorithm = algorithm;
-      }
-    }
-
-    private void algorithmProblemTabPage_DragEnterOver(object sender, DragEventArgs e) {
-      e.Effect = DragDropEffects.None;
-      if (ReadOnly) return;
-      Type type = e.Data.GetData("Type") as Type;
-      if ((type != null) && (Content.ProblemType.IsAssignableFrom(type)) &&
-        (Content.Algorithm.ProblemType.IsAssignableFrom(type))) {
-        if ((e.KeyState & 32) == 32) e.Effect = DragDropEffects.Link;  // ALT key
-        else if ((e.KeyState & 4) == 4) e.Effect = DragDropEffects.Move;  // SHIFT key
-        else if ((e.AllowedEffect & DragDropEffects.Copy) == DragDropEffects.Copy) e.Effect = DragDropEffects.Copy;
-        else if ((e.AllowedEffect & DragDropEffects.Move) == DragDropEffects.Move) e.Effect = DragDropEffects.Move;
-        else if ((e.AllowedEffect & DragDropEffects.Link) == DragDropEffects.Link) e.Effect = DragDropEffects.Link;
-      }
-    }
-    private void algorithmProblemTabPage_DragDrop(object sender, DragEventArgs e) {
-      if (e.Effect != DragDropEffects.None) {
-        ISingleObjectiveDataAnalysisProblem problem = e.Data.GetData("Value") as ISingleObjectiveDataAnalysisProblem;
-        if ((e.Effect & DragDropEffects.Copy) == DragDropEffects.Copy) problem = (ISingleObjectiveDataAnalysisProblem)problem.Clone();
-        Content.Problem = problem;
-      }
-    }
-
-    private void storeAlgorithmInEachRunCheckBox_CheckedChanged(object sender, EventArgs e) {
-      if (Content != null) Content.StoreAlgorithmInEachRun = storeAlgorithmInEachRunCheckBox.Checked;
-    }
-    #endregion
-
-  }
-}
Index: branches/DataAnalysis Refactoring/HeuristicLab.Algorithms.DataAnalysis.Views/3.4/HeuristicLab.Algorithms.DataAnalysis.Views-3.4.csproj
===================================================================
--- branches/DataAnalysis Refactoring/HeuristicLab.Algorithms.DataAnalysis.Views/3.4/HeuristicLab.Algorithms.DataAnalysis.Views-3.4.csproj	(revision 5482)
+++ branches/DataAnalysis Refactoring/HeuristicLab.Algorithms.DataAnalysis.Views/3.4/HeuristicLab.Algorithms.DataAnalysis.Views-3.4.csproj	(revision 5484)
@@ -114,10 +114,4 @@
   </ItemGroup>
   <ItemGroup>
-    <Compile Include="CrossValidationView.cs">
-      <SubType>UserControl</SubType>
-    </Compile>
-    <Compile Include="CrossValidationView.Designer.cs">
-      <DependentUpon>CrossValidationView.cs</DependentUpon>
-    </Compile>
     <Compile Include="HeuristicLabAlgorithmsDataAnalysisViewsPlugin.cs" />
     <Compile Include="Properties\AssemblyInfo.cs" />
@@ -129,7 +123,7 @@
   </ItemGroup>
   <ItemGroup>
-    <ProjectReference Include="..\..\HeuristicLab.Algorithms.DataAnalysis\3.3\HeuristicLab.Algorithms.DataAnalysis-3.3.csproj">
-      <Project>{A8D5676D-9662-437A-B44D-ECB4046CDE12}</Project>
-      <Name>HeuristicLab.Algorithms.DataAnalysis-3.3</Name>
+    <ProjectReference Include="..\..\HeuristicLab.Algorithms.DataAnalysis\3.4\HeuristicLab.Algorithms.DataAnalysis-3.4.csproj">
+      <Project>{2E782078-FA81-4B70-B56F-74CE38DAC6C8}</Project>
+      <Name>HeuristicLab.Algorithms.DataAnalysis-3.4</Name>
     </ProjectReference>
     <ProjectReference Include="..\..\HeuristicLab.Collections\3.3\HeuristicLab.Collections-3.3.csproj">
@@ -181,7 +175,7 @@
       <Name>HeuristicLab.PluginInfrastructure-3.3</Name>
     </ProjectReference>
-    <ProjectReference Include="..\..\HeuristicLab.Problems.DataAnalysis\3.3\HeuristicLab.Problems.DataAnalysis-3.3.csproj">
-      <Project>{70DFD984-B1D9-46FE-8EB7-4DE92D71A9FC}</Project>
-      <Name>HeuristicLab.Problems.DataAnalysis-3.3</Name>
+    <ProjectReference Include="..\..\HeuristicLab.Problems.DataAnalysis\3.4\HeuristicLab.Problems.DataAnalysis-3.4.csproj">
+      <Project>{DF87C13E-A889-46FF-8153-66DCAA8C5674}</Project>
+      <Name>HeuristicLab.Problems.DataAnalysis-3.4</Name>
     </ProjectReference>
   </ItemGroup>
Index: branches/DataAnalysis Refactoring/HeuristicLab.Algorithms.DataAnalysis/3.4/CrossValidation.cs
===================================================================
--- branches/DataAnalysis Refactoring/HeuristicLab.Algorithms.DataAnalysis/3.4/CrossValidation.cs	(revision 5482)
+++ 	(revision )
@@ -1,616 +1,0 @@
-﻿#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2011 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.Drawing;
-using System.Linq;
-using HeuristicLab.Collections;
-using HeuristicLab.Common;
-using HeuristicLab.Core;
-using HeuristicLab.Data;
-using HeuristicLab.Optimization;
-using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
-using HeuristicLab.Problems.DataAnalysis;
-
-namespace HeuristicLab.Algorithms.DataAnalysis {
-  [Item("Cross Validation", "Cross Validation wrapper for data analysis algorithms.")]
-  [Creatable("Data Analysis")]
-  [StorableClass]
-  public sealed class CrossValidation : ParameterizedNamedItem, IAlgorithm, IStorableContent {
-    public CrossValidation()
-      : base() {
-      name = ItemName;
-      description = ItemDescription;
-
-      executionState = ExecutionState.Stopped;
-      runs = new RunCollection();
-      runsCounter = 0;
-
-      algorithm = null;
-      clonedAlgorithms = new ItemCollection<IAlgorithm>();
-      results = new ResultCollection();
-
-      folds = new IntValue(2);
-      numberOfWorkers = new IntValue(1);
-      samplesStart = new IntValue(0);
-      samplesEnd = new IntValue(0);
-      storeAlgorithmInEachRun = false;
-
-      RegisterEvents();
-      if (Algorithm != null) RegisterAlgorithmEvents();
-    }
-
-    public string Filename { get; set; }
-
-    #region persistence and cloning
-    [StorableConstructor]
-    private CrossValidation(bool deserializing)
-      : base(deserializing) {
-    }
-    [StorableHook(HookType.AfterDeserialization)]
-    private void AfterDeserialization() {
-      RegisterEvents();
-      if (Algorithm != null) RegisterAlgorithmEvents();
-    }
-
-    private CrossValidation(CrossValidation original, Cloner cloner)
-      : base(original, cloner) {
-      executionState = original.executionState;
-      storeAlgorithmInEachRun = original.storeAlgorithmInEachRun;
-      runs = cloner.Clone(original.runs);
-      runsCounter = original.runsCounter;
-      algorithm = cloner.Clone(original.algorithm);
-      clonedAlgorithms = cloner.Clone(original.clonedAlgorithms);
-      results = cloner.Clone(original.results);
-
-      folds = cloner.Clone(original.folds);
-      numberOfWorkers = cloner.Clone(original.numberOfWorkers);
-      samplesStart = cloner.Clone(original.samplesStart);
-      samplesEnd = cloner.Clone(original.samplesEnd);
-      RegisterEvents();
-      if (Algorithm != null) RegisterAlgorithmEvents();
-    }
-    public override IDeepCloneable Clone(Cloner cloner) {
-      return new CrossValidation(this, cloner);
-    }
-
-    #endregion
-
-    #region properties
-    [Storable]
-    private IAlgorithm algorithm;
-    public IAlgorithm Algorithm {
-      get { return algorithm; }
-      set {
-        if (ExecutionState != ExecutionState.Prepared && ExecutionState != ExecutionState.Stopped)
-          throw new InvalidOperationException("Changing the algorithm is only allowed if the CrossValidation is stopped or prepared.");
-        if (algorithm != value) {
-          if (value != null && value.Problem != null && !(value.Problem is IDataAnalysisProblem))
-            throw new ArgumentException("Only algorithms with a DataAnalysisProblem could be used for the cross validation.");
-          if (algorithm != null) DeregisterAlgorithmEvents();
-          algorithm = value;
-          Parameters.Clear();
-
-          if (algorithm != null) {
-            algorithm.StoreAlgorithmInEachRun = false;
-            RegisterAlgorithmEvents();
-            algorithm.Prepare(true);
-            Parameters.AddRange(algorithm.Parameters);
-          }
-          OnAlgorithmChanged();
-          if (algorithm != null) OnProblemChanged();
-          Prepare();
-        }
-      }
-    }
-
-
-    [Storable]
-    private ISingleObjectiveDataAnalysisProblem problem;
-    public ISingleObjectiveDataAnalysisProblem Problem {
-      get {
-        if (algorithm == null)
-          return null;
-        return (ISingleObjectiveDataAnalysisProblem)algorithm.Problem;
-      }
-      set {
-        if (ExecutionState != ExecutionState.Prepared && ExecutionState != ExecutionState.Stopped)
-          throw new InvalidOperationException("Changing the problem is only allowed if the CrossValidation is stopped or prepared.");
-        if (algorithm == null) throw new ArgumentNullException("Could not set a problem before an algorithm was set.");
-        algorithm.Problem = value;
-        problem = value;
-      }
-    }
-
-    IProblem IAlgorithm.Problem {
-      get { return Problem; }
-      set {
-        if (value != null && !ProblemType.IsInstanceOfType(value))
-          throw new ArgumentException("Only DataAnalysisProblems could be used for the cross validation.");
-        Problem = (ISingleObjectiveDataAnalysisProblem)value;
-      }
-    }
-    public Type ProblemType {
-      get { return typeof(ISingleObjectiveDataAnalysisProblem); }
-    }
-
-    [Storable]
-    private ItemCollection<IAlgorithm> clonedAlgorithms;
-
-    public IEnumerable<IOptimizer> NestedOptimizers {
-      get {
-        if (Algorithm == null) yield break;
-        yield return Algorithm;
-      }
-    }
-
-    [Storable]
-    private ResultCollection results;
-    public ResultCollection Results {
-      get { return results; }
-    }
-
-    [Storable]
-    private IntValue folds;
-    public IntValue Folds {
-      get { return folds; }
-    }
-    [Storable]
-    private IntValue samplesStart;
-    public IntValue SamplesStart {
-      get { return samplesStart; }
-    }
-    [Storable]
-    private IntValue samplesEnd;
-    public IntValue SamplesEnd {
-      get { return samplesEnd; }
-    }
-    [Storable]
-    private IntValue numberOfWorkers;
-    public IntValue NumberOfWorkers {
-      get { return numberOfWorkers; }
-    }
-
-    [Storable]
-    private bool storeAlgorithmInEachRun;
-    public bool StoreAlgorithmInEachRun {
-      get { return storeAlgorithmInEachRun; }
-      set {
-        if (storeAlgorithmInEachRun != value) {
-          storeAlgorithmInEachRun = value;
-          OnStoreAlgorithmInEachRunChanged();
-        }
-      }
-    }
-
-    [Storable]
-    private int runsCounter;
-    [Storable]
-    private RunCollection runs;
-    public RunCollection Runs {
-      get { return runs; }
-    }
-
-    [Storable]
-    private ExecutionState executionState;
-    public ExecutionState ExecutionState {
-      get { return executionState; }
-      private set {
-        if (executionState != value) {
-          executionState = value;
-          OnExecutionStateChanged();
-          OnItemImageChanged();
-        }
-      }
-    }
-    public override Image ItemImage {
-      get {
-        if (ExecutionState == ExecutionState.Prepared) return HeuristicLab.Common.Resources.VSImageLibrary.ExecutablePrepared;
-        else if (ExecutionState == ExecutionState.Started) return HeuristicLab.Common.Resources.VSImageLibrary.ExecutableStarted;
-        else if (ExecutionState == ExecutionState.Paused) return HeuristicLab.Common.Resources.VSImageLibrary.ExecutablePaused;
-        else if (ExecutionState == ExecutionState.Stopped) return HeuristicLab.Common.Resources.VSImageLibrary.ExecutableStopped;
-        else return HeuristicLab.Common.Resources.VSImageLibrary.Event;
-      }
-    }
-
-    public TimeSpan ExecutionTime {
-      get {
-        if (ExecutionState != ExecutionState.Prepared)
-          return TimeSpan.FromMilliseconds(clonedAlgorithms.Select(x => x.ExecutionTime.TotalMilliseconds).Sum());
-        return TimeSpan.Zero;
-      }
-    }
-    #endregion
-
-    public void Prepare() {
-      if (ExecutionState == ExecutionState.Started)
-        throw new InvalidOperationException(string.Format("Prepare not allowed in execution state \"{0}\".", ExecutionState));
-      results.Clear();
-      clonedAlgorithms.Clear();
-      if (Algorithm != null) {
-        Algorithm.Prepare();
-        if (Algorithm.ExecutionState == ExecutionState.Prepared) OnPrepared();
-      }
-    }
-    public void Prepare(bool clearRuns) {
-      if (clearRuns) runs.Clear();
-      Prepare();
-    }
-
-    private bool startPending;
-    public void Start() {
-      if ((ExecutionState != ExecutionState.Prepared) && (ExecutionState != ExecutionState.Paused))
-        throw new InvalidOperationException(string.Format("Start not allowed in execution state \"{0}\".", ExecutionState));
-
-      if (Algorithm != null && !startPending) {
-        startPending = true;
-        //create cloned algorithms
-        if (clonedAlgorithms.Count == 0) {
-          int testSamplesCount = (SamplesEnd.Value - SamplesStart.Value) / Folds.Value;
-          for (int i = 0; i < Folds.Value; i++) {
-            IAlgorithm clonedAlgorithm = (IAlgorithm)algorithm.Clone();
-            clonedAlgorithm.Name = algorithm.Name + " Fold " + i;
-            IDataAnalysisProblem problem = clonedAlgorithm.Problem as IDataAnalysisProblem;
-            problem.DataAnalysisProblemData.TestSamplesEnd.Value = (i + 1) == Folds.Value ? SamplesEnd.Value : (i + 1) * testSamplesCount + SamplesStart.Value;
-            problem.DataAnalysisProblemData.TestSamplesStart.Value = (i * testSamplesCount) + SamplesStart.Value;
-            clonedAlgorithms.Add(clonedAlgorithm);
-          }
-        }
-
-        //start prepared or paused cloned algorithms
-        int startedAlgorithms = 0;
-        foreach (IAlgorithm clonedAlgorithm in clonedAlgorithms) {
-          if (startedAlgorithms < NumberOfWorkers.Value) {
-            if (clonedAlgorithm.ExecutionState == ExecutionState.Prepared ||
-                clonedAlgorithm.ExecutionState == ExecutionState.Paused) {
-              clonedAlgorithm.Start();
-              startedAlgorithms++;
-            }
-          }
-        }
-        OnStarted();
-      }
-    }
-
-    private bool pausePending;
-    public void Pause() {
-      if (ExecutionState != ExecutionState.Started)
-        throw new InvalidOperationException(string.Format("Pause not allowed in execution state \"{0}\".", ExecutionState));
-      if (!pausePending) {
-        pausePending = true;
-        if (!startPending) PauseAllClonedAlgorithms();
-      }
-    }
-    private void PauseAllClonedAlgorithms() {
-      foreach (IAlgorithm clonedAlgorithm in clonedAlgorithms) {
-        if (clonedAlgorithm.ExecutionState == ExecutionState.Started)
-          clonedAlgorithm.Pause();
-      }
-    }
-
-    private bool stopPending;
-    public void Stop() {
-      if ((ExecutionState != ExecutionState.Started) && (ExecutionState != ExecutionState.Paused))
-        throw new InvalidOperationException(string.Format("Stop not allowed in execution state \"{0}\".",
-                                                          ExecutionState));
-      if (!stopPending) {
-        stopPending = true;
-        if (!startPending) StopAllClonedAlgorithms();
-      }
-    }
-    private void StopAllClonedAlgorithms() {
-      foreach (IAlgorithm clonedAlgorithm in clonedAlgorithms) {
-        if (clonedAlgorithm.ExecutionState == ExecutionState.Started ||
-            clonedAlgorithm.ExecutionState == ExecutionState.Paused)
-          clonedAlgorithm.Stop();
-      }
-    }
-
-    #region collect parameters and results
-    public override void CollectParameterValues(IDictionary<string, IItem> values) {
-      values.Add("Algorithm Name", new StringValue(Name));
-      values.Add("Algorithm Type", new StringValue(GetType().GetPrettyName()));
-      values.Add("Folds", new IntValue(Folds.Value));
-
-      if (algorithm != null) {
-        values.Add("CrossValidation Algorithm Name", new StringValue(Algorithm.Name));
-        values.Add("CrossValidation Algorithm Type", new StringValue(Algorithm.GetType().GetPrettyName()));
-        base.CollectParameterValues(values);
-      }
-      if (Problem != null) {
-        values.Add("Problem Name", new StringValue(Problem.Name));
-        values.Add("Problem Type", new StringValue(Problem.GetType().GetPrettyName()));
-        Problem.CollectParameterValues(values);
-      }
-    }
-
-    public void CollectResultValues(IDictionary<string, IItem> results) {
-      Dictionary<string, List<double>> resultValues = new Dictionary<string, List<double>>();
-      IEnumerable<IRun> runs = clonedAlgorithms.Select(alg => alg.Runs.FirstOrDefault()).Where(run => run != null);
-      IEnumerable<KeyValuePair<string, IItem>> resultCollections = runs.Where(x => x != null).SelectMany(x => x.Results).ToList();
-
-      foreach (IResult result in ExtractAndAggregateResults<IntValue>(resultCollections))
-        results.Add(result.Name, result.Value);
-      foreach (IResult result in ExtractAndAggregateResults<DoubleValue>(resultCollections))
-        results.Add(result.Name, result.Value);
-      foreach (IResult result in ExtractAndAggregateResults<PercentValue>(resultCollections))
-        results.Add(result.Name, result.Value);
-
-      results.Add("Execution Time", new TimeSpanValue(this.ExecutionTime));
-      results.Add("CrossValidation Folds", new RunCollection(runs));
-    }
-
-    private static IEnumerable<IResult> ExtractAndAggregateResults<T>(IEnumerable<KeyValuePair<string, IItem>> results)
-  where T : class, IItem, new() {
-      Dictionary<string, List<double>> resultValues = new Dictionary<string, List<double>>();
-      foreach (var resultValue in results.Where(r => r.Value.GetType() == typeof(T))) {
-        if (!resultValues.ContainsKey(resultValue.Key))
-          resultValues[resultValue.Key] = new List<double>();
-        resultValues[resultValue.Key].Add(ConvertToDouble(resultValue.Value));
-      }
-
-      DoubleValue doubleValue;
-      if (typeof(T) == typeof(PercentValue))
-        doubleValue = new PercentValue();
-      else if (typeof(T) == typeof(DoubleValue))
-        doubleValue = new DoubleValue();
-      else if (typeof(T) == typeof(IntValue))
-        doubleValue = new DoubleValue();
-      else
-        throw new NotSupportedException();
-
-      List<IResult> aggregatedResults = new List<IResult>();
-      foreach (KeyValuePair<string, List<double>> resultValue in resultValues) {
-        doubleValue.Value = resultValue.Value.Average();
-        aggregatedResults.Add(new Result(resultValue.Key, (IItem)doubleValue.Clone()));
-        doubleValue.Value = resultValue.Value.StandardDeviation();
-        aggregatedResults.Add(new Result(resultValue.Key + " StdDev", (IItem)doubleValue.Clone()));
-      }
-      return aggregatedResults;
-    }
-
-    private static double ConvertToDouble(IItem item) {
-      if (item is DoubleValue) return ((DoubleValue)item).Value;
-      else if (item is IntValue) return ((IntValue)item).Value;
-      else throw new NotSupportedException("Could not convert any item type to double");
-    }
-    #endregion
-
-    #region events
-    private void RegisterEvents() {
-      Folds.ValueChanged += new EventHandler(Folds_ValueChanged);
-      SamplesStart.ValueChanged += new EventHandler(SamplesStart_ValueChanged);
-      SamplesEnd.ValueChanged += new EventHandler(SamplesEnd_ValueChanged);
-      RegisterClonedAlgorithmsEvents();
-    }
-    private void Folds_ValueChanged(object sender, EventArgs e) {
-      if (ExecutionState != ExecutionState.Prepared)
-        throw new InvalidOperationException("Can not change number of folds if the execution state is not prepared.");
-    }
-    private void SamplesStart_ValueChanged(object sender, EventArgs e) {
-      if (Problem != null) Problem.DataAnalysisProblemData.TrainingSamplesStart.Value = SamplesStart.Value;
-    }
-    private void SamplesEnd_ValueChanged(object sender, EventArgs e) {
-      if (Problem != null) Problem.DataAnalysisProblemData.TrainingSamplesEnd.Value = SamplesEnd.Value;
-    }
-
-    #region template algorithms events
-    public event EventHandler AlgorithmChanged;
-    private void OnAlgorithmChanged() {
-      EventHandler handler = AlgorithmChanged;
-      if (handler != null) handler(this, EventArgs.Empty);
-      OnProblemChanged();
-      if (Problem == null) ExecutionState = ExecutionState.Stopped;
-    }
-    private void RegisterAlgorithmEvents() {
-      algorithm.ProblemChanged += new EventHandler(Algorithm_ProblemChanged);
-      algorithm.ExecutionStateChanged += new EventHandler(Algorithm_ExecutionStateChanged);
-    }
-    private void DeregisterAlgorithmEvents() {
-      algorithm.ProblemChanged -= new EventHandler(Algorithm_ProblemChanged);
-      algorithm.ExecutionStateChanged -= new EventHandler(Algorithm_ExecutionStateChanged);
-    }
-    private void Algorithm_ProblemChanged(object sender, EventArgs e) {
-      if (algorithm.Problem != null && !(algorithm.Problem is ISingleObjectiveDataAnalysisProblem)) {
-        algorithm.Problem = problem;
-        throw new ArgumentException("A cross validation algorithm can only contain DataAnalysisProblems.");
-      }
-      problem = (ISingleObjectiveDataAnalysisProblem)algorithm.Problem;
-      OnProblemChanged();
-    }
-    public event EventHandler ProblemChanged;
-    private void OnProblemChanged() {
-      EventHandler handler = ProblemChanged;
-      if (handler != null) handler(this, EventArgs.Empty);
-
-      SamplesStart.Value = 0;
-      if (Problem != null)
-        SamplesEnd.Value = Problem.DataAnalysisProblemData.Dataset.Rows;
-      else
-        SamplesEnd.Value = 0;
-    }
-
-    private void Algorithm_ExecutionStateChanged(object sender, EventArgs e) {
-      switch (Algorithm.ExecutionState) {
-        case ExecutionState.Prepared: OnPrepared();
-          break;
-        case ExecutionState.Started: throw new InvalidOperationException("Algorithm template can not be started.");
-        case ExecutionState.Paused: throw new InvalidOperationException("Algorithm template can not be paused.");
-        case ExecutionState.Stopped: OnStopped();
-          break;
-      }
-    }
-    #endregion
-
-    #region clonedAlgorithms events
-    private void RegisterClonedAlgorithmsEvents() {
-      clonedAlgorithms.ItemsAdded += new CollectionItemsChangedEventHandler<IAlgorithm>(ClonedAlgorithms_ItemsAdded);
-      clonedAlgorithms.ItemsRemoved += new CollectionItemsChangedEventHandler<IAlgorithm>(ClonedAlgorithms_ItemsRemoved);
-      clonedAlgorithms.CollectionReset += new CollectionItemsChangedEventHandler<IAlgorithm>(ClonedAlgorithms_CollectionReset);
-      foreach (IAlgorithm algorithm in clonedAlgorithms)
-        RegisterClonedAlgorithmEvents(algorithm);
-    }
-    private void DeregisterClonedAlgorithmsEvents() {
-      clonedAlgorithms.ItemsAdded -= new CollectionItemsChangedEventHandler<IAlgorithm>(ClonedAlgorithms_ItemsAdded);
-      clonedAlgorithms.ItemsRemoved -= new CollectionItemsChangedEventHandler<IAlgorithm>(ClonedAlgorithms_ItemsRemoved);
-      clonedAlgorithms.CollectionReset -= new CollectionItemsChangedEventHandler<IAlgorithm>(ClonedAlgorithms_CollectionReset);
-      foreach (IAlgorithm algorithm in clonedAlgorithms)
-        DeregisterClonedAlgorithmEvents(algorithm);
-    }
-    private void ClonedAlgorithms_ItemsAdded(object sender, CollectionItemsChangedEventArgs<IAlgorithm> e) {
-      foreach (IAlgorithm algorithm in e.Items)
-        RegisterClonedAlgorithmEvents(algorithm);
-    }
-    private void ClonedAlgorithms_ItemsRemoved(object sender, CollectionItemsChangedEventArgs<IAlgorithm> e) {
-      foreach (IAlgorithm algorithm in e.Items)
-        DeregisterClonedAlgorithmEvents(algorithm);
-    }
-    private void ClonedAlgorithms_CollectionReset(object sender, CollectionItemsChangedEventArgs<IAlgorithm> e) {
-      foreach (IAlgorithm algorithm in e.OldItems)
-        DeregisterClonedAlgorithmEvents(algorithm);
-      foreach (IAlgorithm algorithm in e.Items)
-        RegisterClonedAlgorithmEvents(algorithm);
-    }
-    private void RegisterClonedAlgorithmEvents(IAlgorithm algorithm) {
-      algorithm.ExceptionOccurred += new EventHandler<EventArgs<Exception>>(ClonedAlgorithm_ExceptionOccurred);
-      algorithm.ExecutionTimeChanged += new EventHandler(ClonedAlgorithm_ExecutionTimeChanged);
-      algorithm.Started += new EventHandler(ClonedAlgorithm_Started);
-      algorithm.Paused += new EventHandler(ClonedAlgorithm_Paused);
-      algorithm.Stopped += new EventHandler(ClonedAlgorithm_Stopped);
-    }
-    private void DeregisterClonedAlgorithmEvents(IAlgorithm algorithm) {
-      algorithm.ExceptionOccurred -= new EventHandler<EventArgs<Exception>>(ClonedAlgorithm_ExceptionOccurred);
-      algorithm.ExecutionTimeChanged -= new EventHandler(ClonedAlgorithm_ExecutionTimeChanged);
-      algorithm.Started -= new EventHandler(ClonedAlgorithm_Started);
-      algorithm.Paused -= new EventHandler(ClonedAlgorithm_Paused);
-      algorithm.Stopped -= new EventHandler(ClonedAlgorithm_Stopped);
-    }
-    private void ClonedAlgorithm_ExceptionOccurred(object sender, EventArgs<Exception> e) {
-      OnExceptionOccurred(e.Value);
-    }
-    private void ClonedAlgorithm_ExecutionTimeChanged(object sender, EventArgs e) {
-      OnExecutionTimeChanged();
-    }
-
-    private readonly object locker = new object();
-    private void ClonedAlgorithm_Started(object sender, EventArgs e) {
-      lock (locker) {
-        IAlgorithm algorithm = sender as IAlgorithm;
-        if (algorithm != null && !results.ContainsKey(algorithm.Name))
-          results.Add(new Result(algorithm.Name, "Contains results for the specific fold.", algorithm.Results));
-
-        if (startPending) {
-          int startedAlgorithms = clonedAlgorithms.Count(alg => alg.ExecutionState == ExecutionState.Started);
-          if (startedAlgorithms == NumberOfWorkers.Value ||
-             clonedAlgorithms.All(alg => alg.ExecutionState != ExecutionState.Prepared))
-            startPending = false;
-
-          if (pausePending) PauseAllClonedAlgorithms();
-          if (stopPending) StopAllClonedAlgorithms();
-        }
-      }
-    }
-
-    private void ClonedAlgorithm_Paused(object sender, EventArgs e) {
-      lock (locker) {
-        if (pausePending && clonedAlgorithms.All(alg => alg.ExecutionState != ExecutionState.Started))
-          OnPaused();
-      }
-    }
-
-    private void ClonedAlgorithm_Stopped(object sender, EventArgs e) {
-      lock (locker) {
-        if (!stopPending && ExecutionState == ExecutionState.Started) {
-          IAlgorithm preparedAlgorithm = clonedAlgorithms.Where(alg => alg.ExecutionState == ExecutionState.Prepared ||
-                                                                       alg.ExecutionState == ExecutionState.Paused).FirstOrDefault();
-          if (preparedAlgorithm != null) preparedAlgorithm.Start();
-        }
-        if (ExecutionState != ExecutionState.Stopped) {
-          if (clonedAlgorithms.All(alg => alg.ExecutionState == ExecutionState.Stopped))
-            OnStopped();
-          else if (stopPending &&
-                   clonedAlgorithms.All(
-                     alg => alg.ExecutionState == ExecutionState.Prepared || alg.ExecutionState == ExecutionState.Stopped))
-            OnStopped();
-        }
-      }
-    }
-    #endregion
-    #endregion
-
-    #region event firing
-    public event EventHandler ExecutionStateChanged;
-    private void OnExecutionStateChanged() {
-      EventHandler handler = ExecutionStateChanged;
-      if (handler != null) handler(this, EventArgs.Empty);
-    }
-    public event EventHandler ExecutionTimeChanged;
-    private void OnExecutionTimeChanged() {
-      EventHandler handler = ExecutionTimeChanged;
-      if (handler != null) handler(this, EventArgs.Empty);
-    }
-    public event EventHandler Prepared;
-    private void OnPrepared() {
-      ExecutionState = ExecutionState.Prepared;
-      EventHandler handler = Prepared;
-      if (handler != null) handler(this, EventArgs.Empty);
-      OnExecutionTimeChanged();
-    }
-    public event EventHandler Started;
-    private void OnStarted() {
-      startPending = false;
-      ExecutionState = ExecutionState.Started;
-      EventHandler handler = Started;
-      if (handler != null) handler(this, EventArgs.Empty);
-    }
-    public event EventHandler Paused;
-    private void OnPaused() {
-      pausePending = false;
-      ExecutionState = ExecutionState.Paused;
-      EventHandler handler = Paused;
-      if (handler != null) handler(this, EventArgs.Empty);
-    }
-    public event EventHandler Stopped;
-    private void OnStopped() {
-      stopPending = false;
-      Dictionary<string, IItem> collectedResults = new Dictionary<string, IItem>();
-      CollectResultValues(collectedResults);
-      results.AddRange(collectedResults.Select(x => new Result(x.Key, x.Value)).Cast<IResult>().ToArray());
-      runsCounter++;
-      runs.Add(new Run(string.Format("{0} Run {1}", Name, runsCounter), this));
-      ExecutionState = ExecutionState.Stopped;
-      EventHandler handler = Stopped;
-      if (handler != null) handler(this, EventArgs.Empty);
-    }
-    public event EventHandler<EventArgs<Exception>> ExceptionOccurred;
-    private void OnExceptionOccurred(Exception exception) {
-      EventHandler<EventArgs<Exception>> handler = ExceptionOccurred;
-      if (handler != null) handler(this, new EventArgs<Exception>(exception));
-    }
-    public event EventHandler StoreAlgorithmInEachRunChanged;
-    private void OnStoreAlgorithmInEachRunChanged() {
-      EventHandler handler = StoreAlgorithmInEachRunChanged;
-      if (handler != null) handler(this, EventArgs.Empty);
-    }
-    #endregion
-  }
-}
Index: branches/DataAnalysis Refactoring/HeuristicLab.Algorithms.DataAnalysis/3.4/HeuristicLab.Algorithms.DataAnalysis-3.4.csproj
===================================================================
--- branches/DataAnalysis Refactoring/HeuristicLab.Algorithms.DataAnalysis/3.4/HeuristicLab.Algorithms.DataAnalysis-3.4.csproj	(revision 5482)
+++ branches/DataAnalysis Refactoring/HeuristicLab.Algorithms.DataAnalysis/3.4/HeuristicLab.Algorithms.DataAnalysis-3.4.csproj	(revision 5484)
@@ -107,8 +107,5 @@
   </ItemGroup>
   <ItemGroup>
-    <Compile Include="CrossValidation.cs" />
-    <Compile Include="SupportVectorMachine.cs" />
     <Compile Include="HeuristicLabAlgorithmsDataAnalysisPlugin.cs" />
-    <Compile Include="LinearRegression.cs" />
     <Compile Include="Properties\AssemblyInfo.cs" />
   </ItemGroup>
@@ -135,6 +132,6 @@
     </ProjectReference>
     <ProjectReference Include="..\..\HeuristicLab.Encodings.SymbolicExpressionTreeEncoding\3.4\HeuristicLab.Encodings.SymbolicExpressionTreeEncoding-3.4.csproj">
-      <Project>{125D3006-67F5-48CB-913E-73C0548F17FA}</Project>
-      <Name>HeuristicLab.Encodings.SymbolicExpressionTreeEncoding-3.3</Name>
+      <Project>{06D4A186-9319-48A0-BADE-A2058D462EEA}</Project>
+      <Name>HeuristicLab.Encodings.SymbolicExpressionTreeEncoding-3.4</Name>
     </ProjectReference>
     <ProjectReference Include="..\..\HeuristicLab.Operators\3.3\HeuristicLab.Operators-3.3.csproj">
@@ -159,15 +156,14 @@
     </ProjectReference>
     <ProjectReference Include="..\..\HeuristicLab.Problems.DataAnalysis.Regression\3.4\HeuristicLab.Problems.DataAnalysis.Regression-3.4.csproj">
-      <Project>{BDF86B1D-630E-4CE2-8A49-8C90B1BDE4C9}</Project>
-      <Name>HeuristicLab.Problems.DataAnalysis.Regression-3.3</Name>
+      <Project>{BD16E72E-8F62-4293-A014-6E3D450DF091}</Project>
+      <Name>HeuristicLab.Problems.DataAnalysis.Regression-3.4</Name>
     </ProjectReference>
     <ProjectReference Include="..\..\HeuristicLab.Problems.DataAnalysis\3.4\HeuristicLab.Problems.DataAnalysis-3.4.csproj">
-      <Project>{70DFD984-B1D9-46FE-8EB7-4DE92D71A9FC}</Project>
-      <Name>HeuristicLab.Problems.DataAnalysis-3.3</Name>
+      <Project>{DF87C13E-A889-46FF-8153-66DCAA8C5674}</Project>
+      <Name>HeuristicLab.Problems.DataAnalysis-3.4</Name>
     </ProjectReference>
   </ItemGroup>
   <ItemGroup>
     <None Include="HeuristicLab.snk" />
-    <None Include="HeuristicLabAlgorithmsDataAnalysisPlugin.cs.frame" />
     <None Include="Properties\AssemblyInfo.frame" />
   </ItemGroup>
Index: branches/DataAnalysis Refactoring/HeuristicLab.Algorithms.DataAnalysis/3.4/HeuristicLabAlgorithmsDataAnalysisPlugin.cs.frame
===================================================================
--- branches/DataAnalysis Refactoring/HeuristicLab.Algorithms.DataAnalysis/3.4/HeuristicLabAlgorithmsDataAnalysisPlugin.cs.frame	(revision 5482)
+++ 	(revision )
@@ -1,44 +1,0 @@
-#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2011 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 HeuristicLab.PluginInfrastructure;
-
-namespace HeuristicLab.Algorithms.DataAnalysis {
-  /// <summary>
-  /// Plugin class for HeuristicLab.Algorithms.DataAnalysis plugin.
-  /// </summary>
-  [Plugin("HeuristicLab.Algorithms.DataAnalysis", "3.4.0.$WCREV$")]
-  [PluginFile("HeuristicLab.Algorithms.DataAnalysis-3.4.dll", PluginFileType.Assembly)]
-  [PluginDependency("HeuristicLab.Collections", "3.3")]
-  [PluginDependency("HeuristicLab.Common", "3.3")]
-  [PluginDependency("HeuristicLab.Common.Resources", "3.3")]
-  [PluginDependency("HeuristicLab.Core", "3.3")]
-  [PluginDependency("HeuristicLab.Data", "3.3")]
-  [PluginDependency("HeuristicLab.Encodings.SymbolicExpressionTreeEncoding", "3.4")]
-  [PluginDependency("HeuristicLab.Operators", "3.3")]
-  [PluginDependency("HeuristicLab.Optimization", "3.3")]
-  [PluginDependency("HeuristicLab.Parameters", "3.3")]
-  [PluginDependency("HeuristicLab.Persistence", "3.3")]
-  [PluginDependency("HeuristicLab.Problems.DataAnalysis", "3.4")]
-  [PluginDependency("HeuristicLab.Problems.DataAnalysis.Regression", "3.4")]
-  public class HeuristicLabAlgorithmsDataAnalysisPlugin : PluginBase {
-  }
-}
Index: branches/DataAnalysis Refactoring/HeuristicLab.Algorithms.DataAnalysis/3.4/LinearRegression.cs
===================================================================
--- branches/DataAnalysis Refactoring/HeuristicLab.Algorithms.DataAnalysis/3.4/LinearRegression.cs	(revision 5482)
+++ 	(revision )
@@ -1,185 +1,0 @@
-#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2011 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 HeuristicLab.Common;
-using HeuristicLab.Core;
-using HeuristicLab.Data;
-using HeuristicLab.Optimization;
-using HeuristicLab.Parameters;
-using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
-using HeuristicLab.Problems.DataAnalysis;
-using HeuristicLab.Problems.DataAnalysis.Evaluators;
-using HeuristicLab.Problems.DataAnalysis.Regression.LinearRegression;
-using HeuristicLab.Problems.DataAnalysis.Regression.Symbolic;
-using HeuristicLab.Problems.DataAnalysis.Regression.Symbolic.Analyzers;
-using HeuristicLab.Problems.DataAnalysis.Symbolic;
-
-namespace HeuristicLab.Algorithms.DataAnalysis {
-  /// <summary>
-  /// Linear regression data analysis algorithm.
-  /// </summary>
-  [Item("Linear Regression", "Linear regression data analysis algorithm.")]
-  [Creatable("Data Analysis")]
-  [StorableClass]
-  public sealed class LinearRegression : EngineAlgorithm, IStorableContent {
-    private const string TrainingSamplesStartParameterName = "Training start";
-    private const string TrainingSamplesEndParameterName = "Training end";
-    private const string LinearRegressionModelParameterName = "LinearRegressionModel";
-    private const string ModelInterpreterParameterName = "Model interpreter";
-
-    public string Filename { get; set; }
-
-    #region Problem Properties
-    public override Type ProblemType {
-      get { return typeof(DataAnalysisProblem); }
-    }
-    public new DataAnalysisProblem Problem {
-      get { return (DataAnalysisProblem)base.Problem; }
-      set { base.Problem = value; }
-    }
-    #endregion
-
-    #region parameter properties
-    public IValueParameter<IntValue> TrainingSamplesStartParameter {
-      get { return (IValueParameter<IntValue>)Parameters[TrainingSamplesStartParameterName]; }
-    }
-    public IValueParameter<IntValue> TrainingSamplesEndParameter {
-      get { return (IValueParameter<IntValue>)Parameters[TrainingSamplesEndParameterName]; }
-    }
-    public IValueParameter<ISymbolicExpressionTreeInterpreter> ModelInterpreterParameter {
-      get { return (IValueParameter<ISymbolicExpressionTreeInterpreter>)Parameters[ModelInterpreterParameterName]; }
-    }
-    #endregion
-
-    [Storable]
-    private LinearRegressionSolutionCreator solutionCreator;
-    [Storable]
-    private SimpleSymbolicRegressionEvaluator evaluator;
-    [Storable]
-    private SimpleMSEEvaluator mseEvaluator;
-    [Storable]
-    private BestSymbolicRegressionSolutionAnalyzer analyzer;
-    public LinearRegression()
-      : base() {
-      Parameters.Add(new ValueParameter<IntValue>(TrainingSamplesStartParameterName, "The first index of the data set partition to use for training."));
-      Parameters.Add(new ValueParameter<IntValue>(TrainingSamplesEndParameterName, "The last index of the data set partition to use for training."));
-      Parameters.Add(new ValueParameter<ISymbolicExpressionTreeInterpreter>(ModelInterpreterParameterName, "The interpreter to use for evaluation of the model.", new SimpleArithmeticExpressionInterpreter()));
-
-      solutionCreator = new LinearRegressionSolutionCreator();
-      evaluator = new SimpleSymbolicRegressionEvaluator();
-      mseEvaluator = new SimpleMSEEvaluator();
-      analyzer = new BestSymbolicRegressionSolutionAnalyzer();
-
-      OperatorGraph.InitialOperator = solutionCreator;
-      solutionCreator.Successor = evaluator;
-      evaluator.Successor = mseEvaluator;
-      mseEvaluator.Successor = analyzer;
-
-      Initialize();
-    }
-    [StorableConstructor]
-    private LinearRegression(bool deserializing) : base(deserializing) { }
-    [StorableHook(HookType.AfterDeserialization)]
-    private void AfterDeserialization() {
-      Initialize();
-    }
-
-    private LinearRegression(LinearRegression original, Cloner cloner)
-      : base(original, cloner) {
-      solutionCreator = cloner.Clone(original.solutionCreator);
-      evaluator = cloner.Clone(original.evaluator);
-      mseEvaluator = cloner.Clone(original.mseEvaluator);
-      analyzer = cloner.Clone(original.analyzer);
-      Initialize();
-    }
-    public override IDeepCloneable Clone(Cloner cloner) {
-      return new LinearRegression(this, cloner);
-    }
-
-    public override void Prepare() {
-      if (Problem != null) base.Prepare();
-    }
-
-    protected override void Problem_Reset(object sender, EventArgs e) {
-      UpdateAlgorithmParameterValues();
-      base.Problem_Reset(sender, e);
-    }
-
-    #region Events
-    protected override void OnProblemChanged() {
-      solutionCreator.DataAnalysisProblemDataParameter.ActualName = Problem.DataAnalysisProblemDataParameter.Name;
-      evaluator.RegressionProblemDataParameter.ActualName = Problem.DataAnalysisProblemDataParameter.Name;
-      analyzer.ProblemDataParameter.ActualName = Problem.DataAnalysisProblemDataParameter.Name;
-      UpdateAlgorithmParameterValues();
-      Problem.Reset += new EventHandler(Problem_Reset);
-      base.OnProblemChanged();
-    }
-
-
-    #endregion
-
-    #region Helpers
-    private void Initialize() {
-      solutionCreator.SamplesStartParameter.ActualName = TrainingSamplesStartParameter.Name;
-      solutionCreator.SamplesEndParameter.ActualName = TrainingSamplesEndParameter.Name;
-      solutionCreator.SymbolicExpressionTreeParameter.ActualName = LinearRegressionModelParameterName;
-
-      evaluator.SymbolicExpressionTreeParameter.ActualName = solutionCreator.SymbolicExpressionTreeParameter.ActualName;
-      evaluator.SymbolicExpressionTreeInterpreterParameter.ActualName = ModelInterpreterParameter.Name;
-      evaluator.ValuesParameter.ActualName = "Training values";
-      evaluator.SamplesStartParameter.ActualName = TrainingSamplesStartParameterName;
-      evaluator.SamplesEndParameter.ActualName = TrainingSamplesEndParameterName;
-
-      mseEvaluator.ValuesParameter.ActualName = "Training values";
-      mseEvaluator.MeanSquaredErrorParameter.ActualName = "Training MSE";
-
-      analyzer.SymbolicExpressionTreeParameter.ActualName = solutionCreator.SymbolicExpressionTreeParameter.ActualName;
-      analyzer.SymbolicExpressionTreeParameter.Depth = 0;
-      analyzer.QualityParameter.ActualName = mseEvaluator.MeanSquaredErrorParameter.ActualName;
-      analyzer.QualityParameter.Depth = 0;
-      analyzer.SymbolicExpressionTreeInterpreterParameter.ActualName = ModelInterpreterParameter.Name;
-
-      if (Problem != null) {
-        solutionCreator.DataAnalysisProblemDataParameter.ActualName = Problem.DataAnalysisProblemDataParameter.Name;
-        evaluator.RegressionProblemDataParameter.ActualName = Problem.DataAnalysisProblemDataParameter.Name;
-        analyzer.ProblemDataParameter.ActualName = Problem.DataAnalysisProblemDataParameter.Name;
-        Problem.Reset += new EventHandler(Problem_Reset);
-      }
-    }
-
-    private void UpdateAlgorithmParameterValues() {
-      TrainingSamplesStartParameter.ActualValue = Problem.DataAnalysisProblemData.TrainingSamplesStart;
-      TrainingSamplesEndParameter.ActualValue = Problem.DataAnalysisProblemData.TrainingSamplesEnd;
-      //var targetValues =
-      //  Problem.DataAnalysisProblemData.Dataset.GetVariableValues(Problem.DataAnalysisProblemData.TargetVariable.Value,
-      //  TrainingSamplesStartParameter.Value.Value, TrainingSamplesEndParameter.Value.Value);
-      //double range = targetValues.Max() - targetValues.Min();
-      //double lowerEstimationLimit = targetValues.Average() - 10.0 * range;
-      //double upperEstimationLimit = targetValues.Average() + 10.0 * range;
-      //evaluator.LowerEstimationLimitParameter.Value = new DoubleValue(lowerEstimationLimit);
-      //evaluator.UpperEstimationLimitParameter.Value = new DoubleValue(upperEstimationLimit);
-      //analyzer.LowerEstimationLimitParameter.Value = new DoubleValue(lowerEstimationLimit);
-      //analyzer.UpperEstimationLimitParameter.Value = new DoubleValue(upperEstimationLimit);
-    }
-    #endregion
-  }
-}
Index: branches/DataAnalysis Refactoring/HeuristicLab.Algorithms.DataAnalysis/3.4/SupportVectorMachine.cs
===================================================================
--- branches/DataAnalysis Refactoring/HeuristicLab.Algorithms.DataAnalysis/3.4/SupportVectorMachine.cs	(revision 5482)
+++ 	(revision )
@@ -1,222 +1,0 @@
-#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2011 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 HeuristicLab.Common;
-using HeuristicLab.Core;
-using HeuristicLab.Data;
-using HeuristicLab.Optimization;
-using HeuristicLab.Parameters;
-using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
-using HeuristicLab.Problems.DataAnalysis;
-using HeuristicLab.Problems.DataAnalysis.Evaluators;
-using HeuristicLab.Problems.DataAnalysis.Regression.SupportVectorRegression;
-using HeuristicLab.Problems.DataAnalysis.SupportVectorMachine;
-
-namespace HeuristicLab.Algorithms.DataAnalysis {
-  /// <summary>
-  /// A support vector machine.
-  /// </summary>
-  [Item("Support Vector Machine", "Support vector machine data analysis algorithm.")]
-  [Creatable("Data Analysis")]
-  [StorableClass]
-  public sealed class SupportVectorMachine : EngineAlgorithm, IStorableContent {
-    private const string TrainingSamplesStartParameterName = "Training start";
-    private const string TrainingSamplesEndParameterName = "Training end";
-    private const string DataAnalysisProblemDataParameterName = "DataAnalysisProblemData";
-    private const string SvmTypeParameterName = "SvmType";
-    private const string KernelTypeParameterName = "KernelType";
-    private const string CostParameterName = "Cost";
-    private const string NuParameterName = "Nu";
-    private const string GammaParameterName = "Gamma";
-    private const string EpsilonParameterName = "Epsilon";
-    private const string ModelParameterName = "SupportVectorMachineModel";
-
-    public string Filename { get; set; }
-
-    #region Problem Properties
-    public override Type ProblemType {
-      get { return typeof(DataAnalysisProblem); }
-    }
-    public new DataAnalysisProblem Problem {
-      get { return (DataAnalysisProblem)base.Problem; }
-      set { base.Problem = value; }
-    }
-    #endregion
-
-    #region parameter properties
-    public IValueParameter<IntValue> TrainingSamplesStartParameter {
-      get { return (IValueParameter<IntValue>)Parameters[TrainingSamplesStartParameterName]; }
-    }
-    public IValueParameter<IntValue> TrainingSamplesEndParameter {
-      get { return (IValueParameter<IntValue>)Parameters[TrainingSamplesEndParameterName]; }
-    }
-    public IValueParameter<StringValue> SvmTypeParameter {
-      get { return (IValueParameter<StringValue>)Parameters[SvmTypeParameterName]; }
-    }
-    public IValueParameter<StringValue> KernelTypeParameter {
-      get { return (IValueParameter<StringValue>)Parameters[KernelTypeParameterName]; }
-    }
-    public IValueParameter<DoubleValue> NuParameter {
-      get { return (IValueParameter<DoubleValue>)Parameters[NuParameterName]; }
-    }
-    public IValueParameter<DoubleValue> CostParameter {
-      get { return (IValueParameter<DoubleValue>)Parameters[CostParameterName]; }
-    }
-    public IValueParameter<DoubleValue> GammaParameter {
-      get { return (IValueParameter<DoubleValue>)Parameters[GammaParameterName]; }
-    }
-    public IValueParameter<DoubleValue> EpsilonParameter {
-      get { return (IValueParameter<DoubleValue>)Parameters[EpsilonParameterName]; }
-    }
-    #endregion
-
-    [Storable]
-    private SupportVectorMachineModelCreator solutionCreator;
-    [Storable]
-    private SupportVectorMachineModelEvaluator evaluator;
-    [Storable]
-    private SimpleMSEEvaluator mseEvaluator;
-    [Storable]
-    private BestSupportVectorRegressionSolutionAnalyzer analyzer;
-    public SupportVectorMachine()
-      : base() {
-      #region svm types
-      StringValue cSvcType = new StringValue("C_SVC").AsReadOnly();
-      StringValue nuSvcType = new StringValue("NU_SVC").AsReadOnly();
-      StringValue eSvrType = new StringValue("EPSILON_SVR").AsReadOnly();
-      StringValue nuSvrType = new StringValue("NU_SVR").AsReadOnly();
-      ItemSet<StringValue> allowedSvmTypes = new ItemSet<StringValue>();
-      allowedSvmTypes.Add(cSvcType);
-      allowedSvmTypes.Add(nuSvcType);
-      allowedSvmTypes.Add(eSvrType);
-      allowedSvmTypes.Add(nuSvrType);
-      #endregion
-      #region kernel types
-      StringValue rbfKernelType = new StringValue("RBF").AsReadOnly();
-      StringValue linearKernelType = new StringValue("LINEAR").AsReadOnly();
-      StringValue polynomialKernelType = new StringValue("POLY").AsReadOnly();
-      StringValue sigmoidKernelType = new StringValue("SIGMOID").AsReadOnly();
-      ItemSet<StringValue> allowedKernelTypes = new ItemSet<StringValue>();
-      allowedKernelTypes.Add(rbfKernelType);
-      allowedKernelTypes.Add(linearKernelType);
-      allowedKernelTypes.Add(polynomialKernelType);
-      allowedKernelTypes.Add(sigmoidKernelType);
-      #endregion
-      Parameters.Add(new ValueParameter<IntValue>(TrainingSamplesStartParameterName, "The first index of the data set partition to use for training."));
-      Parameters.Add(new ValueParameter<IntValue>(TrainingSamplesEndParameterName, "The last index of the data set partition to use for training."));
-      Parameters.Add(new ConstrainedValueParameter<StringValue>(SvmTypeParameterName, "The type of SVM to use.", allowedSvmTypes, nuSvrType));
-      Parameters.Add(new ConstrainedValueParameter<StringValue>(KernelTypeParameterName, "The kernel type to use for the SVM.", allowedKernelTypes, rbfKernelType));
-      Parameters.Add(new ValueParameter<DoubleValue>(NuParameterName, "The value of the nu parameter nu-SVC, one-class SVM and nu-SVR.", new DoubleValue(0.5)));
-      Parameters.Add(new ValueParameter<DoubleValue>(CostParameterName, "The value of the C (cost) parameter of C-SVC, epsilon-SVR and nu-SVR.", new DoubleValue(1.0)));
-      Parameters.Add(new ValueParameter<DoubleValue>(GammaParameterName, "The value of the gamma parameter in the kernel function.", new DoubleValue(1.0)));
-      Parameters.Add(new ValueLookupParameter<DoubleValue>(EpsilonParameterName, "The value of the epsilon parameter (only for epsilon-SVR).", new DoubleValue(1.0)));
-
-      solutionCreator = new SupportVectorMachineModelCreator();
-      evaluator = new SupportVectorMachineModelEvaluator();
-      mseEvaluator = new SimpleMSEEvaluator();
-      analyzer = new BestSupportVectorRegressionSolutionAnalyzer();
-
-      OperatorGraph.InitialOperator = solutionCreator;
-      solutionCreator.Successor = evaluator;
-      evaluator.Successor = mseEvaluator;
-      mseEvaluator.Successor = analyzer;
-
-      Initialize();
-    }
-    [StorableConstructor]
-    private SupportVectorMachine(bool deserializing) : base(deserializing) { }
-    [StorableHook(HookType.AfterDeserialization)]
-    private void AfterDeserialization() {
-      Initialize();
-    }
-
-    private SupportVectorMachine(SupportVectorMachine original, Cloner cloner)
-      : base(original, cloner) {
-      solutionCreator = cloner.Clone(original.solutionCreator);
-      evaluator = cloner.Clone(original.evaluator);
-      mseEvaluator = cloner.Clone(original.mseEvaluator);
-      analyzer = cloner.Clone(original.analyzer);
-      Initialize();
-    }
-    public override IDeepCloneable Clone(Cloner cloner) {
-      return new SupportVectorMachine(this, cloner);
-    }
-
-    public override void Prepare() {
-      if (Problem != null) base.Prepare();
-    }
-
-    protected override void Problem_Reset(object sender, EventArgs e) {
-      UpdateAlgorithmParameters();
-      base.Problem_Reset(sender, e);
-    }
-
-    #region Events
-    protected override void OnProblemChanged() {
-      solutionCreator.DataAnalysisProblemDataParameter.ActualName = Problem.DataAnalysisProblemDataParameter.Name;
-      evaluator.DataAnalysisProblemDataParameter.ActualName = Problem.DataAnalysisProblemDataParameter.Name;
-      analyzer.ProblemDataParameter.ActualName = Problem.DataAnalysisProblemDataParameter.Name;
-      UpdateAlgorithmParameters();
-      Problem.Reset += new EventHandler(Problem_Reset);
-      base.OnProblemChanged();
-    }
-
-    #endregion
-
-    #region Helpers
-    private void Initialize() {
-      solutionCreator.SvmTypeParameter.ActualName = SvmTypeParameter.Name;
-      solutionCreator.KernelTypeParameter.ActualName = KernelTypeParameter.Name;
-      solutionCreator.CostParameter.ActualName = CostParameter.Name;
-      solutionCreator.GammaParameter.ActualName = GammaParameter.Name;
-      solutionCreator.NuParameter.ActualName = NuParameter.Name;
-      solutionCreator.SamplesStartParameter.ActualName = TrainingSamplesStartParameter.Name;
-      solutionCreator.SamplesEndParameter.ActualName = TrainingSamplesEndParameter.Name;
-
-      evaluator.SamplesStartParameter.ActualName = TrainingSamplesStartParameter.Name;
-      evaluator.SamplesEndParameter.ActualName = TrainingSamplesEndParameter.Name;
-      evaluator.SupportVectorMachineModelParameter.ActualName = solutionCreator.SupportVectorMachineModelParameter.ActualName;
-      evaluator.ValuesParameter.ActualName = "Training values";
-
-      mseEvaluator.ValuesParameter.ActualName = "Training values";
-      mseEvaluator.MeanSquaredErrorParameter.ActualName = "Training MSE";
-
-      analyzer.SupportVectorRegressionModelParameter.ActualName = solutionCreator.SupportVectorMachineModelParameter.ActualName;
-      analyzer.SupportVectorRegressionModelParameter.Depth = 0;
-      analyzer.QualityParameter.ActualName = mseEvaluator.MeanSquaredErrorParameter.ActualName;
-      analyzer.QualityParameter.Depth = 0;
-
-      if (Problem != null) {
-        solutionCreator.DataAnalysisProblemDataParameter.ActualName = Problem.DataAnalysisProblemDataParameter.Name;
-        evaluator.DataAnalysisProblemDataParameter.ActualName = Problem.DataAnalysisProblemDataParameter.Name;
-        analyzer.ProblemDataParameter.ActualName = Problem.DataAnalysisProblemDataParameter.Name;
-        Problem.Reset += new EventHandler(Problem_Reset);
-      }
-    }
-
-    private void UpdateAlgorithmParameters() {
-      TrainingSamplesStartParameter.ActualValue = Problem.DataAnalysisProblemData.TrainingSamplesStart;
-      TrainingSamplesEndParameter.ActualValue = Problem.DataAnalysisProblemData.TrainingSamplesEnd;
-    }
-    #endregion
-  }
-}
Index: branches/DataAnalysis Refactoring/HeuristicLab.Problems.ArtificialAnt.Views/3.4/HeuristicLab.Problems.ArtificialAnt.Views-3.4.csproj
===================================================================
--- branches/DataAnalysis Refactoring/HeuristicLab.Problems.ArtificialAnt.Views/3.4/HeuristicLab.Problems.ArtificialAnt.Views-3.4.csproj	(revision 5482)
+++ branches/DataAnalysis Refactoring/HeuristicLab.Problems.ArtificialAnt.Views/3.4/HeuristicLab.Problems.ArtificialAnt.Views-3.4.csproj	(revision 5484)
@@ -146,11 +146,11 @@
       <Name>HeuristicLab.Data-3.3</Name>
     </ProjectReference>
-    <ProjectReference Include="..\..\HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Views\3.3\HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Views-3.3.csproj">
-      <Project>{6F42C5F8-16CD-43EE-8208-FD4573A69D85}</Project>
-      <Name>HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Views-3.3</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\..\HeuristicLab.Encodings.SymbolicExpressionTreeEncoding\3.3\HeuristicLab.Encodings.SymbolicExpressionTreeEncoding-3.3.csproj">
-      <Project>{125D3006-67F5-48CB-913E-73C0548F17FA}</Project>
-      <Name>HeuristicLab.Encodings.SymbolicExpressionTreeEncoding-3.3</Name>
+    <ProjectReference Include="..\..\HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Views\3.4\HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Views-3.4.csproj">
+      <Project>{423BD94F-963A-438E-BA45-3BB3D61CD03B}</Project>
+      <Name>HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Views-3.4</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Encodings.SymbolicExpressionTreeEncoding\3.4\HeuristicLab.Encodings.SymbolicExpressionTreeEncoding-3.4.csproj">
+      <Project>{06D4A186-9319-48A0-BADE-A2058D462EEA}</Project>
+      <Name>HeuristicLab.Encodings.SymbolicExpressionTreeEncoding-3.4</Name>
     </ProjectReference>
     <ProjectReference Include="..\..\HeuristicLab.MainForm.WindowsForms\3.3\HeuristicLab.MainForm.WindowsForms-3.3.csproj">
@@ -174,7 +174,7 @@
       <Name>HeuristicLab.PluginInfrastructure-3.3</Name>
     </ProjectReference>
-    <ProjectReference Include="..\..\HeuristicLab.Problems.ArtificialAnt\3.3\HeuristicLab.Problems.ArtificialAnt-3.3.csproj">
-      <Project>{F5C0ECAC-EDBA-4024-872A-1F74AFCB20B4}</Project>
-      <Name>HeuristicLab.Problems.ArtificialAnt-3.3</Name>
+    <ProjectReference Include="..\..\HeuristicLab.Problems.ArtificialAnt\3.4\HeuristicLab.Problems.ArtificialAnt-3.4.csproj">
+      <Project>{0C67A033-F6D9-4237-B3CA-C033A44706BE}</Project>
+      <Name>HeuristicLab.Problems.ArtificialAnt-3.4</Name>
     </ProjectReference>
   </ItemGroup>
Index: branches/DataAnalysis Refactoring/HeuristicLab.Problems.ArtificialAnt/3.4/HeuristicLab.Problems.ArtificialAnt-3.4.csproj
===================================================================
--- branches/DataAnalysis Refactoring/HeuristicLab.Problems.ArtificialAnt/3.4/HeuristicLab.Problems.ArtificialAnt-3.4.csproj	(revision 5482)
+++ branches/DataAnalysis Refactoring/HeuristicLab.Problems.ArtificialAnt/3.4/HeuristicLab.Problems.ArtificialAnt-3.4.csproj	(revision 5484)
@@ -150,7 +150,7 @@
       <Name>HeuristicLab.Data-3.3</Name>
     </ProjectReference>
-    <ProjectReference Include="..\..\HeuristicLab.Encodings.SymbolicExpressionTreeEncoding\3.3\HeuristicLab.Encodings.SymbolicExpressionTreeEncoding-3.3.csproj">
-      <Project>{125D3006-67F5-48CB-913E-73C0548F17FA}</Project>
-      <Name>HeuristicLab.Encodings.SymbolicExpressionTreeEncoding-3.3</Name>
+    <ProjectReference Include="..\..\HeuristicLab.Encodings.SymbolicExpressionTreeEncoding\3.4\HeuristicLab.Encodings.SymbolicExpressionTreeEncoding-3.4.csproj">
+      <Project>{06D4A186-9319-48A0-BADE-A2058D462EEA}</Project>
+      <Name>HeuristicLab.Encodings.SymbolicExpressionTreeEncoding-3.4</Name>
     </ProjectReference>
     <ProjectReference Include="..\..\HeuristicLab.Operators\3.3\HeuristicLab.Operators-3.3.csproj">
Index: branches/DataAnalysis Refactoring/HeuristicLab.Problems.DataAnalysis.Classification/3.4/HeuristicLab.Problems.DataAnalysis.Classification-3.4.csproj
===================================================================
--- branches/DataAnalysis Refactoring/HeuristicLab.Problems.DataAnalysis.Classification/3.4/HeuristicLab.Problems.DataAnalysis.Classification-3.4.csproj	(revision 5482)
+++ branches/DataAnalysis Refactoring/HeuristicLab.Problems.DataAnalysis.Classification/3.4/HeuristicLab.Problems.DataAnalysis.Classification-3.4.csproj	(revision 5484)
@@ -141,8 +141,4 @@
       <Name>HeuristicLab.Data-3.3</Name>
     </ProjectReference>
-    <ProjectReference Include="..\..\HeuristicLab.Encodings.SymbolicExpressionTreeEncoding\3.3\HeuristicLab.Encodings.SymbolicExpressionTreeEncoding-3.3.csproj">
-      <Project>{125D3006-67F5-48CB-913E-73C0548F17FA}</Project>
-      <Name>HeuristicLab.Encodings.SymbolicExpressionTreeEncoding-3.3</Name>
-    </ProjectReference>
     <ProjectReference Include="..\..\HeuristicLab.Operators\3.3\HeuristicLab.Operators-3.3.csproj">
       <Project>{23DA7FF4-D5B8-41B6-AA96-F0561D24F3EE}</Project>
@@ -165,12 +161,4 @@
       <Name>HeuristicLab.PluginInfrastructure-3.3</Name>
     </ProjectReference>
-    <ProjectReference Include="..\..\HeuristicLab.Problems.DataAnalysis.Regression\3.3\HeuristicLab.Problems.DataAnalysis.Regression-3.3.csproj">
-      <Project>{BDF86B1D-630E-4CE2-8A49-8C90B1BDE4C9}</Project>
-      <Name>HeuristicLab.Problems.DataAnalysis.Regression-3.3</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\..\HeuristicLab.Problems.DataAnalysis\3.3\HeuristicLab.Problems.DataAnalysis-3.3.csproj">
-      <Project>{70DFD984-B1D9-46FE-8EB7-4DE92D71A9FC}</Project>
-      <Name>HeuristicLab.Problems.DataAnalysis-3.3</Name>
-    </ProjectReference>
   </ItemGroup>
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
Index: branches/DataAnalysis Refactoring/HeuristicLab.Problems.DataAnalysis/3.3/Symbolic/Symbols/VariableCondition.cs
===================================================================
--- branches/DataAnalysis Refactoring/HeuristicLab.Problems.DataAnalysis/3.3/Symbolic/Symbols/VariableCondition.cs	(revision 5482)
+++ branches/DataAnalysis Refactoring/HeuristicLab.Problems.DataAnalysis/3.3/Symbolic/Symbols/VariableCondition.cs	(revision 5484)
@@ -144,6 +144,6 @@
     #region persistence and cloning
     [StorableConstructor]
-    protected VariableCondition(bool deserializing) : base(deserializing) { }
-    protected VariableCondition(VariableCondition original, Cloner cloner)
+    private VariableCondition(bool deserializing) : base(deserializing) { }
+    private VariableCondition(VariableCondition original, Cloner cloner)
       : base(original, cloner) {
       thresholdInitializerMu = original.thresholdInitializerMu;
Index: branches/DataAnalysis Refactoring/HeuristicLab.Problems.DataAnalysis/3.4/DataAnalysisProblem.cs
===================================================================
--- branches/DataAnalysis Refactoring/HeuristicLab.Problems.DataAnalysis/3.4/DataAnalysisProblem.cs	(revision 5482)
+++ 	(revision )
@@ -1,153 +1,0 @@
-#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2011 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.Drawing;
-using HeuristicLab.Common;
-using HeuristicLab.Core;
-using HeuristicLab.Optimization;
-using HeuristicLab.Parameters;
-using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
-
-namespace HeuristicLab.Problems.DataAnalysis {
-  [Item("Data Analysis Problem", "Represents a data analysis problem.")]
-  [Creatable("Problems")]
-  [StorableClass]
-  public class DataAnalysisProblem : ParameterizedNamedItem, IDataAnalysisProblem, IStorableContent {
-    private const string DataAnalysisProblemDataParameterName = "DataAnalysisProblemData";
-
-    public string Filename { get; set; }
-
-    public override Image ItemImage {
-      get { return HeuristicLab.Common.Resources.VSImageLibrary.Type; }
-    }
-
-    #region Parameter Properties
-    public ValueParameter<DataAnalysisProblemData> DataAnalysisProblemDataParameter {
-      get { return (ValueParameter<DataAnalysisProblemData>)Parameters[DataAnalysisProblemDataParameterName]; }
-    }
-    #endregion
-    #region properties
-    public DataAnalysisProblemData DataAnalysisProblemData {
-      get { return DataAnalysisProblemDataParameter.Value; }
-    }
-    #endregion
-
-    [StorableConstructor]
-    protected DataAnalysisProblem(bool deserializing) : base(deserializing) { }
-    protected DataAnalysisProblem(DataAnalysisProblem original, Cloner cloner)
-      : base(original, cloner) {
-      RegisterParameterEvents();
-      RegisterParameterValueEvents();
-    }
-
-    public DataAnalysisProblem()
-      : base() {
-      Parameters.Add(new ValueParameter<DataAnalysisProblemData>(DataAnalysisProblemDataParameterName, "The data set, target variable and input variables of the data analysis problem.", new DataAnalysisProblemData()));
-      RegisterParameterEvents();
-      RegisterParameterValueEvents();
-    }
-
-    [StorableHook(HookType.AfterDeserialization)]
-    private void AfterDeserialization() {
-      RegisterParameterEvents();
-      RegisterParameterValueEvents();
-    }
-
-    #region events
-    protected virtual void OnDataAnalysisProblemChanged(EventArgs e) {
-      RaiseReset(e);
-    }
-
-    private void RegisterParameterEvents() {
-      DataAnalysisProblemDataParameter.ValueChanged += new EventHandler(DataAnalysisProblemDataParameter_ValueChanged);
-    }
-
-    private void RegisterParameterValueEvents() {
-      DataAnalysisProblemData.ProblemDataChanged += new EventHandler(DataAnalysisProblemData_ProblemDataChanged);
-    }
-
-    private void DataAnalysisProblemDataParameter_ValueChanged(object sender, EventArgs e) {
-      OnDataAnalysisProblemChanged(e);
-    }
-
-    private void DataAnalysisProblemData_ProblemDataChanged(object sender, EventArgs e) {
-      OnDataAnalysisProblemChanged(e);
-    }
-    #endregion
-
-    public override IDeepCloneable Clone(Cloner cloner) {
-      return new DataAnalysisProblem(this, cloner);
-    }
-
-    #region IProblem Members
-
-    public virtual IParameter SolutionCreatorParameter {
-      get { return null; }
-    }
-
-    public virtual ISolutionCreator SolutionCreator {
-      get { return null; }
-    }
-
-    public virtual IParameter EvaluatorParameter {
-      get { return null; }
-    }
-
-    public virtual IEvaluator Evaluator {
-      get { return null; }
-    }
-
-    public virtual IEnumerable<IOperator> Operators {
-      get { return new IOperator[0]; }
-    }
-
-    public event EventHandler SolutionCreatorChanged;
-    protected void RaiseSolutionCreatorChanged(EventArgs e) {
-      var changed = SolutionCreatorChanged;
-      if (changed != null)
-        changed(this, e);
-    }
-
-    public event EventHandler EvaluatorChanged;
-    protected void RaiseEvaluatorChanged(EventArgs e) {
-      var changed = EvaluatorChanged;
-      if (changed != null)
-        changed(this, e);
-    }
-
-    public event EventHandler OperatorsChanged;
-    protected void RaiseOperatorsChanged(EventArgs e) {
-      var changed = OperatorsChanged;
-      if (changed != null)
-        changed(this, e);
-    }
-
-    public event EventHandler Reset;
-    protected void RaiseReset(EventArgs e) {
-      var changed = Reset;
-      if (changed != null)
-        changed(this, e);
-    }
-    #endregion
-  }
-}
Index: branches/DataAnalysis Refactoring/HeuristicLab.Problems.DataAnalysis/3.4/DataAnalysisProblemData.cs
===================================================================
--- branches/DataAnalysis Refactoring/HeuristicLab.Problems.DataAnalysis/3.4/DataAnalysisProblemData.cs	(revision 5482)
+++ 	(revision )
@@ -1,420 +1,0 @@
-#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2011 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.IO;
-using System.Linq;
-using HeuristicLab.Common;
-using HeuristicLab.Core;
-using HeuristicLab.Data;
-using HeuristicLab.Parameters;
-using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
-
-namespace HeuristicLab.Problems.DataAnalysis {
-  [Item("DataAnalysisProblemData", "Represents an item containing all data defining a data analysis problem.")]
-  [StorableClass]
-  public class DataAnalysisProblemData : ParameterizedNamedItem, IStorableContent {
-    protected bool suppressEvents = false;
-    #region IStorableContent Members
-    public string Filename { get; set; }
-    #endregion
-    #region default data
-    // y = x^4 + x^3 + x^2 + x
-    private static double[,] kozaF1 = new double[,] {
-{2.017885919,	-1.449165046},
-{1.30060506,	-1.344523885},
-{1.147134798,	-1.317989331},
-{0.877182504,	-1.266142284},
-{0.852562452,	-1.261020794},
-{0.431095788,	-1.158793317},
-{0.112586002,	-1.050908405},
-{0.04594507,	-1.021989402},
-{0.042572879,	-1.020438113},
-{-0.074027291,	-0.959859562},
-{-0.109178553,	-0.938094706},
-{-0.259721109,	-0.803635355},
-{-0.272991057,	-0.387519561},
-{-0.161978191,	-0.193611001},
-{-0.102489983,	-0.114215349},
-{-0.01469968,	-0.014918985},
-{-0.008863365,	-0.008942626},
-{0.026751057,	0.026054094},
-{0.166922436,	0.14309643},
-{0.176953808,	0.1504144},
-{0.190233418,	0.159916534},
-{0.199800708,	0.166635331},
-{0.261502822,	0.207600348},
-{0.30182879,	0.232370249},
-{0.83763905,	0.468046718}
-    };
-    #endregion
-    #region parameter properties
-    public ValueParameter<Dataset> DatasetParameter {
-      get { return (ValueParameter<Dataset>)Parameters["Dataset"]; }
-    }
-    public IValueParameter<StringValue> TargetVariableParameter {
-      get { return (IValueParameter<StringValue>)Parameters["TargetVariable"]; }
-    }
-    public IValueParameter<ICheckedItemList<StringValue>> InputVariablesParameter {
-      get { return (IValueParameter<ICheckedItemList<StringValue>>)Parameters["InputVariables"]; }
-    }
-    public IValueParameter<IntValue> TrainingSamplesStartParameter {
-      get { return (IValueParameter<IntValue>)Parameters["TrainingSamplesStart"]; }
-    }
-    public IValueParameter<IntValue> TrainingSamplesEndParameter {
-      get { return (IValueParameter<IntValue>)Parameters["TrainingSamplesEnd"]; }
-    }
-    public IValueParameter<IntValue> TestSamplesStartParameter {
-      get { return (IValueParameter<IntValue>)Parameters["TestSamplesStart"]; }
-    }
-    public IValueParameter<IntValue> TestSamplesEndParameter {
-      get { return (IValueParameter<IntValue>)Parameters["TestSamplesEnd"]; }
-    }
-    public IValueParameter<PercentValue> ValidationPercentageParameter {
-      get { return (IValueParameter<PercentValue>)Parameters["ValidationPercentage"]; }
-    }
-    #endregion
-
-    #region properties
-    public Dataset Dataset {
-      get { return DatasetParameter.Value; }
-      set {
-        if (value != Dataset) {
-          if (value == null) throw new ArgumentNullException();
-          DatasetParameter.Value = value;
-        }
-      }
-    }
-    public StringValue TargetVariable {
-      get { return TargetVariableParameter.Value; }
-      set {
-        if (value != TargetVariableParameter.Value) {
-          if (value == null) throw new ArgumentNullException();
-          if (TargetVariable != null) DeregisterStringValueEventHandlers(TargetVariable);
-          TargetVariableParameter.Value = value;
-        }
-      }
-    }
-    public ICheckedItemList<StringValue> InputVariables {
-      get { return InputVariablesParameter.Value; }
-      set {
-        if (value != InputVariables) {
-          if (value == null) throw new ArgumentNullException();
-          if (InputVariables != null) DeregisterInputVariablesEventHandlers();
-          InputVariablesParameter.Value = value;
-        }
-      }
-    }
-    public IntValue TrainingSamplesStart {
-      get { return TrainingSamplesStartParameter.Value; }
-      set {
-        if (value != TrainingSamplesStart) {
-          if (value == null) throw new ArgumentNullException();
-          if (TrainingSamplesStart != null) DeregisterValueTypeEventHandlers(TrainingSamplesStart);
-          TrainingSamplesStartParameter.Value = value;
-        }
-      }
-    }
-    public IntValue TrainingSamplesEnd {
-      get { return TrainingSamplesEndParameter.Value; }
-      set {
-        if (value != TrainingSamplesEnd) {
-          if (value == null) throw new ArgumentNullException();
-          if (TrainingSamplesEnd != null) DeregisterValueTypeEventHandlers(TrainingSamplesEnd);
-          TrainingSamplesEndParameter.Value = value;
-        }
-      }
-    }
-    public IntValue TestSamplesStart {
-      get { return TestSamplesStartParameter.Value; }
-      set {
-        if (value != TestSamplesStart) {
-          if (value == null) throw new ArgumentNullException();
-          if (TestSamplesStart != null) DeregisterValueTypeEventHandlers(TestSamplesStart);
-          TestSamplesStartParameter.Value = value;
-        }
-      }
-    }
-    public IntValue TestSamplesEnd {
-      get { return TestSamplesEndParameter.Value; }
-      set {
-        if (value != TestSamplesEnd) {
-          if (value == null) throw new ArgumentNullException();
-          if (TestSamplesEnd != null) DeregisterValueTypeEventHandlers(TestSamplesEnd);
-          TestSamplesEndParameter.Value = value;
-        }
-      }
-    }
-    public PercentValue ValidationPercentage {
-      get { return ValidationPercentageParameter.Value; }
-      set {
-        if (value != ValidationPercentage) {
-          if (value == null) throw new ArgumentNullException();
-          if (value.Value < 0 || value.Value > 1) throw new ArgumentException("ValidationPercentage must be between 0 and 1.");
-          if (ValidationPercentage != null) DeregisterValueTypeEventHandlers(ValidationPercentage);
-          ValidationPercentageParameter.Value = value;
-        }
-      }
-    }
-
-    public IEnumerable<int> TrainingIndizes {
-      get {
-        return Enumerable.Range(TrainingSamplesStart.Value, TrainingSamplesEnd.Value - TrainingSamplesStart.Value)
-                         .Where(i => i >= 0 && i < Dataset.Rows && (i < TestSamplesStart.Value || TestSamplesEnd.Value <= i));
-      }
-    }
-    public IEnumerable<int> TestIndizes {
-      get {
-        return Enumerable.Range(TestSamplesStart.Value, TestSamplesEnd.Value - TestSamplesStart.Value)
-           .Where(i => i >= 0 && i < Dataset.Rows);
-      }
-    }
-    #endregion
-
-    [StorableConstructor]
-    protected DataAnalysisProblemData(bool deserializing) : base(deserializing) { }
-    protected DataAnalysisProblemData(DataAnalysisProblemData original, Cloner cloner)
-      : base(original, cloner) {
-      RegisterParameterEventHandlers();
-      RegisterParameterValueEventHandlers();
-    }
-    public DataAnalysisProblemData()
-      : base() {
-      var inputVariables = new CheckedItemList<StringValue>();
-      StringValue inputVariable = new StringValue("x");
-      inputVariables.Add(inputVariable);
-      StringValue targetVariable = new StringValue("y");
-      var validTargetVariables = new ItemSet<StringValue>();
-      validTargetVariables.Add(targetVariable);
-      Parameters.Add(new ValueParameter<Dataset>("Dataset", new Dataset(new string[] { "y", "x" }, kozaF1)));
-      Parameters.Add(new ValueParameter<ICheckedItemList<StringValue>>("InputVariables", inputVariables.AsReadOnly()));
-      Parameters.Add(new ConstrainedValueParameter<StringValue>("TargetVariable", validTargetVariables, targetVariable));
-      Parameters.Add(new ValueParameter<IntValue>("TrainingSamplesStart", new IntValue(0)));
-      Parameters.Add(new ValueParameter<IntValue>("TrainingSamplesEnd", new IntValue(15)));
-      Parameters.Add(new ValueParameter<IntValue>("TestSamplesStart", new IntValue(15)));
-      Parameters.Add(new ValueParameter<IntValue>("TestSamplesEnd", new IntValue(25)));
-      Parameters.Add(new ValueParameter<PercentValue>("ValidationPercentage", "The relative amount of the training samples that should be used as validation set.", new PercentValue(0.5)));
-
-      DatasetParameter.ReactOnValueToStringChangedAndValueItemImageChanged = false;
-      RegisterParameterEventHandlers();
-      RegisterParameterValueEventHandlers();
-    }
-
-    public DataAnalysisProblemData(Dataset dataset, IEnumerable<string> inputVariables, string targetVariable,
-      int trainingSamplesStart, int trainingSamplesEnd, int testSamplesStart, int testSamplesEnd) {
-      var inputVariablesList = new CheckedItemList<StringValue>(inputVariables.Select(x => new StringValue(x)).ToList());
-      StringValue targetVariableValue = new StringValue(targetVariable);
-      var validTargetVariables = new ItemSet<StringValue>();
-      foreach (var variable in dataset.VariableNames)
-        if (variable != targetVariable)
-          validTargetVariables.Add(new StringValue(variable));
-      validTargetVariables.Add(targetVariableValue);
-      Parameters.Add(new ValueParameter<Dataset>("Dataset", dataset));
-      Parameters.Add(new ValueParameter<ICheckedItemList<StringValue>>("InputVariables", inputVariablesList.AsReadOnly()));
-      Parameters.Add(new ConstrainedValueParameter<StringValue>("TargetVariable", validTargetVariables, targetVariableValue));
-      Parameters.Add(new ValueParameter<IntValue>("TrainingSamplesStart", new IntValue(trainingSamplesStart)));
-      Parameters.Add(new ValueParameter<IntValue>("TrainingSamplesEnd", new IntValue(trainingSamplesEnd)));
-      Parameters.Add(new ValueParameter<IntValue>("TestSamplesStart", new IntValue(testSamplesStart)));
-      Parameters.Add(new ValueParameter<IntValue>("TestSamplesEnd", new IntValue(testSamplesEnd)));
-      Parameters.Add(new ValueParameter<PercentValue>("ValidationPercentage", "The relative amount of the training samples that should be used as validation set.", new PercentValue(0.5)));
-
-      DatasetParameter.ReactOnValueToStringChangedAndValueItemImageChanged = false;
-      RegisterParameterEventHandlers();
-      RegisterParameterValueEventHandlers();
-    }
-
-    public override IDeepCloneable Clone(Cloner cloner) {
-      return new DataAnalysisProblemData(this, cloner);
-    }
-
-    [StorableHook(HookType.AfterDeserialization)]
-    private void AfterDeserialization() {
-      if (!Parameters.ContainsKey("ValidationPercentage"))
-        Parameters.Add(new ValueParameter<PercentValue>("ValidationPercentage", "The relative amount of the training samples that should be used as validation set.", new PercentValue(0.5)));
-
-      DatasetParameter.ReactOnValueToStringChangedAndValueItemImageChanged = false;
-      RegisterParameterEventHandlers();
-      RegisterParameterValueEventHandlers();
-    }
-
-    #region events
-    public event EventHandler ProblemDataChanged;
-    protected virtual void OnProblemDataChanged(EventArgs e) {
-      if (TrainingSamplesStart.Value < 0) TrainingSamplesStart.Value = 0;
-      else if (TestSamplesStart.Value < 0) TestSamplesStart.Value = 0;
-      else if (TrainingSamplesEnd.Value > Dataset.Rows - 1) TrainingSamplesEnd.Value = Dataset.Rows - 1;
-      else if (TestSamplesEnd.Value > Dataset.Rows - 1) TestSamplesEnd.Value = Dataset.Rows - 1;
-      else if (TrainingSamplesStart.Value > TrainingSamplesEnd.Value) TrainingSamplesStart.Value = TestSamplesEnd.Value;
-      else if (TestSamplesStart.Value > TestSamplesEnd.Value) TestSamplesStart.Value = TestSamplesEnd.Value;
-      else if (ValidationPercentage.Value < 0) ValidationPercentage.Value = 0;
-      else if (ValidationPercentage.Value > 1) ValidationPercentage.Value = 1;
-      else if (!TrainingIndizes.Any()) throw new ArgumentException("No training samples are available.");
-      else if (!suppressEvents) {
-        var listeners = ProblemDataChanged;
-        if (listeners != null) listeners(this, e);
-      }
-    }
-
-    private void RegisterParameterEventHandlers() {
-      DatasetParameter.ValueChanged += new EventHandler(DatasetParameter_ValueChanged);
-      InputVariablesParameter.ValueChanged += new EventHandler(InputVariablesParameter_ValueChanged);
-      TargetVariableParameter.ValueChanged += new EventHandler(TargetVariableParameter_ValueChanged);
-      TrainingSamplesStartParameter.ValueChanged += new EventHandler(TrainingSamplesStartParameter_ValueChanged);
-      TrainingSamplesEndParameter.ValueChanged += new EventHandler(TrainingSamplesEndParameter_ValueChanged);
-      TestSamplesStartParameter.ValueChanged += new EventHandler(TestSamplesStartParameter_ValueChanged);
-      TestSamplesEndParameter.ValueChanged += new EventHandler(TestSamplesEndParameter_ValueChanged);
-      ValidationPercentageParameter.ValueChanged += new EventHandler(ValidationPercentageParameter_ValueChanged);
-    }
-
-    private void RegisterParameterValueEventHandlers() {
-      RegisterInputVariablesEventHandlers();
-      if (TargetVariable != null) RegisterStringValueEventHandlers(TargetVariable);
-      RegisterValueTypeEventHandlers(TrainingSamplesStart);
-      RegisterValueTypeEventHandlers(TrainingSamplesEnd);
-      RegisterValueTypeEventHandlers(TestSamplesStart);
-      RegisterValueTypeEventHandlers(TestSamplesEnd);
-      RegisterValueTypeEventHandlers(ValidationPercentage);
-    }
-
-
-    #region parameter value changed event handlers
-    private void DatasetParameter_ValueChanged(object sender, EventArgs e) {
-      OnProblemDataChanged(EventArgs.Empty);
-    }
-    private void InputVariablesParameter_ValueChanged(object sender, EventArgs e) {
-      RegisterInputVariablesEventHandlers();
-      OnProblemDataChanged(EventArgs.Empty);
-    }
-    private void TargetVariableParameter_ValueChanged(object sender, EventArgs e) {
-      if (TargetVariable != null) {
-        RegisterStringValueEventHandlers(TargetVariable);
-        OnProblemDataChanged(EventArgs.Empty);
-      }
-    }
-    private void TrainingSamplesStartParameter_ValueChanged(object sender, EventArgs e) {
-      RegisterValueTypeEventHandlers(TrainingSamplesStart);
-      OnProblemDataChanged(EventArgs.Empty);
-    }
-    private void TrainingSamplesEndParameter_ValueChanged(object sender, EventArgs e) {
-      RegisterValueTypeEventHandlers(TrainingSamplesEnd);
-      OnProblemDataChanged(EventArgs.Empty);
-    }
-    private void TestSamplesStartParameter_ValueChanged(object sender, EventArgs e) {
-      RegisterValueTypeEventHandlers(TestSamplesStart);
-      OnProblemDataChanged(EventArgs.Empty);
-    }
-    private void TestSamplesEndParameter_ValueChanged(object sender, EventArgs e) {
-      RegisterValueTypeEventHandlers(TestSamplesEnd);
-      OnProblemDataChanged(EventArgs.Empty);
-    }
-    private void ValidationPercentageParameter_ValueChanged(object sender, EventArgs e) {
-      RegisterValueTypeEventHandlers(ValidationPercentage);
-      OnProblemDataChanged(EventArgs.Empty);
-    }
-    #endregion
-
-    private void RegisterInputVariablesEventHandlers() {
-      InputVariables.CollectionReset += new HeuristicLab.Collections.CollectionItemsChangedEventHandler<HeuristicLab.Collections.IndexedItem<StringValue>>(InputVariables_CollectionReset);
-      InputVariables.ItemsAdded += new HeuristicLab.Collections.CollectionItemsChangedEventHandler<HeuristicLab.Collections.IndexedItem<StringValue>>(InputVariables_ItemsAdded);
-      InputVariables.ItemsRemoved += new HeuristicLab.Collections.CollectionItemsChangedEventHandler<HeuristicLab.Collections.IndexedItem<StringValue>>(InputVariables_ItemsRemoved);
-      InputVariables.CheckedItemsChanged += new HeuristicLab.Collections.CollectionItemsChangedEventHandler<HeuristicLab.Collections.IndexedItem<StringValue>>(InputVariables_CheckedItemsChanged);
-      foreach (var item in InputVariables) {
-        item.ValueChanged += new EventHandler(InputVariable_ValueChanged);
-      }
-    }
-
-    private void DeregisterInputVariablesEventHandlers() {
-      InputVariables.CollectionReset -= new HeuristicLab.Collections.CollectionItemsChangedEventHandler<HeuristicLab.Collections.IndexedItem<StringValue>>(InputVariables_CollectionReset);
-      InputVariables.ItemsAdded -= new HeuristicLab.Collections.CollectionItemsChangedEventHandler<HeuristicLab.Collections.IndexedItem<StringValue>>(InputVariables_ItemsAdded);
-      InputVariables.ItemsRemoved -= new HeuristicLab.Collections.CollectionItemsChangedEventHandler<HeuristicLab.Collections.IndexedItem<StringValue>>(InputVariables_ItemsRemoved);
-      InputVariables.CheckedItemsChanged -= new HeuristicLab.Collections.CollectionItemsChangedEventHandler<HeuristicLab.Collections.IndexedItem<StringValue>>(InputVariables_CheckedItemsChanged);
-      foreach (var item in InputVariables) {
-        item.ValueChanged -= new EventHandler(InputVariable_ValueChanged);
-      }
-    }
-
-    private void InputVariables_CheckedItemsChanged(object sender, HeuristicLab.Collections.CollectionItemsChangedEventArgs<HeuristicLab.Collections.IndexedItem<StringValue>> e) {
-      OnProblemDataChanged(e);
-    }
-    private void InputVariables_ItemsRemoved(object sender, HeuristicLab.Collections.CollectionItemsChangedEventArgs<HeuristicLab.Collections.IndexedItem<StringValue>> e) {
-      foreach (var indexedItem in e.Items)
-        indexedItem.Value.ValueChanged -= new EventHandler(InputVariable_ValueChanged);
-      OnProblemDataChanged(e);
-    }
-    private void InputVariables_ItemsAdded(object sender, HeuristicLab.Collections.CollectionItemsChangedEventArgs<HeuristicLab.Collections.IndexedItem<StringValue>> e) {
-      foreach (var indexedItem in e.Items)
-        indexedItem.Value.ValueChanged += new EventHandler(InputVariable_ValueChanged);
-      OnProblemDataChanged(e);
-    }
-    private void InputVariables_CollectionReset(object sender, HeuristicLab.Collections.CollectionItemsChangedEventArgs<HeuristicLab.Collections.IndexedItem<StringValue>> e) {
-      foreach (var indexedItem in e.OldItems)
-        indexedItem.Value.ValueChanged -= new EventHandler(InputVariable_ValueChanged);
-      OnProblemDataChanged(e);
-    }
-    private void InputVariable_ValueChanged(object sender, EventArgs e) {
-      OnProblemDataChanged(e);
-    }
-
-    #region helper
-    private void RegisterValueTypeEventHandlers<T>(ValueTypeValue<T> value) where T : struct {
-      value.ValueChanged += new EventHandler(value_ValueChanged);
-    }
-    private void DeregisterValueTypeEventHandlers<T>(ValueTypeValue<T> value) where T : struct {
-      value.ValueChanged -= new EventHandler(value_ValueChanged);
-    }
-    private void RegisterStringValueEventHandlers(StringValue value) {
-      value.ValueChanged += new EventHandler(value_ValueChanged);
-    }
-    private void DeregisterStringValueEventHandlers(StringValue value) {
-      value.ValueChanged -= new EventHandler(value_ValueChanged);
-    }
-
-    private void value_ValueChanged(object sender, EventArgs e) {
-      OnProblemDataChanged(e);
-    }
-    #endregion
-    #endregion
-
-    public virtual void ImportFromFile(string fileName) {
-      var csvFileParser = new TableFileParser();
-      csvFileParser.Parse(fileName);
-      suppressEvents = true;
-      Name = "Data imported from " + Path.GetFileName(fileName);
-      Dataset = new Dataset(csvFileParser.VariableNames, csvFileParser.Values);
-      Dataset.Name = Path.GetFileName(fileName);
-      var variableNames = Dataset.VariableNames.Select(x => new StringValue(x).AsReadOnly()).ToList();
-      ((ConstrainedValueParameter<StringValue>)TargetVariableParameter).ValidValues.Clear();
-      foreach (var variableName in variableNames)
-        ((ConstrainedValueParameter<StringValue>)TargetVariableParameter).ValidValues.Add(variableName);
-      TargetVariable = variableNames.First();
-      InputVariables = new CheckedItemList<StringValue>(variableNames).AsReadOnly();
-      InputVariables.SetItemCheckedState(variableNames.First(), false);
-      int middle = (int)(csvFileParser.Rows * 0.5);
-      TrainingSamplesEnd = new IntValue(middle);
-      TrainingSamplesStart = new IntValue(0);
-      TestSamplesEnd = new IntValue(csvFileParser.Rows);
-      TestSamplesStart = new IntValue(middle);
-      suppressEvents = false;
-      OnProblemDataChanged(EventArgs.Empty);
-    }
-  }
-}
Index: branches/DataAnalysis Refactoring/HeuristicLab.Problems.DataAnalysis/3.4/DataAnalysisSolution.cs
===================================================================
--- branches/DataAnalysis Refactoring/HeuristicLab.Problems.DataAnalysis/3.4/DataAnalysisSolution.cs	(revision 5482)
+++ 	(revision )
@@ -1,164 +1,0 @@
-#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2011 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.Linq;
-using HeuristicLab.Common;
-using HeuristicLab.Core;
-using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
-
-namespace HeuristicLab.Problems.DataAnalysis {
-  /// <summary>
-  /// Represents a solution for a data analysis problem which can be visualized in the GUI.
-  /// </summary>
-  [Item("DataAnalysisSolution", "Represents a solution for a data analysis problem which can be visualized in the GUI.")]
-  [StorableClass]
-  public abstract class DataAnalysisSolution : NamedItem, IStorableContent {
-    #region IStorableContent Members
-    public string Filename { get; set; }
-    #endregion
-
-    [StorableConstructor]
-    protected DataAnalysisSolution(bool deserializing) : base(deserializing) { }
-    protected DataAnalysisSolution(DataAnalysisSolution original, Cloner cloner)
-      : base(original, cloner) {
-      problemData = (DataAnalysisProblemData)cloner.Clone(original.problemData);
-      model = (IDataAnalysisModel)cloner.Clone(original.model);
-      lowerEstimationLimit = original.lowerEstimationLimit;
-      upperEstimationLimit = original.upperEstimationLimit;
-      AfterDeserialization();
-    }
-    protected DataAnalysisSolution()
-      : base() { }
-    protected DataAnalysisSolution(DataAnalysisProblemData problemData) : this(problemData, double.NegativeInfinity, double.PositiveInfinity) { }
-    protected DataAnalysisSolution(DataAnalysisProblemData problemData, double lowerEstimationLimit, double upperEstimationLimit)
-      : this() {
-      this.problemData = problemData;
-      this.lowerEstimationLimit = lowerEstimationLimit;
-      this.upperEstimationLimit = upperEstimationLimit;
-      AfterDeserialization();
-    }
-
-    [StorableHook(HookType.AfterDeserialization)]
-    private void AfterDeserialization() {
-      if (problemData != null)
-        RegisterProblemDataEvents();
-    }
-
-    [Storable]
-    private DataAnalysisProblemData problemData;
-    public DataAnalysisProblemData ProblemData {
-      get { return problemData; }
-      set {
-        if (problemData != value) {
-          if (value == null) throw new ArgumentNullException();
-          if (model != null && problemData != null && !problemData.InputVariables.Select(c => c.Value).SequenceEqual(
-            value.InputVariables.Select(c => c.Value)))
-            throw new ArgumentException("Could not set new problem data with different structure");
-
-          if (problemData != null) DeregisterProblemDataEvents();
-          problemData = value;
-          RegisterProblemDataEvents();
-          OnProblemDataChanged();
-          RecalculateEstimatedValues();
-        }
-      }
-    }
-
-    [Storable]
-    private IDataAnalysisModel model;
-    public IDataAnalysisModel Model {
-      get { return model; }
-      set {
-        if (model != value) {
-          if (value == null) throw new ArgumentNullException();
-          model = value;
-          OnModelChanged();
-          RecalculateEstimatedValues();
-        }
-      }
-    }
-
-    [Storable]
-    private double lowerEstimationLimit;
-    public double LowerEstimationLimit {
-      get { return lowerEstimationLimit; }
-      set {
-        if (lowerEstimationLimit != value) {
-          lowerEstimationLimit = value;
-          RecalculateEstimatedValues();
-        }
-      }
-    }
-
-    [Storable]
-    private double upperEstimationLimit;
-    public double UpperEstimationLimit {
-      get { return upperEstimationLimit; }
-      set {
-        if (upperEstimationLimit != value) {
-          upperEstimationLimit = value;
-          RecalculateEstimatedValues();
-        }
-      }
-    }
-
-    public abstract IEnumerable<double> EstimatedValues { get; }
-    public abstract IEnumerable<double> EstimatedTrainingValues { get; }
-    public abstract IEnumerable<double> EstimatedTestValues { get; }
-    protected abstract void RecalculateEstimatedValues();
-
-    #region Events
-    protected virtual void RegisterProblemDataEvents() {
-      ProblemData.ProblemDataChanged += new EventHandler(ProblemData_Changed);
-    }
-    protected virtual void DeregisterProblemDataEvents() {
-      ProblemData.ProblemDataChanged += new EventHandler(ProblemData_Changed);
-    }
-    private void ProblemData_Changed(object sender, EventArgs e) {
-      OnProblemDataChanged();
-    }
-
-    public event EventHandler ProblemDataChanged;
-    protected virtual void OnProblemDataChanged() {
-      var listeners = ProblemDataChanged;
-      if (listeners != null)
-        listeners(this, EventArgs.Empty);
-    }
-
-    public event EventHandler ModelChanged;
-    protected virtual void OnModelChanged() {
-      EventHandler listeners = ModelChanged;
-      if (listeners != null)
-        listeners(this, EventArgs.Empty);
-    }
-
-    public event EventHandler EstimatedValuesChanged;
-    protected virtual void OnEstimatedValuesChanged() {
-      var listeners = EstimatedValuesChanged;
-      if (listeners != null)
-        listeners(this, EventArgs.Empty);
-    }
-    #endregion
-
-  }
-}
Index: branches/DataAnalysis Refactoring/HeuristicLab.Problems.DataAnalysis/3.4/DataFormatException.cs
===================================================================
--- branches/DataAnalysis Refactoring/HeuristicLab.Problems.DataAnalysis/3.4/DataFormatException.cs	(revision 5482)
+++ 	(revision )
@@ -1,44 +1,0 @@
-﻿#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2011 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.Runtime.Serialization;
-
-namespace HeuristicLab.Problems.DataAnalysis {
-  [Serializable]
-  public class DataFormatException : Exception {
-    private int line;
-    public int Line {
-      get { return line; }
-    }
-    private string token;
-    public string Token {
-      get { return token; }
-    }
-    public DataFormatException(string message, string token, int line)
-      : base(message + "\nToken: " + token + " (line: " + line + ")") {
-      this.token = token;
-      this.line = line;
-    }
-
-    public DataFormatException(SerializationInfo info, StreamingContext context) : base(info, context) { }
-  }
-}
Index: branches/DataAnalysis Refactoring/HeuristicLab.Problems.DataAnalysis/3.4/HeuristicLab.Problems.DataAnalysis-3.4.csproj
===================================================================
--- branches/DataAnalysis Refactoring/HeuristicLab.Problems.DataAnalysis/3.4/HeuristicLab.Problems.DataAnalysis-3.4.csproj	(revision 5482)
+++ branches/DataAnalysis Refactoring/HeuristicLab.Problems.DataAnalysis/3.4/HeuristicLab.Problems.DataAnalysis-3.4.csproj	(revision 5484)
@@ -108,35 +108,24 @@
   </ItemGroup>
   <ItemGroup>
+    <Compile Include="Dataset.cs" />
+    <Compile Include="Interfaces\IDataAnalysisEvaluator.cs" />
+    <Compile Include="Interfaces\IDataAnalysisProblemData.cs" />
+    <Compile Include="Interfaces\IDataAnalysisSolution.cs" />
+    <Compile Include="Interfaces\IDataAnalysisSolutionCreator.cs" />
     <Compile Include="TableFileParser.cs" />
     <None Include="HeuristicLab.snk" />
     <None Include="HeuristicLabProblemsDataAnalysisPlugin.cs.frame" />
     <None Include="Properties\AssemblyInfo.frame" />
-    <Compile Include="Evaluators\OnlineCovarianceEvaluator.cs" />
-    <Compile Include="Evaluators\OnlineMeanAndVarianceCalculator.cs" />
-    <Compile Include="Evaluators\OnlineNormalizedMeanSquaredErrorEvaluator.cs" />
-    <Compile Include="DataAnalysisSolution.cs" />
-    <Compile Include="DataAnalysisProblem.cs" />
-    <Compile Include="DataAnalysisProblemData.cs" />
-    <Compile Include="DataFormatException.cs" />
-    <Compile Include="Dataset.cs" />
-    <Compile Include="Evaluators\OnlineMeanAbsolutePercentageErrorEvaluator.cs" />
-    <Compile Include="Evaluators\OnlineMeanSquaredErrorEvaluator.cs" />
-    <Compile Include="Evaluators\OnlinePearsonsRSquaredEvaluator.cs" />
-    <Compile Include="Evaluators\SimpleEvaluator.cs" />
-    <Compile Include="Evaluators\SimpleMeanAbsolutePercentageErrorEvaluator.cs" />
-    <Compile Include="Evaluators\SimpleMeanAbsolutePercentageOfRangeErrorEvaluator.cs" />
-    <Compile Include="Evaluators\SimpleMSEEvaluator.cs" />
-    <Compile Include="Evaluators\SimpleNMSEEvaluator.cs" />
-    <Compile Include="Evaluators\SimpleRSquaredEvaluator.cs" />
-    <Compile Include="Evaluators\SimpleVarianceAccountedForEvaluator.cs" />
+    <Compile Include="Online Evaluators\OnlineCovarianceEvaluator.cs" />
+    <Compile Include="Online Evaluators\OnlineMeanAndVarianceCalculator.cs" />
+    <Compile Include="Online Evaluators\OnlineNormalizedMeanSquaredErrorEvaluator.cs" />
+    <Compile Include="Online Evaluators\OnlineMeanAbsolutePercentageErrorEvaluator.cs" />
+    <Compile Include="Online Evaluators\OnlineMeanSquaredErrorEvaluator.cs" />
+    <Compile Include="Online Evaluators\OnlinePearsonsRSquaredEvaluator.cs" />
     <Compile Include="HeuristicLabProblemsDataAnalysisPlugin.cs" />
-    <Compile Include="Interfaces\ILaggedTreeNode.cs" />
-    <Compile Include="Interfaces\ISingleObjectiveDataAnalysisProblem.cs" />
     <Compile Include="Interfaces\IDataAnalysisModel.cs" />
     <Compile Include="Interfaces\IDataAnalysisProblem.cs" />
-    <Compile Include="Interfaces\IOnlineEvaluator.cs" />
-    <Compile Include="MatrixExtensions.cs" />
+    <Compile Include="Online Evaluators\IOnlineEvaluator.cs" />
     <Compile Include="Properties\AssemblyInfo.cs" />
-    <Compile Include="RandomEnumerable.cs" />
   </ItemGroup>
   <ItemGroup>
@@ -160,8 +149,4 @@
       <Project>{BBAB9DF5-5EF3-4BA8-ADE9-B36E82114937}</Project>
       <Name>HeuristicLab.Data-3.3</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\..\HeuristicLab.Encodings.SymbolicExpressionTreeEncoding\3.3\HeuristicLab.Encodings.SymbolicExpressionTreeEncoding-3.3.csproj">
-      <Project>{125D3006-67F5-48CB-913E-73C0548F17FA}</Project>
-      <Name>HeuristicLab.Encodings.SymbolicExpressionTreeEncoding-3.3</Name>
     </ProjectReference>
     <ProjectReference Include="..\..\HeuristicLab.ExtLibs\HeuristicLab.ALGLIB\3.1.0\ALGLIB-3.1.0\ALGLIB-3.1.0.csproj">
Index: branches/DataAnalysis Refactoring/HeuristicLab.Problems.DataAnalysis/3.4/Interfaces/IDataAnalysisEvaluator.cs
===================================================================
--- branches/DataAnalysis Refactoring/HeuristicLab.Problems.DataAnalysis/3.4/Interfaces/IDataAnalysisEvaluator.cs	(revision 5484)
+++ branches/DataAnalysis Refactoring/HeuristicLab.Problems.DataAnalysis/3.4/Interfaces/IDataAnalysisEvaluator.cs	(revision 5484)
@@ -0,0 +1,27 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2011 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 HeuristicLab.Optimization;
+
+namespace HeuristicLab.Problems.DataAnalysis {
+  public interface IDataAnalysisEvaluator : IEvaluator {
+  }
+}
Index: branches/DataAnalysis Refactoring/HeuristicLab.Problems.DataAnalysis/3.4/Interfaces/IDataAnalysisModel.cs
===================================================================
--- branches/DataAnalysis Refactoring/HeuristicLab.Problems.DataAnalysis/3.4/Interfaces/IDataAnalysisModel.cs	(revision 5482)
+++ branches/DataAnalysis Refactoring/HeuristicLab.Problems.DataAnalysis/3.4/Interfaces/IDataAnalysisModel.cs	(revision 5484)
@@ -25,5 +25,5 @@
 namespace HeuristicLab.Problems.DataAnalysis {
   public interface IDataAnalysisModel : INamedItem {
-    IEnumerable<double> GetEstimatedValues(DataAnalysisProblemData problemData, int start, int end);
+    IEnumerable<double> GetEstimatedValues(IDataAnalysisProblemData problemData, int start, int end);
   }
 }
Index: branches/DataAnalysis Refactoring/HeuristicLab.Problems.DataAnalysis/3.4/Interfaces/IDataAnalysisProblem.cs
===================================================================
--- branches/DataAnalysis Refactoring/HeuristicLab.Problems.DataAnalysis/3.4/Interfaces/IDataAnalysisProblem.cs	(revision 5482)
+++ branches/DataAnalysis Refactoring/HeuristicLab.Problems.DataAnalysis/3.4/Interfaces/IDataAnalysisProblem.cs	(revision 5484)
@@ -24,5 +24,7 @@
 namespace HeuristicLab.Problems.DataAnalysis {
   public interface IDataAnalysisProblem : IProblem {
-    DataAnalysisProblemData DataAnalysisProblemData { get; }
+    IDataAnalysisProblemData DataAnalysisProblemData { get; }
+    new IDataAnalysisEvaluator Evaluator { get; }
+    new IDataAnalysisSolutionCreator SolutionCreator { get; }
   }
 }
Index: branches/DataAnalysis Refactoring/HeuristicLab.Problems.DataAnalysis/3.4/Interfaces/IDataAnalysisProblemData.cs
===================================================================
--- branches/DataAnalysis Refactoring/HeuristicLab.Problems.DataAnalysis/3.4/Interfaces/IDataAnalysisProblemData.cs	(revision 5484)
+++ branches/DataAnalysis Refactoring/HeuristicLab.Problems.DataAnalysis/3.4/Interfaces/IDataAnalysisProblemData.cs	(revision 5484)
@@ -0,0 +1,29 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2011 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.Collections.Generic;
+namespace HeuristicLab.Problems.DataAnalysis {
+  public interface IDataAnalysisProblemData {
+    Dataset Dataset { get; }
+    IEnumerable<string> InputVariables { get; }
+  }
+}
Index: branches/DataAnalysis Refactoring/HeuristicLab.Problems.DataAnalysis/3.4/Interfaces/IDataAnalysisSolution.cs
===================================================================
--- branches/DataAnalysis Refactoring/HeuristicLab.Problems.DataAnalysis/3.4/Interfaces/IDataAnalysisSolution.cs	(revision 5484)
+++ branches/DataAnalysis Refactoring/HeuristicLab.Problems.DataAnalysis/3.4/Interfaces/IDataAnalysisSolution.cs	(revision 5484)
@@ -0,0 +1,28 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2011 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.Problems.DataAnalysis {
+  public interface IDataAnalysisSolution {
+    IDataAnalysisModel Model { get; }
+    IDataAnalysisProblemData Problem { get; }
+  }
+}
Index: branches/DataAnalysis Refactoring/HeuristicLab.Problems.DataAnalysis/3.4/Interfaces/IDataAnalysisSolutionCreator.cs
===================================================================
--- branches/DataAnalysis Refactoring/HeuristicLab.Problems.DataAnalysis/3.4/Interfaces/IDataAnalysisSolutionCreator.cs	(revision 5484)
+++ branches/DataAnalysis Refactoring/HeuristicLab.Problems.DataAnalysis/3.4/Interfaces/IDataAnalysisSolutionCreator.cs	(revision 5484)
@@ -0,0 +1,27 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2011 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 HeuristicLab.Optimization;
+
+namespace HeuristicLab.Problems.DataAnalysis {
+  public interface IDataAnalysisSolutionCreator : ISolutionCreator {
+  }
+}
Index: branches/DataAnalysis Refactoring/HeuristicLab.Problems.DataAnalysis/3.4/Interfaces/ILaggedTreeNode.cs
===================================================================
--- branches/DataAnalysis Refactoring/HeuristicLab.Problems.DataAnalysis/3.4/Interfaces/ILaggedTreeNode.cs	(revision 5482)
+++ 	(revision )
@@ -1,28 +1,0 @@
-﻿#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2011 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 HeuristicLab.Encodings.SymbolicExpressionTreeEncoding;
-namespace HeuristicLab.Problems.DataAnalysis {
-  public interface ILaggedTreeNode : ISymbolicExpressionTreeNode {
-    int Lag { get; set; }
-  }
-}
Index: branches/DataAnalysis Refactoring/HeuristicLab.Problems.DataAnalysis/3.4/Interfaces/IOnlineEvaluator.cs
===================================================================
--- branches/DataAnalysis Refactoring/HeuristicLab.Problems.DataAnalysis/3.4/Interfaces/IOnlineEvaluator.cs	(revision 5482)
+++ 	(revision )
@@ -1,29 +1,0 @@
-#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2011 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.Problems.DataAnalysis {
-  public interface IOnlineEvaluator {
-    double Value { get; }
-    void Reset();
-    void Add(double original, double estimated);
-  }
-}
Index: branches/DataAnalysis Refactoring/HeuristicLab.Problems.DataAnalysis/3.4/Interfaces/ISingleObjectiveDataAnalysisProblem.cs
===================================================================
--- branches/DataAnalysis Refactoring/HeuristicLab.Problems.DataAnalysis/3.4/Interfaces/ISingleObjectiveDataAnalysisProblem.cs	(revision 5482)
+++ 	(revision )
@@ -1,26 +1,0 @@
-#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2011 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 HeuristicLab.Optimization;
-namespace HeuristicLab.Problems.DataAnalysis {
-  public interface ISingleObjectiveDataAnalysisProblem : ISingleObjectiveProblem, IDataAnalysisProblem {
-  }
-}
Index: branches/DataAnalysis Refactoring/HeuristicLab.Problems.DataAnalysis/3.4/MatrixExtensions.cs
===================================================================
--- branches/DataAnalysis Refactoring/HeuristicLab.Problems.DataAnalysis/3.4/MatrixExtensions.cs	(revision 5482)
+++ 	(revision )
@@ -1,46 +1,0 @@
-﻿#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2011 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;
-
-namespace HeuristicLab.Problems.DataAnalysis {
-  public static class MatrixExtensions<T> {
-    public static T[,] Create(T[] first, T[] second) {
-      if (first.Length != second.Length)
-        throw new ArgumentException("Both arrays must be of same length.");
-      T[,] array = new T[first.Length, 2];
-      for (int i = 0; i < first.Length; i++) {
-        array[i, 0] = first[i];
-        array[i, 1] = second[i];
-      }
-      return array;
-    }
-
-    public static T[] GetColumn(T[,] matrix, int column) {
-      if (column >= matrix.GetLength(1)) throw new ArgumentException("Invalid column index: " + column + ". Matrix has only " + matrix.GetLength(1) + " columns.");
-      T[] result = new T[matrix.GetLength(0)];
-      for (int i = 0; i < result.Length; i++) {
-        result[i] = matrix[i, column];
-      }
-      return result;
-    }
-  }
-}
Index: branches/DataAnalysis Refactoring/HeuristicLab.Problems.DataAnalysis/3.4/Online Evaluators/IOnlineEvaluator.cs
===================================================================
--- branches/DataAnalysis Refactoring/HeuristicLab.Problems.DataAnalysis/3.4/Online Evaluators/IOnlineEvaluator.cs	(revision 5484)
+++ branches/DataAnalysis Refactoring/HeuristicLab.Problems.DataAnalysis/3.4/Online Evaluators/IOnlineEvaluator.cs	(revision 5484)
@@ -0,0 +1,29 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2011 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.Problems.DataAnalysis {
+  public interface IOnlineEvaluator {
+    double Value { get; }
+    void Reset();
+    void Add(double original, double estimated);
+  }
+}
Index: branches/DataAnalysis Refactoring/HeuristicLab.Problems.DataAnalysis/3.4/Online Evaluators/OnlineCovarianceEvaluator.cs
===================================================================
--- branches/DataAnalysis Refactoring/HeuristicLab.Problems.DataAnalysis/3.4/Online Evaluators/OnlineCovarianceEvaluator.cs	(revision 5484)
+++ branches/DataAnalysis Refactoring/HeuristicLab.Problems.DataAnalysis/3.4/Online Evaluators/OnlineCovarianceEvaluator.cs	(revision 5484)
@@ -0,0 +1,70 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2011 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;
+
+namespace HeuristicLab.Problems.DataAnalysis.Evaluators {
+  public class OnlineCovarianceEvaluator : IOnlineEvaluator {
+
+    private double originalMean, estimatedMean, Cn;
+    private int n;
+    public double Covariance {
+      get {
+        if (n < 1)
+          throw new InvalidOperationException("No elements");
+        else
+          return Cn / n;
+      }
+    }
+
+    public OnlineCovarianceEvaluator() {
+      Reset();
+    }
+
+    #region IOnlineEvaluator Members
+    public double Value {
+      get { return Covariance; }
+    }
+    public void Reset() {
+      n = 0;
+      Cn = 0.0;
+      originalMean = 0.0;
+      estimatedMean = 0.0;
+    }
+
+    public void Add(double original, double estimated) {
+      if (double.IsNaN(estimated) || double.IsInfinity(estimated) ||
+          double.IsNaN(original) || double.IsInfinity(original)) {
+        throw new ArgumentException("Covariance is not defined for series containing NaN or infinity elements");
+      } else {
+        n++;
+        // online calculation of tMean
+        originalMean = originalMean + (original - originalMean) / n;
+        double delta = estimated - estimatedMean; // delta = (y - yMean(n-1))
+        estimatedMean = estimatedMean + delta / n;
+
+        // online calculation of covariance
+        Cn = Cn + delta * (original - originalMean); // C(n) = C(n-1) + (y - yMean(n-1)) (t - tMean(n))       
+      }
+    }
+    #endregion
+  }
+}
Index: branches/DataAnalysis Refactoring/HeuristicLab.Problems.DataAnalysis/3.4/Online Evaluators/OnlineMeanAbsolutePercentageErrorEvaluator.cs
===================================================================
--- branches/DataAnalysis Refactoring/HeuristicLab.Problems.DataAnalysis/3.4/Online Evaluators/OnlineMeanAbsolutePercentageErrorEvaluator.cs	(revision 5484)
+++ branches/DataAnalysis Refactoring/HeuristicLab.Problems.DataAnalysis/3.4/Online Evaluators/OnlineMeanAbsolutePercentageErrorEvaluator.cs	(revision 5484)
@@ -0,0 +1,66 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2011 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 HeuristicLab.Common;
+
+namespace HeuristicLab.Problems.DataAnalysis.Evaluators {
+  public class OnlineMeanAbsolutePercentageErrorEvaluator : IOnlineEvaluator {
+
+    private double sre;
+    private int n;
+    public double MeanAbsolutePercentageError {
+      get {
+        if (n < 1)
+          throw new InvalidOperationException("No elements");
+        else
+          return sre / n;
+      }
+    }
+
+    public OnlineMeanAbsolutePercentageErrorEvaluator() {
+      Reset();
+    }
+
+    #region IOnlineEvaluator Members
+    public double Value {
+      get { return MeanAbsolutePercentageError; }
+    }
+    public void Reset() {
+      n = 0;
+      sre = 0.0;
+    }
+
+    public void Add(double original, double estimated) {
+      if (double.IsNaN(estimated) || double.IsInfinity(estimated) ||
+          double.IsNaN(original) || double.IsInfinity(original)) {
+        throw new ArgumentException("Relative error is not defined for variables with NaN or infinity values.");
+      } else {
+        if (!original.IsAlmost(0.0)) {
+          sre += Math.Abs((estimated - original) / original);
+          n++;
+        }
+      }
+    }
+
+    #endregion
+  }
+}
Index: branches/DataAnalysis Refactoring/HeuristicLab.Problems.DataAnalysis/3.4/Online Evaluators/OnlineMeanAndVarianceCalculator.cs
===================================================================
--- branches/DataAnalysis Refactoring/HeuristicLab.Problems.DataAnalysis/3.4/Online Evaluators/OnlineMeanAndVarianceCalculator.cs	(revision 5484)
+++ branches/DataAnalysis Refactoring/HeuristicLab.Problems.DataAnalysis/3.4/Online Evaluators/OnlineMeanAndVarianceCalculator.cs	(revision 5484)
@@ -0,0 +1,80 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2011 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;
+
+namespace HeuristicLab.Problems.DataAnalysis.Evaluators {
+  public class OnlineMeanAndVarianceCalculator {
+
+    private double m_oldM, m_newM, m_oldS, m_newS;
+    private int n;
+
+    public double Variance {
+      get {
+        return (n > 1) ? m_newS / (n - 1) : 0.0;
+      }
+    }
+
+    public double PopulationVariance {
+      get {
+        return (n > 0) ? m_newS / n : 0.0;
+      }
+    }
+
+    public double Mean {
+      get {
+        return (n > 0) ? m_newM : 0.0;
+      }
+    }
+
+    public int Count {
+      get { return n; }
+    }
+
+    public OnlineMeanAndVarianceCalculator() {
+      Reset();
+    }
+
+    public void Reset() {
+      n = 0;
+    }
+
+    public void Add(double x) {
+      if (double.IsNaN(x) || double.IsInfinity(x)) {
+        throw new ArgumentException("Mean and variance are not defined for NaN or infinity elements");
+      } else {
+        n++;
+        // See Knuth TAOCP vol 2, 3rd edition, page 232
+        if (n == 1) {
+          m_oldM = m_newM = x;
+          m_oldS = 0.0;
+        } else {
+          m_newM = m_oldM + (x - m_oldM) / n;
+          m_newS = m_oldS + (x - m_oldM) * (x - m_newM);
+
+          // set up for next iteration
+          m_oldM = m_newM;
+          m_oldS = m_newS;
+        }
+      }
+    }
+  }
+}
Index: branches/DataAnalysis Refactoring/HeuristicLab.Problems.DataAnalysis/3.4/Online Evaluators/OnlineMeanSquaredErrorEvaluator.cs
===================================================================
--- branches/DataAnalysis Refactoring/HeuristicLab.Problems.DataAnalysis/3.4/Online Evaluators/OnlineMeanSquaredErrorEvaluator.cs	(revision 5484)
+++ branches/DataAnalysis Refactoring/HeuristicLab.Problems.DataAnalysis/3.4/Online Evaluators/OnlineMeanSquaredErrorEvaluator.cs	(revision 5484)
@@ -0,0 +1,63 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2011 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;
+
+namespace HeuristicLab.Problems.DataAnalysis.Evaluators {
+  public class OnlineMeanSquaredErrorEvaluator : IOnlineEvaluator {
+
+    private double sse;
+    private int n;
+    public double MeanSquaredError {
+      get {
+        if (n < 1)
+          throw new InvalidOperationException("No elements");
+        else
+          return sse / n;
+      }
+    }
+
+    public OnlineMeanSquaredErrorEvaluator() {
+      Reset();
+    }
+
+    #region IOnlineEvaluator Members
+    public double Value {
+      get { return MeanSquaredError; }
+    }
+    public void Reset() {
+      n = 0;
+      sse = 0.0;
+    }
+
+    public void Add(double original, double estimated) {
+      if (double.IsNaN(estimated) || double.IsInfinity(estimated) ||
+          double.IsNaN(original) || double.IsInfinity(original)) {
+        throw new ArgumentException("Mean squared error is not defined for NaN or infinity elements");
+      } else {
+        double error = estimated - original;
+        sse += error * error;
+        n++;
+      }
+    }
+    #endregion
+  }
+}
Index: branches/DataAnalysis Refactoring/HeuristicLab.Problems.DataAnalysis/3.4/Online Evaluators/OnlineNormalizedMeanSquaredErrorEvaluator.cs
===================================================================
--- branches/DataAnalysis Refactoring/HeuristicLab.Problems.DataAnalysis/3.4/Online Evaluators/OnlineNormalizedMeanSquaredErrorEvaluator.cs	(revision 5484)
+++ branches/DataAnalysis Refactoring/HeuristicLab.Problems.DataAnalysis/3.4/Online Evaluators/OnlineNormalizedMeanSquaredErrorEvaluator.cs	(revision 5484)
@@ -0,0 +1,63 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2011 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;
+
+namespace HeuristicLab.Problems.DataAnalysis.Evaluators {
+  public class OnlineNormalizedMeanSquaredErrorEvaluator : IOnlineEvaluator {
+    private OnlineMeanAndVarianceCalculator meanSquaredErrorCalculator;
+    private OnlineMeanAndVarianceCalculator originalVarianceCalculator;
+
+    public double NormalizedMeanSquaredError {
+      get {
+        return meanSquaredErrorCalculator.Mean / originalVarianceCalculator.Variance;
+      }
+    }
+
+    public OnlineNormalizedMeanSquaredErrorEvaluator() {
+      meanSquaredErrorCalculator = new OnlineMeanAndVarianceCalculator();
+      originalVarianceCalculator = new OnlineMeanAndVarianceCalculator();
+      Reset();
+    }
+
+    #region IOnlineEvaluator Members
+    public double Value {
+      get { return NormalizedMeanSquaredError; }
+    }
+
+    public void Reset() {
+      meanSquaredErrorCalculator.Reset();
+      originalVarianceCalculator.Reset();
+    }
+
+    public void Add(double original, double estimated) {
+      if (double.IsNaN(estimated) || double.IsInfinity(estimated) ||
+          double.IsNaN(original) || double.IsInfinity(original)) {
+        throw new ArgumentException("Mean squared error is not defined for NaN or infinity elements");
+      } else {
+        double error = estimated - original;
+        meanSquaredErrorCalculator.Add(error * error);
+        originalVarianceCalculator.Add(original);
+      }
+    }
+    #endregion
+  }
+}
Index: branches/DataAnalysis Refactoring/HeuristicLab.Problems.DataAnalysis/3.4/Online Evaluators/OnlinePearsonsRSquaredEvaluator.cs
===================================================================
--- branches/DataAnalysis Refactoring/HeuristicLab.Problems.DataAnalysis/3.4/Online Evaluators/OnlinePearsonsRSquaredEvaluator.cs	(revision 5484)
+++ branches/DataAnalysis Refactoring/HeuristicLab.Problems.DataAnalysis/3.4/Online Evaluators/OnlinePearsonsRSquaredEvaluator.cs	(revision 5484)
@@ -0,0 +1,71 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2011 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 HeuristicLab.Common;
+
+namespace HeuristicLab.Problems.DataAnalysis.Evaluators {
+  public class OnlinePearsonsRSquaredEvaluator : IOnlineEvaluator {
+    private OnlineCovarianceEvaluator covEvaluator = new OnlineCovarianceEvaluator();
+    private OnlineMeanAndVarianceCalculator sxEvaluator = new OnlineMeanAndVarianceCalculator();
+    private OnlineMeanAndVarianceCalculator syEvaluator = new OnlineMeanAndVarianceCalculator();
+
+    public double RSquared {
+      get {
+        double xVar = sxEvaluator.PopulationVariance;
+        double yVar = syEvaluator.PopulationVariance;
+        if (xVar.IsAlmost(0.0) || yVar.IsAlmost(0.0)) {
+          return 0.0;
+        } else {
+          double r = covEvaluator.Covariance / (Math.Sqrt(xVar) * Math.Sqrt(yVar));
+          return r * r;
+        }
+      }
+    }
+
+    public OnlinePearsonsRSquaredEvaluator() { }
+
+    #region IOnlineEvaluator Members
+    public double Value {
+      get { return RSquared; }
+    }
+    public void Reset() {
+      covEvaluator.Reset();
+      sxEvaluator.Reset();
+      syEvaluator.Reset();
+    }
+
+    public void Add(double x, double y) {
+      if (IsInvalidValue(x) || IsInvalidValue(y)) {
+        throw new ArgumentException("R² is not defined for variables with NaN or infinity values.");
+      }
+      covEvaluator.Add(x, y);
+      sxEvaluator.Add(x);
+      syEvaluator.Add(y);
+    }
+
+    #endregion
+
+    private bool IsInvalidValue(double x) {
+      return double.IsNaN(x) || double.IsInfinity(x);
+    }
+  }
+}
Index: branches/DataAnalysis Refactoring/HeuristicLab.Problems.DataAnalysis/3.4/RandomEnumerable.cs
===================================================================
--- branches/DataAnalysis Refactoring/HeuristicLab.Problems.DataAnalysis/3.4/RandomEnumerable.cs	(revision 5482)
+++ 	(revision )
@@ -1,52 +1,0 @@
-﻿#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2011 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 HeuristicLab.Random;
-
-namespace HeuristicLab.Problems.DataAnalysis {
-  public class RandomEnumerable {
-    public static IEnumerable<int> SampleRandomNumbers(int maxElement, int count) {
-      return SampleRandomNumbers(Environment.TickCount, 0, maxElement, count);
-    }
-
-    public static IEnumerable<int> SampleRandomNumbers(int start, int end, int count) {
-      return SampleRandomNumbers(Environment.TickCount, start, end, count);
-    }
-
-    //algorithm taken from progamming pearls page 127
-    //IMPORTANT because IEnumerables with yield are used the seed must best be specified to return always 
-    //the same sequence of numbers without caching the values.
-    public static IEnumerable<int> SampleRandomNumbers(int seed, int start, int end, int count) {
-      int remaining = end - start;
-      var mt = new FastRandom(seed);
-      for (int i = start; i < end && count > 0; i++) {
-        double probability = mt.NextDouble();
-        if (probability < ((double)count) / remaining) {
-          count--;
-          yield return i;
-        }
-        remaining--;
-      }
-    }
-  }
-}
Index: branches/DataAnalysis Refactoring/HeuristicLab.Problems.DataAnalysis/3.4/TableFileParser.cs
===================================================================
--- branches/DataAnalysis Refactoring/HeuristicLab.Problems.DataAnalysis/3.4/TableFileParser.cs	(revision 5482)
+++ branches/DataAnalysis Refactoring/HeuristicLab.Problems.DataAnalysis/3.4/TableFileParser.cs	(revision 5484)
@@ -25,4 +25,5 @@
 using System.IO;
 using System.Linq;
+using System.Runtime.Serialization;
 using System.Text;
 
@@ -366,4 +367,23 @@
     }
     #endregion
+
+    [Serializable]
+    private class DataFormatException : Exception {
+      private int line;
+      public int Line {
+        get { return line; }
+      }
+      private string token;
+      public string Token {
+        get { return token; }
+      }
+      public DataFormatException(string message, string token, int line)
+        : base(message + "\nToken: " + token + " (line: " + line + ")") {
+        this.token = token;
+        this.line = line;
+      }
+
+      public DataFormatException(SerializationInfo info, StreamingContext context) : base(info, context) { }
+    }
   }
 }
Index: branches/DataAnalysis Refactoring/HeuristicLab.Random/3.3/HeuristicLab.Random-3.3.csproj
===================================================================
--- branches/DataAnalysis Refactoring/HeuristicLab.Random/3.3/HeuristicLab.Random-3.3.csproj	(revision 5482)
+++ branches/DataAnalysis Refactoring/HeuristicLab.Random/3.3/HeuristicLab.Random-3.3.csproj	(revision 5484)
@@ -119,4 +119,5 @@
     <Compile Include="Properties\AssemblyInfo.cs" />
     <Compile Include="RandomCreator.cs" />
+    <Compile Include="RandomEnumerable.cs" />
     <Compile Include="UniformRandomizer.cs" />
   </ItemGroup>
Index: branches/DataAnalysis Refactoring/HeuristicLab.Random/3.3/RandomEnumerable.cs
===================================================================
--- branches/DataAnalysis Refactoring/HeuristicLab.Random/3.3/RandomEnumerable.cs	(revision 5484)
+++ branches/DataAnalysis Refactoring/HeuristicLab.Random/3.3/RandomEnumerable.cs	(revision 5484)
@@ -0,0 +1,51 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2011 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;
+
+namespace HeuristicLab.Random {
+  public class RandomEnumerable {
+    public static IEnumerable<int> SampleRandomNumbers(int maxElement, int count) {
+      return SampleRandomNumbers(Environment.TickCount, 0, maxElement, count);
+    }
+
+    public static IEnumerable<int> SampleRandomNumbers(int start, int end, int count) {
+      return SampleRandomNumbers(Environment.TickCount, start, end, count);
+    }
+
+    //algorithm taken from progamming pearls page 127
+    //IMPORTANT because IEnumerables with yield are used the seed must best be specified to return always 
+    //the same sequence of numbers without caching the values.
+    public static IEnumerable<int> SampleRandomNumbers(int seed, int start, int end, int count) {
+      int remaining = end - start;
+      var mt = new FastRandom(seed);
+      for (int i = start; i < end && count > 0; i++) {
+        double probability = mt.NextDouble();
+        if (probability < ((double)count) / remaining) {
+          count--;
+          yield return i;
+        }
+        remaining--;
+      }
+    }
+  }
+}
