Index: /trunk/sources/HeuristicLab 3.3.sln
===================================================================
--- /trunk/sources/HeuristicLab 3.3.sln	(revision 7829)
+++ /trunk/sources/HeuristicLab 3.3.sln	(revision 7830)
@@ -294,9 +294,9 @@
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.Problems.Instances.CordeauGQAP-3.3", "HeuristicLab.Problems.Instances.CordeauGQAP\3.3\HeuristicLab.Problems.Instances.CordeauGQAP-3.3.csproj", "{1F2718DA-BF13-40EE-A7FD-EEDB4912E64E}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.Problems.Instances.Classification-3.4", "HeuristicLab.Problems.Instances.Classification\3.4\HeuristicLab.Problems.Instances.Classification-3.4.csproj", "{1BBFCD5B-8A1C-4225-A682-ADEC7800E683}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.Problems.Instances.Regression-3.4", "HeuristicLab.Problems.Instances.Regression\3.4\HeuristicLab.Problems.Instances.Regression-3.4.csproj", "{26BF13E1-C8B2-4ACE-862D-EBFD360116B3}"
-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", "{B1BA398F-953F-4C3A-B07B-1E5E17A27DD9}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.Problems.Instances.Views-3.3", "HeuristicLab.Problems.Instances.Views\3.3\HeuristicLab.Problems.Instances.Views-3.3.csproj", "{B1BA398F-953F-4C3A-B07B-1E5E17A27DD9}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.Problems.Instances.Regression-3.3", "HeuristicLab.Problems.Instances.Regression\3.3\HeuristicLab.Problems.Instances.Regression-3.3.csproj", "{26BF13E1-C8B2-4ACE-862D-EBFD360116B3}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.Problems.Instances.Classification-3.3", "HeuristicLab.Problems.Instances.Classification\3.3\HeuristicLab.Problems.Instances.Classification-3.3.csproj", "{1BBFCD5B-8A1C-4225-A682-ADEC7800E683}"
 EndProject
 Global
@@ -1441,4 +1441,20 @@
 		{1F2718DA-BF13-40EE-A7FD-EEDB4912E64E}.Release|x86.ActiveCfg = Release|x86
 		{1F2718DA-BF13-40EE-A7FD-EEDB4912E64E}.Release|x86.Build.0 = Release|x86
