Index: branches/HeuristicLab.MetaOptimization/HeuristicLab.MetaOptimization.Test/HeuristicLab.MetaOptimization.Test.csproj
===================================================================
--- branches/HeuristicLab.MetaOptimization/HeuristicLab.MetaOptimization.Test/HeuristicLab.MetaOptimization.Test.csproj	(revision 4997)
+++ branches/HeuristicLab.MetaOptimization/HeuristicLab.MetaOptimization.Test/HeuristicLab.MetaOptimization.Test.csproj	(revision 4997)
@@ -0,0 +1,335 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">x86</Platform>
+    <ProductVersion>8.0.30703</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{0E232F46-FD0B-4FEA-8C22-AF18DE0D151E}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>HeuristicLab.MetaOptimization.Test</RootNamespace>
+    <AssemblyName>HeuristicLab.MetaOptimization.Test</AssemblyName>
+    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
+    <TargetFrameworkProfile>
+    </TargetFrameworkProfile>
+    <FileAlignment>512</FileAlignment>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
+    <PlatformTarget>x86</PlatformTarget>
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
+    <PlatformTarget>x86</PlatformTarget>
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|AnyCPU'">
+    <PlatformTarget>AnyCPU</PlatformTarget>
+    <OutputPath>bin\Debug\</OutputPath>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|AnyCPU'">
+    <PlatformTarget>AnyCPU</PlatformTarget>
+    <OutputPath>bin\Release\</OutputPath>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="ALGLIB-2.5.0">
+      <HintPath>..\..\..\..\..\..\..\Program Files\HeuristicLab 3.3\ALGLIB-2.5.0.dll</HintPath>
+    </Reference>
+    <Reference Include="ALGLIB-3.1.0">
+      <HintPath>..\..\..\..\..\..\..\Program Files\HeuristicLab 3.3\ALGLIB-3.1.0.dll</HintPath>
+    </Reference>
+    <Reference Include="Google.ProtocolBuffers-0.9.1">
+      <HintPath>..\..\..\..\..\..\..\Program Files\HeuristicLab 3.3\Google.ProtocolBuffers-0.9.1.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.ALGLIB-2.5.0">
+      <HintPath>..\..\..\..\..\..\..\Program Files\HeuristicLab 3.3\HeuristicLab.ALGLIB-2.5.0.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.ALGLIB-3.1.0">
+      <HintPath>..\..\..\..\..\..\..\Program Files\HeuristicLab 3.3\HeuristicLab.ALGLIB-3.1.0.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Algorithms.DataAnalysis-3.3">
+      <HintPath>..\..\..\..\..\..\..\Program Files\HeuristicLab 3.3\HeuristicLab.Algorithms.DataAnalysis-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Algorithms.DataAnalysis.Views-3.3">
+      <HintPath>..\..\..\..\..\..\..\Program Files\HeuristicLab 3.3\HeuristicLab.Algorithms.DataAnalysis.Views-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Algorithms.EvolutionStrategy-3.3">
+      <HintPath>..\..\..\..\..\..\..\Program Files\HeuristicLab 3.3\HeuristicLab.Algorithms.EvolutionStrategy-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Algorithms.GeneticAlgorithm-3.3">
+      <HintPath>..\..\..\..\..\Program Files\HeuristicLab 3.3\HeuristicLab.Algorithms.GeneticAlgorithm-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Algorithms.LocalSearch-3.3">
+      <HintPath>..\..\..\..\..\..\..\Program Files\HeuristicLab 3.3\HeuristicLab.Algorithms.LocalSearch-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Algorithms.OffspringSelectionGeneticAlgorithm-3.3">
+      <HintPath>..\..\..\..\..\..\..\Program Files\HeuristicLab 3.3\HeuristicLab.Algorithms.OffspringSelectionGeneticAlgorithm-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Algorithms.SimulatedAnnealing-3.3">
+      <HintPath>..\..\..\..\..\..\..\Program Files\HeuristicLab 3.3\HeuristicLab.Algorithms.SimulatedAnnealing-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Algorithms.TabuSearch-3.3">
+      <HintPath>..\..\..\..\..\..\..\Program Files\HeuristicLab 3.3\HeuristicLab.Algorithms.TabuSearch-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Analysis-3.3">
+      <HintPath>..\..\..\..\..\..\..\Program Files\HeuristicLab 3.3\HeuristicLab.Analysis-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Analysis.Views-3.3">
+      <HintPath>..\..\..\..\..\..\..\Program Files\HeuristicLab 3.3\HeuristicLab.Analysis.Views-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Clients.Common-3.3">
+      <HintPath>..\..\..\..\..\..\..\Program Files\HeuristicLab 3.3\HeuristicLab.Clients.Common-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.CodeEditor-3.3">
+      <HintPath>..\..\..\..\..\..\..\Program Files\HeuristicLab 3.3\HeuristicLab.CodeEditor-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Collections-3.3">
+      <HintPath>..\..\HeuristicLab.Hive\sources\HeuristicLab.Hive\HeuristicLab.Hive.Slave.Core\3.3\bin\Debug\HeuristicLab.Collections-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Common-3.3">
+      <HintPath>..\..\..\..\..\Program Files\HeuristicLab 3.3\HeuristicLab.Common-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Common.Resources-3.3">
+      <HintPath>..\..\..\..\..\..\..\Program Files\HeuristicLab 3.3\HeuristicLab.Common.Resources-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Core-3.3">
+      <HintPath>..\..\..\..\..\Program Files\HeuristicLab 3.3\HeuristicLab.Core-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Core.Views-3.3">
+      <HintPath>..\..\..\..\..\..\..\Program Files\HeuristicLab 3.3\HeuristicLab.Core.Views-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Data-3.3">
+      <HintPath>..\..\..\..\..\Program Files\HeuristicLab 3.3\HeuristicLab.Data-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Data.Views-3.3">
+      <HintPath>..\..\..\..\..\..\..\Program Files\HeuristicLab 3.3\HeuristicLab.Data.Views-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Encodings.BinaryVectorEncoding-3.3">
+      <HintPath>..\..\..\..\..\Program Files\HeuristicLab 3.3\HeuristicLab.Encodings.BinaryVectorEncoding-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Encodings.IntegerVectorEncoding-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
+      <HintPath>..\..\..\..\..\Program Files\HeuristicLab 3.3\HeuristicLab.Encodings.IntegerVectorEncoding-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Encodings.PermutationEncoding-3.3">
+      <HintPath>..\..\..\..\..\Program Files\HeuristicLab 3.3\HeuristicLab.Encodings.PermutationEncoding-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Encodings.PermutationEncoding.Views-3.3">
+      <HintPath>..\..\..\..\..\Program Files\HeuristicLab 3.3\HeuristicLab.Encodings.PermutationEncoding.Views-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Encodings.RealVectorEncoding-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
+      <HintPath>..\..\..\..\..\Program Files\HeuristicLab 3.3\HeuristicLab.Encodings.RealVectorEncoding-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Encodings.SymbolicExpressionTreeEncoding-3.3">
+      <HintPath>..\..\..\..\..\..\..\Program Files\HeuristicLab 3.3\HeuristicLab.Encodings.SymbolicExpressionTreeEncoding-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Views-3.3">
+      <HintPath>..\..\..\..\..\..\..\Program Files\HeuristicLab 3.3\HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Views-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.LibSVM-1.6.3">
+      <HintPath>..\..\..\..\..\..\..\Program Files\HeuristicLab 3.3\HeuristicLab.LibSVM-1.6.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.log4net-1.2.10.0">
+      <HintPath>..\..\..\..\..\..\..\Program Files\HeuristicLab 3.3\HeuristicLab.log4net-1.2.10.0.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.MainForm-3.3">
+      <HintPath>..\..\..\..\..\..\..\Program Files\HeuristicLab 3.3\HeuristicLab.MainForm-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.MainForm.WindowsForms-3.3">
+      <HintPath>..\..\..\..\..\..\..\Program Files\HeuristicLab 3.3\HeuristicLab.MainForm.WindowsForms-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Netron-3.0.2672.12446">
+      <HintPath>..\..\..\..\..\..\..\Program Files\HeuristicLab 3.3\HeuristicLab.Netron-3.0.2672.12446.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Operators-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
+      <HintPath>..\..\..\..\..\Program Files\HeuristicLab 3.3\HeuristicLab.Operators-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Operators.Programmable-3.3">
+      <HintPath>..\..\..\..\..\..\..\Program Files\HeuristicLab 3.3\HeuristicLab.Operators.Programmable-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Operators.Views-3.3">
+      <HintPath>..\..\..\..\..\..\..\Program Files\HeuristicLab 3.3\HeuristicLab.Operators.Views-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Operators.Views.GraphVisualization-3.3">
+      <HintPath>..\..\..\..\..\..\..\Program Files\HeuristicLab 3.3\HeuristicLab.Operators.Views.GraphVisualization-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Optimization-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
+      <HintPath>..\..\..\..\..\Program Files\HeuristicLab 3.3\HeuristicLab.Optimization-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Optimization.Operators-3.3">
+      <HintPath>..\..\..\..\..\..\..\Program Files\HeuristicLab 3.3\HeuristicLab.Optimization.Operators-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Optimization.Views-3.3">
+      <HintPath>..\..\..\..\..\..\..\Program Files\HeuristicLab 3.3\HeuristicLab.Optimization.Views-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Optimizer-3.3">
+      <HintPath>..\..\..\..\..\Program Files\HeuristicLab 3.3\HeuristicLab.Optimizer-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Parameters-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
+      <HintPath>..\..\..\..\..\Program Files\HeuristicLab 3.3\HeuristicLab.Parameters-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Parameters.Views-3.3">
+      <HintPath>..\..\..\..\..\..\..\Program Files\HeuristicLab 3.3\HeuristicLab.Parameters.Views-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Persistence-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
+      <HintPath>..\..\..\..\..\Program Files\HeuristicLab 3.3\HeuristicLab.Persistence-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Persistence.GUI-3.3">
+      <HintPath>..\..\..\..\..\..\..\Program Files\HeuristicLab 3.3\HeuristicLab.Persistence.GUI-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.PluginInfrastructure-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
+      <HintPath>..\..\..\..\..\Program Files\HeuristicLab 3.3\HeuristicLab.PluginInfrastructure-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Problems.ArtificialAnt-3.3">
+      <HintPath>..\..\..\..\..\..\..\Program Files\HeuristicLab 3.3\HeuristicLab.Problems.ArtificialAnt-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Problems.ArtificialAnt.Views-3.3">
+      <HintPath>..\..\..\..\..\..\..\Program Files\HeuristicLab 3.3\HeuristicLab.Problems.ArtificialAnt.Views-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Problems.DataAnalysis-3.3">
+      <HintPath>..\..\..\..\..\..\..\Program Files\HeuristicLab 3.3\HeuristicLab.Problems.DataAnalysis-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Problems.DataAnalysis.Classification-3.3">
+      <HintPath>..\..\..\..\..\..\..\Program Files\HeuristicLab 3.3\HeuristicLab.Problems.DataAnalysis.Classification-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Problems.DataAnalysis.Classification.Views-3.3">
+      <HintPath>..\..\..\..\..\..\..\Program Files\HeuristicLab 3.3\HeuristicLab.Problems.DataAnalysis.Classification.Views-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Problems.DataAnalysis.Regression-3.3">
+      <HintPath>..\..\..\..\..\..\..\Program Files\HeuristicLab 3.3\HeuristicLab.Problems.DataAnalysis.Regression-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Problems.DataAnalysis.Views-3.3">
+      <HintPath>..\..\..\..\..\..\..\Program Files\HeuristicLab 3.3\HeuristicLab.Problems.DataAnalysis.Views-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Problems.ExternalEvaluation-3.3">
+      <HintPath>..\..\..\..\..\..\..\Program Files\HeuristicLab 3.3\HeuristicLab.Problems.ExternalEvaluation-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Problems.ExternalEvaluation.GP-3.3">
+      <HintPath>..\..\..\..\..\..\..\Program Files\HeuristicLab 3.3\HeuristicLab.Problems.ExternalEvaluation.GP-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Problems.ExternalEvaluation.GP.Views-3.3">
+      <HintPath>..\..\..\..\..\..\..\Program Files\HeuristicLab 3.3\HeuristicLab.Problems.ExternalEvaluation.GP.Views-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Problems.ExternalEvaluation.Views-3.3">
+      <HintPath>..\..\..\..\..\..\..\Program Files\HeuristicLab 3.3\HeuristicLab.Problems.ExternalEvaluation.Views-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Problems.Knapsack-3.3">
+      <HintPath>..\..\..\..\..\..\..\Program Files\HeuristicLab 3.3\HeuristicLab.Problems.Knapsack-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Problems.Knapsack.Views-3.3">
+      <HintPath>..\..\..\..\..\..\..\Program Files\HeuristicLab 3.3\HeuristicLab.Problems.Knapsack.Views-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Problems.OneMax-3.3">
+      <HintPath>..\..\..\..\..\..\..\Program Files\HeuristicLab 3.3\HeuristicLab.Problems.OneMax-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Problems.OneMax.Views-3.3">
+      <HintPath>..\..\..\..\..\..\..\Program Files\HeuristicLab 3.3\HeuristicLab.Problems.OneMax.Views-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Problems.TestFunctions-3.3">
+      <HintPath>..\..\..\..\..\Program Files\HeuristicLab 3.3\HeuristicLab.Problems.TestFunctions-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Problems.TestFunctions.Views-3.3">
+      <HintPath>..\..\..\..\..\..\..\Program Files\HeuristicLab 3.3\HeuristicLab.Problems.TestFunctions.Views-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Problems.TravelingSalesman-3.3">
+      <HintPath>..\..\..\..\..\..\..\Program Files\HeuristicLab 3.3\HeuristicLab.Problems.TravelingSalesman-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Problems.TravelingSalesman.Views-3.3">
+      <HintPath>..\..\..\..\..\..\..\Program Files\HeuristicLab 3.3\HeuristicLab.Problems.TravelingSalesman.Views-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Problems.VehicleRouting-3.3">
+      <HintPath>..\..\..\..\..\..\..\Program Files\HeuristicLab 3.3\HeuristicLab.Problems.VehicleRouting-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Problems.VehicleRouting.Views-3.3">
+      <HintPath>..\..\..\..\..\..\..\Program Files\HeuristicLab 3.3\HeuristicLab.Problems.VehicleRouting.Views-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.ProtobufCS-0.9.1">
+      <HintPath>..\..\..\..\..\..\..\Program Files\HeuristicLab 3.3\HeuristicLab.ProtobufCS-0.9.1.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Random-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
+      <HintPath>..\..\..\..\..\Program Files\HeuristicLab 3.3\HeuristicLab.Random-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Selection-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
+      <HintPath>..\..\..\..\..\Program Files\HeuristicLab 3.3\HeuristicLab.Selection-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.SequentialEngine-3.3">
+      <HintPath>..\..\..\..\..\Program Files\HeuristicLab 3.3\HeuristicLab.SequentialEngine-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.SharpDevelop-3.1.1.5327">
+      <HintPath>..\..\..\..\..\..\..\Program Files\HeuristicLab 3.3\HeuristicLab.SharpDevelop-3.1.1.5327.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Tracing-3.3">
+      <HintPath>..\..\..\..\..\..\..\Program Files\HeuristicLab 3.3\HeuristicLab.Tracing-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Visualization.ChartControlsExtensions-3.3">
+      <HintPath>..\..\..\..\..\..\..\Program Files\HeuristicLab 3.3\HeuristicLab.Visualization.ChartControlsExtensions-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.WinFormsUI-2.3.1">
+      <HintPath>..\..\..\..\..\..\..\Program Files\HeuristicLab 3.3\HeuristicLab.WinFormsUI-2.3.1.dll</HintPath>
+    </Reference>
+    <Reference Include="ICSharpCode.NRefactory">
+      <HintPath>..\..\..\..\..\..\..\Program Files\HeuristicLab 3.3\ICSharpCode.NRefactory.dll</HintPath>
+    </Reference>
+    <Reference Include="ICSharpCode.SharpDevelop.Dom">
+      <HintPath>..\..\..\..\..\..\..\Program Files\HeuristicLab 3.3\ICSharpCode.SharpDevelop.Dom.dll</HintPath>
+    </Reference>
+    <Reference Include="ICSharpCode.SharpZipLib">
+      <HintPath>..\..\..\..\..\..\..\Program Files\HeuristicLab 3.3\ICSharpCode.SharpZipLib.dll</HintPath>
+    </Reference>
+    <Reference Include="ICSharpCode.TextEditor">
+      <HintPath>..\..\..\..\..\..\..\Program Files\HeuristicLab 3.3\ICSharpCode.TextEditor.dll</HintPath>
+    </Reference>
+    <Reference Include="LibSVM-1.6.3">
+      <HintPath>..\..\..\..\..\..\..\Program Files\HeuristicLab 3.3\LibSVM-1.6.3.dll</HintPath>
+    </Reference>
+    <Reference Include="log4net">
+      <HintPath>..\..\..\..\..\..\..\Program Files\HeuristicLab 3.3\log4net.dll</HintPath>
+    </Reference>
+    <Reference Include="Mono.Cecil">
+      <HintPath>..\..\..\..\..\..\..\Program Files\HeuristicLab 3.3\Mono.Cecil.dll</HintPath>
+    </Reference>
+    <Reference Include="Netron.Diagramming.Core-3.0.2672.12446">
+      <HintPath>..\..\..\..\..\..\..\Program Files\HeuristicLab 3.3\Netron.Diagramming.Core-3.0.2672.12446.dll</HintPath>
+    </Reference>
+    <Reference Include="System" />
+    <Reference Include="System.Core" />
+    <Reference Include="System.Xml.Linq" />
+    <Reference Include="System.Data.DataSetExtensions" />
+    <Reference Include="System.Data" />
+    <Reference Include="System.Xml" />
+    <Reference Include="WeifenLuo.WinFormsUI.Docking-2.3.1">
+      <HintPath>..\..\..\..\..\..\..\Program Files\HeuristicLab 3.3\WeifenLuo.WinFormsUI.Docking-2.3.1.dll</HintPath>
+    </Reference>
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="Program.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\HeuristicLab.Problems.MetaOptimization\3.3\HeuristicLab.Problems.MetaOptimization-3.3.csproj">
+      <Project>{ABBC1DF6-FCC6-4F86-AB75-B6B3A72E7D17}</Project>
+      <Name>HeuristicLab.Problems.MetaOptimization-3.3</Name>
+    </ProjectReference>
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="app.config" />
+  </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>
+  -->
+</Project>
Index: branches/HeuristicLab.MetaOptimization/HeuristicLab.MetaOptimization.Test/Program.cs
===================================================================
--- branches/HeuristicLab.MetaOptimization/HeuristicLab.MetaOptimization.Test/Program.cs	(revision 4997)
+++ branches/HeuristicLab.MetaOptimization/HeuristicLab.MetaOptimization.Test/Program.cs	(revision 4997)
@@ -0,0 +1,122 @@
+﻿using System.Collections.Generic;
+using System.Diagnostics;
+using System.Linq;
+using HeuristicLab.Algorithms.GeneticAlgorithm;
+using HeuristicLab.Core;
+using HeuristicLab.PluginInfrastructure;
+using HeuristicLab.Problems.MetaOptimization;
+using HeuristicLab.Data;
+using System;
+
+namespace HeuristicLab.MetaOptimization.Test {
+  class Program {
+    static void Main(string[] args) {
+      //TestIntSampling();
+      //TestDoubleSampling();
+
+      GeneticAlgorithm baseLevelAlgorithm = new GeneticAlgorithm();
+      MetaOptimizationProblem metaOptimizationProblem = new MetaOptimizationProblem();
+      metaOptimizationProblem.Algorithm = baseLevelAlgorithm;
+      IValueConfiguration algorithmVc = metaOptimizationProblem.AlgorithmParameterConfiguration;
+
+      //ConfigurePopulationSize(algorithmVc);
+      ConfigureMutationRate(algorithmVc);
+
+      GeneticAlgorithm metaLevelAlgorithm = new GeneticAlgorithm();
+      metaLevelAlgorithm.PopulationSize.Value = 10;
+
+      // set random values
+      for (int i = 0; i < 10; i++) {
+        IValueConfiguration clonedVc = (IValueConfiguration)algorithmVc.Clone();
+        clonedVc.Randomize();
+        clonedVc.Parameterize();
+        GeneticAlgorithm newAlg = (GeneticAlgorithm)clonedVc.ActualValue.Value;
+        //Console.WriteLine(string.Format("PopSize: original: {0}, randomized: {1}", baseLevelAlgorithm.PopulationSize, newAlg.PopulationSize));
+        Console.WriteLine(string.Format("MutRate: original: {0}, randomized: {1}", baseLevelAlgorithm.MutationProbability, newAlg.MutationProbability));
+      }
+
+      // mutate
+      for (int i = 0; i < 10; i++) {
+        IValueConfiguration clonedVc = (IValueConfiguration)algorithmVc.Clone();
+        clonedVc.Mutate();
+        clonedVc.Parameterize();
+        GeneticAlgorithm newAlg = (GeneticAlgorithm)clonedVc.ActualValue.Value;
+        //Console.WriteLine(string.Format("PopSize: original: {0}, mutated: {1}", baseLevelAlgorithm.PopulationSize, newAlg.PopulationSize));
+        Console.WriteLine(string.Format("MutRate: original: {0}, mutated: {1}", baseLevelAlgorithm.MutationProbability, newAlg.MutationProbability));
+      }
+
+      // cross
+      for (int i = 0; i < 10; i++) {
+        IValueConfiguration clonedVc1 = (IValueConfiguration)algorithmVc.Clone();
+        clonedVc1.Randomize();
+        clonedVc1.Parameterize();
+
+        IValueConfiguration clonedVc2 = (IValueConfiguration)algorithmVc.Clone();
+        GeneticAlgorithm first = (GeneticAlgorithm)clonedVc1.ActualValue.Value;
+        GeneticAlgorithm second = (GeneticAlgorithm)clonedVc2.ActualValue.Value;
+
+        var popSizeBefore = first.PopulationSize.Value;
+        var mutRateBefore = first.MutationProbability.Value;
+        clonedVc1.Cross(clonedVc2);
+        clonedVc1.Parameterize();
+
+        //Console.WriteLine(string.Format("PopSize: first: {0}, second: {1}, crossed: {2}", popSizeBefore, second.PopulationSize, first.PopulationSize));
+        Console.WriteLine(string.Format("MutRate: first: {0}, second: {1}, crossed: {2}", mutRateBefore, second.MutationProbability, first.MutationProbability));
+      }
+
+      Debugger.Break();
+    }
+
+    private static void ConfigurePopulationSize(IValueConfiguration algorithmVc) {
+      var populationSizePc = algorithmVc.ParameterConfigurations.Where(x => x.Name == "PopulationSize").SingleOrDefault();
+      populationSizePc.Optimize = true;
+      var populationSizeVc = populationSizePc.ValueConfigurations.First();
+      populationSizeVc.Optimize = true;
+      populationSizeVc.RangeConstraint.LowerBound = new IntValue(0);
+      populationSizeVc.RangeConstraint.UpperBound = new IntValue(100);
+      populationSizeVc.RangeConstraint.StepSize = new IntValue(1);
+    }
+
+    private static void ConfigureMutationRate(IValueConfiguration algorithmVc) {
+      var mutationRatePc = algorithmVc.ParameterConfigurations.Where(x => x.Name == "MutationProbability").SingleOrDefault();
+      mutationRatePc.Optimize = true;
+      var mutationRateVc = mutationRatePc.ValueConfigurations.First();
+      mutationRateVc.Optimize = true;
+      mutationRateVc.RangeConstraint.LowerBound = new PercentValue(0.0);
+      mutationRateVc.RangeConstraint.UpperBound = new PercentValue(1.0);
+      mutationRateVc.RangeConstraint.StepSize = new PercentValue(0.01);
+    }
+
+    private static void TestIntSampling() {
+      System.Random rand = new System.Random();
+      int lower = 10;
+      int upper = 20;
+      int stepsize = 7;
+      for (int i = 0; i < 100; i++) {
+        int val;
+        do {
+          val = rand.Next(lower / stepsize, upper / stepsize + 1) * stepsize;
+        } while (val < lower || val > upper);
+        Console.WriteLine(val);
+      }
+    }
+
+    private static void TestDoubleSampling() {
+      System.Random rand = new System.Random();
+      double lower = 2;
+      double upper = 3;
+      double stepsize = 0.6;
+      for (int i = 0; i < 100; i++) {
+        double val;
+        do {
+          val = Math.Round((rand.NextDouble() * (upper - lower) + lower) / stepsize, 0) * stepsize;
+        } while (val < lower || val > upper);
+        Console.WriteLine(val);
+      }
+    }
+
+    private static IEnumerable<IItem> GetValidValues(IValueParameter valueParameter) {
+      return ApplicationManager.Manager.GetInstances(valueParameter.DataType).Select(x => (IItem)x).OrderBy(x => x.ItemName);
+    }
+  }
+}
Index: branches/HeuristicLab.MetaOptimization/HeuristicLab.MetaOptimization.Test/Properties/AssemblyInfo.cs
===================================================================
--- branches/HeuristicLab.MetaOptimization/HeuristicLab.MetaOptimization.Test/Properties/AssemblyInfo.cs	(revision 4997)
+++ branches/HeuristicLab.MetaOptimization/HeuristicLab.MetaOptimization.Test/Properties/AssemblyInfo.cs	(revision 4997)
@@ -0,0 +1,35 @@
+﻿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.MetaOptimization.Test")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("Microsoft")]
+[assembly: AssemblyProduct("HeuristicLab.MetaOptimization.Test")]
+[assembly: AssemblyCopyright("Copyright © Microsoft 2010")]
+[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("14bfe222-cc2c-44ec-a737-a5e5f59e4924")]
+
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version 
+//      Build Number
+//      Revision
+//
+// You can specify all the values or you can default the Build and Revision Numbers 
+// by using the '*' as shown below:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
Index: branches/HeuristicLab.MetaOptimization/HeuristicLab.MetaOptimization.Test/app.config
===================================================================
--- branches/HeuristicLab.MetaOptimization/HeuristicLab.MetaOptimization.Test/app.config	(revision 4997)
+++ branches/HeuristicLab.MetaOptimization/HeuristicLab.MetaOptimization.Test/app.config	(revision 4997)
@@ -0,0 +1,15 @@
+<?xml version="1.0"?>
+<configuration>
+	<runtime>
+		<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
+			<dependentAssembly>
+				<assemblyIdentity name="HeuristicLab.Tracing-3.3" publicKeyToken="BA48961D6F65DCEC" culture="neutral"/>
+				<bindingRedirect oldVersion="0.0.0.0-3.3.0.0" newVersion="3.3.0.0"/>
+			</dependentAssembly>
+			<dependentAssembly>
+				<assemblyIdentity name="HeuristicLab.Common.Resources-3.3" publicKeyToken="BA48961D6F65DCEC" culture="neutral"/>
+				<bindingRedirect oldVersion="0.0.0.0-3.3.0.0" newVersion="3.3.0.0"/>
+			</dependentAssembly>
+		</assemblyBinding>
+	</runtime>
+</configuration>
Index: branches/HeuristicLab.MetaOptimization/HeuristicLab.MetaOptimization.sln
===================================================================
--- branches/HeuristicLab.MetaOptimization/HeuristicLab.MetaOptimization.sln	(revision 4984)
+++ branches/HeuristicLab.MetaOptimization/HeuristicLab.MetaOptimization.sln	(revision 4997)
@@ -10,8 +10,16 @@
 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{F96C8DD1-9B68-4F2D-AD4F-1A174F596041}"
 	ProjectSection(SolutionItems) = preProject
