Index: /stable/HeuristicLab 3.3.sln
===================================================================
--- /stable/HeuristicLab 3.3.sln	(revision 13291)
+++ /stable/HeuristicLab 3.3.sln	(revision 13292)
@@ -442,4 +442,6 @@
 EndProject
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.Problems.GeneticProgramming.Views-3.3", "HeuristicLab.Problems.GeneticProgramming.Views\3.3\HeuristicLab.Problems.GeneticProgramming.Views-3.3.csproj", "{26349C8D-72A1-4BAE-95A3-14E96A3B4AE8}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.Algorithms.OffspringSelectionEvolutionStrategy-3.3", "HeuristicLab.Algorithms.OffspringSelectionEvolutionStrategy\3.3\HeuristicLab.Algorithms.OffspringSelectionEvolutionStrategy-3.3.csproj", "{1D41EAE6-CC79-41D4-858C-589C4DB5E50D}"
 EndProject
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.Algorithms.ALPS-3.3", "HeuristicLab.Algorithms.ALPS\3.3\HeuristicLab.Algorithms.ALPS-3.3.csproj", "{59F354CB-FE13-4253-AED2-AD86372BEC27}"
@@ -2147,4 +2149,16 @@
 		{26349C8D-72A1-4BAE-95A3-14E96A3B4AE8}.Release|x86.ActiveCfg = Release|x86
 		{26349C8D-72A1-4BAE-95A3-14E96A3B4AE8}.Release|x86.Build.0 = Release|x86
