Index: /branches/ProblemInstancesRegressionAndClassification/HeuristicLab 3.3.sln
===================================================================
--- /branches/ProblemInstancesRegressionAndClassification/HeuristicLab 3.3.sln	(revision 7663)
+++ /branches/ProblemInstancesRegressionAndClassification/HeuristicLab 3.3.sln	(revision 7664)
@@ -20,10 +20,14 @@
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.Optimization.Views-3.3", "HeuristicLab.Optimization.Views\3.3\HeuristicLab.Optimization.Views-3.3.csproj", "{662B4B15-8F4D-4AE5-B3EB-D91C215F5AF2}"
 EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.Problems.Instances.Views-3.4", "HeuristicLab.Problems.Instances.Views\3.4\HeuristicLab.Problems.Instances.Views-3.4.csproj", "{1BFDCC58-E228-46DE-A36E-8503194B434D}"
+EndProject
 Global
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution
 		Debug|Any CPU = Debug|Any CPU
+		Debug|Mixed Platforms = Debug|Mixed Platforms
 		Debug|x64 = Debug|x64
 		Debug|x86 = Debug|x86
 		Release|Any CPU = Release|Any CPU
+		Release|Mixed Platforms = Release|Mixed Platforms
 		Release|x64 = Release|x64
 		Release|x86 = Release|x86
@@ -32,4 +36,6 @@
 		{DF87C13E-A889-46FF-8153-66DCAA8C5674}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{DF87C13E-A889-46FF-8153-66DCAA8C5674}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{DF87C13E-A889-46FF-8153-66DCAA8C5674}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
+		{DF87C13E-A889-46FF-8153-66DCAA8C5674}.Debug|Mixed Platforms.Build.0 = Debug|x86
 		{DF87C13E-A889-46FF-8153-66DCAA8C5674}.Debug|x64.ActiveCfg = Debug|x64
 		{DF87C13E-A889-46FF-8153-66DCAA8C5674}.Debug|x64.Build.0 = Debug|x64
@@ -38,4 +44,6 @@
 		{DF87C13E-A889-46FF-8153-66DCAA8C5674}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{DF87C13E-A889-46FF-8153-66DCAA8C5674}.Release|Any CPU.Build.0 = Release|Any CPU
+		{DF87C13E-A889-46FF-8153-66DCAA8C5674}.Release|Mixed Platforms.ActiveCfg = Release|x86
+		{DF87C13E-A889-46FF-8153-66DCAA8C5674}.Release|Mixed Platforms.Build.0 = Release|x86
 		{DF87C13E-A889-46FF-8153-66DCAA8C5674}.Release|x64.ActiveCfg = Release|x64
 		{DF87C13E-A889-46FF-8153-66DCAA8C5674}.Release|x64.Build.0 = Release|x64
@@ -44,4 +52,6 @@
 		{3E9E8944-44FF-40BB-A622-3A4A7DD0F198}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{3E9E8944-44FF-40BB-A622-3A4A7DD0F198}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{3E9E8944-44FF-40BB-A622-3A4A7DD0F198}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
+		{3E9E8944-44FF-40BB-A622-3A4A7DD0F198}.Debug|Mixed Platforms.Build.0 = Debug|x86
 		{3E9E8944-44FF-40BB-A622-3A4A7DD0F198}.Debug|x64.ActiveCfg = Debug|x64
 		{3E9E8944-44FF-40BB-A622-3A4A7DD0F198}.Debug|x64.Build.0 = Debug|x64
@@ -50,4 +60,6 @@
 		{3E9E8944-44FF-40BB-A622-3A4A7DD0F198}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{3E9E8944-44FF-40BB-A622-3A4A7DD0F198}.Release|Any CPU.Build.0 = Release|Any CPU
+		{3E9E8944-44FF-40BB-A622-3A4A7DD0F198}.Release|Mixed Platforms.ActiveCfg = Release|x86
+		{3E9E8944-44FF-40BB-A622-3A4A7DD0F198}.Release|Mixed Platforms.Build.0 = Release|x86
 		{3E9E8944-44FF-40BB-A622-3A4A7DD0F198}.Release|x64.ActiveCfg = Release|x64
 		{3E9E8944-44FF-40BB-A622-3A4A7DD0F198}.Release|x64.Build.0 = Release|x64
@@ -56,4 +68,6 @@
 		{3540E29E-4793-49E7-8EE2-FEA7F61C3994}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{3540E29E-4793-49E7-8EE2-FEA7F61C3994}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{3540E29E-4793-49E7-8EE2-FEA7F61C3994}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
+		{3540E29E-4793-49E7-8EE2-FEA7F61C3994}.Debug|Mixed Platforms.Build.0 = Debug|x86
 		{3540E29E-4793-49E7-8EE2-FEA7F61C3994}.Debug|x64.ActiveCfg = Debug|x64
 		{3540E29E-4793-49E7-8EE2-FEA7F61C3994}.Debug|x64.Build.0 = Debug|x64
@@ -62,4 +76,6 @@
 		{3540E29E-4793-49E7-8EE2-FEA7F61C3994}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{3540E29E-4793-49E7-8EE2-FEA7F61C3994}.Release|Any CPU.Build.0 = Release|Any CPU
+		{3540E29E-4793-49E7-8EE2-FEA7F61C3994}.Release|Mixed Platforms.ActiveCfg = Release|x86
+		{3540E29E-4793-49E7-8EE2-FEA7F61C3994}.Release|Mixed Platforms.Build.0 = Release|x86
 		{3540E29E-4793-49E7-8EE2-FEA7F61C3994}.Release|x64.ActiveCfg = Release|x64
 		{3540E29E-4793-49E7-8EE2-FEA7F61C3994}.Release|x64.Build.0 = Release|x64
@@ -68,20 +84,30 @@
 		{26BF13E1-C8B2-4ACE-862D-EBFD360116B3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{26BF13E1-C8B2-4ACE-862D-EBFD360116B3}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{26BF13E1-C8B2-4ACE-862D-EBFD360116B3}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{26BF13E1-C8B2-4ACE-862D-EBFD360116B3}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
 		{26BF13E1-C8B2-4ACE-862D-EBFD360116B3}.Debug|x64.ActiveCfg = Debug|Any CPU
 		{26BF13E1-C8B2-4ACE-862D-EBFD360116B3}.Debug|x86.ActiveCfg = Debug|Any CPU
 		{26BF13E1-C8B2-4ACE-862D-EBFD360116B3}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{26BF13E1-C8B2-4ACE-862D-EBFD360116B3}.Release|Any CPU.Build.0 = Release|Any CPU
+		{26BF13E1-C8B2-4ACE-862D-EBFD360116B3}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{26BF13E1-C8B2-4ACE-862D-EBFD360116B3}.Release|Mixed Platforms.Build.0 = Release|Any CPU
 		{26BF13E1-C8B2-4ACE-862D-EBFD360116B3}.Release|x64.ActiveCfg = Release|Any CPU
 		{26BF13E1-C8B2-4ACE-862D-EBFD360116B3}.Release|x86.ActiveCfg = Release|Any CPU
 		{1CC61973-7706-42DC-8023-310F591AB02B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{1CC61973-7706-42DC-8023-310F591AB02B}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{1CC61973-7706-42DC-8023-310F591AB02B}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{1CC61973-7706-42DC-8023-310F591AB02B}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
 		{1CC61973-7706-42DC-8023-310F591AB02B}.Debug|x64.ActiveCfg = Debug|Any CPU
 		{1CC61973-7706-42DC-8023-310F591AB02B}.Debug|x86.ActiveCfg = Debug|Any CPU
 		{1CC61973-7706-42DC-8023-310F591AB02B}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{1CC61973-7706-42DC-8023-310F591AB02B}.Release|Any CPU.Build.0 = Release|Any CPU
+		{1CC61973-7706-42DC-8023-310F591AB02B}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{1CC61973-7706-42DC-8023-310F591AB02B}.Release|Mixed Platforms.Build.0 = Release|Any CPU
 		{1CC61973-7706-42DC-8023-310F591AB02B}.Release|x64.ActiveCfg = Release|Any CPU
 		{1CC61973-7706-42DC-8023-310F591AB02B}.Release|x86.ActiveCfg = Release|Any CPU
 		{662B4B15-8F4D-4AE5-B3EB-D91C215F5AF2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{662B4B15-8F4D-4AE5-B3EB-D91C215F5AF2}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{662B4B15-8F4D-4AE5-B3EB-D91C215F5AF2}.Debug|Mixed Platforms.ActiveCfg = Debug|x64
+		{662B4B15-8F4D-4AE5-B3EB-D91C215F5AF2}.Debug|Mixed Platforms.Build.0 = Debug|x64
 		{662B4B15-8F4D-4AE5-B3EB-D91C215F5AF2}.Debug|x64.ActiveCfg = Debug|x64
 		{662B4B15-8F4D-4AE5-B3EB-D91C215F5AF2}.Debug|x64.Build.0 = Debug|x64
@@ -90,8 +116,23 @@
 		{662B4B15-8F4D-4AE5-B3EB-D91C215F5AF2}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{662B4B15-8F4D-4AE5-B3EB-D91C215F5AF2}.Release|Any CPU.Build.0 = Release|Any CPU
+		{662B4B15-8F4D-4AE5-B3EB-D91C215F5AF2}.Release|Mixed Platforms.ActiveCfg = Release|x64
+		{662B4B15-8F4D-4AE5-B3EB-D91C215F5AF2}.Release|Mixed Platforms.Build.0 = Release|x64
 		{662B4B15-8F4D-4AE5-B3EB-D91C215F5AF2}.Release|x64.ActiveCfg = Release|x64
 		{662B4B15-8F4D-4AE5-B3EB-D91C215F5AF2}.Release|x64.Build.0 = Release|x64
 		{662B4B15-8F4D-4AE5-B3EB-D91C215F5AF2}.Release|x86.ActiveCfg = Release|x86
 		{662B4B15-8F4D-4AE5-B3EB-D91C215F5AF2}.Release|x86.Build.0 = Release|x86
+		{1BFDCC58-E228-46DE-A36E-8503194B434D}.Debug|Any CPU.ActiveCfg = Debug|x86
+		{1BFDCC58-E228-46DE-A36E-8503194B434D}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
+		{1BFDCC58-E228-46DE-A36E-8503194B434D}.Debug|Mixed Platforms.Build.0 = Debug|x86
+		{1BFDCC58-E228-46DE-A36E-8503194B434D}.Debug|x64.ActiveCfg = Debug|x86
+		{1BFDCC58-E228-46DE-A36E-8503194B434D}.Debug|x86.ActiveCfg = Debug|x86
+		{1BFDCC58-E228-46DE-A36E-8503194B434D}.Debug|x86.Build.0 = Debug|x86
+		{1BFDCC58-E228-46DE-A36E-8503194B434D}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{1BFDCC58-E228-46DE-A36E-8503194B434D}.Release|Any CPU.Build.0 = Release|Any CPU
+		{1BFDCC58-E228-46DE-A36E-8503194B434D}.Release|Mixed Platforms.ActiveCfg = Release|x86
+		{1BFDCC58-E228-46DE-A36E-8503194B434D}.Release|Mixed Platforms.Build.0 = Release|x86
+		{1BFDCC58-E228-46DE-A36E-8503194B434D}.Release|x64.ActiveCfg = Release|x86
+		{1BFDCC58-E228-46DE-A36E-8503194B434D}.Release|x86.ActiveCfg = Release|x86
+		{1BFDCC58-E228-46DE-A36E-8503194B434D}.Release|x86.Build.0 = Release|x86
 	EndGlobalSection
 	GlobalSection(SolutionProperties) = preSolution
Index: /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Optimization.Views/3.3/HeuristicLab.Optimization.Views-3.3.csproj
===================================================================
--- /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Optimization.Views/3.3/HeuristicLab.Optimization.Views-3.3.csproj	(revision 7663)
+++ /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Optimization.Views/3.3/HeuristicLab.Optimization.Views-3.3.csproj	(revision 7664)
@@ -188,5 +188,5 @@
       <SubType>UserControl</SubType>
     </Compile>
-    <Compile Include="ProblemView.designer.cs">
+    <Compile Include="ProblemView.Designer.cs">
       <DependentUpon>ProblemView.cs</DependentUpon>
     </Compile>
@@ -305,10 +305,4 @@
       <DependentUpon>EngineAlgorithmView.cs</DependentUpon>
     </Compile>
-    <Compile Include="HeuristicOptimizationProblemView.cs">
-      <SubType>UserControl</SubType>
-    </Compile>
-    <Compile Include="HeuristicOptimizationProblemView.Designer.cs">
-      <DependentUpon>HeuristicOptimizationProblemView.cs</DependentUpon>
-    </Compile>
     <Compile Include="Properties\AssemblyInfo.cs" />
     <Compile Include="ResultCollectionView.cs">
@@ -330,7 +324,12 @@
   </ItemGroup>
   <ItemGroup>
+    <ProjectReference Include="..\..\HeuristicLab.Problems.Instances.Views\3.4\HeuristicLab.Problems.Instances.Views-3.4.csproj">
+      <Project>{1BFDCC58-E228-46DE-A36E-8503194B434D}</Project>
+      <Name>HeuristicLab.Problems.Instances.Views-3.4</Name>
+    </ProjectReference>
     <ProjectReference Include="..\..\HeuristicLab.Problems.Instances\3.3\HeuristicLab.Problems.Instances-3.3.csproj">
       <Project>{3540E29E-4793-49E7-8EE2-FEA7F61C3994}</Project>
       <Name>HeuristicLab.Problems.Instances-3.3</Name>
+      <Private>False</Private>
     </ProjectReference>
   </ItemGroup>
Index: anches/ProblemInstancesRegressionAndClassification/HeuristicLab.Optimization.Views/3.3/HeuristicOptimizationProblemView.Designer.cs
===================================================================
--- /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Optimization.Views/3.3/HeuristicOptimizationProblemView.Designer.cs	(revision 7663)
+++ 	(revision )
@@ -1,157 +1,0 @@
-﻿#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2012 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
- *
- * This file is part of HeuristicLab.
- *
- * HeuristicLab is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * HeuristicLab is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
- */
-#endregion
-
-namespace HeuristicLab.Optimization.Views {
-  partial class HeuristicOptimizationProblemView {
-    /// <summary> 
-    /// Required designer variable.
-    /// </summary>
-    private System.ComponentModel.IContainer components = null;
-
-    /// <summary> 
-    /// Clean up any resources being used.
-    /// </summary>
-    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
-    protected override void Dispose(bool disposing) {
-      if (disposing && (components != null)) {
-        components.Dispose();
-      }
-      base.Dispose(disposing);
-    }
-
-    #region Component Designer generated code
-
-    /// <summary> 
-    /// Required method for Designer support - do not modify 
-    /// the contents of this method with the code editor.
-    /// </summary>
-    private void InitializeComponent() {
-      this.libraryLabel = new System.Windows.Forms.Label();
-      this.problemInstanceProviderViewHost = new HeuristicLab.MainForm.WindowsForms.ViewHost();
-      this.problemInstanceProviderComboBox = new System.Windows.Forms.ComboBox();
-      this.libraryInfoButton = new System.Windows.Forms.Button();
-      ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).BeginInit();
-      this.SuspendLayout();
-      // 
-      // parameterCollectionView
-      // 
-      this.parameterCollectionView.Location = new System.Drawing.Point(0, 58);
-      this.parameterCollectionView.Size = new System.Drawing.Size(650, 394);
-      // 
-      // nameTextBox
-      // 
-      this.errorProvider.SetIconAlignment(this.nameTextBox, System.Windows.Forms.ErrorIconAlignment.MiddleLeft);
-      this.errorProvider.SetIconPadding(this.nameTextBox, 2);
-      this.nameTextBox.Location = new System.Drawing.Point(50, 32);
-      this.nameTextBox.Size = new System.Drawing.Size(578, 20);
-      // 
-      // nameLabel
-      // 
-      this.nameLabel.Location = new System.Drawing.Point(3, 35);
-      // 
-      // toolTip
-      // 
-      this.toolTip.AutoPopDelay = 10000;
-      this.toolTip.InitialDelay = 100;
-      this.toolTip.ReshowDelay = 100;
-      // 
-      // infoLabel
-      // 
-      this.infoLabel.Location = new System.Drawing.Point(634, 35);
-      // 
-      // libraryLabel
-      // 
-      this.libraryLabel.AutoSize = true;
-      this.libraryLabel.Location = new System.Drawing.Point(3, 8);
-      this.libraryLabel.Name = "libraryLabel";
-      this.libraryLabel.Size = new System.Drawing.Size(41, 13);
-      this.libraryLabel.TabIndex = 4;
-      this.libraryLabel.Text = "Library:";
-      // 
-      // problemInstanceProviderViewHost
-      // 
-      this.problemInstanceProviderViewHost.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
-            | System.Windows.Forms.AnchorStyles.Right)));
-      this.problemInstanceProviderViewHost.Caption = "View";
-      this.problemInstanceProviderViewHost.Content = null;
-      this.problemInstanceProviderViewHost.Enabled = false;
-      this.problemInstanceProviderViewHost.Location = new System.Drawing.Point(259, 5);
-      this.problemInstanceProviderViewHost.Name = "problemInstanceProviderViewHost";
-      this.problemInstanceProviderViewHost.ReadOnly = false;
-      this.problemInstanceProviderViewHost.Size = new System.Drawing.Size(391, 21);
-      this.problemInstanceProviderViewHost.TabIndex = 6;
-      this.problemInstanceProviderViewHost.ViewsLabelVisible = false;
-      this.problemInstanceProviderViewHost.ViewType = null;
-      // 
-      // problemInstanceProviderComboBox
-      // 
-      this.problemInstanceProviderComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
-      this.problemInstanceProviderComboBox.FormattingEnabled = true;
-      this.problemInstanceProviderComboBox.Location = new System.Drawing.Point(50, 5);
-      this.problemInstanceProviderComboBox.Name = "problemInstanceProviderComboBox";
-      this.problemInstanceProviderComboBox.Size = new System.Drawing.Size(171, 21);
-      this.problemInstanceProviderComboBox.TabIndex = 7;
-      this.problemInstanceProviderComboBox.SelectedIndexChanged += new System.EventHandler(this.problemInstanceProviderComboBox_SelectedIndexChanged);
-      this.problemInstanceProviderComboBox.DataSourceChanged += new System.EventHandler(this.comboBox_DataSourceChanged);
-      // 
-      // libraryInfoButton
-      // 
-      this.libraryInfoButton.Location = new System.Drawing.Point(227, 4);
-      this.libraryInfoButton.Name = "libraryInfoButton";
-      this.libraryInfoButton.Size = new System.Drawing.Size(26, 23);
-      this.libraryInfoButton.TabIndex = 8;
-      this.libraryInfoButton.Text = "Info";
-      this.libraryInfoButton.UseVisualStyleBackColor = true;
-      this.libraryInfoButton.Click += new System.EventHandler(this.libraryInfoButton_Click);
-      // 
-      // ProblemView
-      // 
-      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
-      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
-      this.Controls.Add(this.problemInstanceProviderViewHost);
-      this.Controls.Add(this.problemInstanceProviderComboBox);
-      this.Controls.Add(this.libraryLabel);
-      this.Controls.Add(this.libraryInfoButton);
-      this.Name = "ProblemView";
-      this.Size = new System.Drawing.Size(653, 455);
-      this.Controls.SetChildIndex(this.libraryInfoButton, 0);
-      this.Controls.SetChildIndex(this.libraryLabel, 0);
-      this.Controls.SetChildIndex(this.problemInstanceProviderComboBox, 0);
-      this.Controls.SetChildIndex(this.problemInstanceProviderViewHost, 0);
-      this.Controls.SetChildIndex(this.infoLabel, 0);
-      this.Controls.SetChildIndex(this.nameTextBox, 0);
-      this.Controls.SetChildIndex(this.nameLabel, 0);
-      this.Controls.SetChildIndex(this.parameterCollectionView, 0);
-      ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).EndInit();
-      this.ResumeLayout(false);
-      this.PerformLayout();
-
-    }
-
-    #endregion
-
-    protected System.Windows.Forms.Label libraryLabel;
-    protected System.Windows.Forms.ComboBox problemInstanceProviderComboBox;
-    protected MainForm.WindowsForms.ViewHost problemInstanceProviderViewHost;
-    protected System.Windows.Forms.Button libraryInfoButton;
-
-  }
-}
Index: anches/ProblemInstancesRegressionAndClassification/HeuristicLab.Optimization.Views/3.3/HeuristicOptimizationProblemView.cs
===================================================================
--- /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Optimization.Views/3.3/HeuristicOptimizationProblemView.cs	(revision 7663)
+++ 	(revision )
@@ -1,137 +1,0 @@
-﻿#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2012 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
- *
- * This file is part of HeuristicLab.
- *
- * HeuristicLab is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * HeuristicLab is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
- */
-#endregion
-
-using System;
-using System.Collections.Generic;
-using System.Diagnostics;
-using System.Linq;
-using System.Windows.Forms;
-using HeuristicLab.Common.Resources;
-using HeuristicLab.Core.Views;
-using HeuristicLab.MainForm;
-using HeuristicLab.MainForm.WindowsForms;
-using HeuristicLab.PluginInfrastructure;
-using HeuristicLab.Problems.Instances;
-
-namespace HeuristicLab.Optimization.Views {
-  [View("HeuristicOptimizationProblemView")]
-  [Content(typeof(IHeuristicOptimizationProblem), IsDefaultView = true)]
-  public partial class HeuristicOptimizationProblemView : ParameterizedNamedItemView {
-
-    public new IProblem Content {
-      get { return (IProblem)base.Content; }
-      set { base.Content = value; }
-    }
-
-    protected IProblemInstanceProvider SelectedProvider {
-      get { return (problemInstanceProviderComboBox.SelectedIndex >= 0 ? (IProblemInstanceProvider)problemInstanceProviderComboBox.SelectedItem : null); }
-    }
-
-    public HeuristicOptimizationProblemView() {
-      InitializeComponent();
-      libraryInfoButton.Text = String.Empty;
-      libraryInfoButton.Image = VSImageLibrary.Information;
-    }
-
-    protected override void OnContentChanged() {
-      base.OnContentChanged();
-      if (Content == null) {
-        problemInstanceProviderComboBox.DataSource = null;
-      } else {
-        problemInstanceProviderComboBox.DisplayMember = "Name";
-        problemInstanceProviderComboBox.DataSource = GetProblemInstanceProviders().ToList();
-      }
-      SetEnabledStateOfControls();
-    }
-
-    protected override void SetEnabledStateOfControls() {
-      base.SetEnabledStateOfControls();
-      problemInstanceProviderComboBox.Enabled = !ReadOnly && !Locked && Content != null && problemInstanceProviderComboBox.Items.Count > 0;
-      libraryInfoButton.Enabled = SelectedProvider != null && SelectedProvider.WebLink != null;
-    }
-
-    protected virtual void problemInstanceProviderComboBox_SelectedIndexChanged(object sender, System.EventArgs e) {
-      if (problemInstanceProviderComboBox.SelectedIndex >= 0) {
-        dynamic provider = SelectedProvider;
-        dynamic consumer = Content;
-        provider.Consumer = consumer;
-        problemInstanceProviderViewHost.Content = SelectedProvider;
-        SetTooltip();
-      }
-      SetEnabledStateOfControls();
-    }
-
-    private void comboBox_DataSourceChanged(object sender, EventArgs e) {
-      var comboBox = (ComboBox)sender;
-      if (comboBox.DataSource == null)
-        comboBox.Items.Clear();
-    }
-
-    protected virtual void libraryInfoButton_Click(object sender, EventArgs e) {
-      if (problemInstanceProviderComboBox.SelectedIndex >= 0) {
-        if (SelectedProvider != null && SelectedProvider.WebLink != null)
-          Process.Start(SelectedProvider.WebLink.ToString());
-      }
-    }
-
-    protected virtual IEnumerable<IProblemInstanceProvider> GetProblemInstanceProviders() {
-      var consumerTypes = Content.GetType().GetInterfaces()
-        .Where(x => x.IsGenericType
-          && x.GetGenericTypeDefinition() == typeof(IProblemInstanceConsumer<>));
-
-      if (consumerTypes.Any()) {
-        var instanceTypes = consumerTypes
-          .Select(x => x.GetGenericArguments().First())
-          .Select(x => typeof(IProblemInstanceProvider<>).MakeGenericType(x));
-
-        foreach (var type in instanceTypes) {
-          foreach (var provider in ApplicationManager.Manager.GetInstances(type))
-            yield return (IProblemInstanceProvider)provider;
-        }
-      }
-    }
-
-    protected virtual void SetTooltip() {
-      toolTip.SetToolTip(problemInstanceProviderComboBox, GetProviderToolTip());
-      if (SelectedProvider.WebLink != null)
-        toolTip.SetToolTip(libraryInfoButton, "Browse to " + SelectedProvider.WebLink.ToString());
-      else toolTip.SetToolTip(libraryInfoButton, "Library does not have a web reference.");
-    }
-
-    protected virtual string GetProviderToolTip() {
-      var provider = SelectedProvider;
-      string toolTip = provider.Name;
-
-      if (!String.IsNullOrEmpty(provider.ReferencePublication)) {
-        toolTip = toolTip
-            + Environment.NewLine + Environment.NewLine
-            + provider.ReferencePublication;
-      }
-      if (provider.WebLink != null) {
-        toolTip = toolTip
-            + Environment.NewLine
-            + provider.WebLink.ToString();
-      }
-
-      return toolTip;
-    }
-  }
-}
Index: /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Optimization.Views/3.3/ProblemInstanceProviderView.cs
===================================================================
--- /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Optimization.Views/3.3/ProblemInstanceProviderView.cs	(revision 7663)
+++ /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Optimization.Views/3.3/ProblemInstanceProviderView.cs	(revision 7664)
@@ -49,5 +49,5 @@
       toolTip.SetToolTip(exportButton, "Export a " + GetProblemType() + " instance to a file.");
       loadButton.Text = String.Empty;