+		HeuristicLab.MetaOptimization.vsmdi = HeuristicLab.MetaOptimization.vsmdi
+		Local.testsettings = Local.testsettings
 		PreBuildEvent.cmd = PreBuildEvent.cmd
+		TraceAndTestImpact.testsettings = TraceAndTestImpact.testsettings
 	EndProjectSection
 EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.MetaOptimization.Tests", "HeuristicLab.MetaOptimization.Tests\HeuristicLab.MetaOptimization.Tests.csproj", "{7978A3C0-5166-4392-B00F-58AA3C31E107}"
+EndProject
 Global
+	GlobalSection(TestCaseManagementSettings) = postSolution
+		CategoryFile = HeuristicLab.MetaOptimization.vsmdi
+	EndGlobalSection
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution
 		Debug|Any CPU = Debug|Any CPU
@@ -53,4 +61,14 @@
 		{0E232F46-FD0B-4FEA-8C22-AF18DE0D151E}.Release|x86.ActiveCfg = Release|x86
 		{0E232F46-FD0B-4FEA-8C22-AF18DE0D151E}.Release|x86.Build.0 = Release|x86
+		{7978A3C0-5166-4392-B00F-58AA3C31E107}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{7978A3C0-5166-4392-B00F-58AA3C31E107}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{7978A3C0-5166-4392-B00F-58AA3C31E107}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{7978A3C0-5166-4392-B00F-58AA3C31E107}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{7978A3C0-5166-4392-B00F-58AA3C31E107}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{7978A3C0-5166-4392-B00F-58AA3C31E107}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{7978A3C0-5166-4392-B00F-58AA3C31E107}.Release|Any CPU.Build.0 = Release|Any CPU
+		{7978A3C0-5166-4392-B00F-58AA3C31E107}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{7978A3C0-5166-4392-B00F-58AA3C31E107}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+		{7978A3C0-5166-4392-B00F-58AA3C31E107}.Release|x86.ActiveCfg = Release|Any CPU
 	EndGlobalSection
 	GlobalSection(SolutionProperties) = preSolution