+		{1D41EAE6-CC79-41D4-858C-589C4DB5E50D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{1D41EAE6-CC79-41D4-858C-589C4DB5E50D}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{1D41EAE6-CC79-41D4-858C-589C4DB5E50D}.Debug|x64.ActiveCfg = Debug|x64
+		{1D41EAE6-CC79-41D4-858C-589C4DB5E50D}.Debug|x64.Build.0 = Debug|x64
+		{1D41EAE6-CC79-41D4-858C-589C4DB5E50D}.Debug|x86.ActiveCfg = Debug|x86
+		{1D41EAE6-CC79-41D4-858C-589C4DB5E50D}.Debug|x86.Build.0 = Debug|x86
+		{1D41EAE6-CC79-41D4-858C-589C4DB5E50D}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{1D41EAE6-CC79-41D4-858C-589C4DB5E50D}.Release|Any CPU.Build.0 = Release|Any CPU
+		{1D41EAE6-CC79-41D4-858C-589C4DB5E50D}.Release|x64.ActiveCfg = Release|x64
+		{1D41EAE6-CC79-41D4-858C-589C4DB5E50D}.Release|x64.Build.0 = Release|x64
+		{1D41EAE6-CC79-41D4-858C-589C4DB5E50D}.Release|x86.ActiveCfg = Release|x86
+		{1D41EAE6-CC79-41D4-858C-589C4DB5E50D}.Release|x86.Build.0 = Release|x86
 		{59F354CB-FE13-4253-AED2-AD86372BEC27}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{59F354CB-FE13-4253-AED2-AD86372BEC27}.Debug|Any CPU.Build.0 = Debug|Any CPU
@@ -2169,6 +2183,6 @@
 		{71CDE004-C50F-48DF-858E-AB0AAA3537BC} = {D1B1DE45-F9C7-4FBF-B73C-E759BC4223D5}
 		{5E516C4F-9935-437F-8B15-ECEF4451744E} = {D1B1DE45-F9C7-4FBF-B73C-E759BC4223D5}
+		{7FC70D74-1813-48B7-9CE5-0BD913457579} = {D1B1DE45-F9C7-4FBF-B73C-E759BC4223D5}
 		{0C67A033-F6D9-4237-B3CA-C033A44706BE} = {D1B1DE45-F9C7-4FBF-B73C-E759BC4223D5}
-		{7FC70D74-1813-48B7-9CE5-0BD913457579} = {D1B1DE45-F9C7-4FBF-B73C-E759BC4223D5}
 	EndGlobalSection
 EndGlobal
Index: /stable/HeuristicLab.Algorithms.OffspringSelectionEvolutionStrategy/3.3/HeuristicLab.Algorithms.OffspringSelectionEvolutionStrategy-3.3.csproj
===================================================================
--- /stable/HeuristicLab.Algorithms.OffspringSelectionEvolutionStrategy/3.3/HeuristicLab.Algorithms.OffspringSelectionEvolutionStrategy-3.3.csproj	(revision 13292)
+++ /stable/HeuristicLab.Algorithms.OffspringSelectionEvolutionStrategy/3.3/HeuristicLab.Algorithms.OffspringSelectionEvolutionStrategy-3.3.csproj	(revision 13292)
@@ -0,0 +1,233 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>9.0.30729</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{1D41EAE6-CC79-41D4-858C-589C4DB5E50D}</ProjectGuid>
+    <OutputType>Library</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>HeuristicLab.Algorithms.OffspringSelectionEvolutionStrategy</RootNamespace>
+    <AssemblyName>HeuristicLab.Algorithms.OffspringSelectionEvolutionStrategy-3.3</AssemblyName>
+    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
+    <TargetFrameworkProfile>
+    </TargetFrameworkProfile>
+    <FileAlignment>512</FileAlignment>
+    <SignAssembly>true</SignAssembly>
+    <AssemblyOriginatorKeyFile>HeuristicLab.snk</AssemblyOriginatorKeyFile>
+    <FileUpgradeFlags>
+    </FileUpgradeFlags>
+    <OldToolsVersion>3.5</OldToolsVersion>
+    <UpgradeBackupLocation />
+    <PublishUrl>publish\</PublishUrl>
+    <Install>true</Install>
+    <InstallFrom>Disk</InstallFrom>
+    <UpdateEnabled>false</UpdateEnabled>
+    <UpdateMode>Foreground</UpdateMode>
+    <UpdateInterval>7</UpdateInterval>
+    <UpdateIntervalUnits>Days</UpdateIntervalUnits>
+    <UpdatePeriodically>false</UpdatePeriodically>
+    <UpdateRequired>false</UpdateRequired>
+    <MapFileExtensions>true</MapFileExtensions>
+    <ApplicationRevision>0</ApplicationRevision>
+    <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
+    <IsWebBootstrapper>false</IsWebBootstrapper>
+    <UseApplicationTrust>false</UseApplicationTrust>
+    <BootstrapperEnabled>true</BootstrapperEnabled>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>$(SolutionDir)\bin\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+    <Prefer32Bit>false</Prefer32Bit>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>$(SolutionDir)\bin\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+    <Prefer32Bit>false</Prefer32Bit>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
+    <DebugSymbols>true</DebugSymbols>
+    <OutputPath>$(SolutionDir)\bin\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <DebugType>full</DebugType>
+    <PlatformTarget>x86</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+    <Prefer32Bit>false</Prefer32Bit>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
+    <OutputPath>$(SolutionDir)\bin\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <Optimize>true</Optimize>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>x86</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+    <Prefer32Bit>false</Prefer32Bit>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' ">
+    <DebugSymbols>true</DebugSymbols>
+    <OutputPath>$(SolutionDir)\bin\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <DebugType>full</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+    <Prefer32Bit>false</Prefer32Bit>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
+    <OutputPath>$(SolutionDir)\bin\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <Optimize>true</Optimize>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+    <Prefer32Bit>false</Prefer32Bit>
+  </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>
+    <Compile Include="Plugin.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+    <Compile Include="OffspringSelectionEvolutionStrategy.cs" />
+    <Compile Include="OffspringSelectionEvolutionStrategyMainLoop.cs" />
+    <Compile Include="WithoutRepeatingBatchedRandomSelector.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="HeuristicLab.snk" />
+    <None Include="Plugin.cs.frame" />
+    <None Include="Properties\AssemblyInfo.cs.frame" />
+  </ItemGroup>
+  <ItemGroup>
+    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
+      <Visible>False</Visible>
+      <ProductName>Windows Installer 3.1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\..\HeuristicLab.Analysis\3.3\HeuristicLab.Analysis-3.3.csproj">
+      <Project>{887425b4-4348-49ed-a457-b7d2c26ddbf9}</Project>
+      <Name>HeuristicLab.Analysis-3.3</Name>
+      <Private>False</Private>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Collections\3.3\HeuristicLab.Collections-3.3.csproj">
+      <Project>{958B43BC-CC5C-4FA2-8628-2B3B01D890B6}</Project>
+      <Name>HeuristicLab.Collections-3.3</Name>
+      <Private>False</Private>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Common\3.3\HeuristicLab.Common-3.3.csproj">
+      <Project>{a9ad58b9-3ef9-4cc1-97e5-8d909039ff5c}</Project>
+      <Name>HeuristicLab.Common-3.3</Name>
+      <Private>False</Private>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Core\3.3\HeuristicLab.Core-3.3.csproj">
+      <Project>{c36bd924-a541-4a00-afa8-41701378ddc5}</Project>
+      <Name>HeuristicLab.Core-3.3</Name>
+      <Private>False</Private>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Data\3.3\HeuristicLab.Data-3.3.csproj">
+      <Project>{bbab9df5-5ef3-4ba8-ade9-b36e82114937}</Project>
+      <Name>HeuristicLab.Data-3.3</Name>
+      <Private>False</Private>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Operators\3.3\HeuristicLab.Operators-3.3.csproj">
+      <Project>{23da7ff4-d5b8-41b6-aa96-f0561d24f3ee}</Project>
+      <Name>HeuristicLab.Operators-3.3</Name>
+      <Private>False</Private>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Optimization.Operators\3.3\HeuristicLab.Optimization.Operators-3.3.csproj">
+      <Project>{25087811-f74c-4128-bc86-8324271da13e}</Project>
+      <Name>HeuristicLab.Optimization.Operators-3.3</Name>
+      <Private>False</Private>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Optimization\3.3\HeuristicLab.Optimization-3.3.csproj">
+      <Project>{14ab8d24-25bc-400c-a846-4627aa945192}</Project>
+      <Name>HeuristicLab.Optimization-3.3</Name>
+      <Private>False</Private>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Parameters\3.3\HeuristicLab.Parameters-3.3.csproj">
+      <Project>{56f9106a-079f-4c61-92f6-86a84c2d84b7}</Project>
+      <Name>HeuristicLab.Parameters-3.3</Name>
+      <Private>False</Private>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Persistence\3.3\HeuristicLab.Persistence-3.3.csproj">
+      <Project>{102bc7d3-0ef9-439c-8f6d-96ff0fdb8e1b}</Project>
+      <Name>HeuristicLab.Persistence-3.3</Name>
+      <Private>False</Private>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.PluginInfrastructure\3.3\HeuristicLab.PluginInfrastructure-3.3.csproj">
+      <Project>{94186a6a-5176-4402-ae83-886557b53cca}</Project>
+      <Name>HeuristicLab.PluginInfrastructure-3.3</Name>
+      <Private>False</Private>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Random\3.3\HeuristicLab.Random-3.3.csproj">
+      <Project>{f4539fb6-4708-40c9-be64-0a1390aea197}</Project>
+      <Name>HeuristicLab.Random-3.3</Name>
+      <Private>False</Private>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Selection\3.3\HeuristicLab.Selection-3.3.csproj">
+      <Project>{2c36cd4f-e5f5-43a4-801a-201ea895fe17}</Project>
+      <Name>HeuristicLab.Selection-3.3</Name>
+      <Private>False</Private>
+    </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 Condition=" '$(OS)' == 'Windows_NT' ">set Path=%25Path%25;$(ProjectDir);$(SolutionDir)
+set ProjectDir=$(ProjectDir)
+set SolutionDir=$(SolutionDir)
+set Outdir=$(Outdir)
+
+call PreBuildEvent.cmd
+</PreBuildEvent>
+    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+export ProjectDir=$(ProjectDir)
+export SolutionDir=$(SolutionDir)
+
+$SolutionDir/PreBuildEvent.sh
+</PreBuildEvent>
+  </PropertyGroup>
+</Project>
Index: /stable/HeuristicLab.Algorithms.OffspringSelectionEvolutionStrategy/3.3/Plugin.cs.frame
===================================================================
--- /stable/HeuristicLab.Algorithms.OffspringSelectionEvolutionStrategy/3.3/Plugin.cs.frame	(revision 13292)
+++ /stable/HeuristicLab.Algorithms.OffspringSelectionEvolutionStrategy/3.3/Plugin.cs.frame	(revision 13292)
@@ -0,0 +1,44 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2015 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using HeuristicLab.PluginInfrastructure;
+
+namespace HeuristicLab.Algorithms.OffspringSelectionEvolutionStrategy {
+  /// <summary>
+  /// Plugin class for HeuristicLab.Algorithms.OffspringSelectionEvolutionStrategy plugin.
+  /// </summary>
+  [Plugin("HeuristicLab.Algorithms.OffspringSelectionEvolutionStrategy", "3.3.9.$WCREV$")]
+  [PluginFile("HeuristicLab.Algorithms.OffspringSelectionEvolutionStrategy-3.3.dll", PluginFileType.Assembly)]
+  [PluginDependency("HeuristicLab.Analysis", "3.3")]
+  [PluginDependency("HeuristicLab.Collections", "3.3")]
+  [PluginDependency("HeuristicLab.Common", "3.3")]
+  [PluginDependency("HeuristicLab.Core", "3.3")]
+  [PluginDependency("HeuristicLab.Data", "3.3")]
+  [PluginDependency("HeuristicLab.Operators", "3.3")]
+  [PluginDependency("HeuristicLab.Optimization", "3.3")]
+  [PluginDependency("HeuristicLab.Optimization.Operators", "3.3")]
+  [PluginDependency("HeuristicLab.Parameters", "3.3")]
+  [PluginDependency("HeuristicLab.Persistence", "3.3")]
+  [PluginDependency("HeuristicLab.Random", "3.3")]
+  [PluginDependency("HeuristicLab.Selection", "3.3")]
+  public class HeuristicLabAlgorithmsOffspringSelectionEvolutionStrategyPlugin : PluginBase {
+  }
+}
Index: /stable/HeuristicLab.Algorithms.OffspringSelectionEvolutionStrategy/3.3/Properties/AssemblyInfo.cs.frame
===================================================================
--- /stable/HeuristicLab.Algorithms.OffspringSelectionEvolutionStrategy/3.3/Properties/AssemblyInfo.cs.frame	(revision 13292)
+++ /stable/HeuristicLab.Algorithms.OffspringSelectionEvolutionStrategy/3.3/Properties/AssemblyInfo.cs.frame	(revision 13292)
@@ -0,0 +1,55 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2015 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.Algorithms.OffspringSelectionEvolutionStrategy")]
+[assembly: AssemblyDescription("HeuristicLab evolution strategy with offspring selection (OSES)")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("HeuristicLab")]
+[assembly: AssemblyCopyright("(c) 2002-2015 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("c27ab3d3-44d4-44e8-a3cd-3cea09d19a8f")]
+
+// 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.9.$WCREV$")]
Index: /stable/HeuristicLab.Algorithms.OffspringSelectionEvolutionStrategy/3.3/WithoutRepeatingBatchedRandomSelector.cs
===================================================================
--- /stable/HeuristicLab.Algorithms.OffspringSelectionEvolutionStrategy/3.3/WithoutRepeatingBatchedRandomSelector.cs	(revision 13292)
+++ /stable/HeuristicLab.Algorithms.OffspringSelectionEvolutionStrategy/3.3/WithoutRepeatingBatchedRandomSelector.cs	(revision 13292)
@@ -0,0 +1,90 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2015 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using HeuristicLab.Common;
+using HeuristicLab.Core;
+using HeuristicLab.Data;
+using HeuristicLab.Parameters;
+using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HeuristicLab.Selection;
+
+namespace HeuristicLab.Algorithms.OffspringSelectionEvolutionStrategy {
+  [Item("WithoutRepeatingBatchedRandomSelector", "Selects m batches of n parents where in each batch the n parents are drawn without repeating.")]
+  [StorableClass]
+  public class WithoutRepeatingBatchedRandomSelector : StochasticSelector {
+    public override bool CanChangeName {
+      get { return true; }
+    }
+    public IValueLookupParameter<IntValue> ChildrenParameter {
+      get { return (IValueLookupParameter<IntValue>)Parameters["Children"]; }
+    }
+    public IValueLookupParameter<IntValue> ParentsPerChildParameter {
+      get { return (IValueLookupParameter<IntValue>)Parameters["ParentsPerChild"]; }
+    }
+
+    [StorableConstructor]
+    protected WithoutRepeatingBatchedRandomSelector(bool deserializing) : base(deserializing) { }
+    protected WithoutRepeatingBatchedRandomSelector(WithoutRepeatingBatchedRandomSelector original, Cloner cloner)
+      : base(original, cloner) {
+    }
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new WithoutRepeatingBatchedRandomSelector(this, cloner);
+    }
+
+    public WithoutRepeatingBatchedRandomSelector()
+      : base() {
+      Parameters.Add(new ValueLookupParameter<IntValue>("Children", "The number of children to select (number of batches)."));
+      Parameters.Add(new ValueLookupParameter<IntValue>("ParentsPerChild", "The number of parents per child (size of each batch)."));
+    }
+
+    protected override IScope[] Select(List<IScope> scopes) {
+      IRandom random = RandomParameter.ActualValue;
+      int children = ChildrenParameter.ActualValue.Value;
+      int parents = ParentsPerChildParameter.ActualValue.Value;
+      int parentsAvailable = scopes.Count;
+
+      if (parents > parentsAvailable)
+        throw new InvalidOperationException("WithoutRepeatingBatchedRandomSelector: Cannot select more parents per child than there are parents available");
+
+      IScope[] result = new IScope[children * parents];
+      int count = 0;
+      HashSet<int> selectedParents = new HashSet<int>();
+      for (int i = 0; i < children; i++) {
+        selectedParents.Clear();
+        for (int j = 0; j < parents; j++) {
+          int nextParent = j; // will be used in case parents == parentsAvailable
+          if (parents < parentsAvailable) {
+            do {
+              nextParent = random.Next(parentsAvailable);
+            } while (selectedParents.Contains(nextParent));
+          }
+
+          result[count++] = (IScope)scopes[nextParent].Clone();
+          selectedParents.Add(nextParent);
+        }
+      }
+
+      return result;
+    }
+  }
+}
Index: /stable/HeuristicLab.Optimization.Operators/3.3/ChildrenCopyCreator.cs
===================================================================
--- /stable/HeuristicLab.Optimization.Operators/3.3/ChildrenCopyCreator.cs	(revision 13292)
+++ /stable/HeuristicLab.Optimization.Operators/3.3/ChildrenCopyCreator.cs	(revision 13292)
@@ -0,0 +1,75 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2015 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using HeuristicLab.Common;
+using HeuristicLab.Core;
+using HeuristicLab.Operators;
+using HeuristicLab.Parameters;
+using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+
+namespace HeuristicLab.Optimization.Operators {
+  /// <summary>
+  /// Creates a copy of every sub-scope in the current scope and adds it as a child to the sub-scope.
+  /// </summary>
+  /// <remarks>
+  /// Creates a copy of every sub-scope in the current scope and adds it as a child to the sub-scope.
+  /// </remarks>
+  [Item("ChildrenCopyCreator", "Creates a copy of every sub-scope in the current scope and adds it as a child to the sub-scope.")]
+  [StorableClass]
+  public sealed class ChildrenCopyCreator : SingleSuccessorOperator {
+    private ScopeParameter CurrentScopeParameter {
+      get { return (ScopeParameter)Parameters["CurrentScope"]; }
+    }
+    public IScope CurrentScope {
+      get { return CurrentScopeParameter.ActualValue; }
+    }
+
+    [StorableConstructor]
+    private ChildrenCopyCreator(bool deserializing) : base(deserializing) { }
+    private ChildrenCopyCreator(ChildrenCopyCreator original, Cloner cloner) : base(original, cloner) { }
+    public ChildrenCopyCreator()
+      : base() {
+      Parameters.Add(new ScopeParameter("CurrentScope", "The current scope whose sub-scopes should be copied."));
+    }
+
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new ChildrenCopyCreator(this, cloner);
+    }
+
+    public override IOperation Apply() {
+      int nChildren = CurrentScope.SubScopes.Count;
+
+      for (int i = 0; i < nChildren; i++) {
+        IScope child = CurrentScope.SubScopes[i];
+        if (child.SubScopes.Count > 0) throw new ArgumentException("The sub-scope that should be cloned has further sub-scopes.");
+
+        IScope childCopy = new Scope(i.ToString());
+        var cloner = new Cloner();
+        foreach (IVariable var in child.Variables)
+          childCopy.Variables.Add(cloner.Clone(var));
+
+        child.SubScopes.Add(childCopy);
+      }
+      return base.Apply();
+    }
+  }
+}
Index: /stable/HeuristicLab.Optimization.Operators/3.3/HeuristicLab.Optimization.Operators-3.3.csproj
===================================================================
--- /stable/HeuristicLab.Optimization.Operators/3.3/HeuristicLab.Optimization.Operators-3.3.csproj	(revision 13291)
+++ /stable/HeuristicLab.Optimization.Operators/3.3/HeuristicLab.Optimization.Operators-3.3.csproj	(revision 13292)
@@ -115,4 +115,5 @@
   </ItemGroup>
   <ItemGroup>
+    <Compile Include="ChildrenCopyCreator.cs" />
     <Compile Include="ExpressionCalculator.cs" />
     <Compile Include="NoSimilarityCalculator.cs" />
Index: /stable/HeuristicLab.Selection/3.3/EvolutionStrategyOffspringSelector.cs
===================================================================
--- /stable/HeuristicLab.Selection/3.3/EvolutionStrategyOffspringSelector.cs	(revision 13292)
+++ /stable/HeuristicLab.Selection/3.3/EvolutionStrategyOffspringSelector.cs	(revision 13292)
@@ -0,0 +1,262 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2015 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.Runtime.InteropServices;
+using HeuristicLab.Common;
+using HeuristicLab.Core;
+using HeuristicLab.Data;
+using HeuristicLab.Operators;
+using HeuristicLab.Parameters;
+using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+
+namespace HeuristicLab.Selection {
+  [Item("EvolutionStrategyOffspringSelector", "Selects among the offspring population those that are designated successful and discards the unsuccessful offspring, except for some lucky losers. It expects the parent scopes to be below the first sub-scope, and offspring scopes to be below the second sub-scope separated again in two sub-scopes, the first with the failed offspring and the second with successful offspring.")]
+  [StorableClass]
+  public class EvolutionStrategyOffspringSelector : SingleSuccessorOperator {
+
+    private class FitnessComparer : IComparer<IScope> {
+
+      #region IComparer<IScope> Member
+
+      private String qualityParameterName;
+      private bool maximization;
+
+      public FitnessComparer(String qualityParamName, bool maximization) {
+        this.qualityParameterName = qualityParamName;
+        this.maximization = maximization;
+      }
+
+      // less than zero if x is-better-than y 
+      // larger than zero if y is-better-than x
+      // zero if both are the same
+      public int Compare(IScope x, IScope y) {
+        IVariable quality1, quality2;
+
+        if (x.Variables.TryGetValue(qualityParameterName, out quality1)
+          && y.Variables.TryGetValue(qualityParameterName, out quality2)) {
+          DoubleValue left = quality1.Value as DoubleValue;
+          DoubleValue right = quality2.Value as DoubleValue;
+          var res = left.CompareTo(right);
+          if (maximization) return -res; // in the maximization case the largest value should preceed all others in the sort order
+          else return res;
+        } else
+          throw new ArgumentException("Quality variable " + qualityParameterName + " not found.");
+      }
+
+      #endregion
+    }
+
+    public ValueLookupParameter<DoubleValue> MaximumSelectionPressureParameter {
+      get { return (ValueLookupParameter<DoubleValue>)Parameters["MaximumSelectionPressure"]; }
+    }
+    public ValueLookupParameter<DoubleValue> SuccessRatioParameter {
+      get { return (ValueLookupParameter<DoubleValue>)Parameters["SuccessRatio"]; }
+    }
+    public LookupParameter<DoubleValue> SelectionPressureParameter {
+      get { return (ValueLookupParameter<DoubleValue>)Parameters["SelectionPressure"]; }
+    }
+    public LookupParameter<DoubleValue> CurrentSuccessRatioParameter {
+      get { return (LookupParameter<DoubleValue>)Parameters["CurrentSuccessRatio"]; }
+    }
+    public LookupParameter<ItemList<IScope>> OffspringPopulationParameter {
+      get { return (LookupParameter<ItemList<IScope>>)Parameters["OffspringPopulation"]; }
+    }
+    public LookupParameter<ItemList<IScope>> OffspringVirtualPopulationParameter {
+      get { return (LookupParameter<ItemList<IScope>>)Parameters["OffspringVirtualPopulation"]; }
+    }
+    public LookupParameter<IntValue> OffspringPopulationWinnersParameter {
+      get { return (LookupParameter<IntValue>)Parameters["OffspringPopulationWinners"]; }
+    }
+    public ScopeTreeLookupParameter<BoolValue> SuccessfulOffspringParameter {
+      get { return (ScopeTreeLookupParameter<BoolValue>)Parameters["SuccessfulOffspring"]; }
+    }
+    public OperatorParameter OffspringCreatorParameter {
+      get { return (OperatorParameter)Parameters["OffspringCreator"]; }
+    }
+    public LookupParameter<IntValue> EvaluatedSolutionsParameter {
+      get { return (LookupParameter<IntValue>)Parameters["EvaluatedSolutions"]; }
+    }
+    private LookupParameter<IntValue> MaximumEvaluatedSolutionsParameter {
+      get { return (LookupParameter<IntValue>)Parameters["MaximumEvaluatedSolutions"]; }
+    }
+    public ILookupParameter<DoubleValue> QualityParameter {
+      get { return (ILookupParameter<DoubleValue>)Parameters["Quality"]; }
+    }
+    public ILookupParameter<BoolValue> MaximizationParameter {
+      get { return (ILookupParameter<BoolValue>)Parameters["Maximization"]; }
+    }
+
+    public IOperator OffspringCreator {
+      get { return OffspringCreatorParameter.Value; }
+      set { OffspringCreatorParameter.Value = value; }
+    }
+
+    [StorableConstructor]
+    protected EvolutionStrategyOffspringSelector(bool deserializing) : base(deserializing) { }
+    protected EvolutionStrategyOffspringSelector(EvolutionStrategyOffspringSelector original, Cloner cloner) : base(original, cloner) { }
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new EvolutionStrategyOffspringSelector(this, cloner);
+    }
+    public EvolutionStrategyOffspringSelector()
+      : base() {
+      Parameters.Add(new ValueLookupParameter<DoubleValue>("MaximumSelectionPressure", "The maximum selection pressure which prematurely terminates the offspring selection step."));
+      Parameters.Add(new ValueLookupParameter<DoubleValue>("SuccessRatio", "The ratio of successful offspring that has to be produced."));
+      Parameters.Add(new ValueLookupParameter<DoubleValue>("SelectionPressure", "The amount of selection pressure currently necessary to fulfill the success ratio."));
+      Parameters.Add(new ValueLookupParameter<DoubleValue>("CurrentSuccessRatio", "The current success ratio indicates how much of the successful offspring have already been generated."));
+      Parameters.Add(new LookupParameter<ItemList<IScope>>("OffspringPopulation", "Temporary store of the offspring population."));
+      Parameters.Add(new LookupParameter<ItemList<IScope>>("OffspringVirtualPopulation", "Temporary store of the offspring population."));
+      Parameters.Add(new LookupParameter<IntValue>("OffspringPopulationWinners", "Temporary store the number of successful offspring in the offspring population."));
+      Parameters.Add(new ScopeTreeLookupParameter<BoolValue>("SuccessfulOffspring", "True if the offspring was more successful than its parents.", 2));
+      Parameters.Add(new OperatorParameter("OffspringCreator", "The operator used to create new offspring."));
+      Parameters.Add(new LookupParameter<IntValue>("EvaluatedSolutions", "The number of solution evaluations."));
+      Parameters.Add(new LookupParameter<IntValue>("MaximumEvaluatedSolutions", "The maximum number of evaluated solutions (approximately)."));
+      Parameters.Add(new LookupParameter<DoubleValue>("Quality", "The quality of a child"));
+      Parameters.Add(new LookupParameter<BoolValue>("Maximization", "Flag that indicates if the problem is a maximization problem"));
+    }
+
+    public override IOperation Apply() {
+      double maxSelPress = MaximumSelectionPressureParameter.ActualValue.Value;
+      double successRatio = SuccessRatioParameter.ActualValue.Value;
+      IScope scope = ExecutionContext.Scope;
+      IScope parents = scope.SubScopes[0];
+      IScope offspring = scope.SubScopes[1];
+      int populationSize = parents.SubScopes.Count;
+
+      // retrieve actual selection pressure and success ratio
+      DoubleValue selectionPressure = SelectionPressureParameter.ActualValue;
+      if (selectionPressure == null) {
+        selectionPressure = new DoubleValue(0);
+        SelectionPressureParameter.ActualValue = selectionPressure;
+      }
+      DoubleValue currentSuccessRatio = CurrentSuccessRatioParameter.ActualValue;
+      if (currentSuccessRatio == null) {
+        currentSuccessRatio = new DoubleValue(0);
+        CurrentSuccessRatioParameter.ActualValue = currentSuccessRatio;
+      }
+
+      // retrieve next population
+      ItemList<IScope> population = OffspringPopulationParameter.ActualValue;
+      ItemList<IScope> virtual_population = OffspringVirtualPopulationParameter.ActualValue;
+
+      IntValue successfulOffspring;
+      if (population == null) {
+        population = new ItemList<IScope>();
+        OffspringPopulationParameter.ActualValue = population;
+        selectionPressure.Value = 0; // initialize selection pressure for this round
+        currentSuccessRatio.Value = 0; // initialize current success ratio for this round
+        successfulOffspring = new IntValue(0);
+        OffspringPopulationWinnersParameter.ActualValue = successfulOffspring;
+
+        virtual_population = new ItemList<IScope>();
+        OffspringVirtualPopulationParameter.ActualValue = virtual_population;
+      } else successfulOffspring = OffspringPopulationWinnersParameter.ActualValue;
+
+      int successfulOffspringAdded = 0;
+
+      // implement the ActualValue fetch here - otherwise the parent scope would also be included, given that there may be 1000 or more parents, this is quite unnecessary
+      string tname = SuccessfulOffspringParameter.TranslatedName;
+      double tmpSelPress = selectionPressure.Value;
+      double tmpSelPressInc = 1.0 / populationSize;
+      for (int i = 0; i < offspring.SubScopes.Count; i++) {
+        // fetch value
+        IVariable tmpVar;
+        if (!offspring.SubScopes[i].Variables.TryGetValue(tname, out tmpVar)) throw new InvalidOperationException(Name + ": Could not determine if an offspring was successful or not.");
+        BoolValue tmp = (tmpVar.Value as BoolValue);
+        if (tmp == null) throw new InvalidOperationException(Name + ": The variable that indicates whether an offspring is successful or not must contain a BoolValue.");
+
+        // add to population
+        if (tmp.Value) {
+          IScope currentOffspring = offspring.SubScopes[i];
+          offspring.SubScopes.RemoveAt(i);
+          i--; // next loop should continue with the subscope at index i which replaced currentOffspring
+          population.Add(currentOffspring);
+          successfulOffspringAdded++;
+        } else {
+          IScope currentOffspring = offspring.SubScopes[i];
+          offspring.SubScopes.RemoveAt(i);
+          i--;
+          virtual_population.Add(currentOffspring); // add to losers pool
+        }
+        tmpSelPress += tmpSelPressInc;
+
+        double tmpSuccessRatio = (successfulOffspring.Value + successfulOffspringAdded) / ((double)populationSize);
+        if (tmpSuccessRatio >= successRatio && (population.Count + virtual_population.Count) >= populationSize)
+          break;
+      }
+      successfulOffspring.Value += successfulOffspringAdded;
+
+      // calculate actual selection pressure and success ratio
+      selectionPressure.Value = tmpSelPress;
+      currentSuccessRatio.Value = successfulOffspring.Value / ((double)populationSize);
+
+      // check if enough children have been generated (or limit of selection pressure or evaluted solutions is reached)
+      if (((EvaluatedSolutionsParameter.ActualValue.Value < MaximumEvaluatedSolutionsParameter.ActualValue.Value)
+          && (selectionPressure.Value < maxSelPress)
+          && (currentSuccessRatio.Value < successRatio))
+        || ((population.Count + virtual_population.Count) < populationSize)) {
+        // more children required -> reduce left and start children generation again
+        scope.SubScopes.Remove(parents);
+        scope.SubScopes.Remove(offspring);
+        while (parents.SubScopes.Count > 0) {
+          IScope parent = parents.SubScopes[0];
+          parents.SubScopes.RemoveAt(0); // TODO: repeated call of RemoveAt(0) is inefficient?
+          scope.SubScopes.Add(parent); // order of subscopes is reversed
+        }
+
+        IOperator offspringCreator = OffspringCreatorParameter.ActualValue as IOperator;
+        if (offspringCreator == null) throw new InvalidOperationException(Name + ": More offspring are required, but no operator specified for creating them.");
+        return ExecutionContext.CreateOperation(offspringCreator); // this assumes that this operator will be called again indirectly or directly
+      } else {
+        // enough children generated
+        var fitnessComparer = new FitnessComparer(QualityParameter.TranslatedName, MaximizationParameter.ActualValue.Value);
+        population.Sort(fitnessComparer); // sort individuals by descending fitness
+
+        // keeps only the best successRatio * populationSize solutions in the population (the remaining ones are added to the virtual population)
+        int removed = 0;
+        for (int i = 0; i < population.Count; i++) {
+          double tmpSuccessRatio = i / (double)populationSize;
+          if (tmpSuccessRatio > successRatio) {
+            virtual_population.Add(population[i]);
+            removed++;
+          }
+        }
+        population.RemoveRange(population.Count - removed, removed);
+
+        //fill up population with best remaining children (successful or unsuccessful)
+        virtual_population.Sort(fitnessComparer);
+        int offspringNeeded = populationSize - population.Count;
+        for (int i = 0; i < offspringNeeded && i < virtual_population.Count; i++) {
+          population.Add(virtual_population[i]); // children are sorted by descending fitness
+        }
+
+        offspring.SubScopes.Clear();
+        offspring.SubScopes.AddRange(population);
+
+        scope.Variables.Remove(OffspringPopulationParameter.TranslatedName);
+        scope.Variables.Remove(OffspringVirtualPopulationParameter.TranslatedName);
+        scope.Variables.Remove(OffspringPopulationWinnersParameter.TranslatedName);
+        return base.Apply();
+      }
+    }
+  }
+}
Index: /stable/HeuristicLab.Selection/3.3/HeuristicLab.Selection-3.3.csproj
===================================================================
--- /stable/HeuristicLab.Selection/3.3/HeuristicLab.Selection-3.3.csproj	(revision 13291)
+++ /stable/HeuristicLab.Selection/3.3/HeuristicLab.Selection-3.3.csproj	(revision 13292)
@@ -119,4 +119,5 @@
     <Compile Include="ConditionalSelector.cs" />
     <Compile Include="CrowdedTournamentSelector.cs" />