-      loadButton.Image = VSImageLibrary.Checkout;
+      loadButton.Image = VSImageLibrary.RefreshDocument;
       toolTip.SetToolTip(loadButton, "Load the selected instance.");
     }
Index: /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Optimization.Views/3.3/ProblemView.Designer.cs
===================================================================
--- /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Optimization.Views/3.3/ProblemView.Designer.cs	(revision 7663)
+++ /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Optimization.Views/3.3/ProblemView.Designer.cs	(revision 7664)
@@ -45,6 +45,17 @@
     /// </summary>
     private void InitializeComponent() {
+      this.problemInstanceSplitContainer = new System.Windows.Forms.SplitContainer();
+      this.problemInstanceConsumerView = new HeuristicLab.Problems.Instances.Views.ProblemInstanceConsumerView();
       ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).BeginInit();
+      ((System.ComponentModel.ISupportInitialize)(this.problemInstanceSplitContainer)).BeginInit();
+      this.problemInstanceSplitContainer.Panel1.SuspendLayout();
+      this.problemInstanceSplitContainer.Panel2.SuspendLayout();
+      this.problemInstanceSplitContainer.SuspendLayout();
       this.SuspendLayout();
+      // 
+      // parameterCollectionView
+      // 
+      this.parameterCollectionView.Location = new System.Drawing.Point(6, 27);
+      this.parameterCollectionView.Size = new System.Drawing.Size(501, 303);
       // 
       // nameTextBox
@@ -52,4 +63,53 @@
       this.errorProvider.SetIconAlignment(this.nameTextBox, System.Windows.Forms.ErrorIconAlignment.MiddleLeft);
       this.errorProvider.SetIconPadding(this.nameTextBox, 2);
+      this.nameTextBox.Location = new System.Drawing.Point(47, 1);
+      this.nameTextBox.Size = new System.Drawing.Size(438, 20);
+      // 
+      // nameLabel
+      // 
+      this.nameLabel.Location = new System.Drawing.Point(3, 6);
+      // 
+      // infoLabel
+      // 
+      this.infoLabel.Location = new System.Drawing.Point(491, 4);
+      // 
+      // problemInstanceSplitContainer
+      // 
+      this.problemInstanceSplitContainer.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.problemInstanceSplitContainer.FixedPanel = System.Windows.Forms.FixedPanel.Panel1;
+      this.problemInstanceSplitContainer.IsSplitterFixed = true;
+      this.problemInstanceSplitContainer.Location = new System.Drawing.Point(0, 0);
+      this.problemInstanceSplitContainer.Name = "problemInstanceSplitContainer";
+      this.problemInstanceSplitContainer.Orientation = System.Windows.Forms.Orientation.Horizontal;
+      // 
+      // problemInstanceSplitContainer.Panel1
+      // 
+      this.problemInstanceSplitContainer.Panel1.Controls.Add(this.problemInstanceConsumerView);
+      this.problemInstanceSplitContainer.Panel1MinSize = 10;
+      // 
+      // problemInstanceSplitContainer.Panel2
+      // 
+      this.problemInstanceSplitContainer.Panel2.Controls.Add(this.nameLabel);
+      this.problemInstanceSplitContainer.Panel2.Controls.Add(this.nameTextBox);
+      this.problemInstanceSplitContainer.Panel2.Controls.Add(this.parameterCollectionView);
+      this.problemInstanceSplitContainer.Panel2.Controls.Add(this.infoLabel);
+      this.problemInstanceSplitContainer.Size = new System.Drawing.Size(511, 363);
+      this.problemInstanceSplitContainer.SplitterDistance = 26;
+      this.problemInstanceSplitContainer.TabIndex = 13;
+      // 
+      // problemInstanceConsumerView
+      // 
+      this.problemInstanceConsumerView.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.problemInstanceConsumerView.Caption = "ProblemInstanceProviderView";
+      this.problemInstanceConsumerView.Content = null;
+      this.problemInstanceConsumerView.Location = new System.Drawing.Point(0, 0);
+      this.problemInstanceConsumerView.Name = "problemInstanceConsumerView";
+      this.problemInstanceConsumerView.ReadOnly = false;
+      this.problemInstanceConsumerView.Size = new System.Drawing.Size(511, 25);
+      this.problemInstanceConsumerView.TabIndex = 0;
       // 
       // ProblemView
@@ -57,8 +117,14 @@
       this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
       this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+      this.Controls.Add(this.problemInstanceSplitContainer);
       this.Name = "ProblemView";
+      this.Size = new System.Drawing.Size(511, 363);
       ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).EndInit();
+      this.problemInstanceSplitContainer.Panel1.ResumeLayout(false);
+      this.problemInstanceSplitContainer.Panel2.ResumeLayout(false);
+      this.problemInstanceSplitContainer.Panel2.PerformLayout();
+      ((System.ComponentModel.ISupportInitialize)(this.problemInstanceSplitContainer)).EndInit();
+      this.problemInstanceSplitContainer.ResumeLayout(false);
       this.ResumeLayout(false);
-      this.PerformLayout();
 
     }
@@ -66,5 +132,6 @@
     #endregion
 
-
+    protected System.Windows.Forms.SplitContainer problemInstanceSplitContainer;
+    protected HeuristicLab.Problems.Instances.Views.ProblemInstanceConsumerView problemInstanceConsumerView;
   }
 }
Index: /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Optimization.Views/3.3/ProblemView.cs
===================================================================
--- /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Optimization.Views/3.3/ProblemView.cs	(revision 7663)
+++ /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Optimization.Views/3.3/ProblemView.cs	(revision 7664)
@@ -20,6 +20,8 @@
 #endregion
 
+using System.Windows.Forms;
 using HeuristicLab.Core.Views;
 using HeuristicLab.MainForm;
+using HeuristicLab.Problems.Instances;
 
 namespace HeuristicLab.Optimization.Views {
@@ -44,4 +46,12 @@
     protected override void OnContentChanged() {
       base.OnContentChanged();
+      //Check if IProblem implements IProblemInstancesConsumer interface
+      problemInstanceConsumerView.Content = (IProblemInstanceConsumer)Content;
+      problemInstanceSplitContainer.Panel1Collapsed = !problemInstanceConsumerView.ContainsProviders();
+      SetEnabledStateOfControls();
+    }
+
+    protected override void SetEnabledStateOfControls() {
+      base.SetEnabledStateOfControls();
     }
   }
Index: /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.DataAnalysis.Views/3.4/DataAnalysisProblemView.Designer.cs
===================================================================
--- /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.DataAnalysis.Views/3.4/DataAnalysisProblemView.Designer.cs	(revision 7663)
+++ /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.DataAnalysis.Views/3.4/DataAnalysisProblemView.Designer.cs	(revision 7664)
@@ -45,14 +45,24 @@
     /// </summary>
     private void InitializeComponent() {
+      this.openFileDialog = new System.Windows.Forms.OpenFileDialog();
       this.ImportButton = new System.Windows.Forms.Button();
-      this.openFileDialog = new System.Windows.Forms.OpenFileDialog();
+      ((System.ComponentModel.ISupportInitialize)(this.problemInstanceSplitContainer)).BeginInit();
+      this.problemInstanceSplitContainer.Panel1.SuspendLayout();
+      this.problemInstanceSplitContainer.Panel2.SuspendLayout();
+      this.problemInstanceSplitContainer.SuspendLayout();
       ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).BeginInit();
       this.SuspendLayout();
       // 
+      // problemInstanceSplitContainer
+      // 
+      // 
+      // problemInstanceSplitContainer.Panel2
+      // 
+      this.problemInstanceSplitContainer.Panel2.Controls.Add(this.ImportButton);
+      // 
       // parameterCollectionView
       // 
-      this.parameterCollectionView.Location = new System.Drawing.Point(3, 55);
-      this.parameterCollectionView.Size = new System.Drawing.Size(490, 279);
-      this.parameterCollectionView.TabIndex = 4;
+      this.parameterCollectionView.Location = new System.Drawing.Point(6, 56);
+      this.parameterCollectionView.Size = new System.Drawing.Size(501, 274);
       // 
       // nameTextBox
@@ -60,21 +70,4 @@
       this.errorProvider.SetIconAlignment(this.nameTextBox, System.Windows.Forms.ErrorIconAlignment.MiddleLeft);
       this.errorProvider.SetIconPadding(this.nameTextBox, 2);
-      this.nameTextBox.Size = new System.Drawing.Size(409, 20);
-      // 
-      // infoLabel
-      // 
-      this.infoLabel.Location = new System.Drawing.Point(474, 3);
-      // 
-      // ImportButton
-      // 
-      this.ImportButton.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
-                  | System.Windows.Forms.AnchorStyles.Right)));
-      this.ImportButton.Location = new System.Drawing.Point(0, 26);
-      this.ImportButton.Name = "ImportButton";
-      this.ImportButton.Size = new System.Drawing.Size(493, 23);
-      this.ImportButton.TabIndex = 3;
-      this.ImportButton.Text = "Import from CSV file";
-      this.ImportButton.UseVisualStyleBackColor = true;
-      this.ImportButton.Click += new System.EventHandler(this.ImportButton_Click);
       // 
       // openFileDialog
@@ -83,19 +76,29 @@
       this.openFileDialog.Title = "Import data...";
       // 
+      // ImportButton
+      // 
+      this.ImportButton.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+                  | System.Windows.Forms.AnchorStyles.Right)));
+      this.ImportButton.Location = new System.Drawing.Point(6, 27);
+      this.ImportButton.Name = "ImportButton";
+      this.ImportButton.Size = new System.Drawing.Size(501, 23);
+      this.ImportButton.TabIndex = 14;
+      this.ImportButton.Text = "Import from CSV file";
+      this.ImportButton.UseVisualStyleBackColor = true;
+      this.ImportButton.Click += new System.EventHandler(this.ImportButton_Click);
+      // 
       // DataAnalysisProblemView
       // 
       this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
       this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
-      this.Controls.Add(this.ImportButton);
       this.Name = "DataAnalysisProblemView";
-      this.Size = new System.Drawing.Size(493, 334);
-      this.Controls.SetChildIndex(this.ImportButton, 0);
-      this.Controls.SetChildIndex(this.infoLabel, 0);
-      this.Controls.SetChildIndex(this.nameTextBox, 0);
-      this.Controls.SetChildIndex(this.nameLabel, 0);
-      this.Controls.SetChildIndex(this.parameterCollectionView, 0);
+      this.problemInstanceSplitContainer.Panel1.ResumeLayout(false);
+      this.problemInstanceSplitContainer.Panel1.PerformLayout();
+      this.problemInstanceSplitContainer.Panel2.ResumeLayout(false);
+      this.problemInstanceSplitContainer.Panel2.PerformLayout();
+      ((System.ComponentModel.ISupportInitialize)(this.problemInstanceSplitContainer)).EndInit();
+      this.problemInstanceSplitContainer.ResumeLayout(false);
       ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).EndInit();
       this.ResumeLayout(false);
-      this.PerformLayout();
 
     }
@@ -103,6 +106,6 @@
     #endregion
 
+    private System.Windows.Forms.OpenFileDialog openFileDialog;
     private System.Windows.Forms.Button ImportButton;
-    private System.Windows.Forms.OpenFileDialog openFileDialog;
   }
 }
Index: /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.DataAnalysis.Views/3.4/HeuristicLab.Problems.DataAnalysis.Views-3.4.csproj
===================================================================
--- /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.DataAnalysis.Views/3.4/HeuristicLab.Problems.DataAnalysis.Views-3.4.csproj	(revision 7663)
+++ /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.DataAnalysis.Views/3.4/HeuristicLab.Problems.DataAnalysis.Views-3.4.csproj	(revision 7664)
@@ -308,13 +308,13 @@
       <DependentUpon>RegressionSolutionScatterPlotView.cs</DependentUpon>
     </Compile>
+    <Compile Include="DataAnalysisProblemView.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Include="DataAnalysisProblemView.Designer.cs">
+      <DependentUpon>DataAnalysisProblemView.cs</DependentUpon>
+    </Compile>
     <None Include="HeuristicLab.snk" />
     <None Include="Plugin.cs.frame" />
     <None Include="Properties\AssemblyInfo.cs.frame" />
-    <Compile Include="DataAnalysisProblemView.cs">
-      <SubType>UserControl</SubType>
-    </Compile>
-    <Compile Include="DataAnalysisProblemView.Designer.cs">
-      <DependentUpon>DataAnalysisProblemView.cs</DependentUpon>
-    </Compile>
     <Compile Include="Properties\AssemblyInfo.cs" />
   </ItemGroup>
Index: /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.DataAnalysis.Views/3.4/Regression/RegressionProblemView.cs
===================================================================
--- /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.DataAnalysis.Views/3.4/Regression/RegressionProblemView.cs	(revision 7663)
+++ /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.DataAnalysis.Views/3.4/Regression/RegressionProblemView.cs	(revision 7664)
@@ -27,5 +27,5 @@
   [View("Regression Problem View")]
   [Content(typeof(RegressionProblem), true)]