Index: branches/HeuristicLab.MetaOptimization/HeuristicLab.Problems.MetaOptimization.Views/3.3/OptimizableView.cs
===================================================================
--- branches/HeuristicLab.MetaOptimization/HeuristicLab.Problems.MetaOptimization.Views/3.3/OptimizableView.cs	(revision 4984)
+++ branches/HeuristicLab.MetaOptimization/HeuristicLab.Problems.MetaOptimization.Views/3.3/OptimizableView.cs	(revision 4997)
@@ -50,9 +50,9 @@
             this.viewHost.Content = ((IParameterConfiguration)Content).ValueConfigurations;
           } else if (Content is IValueConfiguration) {
-            if (Content.ConstrainedValue.ValueDataType == typeof(IntValue) ||
-                Content.ConstrainedValue.ValueDataType == typeof(DoubleValue) ||
-                Content.ConstrainedValue.ValueDataType == typeof(PercentValue)) {
+            if (Content.ActualValue.ValueDataType == typeof(IntValue) ||
+                Content.ActualValue.ValueDataType == typeof(DoubleValue) ||
+                Content.ActualValue.ValueDataType == typeof(PercentValue)) {
               this.viewHost.Content = ((IValueConfiguration)Content).RangeConstraint;
-            } else if(Content.ConstrainedValue.ValueDataType == typeof(BoolValue)) {
+            } else if(Content.ActualValue.ValueDataType == typeof(BoolValue)) {
               this.viewHost.Content = null; // no configuration required
             } else {
@@ -63,5 +63,5 @@
           }
         } else {
-          this.viewHost.Content = Content.ConstrainedValue;
+          this.viewHost.Content = Content.ActualValue;
         }
       }