+    <Compile Include="EvolutionStrategyOffspringSelector.cs" />
     <Compile Include="GeneralizedRankSelector.cs" />
     <Compile Include="LeftSelector.cs" />
Index: /stable/HeuristicLab.Tests/HeuristicLab-3.3/Samples/OSESGriewankSampleTest.cs
===================================================================
--- /stable/HeuristicLab.Tests/HeuristicLab-3.3/Samples/OSESGriewankSampleTest.cs	(revision 13292)
+++ /stable/HeuristicLab.Tests/HeuristicLab-3.3/Samples/OSESGriewankSampleTest.cs	(revision 13292)
@@ -0,0 +1,99 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2015 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.IO;
+using HeuristicLab.Algorithms.EvolutionStrategy;
+using HeuristicLab.Algorithms.OffspringSelectionEvolutionStrategy;
+using HeuristicLab.Data;
+using HeuristicLab.Encodings.RealVectorEncoding;
+using HeuristicLab.Persistence.Default.Xml;
+using HeuristicLab.Problems.TestFunctions;
+using Microsoft.VisualStudio.TestTools.UnitTesting;
+
+namespace HeuristicLab.Tests {
+  [TestClass]
+  public class OSESGriewankSampleTest {
+    private const string SampleFileName = "OSES_Griewank";
+
+    [TestMethod]
+    [TestCategory("Samples.Create")]
+    [TestProperty("Time", "medium")]
+    public void CreateOSESGriewankSampleTest() {
+      var es = CreateOSESGriewankSample();
+      string path = Path.Combine(SamplesUtils.SamplesDirectory, SampleFileName + SamplesUtils.SampleFileExtension);
+      XmlGenerator.Serialize(es, path);
+    }
+
+    [TestMethod]
+    [TestCategory("Samples.Execute")]
+    [TestProperty("Time", "long")]
+    public void RunOSESGriewankSampleTest() {
+      var es = CreateOSESGriewankSample();
+      es.SetSeedRandomly.Value = false;
+      SamplesUtils.RunAlgorithm(es);
+      Assert.AreEqual(1.80366417E-07, SamplesUtils.GetDoubleResult(es, "BestQuality"), 1.0E-15);
+      Assert.AreEqual(4.84418627E-07, SamplesUtils.GetDoubleResult(es, "CurrentAverageQuality"), 1.0E-15);
+      Assert.AreEqual(9.20629802E-07, SamplesUtils.GetDoubleResult(es, "CurrentWorstQuality"), 1.0E-15);
+      Assert.AreEqual(39750, SamplesUtils.GetIntResult(es, "EvaluatedSolutions"));
+    }
+
+    private OffspringSelectionEvolutionStrategy CreateOSESGriewankSample() {
+      OffspringSelectionEvolutionStrategy es = new OffspringSelectionEvolutionStrategy();
+
+      #region Problem Configuration
+
+      SingleObjectiveTestFunctionProblem problem = new SingleObjectiveTestFunctionProblem();
+
+      problem.ProblemSize.Value = 10;
+      problem.EvaluatorParameter.Value = new GriewankEvaluator();
+      problem.SolutionCreatorParameter.Value = new UniformRandomRealVectorCreator();
+      problem.Maximization.Value = false;
+      problem.Bounds = new DoubleMatrix(new double[,] { { -600, 600 } });
+      problem.BestKnownQuality.Value = 0;
+      problem.BestKnownSolutionParameter.Value = new RealVector(10);
+      problem.Name = "Single Objective Test Function";
+      problem.Description = "Test function with real valued inputs and a single objective.";
+
+      #endregion
+
+      #region Algorithm Configuration
+
+      es.Name = "Offspring Selection Evolution Strategy - Griewank";
+      es.Description = "An evolution strategy with offspring selection which solves the 10-dimensional Griewank test function";
+      es.Problem = problem;
+      SamplesUtils.ConfigureOffspringSelectionEvolutionStrategyParameters<AverageCrossover, NormalAllPositionsManipulator,
+        StdDevStrategyVectorCreator, StdDevStrategyVectorCrossover, StdDevStrategyVectorManipulator>(es, 50, 1.0, 0.5, 100, 2, 100, false);
+
+      StdDevStrategyVectorCreator strategyCreator = (StdDevStrategyVectorCreator)es.StrategyParameterCreator;
+      strategyCreator.BoundsParameter.Value = new DoubleMatrix(new double[,] { { 1, 20 } });
+
+      StdDevStrategyVectorManipulator strategyManipulator =
+        (StdDevStrategyVectorManipulator)es.StrategyParameterManipulator;
+      strategyManipulator.BoundsParameter.Value = new DoubleMatrix(new double[,] { { 1E-12, 30 } });
+      strategyManipulator.GeneralLearningRateParameter.Value = new DoubleValue(0.22360679774997896);
+      strategyManipulator.LearningRateParameter.Value = new DoubleValue(0.39763536438352531);
+
+      #endregion
+
+      return es;
+    }
+  }
+}
Index: /stable/HeuristicLab.Tests/HeuristicLab-3.3/Samples/SamplesUtils.cs
===================================================================
--- /stable/HeuristicLab.Tests/HeuristicLab-3.3/Samples/SamplesUtils.cs	(revision 13291)
+++ /stable/HeuristicLab.Tests/HeuristicLab-3.3/Samples/SamplesUtils.cs	(revision 13292)
@@ -5,4 +5,5 @@
 using HeuristicLab.Algorithms.EvolutionStrategy;
 using HeuristicLab.Algorithms.GeneticAlgorithm;