-  public partial class RegressionProblemView : HeuristicOptimizationProblemView {
+  public partial class RegressionProblemView : ProblemView {
     public new RegressionProblem Content {
       get { return (RegressionProblem)base.Content; }
Index: /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Regression/RegressionProblem.cs
===================================================================
--- /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Regression/RegressionProblem.cs	(revision 7663)
+++ /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Regression/RegressionProblem.cs	(revision 7664)
@@ -20,4 +20,7 @@
 #endregion
 
+using System;
+using System.Collections.Generic;
+using System.Linq;
 using HeuristicLab.Common;
 using HeuristicLab.Core;
@@ -30,5 +33,5 @@
   [Creatable("Problems")]
   public class RegressionProblem : DataAnalysisProblem<IRegressionProblemData>, IRegressionProblem, IStorableContent,
-    IProblemInstanceConsumer<RegressionData> {
+    IProblemInstanceConsumer<RegressionData>, IProblemInstanceExporter<RegressionData>, IProblemInstanceConsumer {
     public string Filename { get; set; }
 
@@ -59,4 +62,40 @@
       OnReset();
     }
+
+    public RegressionData Export() {
+      if (!ProblemData.InputVariables.Count.Equals(ProblemData.Dataset.DoubleVariables.Count()))
+        throw new ArgumentException("Not all input variables are double variables! (Export only works with double variables)");
+
+      RegressionData regData = new RegressionData();
+      regData.Name = Name;
+      regData.Description = Description;
+      regData.TargetVariable = ProblemData.TargetVariable;
+      regData.InputVariables = ProblemData.InputVariables.Select(x => x.Value);
+      regData.AllowedInputVariables = ProblemData.AllowedInputVariables;
+      regData.TrainingPartitionStart = ProblemData.TrainingPartition.Start;
+      regData.TrainingPartitionEnd = ProblemData.TrainingPartition.End;
+      regData.TestPartitionStart = ProblemData.TestPartition.Start;
+      regData.TestPartitionEnd = ProblemData.TestPartition.End;
+
+      List<List<double>> data = new List<List<double>>();
+      foreach (var variable in ProblemData.Dataset.DoubleVariables) {
+        data.Add(ProblemData.Dataset.GetDoubleValues(variable).ToList());
+      }
+      regData.Values = Transformation(data);
+
+      return regData;
+    }
+
+    public static double[,] Transformation(List<List<double>> data) {
+      if (!data.All(x => x.Count.Equals(data.First().Count)))
+        throw new ArgumentException("Can't create jagged array.");
+      double[,] values = new double[data.First().Count, data.Count];
+      for (int i = 0; i < values.GetLength(0); i++) {
+        for (int j = 0; j < values.GetLength(1); j++) {
+          values[i, j] = data[j][i];
+        }
+      }
+      return values;
+    }
   }
 }
Index: /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression.Views/3.4/HeuristicLab.Problems.Instances.Regression.Views-3.4.csproj
===================================================================
--- /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression.Views/3.4/HeuristicLab.Problems.Instances.Regression.Views-3.4.csproj	(revision 7663)
+++ /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression.Views/3.4/HeuristicLab.Problems.Instances.Regression.Views-3.4.csproj	(revision 7664)
@@ -38,8 +38,16 @@
   </PropertyGroup>
   <ItemGroup>
-    <Reference Include="HeuristicLab.Common-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL" />
-    <Reference Include="HeuristicLab.MainForm-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL" />
-    <Reference Include="HeuristicLab.MainForm.WindowsForms-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL" />
-    <Reference Include="HeuristicLab.PluginInfrastructure-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL" />
+    <Reference Include="HeuristicLab.Common-3.3">
+      <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.Common-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.MainForm-3.3">
+      <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.MainForm-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.MainForm.WindowsForms-3.3">
+      <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.MainForm.WindowsForms-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.PluginInfrastructure-3.3">
+      <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.PluginInfrastructure-3.3.dll</HintPath>
+    </Reference>
     <Reference Include="System" />
     <Reference Include="System.Core" />
Index: /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression.Views/3.4/Properties/AssemblyInfo.cs
===================================================================
--- /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression.Views/3.4/Properties/AssemblyInfo.cs	(revision 7663)
+++ /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression.Views/3.4/Properties/AssemblyInfo.cs	(revision 7664)
@@ -55,3 +55,3 @@
 // [assembly: AssemblyVersion("1.0.*")]
 [assembly: AssemblyVersion("3.4.0.0")]
-[assembly: AssemblyFileVersion("3.4.0.7603")]
+[assembly: AssemblyFileVersion("3.4.0.7610")]
Index: /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/ArtificialRegressionDataDescriptor.cs
===================================================================
--- /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/ArtificialRegressionDataDescriptor.cs	(revision 7663)
+++ /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/ArtificialRegressionDataDescriptor.cs	(revision 7664)
@@ -1,5 +1,5 @@
 ﻿#region License Information
 /* HeuristicLab
- * Copyright (C) 2002-2011 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ * Copyright (C) 2002-2012 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
  *
  * This file is part of HeuristicLab.
Index: /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/ArtificialRegressionInstanceProvider.cs
===================================================================
--- /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/ArtificialRegressionInstanceProvider.cs	(revision 7663)
+++ /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/ArtificialRegressionInstanceProvider.cs	(revision 7664)
@@ -1,5 +1,5 @@
 ﻿#region License Information
 /* HeuristicLab
- * Copyright (C) 2002-2011 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ * Copyright (C) 2002-2012 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
  *
  * This file is part of HeuristicLab.
Index: /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/HeuristicLab.Problems.Instances.Regression-3.4.csproj
===================================================================
--- /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/HeuristicLab.Problems.Instances.Regression-3.4.csproj	(revision 7663)
+++ /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/HeuristicLab.Problems.Instances.Regression-3.4.csproj	(revision 7664)
@@ -38,9 +38,19 @@
   </PropertyGroup>
   <ItemGroup>
-    <Reference Include="HeuristicLab.Common-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL" />
-    <Reference Include="HeuristicLab.Core-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL" />
-    <Reference Include="HeuristicLab.Optimization-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL" />
-    <Reference Include="HeuristicLab.PluginInfrastructure-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL" />
-    <Reference Include="HeuristicLab.Random-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL" />
+    <Reference Include="HeuristicLab.Common-3.3">
+      <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.Common-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Core-3.3">
+      <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.Core-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Optimization-3.3">
+      <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.Optimization-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.PluginInfrastructure-3.3">
+      <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.PluginInfrastructure-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Random-3.3">
+      <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.Random-3.3.dll</HintPath>
+    </Reference>
     <Reference Include="System" />
     <Reference Include="System.Core" />
@@ -52,5 +62,41 @@
   </ItemGroup>
   <ItemGroup>
+    <Compile Include="Keijzer\KeijzerFunctionTwelve.cs" />
+    <Compile Include="Keijzer\KeijzerFunctionThirteen.cs" />
+    <Compile Include="Keijzer\KeijzerFunctionSixteen.cs" />
+    <Compile Include="Keijzer\KeijzerFunctionSix.cs" />
+    <Compile Include="Keijzer\KeijzerFunctionSeven.cs" />
+    <Compile Include="Keijzer\KeijzerFunctionFour.cs" />
+    <Compile Include="Keijzer\KeijzerFunctionFifteen.cs" />
     <Compile Include="Keijzer\KeijzerFunctionEight.cs" />
+    <Compile Include="Korns\KornsFunctionTwo.cs" />
+    <Compile Include="Korns\KornsFunctionTwelve.cs" />
+    <Compile Include="Korns\KornsFunctionThree.cs" />
+    <Compile Include="Korns\KornsFunctionThirteen.cs" />
+    <Compile Include="Korns\KornsFunctionTen.cs" />
+    <Compile Include="Korns\KornsFunctionSix.cs" />
+    <Compile Include="Korns\KornsFunctionSeven.cs" />
+    <Compile Include="Korns\KornsFunctionOne.cs" />
+    <Compile Include="Korns\KornsFunctionNine.cs" />
+    <Compile Include="Korns\KornsFunctionFourteen.cs" />
+    <Compile Include="Korns\KornsFunctionFour.cs" />
+    <Compile Include="Korns\KornsFunctionFiveteen.cs" />
+    <Compile Include="Korns\KornsFunctionFive.cs" />
+    <Compile Include="Korns\KornsFunctionEleven.cs" />
+    <Compile Include="Korns\KornsFunctionEight.cs" />
+    <Compile Include="Korns\KornsInstanceProvider.cs" />
+    <Compile Include="Nguyen\NguyenFunctionTwo.cs" />
+    <Compile Include="Nguyen\NguyenFunctionTwelve.cs" />
+    <Compile Include="Nguyen\NguyenFunctionThree.cs" />
+    <Compile Include="Nguyen\NguyenFunctionTen.cs" />
+    <Compile Include="Nguyen\NguyenFunctionSix.cs" />
+    <Compile Include="Nguyen\NguyenFunctionSeven.cs" />
+    <Compile Include="Nguyen\NguyenFunctionOne.cs" />
+    <Compile Include="Nguyen\NguyenFunctionNine.cs" />
+    <Compile Include="Nguyen\NguyenFunctionFour.cs" />
+    <Compile Include="Nguyen\NguyenFunctionFive.cs" />
+    <Compile Include="Nguyen\NguyenFunctionEleven.cs" />
+    <Compile Include="Nguyen\NguyenFunctionEight.cs" />
+    <Compile Include="Nguyen\NguyenInstanceProvider.cs" />
     <Compile Include="Plugin.cs" />
     <Compile Include="ResourceRegressionInstanceProvider.cs" />
@@ -62,4 +108,13 @@
     <Compile Include="RegressionInstanceProvider.cs" />
     <Compile Include="ValueGenerator.cs" />
+    <Compile Include="Vladislavleva\UnwrappedBallFunctionFiveDimensional.cs" />
+    <Compile Include="Vladislavleva\SineCosineFunction.cs" />
+    <Compile Include="Vladislavleva\SalutowiczFunctionTwoDimensional.cs" />
+    <Compile Include="Vladislavleva\SalutowiczFunctionOneDimensional.cs" />
+    <Compile Include="Vladislavleva\RippleFunction.cs" />
+    <Compile Include="Vladislavleva\RationalPolynomialTwoDimensional.cs" />
+    <Compile Include="Vladislavleva\RationalPolynomialThreeDimensional.cs" />
+    <Compile Include="Vladislavleva\KotanchekFunction.cs" />
+    <Compile Include="Vladislavleva\VladislavlevaInstanceProvider.cs" />
   </ItemGroup>
   <ItemGroup>
Index: /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Keijzer/KeijzerFunctionEight.cs
===================================================================
--- /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Keijzer/KeijzerFunctionEight.cs	(revision 7663)
+++ /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Keijzer/KeijzerFunctionEight.cs	(revision 7664)
@@ -1,3 +1,24 @@
-﻿using System;
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2012 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
 using System.Collections.Generic;
 
Index: /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Keijzer/KeijzerFunctionFifteen.cs
===================================================================
--- /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Keijzer/KeijzerFunctionFifteen.cs	(revision 7664)
+++ /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Keijzer/KeijzerFunctionFifteen.cs	(revision 7664)
@@ -0,0 +1,68 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2012 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+
+namespace HeuristicLab.Problems.Instances.Regression {
+  public class KeijzerFunctionFifteen : ArtificialRegressionDataDescriptor {
+
+    public override string Name { get { return "Keijzer 15 f(x) = 8 / (2 + x^2 + y^2)"; } }
+    public override string Description {
+      get {
+        return "Paper: Improving Symbolic Regression with Interval Arithmetic and Linear Scaling" + Environment.NewLine
+        + "Authors: Maarten Keijzer" + Environment.NewLine
+        + "Function: f(x, y) = 8 / (2 + x^2 + y^2)" + Environment.NewLine
+        + "range(train): 20 Train cases x,y = rnd(-3, 3)" + Environment.NewLine
+        + "range(test): x,y = [-3:0.01:3]" + Environment.NewLine
+        + "Function Set: x + y, x * y, 1/x, -x, sqrt(x)" + Environment.NewLine + Environment.NewLine
+        + "Note: Test partition has been adjusted to only 100 random uniformly distributed test cases in the intercal [-3, 3] (not ca. 360000 as described) "
+        + ", but 5000 cases are created";
+      }
+    }
+    protected override string TargetVariable { get { return "F"; } }
+    protected override IEnumerable<string> InputVariables { get { return new List<string>() { "X", "Y", "F" }; } }
+    protected override IEnumerable<string> AllowedInputVariables { get { return new List<string>() { "X", "Y" }; } }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return 20; } }
+    protected override int TestPartitionStart { get { return 2500; } }
+    protected override int TestPartitionEnd { get { return 5000; } }
+
+    protected override double[,] GenerateValues() {
+      List<List<double>> data = new List<List<double>>();
+      for (int i = 0; i < AllowedInputVariables.Count(); i++) {
+        data.Add(ValueGenerator.GenerateUniformDistributedValues(5000, -3, 3));
+      }
+
+      double x, y;
+      List<double> results = new List<double>();
+      for (int i = 0; i < data[0].Count; i++) {
+        x = data[0][i];
+        y = data[1][i];
+        results.Add(8 / (2 + Math.Pow(x, 2) + Math.Pow(y, 2)));
+      }
+      data.Add(results);
+
+      return ValueGenerator.Transformation(data);
+    }
+  }
+}
Index: /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Keijzer/KeijzerFunctionFour.cs
===================================================================
--- /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Keijzer/KeijzerFunctionFour.cs	(revision 7664)
+++ /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Keijzer/KeijzerFunctionFour.cs	(revision 7664)
@@ -0,0 +1,63 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2012 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+
+namespace HeuristicLab.Problems.Instances.Regression {
+  public class KeijzerFunctionFour : ArtificialRegressionDataDescriptor {
+
+    public override string Name { get { return "Keijzer 4 f(x) = 0.3 * x *sin(2 * PI * x)"; } }
+    public override string Description {
+      get {
+        return "Paper: Improving Symbolic Regression with Interval Arithmetic and Linear Scaling" + Environment.NewLine
+        + "Authors: Maarten Keijzer" + Environment.NewLine
+        + "Function: f(x) = 0.3 * x *sin(2 * PI * x)" + Environment.NewLine
+        + "range(train): x = [-1:0.1:1]" + Environment.NewLine
+        + "range(test): x = [-1:0.001:1]" + Environment.NewLine
+        + "Function Set: x + y, x * y, 1/x, -x, sqrt(x)";
+      }
+    }
+    protected override string TargetVariable { get { return "F"; } }
+    protected override IEnumerable<string> InputVariables { get { return new List<string>() { "X", "F" }; } }
+    protected override IEnumerable<string> AllowedInputVariables { get { return new List<string>() { "X" }; } }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return 21; } }
+    protected override int TestPartitionStart { get { return 21; } }
+    protected override int TestPartitionEnd { get { return 2022; } }
+
+    protected override double[,] GenerateValues() {
+      List<List<double>> data = new List<List<double>>();
+      data.Add(ValueGenerator.GenerateSteps(-1, 1, 0.1));
+      data[0].AddRange(ValueGenerator.GenerateSteps(-1, 1, 0.001));
+
+      double x;
+      List<double> results = new List<double>();
+      for (int i = 0; i < data[0].Count; i++) {
+        x = data[0][i];
+        results.Add(0.3 * x * Math.Sin(2 * Math.PI * x));
+      }
+      data.Add(results);
+
+      return ValueGenerator.Transformation(data);
+    }
+  }
+}
Index: /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Keijzer/KeijzerFunctionSeven.cs
===================================================================
--- /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Keijzer/KeijzerFunctionSeven.cs	(revision 7664)
+++ /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Keijzer/KeijzerFunctionSeven.cs	(revision 7664)
@@ -0,0 +1,64 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2012 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+
+namespace HeuristicLab.Problems.Instances.Regression {
+  public class KeijzerFunctionSeven : ArtificialRegressionDataDescriptor {
+
+    public override string Name { get { return "Keijzer 7 f(x) = Sum(1 / i) From 1 to X"; } }
+    public override string Description {
+      get {
+        return "Paper: Improving Symbolic Regression with Interval Arithmetic and Linear Scaling" + Environment.NewLine
+        + "Authors: Maarten Keijzer" + Environment.NewLine
+        + "Function: f(x) = (30 * x * y) / ((x - 10)  * y^2)" + Environment.NewLine
+        + "range(train): x = [1:1:50]" + Environment.NewLine
+        + "range(test): x = [1:1:120]" + Environment.NewLine
+        + "Function Set: x + y, x * y, 1/x, -x, sqrt(x)";
+      }
+    }
+    protected override string TargetVariable { get { return "F"; } }
+    protected override IEnumerable<string> InputVariables { get { return new List<string>() { "X", "F" }; } }
+    protected override IEnumerable<string> AllowedInputVariables { get { return new List<string>() { "X" }; } }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return 50; } }
+    protected override int TestPartitionStart { get { return 50; } }
+    protected override int TestPartitionEnd { get { return 170; } }
+
+    protected override double[,] GenerateValues() {
+      List<List<double>> data = new List<List<double>>();
+      data.Add(ValueGenerator.GenerateSteps(1, 50, 1));
+      data[0].AddRange(ValueGenerator.GenerateSteps(1, 120, 1));
+
+      double x;
+      List<double> results = new List<double>();
+      for (int i = 0; i < data[0].Count; i++) {
+        x = data[0][i];
+        results.Add(Enumerable.Range(1, (int)x).Sum(j => 1.0 / j));
+      }
+      data.Add(results);
+
+      return ValueGenerator.Transformation(data);
+    }
+  }
+}
Index: /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Keijzer/KeijzerFunctionSix.cs
===================================================================
--- /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Keijzer/KeijzerFunctionSix.cs	(revision 7664)
+++ /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Keijzer/KeijzerFunctionSix.cs	(revision 7664)
@@ -0,0 +1,66 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2012 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+
+namespace HeuristicLab.Problems.Instances.Regression {
+  public class KeijzerFunctionSix : ArtificialRegressionDataDescriptor {
+
+    public override string Name { get { return "Keijzer 6 f(x) = (30 * x * z) / ((x - 10)  * y^2)"; } }
+    public override string Description {
+      get {
+        return "Paper: Improving Symbolic Regression with Interval Arithmetic and Linear Scaling" + Environment.NewLine
+        + "Authors: Maarten Keijzer" + Environment.NewLine
+        + "Function: f(x) = (30 * x * z) / ((x - 10)  * y^2)" + Environment.NewLine
+        + "range(train): 1000 points x,z = rnd(-1, 1), y = rnd(1, 2)" + Environment.NewLine
+        + "range(test): 10000 points x,z = rnd(-1, 1), y = rnd(1, 2)" + Environment.NewLine
+        + "Function Set: x + y, x * y, 1/x, -x, sqrt(x)";
+      }
+    }
+    protected override string TargetVariable { get { return "F"; } }
+    protected override IEnumerable<string> InputVariables { get { return new List<string>() { "X", "Y", "Z", "F" }; } }
+    protected override IEnumerable<string> AllowedInputVariables { get { return new List<string>() { "X", "Y", "Z" }; } }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return 1000; } }
+    protected override int TestPartitionStart { get { return 1000; } }
+    protected override int TestPartitionEnd { get { return 11000; } }
+
+    protected override double[,] GenerateValues() {
+      List<List<double>> data = new List<List<double>>();
+      data.Add(ValueGenerator.GenerateUniformDistributedValues(TestPartitionEnd, -1, 1));
+      data.Add(ValueGenerator.GenerateUniformDistributedValues(TestPartitionEnd, 1, 2));
+      data.Add(ValueGenerator.GenerateUniformDistributedValues(TestPartitionEnd, -1, 1));
+
+      double x, y, z;
+      List<double> results = new List<double>();
+      for (int i = 0; i < data[0].Count; i++) {
+        x = data[0][i];
+        y = data[1][i];
+        z = data[2][i];
+        results.Add((30 * x * z) / ((x - 10) * Math.Pow(y, 2)));
+      }
+      data.Add(results);
+
+      return ValueGenerator.Transformation(data);
+    }
+  }
+}
Index: /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Keijzer/KeijzerFunctionSixteen.cs
===================================================================
--- /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Keijzer/KeijzerFunctionSixteen.cs	(revision 7664)
+++ /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Keijzer/KeijzerFunctionSixteen.cs	(revision 7664)
@@ -0,0 +1,68 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2012 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+
+namespace HeuristicLab.Problems.Instances.Regression {
+  public class KeijzerFunctionSixteen : ArtificialRegressionDataDescriptor {
+
+    public override string Name { get { return "Keijzer 16 f(x) = x^3 / 5 + y^3 / 2 - y - x"; } }
+    public override string Description {
+      get {
+        return "Paper: Improving Symbolic Regression with Interval Arithmetic and Linear Scaling" + Environment.NewLine
+        + "Authors: Maarten Keijzer" + Environment.NewLine
+        + "Function: f(x, y) = x^3 / 5 + y^3 / 2 - y - x" + Environment.NewLine
+        + "range(train): 20 Training cases x,y = rnd(-3, 3)" + Environment.NewLine
+        + "range(test): x,y = [-3:0.01:3]" + Environment.NewLine
+        + "Function Set: x + y, x * y, 1/x, -x, sqrt(x)" + Environment.NewLine + Environment.NewLine
+        + "Note: Test partition has been adjusted to only 100 random uniformly distributed test cases in the intercal [-3, 3] (not ca. 360000 as described) "
+        + ", but 5000 cases are created";
+      }
+    }
+    protected override string TargetVariable { get { return "F"; } }
+    protected override IEnumerable<string> InputVariables { get { return new List<string>() { "X", "Y", "F" }; } }
+    protected override IEnumerable<string> AllowedInputVariables { get { return new List<string>() { "X", "Y" }; } }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return 20; } }
+    protected override int TestPartitionStart { get { return 2500; } }
+    protected override int TestPartitionEnd { get { return 5000; } }
+
+    protected override double[,] GenerateValues() {
+      List<List<double>> data = new List<List<double>>();
+      for (int i = 0; i < AllowedInputVariables.Count(); i++) {
+        data.Add(ValueGenerator.GenerateUniformDistributedValues(5000, -3, 3));
+      }
+
+      double x, y;
+      List<double> results = new List<double>();
+      for (int i = 0; i < data[0].Count; i++) {
+        x = data[0][i];
+        y = data[1][i];
+        results.Add(Math.Pow(x, 3) / 5 + Math.Pow(y, 3) / 2 - y - x);
+      }
+      data.Add(results);
+
+      return ValueGenerator.Transformation(data);
+    }
+  }
+}
Index: /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Keijzer/KeijzerFunctionThirteen.cs
===================================================================
--- /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Keijzer/KeijzerFunctionThirteen.cs	(revision 7664)
+++ /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Keijzer/KeijzerFunctionThirteen.cs	(revision 7664)
@@ -0,0 +1,68 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2012 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+
+namespace HeuristicLab.Problems.Instances.Regression {
+  public class KeijzerFunctionThirteen : ArtificialRegressionDataDescriptor {
+
+    public override string Name { get { return "Keijzer 13 f(x) = x^4 - x^3 + y^2 / 2 - y"; } }
+    public override string Description {
+      get {
+        return "Paper: Improving Symbolic Regression with Interval Arithmetic and Linear Scaling" + Environment.NewLine
+        + "Authors: Maarten Keijzer" + Environment.NewLine
+        + "Function: f(x, y) = x^4 - x^3 + y^2 / 2 - y" + Environment.NewLine
+        + "range(train): 20 Training cases x,y = rnd(-3, 3)" + Environment.NewLine
+        + "range(test): x,y = [-3:0.01:3]" + Environment.NewLine
+        + "Function Set: x + y, x * y, 1/x, -x, sqrt(x)" + Environment.NewLine + Environment.NewLine
+        + "Note: Test partition has been adjusted to only 100 random uniformly distributed test cases in the intercal [-3, 3] (not ca. 360000 as described) "
+        + ", but 5000 cases are created";
+      }
+    }
+    protected override string TargetVariable { get { return "F"; } }
+    protected override IEnumerable<string> InputVariables { get { return new List<string>() { "X", "Y", "F" }; } }
+    protected override IEnumerable<string> AllowedInputVariables { get { return new List<string>() { "X", "Y" }; } }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return 20; } }
+    protected override int TestPartitionStart { get { return 2500; } }
+    protected override int TestPartitionEnd { get { return 5000; } }
+
+    protected override double[,] GenerateValues() {
+      List<List<double>> data = new List<List<double>>();
+      for (int i = 0; i < AllowedInputVariables.Count(); i++) {
+        data.Add(ValueGenerator.GenerateUniformDistributedValues(5000, -3, 3));
+      }
+
+      double x, y;
+      List<double> results = new List<double>();
+      for (int i = 0; i < data[0].Count; i++) {
+        x = data[0][i];
+        y = data[1][i];
+        results.Add(Math.Pow(x, 4) - Math.Pow(x, 3) + Math.Pow(y, 2) / 2 - y);
+      }
+      data.Add(results);
+
+      return ValueGenerator.Transformation(data);
+    }
+  }
+}
Index: /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Keijzer/KeijzerFunctionTwelve.cs
===================================================================
--- /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Keijzer/KeijzerFunctionTwelve.cs	(revision 7664)
+++ /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Keijzer/KeijzerFunctionTwelve.cs	(revision 7664)
@@ -0,0 +1,68 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2012 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+
+namespace HeuristicLab.Problems.Instances.Regression {
+  public class KeijzerFunctionTwelve : ArtificialRegressionDataDescriptor {
+
+    public override string Name { get { return "Keijzer 12 f(x) = xy + sin((x - 1)(y - 1))"; } }
+    public override string Description {
+      get {
+        return "Paper: Improving Symbolic Regression with Interval Arithmetic and Linear Scaling" + Environment.NewLine
+        + "Authors: Maarten Keijzer" + Environment.NewLine
+        + "Function: f(x, y) = xy + sin((x - 1)(y - 1))" + Environment.NewLine
+        + "range(train): 20 Training cases x,y = rnd(-3, 3)" + Environment.NewLine
+        + "range(test): x,y = [-3:0.01:3]" + Environment.NewLine
+        + "Function Set: x + y, x * y, 1/x, -x, sqrt(x)" + Environment.NewLine + Environment.NewLine
+        + "Note: Test partition has been adjusted to only 100 random uniformly distributed test cases in the intercal [-3, 3] (not ca. 360000 as described) "
+        + ", but 5000 cases are created";
+      }
+    }
+    protected override string TargetVariable { get { return "F"; } }
+    protected override IEnumerable<string> InputVariables { get { return new List<string>() { "X", "Y", "F" }; } }
+    protected override IEnumerable<string> AllowedInputVariables { get { return new List<string>() { "X", "Y" }; } }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return 20; } }
+    protected override int TestPartitionStart { get { return 2500; } }
+    protected override int TestPartitionEnd { get { return 5000; } }
+
+    protected override double[,] GenerateValues() {
+      List<List<double>> data = new List<List<double>>();
+      for (int i = 0; i < AllowedInputVariables.Count(); i++) {
+        data.Add(ValueGenerator.GenerateUniformDistributedValues(5000, -3, 3));
+      }
+
+      double x, y;
+      List<double> results = new List<double>();
+      for (int i = 0; i < data[0].Count; i++) {
+        x = data[0][i];
+        y = data[1][i];
+        results.Add(x * y + Math.Sin((x - 1) * (y - 1)));
+      }
+      data.Add(results);
+
+      return ValueGenerator.Transformation(data);
+    }
+  }
+}
Index: /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Keijzer/KeijzerInstanceProvider.cs
===================================================================
--- /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Keijzer/KeijzerInstanceProvider.cs	(revision 7663)
+++ /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Keijzer/KeijzerInstanceProvider.cs	(revision 7664)
@@ -1,5 +1,5 @@
 ﻿#region License Information
 /* HeuristicLab
- * Copyright (C) 2002-2011 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ * Copyright (C) 2002-2012 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
  *
  * This file is part of HeuristicLab.
@@ -24,5 +24,5 @@
 
 namespace HeuristicLab.Problems.Instances.Regression {
-  public class KeijzerInstanceProvider : ArtificialRegressionInstanceProvider, IProblemInstanceProvider<RegressionData> {
+  public class KeijzerInstanceProvider : ArtificialRegressionInstanceProvider {
     public override string Name {
       get { return "Keijzer Benchmark Problems"; }
@@ -40,75 +40,14 @@
     public override IEnumerable<IDataDescriptor> GetDataDescriptors() {
       List<IDataDescriptor> descriptorList = new List<IDataDescriptor>();
+      descriptorList.Add(new KeijzerFunctionFour());
+      descriptorList.Add(new KeijzerFunctionSix());
+      descriptorList.Add(new KeijzerFunctionSeven());
       descriptorList.Add(new KeijzerFunctionEight());
+      descriptorList.Add(new KeijzerFunctionTwelve());
+      descriptorList.Add(new KeijzerFunctionThirteen());
+      descriptorList.Add(new KeijzerFunctionFifteen());
+      descriptorList.Add(new KeijzerFunctionSixteen());
       return descriptorList;
     }
-
-    /*#region delete after test
-    public RegressionData LoadData(IDataDescriptor descriptor) {
-      throw new NotImplementedException();
-    }
-
-    public RegressionData LoadData(string path) {
-      TableFileParser csvFileParser = new TableFileParser();
-      csvFileParser.Parse(path);
-
-      RegressionData regData = new RegressionData();
-      regData.Name = path;
-      regData.InputVariables = new List<string>(csvFileParser.VariableNames);
-      regData.TargetVariable = csvFileParser.VariableNames.Last();
-      //convert to multidimensional array
-      double[][] values = csvFileParser.Values.Cast<double[]>().ToArray();
-      regData.Values = new double[values.GetLength(0), values.GetLength(1)];
-      for (int i = 0; i < values.GetLength(0); i++) {
-        for (int j = 0; j < values.GetLength(1); j++) {
-          regData.Values[i, j] = values[i][j];
-        }
-      }
-
-      int trainingPartEnd = csvFileParser.Rows * 2 / 3;
-      regData.TrainingPartitionStart = 0;
-      regData.TrainingPartitionEnd = trainingPartEnd;
-      regData.TestPartitionStart = trainingPartEnd;
-      regData.TestPartitionEnd = csvFileParser.Rows;
-      return regData;
-    }
-
-    public void SaveData(RegressionData instance, string path) {
-      StringBuilder strBuilder = new StringBuilder();
-
-      foreach (var variable in instance.InputVariables) {
-        strBuilder.Append(variable + ";");
-      }
-      strBuilder.Remove(strBuilder.Length - 1, 1);
-      strBuilder.AppendLine();
-
-      double[,] values = instance.Values;
-
-      for (int i = 0; i < values.GetLength(0); i++) {
-        for (int j = 0; j < values.GetLength(1); j++) {
-          strBuilder.Append(values[i, j] + ";");
-        }
-        strBuilder.Remove(strBuilder.Length - 1, 1);
-        strBuilder.AppendLine();
-      }
-
-      using (StreamWriter writer = new StreamWriter(path)) {
-        writer.Write(strBuilder);
-      }
-    }
-    #endregion
-
-    #region IProblemInstanceProvider<RegressionData> Members
-
-    public IProblemInstanceConsumer<RegressionData> Consumer {
-      get {
-        return new RegressionProblem();
-      }
-      set {
-        throw new NotImplementedException();
-      }
-    }
-
-    #endregion       */
   }
 }
