Index: trunk/sources/HeuristicLab 3.3.sln
===================================================================
--- trunk/sources/HeuristicLab 3.3.sln	(revision 3247)
+++ trunk/sources/HeuristicLab 3.3.sln	(revision 3248)
@@ -45,4 +45,5 @@
 		{25087811-F74C-4128-BC86-8324271DA13E} = {25087811-F74C-4128-BC86-8324271DA13E}
 		{662B4B15-8F4D-4AE5-B3EB-D91C215F5AF2} = {662B4B15-8F4D-4AE5-B3EB-D91C215F5AF2}
+		{BDF86B1D-630E-4CE2-8A49-8C90B1BDE4C9} = {BDF86B1D-630E-4CE2-8A49-8C90B1BDE4C9}
 		{E226881D-315F-423D-B419-A766FE0D8685} = {E226881D-315F-423D-B419-A766FE0D8685}
 		{F62BCD22-FB83-4444-9401-8031C2487A86} = {F62BCD22-FB83-4444-9401-8031C2487A86}
@@ -74,4 +75,5 @@
 		{57F38579-409D-4DD8-AB19-3F2C4A665126} = {57F38579-409D-4DD8-AB19-3F2C4A665126}
 		{4ABA047D-46DD-4608-9E4A-41C5F92FDBB1} = {4ABA047D-46DD-4608-9E4A-41C5F92FDBB1}
+		{70DFD984-B1D9-46FE-8EB7-4DE92D71A9FC} = {70DFD984-B1D9-46FE-8EB7-4DE92D71A9FC}
 		{3F090389-DC7C-4F22-8B11-1977C8032D94} = {3F090389-DC7C-4F22-8B11-1977C8032D94}
 		{81609E8A-9757-4865-8B89-0B6603F769E8} = {81609E8A-9757-4865-8B89-0B6603F769E8}
@@ -235,4 +237,8 @@
 EndProject
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Views-3.3", "HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Views\3.3\HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Views-3.3.csproj", "{6F42C5F8-16CD-43EE-8208-FD4573A69D85}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.Problems.DataAnalysis-3.3", "HeuristicLab.Problems.DataAnalysis\3.3\HeuristicLab.Problems.DataAnalysis-3.3.csproj", "{70DFD984-B1D9-46FE-8EB7-4DE92D71A9FC}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.Problems.DataAnalysis.Regression-3.3", "HeuristicLab.Problems.DataAnalysis.Regression\3.3\HeuristicLab.Problems.DataAnalysis.Regression-3.3.csproj", "{BDF86B1D-630E-4CE2-8A49-8C90B1BDE4C9}"
 EndProject
 Global
@@ -1317,4 +1323,34 @@
 		{6F42C5F8-16CD-43EE-8208-FD4573A69D85}.Services|x64.ActiveCfg = Release|x64
 		{6F42C5F8-16CD-43EE-8208-FD4573A69D85}.Services|x86.ActiveCfg = Release|x86