+using HeuristicLab.Algorithms.OffspringSelectionEvolutionStrategy;
 using HeuristicLab.Algorithms.OffspringSelectionGeneticAlgorithm;
 using HeuristicLab.Data;
@@ -71,4 +72,43 @@
     }
 
+    public static void ConfigureOffspringSelectionEvolutionStrategyParameters<R, M, SC, SR, SM>(OffspringSelectionEvolutionStrategy es, int popSize,
+      double successRatio, double comparisonFactor, double maxSelPres, int parentsPerChild, int maxGens, bool plusSelection)
+      where R : ICrossover
+      where M : IManipulator
+      where SC : IStrategyParameterCreator
+      where SR : IStrategyParameterCrossover
+      where SM : IStrategyParameterManipulator {
+      es.PopulationSize.Value = popSize;
+      es.ComparisonFactor.Value = comparisonFactor;
+      es.SuccessRatio.Value = successRatio;
+      es.MaximumSelectionPressure.Value = maxSelPres;
+      es.ParentsPerChild.Value = parentsPerChild;
+      es.SelectedParents.Value = popSize * parentsPerChild;
+      es.MaximumGenerations.Value = maxGens;
+      es.PlusSelection.Value = false;
+
+      es.Seed.Value = 0;
+      es.SetSeedRandomly.Value = true;
+
+      es.Recombinator = es.RecombinatorParameter.ValidValues
+        .OfType<R>()
+        .Single();
+
+      es.Mutator = es.MutatorParameter.ValidValues
+        .OfType<M>()
+        .Single();
+
+      es.StrategyParameterCreator = es.StrategyParameterCreatorParameter.ValidValues
+        .OfType<SC>()
+        .Single();
+      es.StrategyParameterCrossover = es.StrategyParameterCrossoverParameter.ValidValues
+        .OfType<SR>()
+        .Single();
+      es.StrategyParameterManipulator = es.StrategyParameterManipulatorParameter.ValidValues
+        .OfType<SM>()
+        .Single();
+      es.Engine = new ParallelEngine.ParallelEngine();
+    }
+
     public static void ConfigureGeneticAlgorithmParameters<S, C, M>(GeneticAlgorithm ga, int popSize, int elites, int maxGens, double mutationRate, int tournGroupSize = 0)
       where S : ISelector