Index: /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Korns/KornsFunctionEight.cs
===================================================================
--- /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Korns/KornsFunctionEight.cs	(revision 7664)
+++ /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Korns/KornsFunctionEight.cs	(revision 7664)
@@ -0,0 +1,73 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2012 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+
+namespace HeuristicLab.Problems.Instances.Regression {
+  public class KornsFunctionEight : ArtificialRegressionDataDescriptor {
+
+    public override string Name { get { return "Korns 8 y = 6.87 + (11 * sqrt(7.23 * X0 * X3 * X4))"; } }
+    public override string Description {
+      get {
+        return "Paper: Accuracy in Symbolic Regression" + Environment.NewLine
+        + "Authors: Michael F. Korns" + Environment.NewLine
+        + "Function: y = 6.87 + (11 * sqrt(7.23 * X0 * X3 * X4))" + Environment.NewLine
+        + "Real Numbers: 3.45, -.982, 100.389, and all other real constants" + Environment.NewLine
+        + "Row Features: x1, x2, x9, and all other features" + Environment.NewLine
+        + "Binary Operators: +, -, *, /" + Environment.NewLine
+        + "Unary Operators: sqrt, square, cube, cos, sin, tan, tanh, log, exp" + Environment.NewLine
+        + "\"Our testing regimen uses only statistical best practices out-of-sample testing techniques. "
+        + "We test each of the test cases on matrices of 10000 rows by 1 to 5 columns with no noise. "
+        + "For each test a training matrix is filled with random numbers between -50 and +50. The test case "
+        + "target expressions are limited to one basis function whose maximum depth is three grammar nodes.\"" + Environment.NewLine + Environment.NewLine
+        + "Note: Because of the square root only non-negatic values are created for the input variables!";
+      }
+    }
+    protected override string TargetVariable { get { return "Y"; } }
+    protected override IEnumerable<string> InputVariables { get { return new List<string>() { "X0", "X1", "X2", "X3", "X4", "Y" }; } }
+    protected override IEnumerable<string> AllowedInputVariables { get { return new List<string>() { "X0", "X1", "X2", "X3", "X4" }; } }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return 5000; } }
+    protected override int TestPartitionStart { get { return 5000; } }
+    protected override int TestPartitionEnd { get { return 10000; } }
+
+    protected override double[,] GenerateValues() {
+      List<List<double>> data = new List<List<double>>();
+      for (int i = 0; i < AllowedInputVariables.Count(); i++) {
+        data.Add(ValueGenerator.GenerateUniformDistributedValues(TestPartitionEnd, 0, 50));
+      }
+
+      double x0, x3, x4;
+      List<double> results = new List<double>();
+      for (int i = 0; i < data[0].Count; i++) {
+        x0 = data[0][i];
+        x3 = data[3][i];
+        x4 = data[4][i];
+        results.Add(6.87 + (11 * Math.Sqrt(7.23 * x0 * x3 * x4)));
+      }
+      data.Add(results);
+
+      return ValueGenerator.Transformation(data);
+    }
+  }
+}
Index: /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Korns/KornsFunctionEleven.cs
===================================================================
--- /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Korns/KornsFunctionEleven.cs	(revision 7664)
+++ /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Korns/KornsFunctionEleven.cs	(revision 7664)
@@ -0,0 +1,70 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2012 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+
+namespace HeuristicLab.Problems.Instances.Regression {
+  public class KornsFunctionEleven : ArtificialRegressionDataDescriptor {
+
+    public override string Name { get { return "Korns 11 y = 6.87 + (11 * cos(7.23 * X0 * X0 * X0))"; } }
+    public override string Description {
+      get {
+        return "Paper: Accuracy in Symbolic Regression" + Environment.NewLine
+        + "Authors: Michael F. Korns" + Environment.NewLine
+        + "Function: y = 6.87 + (11 * cos(7.23 * X0 * X0 * X0))" + Environment.NewLine
+        + "Real Numbers: 3.45, -.982, 100.389, and all other real constants" + Environment.NewLine
+        + "Row Features: x1, x2, x9, and all other features" + Environment.NewLine
+        + "Binary Operators: +, -, *, /" + Environment.NewLine
+        + "Unary Operators: sqrt, square, cube, cos, sin, tan, tanh, log, exp" + Environment.NewLine
+        + "\"Our testing regimen uses only statistical best practices out-of-sample testing techniques. "
+        + "We test each of the test cases on matrices of 10000 rows by 1 to 5 columns with no noise. "
+        + "For each test a training matrix is filled with random numbers between -50 and +50. The test case "
+        + "target expressions are limited to one basis function whose maximum depth is three grammar nodes.\"";
+      }
+    }
+    protected override string TargetVariable { get { return "Y"; } }
+    protected override IEnumerable<string> InputVariables { get { return new List<string>() { "X0", "X1", "X2", "X3", "X4", "Y" }; } }
+    protected override IEnumerable<string> AllowedInputVariables { get { return new List<string>() { "X0", "X1", "X2", "X3", "X4" }; } }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return 5000; } }
+    protected override int TestPartitionStart { get { return 5000; } }
+    protected override int TestPartitionEnd { get { return 10000; } }
+
+    protected override double[,] GenerateValues() {
+      List<List<double>> data = new List<List<double>>();
+      for (int i = 0; i < AllowedInputVariables.Count(); i++) {
+        data.Add(ValueGenerator.GenerateUniformDistributedValues(TestPartitionEnd, -50, 50));
+      }
+
+      double x0;
+      List<double> results = new List<double>();
+      for (int i = 0; i < data[0].Count; i++) {
+        x0 = data[0][i];
+        results.Add(6.87 + (11 * Math.Cos(7.23 * x0 * x0 * x0)));
+      }
+      data.Add(results);
+
+      return ValueGenerator.Transformation(data);
+    }
+  }
+}
Index: /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Korns/KornsFunctionFive.cs
===================================================================
--- /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Korns/KornsFunctionFive.cs	(revision 7664)
+++ /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Korns/KornsFunctionFive.cs	(revision 7664)
@@ -0,0 +1,71 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2012 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+
+namespace HeuristicLab.Problems.Instances.Regression {
+  public class KornsFunctionFive : ArtificialRegressionDataDescriptor {
+
+    public override string Name { get { return "Korns 5 y = 3.0 + (2.13 * log(X4))"; } }
+    public override string Description {
+      get {
+        return "Paper: Accuracy in Symbolic Regression" + Environment.NewLine
+        + "Authors: Michael F. Korns" + Environment.NewLine
+        + "Function: y = 3.0 + (2.13 * log(X4))" + Environment.NewLine
+        + "Real Numbers: 3.45, -.982, 100.389, and all other real constants" + Environment.NewLine
+        + "Row Features: x1, x2, x9, and all other features" + Environment.NewLine
+        + "Binary Operators: +, -, *, /" + Environment.NewLine
+        + "Unary Operators: sqrt, square, cube, cos, sin, tan, tanh, log, exp" + Environment.NewLine
+        + "\"Our testing regimen uses only statistical best practices out-of-sample testing techniques. "
+        + "We test each of the test cases on matrices of 10000 rows by 1 to 5 columns with no noise. "
+        + "For each test a training matrix is filled with random numbers between -50 and +50. The test case "
+        + "target expressions are limited to one basis function whose maximum depth is three grammar nodes.\"" + Environment.NewLine + Environment.NewLine
+        + "Note: Because of the logarithm only non-negatic values are created for the input variables!";
+      }
+    }
+    protected override string TargetVariable { get { return "Y"; } }
+    protected override IEnumerable<string> InputVariables { get { return new List<string>() { "X0", "X1", "X2", "X3", "X4", "Y" }; } }
+    protected override IEnumerable<string> AllowedInputVariables { get { return new List<string>() { "X0", "X1", "X2", "X3", "X4" }; } }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return 5000; } }
+    protected override int TestPartitionStart { get { return 5000; } }
+    protected override int TestPartitionEnd { get { return 10000; } }
+
+    protected override double[,] GenerateValues() {
+      List<List<double>> data = new List<List<double>>();
+      for (int i = 0; i < AllowedInputVariables.Count(); i++) {
+        data.Add(ValueGenerator.GenerateUniformDistributedValues(TestPartitionEnd, 0, 50));
+      }
+
+      double x4;
+      List<double> results = new List<double>();
+      for (int i = 0; i < data[0].Count; i++) {
+        x4 = data[4][i];
+        results.Add(3.0 + (2.13 * Math.Log(x4)));
+      }
+      data.Add(results);
+
+      return ValueGenerator.Transformation(data);
+    }
+  }
+}
Index: /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Korns/KornsFunctionFiveteen.cs
===================================================================
--- /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Korns/KornsFunctionFiveteen.cs	(revision 7664)
+++ /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Korns/KornsFunctionFiveteen.cs	(revision 7664)
@@ -0,0 +1,74 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2012 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+
+namespace HeuristicLab.Problems.Instances.Regression {
+  public class KornsFunctionFiveteen : ArtificialRegressionDataDescriptor {
+
+    public override string Name { get { return "Korns 15 y = 12.0 - (6.0 * ((tan(X0) / exp(X1)) * (log(X2) - tan(X3))))"; } }
+    public override string Description {
+      get {
+        return "Paper: Accuracy in Symbolic Regression" + Environment.NewLine
+        + "Authors: Michael F. Korns" + Environment.NewLine
+        + "Function: y = 12.0 - (6.0 * ((tan(X0) / exp(X1)) * (log(X2) - tan(X3))))" + Environment.NewLine
+        + "Real Numbers: 3.45, -.982, 100.389, and all other real constants" + Environment.NewLine
+        + "Row Features: x1, x2, x9, and all other features" + Environment.NewLine
+        + "Binary Operators: +, -, *, /" + Environment.NewLine
+        + "Unary Operators: sqrt, square, cube, cos, sin, tan, tanh, log, exp" + Environment.NewLine
+        + "\"Our testing regimen uses only statistical best practices out-of-sample testing techniques. "
+        + "We test each of the test cases on matrices of 10000 rows by 1 to 5 columns with no noise. "
+        + "For each test a training matrix is filled with random numbers between -50 and +50. The test case "
+        + "target expressions are limited to one basis function whose maximum depth is three grammar nodes.\"" + Environment.NewLine + Environment.NewLine
+        + "Note: Because of the logarithm only non-negatic values are created for the input variables!";
+      }
+    }
+    protected override string TargetVariable { get { return "Y"; } }
+    protected override IEnumerable<string> InputVariables { get { return new List<string>() { "X0", "X1", "X2", "X3", "X4", "Y" }; } }
+    protected override IEnumerable<string> AllowedInputVariables { get { return new List<string>() { "X0", "X1", "X2", "X3", "X4" }; } }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return 5000; } }
+    protected override int TestPartitionStart { get { return 5000; } }
+    protected override int TestPartitionEnd { get { return 10000; } }
+
+    protected override double[,] GenerateValues() {
+      List<List<double>> data = new List<List<double>>();
+      for (int i = 0; i < AllowedInputVariables.Count(); i++) {
+        data.Add(ValueGenerator.GenerateUniformDistributedValues(TestPartitionEnd, 0, 50));
+      }
+
+      double x0, x1, x2, x3;
+      List<double> results = new List<double>();
+      for (int i = 0; i < data[0].Count; i++) {
+        x0 = data[0][i];
+        x1 = data[1][i];
+        x2 = data[2][i];
+        x3 = data[3][i];
+        results.Add(12.0 - (6.0 * ((Math.Tan(x0) / Math.Exp(x1)) * (Math.Log(x2) - Math.Tan(x3)))));
+      }
+      data.Add(results);
+
+      return ValueGenerator.Transformation(data);
+    }
+  }
+}
Index: /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Korns/KornsFunctionFour.cs
===================================================================
--- /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Korns/KornsFunctionFour.cs	(revision 7664)
+++ /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Korns/KornsFunctionFour.cs	(revision 7664)
@@ -0,0 +1,70 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2012 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+
+namespace HeuristicLab.Problems.Instances.Regression {
+  public class KornsFunctionFour : ArtificialRegressionDataDescriptor {
+
+    public override string Name { get { return "Korns 4 y = -2.3 + (0.13 * sin(X2))"; } }
+    public override string Description {
+      get {
+        return "Paper: Accuracy in Symbolic Regression" + Environment.NewLine
+        + "Authors: Michael F. Korns" + Environment.NewLine
+        + "Function: y = -2.3 + (0.13 * sin(X2))" + Environment.NewLine
+        + "Real Numbers: 3.45, -.982, 100.389, and all other real constants" + Environment.NewLine
+        + "Row Features: x1, x2, x9, and all other features" + Environment.NewLine
+        + "Binary Operators: +, -, *, /" + Environment.NewLine
+        + "Unary Operators: sqrt, square, cube, cos, sin, tan, tanh, log, exp" + Environment.NewLine
+        + "\"Our testing regimen uses only statistical best practices out-of-sample testing techniques. "
+        + "We test each of the test cases on matrices of 10000 rows by 1 to 5 columns with no noise. "
+        + "For each test a training matrix is filled with random numbers between -50 and +50. The test case "
+        + "target expressions are limited to one basis function whose maximum depth is three grammar nodes.\"";
+      }
+    }
+    protected override string TargetVariable { get { return "Y"; } }
+    protected override IEnumerable<string> InputVariables { get { return new List<string>() { "X0", "X1", "X2", "X3", "X4", "Y" }; } }
+    protected override IEnumerable<string> AllowedInputVariables { get { return new List<string>() { "X0", "X1", "X2", "X3", "X4" }; } }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return 5000; } }
+    protected override int TestPartitionStart { get { return 5000; } }
+    protected override int TestPartitionEnd { get { return 10000; } }
+
+    protected override double[,] GenerateValues() {
+      List<List<double>> data = new List<List<double>>();
+      for (int i = 0; i < AllowedInputVariables.Count(); i++) {
+        data.Add(ValueGenerator.GenerateUniformDistributedValues(TestPartitionEnd, -50, 50));
+      }
+
+      double x2;
+      List<double> results = new List<double>();
+      for (int i = 0; i < data[0].Count; i++) {
+        x2 = data[2][i];
+        results.Add(-2.3 + (0.13 * Math.Sin(x2)));
+      }
+      data.Add(results);
+
+      return ValueGenerator.Transformation(data);
+    }
+  }
+}
Index: /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Korns/KornsFunctionFourteen.cs
===================================================================
--- /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Korns/KornsFunctionFourteen.cs	(revision 7664)
+++ /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Korns/KornsFunctionFourteen.cs	(revision 7664)
@@ -0,0 +1,73 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2012 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+
+namespace HeuristicLab.Problems.Instances.Regression {
+  public class KornsFunctionFourteen : ArtificialRegressionDataDescriptor {
+
+    public override string Name { get { return "Korns 14 y = 22.0 + (4.2 * ((cos(X0) - tan(X1)) * (tanh(X2) / sin(X3))))"; } }
+    public override string Description {
+      get {
+        return "Paper: Accuracy in Symbolic Regression" + Environment.NewLine
+        + "Authors: Michael F. Korns" + Environment.NewLine
+        + "Function: y = 22.0 + (4.2 * ((cos(X0) - tan(X1)) * (tanh(X2) / sin(X3))))" + Environment.NewLine
+        + "Real Numbers: 3.45, -.982, 100.389, and all other real constants" + Environment.NewLine
+        + "Row Features: x1, x2, x9, and all other features" + Environment.NewLine
+        + "Binary Operators: +, -, *, /" + Environment.NewLine
+        + "Unary Operators: sqrt, square, cube, cos, sin, tan, tanh, log, exp" + Environment.NewLine
+        + "\"Our testing regimen uses only statistical best practices out-of-sample testing techniques. "
+        + "We test each of the test cases on matrices of 10000 rows by 1 to 5 columns with no noise. "
+        + "For each test a training matrix is filled with random numbers between -50 and +50. The test case "
+        + "target expressions are limited to one basis function whose maximum depth is three grammar nodes.\"";
+      }
+    }
+    protected override string TargetVariable { get { return "Y"; } }
+    protected override IEnumerable<string> InputVariables { get { return new List<string>() { "X0", "X1", "X2", "X3", "X4", "Y" }; } }
+    protected override IEnumerable<string> AllowedInputVariables { get { return new List<string>() { "X0", "X1", "X2", "X3", "X4" }; } }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return 5000; } }
+    protected override int TestPartitionStart { get { return 5000; } }
+    protected override int TestPartitionEnd { get { return 10000; } }
+
+    protected override double[,] GenerateValues() {
+      List<List<double>> data = new List<List<double>>();
+      for (int i = 0; i < AllowedInputVariables.Count(); i++) {
+        data.Add(ValueGenerator.GenerateUniformDistributedValues(TestPartitionEnd, -50, 50));
+      }
+
+      double x0, x1, x2, x3;
+      List<double> results = new List<double>();
+      for (int i = 0; i < data[0].Count; i++) {
+        x0 = data[0][i];
+        x1 = data[1][i];
+        x2 = data[2][i];
+        x3 = data[3][i];
+        results.Add(22.0 + (4.2 * ((Math.Cos(x0) - Math.Tan(x1)) * (Math.Tanh(x2) / Math.Sin(x3)))));
+      }
+      data.Add(results);
+
+      return ValueGenerator.Transformation(data);
+    }
+  }
+}
Index: /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Korns/KornsFunctionNine.cs
===================================================================
--- /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Korns/KornsFunctionNine.cs	(revision 7664)
+++ /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Korns/KornsFunctionNine.cs	(revision 7664)
@@ -0,0 +1,74 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2012 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+
+namespace HeuristicLab.Problems.Instances.Regression {
+  public class KornsFunctionNine : ArtificialRegressionDataDescriptor {
+
+    public override string Name { get { return "Korns 9 y = ((sqrt(X0) / log(X1)) * (exp(X2) / square(X3)))"; } }
+    public override string Description {
+      get {
+        return "Paper: Accuracy in Symbolic Regression" + Environment.NewLine
+        + "Authors: Michael F. Korns" + Environment.NewLine
+        + "Function: y = ((sqrt(X0) / log(X1)) * (exp(X2) / square(X3)))" + Environment.NewLine
+        + "Real Numbers: 3.45, -.982, 100.389, and all other real constants" + Environment.NewLine
+        + "Row Features: x1, x2, x9, and all other features" + Environment.NewLine
+        + "Binary Operators: +, -, *, /" + Environment.NewLine
+        + "Unary Operators: sqrt, square, cube, cos, sin, tan, tanh, log, exp" + Environment.NewLine
+        + "\"Our testing regimen uses only statistical best practices out-of-sample testing techniques. "
+        + "We test each of the test cases on matrices of 10000 rows by 1 to 5 columns with no noise. "
+        + "For each test a training matrix is filled with random numbers between -50 and +50. The test case "
+        + "target expressions are limited to one basis function whose maximum depth is three grammar nodes.\"" + Environment.NewLine + Environment.NewLine
+        + "Note: Because of the square root and the logarithm only non-negatic values are created for the input variables!";
+      }
+    }
+    protected override string TargetVariable { get { return "Y"; } }
+    protected override IEnumerable<string> InputVariables { get { return new List<string>() { "X0", "X1", "X2", "X3", "X4", "Y" }; } }
+    protected override IEnumerable<string> AllowedInputVariables { get { return new List<string>() { "X0", "X1", "X2", "X3", "X4" }; } }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return 5000; } }
+    protected override int TestPartitionStart { get { return 5000; } }
+    protected override int TestPartitionEnd { get { return 10000; } }
+
+    protected override double[,] GenerateValues() {
+      List<List<double>> data = new List<List<double>>();
+      for (int i = 0; i < AllowedInputVariables.Count(); i++) {
+        data.Add(ValueGenerator.GenerateUniformDistributedValues(TestPartitionEnd, 0, 50));
+      }
+
+      double x0, x1, x2, x3;
+      List<double> results = new List<double>();
+      for (int i = 0; i < data[0].Count; i++) {
+        x0 = data[0][i];
+        x1 = data[1][i];
+        x2 = data[2][i];
+        x3 = data[3][i];
+        results.Add(((Math.Sqrt(x0) / Math.Log(x1)) * (Math.Exp(x2) / Math.Pow(x3, 2))));
+      }
+      data.Add(results);
+
+      return ValueGenerator.Transformation(data);
+    }
+  }
+}
Index: /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Korns/KornsFunctionOne.cs
===================================================================
--- /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Korns/KornsFunctionOne.cs	(revision 7664)
+++ /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Korns/KornsFunctionOne.cs	(revision 7664)
@@ -0,0 +1,70 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2012 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+
+namespace HeuristicLab.Problems.Instances.Regression {
+  public class KornsFunctionOne : ArtificialRegressionDataDescriptor {
+
+    public override string Name { get { return "Korns 1 y = 1.57 + (24.3 * X3)"; } }
+    public override string Description {
+      get {
+        return "Paper: Accuracy in Symbolic Regression" + Environment.NewLine
+        + "Authors: Michael F. Korns" + Environment.NewLine
+        + "Function: y = 1.57 + (24.3 * X3)" + Environment.NewLine
+        + "Real Numbers: 3.45, -.982, 100.389, and all other real constants" + Environment.NewLine
+        + "Row Features: x1, x2, x9, and all other features" + Environment.NewLine
+        + "Binary Operators: +, -, *, /" + Environment.NewLine
+        + "Unary Operators: sqrt, square, cube, cos, sin, tan, tanh, log, exp" + Environment.NewLine
+        + "\"Our testing regimen uses only statistical best practices out-of-sample testing techniques. "
+        + "We test each of the test cases on matrices of 10000 rows by 1 to 5 columns with no noise. "
+        + "For each test a training matrix is filled with random numbers between -50 and +50. The test case "
+        + "target expressions are limited to one basis function whose maximum depth is three grammar nodes.\"";
+      }
+    }
+    protected override string TargetVariable { get { return "Y"; } }
+    protected override IEnumerable<string> InputVariables { get { return new List<string>() { "X0", "X1", "X2", "X3", "X4", "Y" }; } }
+    protected override IEnumerable<string> AllowedInputVariables { get { return new List<string>() { "X0", "X1", "X2", "X3", "X4" }; } }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return 5000; } }
+    protected override int TestPartitionStart { get { return 5000; } }
+    protected override int TestPartitionEnd { get { return 10000; } }
+
+    protected override double[,] GenerateValues() {
+      List<List<double>> data = new List<List<double>>();
+      for (int i = 0; i < AllowedInputVariables.Count(); i++) {
+        data.Add(ValueGenerator.GenerateUniformDistributedValues(TestPartitionEnd, -50, 50));
+      }
+
+      double x3;
+      List<double> results = new List<double>();
+      for (int i = 0; i < data[0].Count; i++) {
+        x3 = data[3][i];
+        results.Add(1.57 + (24.3 * x3));
+      }
+      data.Add(results);
+
+      return ValueGenerator.Transformation(data);
+    }
+  }
+}
Index: /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Korns/KornsFunctionSeven.cs
===================================================================
--- /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Korns/KornsFunctionSeven.cs	(revision 7664)
+++ /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Korns/KornsFunctionSeven.cs	(revision 7664)
@@ -0,0 +1,70 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2012 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+
+namespace HeuristicLab.Problems.Instances.Regression {
+  public class KornsFunctionSeven : ArtificialRegressionDataDescriptor {
+
+    public override string Name { get { return "Korns 7 y = 213.80940889 - (213.80940889 * exp(-0.54723748542 * X0))"; } }
+    public override string Description {
+      get {
+        return "Paper: Accuracy in Symbolic Regression" + Environment.NewLine
+        + "Authors: Michael F. Korns" + Environment.NewLine
+        + "Function: y = 213.80940889 - (213.80940889 * exp(-0.54723748542 * X0))" + Environment.NewLine
+        + "Real Numbers: 3.45, -.982, 100.389, and all other real constants" + Environment.NewLine
+        + "Row Features: x1, x2, x9, and all other features" + Environment.NewLine
+        + "Binary Operators: +, -, *, /" + Environment.NewLine
+        + "Unary Operators: sqrt, square, cube, cos, sin, tan, tanh, log, exp" + Environment.NewLine
+        + "\"Our testing regimen uses only statistical best practices out-of-sample testing techniques. "
+        + "We test each of the test cases on matrices of 10000 rows by 1 to 5 columns with no noise. "
+        + "For each test a training matrix is filled with random numbers between -50 and +50. The test case "
+        + "target expressions are limited to one basis function whose maximum depth is three grammar nodes.\"";
+      }
+    }
+    protected override string TargetVariable { get { return "Y"; } }
+    protected override IEnumerable<string> InputVariables { get { return new List<string>() { "X0", "X1", "X2", "X3", "X4", "Y" }; } }
+    protected override IEnumerable<string> AllowedInputVariables { get { return new List<string>() { "X0", "X1", "X2", "X3", "X4" }; } }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return 5000; } }
+    protected override int TestPartitionStart { get { return 5000; } }
+    protected override int TestPartitionEnd { get { return 10000; } }
+
+    protected override double[,] GenerateValues() {
+      List<List<double>> data = new List<List<double>>();
+      for (int i = 0; i < AllowedInputVariables.Count(); i++) {
+        data.Add(ValueGenerator.GenerateUniformDistributedValues(TestPartitionEnd, -50, 50));
+      }
+
+      double x0;
+      List<double> results = new List<double>();
+      for (int i = 0; i < data[0].Count; i++) {
+        x0 = data[0][i];
+        results.Add(213.80940889 - (213.80940889 * Math.Exp(-0.54723748542 * x0)));
+      }
+      data.Add(results);
+
+      return ValueGenerator.Transformation(data);
+    }
+  }
+}
Index: /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Korns/KornsFunctionSix.cs
===================================================================
--- /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Korns/KornsFunctionSix.cs	(revision 7664)
+++ /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Korns/KornsFunctionSix.cs	(revision 7664)
@@ -0,0 +1,71 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2012 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+
+namespace HeuristicLab.Problems.Instances.Regression {
+  public class KornsFunctionSix : ArtificialRegressionDataDescriptor {
+
+    public override string Name { get { return "Korns 6 y = 1.3 + (0.13 * sqrt(X0))"; } }
+    public override string Description {
+      get {
+        return "Paper: Accuracy in Symbolic Regression" + Environment.NewLine
+        + "Authors: Michael F. Korns" + Environment.NewLine
+        + "Function: y = 1.3 + (0.13 * sqrt(X0))" + Environment.NewLine
+        + "Real Numbers: 3.45, -.982, 100.389, and all other real constants" + Environment.NewLine
+        + "Row Features: x1, x2, x9, and all other features" + Environment.NewLine
+        + "Binary Operators: +, -, *, /" + Environment.NewLine
+        + "Unary Operators: sqrt, square, cube, cos, sin, tan, tanh, log, exp" + Environment.NewLine
+        + "\"Our testing regimen uses only statistical best practices out-of-sample testing techniques. "
+        + "We test each of the test cases on matrices of 10000 rows by 1 to 5 columns with no noise. "
+        + "For each test a training matrix is filled with random numbers between -50 and +50. The test case "
+        + "target expressions are limited to one basis function whose maximum depth is three grammar nodes.\"" + Environment.NewLine + Environment.NewLine
+        + "Note: Because of the square root only non-negatic values are created for the input variables!";
+      }
+    }
+    protected override string TargetVariable { get { return "Y"; } }
+    protected override IEnumerable<string> InputVariables { get { return new List<string>() { "X0", "X1", "X2", "X3", "X4", "Y" }; } }
+    protected override IEnumerable<string> AllowedInputVariables { get { return new List<string>() { "X0", "X1", "X2", "X3", "X4" }; } }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return 5000; } }
+    protected override int TestPartitionStart { get { return 5000; } }
+    protected override int TestPartitionEnd { get { return 10000; } }
+
+    protected override double[,] GenerateValues() {
+      List<List<double>> data = new List<List<double>>();
+      for (int i = 0; i < AllowedInputVariables.Count(); i++) {
+        data.Add(ValueGenerator.GenerateUniformDistributedValues(TestPartitionEnd, 0, 50));
+      }
+
+      double x0;
+      List<double> results = new List<double>();
+      for (int i = 0; i < data[0].Count; i++) {
+        x0 = data[0][i];
+        results.Add(1.3 + (0.13 * Math.Sqrt(x0)));
+      }
+      data.Add(results);
+
+      return ValueGenerator.Transformation(data);
+    }
+  }
+}
Index: /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Korns/KornsFunctionTen.cs
===================================================================
--- /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Korns/KornsFunctionTen.cs	(revision 7664)
+++ /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Korns/KornsFunctionTen.cs	(revision 7664)
@@ -0,0 +1,73 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2012 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+
+namespace HeuristicLab.Problems.Instances.Regression {
+  public class KornsFunctionTen : ArtificialRegressionDataDescriptor {
+
+    public override string Name { get { return "Korns 10 y = 0.81 + (24.3 * (((2.0 * X1) + (3.0 * square(X2))) / ((4.0 * cube(X3)) + (5.0 * quart(X4)))))"; } }
+    public override string Description {
+      get {
+        return "Paper: Accuracy in Symbolic Regression" + Environment.NewLine
+        + "Authors: Michael F. Korns" + Environment.NewLine
+        + "Function: y = 0.81 + (24.3 * (((2.0 * X1) + (3.0 * square(X2))) / ((4.0 * cube(X3)) + (5.0 * quart(X4)))))" + Environment.NewLine
+        + "Real Numbers: 3.45, -.982, 100.389, and all other real constants" + Environment.NewLine
+        + "Row Features: x1, x2, x9, and all other features" + Environment.NewLine
+        + "Binary Operators: +, -, *, /" + Environment.NewLine
+        + "Unary Operators: sqrt, square, cube, cos, sin, tan, tanh, log, exp" + Environment.NewLine
+        + "\"Our testing regimen uses only statistical best practices out-of-sample testing techniques. "
+        + "We test each of the test cases on matrices of 10000 rows by 1 to 5 columns with no noise. "
+        + "For each test a training matrix is filled with random numbers between -50 and +50. The test case "
+        + "target expressions are limited to one basis function whose maximum depth is three grammar nodes.\"";
+      }
+    }
+    protected override string TargetVariable { get { return "Y"; } }
+    protected override IEnumerable<string> InputVariables { get { return new List<string>() { "X0", "X1", "X2", "X3", "X4", "Y" }; } }
+    protected override IEnumerable<string> AllowedInputVariables { get { return new List<string>() { "X0", "X1", "X2", "X3", "X4" }; } }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return 5000; } }
+    protected override int TestPartitionStart { get { return 5000; } }
+    protected override int TestPartitionEnd { get { return 10000; } }
+
+    protected override double[,] GenerateValues() {
+      List<List<double>> data = new List<List<double>>();
+      for (int i = 0; i < AllowedInputVariables.Count(); i++) {
+        data.Add(ValueGenerator.GenerateUniformDistributedValues(TestPartitionEnd, -50, 50));
+      }
+
+      double x1, x2, x3, x4;
+      List<double> results = new List<double>();
+      for (int i = 0; i < data[0].Count; i++) {
+        x1 = data[1][i];
+        x2 = data[2][i];
+        x3 = data[3][i];
+        x4 = data[4][i];
+        results.Add(0.81 + (24.3 * (((2.0 * x1) + (3.0 * Math.Pow(x2, 2))) / ((4.0 * Math.Pow(x3, 3)) + (5.0 * Math.Pow(x4, 4))))));
+      }
+      data.Add(results);
+
+      return ValueGenerator.Transformation(data);
+    }
+  }
+}
Index: /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Korns/KornsFunctionThirteen.cs
===================================================================
--- /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Korns/KornsFunctionThirteen.cs	(revision 7664)
+++ /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Korns/KornsFunctionThirteen.cs	(revision 7664)
@@ -0,0 +1,73 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2012 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+
+namespace HeuristicLab.Problems.Instances.Regression {
+  public class KornsFunctionThirteen : ArtificialRegressionDataDescriptor {
+
+    public override string Name { get { return "Korns 13 y = 32.0 - (3.0 * ((tan(X0) / tan(X1)) * (tan(X2) / tan(X3))))"; } }
+    public override string Description {
+      get {
+        return "Paper: Accuracy in Symbolic Regression" + Environment.NewLine
+        + "Authors: Michael F. Korns" + Environment.NewLine
+        + "Function: y = 32.0 - (3.0 * ((tan(X0) / tan(X1)) * (tan(X2) / tan(X3))))" + Environment.NewLine
+        + "Real Numbers: 3.45, -.982, 100.389, and all other real constants" + Environment.NewLine
+        + "Row Features: x1, x2, x9, and all other features" + Environment.NewLine
+        + "Binary Operators: +, -, *, /" + Environment.NewLine
+        + "Unary Operators: sqrt, square, cube, cos, sin, tan, tanh, log, exp" + Environment.NewLine
+        + "\"Our testing regimen uses only statistical best practices out-of-sample testing techniques. "
+        + "We test each of the test cases on matrices of 10000 rows by 1 to 5 columns with no noise. "
+        + "For each test a training matrix is filled with random numbers between -50 and +50. The test case "
+        + "target expressions are limited to one basis function whose maximum depth is three grammar nodes.\"";
+      }
+    }
+    protected override string TargetVariable { get { return "Y"; } }
+    protected override IEnumerable<string> InputVariables { get { return new List<string>() { "X0", "X1", "X2", "X3", "X4", "Y" }; } }
+    protected override IEnumerable<string> AllowedInputVariables { get { return new List<string>() { "X0", "X1", "X2", "X3", "X4" }; } }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return 5000; } }
+    protected override int TestPartitionStart { get { return 5000; } }
+    protected override int TestPartitionEnd { get { return 10000; } }
+
+    protected override double[,] GenerateValues() {
+      List<List<double>> data = new List<List<double>>();
+      for (int i = 0; i < AllowedInputVariables.Count(); i++) {
+        data.Add(ValueGenerator.GenerateUniformDistributedValues(TestPartitionEnd, -50, 50));
+      }
+
+      double x0, x1, x2, x3;
+      List<double> results = new List<double>();
+      for (int i = 0; i < data[0].Count; i++) {
+        x0 = data[0][i];
+        x1 = data[1][i];
+        x2 = data[2][i];
+        x3 = data[3][i];
+        results.Add(32.0 - (3.0 * ((Math.Tan(x0) / Math.Tan(x1)) * (Math.Tan(x2) / Math.Tan(x3)))));
+      }
+      data.Add(results);
+
+      return ValueGenerator.Transformation(data);
+    }
+  }
+}
Index: /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Korns/KornsFunctionThree.cs
===================================================================
--- /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Korns/KornsFunctionThree.cs	(revision 7664)
+++ /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Korns/KornsFunctionThree.cs	(revision 7664)
@@ -0,0 +1,73 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2012 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+
+namespace HeuristicLab.Problems.Instances.Regression {
+  public class KornsFunctionThree : ArtificialRegressionDataDescriptor {
+
+    public override string Name { get { return "Korns 3 y = -5.41 + (4.9 * (((X3 - X0) + (X1 / X4)) / (3 * X4)))"; } }
+    public override string Description {
+      get {
+        return "Paper: Accuracy in Symbolic Regression" + Environment.NewLine
+        + "Authors: Michael F. Korns" + Environment.NewLine
+        + "Function: y = 1.57 + (24.3 * X3)" + Environment.NewLine
+        + "Real Numbers: 3.45, -.982, 100.389, and all other real constants" + Environment.NewLine
+        + "Row Features: x1, x2, x9, and all other features" + Environment.NewLine
+        + "Binary Operators: +, -, *, /" + Environment.NewLine
+        + "Unary Operators: sqrt, square, cube, cos, sin, tan, tanh, log, exp" + Environment.NewLine
+        + "\"Our testing regimen uses only statistical best practices out-of-sample testing techniques. "
+        + "We test each of the test cases on matrices of 10000 rows by 1 to 5 columns with no noise. "
+        + "For each test a training matrix is filled with random numbers between -50 and +50. The test case "
+        + "target expressions are limited to one basis function whose maximum depth is three grammar nodes.\"";
+      }
+    }
+    protected override string TargetVariable { get { return "Y"; } }
+    protected override IEnumerable<string> InputVariables { get { return new List<string>() { "X0", "X1", "X2", "X3", "X4", "Y" }; } }
+    protected override IEnumerable<string> AllowedInputVariables { get { return new List<string>() { "X0", "X1", "X2", "X3", "X4" }; } }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return 5000; } }
+    protected override int TestPartitionStart { get { return 5000; } }
+    protected override int TestPartitionEnd { get { return 10000; } }
+
+    protected override double[,] GenerateValues() {
+      List<List<double>> data = new List<List<double>>();
+      for (int i = 0; i < AllowedInputVariables.Count(); i++) {
+        data.Add(ValueGenerator.GenerateUniformDistributedValues(TestPartitionEnd, -50, 50));
+      }
+
+      double x0, x1, x3, x4;
+      List<double> results = new List<double>();
+      for (int i = 0; i < data[0].Count; i++) {
+        x0 = data[0][i];
+        x1 = data[1][i];
+        x3 = data[3][i];
+        x4 = data[4][i];
+        results.Add(-5.41 + (4.9 * (((x3 - x0) + (x1 / x4)) / (3 * x4))));
+      }
+      data.Add(results);
+
+      return ValueGenerator.Transformation(data);
+    }
+  }
+}
Index: /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Korns/KornsFunctionTwelve.cs
===================================================================
--- /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Korns/KornsFunctionTwelve.cs	(revision 7664)
+++ /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Korns/KornsFunctionTwelve.cs	(revision 7664)
@@ -0,0 +1,71 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2012 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+
+namespace HeuristicLab.Problems.Instances.Regression {
+  public class KornsFunctionTwelve : ArtificialRegressionDataDescriptor {
+
+    public override string Name { get { return "Korns 12 y = 2.0 - (2.1 * (cos(9.8 * X0) * sin(1.3 * X4)))"; } }
+    public override string Description {
+      get {
+        return "Paper: Accuracy in Symbolic Regression" + Environment.NewLine
+        + "Authors: Michael F. Korns" + Environment.NewLine
+        + "Function: y = 2.0 - (2.1 * (cos(9.8 * X0) * sin(1.3 * X4)))" + Environment.NewLine
+        + "Real Numbers: 3.45, -.982, 100.389, and all other real constants" + Environment.NewLine
+        + "Row Features: x1, x2, x9, and all other features" + Environment.NewLine
+        + "Binary Operators: +, -, *, /" + Environment.NewLine
+        + "Unary Operators: sqrt, square, cube, cos, sin, tan, tanh, log, exp" + Environment.NewLine
+        + "\"Our testing regimen uses only statistical best practices out-of-sample testing techniques. "
+        + "We test each of the test cases on matrices of 10000 rows by 1 to 5 columns with no noise. "
+        + "For each test a training matrix is filled with random numbers between -50 and +50. The test case "
+        + "target expressions are limited to one basis function whose maximum depth is three grammar nodes.\"";
+      }
+    }
+    protected override string TargetVariable { get { return "Y"; } }
+    protected override IEnumerable<string> InputVariables { get { return new List<string>() { "X0", "X1", "X2", "X3", "X4", "Y" }; } }
+    protected override IEnumerable<string> AllowedInputVariables { get { return new List<string>() { "X0", "X1", "X2", "X3", "X4" }; } }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return 5000; } }
+    protected override int TestPartitionStart { get { return 5000; } }
+    protected override int TestPartitionEnd { get { return 10000; } }
+
+    protected override double[,] GenerateValues() {
+      List<List<double>> data = new List<List<double>>();
+      for (int i = 0; i < AllowedInputVariables.Count(); i++) {
+        data.Add(ValueGenerator.GenerateUniformDistributedValues(TestPartitionEnd, -50, 50));
+      }
+
+      double x0, x4;
+      List<double> results = new List<double>();
+      for (int i = 0; i < data[0].Count; i++) {
+        x0 = data[0][i];
+        x4 = data[4][i];
+        results.Add(2.0 - (2.1 * (Math.Cos(9.8 * x0) * Math.Sin(1.3 * x4))));
+      }
+      data.Add(results);
+
+      return ValueGenerator.Transformation(data);
+    }
+  }
+}
Index: /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Korns/KornsFunctionTwo.cs
===================================================================
--- /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Korns/KornsFunctionTwo.cs	(revision 7664)
+++ /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Korns/KornsFunctionTwo.cs	(revision 7664)
@@ -0,0 +1,72 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2012 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+
+namespace HeuristicLab.Problems.Instances.Regression {
+  public class KornsFunctionTwo : ArtificialRegressionDataDescriptor {
+
+    public override string Name { get { return "Korns 2 y = 0.23 + (14.2 * ((X3 + X1) / (3.0 * X4)))"; } }
+    public override string Description {
+      get {
+        return "Paper: Accuracy in Symbolic Regression" + Environment.NewLine
+        + "Authors: Michael F. Korns" + Environment.NewLine
+        + "Function: y = 0.23 + (14.2 * ((X3 + X1) / (3.0 * X4)))" + Environment.NewLine
+        + "Real Numbers: 3.45, -.982, 100.389, and all other real constants" + Environment.NewLine
+        + "Row Features: x1, x2, x9, and all other features" + Environment.NewLine
+        + "Binary Operators: +, -, *, /" + Environment.NewLine
+        + "Unary Operators: sqrt, square, cube, cos, sin, tan, tanh, log, exp" + Environment.NewLine
+        + "\"Our testing regimen uses only statistical best practices out-of-sample testing techniques. "
+        + "We test each of the test cases on matrices of 10000 rows by 1 to 5 columns with no noise. "
+        + "For each test a training matrix is filled with random numbers between -50 and +50. The test case "
+        + "target expressions are limited to one basis function whose maximum depth is three grammar nodes.\"";
+      }
+    }
+    protected override string TargetVariable { get { return "Y"; } }
+    protected override IEnumerable<string> InputVariables { get { return new List<string>() { "X0", "X1", "X2", "X3", "X4", "Y" }; } }
+    protected override IEnumerable<string> AllowedInputVariables { get { return new List<string>() { "X0", "X1", "X2", "X3", "X4" }; } }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return 5000; } }
+    protected override int TestPartitionStart { get { return 5000; } }
+    protected override int TestPartitionEnd { get { return 10000; } }
+
+    protected override double[,] GenerateValues() {
+      List<List<double>> data = new List<List<double>>();
+      for (int i = 0; i < AllowedInputVariables.Count(); i++) {
+        data.Add(ValueGenerator.GenerateUniformDistributedValues(TestPartitionEnd, -50, 50));
+      }
+
+      double x1, x3, x4;
+      List<double> results = new List<double>();
+      for (int i = 0; i < data[0].Count; i++) {
+        x1 = data[1][i];
+        x3 = data[3][i];
+        x4 = data[4][i];
+        results.Add(0.23 + (14.2 * ((x3 + x1) / (3.0 * x4))));
+      }
+      data.Add(results);
+
+      return ValueGenerator.Transformation(data);
+    }
+  }
+}
Index: /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Korns/KornsInstanceProvider.cs
===================================================================
--- /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Korns/KornsInstanceProvider.cs	(revision 7664)
+++ /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Korns/KornsInstanceProvider.cs	(revision 7664)
@@ -0,0 +1,60 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2012 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+
+namespace HeuristicLab.Problems.Instances.Regression {
+  public class KornsInstanceProvider : ArtificialRegressionInstanceProvider {
+    public override string Name {
+      get { return "Korns Benchmark Problems"; }
+    }
+    public override string Description {
+      get { return ""; }
+    }
+    public override Uri WebLink {
+      get { return new Uri("http://groups.csail.mit.edu/EVO-DesignOpt/GPBenchmarks/"); }
+    }
+    public override string ReferencePublication {
+      get { return ""; }
+    }
+
+    public override IEnumerable<IDataDescriptor> GetDataDescriptors() {
+      List<IDataDescriptor> descriptorList = new List<IDataDescriptor>();
+      descriptorList.Add(new KornsFunctionOne());
+      descriptorList.Add(new KornsFunctionTwo());
+      descriptorList.Add(new KornsFunctionThree());
+      descriptorList.Add(new KornsFunctionFour());
+      descriptorList.Add(new KornsFunctionFive());
+      descriptorList.Add(new KornsFunctionSix());
+      descriptorList.Add(new KornsFunctionSeven());
+      descriptorList.Add(new KornsFunctionEight());
+      descriptorList.Add(new KornsFunctionNine());
+      descriptorList.Add(new KornsFunctionTen());
+      descriptorList.Add(new KornsFunctionEleven());
+      descriptorList.Add(new KornsFunctionTwelve());
+      descriptorList.Add(new KornsFunctionThirteen());
+      descriptorList.Add(new KornsFunctionFourteen());
+      descriptorList.Add(new KornsFunctionFiveteen());
+      return descriptorList;
+    }
+  }
+}
Index: /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Nguyen/NguyenFunctionEight.cs
===================================================================
--- /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Nguyen/NguyenFunctionEight.cs	(revision 7664)
+++ /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Nguyen/NguyenFunctionEight.cs	(revision 7664)
@@ -0,0 +1,62 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2012 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+
+namespace HeuristicLab.Problems.Instances.Regression {
+  public class NguyenFunctionEight : ArtificialRegressionDataDescriptor {
+
+    public override string Name { get { return "Nguyen F8 = Sqrt(x)"; } }
+    public override string Description {
+      get {
+        return "Paper: Semantically-based Crossover in Genetic Programming: Application to Real-valued Symbolic Regression" + Environment.NewLine
+        + "Authors: Nguyen Quang Uy · Nguyen Xuan Hoai · Michael O’Neill · R.I. McKay · Edgar Galvan-Lopez" + Environment.NewLine
+        + "Function: F8 = Sqrt(x)" + Environment.NewLine
+        + "Fitcases: 20 random points ⊆ [0, 4]" + Environment.NewLine
+        + "Non-terminals: +, -, *, /, sin, cos, exp, log (protected version)" + Environment.NewLine
+        + "Terminals: X, 1 for single variable problems, and X, Y for bivariable problems";
+      }
+    }
+    protected override string TargetVariable { get { return "Y"; } }
+    protected override IEnumerable<string> InputVariables { get { return new List<string>() { "X", "Y" }; } }
+    protected override IEnumerable<string> AllowedInputVariables { get { return new List<string>() { "X" }; } }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return 20; } }
+    protected override int TestPartitionStart { get { return 250; } }
+    protected override int TestPartitionEnd { get { return 350; } }
+
+    protected override double[,] GenerateValues() {
+      List<List<double>> data = new List<List<double>>();
+      data.Add(ValueGenerator.GenerateUniformDistributedValues(500, 0, 4));
+
+      double x;
+      List<double> results = new List<double>();
+      for (int i = 0; i < data[0].Count; i++) {
+        x = data[0][i];
+        results.Add(Math.Sqrt(x));
+      }
+      data.Add(results);
+
+      return ValueGenerator.Transformation(data);
+    }
+  }
+}
Index: /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Nguyen/NguyenFunctionEleven.cs
===================================================================
--- /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Nguyen/NguyenFunctionEleven.cs	(revision 7664)
+++ /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Nguyen/NguyenFunctionEleven.cs	(revision 7664)
@@ -0,0 +1,64 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2012 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+
+namespace HeuristicLab.Problems.Instances.Regression {
+  public class NguyenFunctionEleven : ArtificialRegressionDataDescriptor {
+
+    public override string Name { get { return "Nguyen F11 = x^y"; } }
+    public override string Description {
+      get {
+        return "Paper: Semantically-based Crossover in Genetic Programming: Application to Real-valued Symbolic Regression" + Environment.NewLine
+        + "Authors: Nguyen Quang Uy · Nguyen Xuan Hoai · Michael O’Neill · R.I. McKay · Edgar Galvan-Lopez" + Environment.NewLine
+        + "Function: F11 = x^y" + Environment.NewLine
+        + "Fitcases: 100 random points ⊆ [0, 1]x[0, 1]" + Environment.NewLine
+        + "Non-terminals: +, -, *, /, sin, cos, exp, log (protected version)" + Environment.NewLine
+        + "Terminals: X, 1 for single variable problems, and X, Y for bivariable problems";
+      }
+    }
+    protected override string TargetVariable { get { return "Z"; } }
+    protected override IEnumerable<string> InputVariables { get { return new List<string>() { "X", "Y", "Z" }; } }
+    protected override IEnumerable<string> AllowedInputVariables { get { return new List<string>() { "X", "Y" }; } }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return 100; } }
+    protected override int TestPartitionStart { get { return 500; } }
+    protected override int TestPartitionEnd { get { return 1000; } }
+
+    protected override double[,] GenerateValues() {
+      List<List<double>> data = new List<List<double>>();
+      data.Add(ValueGenerator.GenerateUniformDistributedValues(TestPartitionEnd, 0, 1));
+      data.Add(ValueGenerator.GenerateUniformDistributedValues(TestPartitionEnd, 0, 1));
+
+      double x, y;
+      List<double> results = new List<double>();
+      for (int i = 0; i < data[0].Count; i++) {
+        x = data[0][i];
+        y = data[1][i];
+        results.Add(Math.Pow(x, y));
+      }
+      data.Add(results);
+
+      return ValueGenerator.Transformation(data);
+    }
+  }
+}
Index: /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Nguyen/NguyenFunctionFive.cs
===================================================================
--- /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Nguyen/NguyenFunctionFive.cs	(revision 7664)
+++ /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Nguyen/NguyenFunctionFive.cs	(revision 7664)
@@ -0,0 +1,62 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2012 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+
+namespace HeuristicLab.Problems.Instances.Regression {
+  public class NguyenFunctionFive : ArtificialRegressionDataDescriptor {
+
+    public override string Name { get { return "Nguyen F5 = sin(x^2)cos(x) - 1"; } }
+    public override string Description {
+      get {
+        return "Paper: Semantically-based Crossover in Genetic Programming: Application to Real-valued Symbolic Regression" + Environment.NewLine
+        + "Authors: Nguyen Quang Uy · Nguyen Xuan Hoai · Michael O’Neill · R.I. McKay · Edgar Galvan-Lopez" + Environment.NewLine
+        + "Function: F5 = sin(x^2)cos(x) - 1" + Environment.NewLine
+        + "Fitcases: 20 random points ⊆ [-1, 1]" + Environment.NewLine
+        + "Non-terminals: +, -, *, /, sin, cos, exp, log (protected version)" + Environment.NewLine
+        + "Terminals: X, 1 for single variable problems, and X, Y for bivariable problems";
+      }
+    }
+    protected override string TargetVariable { get { return "Y"; } }
+    protected override IEnumerable<string> InputVariables { get { return new List<string>() { "X", "Y" }; } }
+    protected override IEnumerable<string> AllowedInputVariables { get { return new List<string>() { "X" }; } }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return 20; } }
+    protected override int TestPartitionStart { get { return 250; } }
+    protected override int TestPartitionEnd { get { return 350; } }
+
+    protected override double[,] GenerateValues() {
+      List<List<double>> data = new List<List<double>>();
+      data.Add(ValueGenerator.GenerateUniformDistributedValues(500, -1, 1));
+
+      double x;
+      List<double> results = new List<double>();
+      for (int i = 0; i < data[0].Count; i++) {
+        x = data[0][i];
+        results.Add(Math.Sin(Math.Pow(x, 2)) * Math.Cos(x) - 1);
+      }
+      data.Add(results);
+
+      return ValueGenerator.Transformation(data);
+    }
+  }
+}
Index: /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Nguyen/NguyenFunctionFour.cs
===================================================================
--- /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Nguyen/NguyenFunctionFour.cs	(revision 7664)
+++ /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Nguyen/NguyenFunctionFour.cs	(revision 7664)
@@ -0,0 +1,62 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2012 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+
+namespace HeuristicLab.Problems.Instances.Regression {
+  public class NguyenFunctionFour : ArtificialRegressionDataDescriptor {
+
+    public override string Name { get { return "Nguyen F4 = x^6 + x^5 + x^4 + x^3 + x^2 + x"; } }
+    public override string Description {
+      get {
+        return "Paper: Semantically-based Crossover in Genetic Programming: Application to Real-valued Symbolic Regression" + Environment.NewLine
+        + "Authors: Nguyen Quang Uy · Nguyen Xuan Hoai · Michael O’Neill · R.I. McKay · Edgar Galvan-Lopez" + Environment.NewLine
+        + "Function: F4 = x^6 + x^5 + x^4 + x^3 + x^2 + x" + Environment.NewLine
+        + "Fitcases: 20 random points ⊆ [-1, 1]" + Environment.NewLine
+        + "Non-terminals: +, -, *, /, sin, cos, exp, log (protected version)" + Environment.NewLine
+        + "Terminals: X, 1 for single variable problems, and X, Y for bivariable problems";
+      }
+    }
+    protected override string TargetVariable { get { return "Y"; } }
+    protected override IEnumerable<string> InputVariables { get { return new List<string>() { "X", "Y" }; } }
+    protected override IEnumerable<string> AllowedInputVariables { get { return new List<string>() { "X" }; } }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return 20; } }
+    protected override int TestPartitionStart { get { return 250; } }
+    protected override int TestPartitionEnd { get { return 350; } }
+
+    protected override double[,] GenerateValues() {
+      List<List<double>> data = new List<List<double>>();
+      data.Add(ValueGenerator.GenerateUniformDistributedValues(500, -1, 1));
+
+      double x;
+      List<double> results = new List<double>();
+      for (int i = 0; i < data[0].Count; i++) {
+        x = data[0][i];
+        results.Add(Math.Pow(x, 6) + Math.Pow(x, 5) + Math.Pow(x, 4) + Math.Pow(x, 3) + Math.Pow(x, 2) + x);
+      }
+      data.Add(results);
+
+      return ValueGenerator.Transformation(data);
+    }
+  }
+}
Index: /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Nguyen/NguyenFunctionNine.cs
===================================================================
--- /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Nguyen/NguyenFunctionNine.cs	(revision 7664)
+++ /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Nguyen/NguyenFunctionNine.cs	(revision 7664)
@@ -0,0 +1,64 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2012 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+
+namespace HeuristicLab.Problems.Instances.Regression {
+  public class NguyenFunctionNine : ArtificialRegressionDataDescriptor {
+
+    public override string Name { get { return "Nguyen F9 = sin(x) + sin(y^2)"; } }
+    public override string Description {
+      get {
+        return "Paper: Semantically-based Crossover in Genetic Programming: Application to Real-valued Symbolic Regression" + Environment.NewLine
+        + "Authors: Nguyen Quang Uy · Nguyen Xuan Hoai · Michael O’Neill · R.I. McKay · Edgar Galvan-Lopez" + Environment.NewLine
+        + "Function: F9 = sin(x) + sin(y^2)" + Environment.NewLine
+        + "Fitcases: 100 random points ⊆ [0, 1]x[0, 1]" + Environment.NewLine
+        + "Non-terminals: +, -, *, /, sin, cos, exp, log (protected version)" + Environment.NewLine
+        + "Terminals: X, 1 for single variable problems, and X, Y for bivariable problems";
+      }
+    }
+    protected override string TargetVariable { get { return "Z"; } }
+    protected override IEnumerable<string> InputVariables { get { return new List<string>() { "X", "Y", "Z" }; } }
+    protected override IEnumerable<string> AllowedInputVariables { get { return new List<string>() { "X", "Y" }; } }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return 100; } }
+    protected override int TestPartitionStart { get { return 500; } }
+    protected override int TestPartitionEnd { get { return 1000; } }
+
+    protected override double[,] GenerateValues() {
+      List<List<double>> data = new List<List<double>>();
+      data.Add(ValueGenerator.GenerateUniformDistributedValues(TestPartitionEnd, 0, 1));
+      data.Add(ValueGenerator.GenerateUniformDistributedValues(TestPartitionEnd, 0, 1));
+
+      double x, y;
+      List<double> results = new List<double>();
+      for (int i = 0; i < data[0].Count; i++) {
+        x = data[0][i];
+        y = data[1][i];
+        results.Add(Math.Sin(x) + Math.Sin(Math.Pow(y, 2)));
+      }
+      data.Add(results);
+
+      return ValueGenerator.Transformation(data);
+    }
+  }
+}
Index: /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Nguyen/NguyenFunctionOne.cs
===================================================================
--- /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Nguyen/NguyenFunctionOne.cs	(revision 7664)
+++ /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Nguyen/NguyenFunctionOne.cs	(revision 7664)
@@ -0,0 +1,62 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2012 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+
+namespace HeuristicLab.Problems.Instances.Regression {
+  public class NguyenFunctionOne : ArtificialRegressionDataDescriptor {
+
+    public override string Name { get { return "Nguyen F1 = x^3 + x^2 + x"; } }
+    public override string Description {
+      get {
+        return "Paper: Semantically-based Crossover in Genetic Programming: Application to Real-valued Symbolic Regression" + Environment.NewLine
+        + "Authors: Nguyen Quang Uy · Nguyen Xuan Hoai · Michael O’Neill · R.I. McKay · Edgar Galvan-Lopez" + Environment.NewLine
+        + "Function: F1 = x^3 + x^2 + x" + Environment.NewLine
+        + "Fitcases: 20 random points ⊆ [-1, 1]" + Environment.NewLine
+        + "Non-terminals: +, -, *, /, sin, cos, exp, log (protected version)" + Environment.NewLine
+        + "Terminals: X, 1 for single variable problems, and X, Y for bivariable problems";
+      }
+    }
+    protected override string TargetVariable { get { return "Y"; } }
+    protected override IEnumerable<string> InputVariables { get { return new List<string>() { "X", "Y" }; } }
+    protected override IEnumerable<string> AllowedInputVariables { get { return new List<string>() { "X" }; } }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return 20; } }
+    protected override int TestPartitionStart { get { return 250; } }
+    protected override int TestPartitionEnd { get { return 350; } }
+
+    protected override double[,] GenerateValues() {
+      List<List<double>> data = new List<List<double>>();
+      data.Add(ValueGenerator.GenerateUniformDistributedValues(500, -1, 1));
+
+      double x;
+      List<double> results = new List<double>();
+      for (int i = 0; i < data[0].Count; i++) {
+        x = data[0][i];
+        results.Add(Math.Pow(x, 3) + Math.Pow(x, 2) + x);
+      }
+      data.Add(results);
+
+      return ValueGenerator.Transformation(data);
+    }
+  }
+}
Index: /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Nguyen/NguyenFunctionSeven.cs
===================================================================
--- /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Nguyen/NguyenFunctionSeven.cs	(revision 7664)
+++ /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Nguyen/NguyenFunctionSeven.cs	(revision 7664)
@@ -0,0 +1,62 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2012 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+
+namespace HeuristicLab.Problems.Instances.Regression {
+  public class NguyenFunctionSeven : ArtificialRegressionDataDescriptor {
+
+    public override string Name { get { return "Nguyen F7 = log(x + 1) + log(x^2 + 1)"; } }
+    public override string Description {
+      get {
+        return "Paper: Semantically-based Crossover in Genetic Programming: Application to Real-valued Symbolic Regression" + Environment.NewLine
+        + "Authors: Nguyen Quang Uy · Nguyen Xuan Hoai · Michael O’Neill · R.I. McKay · Edgar Galvan-Lopez" + Environment.NewLine
+        + "Function: F7 = log(x + 1) + log(x^2 + 1)" + Environment.NewLine
+        + "Fitcases: 20 random points ⊆ [0, 2]" + Environment.NewLine
+        + "Non-terminals: +, -, *, /, sin, cos, exp, log (protected version)" + Environment.NewLine
+        + "Terminals: X, 1 for single variable problems, and X, Y for bivariable problems";
+      }
+    }
+    protected override string TargetVariable { get { return "Y"; } }
+    protected override IEnumerable<string> InputVariables { get { return new List<string>() { "X", "Y" }; } }
+    protected override IEnumerable<string> AllowedInputVariables { get { return new List<string>() { "X" }; } }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return 20; } }
+    protected override int TestPartitionStart { get { return 250; } }
+    protected override int TestPartitionEnd { get { return 350; } }
+
+    protected override double[,] GenerateValues() {
+      List<List<double>> data = new List<List<double>>();
+      data.Add(ValueGenerator.GenerateUniformDistributedValues(500, 0, 2));
+
+      double x;
+      List<double> results = new List<double>();
+      for (int i = 0; i < data[0].Count; i++) {
+        x = data[0][i];
+        results.Add(Math.Log(x + 1) + Math.Log(Math.Pow(x, 2) + 1));
+      }
+      data.Add(results);
+
+      return ValueGenerator.Transformation(data);
+    }
+  }
+}
Index: /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Nguyen/NguyenFunctionSix.cs
===================================================================
--- /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Nguyen/NguyenFunctionSix.cs	(revision 7664)
+++ /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Nguyen/NguyenFunctionSix.cs	(revision 7664)
@@ -0,0 +1,62 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2012 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+
+namespace HeuristicLab.Problems.Instances.Regression {
+  public class NguyenFunctionSix : ArtificialRegressionDataDescriptor {
+
+    public override string Name { get { return "Nguyen F6 = sin(x) + sin(x + x^2)"; } }
+    public override string Description {
+      get {
+        return "Paper: Semantically-based Crossover in Genetic Programming: Application to Real-valued Symbolic Regression" + Environment.NewLine
+        + "Authors: Nguyen Quang Uy · Nguyen Xuan Hoai · Michael O’Neill · R.I. McKay · Edgar Galvan-Lopez" + Environment.NewLine
+        + "Function: F6 = sin(x) + sin(x + x^2)" + Environment.NewLine
+        + "Fitcases: 20 random points ⊆ [-1, 1]" + Environment.NewLine
+        + "Non-terminals: +, -, *, /, sin, cos, exp, log (protected version)" + Environment.NewLine
+        + "Terminals: X, 1 for single variable problems, and X, Y for bivariable problems";
+      }
+    }
+    protected override string TargetVariable { get { return "Y"; } }
+    protected override IEnumerable<string> InputVariables { get { return new List<string>() { "X", "Y" }; } }
+    protected override IEnumerable<string> AllowedInputVariables { get { return new List<string>() { "X" }; } }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return 20; } }
+    protected override int TestPartitionStart { get { return 250; } }
+    protected override int TestPartitionEnd { get { return 350; } }
+
+    protected override double[,] GenerateValues() {
+      List<List<double>> data = new List<List<double>>();
+      data.Add(ValueGenerator.GenerateUniformDistributedValues(500, -1, 1));
+
+      double x;
+      List<double> results = new List<double>();
+      for (int i = 0; i < data[0].Count; i++) {
+        x = data[0][i];
+        results.Add(Math.Sin(x) + Math.Sin(x + Math.Pow(x, 2)));
+      }
+      data.Add(results);
+
+      return ValueGenerator.Transformation(data);
+    }
+  }
+}
Index: /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Nguyen/NguyenFunctionTen.cs
===================================================================
--- /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Nguyen/NguyenFunctionTen.cs	(revision 7664)
+++ /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Nguyen/NguyenFunctionTen.cs	(revision 7664)
@@ -0,0 +1,64 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2012 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+
+namespace HeuristicLab.Problems.Instances.Regression {
+  public class NguyenFunctionTen : ArtificialRegressionDataDescriptor {
+
+    public override string Name { get { return "Nguyen F10 = 2sin(x)cos(y)"; } }
+    public override string Description {
+      get {
+        return "Paper: Semantically-based Crossover in Genetic Programming: Application to Real-valued Symbolic Regression" + Environment.NewLine
+        + "Authors: Nguyen Quang Uy · Nguyen Xuan Hoai · Michael O’Neill · R.I. McKay · Edgar Galvan-Lopez" + Environment.NewLine
+        + "Function: F10 = 2sin(x)cos(y)" + Environment.NewLine
+        + "Fitcases: 100 random points ⊆ [0, 1]x[0, 1]" + Environment.NewLine
+        + "Non-terminals: +, -, *, /, sin, cos, exp, log (protected version)" + Environment.NewLine
+        + "Terminals: X, 1 for single variable problems, and X, Y for bivariable problems";
+      }
+    }
+    protected override string TargetVariable { get { return "Z"; } }
+    protected override IEnumerable<string> InputVariables { get { return new List<string>() { "X", "Y", "Z" }; } }
+    protected override IEnumerable<string> AllowedInputVariables { get { return new List<string>() { "X", "Y" }; } }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return 100; } }
+    protected override int TestPartitionStart { get { return 500; } }
+    protected override int TestPartitionEnd { get { return 1000; } }
+
+    protected override double[,] GenerateValues() {
+      List<List<double>> data = new List<List<double>>();
+      data.Add(ValueGenerator.GenerateUniformDistributedValues(1000, 0, 1));
+      data.Add(ValueGenerator.GenerateUniformDistributedValues(1000, 0, 1));
+
+      double x, y;
+      List<double> results = new List<double>();
+      for (int i = 0; i < data[0].Count; i++) {
+        x = data[0][i];
+        y = data[1][i];
+        results.Add(2 * Math.Sin(x) * Math.Cos(y));
+      }
+      data.Add(results);
+
+      return ValueGenerator.Transformation(data);
+    }
+  }
+}
Index: /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Nguyen/NguyenFunctionThree.cs
===================================================================
--- /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Nguyen/NguyenFunctionThree.cs	(revision 7664)
+++ /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Nguyen/NguyenFunctionThree.cs	(revision 7664)
@@ -0,0 +1,62 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2012 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+
+namespace HeuristicLab.Problems.Instances.Regression {
+  public class NguyenFunctionThree : ArtificialRegressionDataDescriptor {
+
+    public override string Name { get { return "Nguyen F3 = x^5 + x^4 + x^3 + x^2 + x"; } }
+    public override string Description {
+      get {
+        return "Paper: Semantically-based Crossover in Genetic Programming: Application to Real-valued Symbolic Regression" + Environment.NewLine
+        + "Authors: Nguyen Quang Uy · Nguyen Xuan Hoai · Michael O’Neill · R.I. McKay · Edgar Galvan-Lopez" + Environment.NewLine
+        + "Function: F3 = x^5 + x^4 + x^3 + x^2 + x" + Environment.NewLine
+        + "Fitcases: 20 random points ⊆ [-1, 1]" + Environment.NewLine
+        + "Non-terminals: +, -, *, /, sin, cos, exp, log (protected version)" + Environment.NewLine
+        + "Terminals: X, 1 for single variable problems, and X, Y for bivariable problems";
+      }
+    }
+    protected override string TargetVariable { get { return "Y"; } }
+    protected override IEnumerable<string> InputVariables { get { return new List<string>() { "X", "Y" }; } }
+    protected override IEnumerable<string> AllowedInputVariables { get { return new List<string>() { "X" }; } }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return 20; } }
+    protected override int TestPartitionStart { get { return 250; } }
+    protected override int TestPartitionEnd { get { return 350; } }
+
+    protected override double[,] GenerateValues() {
+      List<List<double>> data = new List<List<double>>();
+      data.Add(ValueGenerator.GenerateUniformDistributedValues(500, -1, 1));
+
+      double x;
+      List<double> results = new List<double>();
+      for (int i = 0; i < data[0].Count; i++) {
+        x = data[0][i];
+        results.Add(Math.Pow(x, 5) + Math.Pow(x, 4) + Math.Pow(x, 3) + Math.Pow(x, 2) + x);
+      }
+      data.Add(results);
+
+      return ValueGenerator.Transformation(data);
+    }
+  }
+}
Index: /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Nguyen/NguyenFunctionTwelve.cs
===================================================================
--- /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Nguyen/NguyenFunctionTwelve.cs	(revision 7664)
+++ /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Nguyen/NguyenFunctionTwelve.cs	(revision 7664)
@@ -0,0 +1,64 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2012 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+
+namespace HeuristicLab.Problems.Instances.Regression {
+  public class NguyenFunctionTwelve : ArtificialRegressionDataDescriptor {
+
+    public override string Name { get { return "Nguyen F12 = x^4 - x^3 + y^2/2 - y"; } }
+    public override string Description {
+      get {
+        return "Paper: Semantically-based Crossover in Genetic Programming: Application to Real-valued Symbolic Regression" + Environment.NewLine
+        + "Authors: Nguyen Quang Uy · Nguyen Xuan Hoai · Michael O’Neill · R.I. McKay · Edgar Galvan-Lopez" + Environment.NewLine
+        + "Function: F12 = x^4 - x^3 + y^2/2 - y" + Environment.NewLine
+        + "Fitcases: 100 random points ⊆ [0, 1]x[0, 1]" + Environment.NewLine
+        + "Non-terminals: +, -, *, /, sin, cos, exp, log (protected version)" + Environment.NewLine
+        + "Terminals: X, 1 for single variable problems, and X, Y for bivariable problems";
+      }
+    }
+    protected override string TargetVariable { get { return "Z"; } }
+    protected override IEnumerable<string> InputVariables { get { return new List<string>() { "X", "Y", "Z" }; } }
+    protected override IEnumerable<string> AllowedInputVariables { get { return new List<string>() { "X", "Y" }; } }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return 100; } }
+    protected override int TestPartitionStart { get { return 500; } }
+    protected override int TestPartitionEnd { get { return 1000; } }
+
+    protected override double[,] GenerateValues() {
+      List<List<double>> data = new List<List<double>>();
+      data.Add(ValueGenerator.GenerateUniformDistributedValues(1000, 0, 1));
+      data.Add(ValueGenerator.GenerateUniformDistributedValues(1000, 0, 1));
+
+      double x, y;
+      List<double> results = new List<double>();
+      for (int i = 0; i < data[0].Count; i++) {
+        x = data[0][i];
+        y = data[1][i];
+        results.Add(Math.Pow(x, 4) - Math.Pow(x, 3) + Math.Pow(y, 2) / 2 - y);
+      }
+      data.Add(results);
+
+      return ValueGenerator.Transformation(data);
+    }
+  }
+}
Index: /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Nguyen/NguyenFunctionTwo.cs
===================================================================
--- /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Nguyen/NguyenFunctionTwo.cs	(revision 7664)
+++ /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Nguyen/NguyenFunctionTwo.cs	(revision 7664)
@@ -0,0 +1,62 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2012 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+
+namespace HeuristicLab.Problems.Instances.Regression {
+  public class NguyenFunctionTwo : ArtificialRegressionDataDescriptor {
+
+    public override string Name { get { return "Nguyen F2 = x^4 + x^3 + x^2 + x"; } }
+    public override string Description {
+      get {
+        return "Paper: Semantically-based Crossover in Genetic Programming: Application to Real-valued Symbolic Regression" + Environment.NewLine
+        + "Authors: Nguyen Quang Uy · Nguyen Xuan Hoai · Michael O’Neill · R.I. McKay · Edgar Galvan-Lopez" + Environment.NewLine
+        + "Function: F2 = x^4 + x^3 + x^2 + x" + Environment.NewLine
+        + "Fitcases: 20 random points ⊆ [-1, 1]" + Environment.NewLine
+        + "Non-terminals: +, -, *, /, sin, cos, exp, log (protected version)" + Environment.NewLine
+        + "Terminals: X, 1 for single variable problems, and X, Y for bivariable problems";
+      }
+    }
+    protected override string TargetVariable { get { return "Y"; } }
+    protected override IEnumerable<string> InputVariables { get { return new List<string>() { "X", "Y" }; } }
+    protected override IEnumerable<string> AllowedInputVariables { get { return new List<string>() { "X" }; } }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return 20; } }
+    protected override int TestPartitionStart { get { return 250; } }
+    protected override int TestPartitionEnd { get { return 350; } }
+
+    protected override double[,] GenerateValues() {
+      List<List<double>> data = new List<List<double>>();
+      data.Add(ValueGenerator.GenerateUniformDistributedValues(500, -1, 1));
+
+      double x;
+      List<double> results = new List<double>();
+      for (int i = 0; i < data[0].Count; i++) {
+        x = data[0][i];
+        results.Add(Math.Pow(x, 4) + Math.Pow(x, 3) + Math.Pow(x, 2) + x);
+      }
+      data.Add(results);
+
+      return ValueGenerator.Transformation(data);
+    }
+  }
+}
Index: /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Nguyen/NguyenInstanceProvider.cs
===================================================================
--- /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Nguyen/NguyenInstanceProvider.cs	(revision 7664)
+++ /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Nguyen/NguyenInstanceProvider.cs	(revision 7664)
@@ -0,0 +1,57 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2012 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+
+namespace HeuristicLab.Problems.Instances.Regression {
+  public class NguyenInstanceProvider : ArtificialRegressionInstanceProvider {
+    public override string Name {
+      get { return "Nguyen Benchmark Problems"; }
+    }
+    public override string Description {
+      get { return ""; }
+    }
+    public override Uri WebLink {
+      get { return new Uri("http://groups.csail.mit.edu/EVO-DesignOpt/GPBenchmarks/"); }
+    }
+    public override string ReferencePublication {
+      get { return ""; }
+    }
+
+    public override IEnumerable<IDataDescriptor> GetDataDescriptors() {
+      List<IDataDescriptor> descriptorList = new List<IDataDescriptor>();
+      descriptorList.Add(new NguyenFunctionOne());
+      descriptorList.Add(new NguyenFunctionTwo());
+      descriptorList.Add(new NguyenFunctionThree());
+      descriptorList.Add(new NguyenFunctionFour());
+      descriptorList.Add(new NguyenFunctionFive());
+      descriptorList.Add(new NguyenFunctionSix());
+      descriptorList.Add(new NguyenFunctionSeven());
+      descriptorList.Add(new NguyenFunctionEight());
+      descriptorList.Add(new NguyenFunctionNine());
+      descriptorList.Add(new NguyenFunctionTen());
+      descriptorList.Add(new NguyenFunctionEleven());
+      descriptorList.Add(new NguyenFunctionTwelve());
+      return descriptorList;
+    }
+  }
+}
Index: /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Properties/AssemblyInfo.cs
===================================================================
--- /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Properties/AssemblyInfo.cs	(revision 7663)
+++ /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Properties/AssemblyInfo.cs	(revision 7664)
@@ -55,3 +55,3 @@
 // [assembly: AssemblyVersion("1.0.*")]
 [assembly: AssemblyVersion("3.4.0.0")]