+		{70DFD984-B1D9-46FE-8EB7-4DE92D71A9FC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{70DFD984-B1D9-46FE-8EB7-4DE92D71A9FC}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{70DFD984-B1D9-46FE-8EB7-4DE92D71A9FC}.Debug|x64.ActiveCfg = Debug|x64
+		{70DFD984-B1D9-46FE-8EB7-4DE92D71A9FC}.Debug|x64.Build.0 = Debug|x64
+		{70DFD984-B1D9-46FE-8EB7-4DE92D71A9FC}.Debug|x86.ActiveCfg = Debug|x86
+		{70DFD984-B1D9-46FE-8EB7-4DE92D71A9FC}.Debug|x86.Build.0 = Debug|x86
+		{70DFD984-B1D9-46FE-8EB7-4DE92D71A9FC}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{70DFD984-B1D9-46FE-8EB7-4DE92D71A9FC}.Release|Any CPU.Build.0 = Release|Any CPU
+		{70DFD984-B1D9-46FE-8EB7-4DE92D71A9FC}.Release|x64.ActiveCfg = Release|x64
+		{70DFD984-B1D9-46FE-8EB7-4DE92D71A9FC}.Release|x64.Build.0 = Release|x64
+		{70DFD984-B1D9-46FE-8EB7-4DE92D71A9FC}.Release|x86.ActiveCfg = Release|x86
+		{70DFD984-B1D9-46FE-8EB7-4DE92D71A9FC}.Release|x86.Build.0 = Release|x86
+		{70DFD984-B1D9-46FE-8EB7-4DE92D71A9FC}.Services|Any CPU.ActiveCfg = Release|Any CPU
+		{70DFD984-B1D9-46FE-8EB7-4DE92D71A9FC}.Services|x64.ActiveCfg = Release|x64
+		{70DFD984-B1D9-46FE-8EB7-4DE92D71A9FC}.Services|x86.ActiveCfg = Release|x86
+		{BDF86B1D-630E-4CE2-8A49-8C90B1BDE4C9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{BDF86B1D-630E-4CE2-8A49-8C90B1BDE4C9}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{BDF86B1D-630E-4CE2-8A49-8C90B1BDE4C9}.Debug|x64.ActiveCfg = Debug|x64
+		{BDF86B1D-630E-4CE2-8A49-8C90B1BDE4C9}.Debug|x64.Build.0 = Debug|x64
+		{BDF86B1D-630E-4CE2-8A49-8C90B1BDE4C9}.Debug|x86.ActiveCfg = Debug|x86
+		{BDF86B1D-630E-4CE2-8A49-8C90B1BDE4C9}.Debug|x86.Build.0 = Debug|x86
+		{BDF86B1D-630E-4CE2-8A49-8C90B1BDE4C9}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{BDF86B1D-630E-4CE2-8A49-8C90B1BDE4C9}.Release|Any CPU.Build.0 = Release|Any CPU
+		{BDF86B1D-630E-4CE2-8A49-8C90B1BDE4C9}.Release|x64.ActiveCfg = Release|x64
+		{BDF86B1D-630E-4CE2-8A49-8C90B1BDE4C9}.Release|x64.Build.0 = Release|x64
+		{BDF86B1D-630E-4CE2-8A49-8C90B1BDE4C9}.Release|x86.ActiveCfg = Release|x86
+		{BDF86B1D-630E-4CE2-8A49-8C90B1BDE4C9}.Release|x86.Build.0 = Release|x86
+		{BDF86B1D-630E-4CE2-8A49-8C90B1BDE4C9}.Services|Any CPU.ActiveCfg = Release|Any CPU
+		{BDF86B1D-630E-4CE2-8A49-8C90B1BDE4C9}.Services|x64.ActiveCfg = Release|x64
+		{BDF86B1D-630E-4CE2-8A49-8C90B1BDE4C9}.Services|x86.ActiveCfg = Release|x86
 	EndGlobalSection
 	GlobalSection(SolutionProperties) = preSolution
Index: trunk/sources/HeuristicLab 3.3/Files.txt
===================================================================
--- trunk/sources/HeuristicLab 3.3/Files.txt	(revision 3247)
+++ trunk/sources/HeuristicLab 3.3/Files.txt	(revision 3248)
@@ -44,4 +44,6 @@
 HeuristicLab.Problems.ArtificialAnt\3.3:HeuristicLab.Problems.ArtificialAnt-3.3.dll
 HeuristicLab.Problems.ArtificialAnt.Views\3.3:HeuristicLab.Problems.ArtificialAnt.Views-3.3.dll
+HeuristicLab.Problems.DataAnalysis\3.3:HeuristicLab.Problems.DataAnalysis-3.3.dll
+HeuristicLab.Problems.DataAnalysis.Regression\3.3:HeuristicLab.Problems.DataAnalysis.Regression-3.3.dll
 HeuristicLab.Problems.Knapsack\3.3:HeuristicLab.Problems.Knapsack-3.3.dll
 HeuristicLab.Problems.Knapsack.Views\3.3:HeuristicLab.Problems.Knapsack.Views-3.3.dll
Index: trunk/sources/HeuristicLab.Core.Views/3.3/ScopeView.Designer.cs
===================================================================
--- trunk/sources/HeuristicLab.Core.Views/3.3/ScopeView.Designer.cs	(revision 3247)
+++ trunk/sources/HeuristicLab.Core.Views/3.3/ScopeView.Designer.cs	(revision 3248)
@@ -35,5 +35,4 @@
         if (scopesTreeView.Nodes.Count > 0) {
           RemoveTreeNode(scopesTreeView.Nodes[0]);
-          scopesTreeView.Nodes.Clear();
         }
         if (components != null) components.Dispose();
Index: trunk/sources/HeuristicLab.Problems.DataAnalysis.Regression/3.3/HeuristicLab.Problems.DataAnalysis.Regression-3.3.csproj
===================================================================
--- trunk/sources/HeuristicLab.Problems.DataAnalysis.Regression/3.3/HeuristicLab.Problems.DataAnalysis.Regression-3.3.csproj	(revision 3248)
+++ trunk/sources/HeuristicLab.Problems.DataAnalysis.Regression/3.3/HeuristicLab.Problems.DataAnalysis.Regression-3.3.csproj	(revision 3248)
@@ -0,0 +1,115 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>9.0.30729</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{BDF86B1D-630E-4CE2-8A49-8C90B1BDE4C9}</ProjectGuid>
+    <OutputType>Library</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>HeuristicLab.Problems.DataAnalysis.Regression</RootNamespace>
+    <AssemblyName>HeuristicLab.Problems.DataAnalysis.Regression-3.3</AssemblyName>
+    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
+    <FileAlignment>512</FileAlignment>
+    <SignAssembly>true</SignAssembly>
+    <AssemblyOriginatorKeyFile>HeuristicLab.snk</AssemblyOriginatorKeyFile>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' ">
+    <DebugSymbols>true</DebugSymbols>
+    <OutputPath>bin\x64\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <DebugType>full</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
+    <OutputPath>bin\x64\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <Optimize>true</Optimize>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
+    <DebugSymbols>true</DebugSymbols>
+    <OutputPath>bin\x86\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <DebugType>full</DebugType>
+    <PlatformTarget>x86</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
+    <OutputPath>bin\x86\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <Optimize>true</Optimize>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>x86</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="System" />
+    <Reference Include="System.Core">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Xml.Linq">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Data.DataSetExtensions">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Data" />
+    <Reference Include="System.Xml" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="HeuristicLab.snk" />
+    <None Include="HeuristicLabProblemsDataAnalysisRegressionPlugin.cs.frame" />
+    <None Include="Properties\AssemblyInfo.frame" />
+    <Compile Include="HeuristicLabProblemsDataAnalysisRegressionPlugin.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\..\HeuristicLab.PluginInfrastructure\HeuristicLab.PluginInfrastructure.csproj">
+      <Project>{94186A6A-5176-4402-AE83-886557B53CCA}</Project>
+      <Name>HeuristicLab.PluginInfrastructure</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Problems.DataAnalysis\3.3\HeuristicLab.Problems.DataAnalysis-3.3.csproj">
+      <Project>{70DFD984-B1D9-46FE-8EB7-4DE92D71A9FC}</Project>
+      <Name>HeuristicLab.Problems.DataAnalysis-3.3</Name>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+  <!-- 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>
+  -->
+  <PropertyGroup>
+    <PreBuildEvent>set Path=%25Path%25;$(ProjectDir);$(SolutionDir)
+set ProjectDir=$(ProjectDir)
+set SolutionDir=$(SolutionDir)
+set Outdir=$(Outdir)
+
+call PreBuildEvent.cmd
+SubWCRev "%25ProjectDir%25\" "%25ProjectDir%25\HeuristicLabProblemsDataAnalysisRegressionPlugin.cs.frame" "%25ProjectDir%25\HeuristicLabProblemsDataAnalysisRegressionPlugin.cs"</PreBuildEvent>
+  </PropertyGroup>
+</Project>
Index: trunk/sources/HeuristicLab.Problems.DataAnalysis.Regression/3.3/HeuristicLabProblemsDataAnalysisRegressionPlugin.cs.frame
===================================================================
--- trunk/sources/HeuristicLab.Problems.DataAnalysis.Regression/3.3/HeuristicLabProblemsDataAnalysisRegressionPlugin.cs.frame	(revision 3248)
+++ trunk/sources/HeuristicLab.Problems.DataAnalysis.Regression/3.3/HeuristicLabProblemsDataAnalysisRegressionPlugin.cs.frame	(revision 3248)
@@ -0,0 +1,41 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2010 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.Text;
+using HeuristicLab.PluginInfrastructure;
+
+namespace HeuristicLab.Problems.DataAnalysis.Regression {
+  [Plugin("HeuristicLab.Problems.DataAnalysis.Regression","3.3.0.$WCREV$")]
+  [PluginFile("HeuristicLab.Problems.DataAnalysis.Regression-3.3.dll", PluginFileType.Assembly)]
+  [PluginDependency("HeuristicLab.Collections", "3.3.0.0")]
+  [PluginDependency("HeuristicLab.Common.Resources", "3.2.0.0")]
+  [PluginDependency("HeuristicLab.Core", "3.3.0.0")]
+  [PluginDependency("HeuristicLab.Data", "3.3.0.0")]
+  [PluginDependency("HeuristicLab.Encodings.SymbolicExpressionTreeEncoding","3.3.0.0")]
+  [PluginDependency("HeuristicLab.Operators", "3.3.0.0")]
+  [PluginDependency("HeuristicLab.Optimization", "3.3.0.0")]
+  [PluginDependency("HeuristicLab.Parameters", "3.3.0.0")]
+  [PluginDependency("HeuristicLab.Persistence", "3.3.0.0")]
+  public class HeuristicLabProblemsDataAnalysisRegressionPlugin : PluginBase {
+  }
+}
Index: trunk/sources/HeuristicLab.Problems.DataAnalysis.Regression/3.3/Properties/AssemblyInfo.frame
===================================================================
--- trunk/sources/HeuristicLab.Problems.DataAnalysis.Regression/3.3/Properties/AssemblyInfo.frame	(revision 3248)
+++ trunk/sources/HeuristicLab.Problems.DataAnalysis.Regression/3.3/Properties/AssemblyInfo.frame	(revision 3248)
@@ -0,0 +1,55 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2010 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.DataAnalysis.Regression")]
+[assembly: AssemblyDescription("HeuristicLab regression (data analysis) problem classes")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("HeuristicLab")]
+[assembly: AssemblyCopyright("(c) 2002-2010 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("0cb4421a-d9ff-4ad1-a116-cca316cacc8b")]
+
+// 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.0.$WCREV$")]
Index: trunk/sources/HeuristicLab.Problems.DataAnalysis/3.3/HeuristicLab.Problems.DataAnalysis-3.3.csproj
===================================================================
--- trunk/sources/HeuristicLab.Problems.DataAnalysis/3.3/HeuristicLab.Problems.DataAnalysis-3.3.csproj	(revision 3248)
+++ trunk/sources/HeuristicLab.Problems.DataAnalysis/3.3/HeuristicLab.Problems.DataAnalysis-3.3.csproj	(revision 3248)
@@ -0,0 +1,111 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>9.0.30729</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{70DFD984-B1D9-46FE-8EB7-4DE92D71A9FC}</ProjectGuid>
+    <OutputType>Library</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>HeuristicLab.Problems.DataAnalysis</RootNamespace>
+    <AssemblyName>HeuristicLab.Problems.DataAnalysis-3.3</AssemblyName>
+    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
+    <FileAlignment>512</FileAlignment>
+    <SignAssembly>true</SignAssembly>
+    <AssemblyOriginatorKeyFile>HeuristicLab.snk</AssemblyOriginatorKeyFile>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' ">
+    <DebugSymbols>true</DebugSymbols>
+    <OutputPath>bin\x64\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <DebugType>full</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
+    <OutputPath>bin\x64\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <Optimize>true</Optimize>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
+    <DebugSymbols>true</DebugSymbols>
+    <OutputPath>bin\x86\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <DebugType>full</DebugType>
+    <PlatformTarget>x86</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
+    <OutputPath>bin\x86\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <Optimize>true</Optimize>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>x86</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="System" />
+    <Reference Include="System.Core">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Xml.Linq">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Data.DataSetExtensions">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Data" />
+    <Reference Include="System.Xml" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="HeuristicLab.snk" />
+    <None Include="HeuristicLabProblemsDataAnalysisPlugin.cs.frame" />
+    <None Include="Properties\AssemblyInfo.frame" />
+    <Compile Include="HeuristicLabProblemsDataAnalysisPlugin.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\..\HeuristicLab.PluginInfrastructure\HeuristicLab.PluginInfrastructure.csproj">
+      <Project>{94186A6A-5176-4402-AE83-886557B53CCA}</Project>
+      <Name>HeuristicLab.PluginInfrastructure</Name>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+  <!-- 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>
+  -->
+  <PropertyGroup>
+    <PreBuildEvent>set Path=%25Path%25;$(ProjectDir);$(SolutionDir)
+set ProjectDir=$(ProjectDir)
+set SolutionDir=$(SolutionDir)
+set Outdir=$(Outdir)
+
+call PreBuildEvent.cmd
+SubWCRev "%25ProjectDir%25\" "%25ProjectDir%25\HeuristicLabProblemsDataAnalysisPlugin.cs.frame" "%25ProjectDir%25\HeuristicLabProblemsDataAnalysisPlugin.cs"</PreBuildEvent>
+  </PropertyGroup>
+</Project>
Index: trunk/sources/HeuristicLab.Problems.DataAnalysis/3.3/HeuristicLabProblemsDataAnalysisPlugin.cs.frame
===================================================================
--- trunk/sources/HeuristicLab.Problems.DataAnalysis/3.3/HeuristicLabProblemsDataAnalysisPlugin.cs.frame	(revision 3248)
+++ trunk/sources/HeuristicLab.Problems.DataAnalysis/3.3/HeuristicLabProblemsDataAnalysisPlugin.cs.frame	(revision 3248)
@@ -0,0 +1,33 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2010 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.Text;
+using HeuristicLab.PluginInfrastructure;
+
+namespace HeuristicLab.Problems.DataAnalysis {
+  [Plugin("HeuristicLab.Problems.DataAnalysis","3.3.0.$WCREV$")]
+  [PluginFile("HeuristicLab.Problems.DataAnalysis-3.3.dll", PluginFileType.Assembly)]
+  [PluginDependency("HeuristicLab.Persistence", "3.3.0.0")]
+  public class HeuristicLabProblemsDataAnalysisPlugin : PluginBase {
+  }
+}
Index: trunk/sources/HeuristicLab.Problems.DataAnalysis/3.3/Properties/AssemblyInfo.frame
===================================================================
--- trunk/sources/HeuristicLab.Problems.DataAnalysis/3.3/Properties/AssemblyInfo.frame	(revision 3248)
+++ trunk/sources/HeuristicLab.Problems.DataAnalysis/3.3/Properties/AssemblyInfo.frame	(revision 3248)
@@ -0,0 +1,55 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2010 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.DataAnalysis")]
+[assembly: AssemblyDescription("HeuristicLab generic data analysis problem classes")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("HeuristicLab")]
+[assembly: AssemblyCopyright("(c) 2002-2010 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("73d531fb-a823-4000-b980-3087eb5975f1")]
+
+// 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.0.$WCREV$")]
Index: trunk/sources/HeuristicLab.TestFunctions/3.3/AckleyEvaluator.cs
===================================================================
--- trunk/sources/HeuristicLab.TestFunctions/3.3/AckleyEvaluator.cs	(revision 3248)
+++ trunk/sources/HeuristicLab.TestFunctions/3.3/AckleyEvaluator.cs	(revision 3248)
@@ -0,0 +1,81 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 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.Text;
+using HeuristicLab.Core;
+using HeuristicLab.Data;
+using HeuristicLab.Operators;
+
+namespace HeuristicLab.TestFunctions {
+  /// <summary>
+  /// Ackley Function<br/>
+  /// Domain:  [-32.768 , 32.768]^n <br/>
+  /// Optimum: 0.0 at (0, 0, ..., 0)
+  /// </summary>
+  public class AckleyEvaluator : TestFunctionEvaluatorBase {
+    /// <inheritdoc select="summary"/>
+    public override string Description {
+      get { return
+@"Ackley Function
+
+Domain:  [-32.768 , 32.768]^n
+Optimum: 0.0 at (0, 0, ..., 0)";
+          }
+    }
+
+    /// <summary>
+    /// Evaluates the test function for a specific <paramref name="point"/>.
+    /// </summary>
+    /// <param name="point">N-dimensional point for which the test function should be evaluated.</param>
+    /// <returns>The result value of the Ackley function at the given point.</returns>
+    public static double Apply(double[] point) {
+      double result = 20 + Math.E;
+      double val;
+
+      val = 0;
+      for (int i = 0; i < point.Length; i++)
+        val += point[i] * point[i];
+      val *= 1.0 / point.Length;
+      val = Math.Sqrt(val);
+      val *= -0.2;
+      result -= 20 * Math.Exp(val);
+
+      val = 0;
+      for (int i = 0; i < point.Length; i++)
+        val += Math.Cos(2 * Math.PI * point[i]);
+      val *= 1.0 / point.Length;
+      result -= Math.Exp(val);
+      return (result);
+    }
+
+    /// <summary>
+    /// Evaluates the test function for a specific <paramref name="point"/>.
+    /// </summary>
+    /// <remarks>Calls <see cref="Apply"/>.</remarks>
+    /// <param name="point">N-dimensional point for which the test function should be evaluated.</param>
+    /// <returns>The result value of the Ackley function at the given point.</returns>
+    protected override double EvaluateFunction(double[] point) {
+      return Apply(point);
+    }
+  }
+}
Index: trunk/sources/HeuristicLab.TestFunctions/3.3/BealeEvaluator.cs
===================================================================
--- trunk/sources/HeuristicLab.TestFunctions/3.3/BealeEvaluator.cs	(revision 3248)
+++ trunk/sources/HeuristicLab.TestFunctions/3.3/BealeEvaluator.cs	(revision 3248)
@@ -0,0 +1,62 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 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.Text;
+
+namespace HeuristicLab.TestFunctions { 
+  /// <summary>
+  /// Beale Function<br/>
+  /// Domain:  [-4.5 , 4.5]^2<br/>
+  /// Optimum: 0.0 at (3.0, 0.5)
+  /// </summary>
+  public class BealeEvaluator : TestFunctionEvaluatorBase {
+    /// <inheritdoc select="summary"/>
+    public override string Description {
+      get { return
+@"Beale Function
+
+Domain:  [-4.5 , 4.5]^2
+Optimum: 0.0 at (3.0, 0.5)";
+          }
+    }
+
+    /// <summary>
+    /// Evaluates the test function for a specific <paramref name="point"/>.
+    /// </summary>
+    /// <param name="point">N-dimensional point for which the test function should be evaluated.</param>
+    /// <returns>The result value of the Beale function at the given point.</returns>
+    public static double Apply(double[] point) {
+      return Math.Pow(1.5 - point[0] * (1 - point[1]), 2) + Math.Pow(2.25 - point[0] * (1 - (point[1] * point[1])), 2) + Math.Pow((2.625 - point[0] * (1 - (point[1] * point[1] * point[1]))), 2);
+    }
+
+    /// <summary>
+    /// Evaluates the test function for a specific <paramref name="point"/>.
+    /// </summary>
+    /// <remarks>Calls <see cref="Apply"/>.</remarks>
+    /// <param name="point">N-dimensional point for which the test function should be evaluated.</param>
+    /// <returns>The result value of the Beale function at the given point.</returns>
+    protected override double EvaluateFunction(double[] point) {
+      return Apply(point);
+    }
+  }
+}
Index: trunk/sources/HeuristicLab.TestFunctions/3.3/BoothEvaluator.cs
===================================================================
--- trunk/sources/HeuristicLab.TestFunctions/3.3/BoothEvaluator.cs	(revision 3248)
+++ trunk/sources/HeuristicLab.TestFunctions/3.3/BoothEvaluator.cs	(revision 3248)
@@ -0,0 +1,63 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 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.Text;
+
+namespace HeuristicLab.TestFunctions {
+  /// <summary>
+  /// Booth Function<br/>
+  /// Domain:  [-10.0 , 10.0]^2<br/>
+  /// Optimum: 0.0 at (1.0, 3.0)
+  /// </summary>
+  public class BoothEvaluator : TestFunctionEvaluatorBase {
+    /// <inheritdoc select="summary"/>
+    public override string Description {
+      get {
+        return
+          @"Booth Function
+
+Domain:  [-10.0 , 10.0]^2
+Optimum: 0.0 at (1.0, 3.0)";
+      }
+    }
+
+    /// <summary>
+    /// Evaluates the test function for a specific <paramref name="point"/>.
+    /// </summary>
+    /// <param name="point">N-dimensional point for which the test function should be evaluated.</param>
+    /// <returns>The result value of the Booth function at the given point.</returns>
+    public static double Apply(double[] point) {
+      return Math.Pow(point[0] + 2 * point[1] - 7, 2) + Math.Pow(2 * point[0] + point[1] - 5, 2);
+    }
+
+    /// <summary>
+    /// Evaluates the test function for a specific <paramref name="point"/>.
+    /// </summary>
+    /// <remarks>Calls <see cref="Apply"/>.</remarks>
+    /// <param name="point">N-dimensional point for which the test function should be evaluated.</param>
+    /// <returns>The result value of the Booth function at the given point.</returns>
+    protected override double EvaluateFunction(double[] point) {
+      return Apply(point);
+    }
+  }
+}
Index: trunk/sources/HeuristicLab.TestFunctions/3.3/GriewangkEvaluator.cs
===================================================================
--- trunk/sources/HeuristicLab.TestFunctions/3.3/GriewangkEvaluator.cs	(revision 3248)
+++ trunk/sources/HeuristicLab.TestFunctions/3.3/GriewangkEvaluator.cs	(revision 3248)
@@ -0,0 +1,77 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 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.Text;
+using HeuristicLab.Core;
+using HeuristicLab.Data;
+using HeuristicLab.Operators;
+
+namespace HeuristicLab.TestFunctions {
+  /// <summary>
+  /// Griewangk Function<br/>
+  /// Domain:  [-600.0 , 600.0]^n<br/>
+  /// Optimum: 0.0 at (0, 0, ..., 0)
+  /// </summary>
+  public class GriewangkEvaluator : TestFunctionEvaluatorBase {
+    /// <inheritdoc select="summary"/>
+    public override string Description {
+      get { return
+@"Griewangk Function
+
+Domain:  [-600.0 , 600.0]^n
+Optimum: 0.0 at (0, 0, ..., 0)";
+          }
+    }
+
+    /// <summary>
+    /// Evaluates the test function for a specific <paramref name="point"/>.
+    /// </summary>
+    /// <param name="point">N-dimensional point for which the test function should be evaluated.</param>
+    /// <returns>The result value of the Griewangk function at the given point.</returns>
+    public static double Apply(double[] point) {
+      double result = 0;
+      double val = 0;
+
+      for (int i = 0; i < point.Length; i++)
+        result += point[i] * point[i];
+      result = result / 4000;
+
+      val = Math.Cos(point[0]);
+      for (int i = 1; i < point.Length; i++)
+        val *= Math.Cos(point[i] / Math.Sqrt(i + 1));
+
+      result = result - val + 1;
+      return (result);
+    }
+
+    /// <summary>
+    /// Evaluates the test function for a specific <paramref name="point"/>.
+    /// </summary>
+    /// <remarks>Calls <see cref="Apply"/>.</remarks>
+    /// <param name="point">N-dimensional point for which the test function should be evaluated.</param>
+    /// <returns>The result value of the Griewangk function at the given point.</returns>
+    protected override double EvaluateFunction(double[] point) {
+      return Apply(point);
+    }
+  }
+}
Index: trunk/sources/HeuristicLab.TestFunctions/3.3/HeuristicLab.TestFunctions-3.3.csproj
===================================================================
--- trunk/sources/HeuristicLab.TestFunctions/3.3/HeuristicLab.TestFunctions-3.3.csproj	(revision 3248)
+++ trunk/sources/HeuristicLab.TestFunctions/3.3/HeuristicLab.TestFunctions-3.3.csproj	(revision 3248)
@@ -0,0 +1,160 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>9.0.30729</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{55E23C37-F4F8-4B20-89B3-1B8B59050CE2}</ProjectGuid>
+    <OutputType>Library</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>HeuristicLab.TestFunctions</RootNamespace>
+    <AssemblyName>HeuristicLab.TestFunctions-3.3</AssemblyName>
+    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
+    <FileAlignment>512</FileAlignment>
+    <SignAssembly>true</SignAssembly>
+    <AssemblyOriginatorKeyFile>HeuristicLab.snk</AssemblyOriginatorKeyFile>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <DocumentationFile>bin\Release\HeuristicLab.TestFunctions-3.3.xml</DocumentationFile>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
+    <DebugSymbols>true</DebugSymbols>
+    <OutputPath>bin\x86\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <DebugType>full</DebugType>
+    <PlatformTarget>x86</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
+    <OutputPath>bin\x86\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <DocumentationFile>bin\Release\HeuristicLab.TestFunctions-3.2.XML</DocumentationFile>
+    <Optimize>true</Optimize>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>x86</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' ">
+    <DebugSymbols>true</DebugSymbols>
+    <OutputPath>bin\x64\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <DebugType>full</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
+    <OutputPath>bin\x64\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <DocumentationFile>bin\Release\HeuristicLab.TestFunctions-3.2.XML</DocumentationFile>
+    <Optimize>true</Optimize>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="System" />
+    <Reference Include="System.Core">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Data" />
+    <Reference Include="System.Drawing" />
+    <Reference Include="System.Windows.Forms" />
+    <Reference Include="System.Xml" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="AckleyEvaluator.cs" />
+    <Compile Include="BealeEvaluator.cs" />
+    <Compile Include="BoothEvaluator.cs" />
+    <Compile Include="GriewangkEvaluator.cs" />
+    <Compile Include="LevyEvaluator.cs" />
+    <Compile Include="MatyasEvaluator.cs" />
+    <Compile Include="SchwefelEvaluator.cs" />
+    <Compile Include="RosenbrockEvaluator.cs" />
+    <Compile Include="RastriginEvaluator.cs" />
+    <Compile Include="SphereEvaluator.cs" />
+    <Compile Include="HeuristicLabTestFunctionsPlugin.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+    <Compile Include="SumSquaresEvaluator.cs" />
+    <Compile Include="TestFunctionEvaluatorBase.cs" />
+    <Compile Include="TestFunctionInjector.cs" />
+    <Compile Include="TestFunctionInjectorView.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Include="TestFunctionInjectorView.Designer.cs">
+      <DependentUpon>TestFunctionInjectorView.cs</DependentUpon>
+    </Compile>
+    <Compile Include="ZakharovEvaluator.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="HeuristicLab.snk" />
+    <None Include="Properties\AssemblyInfo.frame" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\..\HeuristicLab.Core.Views\3.3\HeuristicLab.Core.Views-3.3.csproj">
+      <Project>{E226881D-315F-423D-B419-A766FE0D8685}</Project>
+      <Name>HeuristicLab.Core.Views-3.3</Name>
+    </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>
+    </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>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.MainForm.WindowsForms\3.2\HeuristicLab.MainForm.WindowsForms-3.2.csproj">
+      <Project>{AB687BBE-1BFE-476B-906D-44237135431D}</Project>
+      <Name>HeuristicLab.MainForm.WindowsForms-3.2</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.MainForm\3.2\HeuristicLab.MainForm-3.2.csproj">
+      <Project>{3BD61258-31DA-4B09-89C0-4F71FEF5F05A}</Project>
+      <Name>HeuristicLab.MainForm-3.2</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Operators\3.3\HeuristicLab.Operators-3.3.csproj">
+      <Project>{23DA7FF4-D5B8-41B6-AA96-F0561D24F3EE}</Project>
+      <Name>HeuristicLab.Operators-3.3</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.PluginInfrastructure\HeuristicLab.PluginInfrastructure.csproj">
+      <Project>{94186A6A-5176-4402-AE83-886557B53CCA}</Project>
+      <Name>HeuristicLab.PluginInfrastructure</Name>
+    </ProjectReference>
+  </ItemGroup>
+  <ItemGroup>
+    <EmbeddedResource Include="TestFunctionInjectorView.resx">
+      <DependentUpon>TestFunctionInjectorView.cs</DependentUpon>
+      <SubType>Designer</SubType>
+    </EmbeddedResource>
+  </ItemGroup>
+  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+  <!-- 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>
+  -->
+  <PropertyGroup>
+    <PreBuildEvent>set Path=%25Path%25;$(ProjectDir);$(SolutionDir)
+set ProjectDir=$(ProjectDir)
+set SolutionDir=$(SolutionDir)
+set Outdir=$(Outdir)
+
+call PreBuildEvent.cmd</PreBuildEvent>
+  </PropertyGroup>
+</Project>
Index: trunk/sources/HeuristicLab.TestFunctions/3.3/HeuristicLabTestFunctionsPlugin.cs
===================================================================
--- trunk/sources/HeuristicLab.TestFunctions/3.3/HeuristicLabTestFunctionsPlugin.cs	(revision 3248)
+++ trunk/sources/HeuristicLab.TestFunctions/3.3/HeuristicLabTestFunctionsPlugin.cs	(revision 3248)
@@ -0,0 +1,41 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 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.Text;
+using HeuristicLab.PluginInfrastructure;
+
+namespace HeuristicLab.TestFunctions {
+  /// <summary>
+  /// Plugin class for HeuristicLab.TestFunctions plugin.
+  /// </summary>
+  [ClassInfo(Name = "HeuristicLab.TestFunctions-3.3")]
+  [PluginFile(Filename = "HeuristicLab.TestFunctions-3.3.dll", Filetype = PluginFileType.Assembly)]
+  [Dependency(Dependency = "HeuristicLab.Core-3.3")]
+  [Dependency(Dependency = "HeuristicLab.Core.Views-3.3")]
+  [Dependency(Dependency = "HeuristicLab.Data-3.3")]
+  [Dependency(Dependency = "HeuristicLab.MainForm-3.2")]
+  [Dependency(Dependency = "HeuristicLab.MainForm.WindowsForms-3.2")]
+  [Dependency(Dependency = "HeuristicLab.Operators-3.3")]
+  public class HeuristicLabTestFunctionsPlugin : PluginBase {
+  }
+}
Index: trunk/sources/HeuristicLab.TestFunctions/3.3/LevyEvaluator.cs
===================================================================
--- trunk/sources/HeuristicLab.TestFunctions/3.3/LevyEvaluator.cs	(revision 3248)
+++ trunk/sources/HeuristicLab.TestFunctions/3.3/LevyEvaluator.cs	(revision 3248)
@@ -0,0 +1,76 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 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.Text;
+
+namespace HeuristicLab.TestFunctions {
+  /// <summary>
+  /// Levy Function<br/>
+  /// Domain:  [-10.0 , 10.0]^n<br/>
+  /// Optimum: 0.0 at (1.0, 1.0, ..., 1.0)
+  /// </summary>
+  public class LevyEvaluator : TestFunctionEvaluatorBase {
+    /// <inheritdoc select="summary"/>
+    public override string Description {
+      get { return
+@"Levy Function
+
+Domain:  [-10.0 , 10.0]^n
+Optimum: 0.0 at (1.0, 1.0, ..., 1.0)";
+          }
+    }
+
+    /// <summary>
+    /// Evaluates the test function for a specific <paramref name="point"/>.
+    /// </summary>
+    /// <param name="point">N-dimensional point for which the test function should be evaluated.</param>
+    /// <returns>The result value of the Levy function at the given point.</returns>
+    public static double Apply(double[] point) {
+      int length = point.Length;
+      double[] z = new double[length];
+      double s;
+
+      for (int i = 0; i < length; i++) {
+        z[i] = 1 + (point[i] - 1) / 4;
+      }
+
+      s = Math.Pow(Math.Sin(Math.PI * z[1]), 2);
+
+      for (int i = 0; i < length - 1; i++) {
+        s += Math.Pow(z[i] - 1, 2) * (1 + 10 * Math.Pow(Math.Sin(Math.PI * z[i] + 1), 2));
+      }
+
+      return s + Math.Pow(z[length - 1] - 1, 2) * (1 + Math.Pow(Math.Sin(2 * Math.PI * z[length - 1]), 2));
+    }
+
+    /// <summary>
+    /// Evaluates the test function for a specific <paramref name="point"/>.
+    /// </summary>
+    /// <remarks>Calls <see cref="Apply"/>.</remarks>
+    /// <param name="point">N-dimensional point for which the test function should be evaluated.</param>
+    /// <returns>The result value of the Levy function at the given point.</returns>
+    protected override double EvaluateFunction(double[] point) {
+      return Apply(point);
+    }
+  }
+}
Index: trunk/sources/HeuristicLab.TestFunctions/3.3/MatyasEvaluator.cs
===================================================================
--- trunk/sources/HeuristicLab.TestFunctions/3.3/MatyasEvaluator.cs	(revision 3248)
+++ trunk/sources/HeuristicLab.TestFunctions/3.3/MatyasEvaluator.cs	(revision 3248)
@@ -0,0 +1,62 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 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.Text;
+
+namespace HeuristicLab.TestFunctions {
+  /// <summary>
+  /// Matyas Function<br/>
+  /// Domain:  [-10.0 , 10.0]^2<br/>
+  /// Optimum: 0.0 at (0.0, 0.0)
+  /// </summary>
+  public class MatyasEvaluator : TestFunctionEvaluatorBase {
+    /// <inheritdoc select="summary"/>
+    public override string Description {
+      get { return
+@"Matyas Function
+
+Domain:  [-10.0 , 10.0]^2
+Optimum: 0.0 at (0.0, 0.0)";
+          }
+    }
+
+    /// <summary>
+    /// Evaluates the test function for a specific <paramref name="point"/>.
+    /// </summary>
+    /// <param name="point">N-dimensional point for which the test function should be evaluated.</param>
+    /// <returns>The result value of the Matyas function at the given point.</returns>
+    public static double Apply(double[] point) {
+      return 0.26 * (point[0] * point[0] + point[1] * point[1]) - 0.48 * point[0] * point[1];
+    }
+
+    /// <summary>
+    /// Evaluates the test function for a specific <paramref name="point"/>.
+    /// </summary>
+    /// <remarks>Calls <see cref="Apply"/>.</remarks>
+    /// <param name="point">N-dimensional point for which the test function should be evaluated.</param>
+    /// <returns>The result value of the Matyas function at the given point.</returns>
+    protected override double EvaluateFunction(double[] point) {
+      return Apply(point);
+    }
+  }
+}
Index: trunk/sources/HeuristicLab.TestFunctions/3.3/Properties/AssemblyInfo.frame
===================================================================
--- trunk/sources/HeuristicLab.TestFunctions/3.3/Properties/AssemblyInfo.frame	(revision 3248)
+++ trunk/sources/HeuristicLab.TestFunctions/3.3/Properties/AssemblyInfo.frame	(revision 3248)
@@ -0,0 +1,59 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 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;
+using HeuristicLab.PluginInfrastructure;
+
+// 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.TestFunctions")]
+[assembly: AssemblyDescription("HeuristicLab n-dimensional test function classes")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("HeuristicLab")]
+[assembly: AssemblyCopyright("(c) 2002-2008 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("f7c10f77-1067-4b4c-876a-92fe49b4f228")]
+
+// 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.$WCREV$")]
+[assembly: AssemblyFileVersion("3.3.0.$WCREV$")]
+[assembly: AssemblyBuildDate("$WCNOW$")]
Index: trunk/sources/HeuristicLab.TestFunctions/3.3/RastriginEvaluator.cs
===================================================================
--- trunk/sources/HeuristicLab.TestFunctions/3.3/RastriginEvaluator.cs	(revision 3248)
+++ trunk/sources/HeuristicLab.TestFunctions/3.3/RastriginEvaluator.cs	(revision 3248)
@@ -0,0 +1,70 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 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.Text;
+using HeuristicLab.Core;
+using HeuristicLab.Data;
+using HeuristicLab.Operators;
+
+namespace HeuristicLab.TestFunctions {
+  /// <summary>
+  /// Rastrigin Function<br/>
+  /// Domain:  [-5.12 , 5.12]^n<br/>
+  /// Optimum: 0.0 at (0, 0, ..., 0)
+  /// </summary>
+  public class RastriginEvaluator : TestFunctionEvaluatorBase {
+    /// <inheritdoc select="summary"/>
+    public override string Description {
+      get { return
+@"Rastrigin Function
+
+Domain:  [-5.12 , 5.12]^n
+Optimum: 0.0 at (0, 0, ..., 0)";
+          }
+    }
+
+    /// <summary>
+    /// Evaluates the test function for a specific <paramref name="point"/>.
+    /// </summary>
+    /// <param name="point">N-dimensional point for which the test function should be evaluated.</param>
+    /// <returns>The result value of the Rastrigin function at the given point.</returns>
+    public static double Apply(double[] point) {
+      double result = 10 * point.Length;
+      for (int i = 0; i < point.Length; i++) {
+        result += point[i] * point[i];
+        result -= 10 * Math.Cos(2 * Math.PI * point[i]);
+      }
+      return (result);
+    }
+
+    /// <summary>
+    /// Evaluates the test function for a specific <paramref name="point"/>.
+    /// </summary>
+    /// <remarks>Calls <see cref="Apply"/>.</remarks>
+    /// <param name="point">N-dimensional point for which the test function should be evaluated.</param>
+    /// <returns>The result value of the Rastrigin function at the given point.</returns>
+    protected override double EvaluateFunction(double[] point) {
+      return Apply(point);
+    }
+  }
+}
Index: trunk/sources/HeuristicLab.TestFunctions/3.3/RosenbrockEvaluator.cs
===================================================================
--- trunk/sources/HeuristicLab.TestFunctions/3.3/RosenbrockEvaluator.cs	(revision 3248)
+++ trunk/sources/HeuristicLab.TestFunctions/3.3/RosenbrockEvaluator.cs	(revision 3248)
@@ -0,0 +1,70 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 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.Text;
+using HeuristicLab.Core;
+using HeuristicLab.Data;
+using HeuristicLab.Operators;
+
+namespace HeuristicLab.TestFunctions {
+  /// <summary>
+  /// Rosenbrock Function<br/>
+  /// Domain:  [-2.048 , 2.048]^n<br/>
+  /// Optimum: 0.0 at (1, 1, ..., 1)
+  /// </summary>
+  public class RosenbrockEvaluator : TestFunctionEvaluatorBase {
+    /// <inheritdoc select="summary"/>
+    public override string Description {
+      get { return
+@"Rosenbrock Function
+
+Domain:  [-2.048 , 2.048]^n
+Optimum: 0.0 at (1, 1, ..., 1)";
+          }
+    }
+
+    /// <summary>
+    /// Evaluates the test function for a specific <paramref name="point"/>.
+    /// </summary>
+    /// <param name="point">N-dimensional point for which the test function should be evaluated.</param>
+    /// <returns>The result value of the Rosenbrock function at the given point.</returns>
+    public static double Apply(double[] point) {
+      double result = 0;
+      for (int i = 0; i < point.Length - 1; i++) {
+        result += 100 * (point[i + 1] - point[i] * point[i]) * (point[i + 1] - point[i] * point[i]);
+        result += (1 - point[i]) * (1 - point[i]);
+      }
+      return result;
+    }
+
+    /// <summary>
+    /// Evaluates the test function for a specific <paramref name="point"/>.
+    /// </summary>
+    /// <remarks>Calls <see cref="Apply"/>.</remarks>
+    /// <param name="point">N-dimensional point for which the test function should be evaluated.</param>
+    /// <returns>The result value of the Rosenbrock function at the given point.</returns>
+    protected override double EvaluateFunction(double[] point) {
+      return Apply(point);
+    }
+  }
+}
Index: trunk/sources/HeuristicLab.TestFunctions/3.3/SchwefelEvaluator.cs
===================================================================
--- trunk/sources/HeuristicLab.TestFunctions/3.3/SchwefelEvaluator.cs	(revision 3248)
+++ trunk/sources/HeuristicLab.TestFunctions/3.3/SchwefelEvaluator.cs	(revision 3248)
@@ -0,0 +1,68 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 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.Text;
+using HeuristicLab.Core;
+using HeuristicLab.Data;
+using HeuristicLab.Operators;
+
+namespace HeuristicLab.TestFunctions {
+  /// <summary>
+  /// Schwefel Function (Sine Root)<br/>
+  /// Domain:  [-500.0 , 500.0]^n<br/>
+  /// Optimum: 0.0 at (420.968746453712, 420.968746453712, ..., 420.968746453712)
+  /// </summary>
+  public class SchwefelEvaluator : TestFunctionEvaluatorBase {
+    /// <inheritdoc select="summary"/>
+    public override string Description {
+      get { return
+@"Schwefel Function (Sine Root)
+
+Domain:  [-500.0 , 500.0]^n
+Optimum: 0.0 at (420.968746453712, 420.968746453712, ..., 420.968746453712)";
+          }
+    }
+
+    /// <summary>
+    /// Evaluates the test function for a specific <paramref name="point"/>.
+    /// </summary>
+    /// <param name="point">N-dimensional point for which the test function should be evaluated.</param>
+    /// <returns>The result value of the Schwefel function at the given point.</returns>
+    public static double Apply(double[] point) {
+      double result = 418.982887272433 * point.Length;
+      for (int i = 0; i < point.Length; i++)
+        result -= point[i] * Math.Sin(Math.Sqrt(Math.Abs(point[i])));
+      return (result);
+    }
+
+    /// <summary>
+    /// Evaluates the test function for a specific <paramref name="point"/>.
+    /// </summary>
+    /// <remarks>Calls <see cref="Apply"/>.</remarks>
+    /// <param name="point">N-dimensional point for which the test function should be evaluated.</param>
+    /// <returns>The result value of the Schwefel function at the given point.</returns>
+    protected override double EvaluateFunction(double[] point) {
+      return Apply(point);
+    }
+  }
+}
Index: trunk/sources/HeuristicLab.TestFunctions/3.3/SphereEvaluator.cs
===================================================================
--- trunk/sources/HeuristicLab.TestFunctions/3.3/SphereEvaluator.cs	(revision 3248)
+++ trunk/sources/HeuristicLab.TestFunctions/3.3/SphereEvaluator.cs	(revision 3248)
@@ -0,0 +1,68 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 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.Text;
+using HeuristicLab.Core;
+using HeuristicLab.Data;
+using HeuristicLab.Operators;
+
+namespace HeuristicLab.TestFunctions {
+  /// <summary>
+  /// Sphere Function<br/>
+  /// Domain:  [-5.12 , 5.12]^n<br/>
+  /// Optimum: 0.0 at (0, 0, ..., 0)
+  /// </summary>
+  public class SphereEvaluator : TestFunctionEvaluatorBase {
+    /// <inheritdoc select="summary"/>
+    public override string Description {
+      get { return
+@"Sphere Function
+
+Domain:  [-5.12 , 5.12]^n
+Optimum: 0.0 at (0, 0, ..., 0)";
+          }
+    }
+
+    /// <summary>
+    /// Evaluates the test function for a specific <paramref name="point"/>.
+    /// </summary>
+    /// <param name="point">N-dimensional point for which the test function should be evaluated.</param>
+    /// <returns>The result value of the Sphere function at the given point.</returns>
+    public static double Apply(double[] point) {
+      double result = 0;
+      for (int i = 0; i < point.Length; i++)
+        result += point[i] * point[i];
+      return result;
+    }
+
+    /// <summary>
+    /// Evaluates the test function for a specific <paramref name="point"/>.
+    /// </summary>
+    /// <remarks>Calls <see cref="Apply"/>.</remarks>
+    /// <param name="point">N-dimensional point for which the test function should be evaluated.</param>
+    /// <returns>The result value of the Sphere function at the given point.</returns>
+    protected override double EvaluateFunction(double[] point) {
+      return Apply(point);
+    }
+  }
+}
Index: trunk/sources/HeuristicLab.TestFunctions/3.3/SumSquaresEvaluator.cs
===================================================================
--- trunk/sources/HeuristicLab.TestFunctions/3.3/SumSquaresEvaluator.cs	(revision 3248)
+++ trunk/sources/HeuristicLab.TestFunctions/3.3/SumSquaresEvaluator.cs	(revision 3248)
@@ -0,0 +1,66 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 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.Text;
+
+namespace HeuristicLab.TestFunctions {
+  /// <summary>
+  /// Sum Squares Function<br/>
+  /// Domain:  [-10.0 , 10.0]^n<br/>
+  /// Optimum: 0.0 at (0.0, 0.0, ..., 0.0)
+  /// </summary>
+  public class SumSquaresEvaluator : TestFunctionEvaluatorBase {
+    /// <inheritdoc select="summary"/>
+    public override string Description {
+      get { return
+@"Sum Squares Function
+
+Domain:  [-10.0 , 10.0]^n
+Optimum: 0.0 at (0.0, 0.0, ..., 0.0)";
+          }
+    }
+
+    /// <summary>
+    /// Evaluates the test function for a specific <paramref name="point"/>.
+    /// </summary>
+    /// <param name="point">N-dimensional point for which the test function should be evaluated.</param>
+    /// <returns>The result value of the Sum Squares function at the given point.</returns>
+    public static double Apply(double[] point) {
+      double result = 0;
+      for (int i = 0; i < point.Length; i++) {
+        result += i * point[i] * point[i];
+      }
+      return result;
+    }
+
+    /// <summary>
+    /// Evaluates the test function for a specific <paramref name="point"/>.
+    /// </summary>
+    /// <remarks>Calls <see cref="Apply"/>.</remarks>
+    /// <param name="point">N-dimensional point for which the test function should be evaluated.</param>
+    /// <returns>The result value of the Sum Squares function at the given point.</returns>
+    protected override double EvaluateFunction(double[] point) {
+      return Apply(point);
+    }
+  }
+}
Index: trunk/sources/HeuristicLab.TestFunctions/3.3/TestFunctionEvaluatorBase.cs
===================================================================
--- trunk/sources/HeuristicLab.TestFunctions/3.3/TestFunctionEvaluatorBase.cs	(revision 3248)
+++ trunk/sources/HeuristicLab.TestFunctions/3.3/TestFunctionEvaluatorBase.cs	(revision 3248)
@@ -0,0 +1,59 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 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.Text;
+using HeuristicLab.Core;
+using HeuristicLab.Data;
+using HeuristicLab.Operators;
+
+namespace HeuristicLab.TestFunctions {
+  /// <summary>
+  /// Base class for a test function evaluator.
+  /// </summary>
+  public abstract class TestFunctionEvaluatorBase : SingleObjectiveEvaluatorBase {
+    /// <summary>
+    /// Initializes a new instance of <see cref="TestFunctionEvaluatorBase"/> with one variable info
+    /// (<c>Point</c>).
+    /// </summary>
+    public TestFunctionEvaluatorBase() {
+      AddVariableInfo(new VariableInfo("Point", "n-dimensional point for which the test function should be evaluated", typeof(DoubleArrayData), VariableKind.In));
+    }
+
+    /// <summary>
+    /// Evaluates the test function for a specific point.
+    /// </summary>
+    /// <remarks>Calls <see cref="EvaluateFunction(double[])"/>.</remarks>
+    /// <param name="scope">The current scope with the point for which to evaluate.</param>
+    /// <returns>The result value of the function at the given point.</returns>
+    protected sealed override double Evaluate(IScope scope) {
+      return EvaluateFunction(GetVariableValue<DoubleArrayData>("Point", scope, false).Data);
+    }
+
+    /// <summary>
+    /// Evaluates the test function for a specific <paramref name="point"/>.
+    /// </summary>
+    /// <param name="point">N-dimensional point for which the test function should be evaluated.</param>
+    /// <returns>The result value of the function at the given point.</returns>
+    protected abstract double EvaluateFunction(double[] point);
+  }
+}
Index: trunk/sources/HeuristicLab.TestFunctions/3.3/TestFunctionInjector.cs
===================================================================
--- trunk/sources/HeuristicLab.TestFunctions/3.3/TestFunctionInjector.cs	(revision 3248)
+++ trunk/sources/HeuristicLab.TestFunctions/3.3/TestFunctionInjector.cs	(revision 3248)
@@ -0,0 +1,97 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 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.Text;
+using HeuristicLab.Core;
+using HeuristicLab.Data;
+
+namespace HeuristicLab.TestFunctions {
+  /// <summary>
+  /// Injects the necessary variables for optimizing a test function
+  /// </summary>
+  public class TestFunctionInjector : OperatorBase {
+    /// <inheritdoc select="summary"/>
+    public override string Description {
+      get {
+        return @"Injects the necessary variables for optimizing a test function";
+      }
+    }
+
+    /// <summary>
+    /// Gets or sets the boolean flag whether it is an optimization problem or not.
+    /// </summary>
+    public bool Maximization {
+      get { return GetVariable("Maximization").GetValue<BoolData>().Data; }
+      set { GetVariable("Maximization").Value = new BoolData(value); }
+    }
+
+    /// <summary>
+    /// Gets or sets the lower bound.
+    /// </summary>
+    public double LowerBound {
+      get { return GetVariable("LowerBound").GetValue<DoubleData>().Data; }
+      set { GetVariable("LowerBound").Value = new DoubleData(value); }
+    }
+
+    /// <summary>
+    /// Gets or sets the upper bound.
+    /// </summary>
+    public double UpperBound {
+      get { return GetVariable("UpperBound").GetValue<DoubleData>().Data; }
+      set { GetVariable("UpperBound").Value = new DoubleData(value); }
+    }
+
+    /// <summary>
+    /// Gets or sets the dimension.
+    /// </summary>
+    public int Dimension {
+      get { return GetVariable("Dimension").GetValue<IntData>().Data; }
+      set { GetVariable("Dimension").Value = new IntData(value); }
+    }
+
+    /// <summary>
+    /// Initializes a new instance of <see cref="TestFunctionInjector"/> with four variable infos
+    /// (<c>Maximization</c>, <c>LowerBound</c>, <c>UpperBound</c> and <c>Dimension</c>).
+    /// </summary>
+    public TestFunctionInjector()
+      : base() {
+      AddVariable(new Variable("Maximization", new BoolData(false)));
+      AddVariable(new Variable("LowerBound", new DoubleData(-32.76)));
+      AddVariable(new Variable("UpperBound", new DoubleData(32.76)));
+      AddVariable(new Variable("Dimension", new IntData(2)));
+    }
+
+    /// <summary>
+    /// Injects the necessary variables for optimizing a test function.
+    /// </summary>
+    /// <param name="scope">The scope where to inject the variables.</param>
+    /// <returns><c>null</c>.</returns>
+    public override IOperation Apply(IScope scope) {
+      scope.AddVariable((IVariable)GetVariable("Maximization").Clone());
+      scope.AddVariable((IVariable)GetVariable("LowerBound").Clone());
+      scope.AddVariable((IVariable)GetVariable("UpperBound").Clone());
+      scope.AddVariable((IVariable)GetVariable("Dimension").Clone());
+      return null;
+    }
+  }
+}
Index: trunk/sources/HeuristicLab.TestFunctions/3.3/TestFunctionInjectorView.Designer.cs
===================================================================
--- trunk/sources/HeuristicLab.TestFunctions/3.3/TestFunctionInjectorView.Designer.cs	(revision 3248)
+++ trunk/sources/HeuristicLab.TestFunctions/3.3/TestFunctionInjectorView.Designer.cs	(revision 3248)
@@ -0,0 +1,128 @@
+﻿namespace HeuristicLab.TestFunctions {
+  partial class TestFunctionInjectorView {
+    /// <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.DimensionLabel = new System.Windows.Forms.Label();
+      this.MinimumLabel = new System.Windows.Forms.Label();
+      this.maximumLabel = new System.Windows.Forms.Label();
+      this.maximizationCheckBox = new System.Windows.Forms.CheckBox();
+      this.dimensionTextBox = new System.Windows.Forms.TextBox();
+      this.lowerBoundTextBox = new System.Windows.Forms.TextBox();
+      this.upperBoundTextBox = new System.Windows.Forms.TextBox();
+      this.SuspendLayout();
+      // 
+      // DimensionLabel
+      // 
+      this.DimensionLabel.Anchor = System.Windows.Forms.AnchorStyles.None;
+      this.DimensionLabel.AutoSize = true;
+      this.DimensionLabel.Location = new System.Drawing.Point(3, 29);
+      this.DimensionLabel.Name = "DimensionLabel";
+      this.DimensionLabel.Size = new System.Drawing.Size(59, 13);
+      this.DimensionLabel.TabIndex = 1;
+      this.DimensionLabel.Text = "Dimension:";
+      // 
+      // MinimumLabel
+      // 
+      this.MinimumLabel.Anchor = System.Windows.Forms.AnchorStyles.None;
+      this.MinimumLabel.AutoSize = true;
+      this.MinimumLabel.Location = new System.Drawing.Point(3, 55);
+      this.MinimumLabel.Name = "MinimumLabel";
+      this.MinimumLabel.Size = new System.Drawing.Size(73, 13);
+      this.MinimumLabel.TabIndex = 3;
+      this.MinimumLabel.Text = "Lower Bound:";
+      // 
+      // maximumLabel
+      // 
+      this.maximumLabel.Anchor = System.Windows.Forms.AnchorStyles.None;
+      this.maximumLabel.AutoSize = true;
+      this.maximumLabel.Location = new System.Drawing.Point(3, 81);
+      this.maximumLabel.Name = "maximumLabel";
+      this.maximumLabel.Size = new System.Drawing.Size(73, 13);
+      this.maximumLabel.TabIndex = 5;
+      this.maximumLabel.Text = "Upper Bound:";
+      // 
+      // maximizationCheckBox
+      // 
+      this.maximizationCheckBox.Anchor = System.Windows.Forms.AnchorStyles.None;
+      this.maximizationCheckBox.AutoSize = true;
+      this.maximizationCheckBox.Location = new System.Drawing.Point(83, 3);
+      this.maximizationCheckBox.Name = "maximizationCheckBox";
+      this.maximizationCheckBox.Size = new System.Drawing.Size(86, 17);
+      this.maximizationCheckBox.TabIndex = 0;
+      this.maximizationCheckBox.Text = "Maximization";
+      this.maximizationCheckBox.UseVisualStyleBackColor = true;
+      // 
+      // dimensionTextBox
+      // 
+      this.dimensionTextBox.Anchor = System.Windows.Forms.AnchorStyles.None;
+      this.dimensionTextBox.Location = new System.Drawing.Point(82, 26);
+      this.dimensionTextBox.Name = "dimensionTextBox";
+      this.dimensionTextBox.Size = new System.Drawing.Size(100, 20);
+      this.dimensionTextBox.TabIndex = 2;
+      // 
+      // lowerBoundTextBox
+      // 
+      this.lowerBoundTextBox.Anchor = System.Windows.Forms.AnchorStyles.None;
+      this.lowerBoundTextBox.Location = new System.Drawing.Point(82, 52);
+      this.lowerBoundTextBox.Name = "lowerBoundTextBox";
+      this.lowerBoundTextBox.Size = new System.Drawing.Size(100, 20);
+      this.lowerBoundTextBox.TabIndex = 4;
+      // 
+      // upperBoundTextBox
+      // 
+      this.upperBoundTextBox.Anchor = System.Windows.Forms.AnchorStyles.None;
+      this.upperBoundTextBox.Location = new System.Drawing.Point(82, 78);
+      this.upperBoundTextBox.Name = "upperBoundTextBox";
+      this.upperBoundTextBox.Size = new System.Drawing.Size(100, 20);
+      this.upperBoundTextBox.TabIndex = 6;
+      // 
+      // TestFunctionInjectorView
+      // 
+      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+      this.Controls.Add(this.upperBoundTextBox);
+      this.Controls.Add(this.lowerBoundTextBox);
+      this.Controls.Add(this.dimensionTextBox);
+      this.Controls.Add(this.maximizationCheckBox);
+      this.Controls.Add(this.maximumLabel);
+      this.Controls.Add(this.MinimumLabel);
+      this.Controls.Add(this.DimensionLabel);
+      this.Name = "TestFunctionInjectorView";
+      this.Size = new System.Drawing.Size(186, 101);
+      this.ResumeLayout(false);
+      this.PerformLayout();
+
+    }
+
+    #endregion
+
+    private System.Windows.Forms.Label DimensionLabel;
+    private System.Windows.Forms.Label MinimumLabel;
+    private System.Windows.Forms.Label maximumLabel;
+    private System.Windows.Forms.CheckBox maximizationCheckBox;
+    private System.Windows.Forms.TextBox dimensionTextBox;
+    private System.Windows.Forms.TextBox lowerBoundTextBox;
+    private System.Windows.Forms.TextBox upperBoundTextBox;
+  }
+}
Index: trunk/sources/HeuristicLab.TestFunctions/3.3/TestFunctionInjectorView.cs
===================================================================
--- trunk/sources/HeuristicLab.TestFunctions/3.3/TestFunctionInjectorView.cs	(revision 3248)
+++ trunk/sources/HeuristicLab.TestFunctions/3.3/TestFunctionInjectorView.cs	(revision 3248)
@@ -0,0 +1,117 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Drawing;
+using System.Data;
+using System.Text;
+using System.Windows.Forms;
+
+using HeuristicLab.Core;
+using HeuristicLab.Data;
+using HeuristicLab.Core.Views;
+using HeuristicLab.MainForm;
+
+namespace HeuristicLab.TestFunctions {
+  /// <summary>
+  /// Visual representation of a <see cref="TestFunctionInjector"/>.
+  /// </summary>
+  [Content(typeof(TestFunctionInjector), true)]
+  public partial class TestFunctionInjectorView : ItemViewBase {
+    /// <summary>
+    /// Gets or sets the TestFunctionInjector to represent visually.
+    /// </summary>
+    /// <remarks>Uses property <see cref="ViewBase.Item"/> of base class <see cref="ViewBase"/>.
+    /// No own data storage present.</remarks>
+    public TestFunctionInjector TestFunctionInjector {
+      get { return (TestFunctionInjector)base.Item; }
+      set { base.Item = value; }
+    }
+
+    /// <summary>
+    /// Initializes a new instance of <see cref="TestFunctionInjectorView"/>.
+    /// </summary>
+    public TestFunctionInjectorView() {
+      InitializeComponent();
+    }
+
+    /// <summary>
+    /// Initializes a new instance of <see cref="TestFunctionInjectorView"/> with the given
+    /// <paramref name="testFunctionInjector"/> to display.
+    /// </summary>
+    /// <param name="testFunctionInjector">The injector to represent visually.</param>
+    public TestFunctionInjectorView(TestFunctionInjector testFunctionInjector)
+      : this() {
+      TestFunctionInjector = testFunctionInjector;
+    }
+
+    /// <summary>
+    /// Removes the eventhandler from the underlying controls.
+    /// </summary>
+    /// <remarks>Calls <see cref="ViewBase.RemoveItemEvents"/> of base class <see cref="ViewBase"/>.
+    /// </remarks>
+    protected override void RemoveItemEvents() {
+      maximizationCheckBox.DataBindings.Clear();
+      dimensionTextBox.DataBindings.Clear();
+      lowerBoundTextBox.DataBindings.Clear();
+      upperBoundTextBox.DataBindings.Clear();
+      base.RemoveItemEvents();
+    }
+
+    /// <summary>
+    /// Adds eventhandlers to the underlying controls.
+    /// </summary>
+    /// <remarks>Calls <see cref="ViewBase.AddItemEvents"/> of base class <see cref="ViewBase"/>.
+    /// </remarks>
+    protected override void AddItemEvents() {
+      base.AddItemEvents();
+      maximizationCheckBox.DataBindings.Add("Checked", TestFunctionInjector, "Maximization");
+      dimensionTextBox.DataBindings.Add("Text", TestFunctionInjector, "Dimension");
+      lowerBoundTextBox.DataBindings.Add("Text", TestFunctionInjector, "LowerBound");
+      upperBoundTextBox.DataBindings.Add("Text", TestFunctionInjector, "UpperBound");
+    }
+
+    /// <summary>
+    /// Updates all controls with the latest values.
+    /// </summary>
+    /// <remarks>Calls <see cref="ViewBase.UpdateControls"/> of base class <see cref="ViewBase"/>.</remarks>
+    protected override void UpdateControls() {
+      base.UpdateControls();
+      if (TestFunctionInjector == null) {
+        maximizationCheckBox.Enabled = false;
+        maximizationCheckBox.Checked = false;
+        dimensionTextBox.Enabled = false;
+        dimensionTextBox.Text = "-";
+        lowerBoundTextBox.Enabled = false;
+        lowerBoundTextBox.Text = "-";
+        upperBoundTextBox.Enabled = false;
+        upperBoundTextBox.Text = "-";
+      } else {
+        maximizationCheckBox.Enabled = true;
+        dimensionTextBox.Enabled = true;
+        lowerBoundTextBox.Enabled = true;
+        upperBoundTextBox.Enabled = true;
+      }
+    }
+  }
+}
Index: trunk/sources/HeuristicLab.TestFunctions/3.3/TestFunctionInjectorView.resx
===================================================================
--- trunk/sources/HeuristicLab.TestFunctions/3.3/TestFunctionInjectorView.resx	(revision 3248)
+++ trunk/sources/HeuristicLab.TestFunctions/3.3/TestFunctionInjectorView.resx	(revision 3248)
@@ -0,0 +1,120 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+</root>
Index: trunk/sources/HeuristicLab.TestFunctions/3.3/ZakharovEvaluator.cs
===================================================================
--- trunk/sources/HeuristicLab.TestFunctions/3.3/ZakharovEvaluator.cs	(revision 3248)
+++ trunk/sources/HeuristicLab.TestFunctions/3.3/ZakharovEvaluator.cs	(revision 3248)
@@ -0,0 +1,70 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 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.Text;
+
+namespace HeuristicLab.TestFunctions {
+  /// <summary>
+  /// Zakharov Function<br/>
+  /// Domain:  [-5.0 , 10.0]^n<br/>
+  /// Optimum: 0.0 at (0.0, 0.0, ..., 0.0)
+  /// </summary>
+  public class ZakharovEvaluator : TestFunctionEvaluatorBase {
+    /// <inheritdoc select="summary"/>
+    public override string Description {
+      get { return
+@"Zakharov Function
+
+Domain:  [-5.0 , 10.0]^n
+Optimum: 0.0 at (0.0, 0.0, ..., 0.0)";
+          }
+    }
+
+    /// <summary>
+    /// Evaluates the test function for a specific <paramref name="point"/>.
+    /// </summary>
+    /// <param name="point">N-dimensional point for which the test function should be evaluated.</param>
+    /// <returns>The result value of the Zakharov function at the given point.</returns>
+    public static double Apply(double[] point) {
+      int length = point.Length;
+      double s1 = 0;
+      double s2 = 0;
+
+      for (int i = 0; i < length; i++) {
+        s1 = s1 + point[i] * point[i];
+        s2 = s2 + 0.5 * i * point[i];
+      }
+      return s1 + s2 * s2 + s2 * s2 * s2 * s2;
+    }
+
+    /// <summary>
+    /// Evaluates the test function for a specific <paramref name="point"/>.
+    /// </summary>
+    /// <remarks>Calls <see cref="Apply"/>.</remarks>
+    /// <param name="point">N-dimensional point for which the test function should be evaluated.</param>
+    /// <returns>The result value of the Zakharov function at the given point.</returns>
+    protected override double EvaluateFunction(double[] point) {
+      return Apply(point);
+    }
+  }
+}