@@ -194,5 +234,5 @@
 
       ga.MaximumGenerations = maxGens;
-      
+
       ga.Engine = new ParallelEngine.ParallelEngine();
     }
Index: /stable/HeuristicLab.Tests/HeuristicLab.Tests.csproj
===================================================================
--- /stable/HeuristicLab.Tests/HeuristicLab.Tests.csproj	(revision 13291)
+++ /stable/HeuristicLab.Tests/HeuristicLab.Tests.csproj	(revision 13292)
@@ -131,4 +131,8 @@
     <Reference Include="HeuristicLab.Algorithms.LocalSearch-3.3">
       <HintPath>..\bin\HeuristicLab.Algorithms.LocalSearch-3.3.dll</HintPath>
+      <Private>False</Private>
+    </Reference>
+    <Reference Include="HeuristicLab.Algorithms.OffspringSelectionEvolutionStrategy-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
+      <HintPath>..\bin\HeuristicLab.Algorithms.OffspringSelectionEvolutionStrategy-3.3.dll</HintPath>
       <Private>False</Private>
     </Reference>
@@ -436,4 +440,5 @@
     <Compile Include="HeuristicLab-3.3\PluginLoader.cs" />
     <Compile Include="HeuristicLab-3.3\Samples\AlpsSampleTest.cs" />
+    <Compile Include="HeuristicLab-3.3\Samples\OSESGriewankSampleTest.cs" />
     <Compile Include="HeuristicLab-3.3\Samples\GAGroupingProblemSampleTest.cs" />
     <Compile Include="HeuristicLab-3.3\Samples\VnsOpSampleTest.cs" />