-[assembly: AssemblyFileVersion("3.4.0.7603")]
+[assembly: AssemblyFileVersion("3.4.0.7610")]
Index: /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/RegressionInstanceProvider.cs
===================================================================
--- /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/RegressionInstanceProvider.cs	(revision 7663)
+++ /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/RegressionInstanceProvider.cs	(revision 7664)
@@ -1,5 +1,5 @@
 ﻿#region License Information
 /* HeuristicLab
- * Copyright (C) 2002-2011 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ * Copyright (C) 2002-2012 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
  *
  * This file is part of HeuristicLab.
Index: /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/ResourceRegressionDataDescriptor.cs
===================================================================
--- /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/ResourceRegressionDataDescriptor.cs	(revision 7663)
+++ /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/ResourceRegressionDataDescriptor.cs	(revision 7664)
@@ -1,5 +1,5 @@
 ﻿#region License Information
 /* HeuristicLab
- * Copyright (C) 2002-2011 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ * Copyright (C) 2002-2012 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
  *
  * This file is part of HeuristicLab.
Index: /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/ResourceRegressionInstanceProvider.cs
===================================================================
--- /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/ResourceRegressionInstanceProvider.cs	(revision 7663)
+++ /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/ResourceRegressionInstanceProvider.cs	(revision 7664)
@@ -1,5 +1,5 @@
 ﻿#region License Information
 /* HeuristicLab
- * Copyright (C) 2002-2011 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ * Copyright (C) 2002-2012 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
  *
  * This file is part of HeuristicLab.
Index: /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/ValueGenerator.cs
===================================================================
--- /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/ValueGenerator.cs	(revision 7663)
+++ /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/ValueGenerator.cs	(revision 7664)
@@ -1,5 +1,5 @@
 ﻿#region License Information
 /* HeuristicLab
- * Copyright (C) 2002-2011 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ * Copyright (C) 2002-2012 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
  *
  * This file is part of HeuristicLab.
@@ -30,4 +30,6 @@
 
     public static double[,] Transformation(List<List<double>> data) {
+      if (!data.All(x => x.Count.Equals(data.First().Count)))
+        throw new ArgumentException("Can't create jagged array.");
       double[,] values = new double[data.First().Count, data.Count];
       for (int i = 0; i < values.GetLength(0); i++) {
Index: /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Vladislavleva/KotanchekFunction.cs
===================================================================
--- /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Vladislavleva/KotanchekFunction.cs	(revision 7664)
+++ /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Vladislavleva/KotanchekFunction.cs	(revision 7664)
@@ -0,0 +1,72 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2012 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+
+namespace HeuristicLab.Problems.Instances.Regression {
+  public class KotanchekFunction : ArtificialRegressionDataDescriptor {
+
+    public override string Name { get { return "Vladislavleva Kotanchek"; } }
+    public override string Description {
+      get {
+        return "Paper: Order of Nonlinearity as a Complexity Measure for Models Generated by Symbolic Regression via Pareto Genetic Programming " + Environment.NewLine
+        + "Authors: Ekaterina J. Vladislavleva, Member, IEEE, Guido F. Smits, Member, IEEE, and Dick den Hertog" + Environment.NewLine
+        + "Function: F1(X1, X2) = e^-(X1 - 1)^2 / (1.2 + (X2 -2.5)^2" + Environment.NewLine
+        + "Training Data: 100 points X1, X2 = Rand(0.3, 4)" + Environment.NewLine
+        + "Test Data: 2026 points (X1, X2) = (-0.2:0.1:4.2)" + Environment.NewLine
+        + "Function Set: +, -, *, /, sqaure, x^real, x + real, x + real, e^x, e^-x";
+      }
+    }
+    protected override string TargetVariable { get { return "Y"; } }
+    protected override IEnumerable<string> InputVariables { get { return new List<string>() { "X1", "X2", "Y" }; } }
+    protected override IEnumerable<string> AllowedInputVariables { get { return new List<string>() { "X1", "X2" }; } }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return 100; } }
+    protected override int TestPartitionStart { get { return 1000; } }
+    protected override int TestPartitionEnd { get { return 3025; } }
+
+    protected override double[,] GenerateValues() {
+      List<List<double>> data = new List<List<double>>();
+
+      List<double> oneVariableTestData = ValueGenerator.GenerateSteps(-0.2, 4.2, 0.1);
+      List<List<double>> testData = new List<List<double>>() { oneVariableTestData, oneVariableTestData };
+      testData = ValueGenerator.GenerateAllCombinationsOfValuesInLists(testData);
+      for (int i = 0; i < AllowedInputVariables.Count(); i++) {
+        data.Add(ValueGenerator.GenerateUniformDistributedValues(1000, 0.3, 4));
+        data[i].AddRange(testData[i]);
+      }
+
+
+      double x1, x2;
+      List<double> results = new List<double>();
+      for (int i = 0; i < data[0].Count; i++) {
+        x1 = data[0][i];
+        x2 = data[1][i];
+        results.Add(Math.Exp(-Math.Pow(x1 - 1, 2)) / (1.2 + Math.Pow(x2 - 2.5, 2)));
+      }
+      data.Add(results);
+
+      return ValueGenerator.Transformation(data);
+    }
+  }
+}
Index: /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Vladislavleva/RationalPolynomialThreeDimensional.cs
===================================================================
--- /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Vladislavleva/RationalPolynomialThreeDimensional.cs	(revision 7664)
+++ /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Vladislavleva/RationalPolynomialThreeDimensional.cs	(revision 7664)
@@ -0,0 +1,81 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2012 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+
+namespace HeuristicLab.Problems.Instances.Regression {
+  public class RationalPolynomialThreeDimensional : ArtificialRegressionDataDescriptor {
+
+    public override string Name { get { return "Vladislavleva RatPol3D"; } }
+    public override string Description {
+      get {
+        return "Paper: Order of Nonlinearity as a Complexity Measure for Models Generated by Symbolic Regression via Pareto Genetic Programming " + Environment.NewLine
+        + "Authors: Ekaterina J. Vladislavleva, Member, IEEE, Guido F. Smits, Member, IEEE, and Dick den Hertog" + Environment.NewLine
+        + "Function: F5(X1, X2, X3) = 30 * ((X1 - 1) * (X3 -1)) / (X2^2 * (X1 - 10))" + Environment.NewLine
+        + "Training Data: 300 points X1, X3 = Rand(0.05, 2), X2 = Rand(1, 2)" + Environment.NewLine
+        + "Test Data: 2701 points X1, X3 = (-0.05:0.15:2.1), X2 = (0.95:0.1:2.05)" + Environment.NewLine
+        + "Function Set: +, -, *, /, sqaure, x^real, x + real, x + real";
+      }
+    }
+    protected override string TargetVariable { get { return "Y"; } }
+    protected override IEnumerable<string> InputVariables { get { return new List<string>() { "X1", "X2", "X3", "Y" }; } }
+    protected override IEnumerable<string> AllowedInputVariables { get { return new List<string>() { "X1", "X2", "X3" }; } }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return 300; } }
+    protected override int TestPartitionStart { get { return 1000; } }
+    protected override int TestPartitionEnd { get { return 3700; } }
+
+    protected override double[,] GenerateValues() {
+      List<List<double>> data = new List<List<double>>();
+
+      int amountOfPoints = 1000;
+      data.Add(ValueGenerator.GenerateUniformDistributedValues(amountOfPoints, 0.05, 2));
+      data.Add(ValueGenerator.GenerateUniformDistributedValues(amountOfPoints, 1, 2));
+      data.Add(ValueGenerator.GenerateUniformDistributedValues(amountOfPoints, 0.05, 2));
+
+      List<List<double>> testData = new List<List<double>>() { 
+        ValueGenerator.GenerateSteps(-0.05, 2.1, 0.15), 
+        ValueGenerator.GenerateSteps( 0.95, 2.05, 0.1),
+        ValueGenerator.GenerateSteps(-0.05, 2.1, 0.15)
+      };
+
+      testData = ValueGenerator.GenerateAllCombinationsOfValuesInLists(testData);
+
+      for (int i = 0; i < AllowedInputVariables.Count(); i++) {
+        data[i].AddRange(testData[i]);
+      }
+
+      double x1, x2, x3;
+      List<double> results = new List<double>();
+      for (int i = 0; i < data[0].Count; i++) {
+        x1 = data[0][i];
+        x2 = data[1][i];
+        x3 = data[2][i];
+        results.Add(30 * ((x1 - 1) * (x3 - 1)) / (Math.Pow(x2, 2) * (x1 - 10)));
+      }
+      data.Add(results);
+
+      return ValueGenerator.Transformation(data);
+    }
+  }
+}
Index: /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Vladislavleva/RationalPolynomialTwoDimensional.cs
===================================================================
--- /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Vladislavleva/RationalPolynomialTwoDimensional.cs	(revision 7664)
+++ /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Vladislavleva/RationalPolynomialTwoDimensional.cs	(revision 7664)
@@ -0,0 +1,72 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2012 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+
+namespace HeuristicLab.Problems.Instances.Regression {
+  public class RationalPolynomialTwoDimensional : ArtificialRegressionDataDescriptor {
+
+    public override string Name { get { return "Vladislavleva RatPol2D"; } }
+    public override string Description {
+      get {
+        return "Paper: Order of Nonlinearity as a Complexity Measure for Models Generated by Symbolic Regression via Pareto Genetic Programming " + Environment.NewLine
+        + "Authors: Ekaterina J. Vladislavleva, Member, IEEE, Guido F. Smits, Member, IEEE, and Dick den Hertog" + Environment.NewLine
+        + "Function: F8(X1, X2) = ((X1 - 3)^4 + (X2 - 3)^3 - (X2 -3)) / ((X2 - 2)^4 + 10)" + Environment.NewLine
+        + "Training Data: 50 points X1, X2 = Rand(0.05, 6.05)" + Environment.NewLine
+        + "Test Data: 1157 points X1, X2 = (-0.25:0.2:6.35)" + Environment.NewLine
+        + "Function Set: +, -, *, /, sqaure, x^real, x + real, x + real";
+      }
+    }
+    protected override string TargetVariable { get { return "Y"; } }
+    protected override IEnumerable<string> InputVariables { get { return new List<string>() { "X1", "X2", "Y" }; } }
+    protected override IEnumerable<string> AllowedInputVariables { get { return new List<string>() { "X1", "X2" }; } }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return 50; } }
+    protected override int TestPartitionStart { get { return 1000; } }
+    protected override int TestPartitionEnd { get { return 2157; } }
+
+    protected override double[,] GenerateValues() {
+      List<List<double>> data = new List<List<double>>();
+
+      List<double> oneVariableTestData = ValueGenerator.GenerateSteps(-0.25, 6.35, 0.2);
+      List<List<double>> testData = new List<List<double>>() { oneVariableTestData, oneVariableTestData };
+
+      testData = ValueGenerator.GenerateAllCombinationsOfValuesInLists(testData);
+      for (int i = 0; i < AllowedInputVariables.Count(); i++) {
+        data.Add(ValueGenerator.GenerateUniformDistributedValues(1000, 0.05, 6.05));
+        data[i].AddRange(oneVariableTestData);
+      }
+
+      double x1, x2;
+      List<double> results = new List<double>();
+      for (int i = 0; i < data[0].Count; i++) {
+        x1 = data[0][i];
+        x2 = data[1][i];
+        results.Add((Math.Pow(x1 - 3, 4) + Math.Pow(x2 - 3, 3) - x2 + 3) / (Math.Pow(x2 - 2, 4) + 10));
+      }
+      data.Add(results);
+
+      return ValueGenerator.Transformation(data);
+    }
+  }
+}
Index: /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Vladislavleva/RippleFunction.cs
===================================================================
--- /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Vladislavleva/RippleFunction.cs	(revision 7664)
+++ /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Vladislavleva/RippleFunction.cs	(revision 7664)
@@ -0,0 +1,70 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2012 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+
+namespace HeuristicLab.Problems.Instances.Regression {
+  public class RippleFunction : ArtificialRegressionDataDescriptor {
+
+    public override string Name { get { return "Vladislavleva Ripple"; } }
+    public override string Description {
+      get {
+        return "Paper: Order of Nonlinearity as a Complexity Measure for Models Generated by Symbolic Regression via Pareto Genetic Programming " + Environment.NewLine
+        + "Authors: Ekaterina J. Vladislavleva, Member, IEEE, Guido F. Smits, Member, IEEE, and Dick den Hertog" + Environment.NewLine
+        + "Function: F7(X1, X2) = (X1 - 3)(X2 - 3) + 2 * sin((X1 - 4)(X2 - 4))" + Environment.NewLine
+        + "Training Data: 300 points X1, X2 = Rand(0.05, 6.05)" + Environment.NewLine
+        + "Test Data: 1000 points X1, X2 = Rand(-0.25, 6.35)" + Environment.NewLine
+        + "Function Set: +, -, *, /, sqaure, x^real, x + real, x + real, e^x, e^-x, sin(x), cos(x)";
+      }
+    }
+    protected override string TargetVariable { get { return "Y"; } }
+    protected override IEnumerable<string> InputVariables { get { return new List<string>() { "X1", "X2", "Y" }; } }
+    protected override IEnumerable<string> AllowedInputVariables { get { return new List<string>() { "X1", "X2" }; } }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return 300; } }
+    protected override int TestPartitionStart { get { return 300; } }
+    protected override int TestPartitionEnd { get { return 1300; } }
+
+    protected override double[,] GenerateValues() {
+      List<List<double>> data = new List<List<double>>();
+      for (int i = 0; i < AllowedInputVariables.Count(); i++) {
+        data.Add(ValueGenerator.GenerateUniformDistributedValues(TrainingPartitionEnd, 0.05, 6.05));
+      }
+
+      for (int i = 0; i < AllowedInputVariables.Count(); i++) {
+        data[i].AddRange(ValueGenerator.GenerateUniformDistributedValues(TrainingPartitionEnd, -0.25, 6.35));
+      }
+
+      double x1, x2;
+      List<double> results = new List<double>();
+      for (int i = 0; i < data[0].Count; i++) {
+        x1 = data[0][i];
+        x2 = data[1][i];
+        results.Add((x1 - 3) * (x2 - 3) + 2 * Math.Sin((x1 - 4) * (x2 - 4)));
+      }
+      data.Add(results);
+
+      return ValueGenerator.Transformation(data);
+    }
+  }
+}
Index: /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Vladislavleva/SalutowiczFunctionOneDimensional.cs
===================================================================
--- /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Vladislavleva/SalutowiczFunctionOneDimensional.cs	(revision 7664)
+++ /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Vladislavleva/SalutowiczFunctionOneDimensional.cs	(revision 7664)
@@ -0,0 +1,63 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2012 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+
+namespace HeuristicLab.Problems.Instances.Regression {
+  public class SalutowiczFunctionOneDimensional : ArtificialRegressionDataDescriptor {
+
+    public override string Name { get { return "Vladislavleva Salutowicz"; } }
+    public override string Description {
+      get {
+        return "Paper: Order of Nonlinearity as a Complexity Measure for Models Generated by Symbolic Regression via Pareto Genetic Programming " + Environment.NewLine
+        + "Authors: Ekaterina J. Vladislavleva, Member, IEEE, Guido F. Smits, Member, IEEE, and Dick den Hertog" + Environment.NewLine
+        + "Function: F2(X) = e^-X * X^3 * cos(X) * sin(X) * (cos(X)sin(X)^2 - 1)" + Environment.NewLine
+        + "Training Data: 100 points X = (0.05:0.1:10)" + Environment.NewLine
+        + "Test Data: 221 points X = (-0.5:0.05:10.5)" + Environment.NewLine
+        + "Function Set: +, -, *, /, sqaure, x^real, x + real, x + real, e^x, e^-x, sin(x), cos(x)";
+      }
+    }
+    protected override string TargetVariable { get { return "Y"; } }
+    protected override IEnumerable<string> InputVariables { get { return new List<string>() { "X", "Y" }; } }
+    protected override IEnumerable<string> AllowedInputVariables { get { return new List<string>() { "X" }; } }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return 100; } }
+    protected override int TestPartitionStart { get { return 100; } }
+    protected override int TestPartitionEnd { get { return 321; } }
+
+    protected override double[,] GenerateValues() {
+      List<List<double>> data = new List<List<double>>();
+      data.Add(ValueGenerator.GenerateSteps(0.05, 10, 0.1));
+      data[0].AddRange(ValueGenerator.GenerateSteps(-0.5, 10.5, 0.05));
+
+      double x;
+      List<double> results = new List<double>();
+      for (int i = 0; i < data[0].Count; i++) {
+        x = data[0][i];
+        results.Add(Math.Exp(-x) * Math.Pow(x, 3) * Math.Cos(x) * Math.Sin(x) * (Math.Cos(x) * Math.Pow(Math.Sin(x), 2) - 1));
+      }
+      data.Add(results);
+
+      return ValueGenerator.Transformation(data);
+    }
+  }
+}
Index: /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Vladislavleva/SalutowiczFunctionTwoDimensional.cs
===================================================================
--- /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Vladislavleva/SalutowiczFunctionTwoDimensional.cs	(revision 7664)
+++ /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Vladislavleva/SalutowiczFunctionTwoDimensional.cs	(revision 7664)
@@ -0,0 +1,81 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2012 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+
+namespace HeuristicLab.Problems.Instances.Regression {
+  public class SalutowiczFunctionTwoDimensional : ArtificialRegressionDataDescriptor {
+
+    public override string Name { get { return "Vladislavleva Salutowicz2D"; } }
+    public override string Description {
+      get {
+        return "Paper: Order of Nonlinearity as a Complexity Measure for Models Generated by Symbolic Regression via Pareto Genetic Programming " + Environment.NewLine
+        + "Authors: Ekaterina J. Vladislavleva, Member, IEEE, Guido F. Smits, Member, IEEE, and Dick den Hertog" + Environment.NewLine
+        + "Function: F3(X1, X2) = e^-X1 * X1^3 * cos(X1) * sin(X1) * (cos(X1)sin(X1)^2 - 1)(X2 - 5)" + Environment.NewLine
+        + "Training Data: 601 points X1 = (0.05:0.1:10), X2 = (0.05:2:10.05)" + Environment.NewLine
+        + "Test Data: 2554 points X1 = (-0.5:0.05:10.5), X2 = (-0.5:0.5:10.5)" + Environment.NewLine
+        + "Function Set: +, -, *, /, sqaure, x^real, x + real, x + real, e^x, e^-x, sin(x), cos(x)" + Environment.NewLine + Environment.NewLine
+        + "Important: The stepwidth of the variable X1 in the test partition has been set to 0.1, to fit the amount of data points.";
+      }
+    }
+    protected override string TargetVariable { get { return "Y"; } }
+    protected override IEnumerable<string> InputVariables { get { return new List<string>() { "X1", "X2", "Y" }; } }
+    protected override IEnumerable<string> AllowedInputVariables { get { return new List<string>() { "X1", "X2" }; } }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return 601; } }
+    protected override int TestPartitionStart { get { return 601; } }
+    protected override int TestPartitionEnd { get { return 3155; } }
+
+    protected override double[,] GenerateValues() {
+      List<List<double>> data = new List<List<double>>();
+      List<List<double>> trainingData = new List<List<double>>() {
+        ValueGenerator.GenerateSteps(0.05, 10, 0.1),
+        ValueGenerator.GenerateSteps(0.05, 10.05, 2)
+      };
+
+      List<List<double>> testData = new List<List<double>>() {
+        ValueGenerator.GenerateSteps(-0.5, 10.5, 0.1),
+        ValueGenerator.GenerateSteps(-0.5, 10.5, 0.5)
+      };
+
+      trainingData = ValueGenerator.GenerateAllCombinationsOfValuesInLists(trainingData);
+      testData = ValueGenerator.GenerateAllCombinationsOfValuesInLists(testData);
+
+      for (int i = 0; i < AllowedInputVariables.Count(); i++) {
+        data.Add(trainingData[i]);
+        data[i].AddRange(testData[i]);
+      }
+
+      double x1, x2;
+      List<double> results = new List<double>();
+      for (int i = 0; i < data[0].Count; i++) {
+        x1 = data[0][i];
+        x2 = data[1][i];
+        results.Add(Math.Exp(-x1) * Math.Pow(x1, 3) * Math.Cos(x1) * Math.Sin(x1) * (Math.Cos(x1) * Math.Pow(Math.Sin(x1), 2) - 1) * (x2 - 5));
+      }
+      data.Add(results);
+
+      return ValueGenerator.Transformation(data);
+    }
+  }
+}
Index: /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Vladislavleva/SineCosineFunction.cs
===================================================================
--- /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Vladislavleva/SineCosineFunction.cs	(revision 7664)
+++ /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Vladislavleva/SineCosineFunction.cs	(revision 7664)
@@ -0,0 +1,71 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2012 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+
+namespace HeuristicLab.Problems.Instances.Regression {
+  public class SineCosineFunction : ArtificialRegressionDataDescriptor {
+
+    public override string Name { get { return "Vladislavleva SineCosine"; } }
+    public override string Description {
+      get {
+        return "Paper: Order of Nonlinearity as a Complexity Measure for Models Generated by Symbolic Regression via Pareto Genetic Programming " + Environment.NewLine
+        + "Authors: Ekaterina J. Vladislavleva, Member, IEEE, Guido F. Smits, Member, IEEE, and Dick den Hertog" + Environment.NewLine
+        + "Function: F6(X1, X2) = 6 * sin(X1) * cos(X2)" + Environment.NewLine
+        + "Training Data: 30 points X1, X2 = Rand(0.1, 5.9)" + Environment.NewLine
+        + "Test Data: 961 points X1, X2 = (-0.05:0.02:6.05)" + Environment.NewLine
+        + "Function Set: +, -, *, /, sqaure, x^real, x + real, x + real, e^x, e^-x";
+      }
+    }
+    protected override string TargetVariable { get { return "Y"; } }
+    protected override IEnumerable<string> InputVariables { get { return new List<string>() { "X1", "X2", "Y" }; } }
+    protected override IEnumerable<string> AllowedInputVariables { get { return new List<string>() { "X1", "X2" }; } }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return 30; } }
+    protected override int TestPartitionStart { get { return 500; } }
+    protected override int TestPartitionEnd { get { return 1461; } }
+
+    protected override double[,] GenerateValues() {
+      List<List<double>> data = new List<List<double>>();
+      List<double> oneVariableTestData = ValueGenerator.GenerateSteps(-0.05, 6.05, 0.02);
+      List<List<double>> testData = new List<List<double>>() { oneVariableTestData, oneVariableTestData };
+      testData = ValueGenerator.GenerateAllCombinationsOfValuesInLists(testData);
+
+      for (int i = 0; i < AllowedInputVariables.Count(); i++) {
+        data.Add(ValueGenerator.GenerateUniformDistributedValues(500, 0.1, 5.9));
+        data[i].AddRange(testData[i]);
+      }
+
+      double x1, x2;
+      List<double> results = new List<double>();
+      for (int i = 0; i < data[0].Count; i++) {
+        x1 = data[0][i];
+        x2 = data[1][i];
+        results.Add(6 * Math.Sin(x1) * Math.Cos(x2));
+      }
+      data.Add(results);
+
+      return ValueGenerator.Transformation(data);
+    }
+  }
+}
Index: /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Vladislavleva/UnwrappedBallFunctionFiveDimensional.cs
===================================================================
--- /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Vladislavleva/UnwrappedBallFunctionFiveDimensional.cs	(revision 7664)
+++ /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Vladislavleva/UnwrappedBallFunctionFiveDimensional.cs	(revision 7664)
@@ -0,0 +1,70 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2012 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+
+namespace HeuristicLab.Problems.Instances.Regression {
+  public class UnwrappedBallFunctionFiveDimensional : ArtificialRegressionDataDescriptor {
+
+    public override string Name { get { return "Vladislavleva UBall5D"; } }
+    public override string Description {
+      get {
+        return "Paper: Order of Nonlinearity as a Complexity Measure for Models Generated by Symbolic Regression via Pareto Genetic Programming " + Environment.NewLine
+        + "Authors: Ekaterina J. Vladislavleva, Member, IEEE, Guido F. Smits, Member, IEEE, and Dick den Hertog" + Environment.NewLine
+        + "Function: F4(X1, X2, X3, X4, X5) = 10 / (5 + Sum(Xi - 3)^2)" + Environment.NewLine
+        + "Training Data: 1024 points Xi = Rand(0.05, 6.05)" + Environment.NewLine
+        + "Test Data: 5000 points Xi = Rand(-0.25, 6.35)" + Environment.NewLine
+        + "Function Set: +, -, *, /, sqaure, x^real, x + real, x + real";
+      }
+    }
+    protected override string TargetVariable { get { return "Y"; } }
+    protected override IEnumerable<string> InputVariables { get { return new List<string>() { "X1", "X2", "X3", "X4", "X5", "Y" }; } }
+    protected override IEnumerable<string> AllowedInputVariables { get { return new List<string>() { "X1", "X2", "X3", "X4", "X5" }; } }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return 1024; } }
+    protected override int TestPartitionStart { get { return 1024; } }
+    protected override int TestPartitionEnd { get { return 6024; } }
+
+    protected override double[,] GenerateValues() {
+      List<List<double>> data = new List<List<double>>();
+      for (int i = 0; i < AllowedInputVariables.Count(); i++) {
+        data.Add(ValueGenerator.GenerateUniformDistributedValues(1024, 0.05, 6.05));
+        data[i].AddRange(ValueGenerator.GenerateUniformDistributedValues(5000, -0.25, 6.35));
+      }
+
+      double x1, x2, x3, x4, x5;
+      List<double> results = new List<double>();
+      for (int i = 0; i < data[0].Count; i++) {
+        x1 = data[0][i];
+        x2 = data[1][i];
+        x3 = data[2][i];
+        x4 = data[3][i];
+        x5 = data[4][i];
+        results.Add(10 / (5 + Math.Pow(x1 - 3, 2) + Math.Pow(x2 - 3, 2) + Math.Pow(x3 - 3, 2) + Math.Pow(x4 - 3, 2) + Math.Pow(x5 - 3, 2)));
+      }
+      data.Add(results);
+
+      return ValueGenerator.Transformation(data);
+    }
+  }
+}
Index: /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Vladislavleva/VladislavlevaInstanceProvider.cs
===================================================================
--- /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Vladislavleva/VladislavlevaInstanceProvider.cs	(revision 7664)
+++ /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/Vladislavleva/VladislavlevaInstanceProvider.cs	(revision 7664)
@@ -0,0 +1,52 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2012 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+
+namespace HeuristicLab.Problems.Instances.Regression {
+  public class VladislavlevaInstanceProvider : ArtificialRegressionInstanceProvider {
+    public override string Name {
+      get { return "Vladislavleva Benchmark Problems"; }
+    }
+    public override string Description {
+      get { return ""; }
+    }
+    public override Uri WebLink {
+      get { return new Uri("http://groups.csail.mit.edu/EVO-DesignOpt/GPBenchmarks/"); }
+    }
+    public override string ReferencePublication {
+      get { return ""; }
+    }
+
+    public override IEnumerable<IDataDescriptor> GetDataDescriptors() {
+      List<IDataDescriptor> descriptorList = new List<IDataDescriptor>();
+      descriptorList.Add(new KotanchekFunction());
+      descriptorList.Add(new RationalPolynomialTwoDimensional());
+      descriptorList.Add(new RationalPolynomialThreeDimensional());
+      descriptorList.Add(new RippleFunction());
+      descriptorList.Add(new SalutowiczFunctionOneDimensional());
+      descriptorList.Add(new SalutowiczFunctionTwoDimensional());
+      descriptorList.Add(new UnwrappedBallFunctionFiveDimensional());
+      return descriptorList;
+    }
+  }
+}
Index: /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Views/3.4/HeuristicLab.Problems.Instances.Views-3.4.csproj
===================================================================
--- /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Views/3.4/HeuristicLab.Problems.Instances.Views-3.4.csproj	(revision 7664)
+++ /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Views/3.4/HeuristicLab.Problems.Instances.Views-3.4.csproj	(revision 7664)
@@ -0,0 +1,122 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">x86</Platform>
+    <ProductVersion>8.0.30703</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{1BFDCC58-E228-46DE-A36E-8503194B434D}</ProjectGuid>
+    <OutputType>Library</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>HeuristicLab.Problems.Instances.Views</RootNamespace>
+    <AssemblyName>HeuristicLab.Problems.Instances.Views-3.4</AssemblyName>
+    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
+    <TargetFrameworkProfile>
+    </TargetFrameworkProfile>
+    <FileAlignment>512</FileAlignment>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
+    <PlatformTarget>x86</PlatformTarget>
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
+    <PlatformTarget>x86</PlatformTarget>
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>..\..\..\..\trunk\sources\bin\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup>
+    <SignAssembly>true</SignAssembly>
+  </PropertyGroup>
+  <PropertyGroup>
+    <AssemblyOriginatorKeyFile>HeuristicLab.snk</AssemblyOriginatorKeyFile>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|AnyCPU'">
+    <PlatformTarget>AnyCPU</PlatformTarget>
+    <OutputPath>bin\Debug\</OutputPath>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|AnyCPU'">
+    <PlatformTarget>AnyCPU</PlatformTarget>
+    <OutputPath>..\..\..\..\trunk\sources\bin\</OutputPath>
+  </PropertyGroup>
+  <PropertyGroup>
+    <StartupObject />
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="HeuristicLab.Common-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL" />
+    <Reference Include="HeuristicLab.Common.Resources-3.3">
+      <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.Common.Resources-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.MainForm-3.3">
+      <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.MainForm-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.MainForm.WindowsForms-3.3">
+      <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.MainForm.WindowsForms-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Optimization-3.3">
+      <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.Optimization-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.PluginInfrastructure-3.3">
+      <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.PluginInfrastructure-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="System" />
+    <Reference Include="System.Core" />
+    <Reference Include="System.Xml.Linq" />
+    <Reference Include="System.Data.DataSetExtensions" />
+    <Reference Include="Microsoft.CSharp" />
+    <Reference Include="System.Data" />
+    <Reference Include="System.Drawing" />
+    <Reference Include="System.Windows.Forms" />
+    <Reference Include="System.Xml" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="ProblemInstanceConsumerView.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Include="ProblemInstanceConsumerView.Designer.cs">
+      <DependentUpon>ProblemInstanceConsumerView.cs</DependentUpon>
+    </Compile>
+    <Compile Include="ProblemInstanceProviderView.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Include="ProblemInstanceProviderView.Designer.cs">
+      <DependentUpon>ProblemInstanceProviderView.cs</DependentUpon>
+    </Compile>
+    <Compile Include="Properties\AssemblyInfo.cs" />
+    <None Include="HeuristicLab.snk" />
+    <None Include="Plugin.cs.frame" />
+    <None Include="Properties\AssemblyInfo.cs.frame" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\..\HeuristicLab.Problems.Instances\3.3\HeuristicLab.Problems.Instances-3.3.csproj">
+      <Project>{3540E29E-4793-49E7-8EE2-FEA7F61C3994}</Project>
+      <Name>HeuristicLab.Problems.Instances-3.3</Name>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+  <PropertyGroup>
+    <PreBuildEvent>set Path=%25Path%25;$(ProjectDir);$(SolutionDir)
+set ProjectDir=$(ProjectDir)
+set SolutionDir=$(SolutionDir)
+set Outdir=$(Outdir)
+
+call PreBuildEvent.cmd
+</PreBuildEvent>
+  </PropertyGroup>
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+</Project>
Index: /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Views/3.4/Plugin.cs.frame
===================================================================
--- /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Views/3.4/Plugin.cs.frame	(revision 7664)
+++ /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Views/3.4/Plugin.cs.frame	(revision 7664)
@@ -0,0 +1,35 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2012 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using HeuristicLab.PluginInfrastructure;
+
+namespace HeuristicLab.Problems.Instances.Views {
+  [Plugin("HeuristicLab.Problems.Instances.Views", "3.4.0.$WCREV$")]
+  [PluginFile("HeuristicLab.Problems.Instances.Views-3.4.dll", PluginFileType.Assembly)]
+  [PluginDependency("HeuristicLab.Common", "3.3")]
+  [PluginDependency("HeuristicLab.MainForm", "3.3")]
+  [PluginDependency("HeuristicLab.MainForm.WindowsForms", "3.3")]
+  [PluginDependency("HeuristicLab.Optimization", "3.3")]
+  [PluginDependency("HeuristicLab.Problems.Instances", "3.3")]
+  [PluginDependency("HeuristicLab.Problems.Instances.Regression", "3.4")]
+  public class HeuristicLabProblemsInstancesPlugin : PluginBase {
+  }
+}
Index: /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Views/3.4/ProblemInstanceConsumerView.Designer.cs
===================================================================
--- /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Views/3.4/ProblemInstanceConsumerView.Designer.cs	(revision 7664)
+++ /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Views/3.4/ProblemInstanceConsumerView.Designer.cs	(revision 7664)
@@ -0,0 +1,120 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2012 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+namespace HeuristicLab.Problems.Instances.Views {
+  partial class ProblemInstanceConsumerView {
+    /// <summary> 
+    /// Required designer variable.
+    /// </summary>
+    private System.ComponentModel.IContainer components = null;
+
+    /// <summary> 
+    /// Clean up any resources being used.
+    /// </summary>
+    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+    protected override void Dispose(bool disposing) {
+      if (disposing && (components != null)) {
+        components.Dispose();
+      }
+      base.Dispose(disposing);
+    }
+
+    #region Component Designer generated code
+
+    /// <summary> 
+    /// Required method for Designer support - do not modify 
+    /// the contents of this method with the code editor.
+    /// </summary>
+    private void InitializeComponent() {
+      this.components = new System.ComponentModel.Container();
+      this.problemInstanceProviderComboBox = new System.Windows.Forms.ComboBox();
+      this.libraryInfoButton = new System.Windows.Forms.Button();
+      this.libraryLabel = new System.Windows.Forms.Label();
+      this.problemInstanceProviderViewHost = new HeuristicLab.MainForm.WindowsForms.ViewHost();
+      this.SuspendLayout();
+      // 
+      // problemInstanceProviderComboBox
+      // 
+      this.problemInstanceProviderComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
+      this.problemInstanceProviderComboBox.FormattingEnabled = true;
+      this.problemInstanceProviderComboBox.Location = new System.Drawing.Point(49, 0);
+      this.problemInstanceProviderComboBox.Name = "problemInstanceProviderComboBox";
+      this.problemInstanceProviderComboBox.Size = new System.Drawing.Size(171, 21);
+      this.problemInstanceProviderComboBox.TabIndex = 16;
+      this.problemInstanceProviderComboBox.SelectedIndexChanged += new System.EventHandler(this.problemInstanceProviderComboBox_SelectedIndexChanged);
+      this.problemInstanceProviderComboBox.DataSourceChanged += new System.EventHandler(this.comboBox_DataSourceChanged);
+      // 
+      // libraryInfoButton
+      // 
+      this.libraryInfoButton.Location = new System.Drawing.Point(226, -1);
+      this.libraryInfoButton.Name = "libraryInfoButton";
+      this.libraryInfoButton.Size = new System.Drawing.Size(26, 23);
+      this.libraryInfoButton.TabIndex = 17;
+      this.libraryInfoButton.Text = "Info";
+      this.libraryInfoButton.UseVisualStyleBackColor = true;
+      this.libraryInfoButton.Click += new System.EventHandler(this.libraryInfoButton_Click);
+      // 
+      // libraryLabel
+      // 
+      this.libraryLabel.AutoSize = true;
+      this.libraryLabel.Location = new System.Drawing.Point(5, 4);
+      this.libraryLabel.Name = "libraryLabel";
+      this.libraryLabel.Size = new System.Drawing.Size(41, 13);
+      this.libraryLabel.TabIndex = 15;
+      this.libraryLabel.Text = "Library:";
+      // 
+      // problemInstanceProviderViewHost
+      // 
+      this.problemInstanceProviderViewHost.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+                  | System.Windows.Forms.AnchorStyles.Right)));
+      this.problemInstanceProviderViewHost.Caption = "View";
+      this.problemInstanceProviderViewHost.Content = null;
+      this.problemInstanceProviderViewHost.Enabled = false;
+      this.problemInstanceProviderViewHost.Location = new System.Drawing.Point(0, 0);
+      this.problemInstanceProviderViewHost.Name = "problemInstanceProviderViewHost";
+      this.problemInstanceProviderViewHost.ReadOnly = false;
+      this.problemInstanceProviderViewHost.Size = new System.Drawing.Size(251, 22);
+      this.problemInstanceProviderViewHost.TabIndex = 15;
+      this.problemInstanceProviderViewHost.ViewsLabelVisible = false;
+      this.problemInstanceProviderViewHost.ViewType = null;
+      // 
+      // ProblemInstanceConsumableView
+      // 
+      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+      this.Controls.Add(this.problemInstanceProviderComboBox);
+      this.Controls.Add(this.libraryInfoButton);
+      this.Controls.Add(this.libraryLabel);
+      this.Name = "ProblemInstanceConsumableView";
+      this.Size = new System.Drawing.Size(694, 21);
+      this.ResumeLayout(false);
+      this.PerformLayout();
+
+    }
+
+    #endregion
+
+    private System.Windows.Forms.ComboBox problemInstanceProviderComboBox;
+    private System.Windows.Forms.Button libraryInfoButton;
+    private System.Windows.Forms.Label libraryLabel;
+    private MainForm.WindowsForms.ViewHost problemInstanceProviderViewHost;
+  }
+}
Index: /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Views/3.4/ProblemInstanceConsumerView.cs
===================================================================
--- /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Views/3.4/ProblemInstanceConsumerView.cs	(revision 7664)
+++ /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Views/3.4/ProblemInstanceConsumerView.cs	(revision 7664)
@@ -0,0 +1,143 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2012 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.Linq;
+using System.Windows.Forms;
+using HeuristicLab.Common.Resources;
+using HeuristicLab.MainForm;
+using HeuristicLab.MainForm.WindowsForms;
+using HeuristicLab.PluginInfrastructure;
+
+namespace HeuristicLab.Problems.Instances.Views {
+  [View("ProblemInstanceConsumerView")]
+  [Content(typeof(IProblemInstanceConsumer), IsDefaultView = true)]
+  public sealed partial class ProblemInstanceConsumerView : AsynchronousContentView {
+
+    public new IProblemInstanceConsumer Content {
+      get { return (IProblemInstanceConsumer)base.Content; }
+      set { base.Content = value; }
+    }
+
+    private IProblemInstanceProvider SelectedProvider {
+      get { return (problemInstanceProviderComboBox.SelectedIndex >= 0 ? (IProblemInstanceProvider)problemInstanceProviderComboBox.SelectedItem : null); }
+    }
+
+    public ProblemInstanceConsumerView() {
+      InitializeComponent();
+      libraryInfoButton.Text = String.Empty;
+      libraryInfoButton.Image = VSImageLibrary.Internet;
+    }
+
+    protected override void OnContentChanged() {
+      base.OnContentChanged();
+      if (Content == null) {
+        problemInstanceProviderComboBox.DataSource = null;
+      } else {
+        problemInstanceProviderComboBox.DisplayMember = "Name";
+        problemInstanceProviderComboBox.DataSource = GetProblemInstanceProviders().ToList();
+      }
+      SetEnabledStateOfControls();
+    }
+
+    public bool ContainsProviders() {
+      return problemInstanceProviderComboBox.Items.Count > 0;
+    }
+
+    protected override void SetEnabledStateOfControls() {
+      base.SetEnabledStateOfControls();
+      problemInstanceProviderComboBox.Enabled = !ReadOnly && !Locked && Content != null && problemInstanceProviderComboBox.Items.Count > 0;
+      libraryInfoButton.Enabled = SelectedProvider != null && SelectedProvider.WebLink != null;
+    }
+
+    private void problemInstanceProviderComboBox_SelectedIndexChanged(object sender, System.EventArgs e) {
+      if (problemInstanceProviderComboBox.SelectedIndex >= 0) {
+        //dynamic provider = SelectedProvider;
+        //dynamic consumer = Content;
+        //provider.Consumer = consumer;
+        problemInstanceProviderViewHost.Content = SelectedProvider;
+        dynamic view = problemInstanceProviderViewHost.ActiveView;
+        view.Consumer = Content;
+        //Check if IProblemInstanceExporterView is implemented
+        view.Exporter = Content;
+        //SetTooltip();
+      }
+      SetEnabledStateOfControls();
+    }
+
+    private void comboBox_DataSourceChanged(object sender, EventArgs e) {
+      var comboBox = (ComboBox)sender;
+      if (comboBox.DataSource == null)
+        comboBox.Items.Clear();
+    }
+
+    private void libraryInfoButton_Click(object sender, EventArgs e) {
+      if (problemInstanceProviderComboBox.SelectedIndex >= 0) {
+        if (SelectedProvider != null && SelectedProvider.WebLink != null)
+          Process.Start(SelectedProvider.WebLink.ToString());
+      }
+    }
+
+    private IEnumerable<IProblemInstanceProvider> GetProblemInstanceProviders() {
+      var consumerTypes = Content.GetType().GetInterfaces()
+        .Where(x => x.IsGenericType
+          && x.GetGenericTypeDefinition() == typeof(IProblemInstanceConsumer<>));
+
+      if (consumerTypes.Any()) {
+        var instanceTypes = consumerTypes
+          .Select(x => x.GetGenericArguments().First())
+          .Select(x => typeof(IProblemInstanceProvider<>).MakeGenericType(x));
+
+        foreach (var type in instanceTypes) {
+          foreach (var provider in ApplicationManager.Manager.GetInstances(type))
+            yield return (IProblemInstanceProvider)provider;
+        }
+      }
+    }
+
+    //protected void SetTooltip() {
+    //  toolTip.SetToolTip(problemInstanceProviderComboBox, GetProviderToolTip());
+    //  if (SelectedProvider.WebLink != null)
+    //    toolTip.SetToolTip(libraryInfoButton, "Browse to " + SelectedProvider.WebLink.ToString());
+    //  else toolTip.SetToolTip(libraryInfoButton, "Library does not have a web reference.");
+    //}
+
+    //protected string GetProviderToolTip() {
+    //  var provider = SelectedProvider;
+    //  string toolTip = provider.Name;
+
+    //  if (!String.IsNullOrEmpty(provider.ReferencePublication)) {
+    //    toolTip = toolTip
+    //        + Environment.NewLine + Environment.NewLine
+    //        + provider.ReferencePublication;
+    //  }
+    //  if (provider.WebLink != null) {
+    //    toolTip = toolTip
+    //        + Environment.NewLine
+    //        + provider.WebLink.ToString();
+    //  }
+
+    //  return toolTip;
+    //}
+  }
+}
Index: /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Views/3.4/ProblemInstanceProviderView.Designer.cs
===================================================================
--- /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Views/3.4/ProblemInstanceProviderView.Designer.cs	(revision 7664)
+++ /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Views/3.4/ProblemInstanceProviderView.Designer.cs	(revision 7664)
@@ -0,0 +1,151 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2012 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+namespace HeuristicLab.Problems.Instances.Views {
+  partial class ProblemInstanceProviderView<T> {
+    /// <summary> 
+    /// Required designer variable.
+    /// </summary>
+    private System.ComponentModel.IContainer components = null;
+
+    /// <summary> 
+    /// Clean up any resources being used.
+    /// </summary>
+    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+    protected override void Dispose(bool disposing) {
+      if (disposing && (components != null)) {
+        components.Dispose();
+      }
+      base.Dispose(disposing);
+    }
+
+    #region Component Designer generated code
+
+    /// <summary> 
+    /// Required method for Designer support - do not modify 
+    /// the contents of this method with the code editor.
+    /// </summary>
+    private void InitializeComponent() {
+      this.components = new System.ComponentModel.Container();
+      this.loadButton = new System.Windows.Forms.Button();
+      this.instanceLabel = new System.Windows.Forms.Label();
+      this.instancesComboBox = new System.Windows.Forms.ComboBox();
+      this.importButton = new System.Windows.Forms.Button();
+      this.openFileDialog = new System.Windows.Forms.OpenFileDialog();
+      this.toolTip = new System.Windows.Forms.ToolTip(this.components);
+      this.exportButton = new System.Windows.Forms.Button();
+      this.saveFileDialog = new System.Windows.Forms.SaveFileDialog();
+      this.SuspendLayout();
+      // 
+      // loadButton
+      // 
+      this.loadButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
+      this.loadButton.Location = new System.Drawing.Point(601, -1);
+      this.loadButton.Name = "loadButton";
+      this.loadButton.Size = new System.Drawing.Size(26, 23);
+      this.loadButton.TabIndex = 6;
+      this.loadButton.Text = "Load";
+      this.loadButton.UseVisualStyleBackColor = true;
+      this.loadButton.Click += new System.EventHandler(this.loadButton_Click);
+      // 
+      // instanceLabel
+      // 
+      this.instanceLabel.AutoSize = true;
+      this.instanceLabel.Location = new System.Drawing.Point(-3, 3);
+      this.instanceLabel.Name = "instanceLabel";
+      this.instanceLabel.Size = new System.Drawing.Size(51, 13);
+      this.instanceLabel.TabIndex = 4;
+      this.instanceLabel.Text = "Instance:";
+      // 
+      // instancesComboBox
+      // 
+      this.instancesComboBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+            | System.Windows.Forms.AnchorStyles.Right)));
+      this.instancesComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
+      this.instancesComboBox.FormattingEnabled = true;
+      this.instancesComboBox.Location = new System.Drawing.Point(54, 0);
+      this.instancesComboBox.Name = "instancesComboBox";
+      this.instancesComboBox.Size = new System.Drawing.Size(541, 21);
+      this.instancesComboBox.TabIndex = 7;
+      this.instancesComboBox.DataSourceChanged += new System.EventHandler(this.comboBox_DataSourceChanged);
+      // 
+      // importButton
+      // 
+      this.importButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
+      this.importButton.Location = new System.Drawing.Point(633, -1);
+      this.importButton.Name = "importButton";
+      this.importButton.Size = new System.Drawing.Size(26, 23);
+      this.importButton.TabIndex = 6;
+      this.importButton.Text = "Import";
+      this.importButton.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageBeforeText;
+      this.importButton.UseVisualStyleBackColor = true;
+      this.importButton.Click += new System.EventHandler(this.importButton_Click);
+      // 
+      // openFileDialog
+      // 
+      this.openFileDialog.Filter = "All files|*.*";
+      // 
+      // exportButton
+      // 
+      this.exportButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
+      this.exportButton.Location = new System.Drawing.Point(665, -1);
+      this.exportButton.Name = "exportButton";
+      this.exportButton.Size = new System.Drawing.Size(26, 23);
+      this.exportButton.TabIndex = 8;
+      this.exportButton.Text = "Export";
+      this.exportButton.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageBeforeText;
+      this.exportButton.UseVisualStyleBackColor = true;
+      this.exportButton.Click += new System.EventHandler(this.exportButton_Click);
+      // 
+      // saveFileDialog
+      // 
+      this.saveFileDialog.Filter = "CSV files|*.csv|All files|*.*";
+      this.saveFileDialog.Title = "Save RegressionInstance...";
+      // 
+      // ProblemInstanceProviderView
+      // 
+      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+      this.Controls.Add(this.exportButton);
+      this.Controls.Add(this.instancesComboBox);
+      this.Controls.Add(this.importButton);
+      this.Controls.Add(this.loadButton);
+      this.Controls.Add(this.instanceLabel);
+      this.Name = "ProblemInstanceProviderView";
+      this.Size = new System.Drawing.Size(694, 21);
+      this.ResumeLayout(false);
+      this.PerformLayout();
+
+    }
+
+    #endregion
+
+    private System.Windows.Forms.OpenFileDialog openFileDialog;
+    private System.Windows.Forms.ToolTip toolTip;
+    protected System.Windows.Forms.Button loadButton;
+    protected System.Windows.Forms.Label instanceLabel;
+    protected System.Windows.Forms.ComboBox instancesComboBox;
+    protected System.Windows.Forms.Button importButton;
+    protected System.Windows.Forms.Button exportButton;
+    private System.Windows.Forms.SaveFileDialog saveFileDialog;
+
+  }
+}
Index: /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Views/3.4/ProblemInstanceProviderView.cs
===================================================================
--- /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Views/3.4/ProblemInstanceProviderView.cs	(revision 7664)
+++ /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Views/3.4/ProblemInstanceProviderView.cs	(revision 7664)
@@ -0,0 +1,131 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2012 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.IO;
+using System.Linq;
+using System.Windows.Forms;
+using HeuristicLab.Common.Resources;
+using HeuristicLab.MainForm;
+using HeuristicLab.MainForm.WindowsForms;
+using HeuristicLab.PluginInfrastructure;
+
+namespace HeuristicLab.Problems.Instances.Views {
+  [View("ProblemInstanceProviderView")]
+  [Content(typeof(IProblemInstanceProvider<>), IsDefaultView = true)]
+  public partial class ProblemInstanceProviderView<T> : AsynchronousContentView {
+
+    public new IProblemInstanceProvider<T> Content {
+      get { return (IProblemInstanceProvider<T>)base.Content; }
+      set { base.Content = value; }
+    }
+
+    public IProblemInstanceConsumer<T> Consumer { get; set; }
+
+    public IProblemInstanceExporter<T> Exporter { get; set; }
+
+    public ProblemInstanceProviderView() {
+      InitializeComponent();
+      importButton.Text = String.Empty;
+      importButton.Image = VSImageLibrary.Open;
+      toolTip.SetToolTip(importButton, "Import a " + GetProblemType() + " instance from file.");
+      exportButton.Text = String.Empty;
+      exportButton.Image = VSImageLibrary.Save;
+      toolTip.SetToolTip(exportButton, "Export a " + GetProblemType() + " instance to a file.");
+      loadButton.Text = String.Empty;
+      loadButton.Image = VSImageLibrary.RefreshDocument;
+      toolTip.SetToolTip(loadButton, "Load the selected instance.");
+    }
+
+    protected override void OnContentChanged() {
+      base.OnContentChanged();
+      if (Content == null) {
+        instancesComboBox.DataSource = null;
+      } else {
+        instancesComboBox.DisplayMember = "Name";
+        instancesComboBox.DataSource = Content.GetDataDescriptors().ToList();
+      }
+    }
+
+    protected override void SetEnabledStateOfControls() {
+      base.SetEnabledStateOfControls();
+      instancesComboBox.Enabled = !ReadOnly && !Locked && Content != null && Content.Consumer != null;
+      loadButton.Enabled = !ReadOnly && !Locked && Content != null && Content.Consumer != null;
+    }
+
+    protected virtual void loadButton_Click(object sender, EventArgs e) {
+      var descriptor = (IDataDescriptor)instancesComboBox.SelectedItem;
+      var instance = Content.LoadData(descriptor);
+      try {
+        Content.Consumer.Load(instance);
+      }
+      catch (Exception ex) {
+        MessageBox.Show(String.Format("This problem does not support loading the instance {0}: {1}", descriptor.Name, Environment.NewLine + ex.Message), "Cannot load instance");
+      }
+    }
+
+    protected virtual void importButton_Click(object sender, EventArgs e) {
+      openFileDialog.FileName = GetProblemType() + " instance";
+      if (openFileDialog.ShowDialog() == DialogResult.OK) {
+        T instance = default(T);
+        try {
+          instance = Content.LoadData(openFileDialog.FileName);
+        }
+        catch (Exception ex) {
+          MessageBox.Show(String.Format("There was an error parsing the file: {0}", Environment.NewLine + ex.Message), "Error while parsing", MessageBoxButtons.OK, MessageBoxIcon.Error);
+          return;
+        }
+        try {
+          Content.Consumer.Load(instance);
+        }
+        catch (Exception ex) {
+          MessageBox.Show(String.Format("This problem does not support loading the instance {0}: {1}", Path.GetFileName(openFileDialog.FileName), Environment.NewLine + ex.Message), "Cannot load instance");
+        }
+      }
+    }
+
+    protected virtual void exportButton_Click(object sender, EventArgs e) {
+      if (saveFileDialog.ShowDialog(this) == DialogResult.OK) {
+        try {
+          var descriptor = (IDataDescriptor)instancesComboBox.SelectedItem;
+          var instance = Content.LoadData(descriptor);
+          Content.SaveData(instance, saveFileDialog.FileName);
+        }
+        catch (Exception ex) {
+          ErrorHandling.ShowErrorDialog(this, ex);
+        }
+      }
+    }
+
+    private void comboBox_DataSourceChanged(object sender, EventArgs e) {
+      var comboBox = (ComboBox)sender;
+      if (comboBox.DataSource == null)
+        comboBox.Items.Clear();
+    }
+
+    protected virtual string GetProblemType() {
+      string dataTypeName = typeof(T).Name.Split(new char[] { '.' }, StringSplitOptions.RemoveEmptyEntries).Last();
+      if (dataTypeName.EndsWith("Data"))
+        return dataTypeName.Substring(0, dataTypeName.Length - "Data".Length);
+      else return dataTypeName;
+    }
+  }
+}
Index: /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Views/3.4/Properties/AssemblyInfo.cs
===================================================================
--- /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Views/3.4/Properties/AssemblyInfo.cs	(revision 7664)
+++ /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Views/3.4/Properties/AssemblyInfo.cs	(revision 7664)
@@ -0,0 +1,36 @@
+﻿using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("HeuristicLab.Problems.Instances.Views-3.4")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("HeuristicLab.Problems.Instances.Views-3.4")]
+[assembly: AssemblyCopyright("Copyright ©  2012")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM components.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("72f8e22a-e677-4555-a49d-81fe0dda6100")]
+
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version 
+//      Build Number
+//      Revision
+//
+// You can specify all the values or you can default the Build and Revision Numbers 
+// by using the '*' as shown below:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
Index: /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Views/3.4/Properties/AssemblyInfo.cs.frame
===================================================================
--- /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Views/3.4/Properties/AssemblyInfo.cs.frame	(revision 7664)
+++ /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Views/3.4/Properties/AssemblyInfo.cs.frame	(revision 7664)
@@ -0,0 +1,55 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2012 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System.Reflection;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("HeuristicLab.Problems.Instances.Views")]
+[assembly: AssemblyDescription("Provides views for Problem Instances.")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("HeuristicLab")]
+[assembly: AssemblyCopyright("(c) 2002-2012 HEAL")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM components.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("72f8e22a-e677-4555-a49d-81fe0dda6100")]
+
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version 
+//      Build Number
+//      Revision
+//
+// You can specify all the values or you can default the Revision and Build Numbers 
+// by using the '*' as shown below:
+[assembly: AssemblyVersion("3.4.0.0")]
+[assembly: AssemblyFileVersion("3.4.2.$WCREV$")]
Index: /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances/3.3/HeuristicLab.Problems.Instances-3.3.csproj
===================================================================
--- /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances/3.3/HeuristicLab.Problems.Instances-3.3.csproj	(revision 7663)
+++ /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances/3.3/HeuristicLab.Problems.Instances-3.3.csproj	(revision 7664)
@@ -113,4 +113,5 @@
   <ItemGroup>
     <None Include="Plugin.cs.frame" />
+    <Compile Include="IProblemInstanceExporter.cs" />
     <Compile Include="IExportable.cs" />
     <Compile Include="TableFileParser.cs" />
Index: /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances/3.3/IProblemInstanceConsumer.cs
===================================================================
--- /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances/3.3/IProblemInstanceConsumer.cs	(revision 7663)
+++ /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances/3.3/IProblemInstanceConsumer.cs	(revision 7664)
@@ -20,5 +20,9 @@
 #endregion
 
+using HeuristicLab.Common;
+
 namespace HeuristicLab.Problems.Instances {
+  public interface IProblemInstanceConsumer : IContent { }
+
   public interface IProblemInstanceConsumer<TData> {
     /// <summary>
Index: /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances/3.3/IProblemInstanceExporter.cs
===================================================================
--- /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances/3.3/IProblemInstanceExporter.cs	(revision 7664)
+++ /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances/3.3/IProblemInstanceExporter.cs	(revision 7664)
@@ -0,0 +1,26 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2012 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+namespace HeuristicLab.Problems.Instances {
+  public interface IProblemInstanceExporter<TData> {
+    TData Export();
+  }
+}