Index: branches/HeuristicLab.MetaOptimization/HeuristicLab.Problems.MetaOptimization/3.3/Creators/RandomParameterConfigurationCreator.cs
===================================================================
--- branches/HeuristicLab.MetaOptimization/HeuristicLab.Problems.MetaOptimization/3.3/Creators/RandomParameterConfigurationCreator.cs	(revision 4984)
+++ branches/HeuristicLab.MetaOptimization/HeuristicLab.Problems.MetaOptimization/3.3/Creators/RandomParameterConfigurationCreator.cs	(revision 4997)
@@ -20,10 +20,10 @@
       get { return (LookupParameter<IRandom>)Parameters["Random"]; }
     }
-    public ILookupParameter<IParameterConfiguration> ParameterConfigurationParameter {
-      get { return (ILookupParameter<IParameterConfiguration>)Parameters["ParameterConfiguration"]; }
+    public ILookupParameter<IValueConfiguration> ValueConfigurationParameter {
+      get { return (ILookupParameter<IValueConfiguration>)Parameters["ValueConfiguration"]; }
     }
 
-    public ILookupParameter<IParameterConfiguration> NewParameterConfigurationParameter {
-      get { return (ILookupParameter<IParameterConfiguration>)Parameters["NewParameterConfiguration"]; }
+    public ILookupParameter<IValueConfiguration> NewValueConfigurationParameter {
+      get { return (ILookupParameter<IValueConfiguration>)Parameters["NewValueConfiguration"]; }
     }
 
@@ -31,8 +31,7 @@
     private RandomParameterConfigurationCreator(bool deserializing) : base(deserializing) { }
     private RandomParameterConfigurationCreator(RandomParameterConfigurationCreator original, Cloner cloner) : base(original, cloner) { }
-    public RandomParameterConfigurationCreator()
-      : base() {
-        Parameters.Add(new LookupParameter<IRandom>("Random", "The pseudo random number generator which should be used to initialize the new random permutation."));
-        Parameters.Add(new LookupParameter<IParameterConfiguration>("ParameterConfiguration", "The new random parameter set."));
+    public RandomParameterConfigurationCreator() : base() {
+      Parameters.Add(new LookupParameter<IRandom>("Random", "The pseudo random number generator which should be used to initialize the new random permutation."));
+      Parameters.Add(new LookupParameter<IValueConfiguration>("ValueConfiguration", "The new random parameter set."));
     }
     public override IDeepCloneable Clone(Cloner cloner) {
@@ -41,6 +40,7 @@
 
     public override IOperation Apply() {
-      NewParameterConfigurationParameter.ActualValue = (IParameterConfiguration)ParameterConfigurationParameter.ActualValue.Clone();
-      //NewParameterConfigurationParameter.ActualValue.Randomize();
+      NewValueConfigurationParameter.ActualValue = (IValueConfiguration)ValueConfigurationParameter.ActualValue.Clone();
+      NewValueConfigurationParameter.ActualValue.Randomize();
+      NewValueConfigurationParameter.ActualValue.Parameterize();
       return base.Apply();
     }
Index: branches/HeuristicLab.MetaOptimization/HeuristicLab.Problems.MetaOptimization/3.3/Encodings/Crossovers/ParameterConfigurationCrossover.cs
===================================================================
--- branches/HeuristicLab.MetaOptimization/HeuristicLab.Problems.MetaOptimization/3.3/Encodings/Crossovers/ParameterConfigurationCrossover.cs	(revision 4984)
+++ branches/HeuristicLab.MetaOptimization/HeuristicLab.Problems.MetaOptimization/3.3/Encodings/Crossovers/ParameterConfigurationCrossover.cs	(revision 4997)
@@ -73,6 +73,6 @@
       IntegerVector integerChild = HeuristicLab.Encodings.IntegerVectorEncoding.DiscreteCrossover.Apply(
         RandomParameter.ActualValue,
-        new IntegerVector(new IntArray(new int[] { ((IntValue)parameter1.ActualValueConfiguration).Value })),
-        new IntegerVector(new IntArray(new int[] { ((IntValue)parameter2.ActualValueConfiguration).Value })));
+        new IntegerVector(new IntArray(new int[] { ((IntValue)parameter1.ActualValue.Value).Value })),
+        new IntegerVector(new IntArray(new int[] { ((IntValue)parameter2.ActualValue.Value).Value })));
       return new IntValue(integerChild[0]);
     }
Index: branches/HeuristicLab.MetaOptimization/HeuristicLab.Problems.MetaOptimization/3.3/Encodings/ParameterConfigurations/ParameterConfiguration.cs
===================================================================
--- branches/HeuristicLab.MetaOptimization/HeuristicLab.Problems.MetaOptimization/3.3/Encodings/ParameterConfigurations/ParameterConfiguration.cs	(revision 4984)
+++ branches/HeuristicLab.MetaOptimization/HeuristicLab.Problems.MetaOptimization/3.3/Encodings/ParameterConfigurations/ParameterConfiguration.cs	(revision 4997)
@@ -80,14 +80,10 @@
     }
 
-    // todo: chooses one of the parameter configurations as actual value
-    protected IValueConfiguration actualValueConfiguration;
-    public IValueConfiguration ActualValueConfiguration {
-      get { return this.actualValueConfiguration; }
-      set { this.actualValueConfiguration = value; }
-    }
-
-    public ConstrainedValue ConstrainedValue {
-      get { return actualValueConfiguration.ConstrainedValue; }
-      set { actualValueConfiguration.ConstrainedValue = value; }
+    protected int actualValueConfigurationIndex = 0;
+
+    protected ConstrainedValue actualValue;
+    public ConstrainedValue ActualValue {
+      get { return actualValue; }
+      set { actualValue = value; }
     }
     
@@ -103,5 +99,5 @@
       this.validValues = GetValidValues();
       this.ValueConfigurations = new CheckedValueConfigurationCollection(this.valueDataType);
-      this.ActualValueConfiguration = new ValueConfiguration(valueParameter.Value, valueParameter.DataType);
+      this.ActualValue = new ConstrainedValue(valueParameter.Value, valueParameter.DataType);
       if (Optimize) {
         PopulateValueConfigurations();
@@ -112,14 +108,13 @@
     [StorableConstructor]
     protected ParameterConfiguration(bool deserializing) { }
-    protected ParameterConfiguration(ParameterConfiguration original, Cloner cloner)
-      : base(original, cloner) {
-      this.ParameterName = original.ParameterName;
+    protected ParameterConfiguration(ParameterConfiguration original, Cloner cloner) : base(original, cloner) {
+      this.parameterName = original.ParameterName;
       this.parameterDataType = original.parameterDataType;
       this.parameter = cloner.Clone(original.parameter);
-      this.ValueDataType = original.ValueDataType;
-      this.ValidValues = original.ValidValues.Select(x => cloner.Clone(x));
+      this.valueDataType = original.ValueDataType;
+      this.validValues = original.ValidValues.Select(x => cloner.Clone(x));
       this.ValueConfigurations = cloner.Clone(original.ValueConfigurations);
-      this.ActualValueConfiguration = cloner.Clone(original.ActualValueConfiguration);
-      this.Optimize = original.optimize;
+      this.ActualValue = cloner.Clone(original.ActualValue);
+      this.optimize = original.optimize;
     }
     public override IDeepCloneable Clone(Cloner cloner) {
@@ -143,6 +138,6 @@
       foreach (IItem validValue in this.validValues) {
         IItem val;
-        if (actualValueConfiguration.ConstrainedValue.Value != null && actualValueConfiguration.ConstrainedValue.ValueDataType == validValue.GetType()) {
-          val = actualValueConfiguration.ConstrainedValue.Value; // use existing value for that type (if available)
+        if (ActualValue.Value != null && ActualValue.ValueDataType == validValue.GetType()) {
+          val = ActualValue.Value; // use existing value for that type (if available)
         } else {
           val = validValue;
@@ -228,5 +223,5 @@
         return string.Format("{0}: (Optimize: {1})", ParameterName, ValueConfigurations.CheckedItems.Count());
       } else {
-        return string.Format("{0}: {1}", ParameterName, ConstrainedValue.Value);
+        return string.Format("{0}: {1}", ParameterName, ActualValue.Value);
       }
     }
@@ -239,4 +234,36 @@
       return null;
     }
+
+    public void Parameterize() {
+      this.parameter.ActualValue = this.ActualValue.Value;
+    }
+
+    public void Randomize() {
+      if (Optimize) {
+        Random rand = new Random(); // todo: use global random
+        actualValueConfigurationIndex = rand.Next(ValueConfigurations.CheckedItems.Count());
+        this.ValueConfigurations.CheckedItems.ElementAt(actualValueConfigurationIndex).Randomize();
+        this.ActualValue = this.ValueConfigurations.CheckedItems.ElementAt(actualValueConfigurationIndex).ActualValue;
+      }
+    }
+
+    public void Mutate() {
+      if (Optimize) {
+        foreach (IValueConfiguration vc in this.ValueConfigurations.CheckedItems) {
+          vc.Mutate();
+        }
+        this.ActualValue = this.ValueConfigurations.CheckedItems.ElementAt(actualValueConfigurationIndex).ActualValue;
+      }
+    }
+
+    public void Cross(IOptimizable other) {
+      if (Optimize) {
+        IParameterConfiguration otherPc = (IParameterConfiguration)other;
+        for (int i = 0; i < this.ValueConfigurations.Count; i++) {
+          this.ValueConfigurations.ElementAt(i).Cross(otherPc.ValueConfigurations.ElementAt(i));
+        }
+        this.ActualValue = this.ValueConfigurations.CheckedItems.ElementAt(actualValueConfigurationIndex).ActualValue;
+      }
+    }
   }
 }
Index: branches/HeuristicLab.MetaOptimization/HeuristicLab.Problems.MetaOptimization/3.3/Encodings/RangeConstraints/ConstrainedValue.cs
===================================================================
--- branches/HeuristicLab.MetaOptimization/HeuristicLab.Problems.MetaOptimization/3.3/Encodings/RangeConstraints/ConstrainedValue.cs	(revision 4984)
+++ branches/HeuristicLab.MetaOptimization/HeuristicLab.Problems.MetaOptimization/3.3/Encodings/RangeConstraints/ConstrainedValue.cs	(revision 4997)
@@ -46,5 +46,5 @@
     protected ConstrainedValue(ConstrainedValue original, Cloner cloner) : base(original, cloner) {
       this.valueDataType = original.valueDataType;
-      this.value = cloner.Clone(value);
+      this.Value = cloner.Clone(original.value);
     }
     public override IDeepCloneable Clone(Cloner cloner) {
Index: branches/HeuristicLab.MetaOptimization/HeuristicLab.Problems.MetaOptimization/3.3/Encodings/RangeConstraints/DoubleValueRange.cs
===================================================================
--- branches/HeuristicLab.MetaOptimization/HeuristicLab.Problems.MetaOptimization/3.3/Encodings/RangeConstraints/DoubleValueRange.cs	(revision 4997)
+++ branches/HeuristicLab.MetaOptimization/HeuristicLab.Problems.MetaOptimization/3.3/Encodings/RangeConstraints/DoubleValueRange.cs	(revision 4997)
@@ -0,0 +1,27 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using HeuristicLab.Data;
+using HeuristicLab.Common;
+
+namespace HeuristicLab.Problems.MetaOptimization {
+  public class DoubleValueRange : Range<DoubleValue> {
+
+    public DoubleValueRange(DoubleValue lowerBound, DoubleValue upperBound, DoubleValue stepSize) : base(lowerBound, upperBound, stepSize) { }
+    public DoubleValueRange() { }
+    protected DoubleValueRange(DoubleValueRange original, Cloner cloner) : base(original, cloner) { }
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new DoubleValueRange(this, cloner);
+    }
+
+    public override DoubleValue GetRandomValue() {
+      Random rand = new Random(); // todo: use common random
+      double val;
+      do {
+        val = Math.Round((rand.NextDouble() * (UpperBound.Value - LowerBound.Value) + LowerBound.Value) / StepSize.Value, 0) * StepSize.Value;
+      } while (val < LowerBound.Value || val > UpperBound.Value);
+      return new DoubleValue(val);
+    }
+  }
+}
Index: branches/HeuristicLab.MetaOptimization/HeuristicLab.Problems.MetaOptimization/3.3/Encodings/RangeConstraints/IntValueRange.cs
===================================================================
--- branches/HeuristicLab.MetaOptimization/HeuristicLab.Problems.MetaOptimization/3.3/Encodings/RangeConstraints/IntValueRange.cs	(revision 4997)
+++ branches/HeuristicLab.MetaOptimization/HeuristicLab.Problems.MetaOptimization/3.3/Encodings/RangeConstraints/IntValueRange.cs	(revision 4997)
@@ -0,0 +1,27 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using HeuristicLab.Data;
+using HeuristicLab.Common;
+
+namespace HeuristicLab.Problems.MetaOptimization {
+  public class IntValueRange : Range<IntValue> {
+
+    public IntValueRange(IntValue lowerBound, IntValue upperBound, IntValue stepSize) : base(lowerBound, upperBound, stepSize) { }
+    public IntValueRange() { }
+    protected IntValueRange(IntValueRange original, Cloner cloner) : base(original, cloner) { }
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new IntValueRange(this, cloner);
+    }
+
+    public override IntValue GetRandomValue() {
+      Random rand = new Random(); // todo: use common random
+      int val;
+      do {
+        val = rand.Next(LowerBound.Value / StepSize.Value, UpperBound.Value / StepSize.Value + 1) * StepSize.Value;
+      } while (val < LowerBound.Value || val > UpperBound.Value);
+      return new IntValue(val);
+    }
+  }
+}
Index: branches/HeuristicLab.MetaOptimization/HeuristicLab.Problems.MetaOptimization/3.3/Encodings/RangeConstraints/PercentValueRange.cs
===================================================================
--- branches/HeuristicLab.MetaOptimization/HeuristicLab.Problems.MetaOptimization/3.3/Encodings/RangeConstraints/PercentValueRange.cs	(revision 4997)
+++ branches/HeuristicLab.MetaOptimization/HeuristicLab.Problems.MetaOptimization/3.3/Encodings/RangeConstraints/PercentValueRange.cs	(revision 4997)
@@ -0,0 +1,27 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using HeuristicLab.Data;
+using HeuristicLab.Common;
+
+namespace HeuristicLab.Problems.MetaOptimization {
+  public class PercentValueRange : Range<PercentValue> {
+
+    public PercentValueRange(PercentValue lowerBound, PercentValue upperBound, PercentValue stepSize) : base(lowerBound, upperBound, stepSize) { }
+    public PercentValueRange() { }
+    protected PercentValueRange(PercentValueRange original, Cloner cloner) : base(original, cloner) { }
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new PercentValueRange(this, cloner);
+    }
+
+    public override PercentValue GetRandomValue() {
+      Random rand = new Random(); // todo: use common random
+      double val;
+      do {
+        val = Math.Round((rand.NextDouble() * (UpperBound.Value - LowerBound.Value) + LowerBound.Value) / StepSize.Value, 0) * StepSize.Value;
+      } while (val < LowerBound.Value || val > UpperBound.Value);
+      return new PercentValue(val);
+    }
+  }
+}
Index: branches/HeuristicLab.MetaOptimization/HeuristicLab.Problems.MetaOptimization/3.3/Encodings/RangeConstraints/Range.cs
===================================================================
--- branches/HeuristicLab.MetaOptimization/HeuristicLab.Problems.MetaOptimization/3.3/Encodings/RangeConstraints/Range.cs	(revision 4984)
+++ branches/HeuristicLab.MetaOptimization/HeuristicLab.Problems.MetaOptimization/3.3/Encodings/RangeConstraints/Range.cs	(revision 4997)
@@ -7,5 +7,5 @@
 namespace HeuristicLab.Problems.MetaOptimization {
   [StorableClass]
-  public class Range<T> : Item, IRange<T> where T : class, IStringConvertibleValue, IDeepCloneable {
+  public abstract class Range<T> : Item, IRange<T> where T : class, IItem, IStringConvertibleValue, IDeepCloneable {
     [Storable]
     private T lowerBound;
@@ -84,14 +84,11 @@
     }
 
+    public Range() { }
     [StorableConstructor]
     protected Range(bool deserializing) : base(deserializing) { }
-    protected Range(Range<T> original, Cloner cloner)
-      : base(original, cloner) {
+    protected Range(Range<T> original, Cloner cloner) : base(original, cloner) {
       this.LowerBound = cloner.Clone(original.LowerBound);
       this.UpperBound = cloner.Clone(original.UpperBound);
       this.StepSize = cloner.Clone(original.StepSize);
-    }
-    public override IDeepCloneable Clone(Cloner cloner) {
-      return new Range<T>(this, cloner);
     }
     #endregion
@@ -193,4 +190,17 @@
 
     #endregion
+
+
+
+    public abstract T GetRandomValue();
+
+    #region IRange Members
+
+
+    IItem IRange.GetRandomValue() {
+      return GetRandomValue();
+    }
+
+    #endregion
   }
 }
Index: branches/HeuristicLab.MetaOptimization/HeuristicLab.Problems.MetaOptimization/3.3/Encodings/ValueConfigurations/ValueConfiguration.cs
===================================================================
--- branches/HeuristicLab.MetaOptimization/HeuristicLab.Problems.MetaOptimization/3.3/Encodings/ValueConfigurations/ValueConfiguration.cs	(revision 4984)
+++ branches/HeuristicLab.MetaOptimization/HeuristicLab.Problems.MetaOptimization/3.3/Encodings/ValueConfigurations/ValueConfiguration.cs	(revision 4997)
@@ -45,11 +45,11 @@
     }
 
-    protected ConstrainedValue constrainedValue;
-    public ConstrainedValue ConstrainedValue {
-      get { return constrainedValue; }
+    protected ConstrainedValue actualValue;
+    public ConstrainedValue ActualValue {
+      get { return actualValue; }
       set {
-        if (this.constrainedValue != value) {
+        if (this.actualValue != value) {
           ClearParameterConfigurations();
-          this.constrainedValue = value;
+          this.actualValue = value;
           PopulateParameterConfigurations();
           OnValueChanged();
@@ -67,13 +67,13 @@
     public ValueConfiguration(IItem value, Type valueDataType) {
       this.ParameterConfigurations = new ItemList<IParameterConfiguration>();
-      this.ConstrainedValue = new ConstrainedValue(value, valueDataType);
+      this.ActualValue = new ConstrainedValue(value, valueDataType);
       this.IsOptimizable = true;
-      if (constrainedValue.ValueDataType == typeof(IntValue)) {
-        rangeConstraint = new Range<IntValue>(new IntValue(0), (IntValue)value, new IntValue(1));
-      } else if (constrainedValue.ValueDataType == typeof(DoubleValue)) {
-        rangeConstraint = new Range<DoubleValue>(new DoubleValue(0), (DoubleValue)value, new DoubleValue(0.01));
-      } else if (constrainedValue.ValueDataType == typeof(PercentValue)) {
-        rangeConstraint = new Range<PercentValue>(new PercentValue(0), new PercentValue(1), new PercentValue(0.001));
-      } else if (constrainedValue.ValueDataType == typeof(BoolValue)) {
+      if (actualValue.ValueDataType == typeof(IntValue)) {
+        rangeConstraint = new IntValueRange(new IntValue(0), (IntValue)value, new IntValue(1));
+      } else if (actualValue.ValueDataType == typeof(DoubleValue)) {
+        rangeConstraint = new DoubleValueRange(new DoubleValue(0), (DoubleValue)value, new DoubleValue(0.01));
+      } else if (actualValue.ValueDataType == typeof(PercentValue)) {
+        rangeConstraint = new PercentValueRange(new PercentValue(0), new PercentValue(1), new PercentValue(0.001));
+      } else if (actualValue.ValueDataType == typeof(BoolValue)) {
         this.IsOptimizable = false; // there is nothing to configure for bools
       } else {
@@ -87,8 +87,9 @@
     protected ValueConfiguration(bool deserializing) { }
     protected ValueConfiguration(ValueConfiguration original, Cloner cloner) : base(original, cloner) {
-      this.ParameterConfigurations = cloner.Clone(original.ParameterConfigurations);
-      this.ConstrainedValue = cloner.Clone(original.ConstrainedValue);
+      this.ParameterConfigurations = cloner.Clone(original.parameterConfigurations);
+      this.actualValue = cloner.Clone(original.ActualValue);
       this.rangeConstraint = cloner.Clone(original.RangeConstraint);
-      this.IsOptimizable = original.IsOptimizable;
+      this.isOptimizable = original.isOptimizable;
+      this.optimize = original.optimize;
       RegisterEvents();
     }
@@ -99,6 +100,6 @@
 
     protected virtual void PopulateParameterConfigurations() {
-      if (this.constrainedValue.Value is IParameterizedNamedItem) {
-        var parameterizedItem = this.constrainedValue.Value as IParameterizedNamedItem;
+      if (this.actualValue.Value is IParameterizedNamedItem) {
+        var parameterizedItem = this.actualValue.Value as IParameterizedNamedItem;
         foreach (var childParameter in parameterizedItem.Parameters) {
           var pc = ParameterConfiguration.Create(parameterizedItem, childParameter);
@@ -113,9 +114,9 @@
     private void RegisterEvents() {
       if (this.RangeConstraint != null) this.RangeConstraint.ToStringChanged += new EventHandler(RangeConstraint_ToStringChanged);
-      if (this.ConstrainedValue != null) this.ConstrainedValue.ToStringChanged += new EventHandler(ConstrainedValue_ToStringChanged);
+      if (this.ActualValue != null) this.ActualValue.ToStringChanged += new EventHandler(ConstrainedValue_ToStringChanged);
     }
     private void DeregisterEvents() {
       if (this.RangeConstraint != null) this.RangeConstraint.ToStringChanged += new EventHandler(RangeConstraint_ToStringChanged);
-      if (this.ConstrainedValue != null) this.ConstrainedValue.ToStringChanged += new EventHandler(ConstrainedValue_ToStringChanged);
+      if (this.ActualValue != null) this.ActualValue.ToStringChanged += new EventHandler(ConstrainedValue_ToStringChanged);
     }
 
@@ -129,13 +130,13 @@
     #region IItem Members
     public override string ItemDescription {
-      get { return (constrainedValue != null && constrainedValue.Value != null) ? constrainedValue.Value.ItemDescription : base.ItemDescription; }
+      get { return (actualValue != null && actualValue.Value != null) ? actualValue.Value.ItemDescription : base.ItemDescription; }
     }
 
     public override Image ItemImage {
-      get { return (constrainedValue != null && constrainedValue.Value != null) ? constrainedValue.Value.ItemImage : base.ItemImage; }
+      get { return (actualValue != null && actualValue.Value != null) ? actualValue.Value.ItemImage : base.ItemImage; }
     }
 
     public override string ItemName {
-      get { return (constrainedValue != null && constrainedValue.Value != null) ? constrainedValue.Value.ItemDescription : base.ItemName; }
+      get { return (actualValue != null && actualValue.Value != null) ? actualValue.Value.ItemDescription : base.ItemName; }
     }
     #endregion
@@ -162,16 +163,16 @@
 
     public override string ToString() {
-      if (ConstrainedValue != null && ConstrainedValue.Value != null) {
-        if (ConstrainedValue.Value is IParameterizedItem) {
+      if (ActualValue != null && ActualValue.Value != null) {
+        if (ActualValue.Value is IParameterizedItem) {
           if (Optimize) {
-            return string.Format("{0} (Optimize)", ConstrainedValue.Value.ItemName);
-          } else {
-            return string.Format("{0}", ConstrainedValue.Value.ItemName);
+            return string.Format("{0} (Optimize)", ActualValue.Value.ItemName);
+          } else {
+            return string.Format("{0}", ActualValue.Value.ItemName);
           }
         } else {
           if (Optimize) {
-            return string.Format("{0} (Optimize: {1})", ConstrainedValue.Value.ItemName, RangeConstraint);
-          } else {
-            return string.Format("{0}: {1}", ConstrainedValue.Value.ItemName, ConstrainedValue.Value);
+            return string.Format("{0} (Optimize: {1})", ActualValue.Value.ItemName, RangeConstraint);
+          } else {
+            return string.Format("{0}: {1}", ActualValue.Value.ItemName, ActualValue.Value);
           }
         }
@@ -180,4 +181,72 @@
       }
     }
+    
+    public void Parameterize() {
+      foreach (IParameterConfiguration pc in this.ParameterConfigurations) {
+        pc.Parameterize();
+      }
+    }
+
+    public void Randomize() {
+      if (Optimize) {
+        if (rangeConstraint != null) {
+          this.actualValue.Value = rangeConstraint.GetRandomValue();
+        } else {
+          foreach (IParameterConfiguration pc in this.ParameterConfigurations) {
+            pc.Randomize();
+          }
+        }
+      }
+    }
+
+    public void Mutate() {
+      if (Optimize) {
+        if (rangeConstraint != null) {
+          Random rand = new Random(); // todo: use common random
+          // mutate every other value. todo: use some kind of mutation operator which is exchangable
+          if(rand.NextDouble() > 0.5)
+            this.actualValue.Value = rangeConstraint.GetRandomValue();
+        } else {
+          foreach (IParameterConfiguration pc in this.ParameterConfigurations) {
+            pc.Mutate();
+          }
+        }
+      }
+    }
+
+    public void Cross(IOptimizable other) {
+      if (Optimize) {
+        IValueConfiguration otherVc = (IValueConfiguration)other;
+        if (rangeConstraint != null) {
+          if (this.actualValue.ValueDataType == typeof(IntValue)) {
+            this.actualValue.Value = new IntValue((((IntValue)this.actualValue.Value).Value + ((IntValue)other.ActualValue.Value).Value) / 2);
+          } else if (this.actualValue.ValueDataType == typeof(DoubleValue)) {
+            this.actualValue.Value = new DoubleValue((((DoubleValue)this.actualValue.Value).Value + ((DoubleValue)other.ActualValue.Value).Value) / 2);
+          } else if (this.actualValue.ValueDataType == typeof(PercentValue)) {
+            this.actualValue.Value = new PercentValue((((PercentValue)this.actualValue.Value).Value + ((PercentValue)other.ActualValue.Value).Value) / 2);
+          } else if (this.actualValue.ValueDataType == typeof(BoolValue)) {
+            bool first = ((BoolValue)this.actualValue.Value).Value;
+            bool second = ((BoolValue)other.ActualValue.Value).Value;
+            if (first && second) {
+              this.actualValue.Value = new BoolValue(true);
+            } else if (!first && !second) {
+              this.actualValue.Value = new BoolValue(false);
+            } else {
+              Random rand = new Random(); // todo: use common random
+              if(rand.NextDouble() > 0.5)
+                this.actualValue.Value = new BoolValue(true);
+              else
+                this.actualValue.Value = new BoolValue(false);
+            }
+          } else {
+            throw new NotImplementedException();
+          }
+        } else {
+          for (int i = 0; i < this.ParameterConfigurations.Count; i++) {
+            this.ParameterConfigurations.ElementAt(i).Cross(otherVc.ParameterConfigurations.ElementAt(i));
+          }
+        }
+      }
+    }
   }
 }
Index: branches/HeuristicLab.MetaOptimization/HeuristicLab.Problems.MetaOptimization/3.3/Evaluators/MetaOptimizationEvaluator.cs
===================================================================
--- branches/HeuristicLab.MetaOptimization/HeuristicLab.Problems.MetaOptimization/3.3/Evaluators/MetaOptimizationEvaluator.cs	(revision 4984)
+++ branches/HeuristicLab.MetaOptimization/HeuristicLab.Problems.MetaOptimization/3.3/Evaluators/MetaOptimizationEvaluator.cs	(revision 4997)
@@ -29,6 +29,6 @@
       get { return (ILookupParameter<IItemList<IProblem>>)Parameters["Problems"]; }
     }
-    public ILookupParameter<IParameterConfiguration> ParameterConfigurationParameter {
-      get { return (ILookupParameter<IParameterConfiguration>)Parameters["ParameterConfiguration"]; }
+    public ILookupParameter<IValueConfiguration> ParameterConfigurationParameter {
+      get { return (ILookupParameter<IValueConfiguration>)Parameters["ValueConfiguration"]; }
     }
     public ValueParameter<IntValue> RepetitionsParameter {
@@ -45,5 +45,5 @@
       Parameters.Add(new LookupParameter<IAlgorithm>("Algorithm", "Missing description."));
       Parameters.Add(new LookupParameter<IItemList<IProblem>>("Problems", "Missing description."));
-      Parameters.Add(new LookupParameter<IParameterConfiguration>("ParameterConfiguration", "Missing description."));
+      Parameters.Add(new LookupParameter<IValueConfiguration>("ValueConfiguration", "Missing description."));
       Parameters.Add(new ValueParameter<IntValue>(RepetitionsParameterName, "Number of evaluations for one individual.", new IntValue(3)));
     }
Index: branches/HeuristicLab.MetaOptimization/HeuristicLab.Problems.MetaOptimization/3.3/HeuristicLab.Problems.MetaOptimization-3.3.csproj
===================================================================
--- branches/HeuristicLab.MetaOptimization/HeuristicLab.Problems.MetaOptimization/3.3/HeuristicLab.Problems.MetaOptimization-3.3.csproj	(revision 4984)
+++ branches/HeuristicLab.MetaOptimization/HeuristicLab.Problems.MetaOptimization/3.3/HeuristicLab.Problems.MetaOptimization-3.3.csproj	(revision 4997)
@@ -93,4 +93,7 @@
       <SubType>Code</SubType>
     </Compile>
+    <Compile Include="Encodings\RangeConstraints\PercentValueRange.cs" />
+    <Compile Include="Encodings\RangeConstraints\DoubleValueRange.cs" />
+    <Compile Include="Encodings\RangeConstraints\IntValueRange.cs" />
     <Compile Include="Encodings\ValueConfigurations\RootValueConfiguration.cs" />
     <Compile Include="Encodings\ValueConfigurations\ValueConfiguration.cs" />
Index: branches/HeuristicLab.MetaOptimization/HeuristicLab.Problems.MetaOptimization/3.3/Interfaces/IOptimizable.cs
===================================================================
--- branches/HeuristicLab.MetaOptimization/HeuristicLab.Problems.MetaOptimization/3.3/Interfaces/IOptimizable.cs	(revision 4984)
+++ branches/HeuristicLab.MetaOptimization/HeuristicLab.Problems.MetaOptimization/3.3/Interfaces/IOptimizable.cs	(revision 4997)
@@ -10,5 +10,10 @@
     bool IsOptimizable { get; }
     bool Optimize { get; set; }
-    ConstrainedValue ConstrainedValue { get; set; }
+    ConstrainedValue ActualValue { get; set; }
+
+    void Parameterize();
+    void Randomize();
+    void Mutate();
+    void Cross(IOptimizable other);
 
     event EventHandler IsOptimizableChanged;
Index: branches/HeuristicLab.MetaOptimization/HeuristicLab.Problems.MetaOptimization/3.3/Interfaces/IParameterConfiguration.cs
===================================================================
--- branches/HeuristicLab.MetaOptimization/HeuristicLab.Problems.MetaOptimization/3.3/Interfaces/IParameterConfiguration.cs	(revision 4984)
+++ branches/HeuristicLab.MetaOptimization/HeuristicLab.Problems.MetaOptimization/3.3/Interfaces/IParameterConfiguration.cs	(revision 4997)
@@ -10,5 +10,4 @@
     Type ParameterDataType { get; }
     ICheckedValueConfigurationCollection ValueConfigurations { get; }
-    IValueConfiguration ActualValueConfiguration { get; set; }
     IEnumerable<IItem> ValidValues { get; }
   }
Index: branches/HeuristicLab.MetaOptimization/HeuristicLab.Problems.MetaOptimization/3.3/Interfaces/IRange.cs
===================================================================
--- branches/HeuristicLab.MetaOptimization/HeuristicLab.Problems.MetaOptimization/3.3/Interfaces/IRange.cs	(revision 4984)
+++ branches/HeuristicLab.MetaOptimization/HeuristicLab.Problems.MetaOptimization/3.3/Interfaces/IRange.cs	(revision 4997)
@@ -13,4 +13,6 @@
     event EventHandler UpperBoundChanged;
     event EventHandler StepSizeChanged;
+
+    IItem GetRandomValue();
   }
 
@@ -19,4 +21,5 @@
     new T UpperBound { get; set; }
     new T StepSize { get; set; }
+    new T GetRandomValue();
   }
 }
Index: branches/HeuristicLab.MetaOptimization/HeuristicLab.Problems.MetaOptimization/3.3/Interfaces/IValueConfiguration.cs
===================================================================
--- branches/HeuristicLab.MetaOptimization/HeuristicLab.Problems.MetaOptimization/3.3/Interfaces/IValueConfiguration.cs	(revision 4984)
+++ branches/HeuristicLab.MetaOptimization/HeuristicLab.Problems.MetaOptimization/3.3/Interfaces/IValueConfiguration.cs	(revision 4997)
@@ -8,4 +8,5 @@
     IRange RangeConstraint { get; }
     event EventHandler ValueChanged;
+
   }
 }
Index: branches/HeuristicLab.MetaOptimization/HeuristicLab.Problems.MetaOptimization/3.3/MetaOptimizationProblem.cs
===================================================================
--- branches/HeuristicLab.MetaOptimization/HeuristicLab.Problems.MetaOptimization/3.3/MetaOptimizationProblem.cs	(revision 4984)
+++ branches/HeuristicLab.MetaOptimization/HeuristicLab.Problems.MetaOptimization/3.3/MetaOptimizationProblem.cs	(revision 4997)
@@ -119,7 +119,8 @@
     private void ParameterizeSolutionCreator() {
       //SolutionCreator.ParametersToOptimize = this.ParametersToOptimize;
+      
     }
     private void ParameterizeEvaluator() {
-      ((MetaOptimizationEvaluator)Evaluator).ParameterConfigurationParameter.ActualName = ((RandomParameterConfigurationCreator)SolutionCreator).ParameterConfigurationParameter.ActualName;
+      ((MetaOptimizationEvaluator)Evaluator).ParameterConfigurationParameter.ActualName = ((RandomParameterConfigurationCreator)SolutionCreator).ValueConfigurationParameter.ActualName;
     }
     private void ParameterizeAnalyzer() {