+		{B1BA398F-953F-4C3A-B07B-1E5E17A27DD9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{B1BA398F-953F-4C3A-B07B-1E5E17A27DD9}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{B1BA398F-953F-4C3A-B07B-1E5E17A27DD9}.Debug|x64.ActiveCfg = Debug|Any CPU
+		{B1BA398F-953F-4C3A-B07B-1E5E17A27DD9}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{B1BA398F-953F-4C3A-B07B-1E5E17A27DD9}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{B1BA398F-953F-4C3A-B07B-1E5E17A27DD9}.Release|Any CPU.Build.0 = Release|Any CPU
+		{B1BA398F-953F-4C3A-B07B-1E5E17A27DD9}.Release|x64.ActiveCfg = Release|Any CPU
+		{B1BA398F-953F-4C3A-B07B-1E5E17A27DD9}.Release|x86.ActiveCfg = Release|Any CPU
+		{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|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|x64.ActiveCfg = Release|Any CPU
+		{26BF13E1-C8B2-4ACE-862D-EBFD360116B3}.Release|x86.ActiveCfg = Release|Any CPU
 		{1BBFCD5B-8A1C-4225-A682-ADEC7800E683}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{1BBFCD5B-8A1C-4225-A682-ADEC7800E683}.Debug|Any CPU.Build.0 = Debug|Any CPU
@@ -1449,20 +1465,4 @@
 		{1BBFCD5B-8A1C-4225-A682-ADEC7800E683}.Release|x64.ActiveCfg = Release|Any CPU
 		{1BBFCD5B-8A1C-4225-A682-ADEC7800E683}.Release|x86.ActiveCfg = Release|Any CPU
-		{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|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|x64.ActiveCfg = Release|Any CPU
-		{26BF13E1-C8B2-4ACE-862D-EBFD360116B3}.Release|x86.ActiveCfg = Release|Any CPU
-		{B1BA398F-953F-4C3A-B07B-1E5E17A27DD9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{B1BA398F-953F-4C3A-B07B-1E5E17A27DD9}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{B1BA398F-953F-4C3A-B07B-1E5E17A27DD9}.Debug|x64.ActiveCfg = Debug|Any CPU
-		{B1BA398F-953F-4C3A-B07B-1E5E17A27DD9}.Debug|x86.ActiveCfg = Debug|Any CPU
-		{B1BA398F-953F-4C3A-B07B-1E5E17A27DD9}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{B1BA398F-953F-4C3A-B07B-1E5E17A27DD9}.Release|Any CPU.Build.0 = Release|Any CPU
-		{B1BA398F-953F-4C3A-B07B-1E5E17A27DD9}.Release|x64.ActiveCfg = Release|Any CPU
-		{B1BA398F-953F-4C3A-B07B-1E5E17A27DD9}.Release|x86.ActiveCfg = Release|Any CPU
 	EndGlobalSection
 	GlobalSection(SolutionProperties) = preSolution
Index: /trunk/sources/HeuristicLab.Optimization.Views/3.3/HeuristicLab.Optimization.Views-3.3.csproj
===================================================================
--- /trunk/sources/HeuristicLab.Optimization.Views/3.3/HeuristicLab.Optimization.Views-3.3.csproj	(revision 7829)
+++ /trunk/sources/HeuristicLab.Optimization.Views/3.3/HeuristicLab.Optimization.Views-3.3.csproj	(revision 7830)
@@ -351,8 +351,7 @@
       <Private>False</Private>
     </ProjectReference>
-    <ProjectReference Include="..\..\HeuristicLab.Problems.Instances.Views\3.4\HeuristicLab.Problems.Instances.Views-3.4.csproj">
+    <ProjectReference Include="..\..\HeuristicLab.Problems.Instances.Views\3.3\HeuristicLab.Problems.Instances.Views-3.3.csproj">
       <Project>{B1BA398F-953F-4C3A-B07B-1E5E17A27DD9}</Project>
-      <Name>HeuristicLab.Problems.Instances.Views-3.4</Name>
-      <Private>False</Private>
+      <Name>HeuristicLab.Problems.Instances.Views-3.3</Name>
     </ProjectReference>
     <ProjectReference Include="..\..\HeuristicLab.Problems.Instances\3.3\HeuristicLab.Problems.Instances-3.3.csproj">
Index: /trunk/sources/HeuristicLab.Optimization.Views/3.3/Plugin.cs.frame
===================================================================
--- /trunk/sources/HeuristicLab.Optimization.Views/3.3/Plugin.cs.frame	(revision 7829)
+++ /trunk/sources/HeuristicLab.Optimization.Views/3.3/Plugin.cs.frame	(revision 7830)
@@ -39,5 +39,5 @@
   [PluginDependency("HeuristicLab.Optimization", "3.3")]
   [PluginDependency("HeuristicLab.Problems.Instances", "3.3")]
-  [PluginDependency("HeuristicLab.Problems.Instances.Views", "3.4")]
+  [PluginDependency("HeuristicLab.Problems.Instances.Views", "3.3")]
   [PluginDependency("HeuristicLab.Visualization.ChartControlsExtensions","3.3")]
   public class HeuristicLabOptimizationViewsPlugin : PluginBase {
Index: /trunk/sources/HeuristicLab.Problems.Instances.Classification/3.3/ArtificialClassificationDataDescriptor.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.Instances.Classification/3.3/ArtificialClassificationDataDescriptor.cs	(revision 7830)
+++ /trunk/sources/HeuristicLab.Problems.Instances.Classification/3.3/ArtificialClassificationDataDescriptor.cs	(revision 7830)
@@ -0,0 +1,53 @@
+﻿#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.Collections.Generic;
+using HeuristicLab.Problems.DataAnalysis;
+
+namespace HeuristicLab.Problems.Instances.Classification {
+  public abstract class ArtificialClassificationDataDescriptor : IDataDescriptor {
+    public abstract string Name { get; }
+    public abstract string Description { get; }
+
+    protected abstract string TargetVariable { get; }
+    protected abstract string[] InputVariables { get; }
+    protected abstract string[] AllowedInputVariables { get; }
+    protected abstract int TrainingPartitionStart { get; }
+    protected abstract int TrainingPartitionEnd { get; }
+    protected abstract int TestPartitionStart { get; }
+    protected abstract int TestPartitionEnd { get; }
+
+    public IClassificationProblemData GenerateClassificationData() {
+      Dataset dataset = new Dataset(InputVariables, this.GenerateValues());
+
+      ClassificationProblemData claData = new ClassificationProblemData(dataset, AllowedInputVariables, TargetVariable);
+      claData.Name = this.Name;
+      claData.Description = this.Description;
+      claData.TrainingPartition.Start = this.TrainingPartitionStart;
+      claData.TrainingPartition.End = this.TrainingPartitionEnd;
+      claData.TestPartition.Start = this.TestPartitionStart;
+      claData.TestPartition.End = this.TestPartitionEnd;
+      return claData;
+    }
+
+    protected abstract List<List<double>> GenerateValues();
+  }
+}
Index: /trunk/sources/HeuristicLab.Problems.Instances.Classification/3.3/ArtificialClassificationInstanceProvider.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.Instances.Classification/3.3/ArtificialClassificationInstanceProvider.cs	(revision 7830)
+++ /trunk/sources/HeuristicLab.Problems.Instances.Classification/3.3/ArtificialClassificationInstanceProvider.cs	(revision 7830)
@@ -0,0 +1,30 @@
+﻿#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.Problems.DataAnalysis;
+
+namespace HeuristicLab.Problems.Instances.Classification {
+  public abstract class ArtificialClassificationInstanceProvider : ClassificationInstanceProvider {
+    public override IClassificationProblemData LoadData(IDataDescriptor descriptor) {
+      return ((ArtificialClassificationDataDescriptor)descriptor).GenerateClassificationData();
+    }
+  }
+}
Index: /trunk/sources/HeuristicLab.Problems.Instances.Classification/3.3/ClassificationInstanceProvider.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.Instances.Classification/3.3/ClassificationInstanceProvider.cs	(revision 7830)
+++ /trunk/sources/HeuristicLab.Problems.Instances.Classification/3.3/ClassificationInstanceProvider.cs	(revision 7830)
@@ -0,0 +1,102 @@
+﻿#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;
+using System.Collections.Generic;
+using System.Globalization;
+using System.IO;
+using System.Linq;
+using System.Text;
+using HeuristicLab.Problems.DataAnalysis;
+
+namespace HeuristicLab.Problems.Instances.Classification {
+  public abstract class ClassificationInstanceProvider : IProblemInstanceProvider<IClassificationProblemData> {
+    public IClassificationProblemData LoadData(string path) {
+      NumberFormatInfo numberFormat;
+      DateTimeFormatInfo dateFormat;
+      char separator;
+      TableFileParser.DetermineFileFormat(new FileStream(path, FileMode.Open), out numberFormat, out dateFormat, out separator);
+
+      IClassificationProblemData claData = LoadData(new FileStream(path, FileMode.Open), numberFormat, dateFormat, separator);
+      int pos = path.LastIndexOf('\\');
+      if (pos < 0)
+        claData.Name = path;
+      else {
+        pos++;
+        claData.Name = path.Substring(pos, path.Length - pos);
+      }
+
+      return claData;
+    }
+
+    protected IClassificationProblemData LoadData(Stream stream, NumberFormatInfo numberFormat, DateTimeFormatInfo dateFormat, char separator) {
+      TableFileParser csvFileParser = new TableFileParser();
+
+      csvFileParser.Parse(stream, numberFormat, dateFormat, separator);
+
+      Dataset dataset = new Dataset(csvFileParser.VariableNames, csvFileParser.Values);
+      string targetVar = csvFileParser.VariableNames.Last();
+      IEnumerable<string> allowedInputVars = csvFileParser.VariableNames.Where(x => !x.Equals(targetVar));
+
+      ClassificationProblemData claData = new ClassificationProblemData(dataset, allowedInputVars, targetVar);
+
+      int trainingPartEnd = csvFileParser.Rows * 2 / 3;
+      claData.TrainingPartition.Start = 0;
+      claData.TrainingPartition.End = trainingPartEnd;
+      claData.TestPartition.Start = trainingPartEnd;
+      claData.TestPartition.End = csvFileParser.Rows;
+      return claData;
+    }
+
+    public void SaveData(IClassificationProblemData instance, string path) {
+      StringBuilder strBuilder = new StringBuilder();
+
+      foreach (var variable in instance.InputVariables) {
+        strBuilder.Append(variable + ";");
+      }
+      strBuilder.Remove(strBuilder.Length - 1, 1);
+      strBuilder.AppendLine();
+
+      Dataset dataset = instance.Dataset;
+
+      for (int i = 0; i < dataset.Rows; i++) {
+        for (int j = 0; j < dataset.Columns; j++) {
+          strBuilder.Append(dataset.GetValue(i, j) + ";");
+        }
+        strBuilder.Remove(strBuilder.Length - 1, 1);
+        strBuilder.AppendLine();
+      }
+
+      using (StreamWriter writer = new StreamWriter(path)) {
+        writer.Write(strBuilder);
+      }
+    }
+
+    public abstract IEnumerable<IDataDescriptor> GetDataDescriptors();
+    public abstract IClassificationProblemData LoadData(IDataDescriptor descriptor);
+
+    public abstract string Name { get; }
+    public abstract string Description { get; }
+    public abstract Uri WebLink { get; }
+    public abstract string ReferencePublication { get; }
+  }
+}
Index: /trunk/sources/HeuristicLab.Problems.Instances.Classification/3.3/HeuristicLab.Problems.Instances.Classification-3.3.csproj
===================================================================
--- /trunk/sources/HeuristicLab.Problems.Instances.Classification/3.3/HeuristicLab.Problems.Instances.Classification-3.3.csproj	(revision 7830)
+++ /trunk/sources/HeuristicLab.Problems.Instances.Classification/3.3/HeuristicLab.Problems.Instances.Classification-3.3.csproj	(revision 7830)
@@ -0,0 +1,127 @@
+﻿<?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)' == '' ">AnyCPU</Platform>
+    <ProductVersion>8.0.30703</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{1BBFCD5B-8A1C-4225-A682-ADEC7800E683}</ProjectGuid>
+    <OutputType>Library</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>HeuristicLab.Problems.Instances.Classification</RootNamespace>
+    <AssemblyName>HeuristicLab.Problems.Instances.Classification-3.3</AssemblyName>
+    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
+    <FileAlignment>512</FileAlignment>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>..\..\bin\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <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>
+  <ItemGroup>
+    <Reference Include="ICSharpCode.SharpZipLib, Version=0.85.4.369, Culture=neutral, PublicKeyToken=1b03e6acf1164f73, processorArchitecture=MSIL">
+      <Private>False</Private>
+    </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.Xml" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="ArtificialClassificationDataDescriptor.cs" />
+    <Compile Include="ArtificialClassificationInstanceProvider.cs" />
+    <Compile Include="Plugin.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+    <Compile Include="ClassificationInstanceProvider.cs" />
+    <Compile Include="RealWorld\Iris.cs">
+      <SubType>Code</SubType>
+    </Compile>
+    <Compile Include="RealWorld\Mammography.cs">
+      <SubType>Code</SubType>
+    </Compile>
+    <Compile Include="RealWorld\RealWorldInstanceProvider.cs" />
+    <Compile Include="ResourceClassificationDataDescriptor.cs" />
+    <Compile Include="ResourceClassificationInstanceProvider.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <EmbeddedResource Include="Data\RealWorld.zip" />
+    <None Include="Properties\AssemblyInfo.cs.frame" />
+    <None Include="HeuristicLab.snk" />
+    <None Include="Plugin.cs.frame" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\..\HeuristicLab.Collections\3.3\HeuristicLab.Collections-3.3.csproj">
+      <Project>{958B43BC-CC5C-4FA2-8628-2B3B01D890B6}</Project>
+      <Name>HeuristicLab.Collections-3.3</Name>
+      <Private>False</Private>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Common\3.3\HeuristicLab.Common-3.3.csproj">
+      <Project>{A9AD58B9-3EF9-4CC1-97E5-8D909039FF5C}</Project>
+      <Name>HeuristicLab.Common-3.3</Name>
+      <Private>False</Private>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Core\3.3\HeuristicLab.Core-3.3.csproj">
+      <Project>{C36BD924-A541-4A00-AFA8-41701378DDC5}</Project>
+      <Name>HeuristicLab.Core-3.3</Name>
+      <Private>False</Private>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Data\3.3\HeuristicLab.Data-3.3.csproj">
+      <Project>{BBAB9DF5-5EF3-4BA8-ADE9-B36E82114937}</Project>
+      <Name>HeuristicLab.Data-3.3</Name>
+      <Private>False</Private>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.PluginInfrastructure\3.3\HeuristicLab.PluginInfrastructure-3.3.csproj">
+      <Project>{94186A6A-5176-4402-AE83-886557B53CCA}</Project>
+      <Name>HeuristicLab.PluginInfrastructure-3.3</Name>
+      <Private>False</Private>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Problems.DataAnalysis\3.4\HeuristicLab.Problems.DataAnalysis-3.4.csproj">
+      <Project>{DF87C13E-A889-46FF-8153-66DCAA8C5674}</Project>
+      <Name>HeuristicLab.Problems.DataAnalysis-3.4</Name>
+      <Private>False</Private>
+    </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>
+  <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: /trunk/sources/HeuristicLab.Problems.Instances.Classification/3.3/Plugin.cs.frame
===================================================================
--- /trunk/sources/HeuristicLab.Problems.Instances.Classification/3.3/Plugin.cs.frame	(revision 7830)
+++ /trunk/sources/HeuristicLab.Problems.Instances.Classification/3.3/Plugin.cs.frame	(revision 7830)
@@ -0,0 +1,34 @@
+﻿#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.Classification {
+  [Plugin("HeuristicLab.Problems.Instances.Classification", "3.3.6.$WCREV$")]
+  [PluginFile("HeuristicLab.Problems.Instances.Classification-3.3.dll", PluginFileType.Assembly)]
+  [PluginDependency("HeuristicLab.Common", "3.3")]
+  [PluginDependency("HeuristicLab.Core", "3.3")]
+  [PluginDependency("HeuristicLab.Data", "3.3")]
+  [PluginDependency("HeuristicLab.Problems.DataAnalysis", "3.4")]
+  [PluginDependency("HeuristicLab.Problems.Instances", "3.3")]
+  public class HeuristicLabProblemsInstancesClassificationPlugin : PluginBase {
+  }
+}
Index: /trunk/sources/HeuristicLab.Problems.Instances.Classification/3.3/Properties/AssemblyInfo.cs.frame
===================================================================
--- /trunk/sources/HeuristicLab.Problems.Instances.Classification/3.3/Properties/AssemblyInfo.cs.frame	(revision 7830)
+++ /trunk/sources/HeuristicLab.Problems.Instances.Classification/3.3/Properties/AssemblyInfo.cs.frame	(revision 7830)
@@ -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.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.Classification")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("HEAL")]
+[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("e76e5928-97e3-45b1-879c-fb203d64041d")]
+
+// 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("3.3.0.0")]
+[assembly: AssemblyFileVersion("3.3.6.$WCREV$")]
Index: /trunk/sources/HeuristicLab.Problems.Instances.Classification/3.3/RealWorld/Iris.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.Instances.Classification/3.3/RealWorld/Iris.cs	(revision 7830)
+++ /trunk/sources/HeuristicLab.Problems.Instances.Classification/3.3/RealWorld/Iris.cs	(revision 7830)
@@ -0,0 +1,48 @@
+﻿#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;
+namespace HeuristicLab.Problems.Instances.Classification {
+  public class Iris : IDataDescriptor {
+    public string Name { get { return "iris"; } }
+    public string Description {
+      get {
+        return "Data Set Information: This is perhaps the best known database to be found in the pattern "
+        + "recognition literature. Fisher's paper is a classic in the field and is referenced frequently to this "
+        + "day. (See Duda & Hart, for example.) The data set contains 3 classes of 50 instances each, where each class "
+        + "refers to a type of iris plant. One class is linearly separable from the other 2; the latter are NOT linearly "
+        + "separable from each other." + Environment.NewLine
+        + "Website: http://archive.ics.uci.edu/ml/datasets/Iris" + Environment.NewLine
+        + "Attribute Information:" + Environment.NewLine
+        + "1. sepal length in cm" + Environment.NewLine
+        + "2. sepal width in cm" + Environment.NewLine
+        + "3. petal length in cm" + Environment.NewLine
+        + "4. petal width in cm" + Environment.NewLine
+        + "5. class:" + Environment.NewLine
+        + "-- Iris Setosa" + Environment.NewLine
+        + "-- Iris Versicolour" + Environment.NewLine
+        + "-- Iris Virginica" + Environment.NewLine + Environment.NewLine
+        + "Note: Iris Setosa = 0; Iris Versicolour = 1; Iris Virginica = 2;";
+      }
+    }
+  }
+}
Index: /trunk/sources/HeuristicLab.Problems.Instances.Classification/3.3/RealWorld/Mammography.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.Instances.Classification/3.3/RealWorld/Mammography.cs	(revision 7830)
+++ /trunk/sources/HeuristicLab.Problems.Instances.Classification/3.3/RealWorld/Mammography.cs	(revision 7830)
@@ -0,0 +1,49 @@
+﻿#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;
+namespace HeuristicLab.Problems.Instances.Classification {
+  public class Mammography : IDataDescriptor {
+    public string Name { get { return "mammography"; } }
+    public string Description {
+      get {
+        return "Data Set Information: Features are computed from a digitized image of a fine needle aspirate (FNA) of a breast mass."
+        + "Website: http://archive.ics.uci.edu/ml/datasets/Breast+Cancer+Wisconsin+%28Diagnostic%29" + Environment.NewLine
+        + "Attribute Information:" + Environment.NewLine
+        + "1) ID number" + Environment.NewLine
+        + "2) Diagnosis (M = malignant, B = benign)" + Environment.NewLine
+        + "3-32)" + Environment.NewLine + Environment.NewLine
+        + "Ten real-valued features are computed for each cell nucleus:" + Environment.NewLine + Environment.NewLine
+        + "a) radius (mean of distances from center to points on the perimeter)" + Environment.NewLine
+        + "b) texture (standard deviation of gray-scale values)" + Environment.NewLine
+        + "c) perimeter" + Environment.NewLine
+        + "d) area" + Environment.NewLine
+        + "e) smoothness (local variation in radius lengths)" + Environment.NewLine
+        + "f) compactness (perimeter^2 / area - 1.0)" + Environment.NewLine
+        + "g) concavity (severity of concave portions of the contour)" + Environment.NewLine
+        + "h) concave points (number of concave portions of the contour)" + Environment.NewLine
+        + "i) symmetry" + Environment.NewLine
+        + "j) fractal dimension (\"coastline approximation\" - 1)";
+      }
+    }
+  }
+}
Index: /trunk/sources/HeuristicLab.Problems.Instances.Classification/3.3/RealWorld/RealWorldInstanceProvider.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.Instances.Classification/3.3/RealWorld/RealWorldInstanceProvider.cs	(revision 7830)
+++ /trunk/sources/HeuristicLab.Problems.Instances.Classification/3.3/RealWorld/RealWorldInstanceProvider.cs	(revision 7830)
@@ -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.IO;
+using System.Linq;
+using ICSharpCode.SharpZipLib.Zip;
+
+namespace HeuristicLab.Problems.Instances.Classification {
+  public class RealWorldInstanceProvider : ResourceClassificationInstanceProvider {
+    public override string Name {
+      get { return "Real World Benchmark Problems"; }
+    }
+    public override string Description {
+      get {
+        return "";
+      }
+    }
+    public override Uri WebLink {
+      get { return null; }
+    }
+    public override string ReferencePublication {
+      get { return ""; }
+    }
+
+    protected override string FileName { get { return "RealWorld"; } }
+
+    public override IEnumerable<IDataDescriptor> GetDataDescriptors() {
+      List<IDataDescriptor> descriptorList = new List<IDataDescriptor>();
+      descriptorList.Add(new Iris());
+      descriptorList.Add(new Mammography());
+      var solutionsArchiveName = GetResourceName(FileName + @"\.zip");
+      if (!String.IsNullOrEmpty(solutionsArchiveName)) {
+        using (var solutionsZipFile = new ZipInputStream(GetType().Assembly.GetManifestResourceStream(solutionsArchiveName))) {
+          IList<string> entries = new List<string>();
+          ZipEntry curEntry;
+          while ((curEntry = solutionsZipFile.GetNextEntry()) != null) {
+            entries.Add(curEntry.Name);
+          }
+          foreach (var entry in entries.OrderBy(x => x)) {
+            string prettyName = Path.GetFileNameWithoutExtension(entry);
+            IDataDescriptor desc = descriptorList.Where(x => x.Name.Equals(prettyName)).FirstOrDefault();
+            if (desc != null) {
+              yield return new ResourceClassificationDataDescriptor(prettyName, desc.Description, entry);
+            } else
+              yield return new ResourceClassificationDataDescriptor(prettyName, Description, entry);
+          }
+        }
+      }
+    }
+  }
+}
Index: /trunk/sources/HeuristicLab.Problems.Instances.Classification/3.3/ResourceClassificationDataDescriptor.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.Instances.Classification/3.3/ResourceClassificationDataDescriptor.cs	(revision 7830)
+++ /trunk/sources/HeuristicLab.Problems.Instances.Classification/3.3/ResourceClassificationDataDescriptor.cs	(revision 7830)
@@ -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
+
+
+namespace HeuristicLab.Problems.Instances.Classification {
+  internal class ResourceClassificationDataDescriptor : IDataDescriptor {
+    public string Name { get; internal set; }
+    public string Description { get; internal set; }
+
+    internal string ResourceName { get; set; }
+    internal ResourceClassificationDataDescriptor(string name, string description, string resourceName) {
+      Name = name;
+      Description = description;
+      ResourceName = resourceName;
+    }
+  }
+}
Index: /trunk/sources/HeuristicLab.Problems.Instances.Classification/3.3/ResourceClassificationInstanceProvider.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.Instances.Classification/3.3/ResourceClassificationInstanceProvider.cs	(revision 7830)
+++ /trunk/sources/HeuristicLab.Problems.Instances.Classification/3.3/ResourceClassificationInstanceProvider.cs	(revision 7830)
@@ -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.Globalization;
+using System.IO;
+using System.Linq;
+using System.Reflection;
+using System.Text.RegularExpressions;
+using HeuristicLab.Problems.DataAnalysis;
+using ICSharpCode.SharpZipLib.Zip;
+
+namespace HeuristicLab.Problems.Instances.Classification {
+  public abstract class ResourceClassificationInstanceProvider : ClassificationInstanceProvider {
+
+    protected abstract string FileName { get; }
+
+    public override IEnumerable<IDataDescriptor> GetDataDescriptors() {
+      var solutionsArchiveName = GetResourceName(FileName + @"\.zip");
+      if (!String.IsNullOrEmpty(solutionsArchiveName)) {
+        using (var solutionsZipFile = new ZipInputStream(GetType().Assembly.GetManifestResourceStream(solutionsArchiveName))) {
+          IList<string> entries = new List<string>();
+          ZipEntry curEntry;
+          while ((curEntry = solutionsZipFile.GetNextEntry()) != null) {
+            entries.Add(curEntry.Name);
+          }
+          foreach (var entry in entries.OrderBy(x => x)) {
+            yield return new ResourceClassificationDataDescriptor(Path.GetFileNameWithoutExtension(entry), Description, entry);
+          }
+        }
+      }
+    }
+
+    public override IClassificationProblemData LoadData(IDataDescriptor id) {
+      var descriptor = (ResourceClassificationDataDescriptor)id;
+
+      var instanceArchiveName = GetResourceName(FileName + @"\.zip");
+      using (var instancesZipFile = new ZipFile(GetType().Assembly.GetManifestResourceStream(instanceArchiveName))) {
+        var entry = instancesZipFile.GetEntry(descriptor.ResourceName);
+        NumberFormatInfo numberFormat;
+        DateTimeFormatInfo dateFormat;
+        char separator;
+        using (Stream stream = instancesZipFile.GetInputStream(entry)) {
+          TableFileParser.DetermineFileFormat(stream, out numberFormat, out dateFormat, out separator);
+        }
+
+        IClassificationProblemData claData;
+        using (Stream stream = instancesZipFile.GetInputStream(entry)) {
+          claData = LoadData(stream, numberFormat, dateFormat, separator);
+        }
+        claData.Name = descriptor.Name;
+        claData.Description = descriptor.Description;
+        return claData;
+      }
+    }
+
+    protected virtual string GetResourceName(string fileName) {
+      return Assembly.GetExecutingAssembly().GetManifestResourceNames()
+              .Where(x => Regex.Match(x, @".*\.Data\." + fileName).Success).SingleOrDefault();
+    }
+  }
+}
Index: /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/ArtificialRegressionDataDescriptor.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/ArtificialRegressionDataDescriptor.cs	(revision 7830)
+++ /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/ArtificialRegressionDataDescriptor.cs	(revision 7830)
@@ -0,0 +1,53 @@
+﻿#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.Collections.Generic;
+using HeuristicLab.Problems.DataAnalysis;
+
+namespace HeuristicLab.Problems.Instances.Regression {
+  public abstract class ArtificialRegressionDataDescriptor : IDataDescriptor {
+    public abstract string Name { get; }
+    public abstract string Description { get; }
+
+    protected abstract string TargetVariable { get; }
+    protected abstract string[] InputVariables { get; }
+    protected abstract string[] AllowedInputVariables { get; }
+    protected abstract int TrainingPartitionStart { get; }
+    protected abstract int TrainingPartitionEnd { get; }
+    protected abstract int TestPartitionStart { get; }
+    protected abstract int TestPartitionEnd { get; }
+
+    public IRegressionProblemData GenerateRegressionData() {
+      Dataset dataset = new Dataset(InputVariables, this.GenerateValues());
+
+      RegressionProblemData regData = new RegressionProblemData(dataset, AllowedInputVariables, TargetVariable);
+      regData.Name = this.Name;
+      regData.Description = this.Description;
+      regData.TrainingPartition.Start = this.TrainingPartitionStart;
+      regData.TrainingPartition.End = this.TrainingPartitionEnd;
+      regData.TestPartition.Start = this.TestPartitionStart;
+      regData.TestPartition.End = this.TestPartitionEnd;
+      return regData;
+    }
+
+    protected abstract List<List<double>> GenerateValues();
+  }
+}
Index: /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/ArtificialRegressionInstanceProvider.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/ArtificialRegressionInstanceProvider.cs	(revision 7830)
+++ /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/ArtificialRegressionInstanceProvider.cs	(revision 7830)
@@ -0,0 +1,30 @@
+﻿#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.Problems.DataAnalysis;
+
+namespace HeuristicLab.Problems.Instances.Regression {
+  public abstract class ArtificialRegressionInstanceProvider : RegressionInstanceProvider {
+    public override IRegressionProblemData LoadData(IDataDescriptor descriptor) {
+      return ((ArtificialRegressionDataDescriptor)descriptor).GenerateRegressionData();
+    }
+  }
+}
Index: /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/HeuristicLab.Problems.Instances.Regression-3.3.csproj
===================================================================
--- /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/HeuristicLab.Problems.Instances.Regression-3.3.csproj	(revision 7830)
+++ /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/HeuristicLab.Problems.Instances.Regression-3.3.csproj	(revision 7830)
@@ -0,0 +1,178 @@
+﻿<?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)' == '' ">AnyCPU</Platform>
+    <ProductVersion>8.0.30703</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{26BF13E1-C8B2-4ACE-862D-EBFD360116B3}</ProjectGuid>
+    <OutputType>Library</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>HeuristicLab.Problems.Instances.Regression</RootNamespace>
+    <AssemblyName>HeuristicLab.Problems.Instances.Regression-3.3</AssemblyName>
+    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
+    <FileAlignment>512</FileAlignment>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>..\..\bin\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <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>
+  <ItemGroup>
+    <Reference Include="ICSharpCode.SharpZipLib, Version=0.85.4.369, Culture=neutral, PublicKeyToken=1b03e6acf1164f73, processorArchitecture=MSIL">
+      <Private>False</Private>
+    </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.Xml" />
+  </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="RealWorld\RealWorldInstanceProvider.cs" />
+    <Compile Include="ResourceRegressionInstanceProvider.cs" />
+    <Compile Include="ArtificialRegressionInstanceProvider.cs" />
+    <Compile Include="ResourceRegressionDataDescriptor.cs" />
+    <Compile Include="ArtificialRegressionDataDescriptor.cs" />
+    <Compile Include="Keijzer\KeijzerInstanceProvider.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+    <Compile Include="RegressionInstanceProvider.cs" />
+    <Compile Include="ValueGenerator.cs" />
+    <Compile Include="Various\BreimanOne.cs" />
+    <Compile Include="Various\SpatialCoevolution.cs" />
+    <Compile Include="Various\PolyTen.cs" />
+    <Compile Include="Various\VariousInstanceProvider.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>
+    <EmbeddedResource Include="Data\RealWorld.zip" />
+    <None Include="HeuristicLab.snk" />
+    <None Include="Plugin.cs.frame" />
+    <None Include="Properties\AssemblyInfo.cs.frame" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\..\HeuristicLab.Collections\3.3\HeuristicLab.Collections-3.3.csproj">
+      <Project>{958B43BC-CC5C-4FA2-8628-2B3B01D890B6}</Project>
+      <Name>HeuristicLab.Collections-3.3</Name>
+      <Private>False</Private>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Common\3.3\HeuristicLab.Common-3.3.csproj">
+      <Project>{A9AD58B9-3EF9-4CC1-97E5-8D909039FF5C}</Project>
+      <Name>HeuristicLab.Common-3.3</Name>
+      <Private>False</Private>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Core\3.3\HeuristicLab.Core-3.3.csproj">
+      <Project>{C36BD924-A541-4A00-AFA8-41701378DDC5}</Project>
+      <Name>HeuristicLab.Core-3.3</Name>
+      <Private>False</Private>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Data\3.3\HeuristicLab.Data-3.3.csproj">
+      <Project>{BBAB9DF5-5EF3-4BA8-ADE9-B36E82114937}</Project>
+      <Name>HeuristicLab.Data-3.3</Name>
+      <Private>False</Private>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.PluginInfrastructure\3.3\HeuristicLab.PluginInfrastructure-3.3.csproj">
+      <Project>{94186A6A-5176-4402-AE83-886557B53CCA}</Project>
+      <Name>HeuristicLab.PluginInfrastructure-3.3</Name>
+      <Private>False</Private>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Problems.DataAnalysis\3.4\HeuristicLab.Problems.DataAnalysis-3.4.csproj">
+      <Project>{DF87C13E-A889-46FF-8153-66DCAA8C5674}</Project>
+      <Name>HeuristicLab.Problems.DataAnalysis-3.4</Name>
+      <Private>False</Private>
+    </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>
+    <ProjectReference Include="..\..\HeuristicLab.Random\3.3\HeuristicLab.Random-3.3.csproj">
+      <Project>{F4539FB6-4708-40C9-BE64-0A1390AEA197}</Project>
+      <Name>HeuristicLab.Random-3.3</Name>
+      <Private>False</Private>
+    </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: /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Keijzer/KeijzerFunctionEight.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Keijzer/KeijzerFunctionEight.cs	(revision 7830)
+++ /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Keijzer/KeijzerFunctionEight.cs	(revision 7830)
@@ -0,0 +1,65 @@
+﻿#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 KeijzerFunctionEight : ArtificialRegressionDataDescriptor {
+
+    public override string Name { get { return "Keijzer 8 f(x) = log(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) = log(x)" + Environment.NewLine
+          + "range(train): x = [0:1:100]" + Environment.NewLine
+          + "range(test): x = [0:0.1:100]" + Environment.NewLine
+          + "Function Set: x + y, x * y, 1/x, -x, sqrt(x)" + Environment.NewLine + Environment.NewLine
+          + "Note: The problem starts with 1 to avoid log(0), which is minus infinity!";
+      }
+    }
+    protected override string TargetVariable { get { return "F"; } }
+    protected override string[] InputVariables { get { return new string[] { "X", "F" }; } }
+    protected override string[] AllowedInputVariables { get { return new 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 1091; } }
+
+    protected override List<List<double>> GenerateValues() {
+      List<List<double>> data = new List<List<double>>();
+      data.Add(ValueGenerator.GenerateSteps(1, 100, 1).ToList());
+      data[0].AddRange(ValueGenerator.GenerateSteps(1, 100, 0.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.Log(x));
+      }
+      data.Add(results);
+
+      return data;
+    }
+  }
+}
Index: /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Keijzer/KeijzerFunctionFifteen.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Keijzer/KeijzerFunctionFifteen.cs	(revision 7830)
+++ /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Keijzer/KeijzerFunctionFifteen.cs	(revision 7830)
@@ -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 string[] InputVariables { get { return new string[] { "X", "Y", "F" }; } }
+    protected override string[] AllowedInputVariables { get { return new 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 List<List<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).ToList());
+      }
+
+      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 data;
+    }
+  }
+}
Index: /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Keijzer/KeijzerFunctionFour.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Keijzer/KeijzerFunctionFour.cs	(revision 7830)
+++ /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Keijzer/KeijzerFunctionFour.cs	(revision 7830)
@@ -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 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 string[] InputVariables { get { return new string[] { "X", "F" }; } }
+    protected override string[] AllowedInputVariables { get { return new 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 List<List<double>> GenerateValues() {
+      List<List<double>> data = new List<List<double>>();
+      data.Add(ValueGenerator.GenerateSteps(-1, 1, 0.1).ToList());
+      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 data;
+    }
+  }
+}
Index: /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Keijzer/KeijzerFunctionSeven.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Keijzer/KeijzerFunctionSeven.cs	(revision 7830)
+++ /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Keijzer/KeijzerFunctionSeven.cs	(revision 7830)
@@ -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 string[] InputVariables { get { return new string[] { "X", "F" }; } }
+    protected override string[] AllowedInputVariables { get { return new 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 List<List<double>> GenerateValues() {
+      List<List<double>> data = new List<List<double>>();
+      data.Add(ValueGenerator.GenerateSteps(1, 50, 1).ToList());
+      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 data;
+    }
+  }
+}
Index: /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Keijzer/KeijzerFunctionSix.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Keijzer/KeijzerFunctionSix.cs	(revision 7830)
+++ /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Keijzer/KeijzerFunctionSix.cs	(revision 7830)
@@ -0,0 +1,67 @@
+﻿#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 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 string[] InputVariables { get { return new string[] { "X", "Y", "Z", "F" }; } }
+    protected override string[] AllowedInputVariables { get { return new 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 List<List<double>> GenerateValues() {
+      List<List<double>> data = new List<List<double>>();
+      data.Add(ValueGenerator.GenerateUniformDistributedValues(TestPartitionEnd, -1, 1).ToList());
+      data.Add(ValueGenerator.GenerateUniformDistributedValues(TestPartitionEnd, 1, 2).ToList());
+      data.Add(ValueGenerator.GenerateUniformDistributedValues(TestPartitionEnd, -1, 1).ToList());
+
+      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 data;
+    }
+  }
+}
Index: /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Keijzer/KeijzerFunctionSixteen.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Keijzer/KeijzerFunctionSixteen.cs	(revision 7830)
+++ /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Keijzer/KeijzerFunctionSixteen.cs	(revision 7830)
@@ -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 string[] InputVariables { get { return new string[] { "X", "Y", "F" }; } }
+    protected override string[] AllowedInputVariables { get { return new 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 List<List<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).ToList());
+      }
+
+      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 data;
+    }
+  }
+}
Index: /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Keijzer/KeijzerFunctionThirteen.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Keijzer/KeijzerFunctionThirteen.cs	(revision 7830)
+++ /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Keijzer/KeijzerFunctionThirteen.cs	(revision 7830)
@@ -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 string[] InputVariables { get { return new string[] { "X", "Y", "F" }; } }
+    protected override string[] AllowedInputVariables { get { return new 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 List<List<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).ToList());
+      }
+
+      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 data;
+    }
+  }
+}
Index: /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Keijzer/KeijzerFunctionTwelve.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Keijzer/KeijzerFunctionTwelve.cs	(revision 7830)
+++ /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Keijzer/KeijzerFunctionTwelve.cs	(revision 7830)
@@ -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 string[] InputVariables { get { return new string[] { "X", "Y", "F" }; } }
+    protected override string[] AllowedInputVariables { get { return new 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 List<List<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).ToList());
+      }
+
+      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 data;
+    }
+  }
+}
Index: /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Keijzer/KeijzerInstanceProvider.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Keijzer/KeijzerInstanceProvider.cs	(revision 7830)
+++ /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Keijzer/KeijzerInstanceProvider.cs	(revision 7830)
@@ -0,0 +1,53 @@
+﻿#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 KeijzerInstanceProvider : ArtificialRegressionInstanceProvider {
+    public override string Name {
+      get { return "Keijzer 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 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;
+    }
+  }
+}
Index: /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Korns/KornsFunctionEight.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Korns/KornsFunctionEight.cs	(revision 7830)
+++ /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Korns/KornsFunctionEight.cs	(revision 7830)
@@ -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 string[] InputVariables { get { return new string[] { "X0", "X1", "X2", "X3", "X4", "Y" }; } }
+    protected override string[] AllowedInputVariables { get { return new 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 List<List<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).ToList());
+      }
+
+      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 data;
+    }
+  }
+}
Index: /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Korns/KornsFunctionEleven.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Korns/KornsFunctionEleven.cs	(revision 7830)
+++ /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Korns/KornsFunctionEleven.cs	(revision 7830)
@@ -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 string[] InputVariables { get { return new string[] { "X0", "X1", "X2", "X3", "X4", "Y" }; } }
+    protected override string[] AllowedInputVariables { get { return new 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 List<List<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).ToList());
+      }
+
+      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 data;
+    }
+  }
+}
Index: /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Korns/KornsFunctionFive.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Korns/KornsFunctionFive.cs	(revision 7830)
+++ /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Korns/KornsFunctionFive.cs	(revision 7830)
@@ -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 string[] InputVariables { get { return new string[] { "X0", "X1", "X2", "X3", "X4", "Y" }; } }
+    protected override string[] AllowedInputVariables { get { return new 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 List<List<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).ToList());
+      }
+
+      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 data;
+    }
+  }
+}
Index: /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Korns/KornsFunctionFiveteen.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Korns/KornsFunctionFiveteen.cs	(revision 7830)
+++ /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Korns/KornsFunctionFiveteen.cs	(revision 7830)
@@ -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 string[] InputVariables { get { return new string[] { "X0", "X1", "X2", "X3", "X4", "Y" }; } }
+    protected override string[] AllowedInputVariables { get { return new 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 List<List<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).ToList());
+      }
+
+      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 data;
+    }
+  }
+}
Index: /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Korns/KornsFunctionFour.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Korns/KornsFunctionFour.cs	(revision 7830)
+++ /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Korns/KornsFunctionFour.cs	(revision 7830)
@@ -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 string[] InputVariables { get { return new string[] { "X0", "X1", "X2", "X3", "X4", "Y" }; } }
+    protected override string[] AllowedInputVariables { get { return new 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 List<List<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).ToList());
+      }
+
+      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 data;
+    }
+  }
+}
Index: /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Korns/KornsFunctionFourteen.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Korns/KornsFunctionFourteen.cs	(revision 7830)
+++ /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Korns/KornsFunctionFourteen.cs	(revision 7830)
@@ -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 string[] InputVariables { get { return new string[] { "X0", "X1", "X2", "X3", "X4", "Y" }; } }
+    protected override string[] AllowedInputVariables { get { return new 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 List<List<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).ToList());
+      }
+
+      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 data;
+    }
+  }
+}
Index: /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Korns/KornsFunctionNine.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Korns/KornsFunctionNine.cs	(revision 7830)
+++ /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Korns/KornsFunctionNine.cs	(revision 7830)
@@ -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 string[] InputVariables { get { return new string[] { "X0", "X1", "X2", "X3", "X4", "Y" }; } }
+    protected override string[] AllowedInputVariables { get { return new 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 List<List<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).ToList());
+      }
+
+      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 data;
+    }
+  }
+}
Index: /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Korns/KornsFunctionOne.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Korns/KornsFunctionOne.cs	(revision 7830)
+++ /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Korns/KornsFunctionOne.cs	(revision 7830)
@@ -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 string[] InputVariables { get { return new string[] { "X0", "X1", "X2", "X3", "X4", "Y" }; } }
+    protected override string[] AllowedInputVariables { get { return new 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 List<List<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).ToList());
+      }
+
+      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 data;
+    }
+  }
+}
Index: /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Korns/KornsFunctionSeven.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Korns/KornsFunctionSeven.cs	(revision 7830)
+++ /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Korns/KornsFunctionSeven.cs	(revision 7830)
@@ -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 string[] InputVariables { get { return new string[] { "X0", "X1", "X2", "X3", "X4", "Y" }; } }
+    protected override string[] AllowedInputVariables { get { return new 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 List<List<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).ToList());
+      }
+
+      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 data;
+    }
+  }
+}
Index: /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Korns/KornsFunctionSix.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Korns/KornsFunctionSix.cs	(revision 7830)
+++ /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Korns/KornsFunctionSix.cs	(revision 7830)
@@ -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 string[] InputVariables { get { return new string[] { "X0", "X1", "X2", "X3", "X4", "Y" }; } }
+    protected override string[] AllowedInputVariables { get { return new 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 List<List<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).ToList());
+      }
+
+      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 data;
+    }
+  }
+}
Index: /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Korns/KornsFunctionTen.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Korns/KornsFunctionTen.cs	(revision 7830)
+++ /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Korns/KornsFunctionTen.cs	(revision 7830)
@@ -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 string[] InputVariables { get { return new string[] { "X0", "X1", "X2", "X3", "X4", "Y" }; } }
+    protected override string[] AllowedInputVariables { get { return new 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 List<List<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).ToList());
+      }
+
+      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 data;
+    }
+  }
+}
Index: /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Korns/KornsFunctionThirteen.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Korns/KornsFunctionThirteen.cs	(revision 7830)
+++ /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Korns/KornsFunctionThirteen.cs	(revision 7830)
@@ -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 string[] InputVariables { get { return new string[] { "X0", "X1", "X2", "X3", "X4", "Y" }; } }
+    protected override string[] AllowedInputVariables { get { return new 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 List<List<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).ToList());
+      }
+
+      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 data;
+    }
+  }
+}
Index: /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Korns/KornsFunctionThree.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Korns/KornsFunctionThree.cs	(revision 7830)
+++ /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Korns/KornsFunctionThree.cs	(revision 7830)
@@ -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 string[] InputVariables { get { return new string[] { "X0", "X1", "X2", "X3", "X4", "Y" }; } }
+    protected override string[] AllowedInputVariables { get { return new 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 List<List<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).ToList());
+      }
+
+      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 data;
+    }
+  }
+}
Index: /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Korns/KornsFunctionTwelve.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Korns/KornsFunctionTwelve.cs	(revision 7830)
+++ /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Korns/KornsFunctionTwelve.cs	(revision 7830)
@@ -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 string[] InputVariables { get { return new string[] { "X0", "X1", "X2", "X3", "X4", "Y" }; } }
+    protected override string[] AllowedInputVariables { get { return new 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 List<List<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).ToList());
+      }
+
+      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 data;
+    }
+  }
+}
Index: /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Korns/KornsFunctionTwo.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Korns/KornsFunctionTwo.cs	(revision 7830)
+++ /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Korns/KornsFunctionTwo.cs	(revision 7830)
@@ -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 string[] InputVariables { get { return new string[] { "X0", "X1", "X2", "X3", "X4", "Y" }; } }
+    protected override string[] AllowedInputVariables { get { return new 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 List<List<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).ToList());
+      }
+
+      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 data;
+    }
+  }
+}
Index: /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Korns/KornsInstanceProvider.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Korns/KornsInstanceProvider.cs	(revision 7830)
+++ /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Korns/KornsInstanceProvider.cs	(revision 7830)
@@ -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: /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Nguyen/NguyenFunctionEight.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Nguyen/NguyenFunctionEight.cs	(revision 7830)
+++ /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Nguyen/NguyenFunctionEight.cs	(revision 7830)
@@ -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;
+using System.Linq;
+
+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 string[] InputVariables { get { return new string[] { "X", "Y" }; } }
+    protected override string[] AllowedInputVariables { get { return new 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 List<List<double>> GenerateValues() {
+      List<List<double>> data = new List<List<double>>();
+      data.Add(ValueGenerator.GenerateUniformDistributedValues(500, 0, 4).ToList());
+
+      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 data;
+    }
+  }
+}
Index: /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Nguyen/NguyenFunctionEleven.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Nguyen/NguyenFunctionEleven.cs	(revision 7830)
+++ /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Nguyen/NguyenFunctionEleven.cs	(revision 7830)
@@ -0,0 +1,65 @@
+﻿#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 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 string[] InputVariables { get { return new string[] { "X", "Y", "Z" }; } }
+    protected override string[] AllowedInputVariables { get { return new 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 List<List<double>> GenerateValues() {
+      List<List<double>> data = new List<List<double>>();
+      data.Add(ValueGenerator.GenerateUniformDistributedValues(TestPartitionEnd, 0, 1).ToList());
+      data.Add(ValueGenerator.GenerateUniformDistributedValues(TestPartitionEnd, 0, 1).ToList());
+
+      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 data;
+    }
+  }
+}
Index: /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Nguyen/NguyenFunctionFive.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Nguyen/NguyenFunctionFive.cs	(revision 7830)
+++ /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Nguyen/NguyenFunctionFive.cs	(revision 7830)
@@ -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;
+using System.Linq;
+
+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 string[] InputVariables { get { return new string[] { "X", "Y" }; } }
+    protected override string[] AllowedInputVariables { get { return new 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 List<List<double>> GenerateValues() {
+      List<List<double>> data = new List<List<double>>();
+      data.Add(ValueGenerator.GenerateUniformDistributedValues(500, -1, 1).ToList());
+
+      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 data;
+    }
+  }
+}
Index: /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Nguyen/NguyenFunctionFour.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Nguyen/NguyenFunctionFour.cs	(revision 7830)
+++ /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Nguyen/NguyenFunctionFour.cs	(revision 7830)
@@ -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;
+using System.Linq;
+
+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 string[] InputVariables { get { return new string[] { "X", "Y" }; } }
+    protected override string[] AllowedInputVariables { get { return new 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 List<List<double>> GenerateValues() {
+      List<List<double>> data = new List<List<double>>();
+      data.Add(ValueGenerator.GenerateUniformDistributedValues(500, -1, 1).ToList());
+
+      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 data;
+    }
+  }
+}
Index: /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Nguyen/NguyenFunctionNine.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Nguyen/NguyenFunctionNine.cs	(revision 7830)
+++ /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Nguyen/NguyenFunctionNine.cs	(revision 7830)
@@ -0,0 +1,65 @@
+﻿#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 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 string[] InputVariables { get { return new string[] { "X", "Y", "Z" }; } }
+    protected override string[] AllowedInputVariables { get { return new 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 List<List<double>> GenerateValues() {
+      List<List<double>> data = new List<List<double>>();
+      data.Add(ValueGenerator.GenerateUniformDistributedValues(TestPartitionEnd, 0, 1).ToList());
+      data.Add(ValueGenerator.GenerateUniformDistributedValues(TestPartitionEnd, 0, 1).ToList());
+
+      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 data;
+    }
+  }
+}
Index: /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Nguyen/NguyenFunctionOne.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Nguyen/NguyenFunctionOne.cs	(revision 7830)
+++ /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Nguyen/NguyenFunctionOne.cs	(revision 7830)
@@ -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;
+using System.Linq;
+
+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 string[] InputVariables { get { return new string[] { "X", "Y" }; } }
+    protected override string[] AllowedInputVariables { get { return new 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 List<List<double>> GenerateValues() {
+      List<List<double>> data = new List<List<double>>();
+      data.Add(ValueGenerator.GenerateUniformDistributedValues(500, -1, 1).ToList());
+
+      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 data;
+    }
+  }
+}
Index: /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Nguyen/NguyenFunctionSeven.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Nguyen/NguyenFunctionSeven.cs	(revision 7830)
+++ /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Nguyen/NguyenFunctionSeven.cs	(revision 7830)
@@ -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;
+using System.Linq;
+
+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 string[] InputVariables { get { return new string[] { "X", "Y" }; } }
+    protected override string[] AllowedInputVariables { get { return new 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 List<List<double>> GenerateValues() {
+      List<List<double>> data = new List<List<double>>();
+      data.Add(ValueGenerator.GenerateUniformDistributedValues(500, 0, 2).ToList());
+
+      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 data;
+    }
+  }
+}
Index: /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Nguyen/NguyenFunctionSix.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Nguyen/NguyenFunctionSix.cs	(revision 7830)
+++ /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Nguyen/NguyenFunctionSix.cs	(revision 7830)
@@ -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;
+using System.Linq;
+
+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 string[] InputVariables { get { return new string[] { "X", "Y" }; } }
+    protected override string[] AllowedInputVariables { get { return new 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 List<List<double>> GenerateValues() {
+      List<List<double>> data = new List<List<double>>();
+      data.Add(ValueGenerator.GenerateUniformDistributedValues(500, -1, 1).ToList());
+
+      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 data;
+    }
+  }
+}
Index: /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Nguyen/NguyenFunctionTen.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Nguyen/NguyenFunctionTen.cs	(revision 7830)
+++ /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Nguyen/NguyenFunctionTen.cs	(revision 7830)
@@ -0,0 +1,65 @@
+﻿#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 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 string[] InputVariables { get { return new string[] { "X", "Y", "Z" }; } }
+    protected override string[] AllowedInputVariables { get { return new 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 List<List<double>> GenerateValues() {
+      List<List<double>> data = new List<List<double>>();
+      data.Add(ValueGenerator.GenerateUniformDistributedValues(1000, 0, 1).ToList());
+      data.Add(ValueGenerator.GenerateUniformDistributedValues(1000, 0, 1).ToList());
+
+      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 data;
+    }
+  }
+}
Index: /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Nguyen/NguyenFunctionThree.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Nguyen/NguyenFunctionThree.cs	(revision 7830)
+++ /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Nguyen/NguyenFunctionThree.cs	(revision 7830)
@@ -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;
+using System.Linq;
+
+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 string[] InputVariables { get { return new string[] { "X", "Y" }; } }
+    protected override string[] AllowedInputVariables { get { return new 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 List<List<double>> GenerateValues() {
+      List<List<double>> data = new List<List<double>>();
+      data.Add(ValueGenerator.GenerateUniformDistributedValues(500, -1, 1).ToList());
+
+      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 data;
+    }
+  }
+}
Index: /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Nguyen/NguyenFunctionTwelve.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Nguyen/NguyenFunctionTwelve.cs	(revision 7830)
+++ /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Nguyen/NguyenFunctionTwelve.cs	(revision 7830)
@@ -0,0 +1,65 @@
+﻿#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 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 string[] InputVariables { get { return new string[] { "X", "Y", "Z" }; } }
+    protected override string[] AllowedInputVariables { get { return new 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 List<List<double>> GenerateValues() {
+      List<List<double>> data = new List<List<double>>();
+      data.Add(ValueGenerator.GenerateUniformDistributedValues(1000, 0, 1).ToList());
+      data.Add(ValueGenerator.GenerateUniformDistributedValues(1000, 0, 1).ToList());
+
+      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 data;
+    }
+  }
+}
Index: /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Nguyen/NguyenFunctionTwo.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Nguyen/NguyenFunctionTwo.cs	(revision 7830)
+++ /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Nguyen/NguyenFunctionTwo.cs	(revision 7830)
@@ -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;
+using System.Linq;
+
+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 string[] InputVariables { get { return new string[] { "X", "Y" }; } }
+    protected override string[] AllowedInputVariables { get { return new 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 List<List<double>> GenerateValues() {
+      List<List<double>> data = new List<List<double>>();
+      data.Add(ValueGenerator.GenerateUniformDistributedValues(500, -1, 1).ToList());
+
+      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 data;
+    }
+  }
+}
Index: /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Nguyen/NguyenInstanceProvider.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Nguyen/NguyenInstanceProvider.cs	(revision 7830)
+++ /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Nguyen/NguyenInstanceProvider.cs	(revision 7830)
@@ -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: /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Plugin.cs.frame
===================================================================
--- /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Plugin.cs.frame	(revision 7830)
+++ /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Plugin.cs.frame	(revision 7830)
@@ -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.Regression {
+  [Plugin("HeuristicLab.Problems.Instances.Regression", "3.3.6.$WCREV$")]
+  [PluginFile("HeuristicLab.Problems.Instances.Regression-3.3.dll", PluginFileType.Assembly)]
+  [PluginDependency("HeuristicLab.Common", "3.3")]
+  [PluginDependency("HeuristicLab.Core", "3.3")]
+  [PluginDependency("HeuristicLab.Data", "3.3")]
+  [PluginDependency("HeuristicLab.Problems.DataAnalysis", "3.4")]
+  [PluginDependency("HeuristicLab.Problems.Instances", "3.3")]
+  [PluginDependency("HeuristicLab.Random", "3.3")]
+  public class HeuristicLabProblemsInstancesRegressionPlugin : PluginBase {
+  }
+}
Index: /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Properties/AssemblyInfo.cs.frame
===================================================================
--- /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Properties/AssemblyInfo.cs.frame	(revision 7830)
+++ /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Properties/AssemblyInfo.cs.frame	(revision 7830)
@@ -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.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.Regression")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("HEAL")]
+[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("2fa516e4-be1b-47ae-a57c-dbc09736c2c6")]
+
+// 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("3.3.0.0")]
+[assembly: AssemblyFileVersion("3.3.6.$WCREV$")]
Index: /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/RealWorld/RealWorldInstanceProvider.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/RealWorld/RealWorldInstanceProvider.cs	(revision 7830)
+++ /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/RealWorld/RealWorldInstanceProvider.cs	(revision 7830)
@@ -0,0 +1,43 @@
+﻿#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;
+
+namespace HeuristicLab.Problems.Instances.Regression {
+  public class RealWorldInstanceProvider : ResourceRegressionInstanceProvider {
+    public override string Name {
+      get { return "Real World Benchmark Problems"; }
+    }
+    public override string Description {
+      get {
+        return "";
+      }
+    }
+    public override Uri WebLink {
+      get { return null; }
+    }
+    public override string ReferencePublication {
+      get { return ""; }
+    }
+
+    protected override string FileName { get { return "RealWorld"; } }
+  }
+}
Index: /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/RegressionInstanceProvider.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/RegressionInstanceProvider.cs	(revision 7830)
+++ /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/RegressionInstanceProvider.cs	(revision 7830)
@@ -0,0 +1,104 @@
+﻿#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;
+using System.Collections.Generic;
+using System.Globalization;
+using System.IO;
+using System.Linq;
+using System.Text;
+using HeuristicLab.Problems.DataAnalysis;
+
+namespace HeuristicLab.Problems.Instances.Regression {
+  public abstract class RegressionInstanceProvider : IProblemInstanceProvider<IRegressionProblemData> {
+
+    public IRegressionProblemData LoadData(string path) {
+      NumberFormatInfo numberFormat;
+      DateTimeFormatInfo dateFormat;
+      char separator;
+      TableFileParser.DetermineFileFormat(path, out numberFormat, out dateFormat, out separator);
+
+      IRegressionProblemData regData = LoadData(new FileStream(path, FileMode.Open), numberFormat, dateFormat, separator);
+
+      int pos = path.LastIndexOf('\\');
+      if (pos < 0)
+        regData.Name = path;
+      else {
+        pos++;
+        regData.Name = path.Substring(pos, path.Length - pos);
+      }
+      return regData;
+    }
+
+    protected IRegressionProblemData LoadData(Stream stream, NumberFormatInfo numberFormat, DateTimeFormatInfo dateFormat, char separator) {
+      TableFileParser csvFileParser = new TableFileParser();
+
+      csvFileParser.Parse(stream, numberFormat, dateFormat, separator);
+
+      Dataset dataset = new Dataset(csvFileParser.VariableNames, csvFileParser.Values);
+      string targetVar = csvFileParser.VariableNames.Last();
+      IEnumerable<string> allowedInputVars = csvFileParser.VariableNames.Where(x => !x.Equals(targetVar));
+
+      RegressionProblemData regData = new RegressionProblemData(dataset, allowedInputVars, targetVar);
+
+      int trainingPartEnd = csvFileParser.Rows * 2 / 3;
+      regData.TrainingPartition.Start = 0;
+      regData.TrainingPartition.End = trainingPartEnd;
+      regData.TestPartition.Start = trainingPartEnd;
+      regData.TestPartition.End = csvFileParser.Rows;
+
+      return regData;
+    }
+
+    public void SaveData(IRegressionProblemData instance, string path) {
+      StringBuilder strBuilder = new StringBuilder();
+
+      foreach (var variable in instance.InputVariables) {
+        strBuilder.Append(variable + ";");
+      }
+      strBuilder.Remove(strBuilder.Length - 1, 1);
+      strBuilder.AppendLine();
+
+      Dataset dataset = instance.Dataset;
+
+      for (int i = 0; i < dataset.Rows; i++) {
+        for (int j = 0; j < dataset.Columns; j++) {
+          strBuilder.Append(dataset.GetValue(i, j) + ";");
+        }
+        strBuilder.Remove(strBuilder.Length - 1, 1);
+        strBuilder.AppendLine();
+      }
+
+      using (StreamWriter writer = new StreamWriter(path)) {
+        writer.Write(strBuilder);
+      }
+    }
+
+    public abstract IEnumerable<IDataDescriptor> GetDataDescriptors();
+    public abstract IRegressionProblemData LoadData(IDataDescriptor descriptor);
+
+    public abstract string Name { get; }
+    public abstract string Description { get; }
+    public abstract Uri WebLink { get; }
+    public abstract string ReferencePublication { get; }
+  }
+}
Index: /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/ResourceRegressionDataDescriptor.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/ResourceRegressionDataDescriptor.cs	(revision 7830)
+++ /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/ResourceRegressionDataDescriptor.cs	(revision 7830)
@@ -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
+
+
+namespace HeuristicLab.Problems.Instances.Regression {
+  internal class ResourceRegressionDataDescriptor : IDataDescriptor {
+    public string Name { get; internal set; }
+    public string Description { get; internal set; }
+
+    internal string ResourceName { get; set; }
+    internal ResourceRegressionDataDescriptor(string name, string description, string resourceName) {
+      Name = name;
+      Description = description;
+      ResourceName = resourceName;
+    }
+  }
+}
Index: /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/ResourceRegressionInstanceProvider.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/ResourceRegressionInstanceProvider.cs	(revision 7830)
+++ /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/ResourceRegressionInstanceProvider.cs	(revision 7830)
@@ -0,0 +1,82 @@
+﻿#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.Globalization;
+using System.IO;
+using System.Linq;
+using System.Reflection;
+using System.Text.RegularExpressions;
+using HeuristicLab.Problems.DataAnalysis;
+using ICSharpCode.SharpZipLib.Zip;
+
+namespace HeuristicLab.Problems.Instances.Regression {
+  public abstract class ResourceRegressionInstanceProvider : RegressionInstanceProvider {
+
+    protected abstract string FileName { get; }
+
+    public override IEnumerable<IDataDescriptor> GetDataDescriptors() {
+      var solutionsArchiveName = GetResourceName(FileName + @"\.zip");
+      if (!String.IsNullOrEmpty(solutionsArchiveName)) {
+        using (var solutionsZipFile = new ZipInputStream(GetType().Assembly.GetManifestResourceStream(solutionsArchiveName))) {
+          IList<string> entries = new List<string>();
+          ZipEntry curEntry;
+          while ((curEntry = solutionsZipFile.GetNextEntry()) != null) {
+            entries.Add(curEntry.Name);
+          }
+          foreach (var entry in entries.OrderBy(x => x)) {
+            yield return new ResourceRegressionDataDescriptor(Path.GetFileNameWithoutExtension(entry), Description, entry);
+          }
+        }
+      }
+    }
+
+    public override IRegressionProblemData LoadData(IDataDescriptor id) {
+      var descriptor = (ResourceRegressionDataDescriptor)id;
+
+      var instanceArchiveName = GetResourceName(FileName + @"\.zip");
+      using (var instancesZipFile = new ZipFile(GetType().Assembly.GetManifestResourceStream(instanceArchiveName))) {
+        var entry = instancesZipFile.GetEntry(descriptor.ResourceName);
+        NumberFormatInfo numberFormat;
+        DateTimeFormatInfo dateFormat;
+        char separator;
+        using (Stream stream = instancesZipFile.GetInputStream(entry)) {
+          TableFileParser.DetermineFileFormat(stream, out numberFormat, out dateFormat, out separator);
+        }
+
+        IRegressionProblemData regData;
+        using (Stream stream = instancesZipFile.GetInputStream(entry)) {
+          regData = LoadData(stream, numberFormat, dateFormat, separator);
+        }
+
+        regData.Name = descriptor.Name;
+        regData.Description = descriptor.Description;
+        return regData;
+      }
+    }
+
+    protected virtual string GetResourceName(string fileName) {
+      return Assembly.GetExecutingAssembly().GetManifestResourceNames()
+              .Where(x => Regex.Match(x, @".*\.Data\." + fileName).Success).SingleOrDefault();
+    }
+  }
+}
Index: /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/ValueGenerator.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/ValueGenerator.cs	(revision 7830)
+++ /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/ValueGenerator.cs	(revision 7830)
@@ -0,0 +1,146 @@
+﻿#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;
+using HeuristicLab.Random;
+
+namespace HeuristicLab.Problems.Instances.Regression {
+  public static class ValueGenerator {
+    private static FastRandom rand = new FastRandom();
+
+    public static IEnumerable<double> GenerateSteps(double start, double end, double stepWidth) {
+      int steps = (int)Math.Round(((end - start) / stepWidth) + 1);
+      for (int i = 0; i < steps; i++)
+        yield return start + i * stepWidth;
+    }
+
+    public static IEnumerable<double> GenerateUniformDistributedValues(int amount, double start, double end) {
+      for (int i = 0; i < amount; i++)
+        yield return rand.NextDouble() * (end - start) + start;
+    }
+
+    public static IEnumerable<double> GenerateNormalDistributedValues(int amount, double mu, double sigma) {
+      for (int i = 0; i < amount; i++)
+        yield return NormalDistributedRandom.NextDouble(rand, mu, sigma);
+    }
+
+    // iterative approach
+    public static IEnumerable<IEnumerable<double>> GenerateAllCombinationsOfValuesInLists(List<List<double>> lists) {
+      List<List<double>> allCombinations = new List<List<double>>();
+      if (lists.Count < 1) {
+        return allCombinations;
+      }
+
+      List<IEnumerator<double>> enumerators = new List<IEnumerator<double>>();
+      foreach (var list in lists) {
+        allCombinations.Add(new List<double>());
+        enumerators.Add(list.GetEnumerator());
+      }
+
+      bool finished = !enumerators.All(x => x.MoveNext());
+
+      while (!finished) {
+        GetCurrentCombination(enumerators, allCombinations);
+        finished = MoveNext(enumerators, lists);
+      }
+      return allCombinations;
+    }
+
+    private static bool MoveNext(List<IEnumerator<double>> enumerators, List<List<double>> lists) {
+      int cur = enumerators.Count - 1;
+      while (cur >= 0 && !enumerators[cur].MoveNext()) {
+        enumerators[cur] = lists[cur].GetEnumerator();
+        enumerators[cur].MoveNext();
+        cur--;
+      }
+      return cur < 0;
+    }
+
+    private static void GetCurrentCombination(List<IEnumerator<double>> enumerators, List<List<double>> allCombinations) {
+      for (int i = 0; i < enumerators.Count(); i++) {
+        allCombinations[i].Add(enumerators[i].Current);
+      }
+    }
+
+    //recursive approach
+    /*public static IEnumerable<IEnumerable<double>> GenerateAllCombinationsOfValuesInLists(List<List<double>> lists) {
+      int cur = 0;
+      List<double> curCombination = new List<double>();
+      List<List<double>> allCombinations = new List<List<double>>();
+      for (int i = 0; i < lists.Count; i++) {
+        allCombinations.Add(new List<double>());
+      }
+      if (lists.Count() > cur) {
+        foreach (var item in lists[cur]) {
+          curCombination.Clear();
+          curCombination.Add(item);
+          GetCombination(lists, cur + 1, curCombination, allCombinations);
+        }
+      }
+      return allCombinations;
+    }
+
+    private static void GetCombination(List<List<double>> lists, int cur, List<double> curCombinations, List<List<double>> allCombinations) {
+      if (lists.Count > cur) {
+        foreach (var item in lists[cur]) {
+          if (curCombinations.Count > cur) {
+            curCombinations.RemoveAt(cur);
+          }
+          curCombinations.Add(item);
+          GetCombination(lists, cur + 1, curCombinations, allCombinations);
+        }
+      } else {
+        for (int i = 0; i < curCombinations.Count; i++) {
+          allCombinations[i].Add(curCombinations[i]);
+        }
+      }
+    }         */
+
+    //original
+    /*public static IEnumerable<IEnumerable<double>> GenerateAllCombinationsOfValuesInLists(List<List<double>> sets) {
+
+      var combinations = new List<List<double>>();
+
+      foreach (var value in sets[0])
+        combinations.Add(new List<double> { value });
+
+      foreach (var set in sets.Skip(1))
+        combinations = AddListToCombinations(combinations, set);
+
+      IEnumerable<IEnumerable<double>> res = (from i in Enumerable.Range(0, sets.Count)
+                                              select (from list in combinations
+                                                      select list.ElementAt(i)));
+
+      return res;
+    }
+
+    private static List<List<double>> AddListToCombinations
+         (List<List<double>> combinations, List<double> set) {
+      var newCombinations = from value in set
+                            from combination in combinations
+                            select new List<double>(combination) { value };
+
+      return newCombinations.ToList();
+    }    */
+  }
+}
Index: /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Various/BreimanOne.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Various/BreimanOne.cs	(revision 7830)
+++ /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Various/BreimanOne.cs	(revision 7830)
@@ -0,0 +1,89 @@
+﻿#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;
+using HeuristicLab.Random;
+
+namespace HeuristicLab.Problems.Instances.Regression {
+  public class BreimanOne : ArtificialRegressionDataDescriptor {
+
+    public override string Name { get { return "Breiman - I"; } }
+    public override string Description {
+      get {
+        return "Paper: Classification and Regression Trees" + Environment.NewLine
+        + "Authors: Leo Breiman, Jerome H. Friedman, Charles J. Stone and R. A. Olson";
+      }
+    }
+    protected override string TargetVariable { get { return "Y"; } }
+    protected override string[] InputVariables { get { return new string[] { "X1", "X2", "X3", "X4", "X5", "X6", "X7", "X8", "X9", "X10", "Y" }; } }
+    protected override string[] AllowedInputVariables { get { return new string[] { "X1", "X2", "X3", "X4", "X5", "X6", "X7", "X8", "X9", "X10" }; } }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return 5001; } }
+    protected override int TestPartitionStart { get { return 5001; } }
+    protected override int TestPartitionEnd { get { return 10001; } }
+
+    protected static FastRandom rand = new FastRandom();
+
+    protected override List<List<double>> GenerateValues() {
+      List<List<double>> data = new List<List<double>>();
+      List<int> values = new List<int>() { -1, 1 };
+      data.Add(BreimanOne.GenerateUniformIntegerDistribution(values, TestPartitionEnd));
+      values.Add(0);
+      for (int i = 0; i < AllowedInputVariables.Count() - 1; i++) {
+        data.Add(BreimanOne.GenerateUniformIntegerDistribution(values, TestPartitionEnd));
+      }
+
+      double x1, x2, x3, x4, x5, x6, x7;
+      double f;
+      List<double> results = new List<double>();
+      double sigma = Math.Sqrt(2);
+      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];
+        x6 = data[5][i];
+        x7 = data[6][i];
+
+        if (x1.Equals(1))
+          f = 3 + 3 * x2 + 2 * x3 + x4;
+        else
+          f = -3 + 3 * x5 + 2 * x6 + x7;
+
+        results.Add(f + NormalDistributedRandom.NextDouble(rand, 0, sigma));
+      }
+      data.Add(results);
+
+      return data;
+    }
+
+    public static List<double> GenerateUniformIntegerDistribution(List<int> classes, int amount) {
+      List<double> values = new List<double>();
+      for (int i = 0; i < amount; i++) {
+        values.Add(classes[rand.Next(0, classes.Count)]);
+      }
+      return values;
+    }
+  }
+}
Index: /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Various/PolyTen.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Various/PolyTen.cs	(revision 7830)
+++ /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Various/PolyTen.cs	(revision 7830)
@@ -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 PolyTen : ArtificialRegressionDataDescriptor {
+
+    public override string Name { get { return "Ploy-10 y = X1*X2 + X3*X4 + X5*X6 + X1*X7*X9 + X3*X6*X10"; } }
+    public override string Description {
+      get {
+        return "Paper: A Simple but Theoretically-motivated Method to Control Bloat in Genetic Programming" + Environment.NewLine
+        + "Authors: Riccardo Poli" + Environment.NewLine
+        + "Function: y = X1*X2 + X3*X4 + X5*X6 + X1*X7*X9 + X3*X6*X10" + Environment.NewLine
+        + "Terminal set: x1, x2, x3, x4, x5, x6, x7, x8, x9, x10" + Environment.NewLine
+        + "Fitness was minus the sum of the absolute values of the errors made over 50 fitness cases. "
+        + "These were generated by randomly assigning values to the variables xiin the range [1, 1].";
+      }
+    }
+    protected override string TargetVariable { get { return "Y"; } }
+    protected override string[] InputVariables { get { return new string[] { "X1", "X2", "X3", "X4", "X5", "X6", "X7", "X8", "X9", "X10", "Y" }; } }
+    protected override string[] AllowedInputVariables { get { return new string[] { "X1", "X2", "X3", "X4", "X5", "X6", "X7", "X8", "X9", "X10" }; } }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return 250; } }
+    protected override int TestPartitionStart { get { return 250; } }
+    protected override int TestPartitionEnd { get { return 500; } }
+
+    protected override List<List<double>> GenerateValues() {
+      List<List<double>> data = new List<List<double>>();
+      for (int i = 0; i < AllowedInputVariables.Count(); i++) {
+        data.Add(ValueGenerator.GenerateUniformDistributedValues(TestPartitionEnd, -1, 1).ToList());
+      }
+
+      double x1, x2, x3, x4, x5, x6, x7, x8, x9, x10;
+      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];
+        x6 = data[5][i];
+        x7 = data[6][i];
+        x8 = data[7][i];
+        x9 = data[8][i];
+        x10 = data[9][i];
+        results.Add(x1 * x2 + x3 * x4 + x5 * x6 + x1 * x7 * x9 + x3 * x6 * x10);
+      }
+      data.Add(results);
+
+      return data;
+    }
+  }
+}
Index: /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Various/SpatialCoevolution.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Various/SpatialCoevolution.cs	(revision 7830)
+++ /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Various/SpatialCoevolution.cs	(revision 7830)
@@ -0,0 +1,75 @@
+﻿#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 SpatialCoevolution : ArtificialRegressionDataDescriptor {
+
+    public override string Name { get { return "Spatial co-evolution F(x,y) = 1/(1+power(x,-4)) + 1/(1+pow(y,-4))"; } }
+    public override string Description {
+      get {
+        return "Paper: Evolutionary consequences of coevolving targets" + Environment.NewLine
+        + "Authors: Ludo Pagie and Paulien Hogeweg" + Environment.NewLine
+        + "Function: F(x,y) = 1/(1+power(x,-4)) + 1/(1+pow(y,-4))" + Environment.NewLine
+        + "Terminal set: x, y" + Environment.NewLine
+        + "The fitness of a solution is defined as the mean of the absolute differences between "
+        + "the target function and the solution over all problems on the basis of which it is evaluated. "
+        + "A solution is considered completely ’correct’ if, for all 676 problems in the ’complete’ "
+        + "problem set used in the static evaluation scheme, the absolute difference between "
+        + "solution and target function is less than 0:01 (this is a so-called hit).";
+      }
+    }
+    protected override string TargetVariable { get { return "F"; } }
+    protected override string[] InputVariables { get { return new string[] { "X", "Y", "F" }; } }
+    protected override string[] AllowedInputVariables { get { return new string[] { "X", "Y" }; } }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return 250; } }
+    protected override int TestPartitionStart { get { return 250; } }
+    protected override int TestPartitionEnd { get { return 500; } }
+
+    protected override List<List<double>> GenerateValues() {
+      List<List<double>> data = new List<List<double>>();
+
+      List<double> oneVariableTestData = ValueGenerator.GenerateSteps(-5, 5, 0.4).ToList();
+      List<List<double>> testData = new List<List<double>>() { oneVariableTestData, oneVariableTestData };
+      var combinations = ValueGenerator.GenerateAllCombinationsOfValuesInLists(testData).ToList<IEnumerable<double>>();
+
+      for (int i = 0; i < AllowedInputVariables.Count(); i++) {
+        data.Add(ValueGenerator.GenerateUniformDistributedValues(1000, -5, 5).ToList());
+        data[i].AddRange(combinations[i]);
+      }
+
+      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(1 / (1 + Math.Pow(x, -4)) + 1 / (1 + Math.Pow(y, -4)));
+      }
+      data.Add(results);
+
+      return data;
+    }
+  }
+}
Index: /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Various/VariousInstanceProvider.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Various/VariousInstanceProvider.cs	(revision 7830)
+++ /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Various/VariousInstanceProvider.cs	(revision 7830)
@@ -0,0 +1,48 @@
+﻿#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 VariousInstanceProvider : ArtificialRegressionInstanceProvider {
+    public override string Name {
+      get { return "Various Benchmark Problems"; }
+    }
+    public override string Description {
+      get { return ""; }
+    }
+    public override Uri WebLink {
+      get { return null; }
+    }
+    public override string ReferencePublication {
+      get { return ""; }
+    }
+
+    public override IEnumerable<IDataDescriptor> GetDataDescriptors() {
+      List<IDataDescriptor> descriptorList = new List<IDataDescriptor>();
+      descriptorList.Add(new BreimanOne());
+      descriptorList.Add(new PolyTen());
+      descriptorList.Add(new SpatialCoevolution());
+      return descriptorList;
+    }
+  }
+}
Index: /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Vladislavleva/KotanchekFunction.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Vladislavleva/KotanchekFunction.cs	(revision 7830)
+++ /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Vladislavleva/KotanchekFunction.cs	(revision 7830)
@@ -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 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 string[] InputVariables { get { return new string[] { "X1", "X2", "Y" }; } }
+    protected override string[] AllowedInputVariables { get { return new 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 List<List<double>> GenerateValues() {
+      List<List<double>> data = new List<List<double>>();
+
+      List<double> oneVariableTestData = ValueGenerator.GenerateSteps(-0.2, 4.2, 0.1).ToList();
+      List<List<double>> testData = new List<List<double>>() { oneVariableTestData, oneVariableTestData };
+      var combinations = ValueGenerator.GenerateAllCombinationsOfValuesInLists(testData).ToList<IEnumerable<double>>();
+      for (int i = 0; i < AllowedInputVariables.Count(); i++) {
+        data.Add(ValueGenerator.GenerateUniformDistributedValues(1000, 0.3, 4).ToList());
+        data[i].AddRange(combinations[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 data;
+    }
+  }
+}
Index: /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Vladislavleva/RationalPolynomialThreeDimensional.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Vladislavleva/RationalPolynomialThreeDimensional.cs	(revision 7830)
+++ /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Vladislavleva/RationalPolynomialThreeDimensional.cs	(revision 7830)
@@ -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 string[] InputVariables { get { return new string[] { "X1", "X2", "X3", "Y" }; } }
+    protected override string[] AllowedInputVariables { get { return new 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 List<List<double>> GenerateValues() {
+      List<List<double>> data = new List<List<double>>();
+
+      int amountOfPoints = 1000;
+      data.Add(ValueGenerator.GenerateUniformDistributedValues(amountOfPoints, 0.05, 2).ToList());
+      data.Add(ValueGenerator.GenerateUniformDistributedValues(amountOfPoints, 1, 2).ToList());
+      data.Add(ValueGenerator.GenerateUniformDistributedValues(amountOfPoints, 0.05, 2).ToList());
+
+      List<List<double>> testData = new List<List<double>>() { 
+        ValueGenerator.GenerateSteps(-0.05, 2.1, 0.15).ToList(), 
+        ValueGenerator.GenerateSteps( 0.95, 2.05, 0.1).ToList(),
+        ValueGenerator.GenerateSteps(-0.05, 2.1, 0.15).ToList()
+      };
+
+      var combinations = ValueGenerator.GenerateAllCombinationsOfValuesInLists(testData).ToList<IEnumerable<double>>();
+
+      for (int i = 0; i < AllowedInputVariables.Count(); i++) {
+        data[i].AddRange(combinations[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 data;
+    }
+  }
+}
Index: /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Vladislavleva/RationalPolynomialTwoDimensional.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Vladislavleva/RationalPolynomialTwoDimensional.cs	(revision 7830)
+++ /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Vladislavleva/RationalPolynomialTwoDimensional.cs	(revision 7830)
@@ -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 string[] InputVariables { get { return new string[] { "X1", "X2", "Y" }; } }
+    protected override string[] AllowedInputVariables { get { return new 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 List<List<double>> GenerateValues() {
+      List<List<double>> data = new List<List<double>>();
+
+      List<double> oneVariableTestData = ValueGenerator.GenerateSteps(-0.25, 6.35, 0.2).ToList();
+      List<List<double>> testData = new List<List<double>>() { oneVariableTestData, oneVariableTestData };
+
+      var combinations = ValueGenerator.GenerateAllCombinationsOfValuesInLists(testData).ToList<IEnumerable<double>>();
+      for (int i = 0; i < AllowedInputVariables.Count(); i++) {
+        data.Add(ValueGenerator.GenerateUniformDistributedValues(1000, 0.05, 6.05).ToList());
+        data[i].AddRange(combinations[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.Pow(x1 - 3, 4) + Math.Pow(x2 - 3, 3) - x2 + 3) / (Math.Pow(x2 - 2, 4) + 10));
+      }
+      data.Add(results);
+
+      return data;
+    }
+  }
+}
Index: /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Vladislavleva/RippleFunction.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Vladislavleva/RippleFunction.cs	(revision 7830)
+++ /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Vladislavleva/RippleFunction.cs	(revision 7830)
@@ -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 string[] InputVariables { get { return new string[] { "X1", "X2", "Y" }; } }
+    protected override string[] AllowedInputVariables { get { return new 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 List<List<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).ToList());
+      }
+
+      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 data;
+    }
+  }
+}
Index: /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Vladislavleva/SalutowiczFunctionOneDimensional.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Vladislavleva/SalutowiczFunctionOneDimensional.cs	(revision 7830)
+++ /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Vladislavleva/SalutowiczFunctionOneDimensional.cs	(revision 7830)
@@ -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 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 string[] InputVariables { get { return new string[] { "X", "Y" }; } }
+    protected override string[] AllowedInputVariables { get { return new 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 List<List<double>> GenerateValues() {
+      List<List<double>> data = new List<List<double>>();
+      data.Add(ValueGenerator.GenerateSteps(0.05, 10, 0.1).ToList());
+      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 data;
+    }
+  }
+}
Index: /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Vladislavleva/SalutowiczFunctionTwoDimensional.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Vladislavleva/SalutowiczFunctionTwoDimensional.cs	(revision 7830)
+++ /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Vladislavleva/SalutowiczFunctionTwoDimensional.cs	(revision 7830)
@@ -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 string[] InputVariables { get { return new string[] { "X1", "X2", "Y" }; } }
+    protected override string[] AllowedInputVariables { get { return new 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 List<List<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).ToList(),
+        ValueGenerator.GenerateSteps(0.05, 10.05, 2).ToList()
+      };
+
+      List<List<double>> testData = new List<List<double>>() {
+        ValueGenerator.GenerateSteps(-0.5, 10.5, 0.1).ToList(),
+        ValueGenerator.GenerateSteps(-0.5, 10.5, 0.5).ToList()
+      };
+
+      var trainingComb = ValueGenerator.GenerateAllCombinationsOfValuesInLists(trainingData).ToList<IEnumerable<double>>();
+      var testComb = ValueGenerator.GenerateAllCombinationsOfValuesInLists(testData).ToList<IEnumerable<double>>();
+
+      for (int i = 0; i < AllowedInputVariables.Count(); i++) {
+        data.Add(trainingComb[i].ToList());
+        data[i].AddRange(testComb[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 data;
+    }
+  }
+}
Index: /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Vladislavleva/SineCosineFunction.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Vladislavleva/SineCosineFunction.cs	(revision 7830)
+++ /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Vladislavleva/SineCosineFunction.cs	(revision 7830)
@@ -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 string[] InputVariables { get { return new string[] { "X1", "X2", "Y" }; } }
+    protected override string[] AllowedInputVariables { get { return new 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 List<List<double>> GenerateValues() {
+      List<List<double>> data = new List<List<double>>();
+      List<double> oneVariableTestData = ValueGenerator.GenerateSteps(-0.05, 6.05, 0.02).ToList();
+      List<List<double>> testData = new List<List<double>>() { oneVariableTestData, oneVariableTestData };
+      var combinations = ValueGenerator.GenerateAllCombinationsOfValuesInLists(testData).ToList<IEnumerable<double>>();
+
+      for (int i = 0; i < AllowedInputVariables.Count(); i++) {
+        data.Add(ValueGenerator.GenerateUniformDistributedValues(500, 0.1, 5.9).ToList());
+        data[i].AddRange(combinations[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 data;
+    }
+  }
+}
Index: /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Vladislavleva/UnwrappedBallFunctionFiveDimensional.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Vladislavleva/UnwrappedBallFunctionFiveDimensional.cs	(revision 7830)
+++ /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Vladislavleva/UnwrappedBallFunctionFiveDimensional.cs	(revision 7830)
@@ -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 string[] InputVariables { get { return new string[] { "X1", "X2", "X3", "X4", "X5", "Y" }; } }
+    protected override string[] AllowedInputVariables { get { return new 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 List<List<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).ToList());
+        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 data;
+    }
+  }
+}
Index: /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Vladislavleva/VladislavlevaInstanceProvider.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Vladislavleva/VladislavlevaInstanceProvider.cs	(revision 7830)
+++ /trunk/sources/HeuristicLab.Problems.Instances.Regression/3.3/Vladislavleva/VladislavlevaInstanceProvider.cs	(revision 7830)
@@ -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: /trunk/sources/HeuristicLab.Problems.Instances.TSPLIB.Views/3.3/HeuristicLab.Problems.Instances.TSPLIB.Views-3.3.csproj
===================================================================
--- /trunk/sources/HeuristicLab.Problems.Instances.TSPLIB.Views/3.3/HeuristicLab.Problems.Instances.TSPLIB.Views-3.3.csproj	(revision 7829)
+++ /trunk/sources/HeuristicLab.Problems.Instances.TSPLIB.Views/3.3/HeuristicLab.Problems.Instances.TSPLIB.Views-3.3.csproj	(revision 7830)
@@ -169,8 +169,7 @@
       <Private>False</Private>
     </ProjectReference>
-    <ProjectReference Include="..\..\HeuristicLab.Problems.Instances.Views\3.4\HeuristicLab.Problems.Instances.Views-3.4.csproj">
+    <ProjectReference Include="..\..\HeuristicLab.Problems.Instances.Views\3.3\HeuristicLab.Problems.Instances.Views-3.3.csproj">
       <Project>{B1BA398F-953F-4C3A-B07B-1E5E17A27DD9}</Project>
-      <Name>HeuristicLab.Problems.Instances.Views-3.4</Name>
-      <Private>False</Private>
+      <Name>HeuristicLab.Problems.Instances.Views-3.3</Name>
     </ProjectReference>
     <ProjectReference Include="..\..\HeuristicLab.Problems.Instances\3.3\HeuristicLab.Problems.Instances-3.3.csproj">
Index: /trunk/sources/HeuristicLab.Problems.Instances.TSPLIB.Views/3.3/Plugin.cs.frame
===================================================================
--- /trunk/sources/HeuristicLab.Problems.Instances.TSPLIB.Views/3.3/Plugin.cs.frame	(revision 7829)
+++ /trunk/sources/HeuristicLab.Problems.Instances.TSPLIB.Views/3.3/Plugin.cs.frame	(revision 7830)
@@ -30,5 +30,5 @@
   [PluginDependency("HeuristicLab.Problems.Instances", "3.3")]
   [PluginDependency("HeuristicLab.Problems.Instances.TSPLIB", "3.3")]
-  [PluginDependency("HeuristicLab.Problems.Instances.Views", "3.4")]
+  [PluginDependency("HeuristicLab.Problems.Instances.Views", "3.3")]
   public class HeuristicLabProblemsInstancesTSPLIBViewsPlugin : PluginBase {
   }
Index: /trunk/sources/HeuristicLab.Problems.Instances.Views/3.3/HeuristicLab.Problems.Instances.Views-3.3.csproj
===================================================================
--- /trunk/sources/HeuristicLab.Problems.Instances.Views/3.3/HeuristicLab.Problems.Instances.Views-3.3.csproj	(revision 7830)
+++ /trunk/sources/HeuristicLab.Problems.Instances.Views/3.3/HeuristicLab.Problems.Instances.Views-3.3.csproj	(revision 7830)
@@ -0,0 +1,126 @@
+﻿<?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)' == '' ">AnyCPU</Platform>
+    <ProductVersion>8.0.30703</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{B1BA398F-953F-4C3A-B07B-1E5E17A27DD9}</ProjectGuid>
+    <OutputType>Library</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>HeuristicLab.Problems.Instances.Views</RootNamespace>
+    <AssemblyName>HeuristicLab.Problems.Instances.Views-3.3</AssemblyName>
+    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
+    <FileAlignment>512</FileAlignment>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>..\..\bin\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <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>
+  <ItemGroup>
+    <Reference Include="System" />
+    <Reference Include="System.Core" />
+    <Reference Include="System.Drawing" />
+    <Reference Include="System.Windows.Forms" />
+    <Reference Include="System.Xml.Linq" />
+    <Reference Include="System.Data.DataSetExtensions" />
+    <Reference Include="Microsoft.CSharp" />
+    <Reference Include="System.Data" />
+    <Reference Include="System.Xml" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="ProblemInstanceProviderView.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Include="ProblemInstanceProviderView.Designer.cs">
+      <DependentUpon>ProblemInstanceProviderView.cs</DependentUpon>
+    </Compile>
+    <Compile Include="Plugin.cs" />
+    <Compile Include="ProblemInstanceConsumerView.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Include="ProblemInstanceConsumerView.Designer.cs">
+      <DependentUpon>ProblemInstanceConsumerView.cs</DependentUpon>
+    </Compile>
+    <Compile Include="ProblemInstanceProviderViewGeneric.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Include="ProblemInstanceProviderViewGeneric.Designer.cs">
+      <DependentUpon>ProblemInstanceProviderViewGeneric.cs</DependentUpon>
+    </Compile>
+    <Compile Include="Properties\AssemblyInfo.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="HeuristicLab.snk" />
+    <None Include="Plugin.cs.frame" />
+    <None Include="Properties\AssemblyInfo.cs.frame" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\..\HeuristicLab.Common.Resources\3.3\HeuristicLab.Common.Resources-3.3.csproj">
+      <Project>{0E27A536-1C4A-4624-A65E-DC4F4F23E3E1}</Project>
+      <Name>HeuristicLab.Common.Resources-3.3</Name>
+      <Private>False</Private>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Common\3.3\HeuristicLab.Common-3.3.csproj">
+      <Project>{A9AD58B9-3EF9-4CC1-97E5-8D909039FF5C}</Project>
+      <Name>HeuristicLab.Common-3.3</Name>
+      <Private>False</Private>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.MainForm.WindowsForms\3.3\HeuristicLab.MainForm.WindowsForms-3.3.csproj">
+      <Project>{AB687BBE-1BFE-476B-906D-44237135431D}</Project>
+      <Name>HeuristicLab.MainForm.WindowsForms-3.3</Name>
+      <Private>False</Private>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.MainForm\3.3\HeuristicLab.MainForm-3.3.csproj">
+      <Project>{3BD61258-31DA-4B09-89C0-4F71FEF5F05A}</Project>
+      <Name>HeuristicLab.MainForm-3.3</Name>
+      <Private>False</Private>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.PluginInfrastructure\3.3\HeuristicLab.PluginInfrastructure-3.3.csproj">
+      <Project>{94186A6A-5176-4402-AE83-886557B53CCA}</Project>
+      <Name>HeuristicLab.PluginInfrastructure-3.3</Name>
+      <Private>False</Private>
+    </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>
+  <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: /trunk/sources/HeuristicLab.Problems.Instances.Views/3.3/Plugin.cs.frame
===================================================================
--- /trunk/sources/HeuristicLab.Problems.Instances.Views/3.3/Plugin.cs.frame	(revision 7830)
+++ /trunk/sources/HeuristicLab.Problems.Instances.Views/3.3/Plugin.cs.frame	(revision 7830)
@@ -0,0 +1,34 @@
+﻿#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.3.6.$WCREV$")]
+  [PluginFile("HeuristicLab.Problems.Instances.Views-3.3.dll", PluginFileType.Assembly)]
+  [PluginDependency("HeuristicLab.Common", "3.3")]
+  [PluginDependency("HeuristicLab.Common.Resources", "3.3")]
+  [PluginDependency("HeuristicLab.MainForm", "3.3")]
+  [PluginDependency("HeuristicLab.MainForm.WindowsForms", "3.3")]
+  [PluginDependency("HeuristicLab.Problems.Instances", "3.3")]
+  public class HeuristicLabProblemsInstancesViewsPlugin : PluginBase {
+  }
+}
Index: /trunk/sources/HeuristicLab.Problems.Instances.Views/3.3/ProblemInstanceConsumerView.Designer.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.Instances.Views/3.3/ProblemInstanceConsumerView.Designer.cs	(revision 7830)
+++ /trunk/sources/HeuristicLab.Problems.Instances.Views/3.3/ProblemInstanceConsumerView.Designer.cs	(revision 7830)
@@ -0,0 +1,122 @@
+﻿#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.toolTip = new System.Windows.Forms.ToolTip(this.components);
+      this.SuspendLayout();
+      // 
+      // problemInstanceProviderComboBox
+      // 
+      this.problemInstanceProviderComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
+      this.problemInstanceProviderComboBox.FormattingEnabled = true;
+      this.problemInstanceProviderComboBox.Location = new System.Drawing.Point(50, 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);
+      // 
+      // 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(3, 3);
+      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(258, 0);
+      this.problemInstanceProviderViewHost.Name = "problemInstanceProviderViewHost";
+      this.problemInstanceProviderViewHost.ReadOnly = false;
+      this.problemInstanceProviderViewHost.Size = new System.Drawing.Size(433, 22);
+      this.problemInstanceProviderViewHost.TabIndex = 15;
+      this.problemInstanceProviderViewHost.ViewsLabelVisible = false;
+      this.problemInstanceProviderViewHost.ViewType = null;
+      // 
+      // ProblemInstanceConsumerView
+      // 
+      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.libraryInfoButton);
+      this.Controls.Add(this.libraryLabel);
+      this.Name = "ProblemInstanceConsumerView";
+      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;
+    private System.Windows.Forms.ToolTip toolTip;
+  }
+}
Index: /trunk/sources/HeuristicLab.Problems.Instances.Views/3.3/ProblemInstanceConsumerView.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.Instances.Views/3.3/ProblemInstanceConsumerView.cs	(revision 7830)
+++ /trunk/sources/HeuristicLab.Problems.Instances.Views/3.3/ProblemInstanceConsumerView.cs	(revision 7830)
@@ -0,0 +1,154 @@
+﻿#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 = false)]
+  public sealed partial class ProblemInstanceConsumerView : AsynchronousContentView {
+
+    public new IProblemInstanceConsumer Content {
+      get { return (IProblemInstanceConsumer)base.Content; }
+      set { base.Content = value; }
+    }
+
+    public IProblemInstanceProvider SelectedProvider {
+      get;
+      private set;
+    }
+
+    public IEnumerable<IProblemInstanceProvider> ProblemInstanceProviders {
+      get;
+      private set;
+    }
+
+    public ProblemInstanceConsumerView() {
+      InitializeComponent();
+      libraryInfoButton.Text = String.Empty;
+      libraryInfoButton.Image = VSImageLibrary.Internet;
+    }
+
+    protected override void OnContentChanged() {
+      base.OnContentChanged();
+      if (Content == null) {
+        ProblemInstanceProviders = null;
+        problemInstanceProviderComboBox.DataSource = null;
+      } else {
+        problemInstanceProviderComboBox.DisplayMember = "Name";
+        ProblemInstanceProviders = GetProblemInstanceProviders();
+        problemInstanceProviderComboBox.DataSource = ProblemInstanceProviders.OrderBy(x => x.Name).ToList();
+      }
+      SetEnabledStateOfControls();
+    }
+
+    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;
+        }
+      }
+    }
+
+    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) {
+        SelectedProvider = (IProblemInstanceProvider)problemInstanceProviderComboBox.SelectedItem;
+        problemInstanceProviderViewHost.Content = SelectedProvider;
+        ProblemInstanceProviderView view = (ProblemInstanceProviderView)problemInstanceProviderViewHost.ActiveView;
+        view.Consumer = Content;
+        if (CheckForIProblemInstanceExporter(Content)) {
+          view.Exporter = (IProblemInstanceExporter)Content;
+        }
+        SetTooltip();
+      } else {
+        SelectedProvider = null;
+      }
+
+      SetEnabledStateOfControls();
+    }
+
+    private bool CheckForIProblemInstanceExporter(IProblemInstanceConsumer content) {
+      return Content.GetType().GetInterfaces()
+                    .Any(x => x.Equals(typeof(IProblemInstanceExporter)));
+    }
+
+    private void libraryInfoButton_Click(object sender, EventArgs e) {
+      if (problemInstanceProviderComboBox.SelectedIndex >= 0) {
+        if (SelectedProvider != null && SelectedProvider.WebLink != null)
+          Process.Start(SelectedProvider.WebLink.ToString());
+      }
+    }
+
+    #region ToolTip
+    private 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.");
+    }
+
+    private 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;
+    }
+    #endregion
+  }
+}
Index: /trunk/sources/HeuristicLab.Problems.Instances.Views/3.3/ProblemInstanceProviderView.Designer.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.Instances.Views/3.3/ProblemInstanceProviderView.Designer.cs	(revision 7830)
+++ /trunk/sources/HeuristicLab.Problems.Instances.Views/3.3/ProblemInstanceProviderView.Designer.cs	(revision 7830)
@@ -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
+
+namespace HeuristicLab.Problems.Instances.Views {
+  partial class ProblemInstanceProviderView {
+    /// <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.SuspendLayout();
+      // 
+      // ProblemInstanceProviderView
+      // 
+      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+      this.Name = "ProblemInstanceProviderView";
+      this.Size = new System.Drawing.Size(694, 21);
+      this.ResumeLayout(false);
+
+    }
+
+    #endregion
+
+
+  }
+}
Index: /trunk/sources/HeuristicLab.Problems.Instances.Views/3.3/ProblemInstanceProviderView.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.Instances.Views/3.3/ProblemInstanceProviderView.cs	(revision 7830)
+++ /trunk/sources/HeuristicLab.Problems.Instances.Views/3.3/ProblemInstanceProviderView.cs	(revision 7830)
@@ -0,0 +1,44 @@
+﻿#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.Windows.Forms;
+using HeuristicLab.MainForm;
+using HeuristicLab.MainForm.WindowsForms;
+
+namespace HeuristicLab.Problems.Instances.Views {
+  [View("ProblemInstanceProviderView")]
+  [Content(typeof(IProblemInstanceProvider), IsDefaultView = false)]
+  public abstract partial class ProblemInstanceProviderView : AsynchronousContentView {
+
+    public new IProblemInstanceProvider Content {
+      get { return (IProblemInstanceProvider)base.Content; }
+      set { base.Content = value; }
+    }
+
+    public abstract IProblemInstanceConsumer Consumer { get; set; }
+
+    public abstract IProblemInstanceExporter Exporter { get; set; }
+
+    public ProblemInstanceProviderView() {
+      InitializeComponent();
+    }
+  }
+}
Index: /trunk/sources/HeuristicLab.Problems.Instances.Views/3.3/ProblemInstanceProviderViewGeneric.Designer.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.Instances.Views/3.3/ProblemInstanceProviderViewGeneric.Designer.cs	(revision 7830)
+++ /trunk/sources/HeuristicLab.Problems.Instances.Views/3.3/ProblemInstanceProviderViewGeneric.Designer.cs	(revision 7830)
@@ -0,0 +1,181 @@
+﻿#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 ProblemInstanceProviderViewGeneric<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.problemInstanceProviderSplitContainer = new System.Windows.Forms.SplitContainer();
+      ((System.ComponentModel.ISupportInitialize)(this.problemInstanceProviderSplitContainer)).BeginInit();
+      this.problemInstanceProviderSplitContainer.Panel1.SuspendLayout();
+      this.problemInstanceProviderSplitContainer.Panel2.SuspendLayout();
+      this.problemInstanceProviderSplitContainer.SuspendLayout();
+      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(604, 0);
+      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, 4);
+      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(60, 1);
+      this.instancesComboBox.Name = "instancesComboBox";
+      this.instancesComboBox.Size = new System.Drawing.Size(538, 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(636, 0);
+      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(-1, 0);
+      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...";
+      // 
+      // problemInstanceProviderSplitContainer
+      // 
+      this.problemInstanceProviderSplitContainer.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.problemInstanceProviderSplitContainer.FixedPanel = System.Windows.Forms.FixedPanel.Panel2;
+      this.problemInstanceProviderSplitContainer.IsSplitterFixed = true;
+      this.problemInstanceProviderSplitContainer.Location = new System.Drawing.Point(0, -1);
+      this.problemInstanceProviderSplitContainer.Name = "problemInstanceProviderSplitContainer";
+      // 
+      // problemInstanceProviderSplitContainer.Panel1
+      // 
+      this.problemInstanceProviderSplitContainer.Panel1.Controls.Add(this.instanceLabel);
+      this.problemInstanceProviderSplitContainer.Panel1.Controls.Add(this.instancesComboBox);
+      this.problemInstanceProviderSplitContainer.Panel1.Controls.Add(this.importButton);
+      this.problemInstanceProviderSplitContainer.Panel1.Controls.Add(this.loadButton);
+      // 
+      // problemInstanceProviderSplitContainer.Panel2
+      // 
+      this.problemInstanceProviderSplitContainer.Panel2.Controls.Add(this.exportButton);
+      this.problemInstanceProviderSplitContainer.Size = new System.Drawing.Size(694, 22);
+      this.problemInstanceProviderSplitContainer.SplitterDistance = 665;
+      this.problemInstanceProviderSplitContainer.TabIndex = 9;
+      // 
+      // ProblemInstanceProviderView
+      // 
+      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+      this.Controls.Add(this.problemInstanceProviderSplitContainer);
+      this.Name = "ProblemInstanceProviderView";
+      this.Size = new System.Drawing.Size(694, 21);
+      this.problemInstanceProviderSplitContainer.Panel1.ResumeLayout(false);
+      this.problemInstanceProviderSplitContainer.Panel1.PerformLayout();
+      this.problemInstanceProviderSplitContainer.Panel2.ResumeLayout(false);
+      ((System.ComponentModel.ISupportInitialize)(this.problemInstanceProviderSplitContainer)).EndInit();
+      this.problemInstanceProviderSplitContainer.ResumeLayout(false);
+      this.ResumeLayout(false);
+
+    }
+
+    #endregion
+
+    protected System.Windows.Forms.OpenFileDialog openFileDialog;
+    protected 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;
+    protected System.Windows.Forms.SaveFileDialog saveFileDialog;
+    protected System.Windows.Forms.SplitContainer problemInstanceProviderSplitContainer;
+
+  }
+}
Index: /trunk/sources/HeuristicLab.Problems.Instances.Views/3.3/ProblemInstanceProviderViewGeneric.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.Instances.Views/3.3/ProblemInstanceProviderViewGeneric.cs	(revision 7830)
+++ /trunk/sources/HeuristicLab.Problems.Instances.Views/3.3/ProblemInstanceProviderViewGeneric.cs	(revision 7830)
@@ -0,0 +1,150 @@
+﻿#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("ProblemInstanceProviderViewGeneric")]
+  [Content(typeof(IProblemInstanceProvider<>), IsDefaultView = true)]
+  public partial class ProblemInstanceProviderViewGeneric<T> : ProblemInstanceProviderView {
+
+    public new IProblemInstanceProvider<T> Content {
+      get { return (IProblemInstanceProvider<T>)base.Content; }
+      set { base.Content = value; }
+    }
+
+    #region Importer & Exporter
+    protected IProblemInstanceConsumer<T> GenericConsumer { get { return Consumer as IProblemInstanceConsumer<T>; } }
+    protected IProblemInstanceConsumer consumer;
+    public override IProblemInstanceConsumer Consumer {
+      get { return consumer; }
+      set {
+        consumer = value;
+        SetEnabledStateOfControls();
+      }
+    }
+
+    protected IProblemInstanceExporter<T> GenericExporter { get { return Exporter as IProblemInstanceExporter<T>; } }
+    protected IProblemInstanceExporter exporter;
+    public override IProblemInstanceExporter Exporter {
+      get { return exporter; }
+      set {
+        exporter = value;
+        SetEnabledStateOfControls();
+      }
+    }
+    #endregion
+
+    public ProblemInstanceProviderViewGeneric() {
+      InitializeComponent();
+      importButton.Text = String.Empty;
+      importButton.Image = VSImageLibrary.Open;
+      toolTip.SetToolTip(importButton, "Import a " + GetProblemType() + " problem from file.");
+      exportButton.Text = String.Empty;
+      exportButton.Image = VSImageLibrary.Save;
+      toolTip.SetToolTip(exportButton, "Export currently loaded " + GetProblemType() + " problem to a file.");
+      loadButton.Text = String.Empty;
+      loadButton.Image = VSImageLibrary.RefreshDocument;
+      toolTip.SetToolTip(loadButton, "Load the selected problem.");
+    }
+
+    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 && GenericConsumer != null;
+      loadButton.Enabled = !ReadOnly && !Locked && Content != null && GenericConsumer != null;
+      importButton.Enabled = !ReadOnly && !Locked && Content != null && GenericConsumer != null;
+      exportButton.Enabled = !ReadOnly && !Locked && Content != null && GenericExporter != null;
+      problemInstanceProviderSplitContainer.Panel2Collapsed = !exportButton.Enabled;
+    }
+
+    protected virtual void loadButton_Click(object sender, EventArgs e) {
+      var descriptor = (IDataDescriptor)instancesComboBox.SelectedItem;
+      T instance = Content.LoadData(descriptor);
+      try {
+        GenericConsumer.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 {
+          GenericConsumer.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 {
+          Content.SaveData(GenericExporter.Export(), 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: /trunk/sources/HeuristicLab.Problems.Instances.Views/3.3/Properties/AssemblyInfo.cs.frame
===================================================================
--- /trunk/sources/HeuristicLab.Problems.Instances.Views/3.3/Properties/AssemblyInfo.cs.frame	(revision 7830)
+++ /trunk/sources/HeuristicLab.Problems.Instances.Views/3.3/Properties/AssemblyInfo.cs.frame	(revision 7830)
@@ -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.3.0.0")]
+[assembly: AssemblyFileVersion("3.3.6.$WCREV$")]
Index: /trunk/sources/HeuristicLab.Tests/HeuristicLab.Tests.csproj
===================================================================
--- /trunk/sources/HeuristicLab.Tests/HeuristicLab.Tests.csproj	(revision 7829)
+++ /trunk/sources/HeuristicLab.Tests/HeuristicLab.Tests.csproj	(revision 7830)
@@ -595,7 +595,7 @@
       <Name>HeuristicLab.Problems.ExternalEvaluation-3.3</Name>
     </ProjectReference>
-    <ProjectReference Include="..\HeuristicLab.Problems.Instances.Classification\3.4\HeuristicLab.Problems.Instances.Classification-3.4.csproj">
+    <ProjectReference Include="..\HeuristicLab.Problems.Instances.Classification\3.3\HeuristicLab.Problems.Instances.Classification-3.3.csproj">
       <Project>{1BBFCD5B-8A1C-4225-A682-ADEC7800E683}</Project>
-      <Name>HeuristicLab.Problems.Instances.Classification-3.4</Name>
+      <Name>HeuristicLab.Problems.Instances.Classification-3.3</Name>
     </ProjectReference>
     <ProjectReference Include="..\HeuristicLab.Problems.Instances.CordeauGQAP\3.3\HeuristicLab.Problems.Instances.CordeauGQAP-3.3.csproj">
@@ -611,7 +611,7 @@
       <Name>HeuristicLab.Problems.Instances.QAPLIB-3.3</Name>
     </ProjectReference>
-    <ProjectReference Include="..\HeuristicLab.Problems.Instances.Regression\3.4\HeuristicLab.Problems.Instances.Regression-3.4.csproj">
+    <ProjectReference Include="..\HeuristicLab.Problems.Instances.Regression\3.3\HeuristicLab.Problems.Instances.Regression-3.3.csproj">
       <Project>{26BF13E1-C8B2-4ACE-862D-EBFD360116B3}</Project>
-      <Name>HeuristicLab.Problems.Instances.Regression-3.4</Name>
+      <Name>HeuristicLab.Problems.Instances.Regression-3.3</Name>
     </ProjectReference>
     <ProjectReference Include="..\HeuristicLab.Problems.Instances.TSPLIB.Views\3.3\HeuristicLab.Problems.Instances.TSPLIB.Views-3.3.csproj">
@@ -622,8 +622,4 @@
       <Project>{CE0F99D6-1C56-48A9-9B68-3E5B833703EF}</Project>
       <Name>HeuristicLab.Problems.Instances.TSPLIB-3.3</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\HeuristicLab.Problems.Instances.Views\3.4\HeuristicLab.Problems.Instances.Views-3.4.csproj">
-      <Project>{B1BA398F-953F-4C3A-B07B-1E5E17A27DD9}</Project>
-      <Name>HeuristicLab.Problems.Instances.Views-3.4</Name>
     </ProjectReference>
     <ProjectReference Include="..\HeuristicLab.Problems.Instances\3.3\HeuristicLab.Problems.Instances-3.3.csproj">
