Index: /branches/Scheduling/HeuristicLab 3.3.sln
===================================================================
--- /branches/Scheduling/HeuristicLab 3.3.sln	(revision 6293)
+++ /branches/Scheduling/HeuristicLab 3.3.sln	(revision 6294)
@@ -400,4 +400,6 @@
 EndProject
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.Problems.Scheduling.Views-3.3", "HeuristicLab.Problems.Scheduling.Views\3.3\HeuristicLab.Problems.Scheduling.Views-3.3.csproj", "{78763A4E-E163-48C2-98EB-709760D06F25}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.Encodings.SchedulingEncoding-3.3", "HeuristicLab.Encodings.SchedulingEncoding\3.3\HeuristicLab.Encodings.SchedulingEncoding-3.3.csproj", "{17F3EF80-B2C3-4B8D-A4D5-BE9CE3BA2606}"
 EndProject
 Global
@@ -1870,4 +1872,12 @@
 		{78763A4E-E163-48C2-98EB-709760D06F25}.Release|x64.ActiveCfg = Release|Any CPU
 		{78763A4E-E163-48C2-98EB-709760D06F25}.Release|x86.ActiveCfg = Release|Any CPU
+		{17F3EF80-B2C3-4B8D-A4D5-BE9CE3BA2606}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{17F3EF80-B2C3-4B8D-A4D5-BE9CE3BA2606}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{17F3EF80-B2C3-4B8D-A4D5-BE9CE3BA2606}.Debug|x64.ActiveCfg = Debug|Any CPU
+		{17F3EF80-B2C3-4B8D-A4D5-BE9CE3BA2606}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{17F3EF80-B2C3-4B8D-A4D5-BE9CE3BA2606}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{17F3EF80-B2C3-4B8D-A4D5-BE9CE3BA2606}.Release|Any CPU.Build.0 = Release|Any CPU
+		{17F3EF80-B2C3-4B8D-A4D5-BE9CE3BA2606}.Release|x64.ActiveCfg = Release|Any CPU
+		{17F3EF80-B2C3-4B8D-A4D5-BE9CE3BA2606}.Release|x86.ActiveCfg = Release|Any CPU
 	EndGlobalSection
 	GlobalSection(SolutionProperties) = preSolution
Index: /branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/HeuristicLab.Encodings.SchedulingEncoding-3.3.csproj
===================================================================
--- /branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/HeuristicLab.Encodings.SchedulingEncoding-3.3.csproj	(revision 6294)
+++ /branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/HeuristicLab.Encodings.SchedulingEncoding-3.3.csproj	(revision 6294)
@@ -0,0 +1,157 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>8.0.30703</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{17F3EF80-B2C3-4B8D-A4D5-BE9CE3BA2606}</ProjectGuid>
+    <OutputType>Library</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>HeuristicLab.Encodings.SchedulingEncoding</RootNamespace>
+    <AssemblyName>HeuristicLab.Encodings.SchedulingEncoding-3.3</AssemblyName>
+    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
+    <FileAlignment>512</FileAlignment>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup>
+    <SignAssembly>true</SignAssembly>
+  </PropertyGroup>
+  <PropertyGroup>
+    <AssemblyOriginatorKeyFile>HeuristicLab.snk</AssemblyOriginatorKeyFile>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="System" />
+    <Reference Include="System.Core" />
+    <Reference Include="System.Xml.Linq" />
+    <Reference Include="System.Data.DataSetExtensions" />
+    <Reference Include="Microsoft.CSharp" />
+    <Reference Include="System.Data" />
+    <Reference Include="System.Xml" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="Interfaces\IJSMOperator.cs" />
+    <Compile Include="Interfaces\IPRVOperator.cs" />
+    <Compile Include="Interfaces\IPWROperator.cs" />
+    <Compile Include="Interfaces\ISchedulingCreator.cs" />
+    <Compile Include="Interfaces\ISchedulingCrossover.cs" />
+    <Compile Include="Interfaces\ISchedulingDecoder.cs" />
+    <Compile Include="Interfaces\ISchedulingEncoding.cs" />
+    <Compile Include="Interfaces\ISchedulingEvaluator.cs" />
+    <Compile Include="Interfaces\ISchedulingManipulator.cs" />
+    <Compile Include="Interfaces\ISchedulingOperator.cs" />
+    <Compile Include="JobSequenceMatrix\Crossovers\JSMCrossover.cs" />
+    <Compile Include="JobSequenceMatrix\Crossovers\JSMJOXCrossover.cs" />
+    <Compile Include="JobSequenceMatrix\Crossovers\JSMOXCrossover.cs" />
+    <Compile Include="JobSequenceMatrix\Crossovers\JSMSXXCrossover.cs" />
+    <Compile Include="JobSequenceMatrix\JSMEncoding.cs" />
+    <Compile Include="JobSequenceMatrix\JSMRandomCreator.cs" />
+    <Compile Include="JobSequenceMatrix\Manipulators\JSMManipulator.cs" />
+    <Compile Include="JobSequenceMatrix\Manipulators\JSMShiftChangeManipulator.cs" />
+    <Compile Include="JobSequenceMatrix\Manipulators\JSMSwapManipulator.cs" />
+    <Compile Include="PermutationWithRepetition\Crossovers\PWRCrossover.cs" />
+    <Compile Include="PermutationWithRepetition\Crossovers\PWRGOXCrossover.cs" />
+    <Compile Include="PermutationWithRepetition\Crossovers\PWRPPXCrossover.cs" />
+    <Compile Include="PermutationWithRepetition\Manipulators\PWRManipulator.cs" />
+    <Compile Include="PermutationWithRepetition\Manipulators\PWRUniformOnePositionManipulator.cs" />
+    <Compile Include="PermutationWithRepetition\PWREncoding.cs" />
+    <Compile Include="PermutationWithRepetition\PWRRandomCreator.cs" />
+    <Compile Include="Plugin.cs" />
+    <Compile Include="PriorityRulesVector\Crossovers\PRVCrossover.cs" />
+    <Compile Include="PriorityRulesVector\Crossovers\PRVDiscreteCrossover.cs" />
+    <Compile Include="PriorityRulesVector\Crossovers\PRVSinglePointCrossover.cs" />
+    <Compile Include="PriorityRulesVector\Manipulators\PRVManipulator.cs" />
+    <Compile Include="PriorityRulesVector\Manipulators\PRVUniformOnePositionManipulator.cs" />
+    <Compile Include="PriorityRulesVector\PRVEncoding.cs" />
+    <Compile Include="PriorityRulesVector\PRVRandomCreator.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+    <Compile Include="ScheduleEncoding\IndexedScheduledTaskList.cs" />
+    <Compile Include="ScheduleEncoding\Resource.cs" />
+    <Compile Include="ScheduleEncoding\Schedule.cs" />
+    <Compile Include="ScheduleEncoding\ScheduledTask.cs" />
+    <Compile Include="SchedulingCreator.cs" />
+    <Compile Include="SchedulingCrossover.cs" />
+    <Compile Include="SchedulingDecoder.cs" />
+    <Compile Include="SchedulingEncodingTypes.cs" />
+    <Compile Include="SchedulingManipulator.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="HeuristicLab.snk" />
+    <None Include="Plugin.cs.frame" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\..\HeuristicLab.Collections\3.3\HeuristicLab.Collections-3.3.csproj">
+      <Project>{958B43BC-CC5C-4FA2-8628-2B3B01D890B6}</Project>
+      <Name>HeuristicLab.Collections-3.3</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Common.Resources\3.3\HeuristicLab.Common.Resources-3.3.csproj">
+      <Project>{0E27A536-1C4A-4624-A65E-DC4F4F23E3E1}</Project>
+      <Name>HeuristicLab.Common.Resources-3.3</Name>
+    </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>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Core\3.3\HeuristicLab.Core-3.3.csproj">
+      <Project>{C36BD924-A541-4A00-AFA8-41701378DDC5}</Project>
+      <Name>HeuristicLab.Core-3.3</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Data\3.3\HeuristicLab.Data-3.3.csproj">
+      <Project>{BBAB9DF5-5EF3-4BA8-ADE9-B36E82114937}</Project>
+      <Name>HeuristicLab.Data-3.3</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Encodings.IntegerVectorEncoding\3.3\HeuristicLab.Encodings.IntegerVectorEncoding-3.3.csproj">
+      <Project>{DDFB14DD-2A85-493C-A52D-E69729BBAEB0}</Project>
+      <Name>HeuristicLab.Encodings.IntegerVectorEncoding-3.3</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Encodings.PermutationEncoding\3.3\HeuristicLab.Encodings.PermutationEncoding-3.3.csproj">
+      <Project>{DBECB8B0-B166-4133-BAF1-ED67C3FD7FCA}</Project>
+      <Name>HeuristicLab.Encodings.PermutationEncoding-3.3</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Operators\3.3\HeuristicLab.Operators-3.3.csproj">
+      <Project>{23DA7FF4-D5B8-41B6-AA96-F0561D24F3EE}</Project>
+      <Name>HeuristicLab.Operators-3.3</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Optimization\3.3\HeuristicLab.Optimization-3.3.csproj">
+      <Project>{14AB8D24-25BC-400C-A846-4627AA945192}</Project>
+      <Name>HeuristicLab.Optimization-3.3</Name>
+    </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>
+    </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>
+    </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>
+    </ProjectReference>
+  </ItemGroup>
+  <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/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/Interfaces/IJSMOperator.cs
===================================================================
--- /branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/Interfaces/IJSMOperator.cs	(revision 6294)
+++ /branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/Interfaces/IJSMOperator.cs	(revision 6294)
@@ -0,0 +1,10 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using HeuristicLab.Core;
+
+namespace HeuristicLab.Encodings.SchedulingEncoding.Interfaces {
+  public interface IJSMOperator : IOperator {
+  }
+}
Index: /branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/Interfaces/IPRVOperator.cs
===================================================================
--- /branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/Interfaces/IPRVOperator.cs	(revision 6294)
+++ /branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/Interfaces/IPRVOperator.cs	(revision 6294)
@@ -0,0 +1,10 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using HeuristicLab.Core;
+
+namespace HeuristicLab.Encodings.SchedulingEncoding.Interfaces {
+  public interface IPRVOperator : IOperator {
+  }
+}
Index: /branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/Interfaces/IPWROperator.cs
===================================================================
--- /branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/Interfaces/IPWROperator.cs	(revision 6294)
+++ /branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/Interfaces/IPWROperator.cs	(revision 6294)
@@ -0,0 +1,10 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using HeuristicLab.Core;
+
+namespace HeuristicLab.Encodings.SchedulingEncoding.Interfaces {
+  public interface IPWROperator : IOperator {
+  }
+}
Index: /branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/Interfaces/ISchedulingCreator.cs
===================================================================
--- /branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/Interfaces/ISchedulingCreator.cs	(revision 6294)
+++ /branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/Interfaces/ISchedulingCreator.cs	(revision 6294)
@@ -0,0 +1,10 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using HeuristicLab.Optimization;
+
+namespace HeuristicLab.Encodings.SchedulingEncoding.Interfaces {
+  public interface ISchedulingCreator : ISolutionCreator {
+  }
+}
Index: /branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/Interfaces/ISchedulingCrossover.cs
===================================================================
--- /branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/Interfaces/ISchedulingCrossover.cs	(revision 6294)
+++ /branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/Interfaces/ISchedulingCrossover.cs	(revision 6294)
@@ -0,0 +1,12 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using HeuristicLab.Optimization;
+using HeuristicLab.Core;
+using HeuristicLab.Encodings.SchedulingEncoding.Encodings;
+
+namespace HeuristicLab.Encodings.SchedulingEncoding.Interfaces {
+  public interface ISchedulingCrossover : ICrossover{
+  }
+}
Index: /branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/Interfaces/ISchedulingDecoder.cs
===================================================================
--- /branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/Interfaces/ISchedulingDecoder.cs	(revision 6294)
+++ /branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/Interfaces/ISchedulingDecoder.cs	(revision 6294)
@@ -0,0 +1,37 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2011 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using HeuristicLab.Core;
+using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HeuristicLab.Common;
+using HeuristicLab.Encodings.PermutationEncoding;
+using HeuristicLab.Data;
+using HeuristicLab.Parameters;
+
+namespace HeuristicLab.Encodings.SchedulingEncoding.Interfaces {
+  public interface ISchedulingDecoder : IOperator {
+
+  }
+}
Index: /branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/Interfaces/ISchedulingEncoding.cs
===================================================================
--- /branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/Interfaces/ISchedulingEncoding.cs	(revision 6294)
+++ /branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/Interfaces/ISchedulingEncoding.cs	(revision 6294)
@@ -0,0 +1,37 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2011 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using HeuristicLab.Core;
+using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HeuristicLab.Common;
+using HeuristicLab.Encodings.PermutationEncoding;
+using HeuristicLab.Data;
+using HeuristicLab.Parameters;
+using HeuristicLab.Encodings.SchedulingEncoding.Encodings;
+
+namespace HeuristicLab.Encodings.SchedulingEncoding.Interfaces {
+  public interface ISchedulingEncoding : IItem {
+  }
+}
Index: /branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/Interfaces/ISchedulingEvaluator.cs
===================================================================
--- /branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/Interfaces/ISchedulingEvaluator.cs	(revision 6294)
+++ /branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/Interfaces/ISchedulingEvaluator.cs	(revision 6294)
@@ -0,0 +1,10 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using HeuristicLab.Optimization;
+
+namespace HeuristicLab.Encodings.SchedulingEncoding.Interfaces {
+  public interface ISchedulingEvaluator : ISingleObjectiveEvaluator {
+  }
+}
Index: /branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/Interfaces/ISchedulingManipulator.cs
===================================================================
--- /branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/Interfaces/ISchedulingManipulator.cs	(revision 6294)
+++ /branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/Interfaces/ISchedulingManipulator.cs	(revision 6294)
@@ -0,0 +1,29 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2011 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.Core;
+using HeuristicLab.Optimization;
+using HeuristicLab.Encodings.SchedulingEncoding.Encodings;
+
+namespace HeuristicLab.Encodings.SchedulingEncoding.Interfaces {
+  public interface ISchedulingManipulator : IManipulator {
+  }
+}
Index: /branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/Interfaces/ISchedulingOperator.cs
===================================================================
--- /branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/Interfaces/ISchedulingOperator.cs	(revision 6294)
+++ /branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/Interfaces/ISchedulingOperator.cs	(revision 6294)
@@ -0,0 +1,10 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using HeuristicLab.Core;
+
+namespace HeuristicLab.Encodings.SchedulingEncoding.Interfaces {
+  public interface ISchedulingOperator : IOperator {
+  }
+}
Index: /branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/JobSequenceMatrix/Crossovers/JSMCrossover.cs
===================================================================
--- /branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/JobSequenceMatrix/Crossovers/JSMCrossover.cs	(revision 6294)
+++ /branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/JobSequenceMatrix/Crossovers/JSMCrossover.cs	(revision 6294)
@@ -0,0 +1,52 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2011 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.Common;
+using HeuristicLab.Core;
+using HeuristicLab.Optimization;
+using HeuristicLab.Parameters;
+using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HeuristicLab.Encodings.SchedulingEncoding.Interfaces;
+
+namespace HeuristicLab.Encodings.SchedulingEncoding.JobSequenceMatrix.Crossovers {
+  [Item("JSMCrossover", "An operator which crosses two JSM representations.")]
+  [StorableClass]
+  public abstract class JSMCrossover : SchedulingCrossover<JSMEncoding>, IJSMOperator {
+
+    [StorableConstructor]
+    protected JSMCrossover(bool deserializing) : base(deserializing) { }
+    protected JSMCrossover(JSMCrossover original, Cloner cloner) : base(original, cloner) { }
+    public JSMCrossover()
+      : base() {
+    }
+
+    public abstract JSMEncoding Crossover(IRandom random, JSMEncoding parent1, JSMEncoding parent2);
+
+    public override IOperation Apply() {
+      ItemArray<JSMEncoding> parents = ParentsParameter.ActualValue;
+
+      ChildParameter.ActualValue =
+        Crossover(RandomParameter.ActualValue, parents[0] as JSMEncoding, parents[1] as JSMEncoding);
+
+      return base.Apply();
+    }
+  }
+}
Index: /branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/JobSequenceMatrix/Crossovers/JSMJOXCrossover.cs
===================================================================
--- /branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/JobSequenceMatrix/Crossovers/JSMJOXCrossover.cs	(revision 6294)
+++ /branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/JobSequenceMatrix/Crossovers/JSMJOXCrossover.cs	(revision 6294)
@@ -0,0 +1,87 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2011 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using HeuristicLab.Common;
+using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HeuristicLab.Core;
+using HeuristicLab.Encodings.SchedulingEncoding.Interfaces;
+using HeuristicLab.Data;
+using HeuristicLab.Encodings.PermutationEncoding;
+
+namespace HeuristicLab.Encodings.SchedulingEncoding.JobSequenceMatrix.Crossovers {
+  [Item("JSM Jobbased Order Crossover", "Represents a crossover operation swapping subsequences of the parents to generate offspring.")]
+  [StorableClass]
+  public class JSMJOXCrossover : JSMCrossover {
+    [StorableConstructor]
+    protected JSMJOXCrossover(bool deserializing) : base(deserializing) { }
+    protected JSMJOXCrossover(JSMJOXCrossover original, Cloner cloner)
+      : base(original, cloner) {
+    }
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new JSMJOXCrossover(this, cloner);
+    }
+
+    public JSMJOXCrossover() : base() { }
+
+    public static JSMEncoding Cross(IRandom random, JSMEncoding p1, JSMEncoding p2) {
+      JSMEncoding result = new JSMEncoding();
+
+      int nrOfResources = p1.JobSequenceMatrix.Count;
+      int nrOfJobs = p1.JobSequenceMatrix[0].Length;
+
+      //Determine randomly which jobindexes persist
+      BoolArray persist = new BoolArray(nrOfJobs);
+      for (int i = 0; i < persist.Length; i++) {
+        persist[i] = random.Next(2) == 1;
+      }    
+
+      bool dominantParent = random.Next(2) == 1;
+      JSMEncoding parent1 = dominantParent ? p1 : p2;
+      JSMEncoding parent2 = dominantParent ? p2 : p1;
+
+      //Fill childmatrix with values
+      for (int resIndex = 0; resIndex < nrOfResources; resIndex++) {
+        result.JobSequenceMatrix.Add(new Permutation (PermutationTypes.Absolute, nrOfJobs));
+        int parent2index = 0;
+        for (int jobIndex = 0; jobIndex < nrOfJobs; jobIndex++) {
+          if (persist[parent1.JobSequenceMatrix[resIndex][jobIndex]])
+            result.JobSequenceMatrix[resIndex][jobIndex] = parent1.JobSequenceMatrix[resIndex][jobIndex];
+          else {
+            while (persist[parent2.JobSequenceMatrix[resIndex][parent2index]])
+              parent2index++;
+            result.JobSequenceMatrix[resIndex][jobIndex] = parent2.JobSequenceMatrix[resIndex][parent2index];
+            parent2index++;
+          }
+        }
+      }
+
+      return result;
+    }
+
+    public override JSMEncoding Crossover(IRandom random, JSMEncoding parent1, JSMEncoding parent2) {
+      return Cross(random, parent1, parent2);
+    } 
+  }
+}
Index: /branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/JobSequenceMatrix/Crossovers/JSMOXCrossover.cs
===================================================================
--- /branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/JobSequenceMatrix/Crossovers/JSMOXCrossover.cs	(revision 6294)
+++ /branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/JobSequenceMatrix/Crossovers/JSMOXCrossover.cs	(revision 6294)
@@ -0,0 +1,62 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2011 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using HeuristicLab.Common;
+using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HeuristicLab.Core;
+using HeuristicLab.Encodings.SchedulingEncoding.Interfaces;
+
+namespace HeuristicLab.Encodings.SchedulingEncoding.JobSequenceMatrix.Crossovers {
+  [Item("JSM Order Crossover", "Represents a crossover operation swapping sequences of the parents to generate offspring.")]
+  [StorableClass]
+  public class JSMOXCrossover : JSMCrossover {
+    [StorableConstructor]
+    protected JSMOXCrossover(bool deserializing) : base(deserializing) { }
+    protected JSMOXCrossover(JSMOXCrossover original, Cloner cloner)
+      : base(original, cloner) {
+    }
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new JSMOXCrossover(this, cloner);
+    }
+
+    public JSMOXCrossover() : base() { }
+
+    public static JSMEncoding Cross(IRandom random, JSMEncoding parent1, JSMEncoding parent2) {
+      JSMEncoding result = new JSMEncoding ();
+
+      for (int i = 0; i < parent1.JobSequenceMatrix.Count; i++) {
+        result.JobSequenceMatrix.Add (
+          HeuristicLab.Encodings.PermutationEncoding.OrderCrossover.Apply(random, 
+          parent1.JobSequenceMatrix[i], parent2.JobSequenceMatrix[i]));
+      }
+
+      return result;
+    }
+
+    public override JSMEncoding Crossover(IRandom random, JSMEncoding parent1, JSMEncoding parent2) {
+      return Cross(random, parent1, parent2);
+    } 
+  }
+}
Index: /branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/JobSequenceMatrix/Crossovers/JSMSXXCrossover.cs
===================================================================
--- /branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/JobSequenceMatrix/Crossovers/JSMSXXCrossover.cs	(revision 6294)
+++ /branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/JobSequenceMatrix/Crossovers/JSMSXXCrossover.cs	(revision 6294)
@@ -0,0 +1,108 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2011 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using HeuristicLab.Common;
+using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HeuristicLab.Core;
+using HeuristicLab.Encodings.SchedulingEncoding.Interfaces;
+using HeuristicLab.Encodings.PermutationEncoding;
+
+namespace HeuristicLab.Encodings.SchedulingEncoding.JobSequenceMatrix.Crossovers {
+  [Item("JSM Subsequence Exchange Crossover", "Represents a crossover operation identifiying and exchanging equal subsequences of the parents to generate offspring.")]
+  [StorableClass]
+  public class JSMSXXCrossover : JSMCrossover {
+    [StorableConstructor]
+    protected JSMSXXCrossover(bool deserializing) : base(deserializing) { }
+    protected JSMSXXCrossover(JSMSXXCrossover original, Cloner cloner)
+      : base(original, cloner) {
+    }
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new JSMSXXCrossover(this, cloner);
+    }
+
+    public JSMSXXCrossover () : base () {}
+
+    public static JSMEncoding Cross(IRandom random, JSMEncoding parent1, JSMEncoding parent2) {
+      JSMEncoding result = new JSMEncoding();
+
+      int subSequenceLength = random.Next (parent1.JobSequenceMatrix[0].Length);
+
+      for (int i = 0; i < parent1.JobSequenceMatrix.Count; i++) {
+        Permutation p1 = (Permutation)parent1.JobSequenceMatrix[i].Clone();
+        Permutation p2 = (Permutation)parent2.JobSequenceMatrix[i].Clone();
+        FindAndExchangeSubsequences(p1, p2, subSequenceLength);
+        //parent1.JobSequenceMatrix[i] = p1;
+        //parent2.JobSequenceMatrix[i] = p2;
+
+        result.JobSequenceMatrix.Add(p1);
+      }
+
+      return result;
+    }
+
+    private static void FindAndExchangeSubsequences(Permutation p1, Permutation p2, int subSequenceLength) {
+      for (int i = 0; i <= p1.Length - subSequenceLength; i++) {
+        for (int j = 0; j <= p2.Length - subSequenceLength; j++) {
+          int[] ss1 = GetSubSequenceAtPosition(p1, i, subSequenceLength);
+          int[] ss2 = GetSubSequenceAtPosition(p2, j, subSequenceLength);
+          if (AreEqualSubsequences(ss1, ss2)) {
+            ExchangeSubsequences(p1, i, p2, j, subSequenceLength);
+            break;
+          }
+        }
+      }
+    }
+    private static void ExchangeSubsequences(Permutation p1, int index1, Permutation p2, int index2, int subSequenceLength) {
+      Permutation aux = (Permutation)p1.Clone();
+      for (int i = 0; i < subSequenceLength; i++) {
+        p1[i + index1] = p2[i + index2];
+        p2[i + index2] = aux[i + index1];
+      }
+    }
+    private static bool AreEqualSubsequences(int[] ss1, int[] ss2) {
+      int counter = 0;
+      for (int i = 0; i < ss1.Length; i++) {
+        for (int j = 0; j < ss2.Length; j++) {
+          if (ss1[i] == ss2[j])
+            counter++;
+        }
+      }
+      return counter == ss1.Length;
+    }
+    private static int[] GetSubSequenceAtPosition(Permutation p1, int index, int subSequenceLength) {
+      int[] result = new int[subSequenceLength];
+      for (int i = 0; i < subSequenceLength; i++)
+        result[i] = p1[i + index];
+
+      return result;
+    }
+
+
+
+    public override JSMEncoding Crossover(IRandom random, JSMEncoding parent1, JSMEncoding parent2) {
+      return Cross(random, parent1, parent2);
+    } 
+  }
+}
Index: /branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/JobSequenceMatrix/JSMEncoding.cs
===================================================================
--- /branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/JobSequenceMatrix/JSMEncoding.cs	(revision 6294)
+++ /branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/JobSequenceMatrix/JSMEncoding.cs	(revision 6294)
@@ -0,0 +1,66 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2011 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using HeuristicLab.Core;
+using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HeuristicLab.Common;
+using HeuristicLab.Encodings.PermutationEncoding;
+using HeuristicLab.Data;
+using HeuristicLab.Encodings.SchedulingEncoding.Interfaces;
+
+namespace HeuristicLab.Encodings.SchedulingEncoding.JobSequenceMatrix {
+  [Item("Job Sequencing Matrix Encoding", "Represents a solution for a standard JobShop Scheduling Problem.")]
+  [StorableClass]
+  public class JSMEncoding : ParameterizedNamedItem, ISchedulingEncoding{
+    [StorableConstructor]
+    protected JSMEncoding(bool deserializing) : base(deserializing) { }
+    protected JSMEncoding(JSMEncoding original, Cloner cloner)
+      : base(original, cloner) {
+        this.JobSequenceMatrix = cloner.Clone(original.JobSequenceMatrix);
+    }
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new JSMEncoding(this, cloner);
+    }
+
+    [Storable]
+    public ItemList<Permutation> JobSequenceMatrix { get; set; }
+
+    public JSMEncoding() : base() {
+      JobSequenceMatrix = new ItemList<Permutation>();
+    }
+
+    public override string ToString() {
+      StringBuilder sb = new StringBuilder();
+      sb.Append("[ ");
+
+      foreach (Permutation p in JobSequenceMatrix) {
+        sb.Append(p.ToString() + " \n");
+      }
+
+      sb.Append("]");
+      return sb.ToString();
+    }
+  }
+}
Index: /branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/JobSequenceMatrix/JSMRandomCreator.cs
===================================================================
--- /branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/JobSequenceMatrix/JSMRandomCreator.cs	(revision 6294)
+++ /branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/JobSequenceMatrix/JSMRandomCreator.cs	(revision 6294)
@@ -0,0 +1,78 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2011 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using HeuristicLab.Core;
+using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HeuristicLab.Common;
+using HeuristicLab.Optimization;
+using HeuristicLab.Parameters;
+using HeuristicLab.Data;
+using HeuristicLab.Encodings.PermutationEncoding;
+
+
+namespace HeuristicLab.Encodings.SchedulingEncoding.JobSequenceMatrix {
+  [Item("Job Sequencing Matrix Creator", "Creator class used to create Job Sequencing Matrix solutions for standard JobShop scheduling problems.")]
+  [StorableClass]
+  public class JSMRandomCreator : SchedulingCreator<JSMEncoding>, IStochasticOperator {
+    [StorableConstructor]
+    protected JSMRandomCreator(bool deserializing) : base(deserializing) { }
+    protected JSMRandomCreator(JSMRandomCreator original, Cloner cloner)
+      : base(original, cloner) {
+    }
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new JSMRandomCreator(this, cloner);
+    }
+
+    public ILookupParameter<IRandom> RandomParameter {
+      get { return (LookupParameter<IRandom>)Parameters["Random"]; }
+    }
+    public IValueLookupParameter<IntValue> JobsParameter {
+      get { return (IValueLookupParameter<IntValue>)Parameters["Jobs"]; }
+    }
+    public IValueLookupParameter<IntValue> ResourcesParameter {
+      get { return (IValueLookupParameter<IntValue>)Parameters["Resources"]; }
+    }
+
+    public JSMRandomCreator()
+      : base() {
+      Parameters.Add(new LookupParameter<IRandom>("Random", "The pseudo random number generator."));
+      Parameters.Add(new ValueLookupParameter<IntValue>("Jobs", "The number of jobs handled in this problem instance."));
+      Parameters.Add(new ValueLookupParameter<IntValue>("Resources", "The number of resources used in this problem instance."));
+    }
+
+
+    protected override JSMEncoding CreateSolution() {
+      JSMEncoding solution = new JSMEncoding();
+      IntValue nrOfJobs = new IntValue (JobsParameter.ActualValue.Value);
+      IntValue nrOfResources = new IntValue (ResourcesParameter.ActualValue.Value);
+
+      for (int i = 0; i < nrOfResources.Value; i++) {
+        solution.JobSequenceMatrix.Add(new Permutation(PermutationTypes.Absolute, nrOfJobs.Value, RandomParameter.ActualValue));
+      }
+
+      return solution;
+    }
+  }
+}
Index: /branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/JobSequenceMatrix/Manipulators/JSMManipulator.cs
===================================================================
--- /branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/JobSequenceMatrix/Manipulators/JSMManipulator.cs	(revision 6294)
+++ /branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/JobSequenceMatrix/Manipulators/JSMManipulator.cs	(revision 6294)
@@ -0,0 +1,56 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2011 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.Common;
+using HeuristicLab.Core;
+using HeuristicLab.Optimization;
+using HeuristicLab.Parameters;
+using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HeuristicLab.Encodings.SchedulingEncoding.Encodings;
+using HeuristicLab.Encodings.SchedulingEncoding.Interfaces;
+
+namespace HeuristicLab.Encodings.SchedulingEncoding.JobSequenceMatrix.Manipulators {
+  [Item("AlbaManipulator", "An operator which manipulates a VRP representation.")]
+  [StorableClass]
+  public abstract class JSMManipulator : SchedulingManipulator<JSMEncoding>, IJSMOperator {
+    [StorableConstructor]
+    protected JSMManipulator(bool deserializing) : base(deserializing) { }
+    protected JSMManipulator(JSMManipulator original, Cloner cloner) : base(original, cloner) { }
+    public JSMManipulator()
+      : base() {
+    }
+
+    protected abstract JSMEncoding Manipulate(IRandom random, JSMEncoding individual);
+
+
+    public override IOperation Apply() {
+      JSMEncoding solution = SchedulingSolutionParameter.ActualValue;
+
+      int nrOfMutations = RandomParameter.ActualValue.Next(5) + 1;
+
+      for (int i = 0; i < nrOfMutations; i++ )
+        SchedulingSolutionParameter.ActualValue = Manipulate(RandomParameter.ActualValue, solution as JSMEncoding);
+
+      return base.Apply();
+    }
+
+  }
+}
Index: /branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/JobSequenceMatrix/Manipulators/JSMShiftChangeManipulator.cs
===================================================================
--- /branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/JobSequenceMatrix/Manipulators/JSMShiftChangeManipulator.cs	(revision 6294)
+++ /branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/JobSequenceMatrix/Manipulators/JSMShiftChangeManipulator.cs	(revision 6294)
@@ -0,0 +1,78 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2011 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HeuristicLab.Core;
+using HeuristicLab.Common;
+using HeuristicLab.Encodings.PermutationEncoding;
+
+namespace HeuristicLab.Encodings.SchedulingEncoding.JobSequenceMatrix.Manipulators {
+
+  [Item("JSM Shift Change Manipulator", "Represents a manipulation operation inserting parts of the individual at another position.")]
+  [StorableClass]
+  public class JSMShiftChangeManipulator : JSMManipulator {
+    [StorableConstructor]
+    protected JSMShiftChangeManipulator(bool deserializing) : base(deserializing) { }
+    protected JSMShiftChangeManipulator(JSMShiftChangeManipulator original, Cloner cloner)
+      : base(original, cloner) {
+    }
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new JSMShiftChangeManipulator(this, cloner);
+    }
+
+    public JSMShiftChangeManipulator() : base() { }
+
+    protected override JSMEncoding Manipulate(IRandom random, JSMEncoding individual) {
+      JSMEncoding result = (JSMEncoding)individual.Clone();
+
+      int nrOfJobs = individual.JobSequenceMatrix[0].Length;
+
+      int jobIndex = random.Next(nrOfJobs);
+
+      int signedFactor = random.Next (2);
+
+      for (int permutationIndex = 0; permutationIndex < result.JobSequenceMatrix.Count; permutationIndex++ ) {
+        int i = 0;
+        Permutation currentPermutation = result.JobSequenceMatrix[permutationIndex];
+        while (i < currentPermutation.Length && currentPermutation[i] != jobIndex)
+          i++;
+
+        int shift = (signedFactor == 0) ? random.Next(nrOfJobs / 2) * -1 : random.Next(nrOfJobs / 2);
+        int newIndex = shift + i;
+        if (newIndex < 0) newIndex = 0;
+        if (newIndex >= nrOfJobs) newIndex = nrOfJobs - 1;
+
+        List<int> aux = currentPermutation.ToList<int>();
+        int swap = currentPermutation[i];
+        aux.RemoveAt(i);
+        aux.Insert(newIndex, swap);
+
+        result.JobSequenceMatrix[permutationIndex] = new Permutation(PermutationTypes.Absolute, aux.ToArray());
+      }
+
+      return result;
+    }
+  }
+}
Index: /branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/JobSequenceMatrix/Manipulators/JSMSwapManipulator.cs
===================================================================
--- /branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/JobSequenceMatrix/Manipulators/JSMSwapManipulator.cs	(revision 6294)
+++ /branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/JobSequenceMatrix/Manipulators/JSMSwapManipulator.cs	(revision 6294)
@@ -0,0 +1,59 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2011 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HeuristicLab.Core;
+using HeuristicLab.Common;
+using HeuristicLab.Encodings.PermutationEncoding;
+
+namespace HeuristicLab.Encodings.SchedulingEncoding.JobSequenceMatrix.Manipulators {
+
+  [Item("JSM Swap Manipulator", "Represents a manipulation operation inserting parts of the individual at another position.")]
+  [StorableClass]
+  public class JSMSwapManipulator : JSMManipulator {
+    [StorableConstructor]
+    protected JSMSwapManipulator(bool deserializing) : base(deserializing) { }
+    protected JSMSwapManipulator(JSMSwapManipulator original, Cloner cloner)
+      : base(original, cloner) {
+    }
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new JSMSwapManipulator(this, cloner);
+    }
+
+    public JSMSwapManipulator () : base () {}
+
+    protected override JSMEncoding Manipulate(IRandom random, JSMEncoding individual) {
+      JSMEncoding result = (JSMEncoding)individual.Clone();
+      int resourceIndex = random.Next(result.JobSequenceMatrix.Count);
+      Permutation p = result.JobSequenceMatrix[resourceIndex];
+      int seqIndex1 = random.Next(p.Length);
+      int seqIndex2 = random.Next(p.Length);
+      int aux = p[seqIndex1];
+      p[seqIndex1] = p[seqIndex2];
+      p[seqIndex2] = aux;
+      return result;
+    }
+  }
+}
Index: /branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/PermutationWithRepetition/Crossovers/PWRCrossover.cs
===================================================================
--- /branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/PermutationWithRepetition/Crossovers/PWRCrossover.cs	(revision 6294)
+++ /branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/PermutationWithRepetition/Crossovers/PWRCrossover.cs	(revision 6294)
@@ -0,0 +1,52 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2011 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.Common;
+using HeuristicLab.Core;
+using HeuristicLab.Optimization;
+using HeuristicLab.Parameters;
+using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HeuristicLab.Encodings.SchedulingEncoding.Interfaces;
+
+namespace HeuristicLab.Encodings.SchedulingEncoding.PermutationWithRepetition.Crossovers {
+  [Item("PWRCrossover", "An operator which crosses two JSM representations.")]
+  [StorableClass]
+  public abstract class PWRCrossover : SchedulingCrossover<PWREncoding>, IPWROperator {
+
+    [StorableConstructor]
+    protected PWRCrossover(bool deserializing) : base(deserializing) { }
+    protected PWRCrossover(PWRCrossover original, Cloner cloner) : base(original, cloner) { }
+    public PWRCrossover()
+      : base() {
+    }
+
+    public abstract PWREncoding Crossover(IRandom random, PWREncoding parent1, PWREncoding parent2);
+
+    public override IOperation Apply() {
+      ItemArray<PWREncoding> parents = ParentsParameter.ActualValue;
+
+      ChildParameter.ActualValue =
+        Crossover(RandomParameter.ActualValue, parents[0] as PWREncoding, parents[1] as PWREncoding);
+
+      return base.Apply();
+    }
+  }
+}
Index: /branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/PermutationWithRepetition/Crossovers/PWRGOXCrossover.cs
===================================================================
--- /branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/PermutationWithRepetition/Crossovers/PWRGOXCrossover.cs	(revision 6294)
+++ /branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/PermutationWithRepetition/Crossovers/PWRGOXCrossover.cs	(revision 6294)
@@ -0,0 +1,95 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2011 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using HeuristicLab.Core;
+using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HeuristicLab.Common;
+using HeuristicLab.Encodings.SchedulingEncoding.Interfaces;
+using HeuristicLab.Encodings.IntegerVectorEncoding;
+
+namespace HeuristicLab.Encodings.SchedulingEncoding.PermutationWithRepetition.Crossovers {
+  [Item("PWR Generalization Order Crossover", "Represents a crossover operation swapping sequences of the parents to generate offspring.")]
+  [StorableClass]
+  public class PWRGOXCrossover : PWRCrossover{
+    [StorableConstructor]
+    protected PWRGOXCrossover(bool deserializing) : base(deserializing) { }
+    protected PWRGOXCrossover(PWRGOXCrossover original, Cloner cloner)
+      : base(original, cloner) {
+    }
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new PWRGOXCrossover(this, cloner);
+    }
+
+    public PWRGOXCrossover() : base() { }
+
+    public override PWREncoding Crossover(IRandom random, PWREncoding parent1, PWREncoding parent2) {
+      PWREncoding result = new PWREncoding();
+                                                                                           
+      List<int> p1 = ((IntegerVector)(parent1.PermutationWithRepetition.Clone())).ToList<int>();
+      List<int> p2 = ((IntegerVector)(parent2.PermutationWithRepetition.Clone())).ToList<int>();
+      List<int> child = new List<int> ();
+
+      int[] lookUpArrayP1 = GetLookUpForIndividual(p1);
+      int[] lookUpArrayP2 = GetLookUpForIndividual(p2);
+
+      int xStringLength = p1.Count / 2;
+      int xStringPosition = random.Next(p1.Count / 2);
+
+      //insert elements from parent1 that dont conflict with the "selected" elements form parent2
+      for (int i = 0; i < p1.Count; i++) {
+        bool isSelected = false;
+        for (int j = xStringPosition; j < xStringPosition + xStringLength; j++) {
+          if (p1[i] == p2[j] && lookUpArrayP1[i] == lookUpArrayP2[j])
+            isSelected = true;
+        }
+        if (!isSelected)
+          child.Add(p1[i]);
+      }
+
+      for (int i = xStringPosition; i < xStringPosition + xStringLength; i++) {
+        child.Insert(i, p2[i]);
+      }
+
+      result.PermutationWithRepetition = new IntegerVector(child.ToArray());
+      return result;
+    }
+
+    private int[] GetLookUpForIndividual(List<int> p) {
+      int[] result = new int[p.Count];
+      Dictionary<int, int> lookUpTable = new Dictionary<int, int>();
+
+      for (int i = 0; i < p.Count; i++) {
+        if (!lookUpTable.ContainsKey(p[i]))
+          lookUpTable.Add(p[i], 0);
+        result[i] = lookUpTable[p[i]];
+        lookUpTable[p[i]]++;
+      }
+
+      return result;
+    }
+
+
+  }
+}
Index: /branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/PermutationWithRepetition/Crossovers/PWRPPXCrossover.cs
===================================================================
--- /branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/PermutationWithRepetition/Crossovers/PWRPPXCrossover.cs	(revision 6294)
+++ /branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/PermutationWithRepetition/Crossovers/PWRPPXCrossover.cs	(revision 6294)
@@ -0,0 +1,77 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2011 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using HeuristicLab.Core;
+using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HeuristicLab.Common;
+using HeuristicLab.Encodings.SchedulingEncoding.Interfaces;
+using HeuristicLab.Encodings.IntegerVectorEncoding;
+
+namespace HeuristicLab.Encodings.SchedulingEncoding.PermutationWithRepetition.Crossovers {
+  [Item("PWR Order Crossover", "Represents a crossover operation swapping sequences of the parents to generate offspring.")]
+  [StorableClass]
+  public class PWRPPXCrossover : PWRCrossover{
+    [StorableConstructor]
+    protected PWRPPXCrossover(bool deserializing) : base(deserializing) { }
+    protected PWRPPXCrossover(PWRPPXCrossover original, Cloner cloner)
+      : base(original, cloner) {
+    }
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new PWRPPXCrossover(this, cloner);
+    }
+
+    public PWRPPXCrossover() : base() { }
+
+    public override PWREncoding Crossover(IRandom random, PWREncoding parent1, PWREncoding parent2) {
+      PWREncoding result = new PWREncoding();
+      List<int> p1 = ((IntegerVector)(parent1.PermutationWithRepetition.Clone())).ToList<int>();
+      List<int> p2 = ((IntegerVector)(parent2.PermutationWithRepetition.Clone())).ToList<int>();
+      List<int> child = new List<int>();
+
+      bool[] lookUpTable = new bool[parent1.PermutationWithRepetition.Length];
+      for (int i = 0; i < lookUpTable.Length; i++ ) {
+        lookUpTable[i] = random.Next(2) == 1;
+      }
+
+      foreach (bool b in lookUpTable) {
+        if (b) {
+          child.Add(p1[0]);
+          p2.Remove(p1[0]);
+          p1.RemoveAt(0);
+        } else {
+          child.Add(p2[0]);
+          p1.Remove(p2[0]);
+          p2.RemoveAt(0);
+        }
+      }
+
+      result.PermutationWithRepetition = new IntegerVector(child.ToArray());
+
+      return result;
+    }
+
+
+  }
+}
Index: /branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/PermutationWithRepetition/Manipulators/PWRManipulator.cs
===================================================================
--- /branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/PermutationWithRepetition/Manipulators/PWRManipulator.cs	(revision 6294)
+++ /branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/PermutationWithRepetition/Manipulators/PWRManipulator.cs	(revision 6294)
@@ -0,0 +1,53 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2011 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.Common;
+using HeuristicLab.Core;
+using HeuristicLab.Optimization;
+using HeuristicLab.Parameters;
+using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HeuristicLab.Encodings.SchedulingEncoding.Encodings;
+using HeuristicLab.Encodings.SchedulingEncoding.Interfaces;
+
+namespace HeuristicLab.Encodings.SchedulingEncoding.PermutationWithRepetition.Manipulators {
+  [Item("PWRManipulator", "An operator which manipulates a PWR representation.")]
+  [StorableClass]
+  public abstract class PWRManipulator : SchedulingManipulator<PWREncoding>, IPWROperator {
+    [StorableConstructor]
+    protected PWRManipulator(bool deserializing) : base(deserializing) { }
+    protected PWRManipulator(PWRManipulator original, Cloner cloner) : base(original, cloner) { }
+    public PWRManipulator()
+      : base() {
+    }
+
+    protected abstract PWREncoding Manipulate(IRandom random, PWREncoding individual);
+
+
+    public override IOperation Apply() {
+      PWREncoding solution = SchedulingSolutionParameter.ActualValue;
+
+      SchedulingSolutionParameter.ActualValue = Manipulate(RandomParameter.ActualValue, solution as PWREncoding);
+
+      return base.Apply();
+    }
+
+  }
+}
Index: /branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/PermutationWithRepetition/Manipulators/PWRUniformOnePositionManipulator.cs
===================================================================
--- /branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/PermutationWithRepetition/Manipulators/PWRUniformOnePositionManipulator.cs	(revision 6294)
+++ /branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/PermutationWithRepetition/Manipulators/PWRUniformOnePositionManipulator.cs	(revision 6294)
@@ -0,0 +1,71 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2011 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HeuristicLab.Core;
+using HeuristicLab.Common;
+using HeuristicLab.Data;
+using HeuristicLab.Encodings.IntegerVectorEncoding;
+
+namespace HeuristicLab.Encodings.SchedulingEncoding.PermutationWithRepetition.Manipulators {
+
+  [Item("PWR Uniform One Position Manipulator", "Represents a manipulation operation inserting parts of the individual at another position.")]
+  [StorableClass]
+  public class PWRUniformOnePositionManipulator : PWRManipulator {
+    [StorableConstructor]
+    protected PWRUniformOnePositionManipulator(bool deserializing) : base(deserializing) { }
+    protected PWRUniformOnePositionManipulator(PWRUniformOnePositionManipulator original, Cloner cloner)
+      : base(original, cloner) {
+    }
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new PWRUniformOnePositionManipulator(this, cloner);
+    }
+
+    public PWRUniformOnePositionManipulator() : base() { }
+
+    protected override PWREncoding Manipulate(IRandom random, PWREncoding individual) {
+      PWREncoding result = new PWREncoding();
+
+      int cutIndex = random.Next(individual.PermutationWithRepetition.Length);
+      int insertIndex = random.Next(individual.PermutationWithRepetition.Length);
+
+      List<int> perm = ((IntegerVector)(individual.PermutationWithRepetition.Clone ())).ToList<int>();
+
+      int aux = perm[cutIndex];
+      if (cutIndex > insertIndex) {
+        perm.RemoveAt(cutIndex);
+        perm.Insert(insertIndex, aux);
+      } else {
+        perm.Insert(insertIndex, aux); 
+        perm.RemoveAt(cutIndex);
+      }
+
+      result.PermutationWithRepetition = new IntegerVector(perm.ToArray());
+      
+      return result;
+    }
+
+  }
+}
Index: /branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/PermutationWithRepetition/PWREncoding.cs
===================================================================
--- /branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/PermutationWithRepetition/PWREncoding.cs	(revision 6294)
+++ /branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/PermutationWithRepetition/PWREncoding.cs	(revision 6294)
@@ -0,0 +1,81 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2011 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using HeuristicLab.Encodings.SchedulingEncoding.Interfaces;
+using HeuristicLab.Core;
+using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HeuristicLab.Common;
+using HeuristicLab.Encodings.IntegerVectorEncoding;
+
+namespace HeuristicLab.Encodings.SchedulingEncoding.PermutationWithRepetition {
+  [Item("Permutation With Repetition Encoding", "Represents a solution for a standard JobShop Scheduling Problem.")]
+  [StorableClass]
+  public class PWREncoding : ParameterizedNamedItem, ISchedulingEncoding{
+    [StorableConstructor]
+    protected PWREncoding(bool deserializing) : base(deserializing) { }
+    protected PWREncoding(PWREncoding original, Cloner cloner)
+      : base(original, cloner) {
+        this.PermutationWithRepetition = cloner.Clone(original.PermutationWithRepetition);
+    }
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new PWREncoding(this, cloner);
+    }
+
+    [Storable]
+    public IntegerVector PermutationWithRepetition { get; set; }
+
+    public PWREncoding() 
+      : base () {
+      PermutationWithRepetition = new IntegerVector();
+    }
+
+    public PWREncoding(int problemDimension, IRandom random)
+      : base() {
+      PermutationWithRepetition = new IntegerVector(problemDimension * problemDimension);
+      int[] lookUpTable = new int[problemDimension];
+
+      for (int i = 0; i < PermutationWithRepetition.Length; i++) {
+        int newValue = random.Next(problemDimension);
+        while (lookUpTable[newValue] >= problemDimension)
+          newValue = random.Next(problemDimension);
+
+        PermutationWithRepetition[i] = newValue;
+
+        lookUpTable[newValue]++;
+      }
+    }
+
+    public override string ToString() {
+      StringBuilder sb = new StringBuilder();
+      sb.Append("[ ");
+      foreach (int i in PermutationWithRepetition) {
+        sb.Append(i + " ");
+      }
+      sb.Append("]");
+
+      return sb.ToString();
+    }
+  }
+}
Index: /branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/PermutationWithRepetition/PWRRandomCreator.cs
===================================================================
--- /branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/PermutationWithRepetition/PWRRandomCreator.cs	(revision 6294)
+++ /branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/PermutationWithRepetition/PWRRandomCreator.cs	(revision 6294)
@@ -0,0 +1,73 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2011 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HeuristicLab.Core;
+using HeuristicLab.Common;
+using HeuristicLab.Optimization;
+using HeuristicLab.Parameters;
+using HeuristicLab.Data;
+
+namespace HeuristicLab.Encodings.SchedulingEncoding.PermutationWithRepetition {
+  [Item("Permutation With Repetition Random Creator", "Creates PWR-individuals at random.")]
+  [StorableClass]
+  public class PWRRandomCreator : SchedulingCreator<PWREncoding>, IStochasticOperator {
+    [StorableConstructor]
+    protected PWRRandomCreator(bool deserializing) : base(deserializing) { }
+    protected PWRRandomCreator(PWRRandomCreator original, Cloner cloner)
+      : base(original, cloner) {
+    }
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new PWRRandomCreator(this, cloner);
+    }
+
+    public ILookupParameter<IRandom> RandomParameter {
+      get { return (LookupParameter<IRandom>)Parameters["Random"]; }
+    }
+
+    public IRandom Random {
+      get { return RandomParameter.ActualValue; }
+    }
+    public IValueLookupParameter<IntValue> JobsParameter {
+      get { return (IValueLookupParameter<IntValue>)Parameters["Jobs"]; }
+    }
+    public IValueLookupParameter<IntValue> ResourcesParameter {
+      get { return (IValueLookupParameter<IntValue>)Parameters["Resources"]; }
+    }
+
+    public PWRRandomCreator()
+      : base() {
+      Parameters.Add(new LookupParameter<IRandom>("Random", "The pseudo random number generator."));
+      Parameters.Add(new ValueLookupParameter<IntValue>("Jobs", "The number of jobs handled in this problem instance."));
+      Parameters.Add(new ValueLookupParameter<IntValue>("Resources", "The number of resources used in this problem instance."));
+    }
+
+
+    protected override PWREncoding CreateSolution() {
+      PWREncoding result = new PWREncoding(JobsParameter.ActualValue.Value, Random);
+      return result;
+    }
+  }
+}
Index: /branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/Plugin.cs
===================================================================
--- /branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/Plugin.cs	(revision 6294)
+++ /branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/Plugin.cs	(revision 6294)
@@ -0,0 +1,29 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2011 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.Encodings.SchedulingEncoding {
+  [Plugin("HeuristicLab.Encodings.SchedulingEncoding", "3.3.3.6266")]
+  [PluginFile("HeuristicLab.Encodings.SchedulingEncoding-3.3.dll", PluginFileType.Assembly)]
+  public class HeuristicLabEncodingsSchedulingEncodingPlugin : PluginBase {
+  }
+}
Index: /branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/Plugin.cs.frame
===================================================================
--- /branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/Plugin.cs.frame	(revision 6294)
+++ /branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/Plugin.cs.frame	(revision 6294)
@@ -0,0 +1,29 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2011 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.Encodings.SchedulingEncoding {
+  [Plugin("HeuristicLab.Encodings.SchedulingEncoding", "3.3.3.$WCREV$")]
+  [PluginFile("HeuristicLab.Encodings.SchedulingEncoding-3.3.dll", PluginFileType.Assembly)]
+  public class HeuristicLabEncodingsSchedulingEncodingPlugin : PluginBase {
+  }
+}
Index: /branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/PriorityRulesVector/Crossovers/PRVCrossover.cs
===================================================================
--- /branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/PriorityRulesVector/Crossovers/PRVCrossover.cs	(revision 6294)
+++ /branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/PriorityRulesVector/Crossovers/PRVCrossover.cs	(revision 6294)
@@ -0,0 +1,52 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2011 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.Common;
+using HeuristicLab.Core;
+using HeuristicLab.Optimization;
+using HeuristicLab.Parameters;
+using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HeuristicLab.Encodings.SchedulingEncoding.Interfaces;
+
+namespace HeuristicLab.Encodings.SchedulingEncoding.PriorityRulesVector.Crossovers {
+  [Item("PRVCrossover", "An operator which crosses two PRV representations.")]
+  [StorableClass]
+  public abstract class PRVCrossover : SchedulingCrossover<PRVEncoding>, IPRVOperator {
+
+    [StorableConstructor]
+    protected PRVCrossover(bool deserializing) : base(deserializing) { }
+    protected PRVCrossover(PRVCrossover original, Cloner cloner) : base(original, cloner) { }
+    public PRVCrossover()
+      : base() {
+    }
+
+    public abstract PRVEncoding Crossover(IRandom random, PRVEncoding parent1, PRVEncoding parent2);
+
+    public override IOperation Apply() {
+      ItemArray<PRVEncoding> parents = ParentsParameter.ActualValue;
+
+      ChildParameter.ActualValue =
+        Crossover(RandomParameter.ActualValue, parents[0] as PRVEncoding, parents[1] as PRVEncoding);
+
+      return base.Apply();
+    }
+  }
+}
Index: /branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/PriorityRulesVector/Crossovers/PRVDiscreteCrossover.cs
===================================================================
--- /branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/PriorityRulesVector/Crossovers/PRVDiscreteCrossover.cs	(revision 6294)
+++ /branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/PriorityRulesVector/Crossovers/PRVDiscreteCrossover.cs	(revision 6294)
@@ -0,0 +1,55 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2011 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using HeuristicLab.Common;
+using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HeuristicLab.Core;
+using HeuristicLab.Encodings.SchedulingEncoding.Interfaces;
+using HeuristicLab.Encodings.IntegerVectorEncoding;
+
+namespace HeuristicLab.Encodings.SchedulingEncoding.PriorityRulesVector.Crossovers {
+  [Item("PRV Discrete Crossover", "Represents a crossover operation swapping sequences of the parents to generate offspring.")]
+  [StorableClass]
+  public class PRVDiscreteCrossover : PRVCrossover {
+    [StorableConstructor]
+    protected PRVDiscreteCrossover(bool deserializing) : base(deserializing) { }
+    protected PRVDiscreteCrossover(PRVDiscreteCrossover original, Cloner cloner)
+      : base(original, cloner) {
+    }
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new PRVDiscreteCrossover(this, cloner);
+    }
+
+    public PRVDiscreteCrossover() : base() { }
+
+    public static PRVEncoding Cross(IRandom random, PRVEncoding parent1, PRVEncoding parent2) {
+      return new PRVEncoding(DiscreteCrossover.Apply(random, parent1.PriorityRulesVector, parent2.PriorityRulesVector), parent1.NrOfRules);
+    }
+
+    public override PRVEncoding Crossover(IRandom random, PRVEncoding parent1, PRVEncoding parent2) {
+      return Cross(random, parent1, parent2);
+    } 
+  }
+}
Index: /branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/PriorityRulesVector/Crossovers/PRVSinglePointCrossover.cs
===================================================================
--- /branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/PriorityRulesVector/Crossovers/PRVSinglePointCrossover.cs	(revision 6294)
+++ /branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/PriorityRulesVector/Crossovers/PRVSinglePointCrossover.cs	(revision 6294)
@@ -0,0 +1,55 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2011 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using HeuristicLab.Common;
+using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HeuristicLab.Core;
+using HeuristicLab.Encodings.SchedulingEncoding.Interfaces;
+using HeuristicLab.Encodings.IntegerVectorEncoding;
+
+namespace HeuristicLab.Encodings.SchedulingEncoding.PriorityRulesVector.Crossovers {
+  [Item("PRV SinglePoint Crossover", "Represents a crossover operation swapping sequences of the parents to generate offspring.")]
+  [StorableClass]
+  public class PRVSinglePointCrossover : PRVCrossover {
+    [StorableConstructor]
+    protected PRVSinglePointCrossover(bool deserializing) : base(deserializing) { }
+    protected PRVSinglePointCrossover(PRVSinglePointCrossover original, Cloner cloner)
+      : base(original, cloner) {
+    }
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new PRVSinglePointCrossover(this, cloner);
+    }
+
+    public PRVSinglePointCrossover() : base() { }
+
+    public static PRVEncoding Cross(IRandom random, PRVEncoding parent1, PRVEncoding parent2) {
+      return new PRVEncoding(SinglePointCrossover.Apply(random, parent1.PriorityRulesVector, parent2.PriorityRulesVector), parent1.NrOfRules);
+    }
+
+    public override PRVEncoding Crossover(IRandom random, PRVEncoding parent1, PRVEncoding parent2) {
+      return Cross(random, parent1, parent2);;
+    } 
+  }
+}
Index: /branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/PriorityRulesVector/Manipulators/PRVManipulator.cs
===================================================================
--- /branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/PriorityRulesVector/Manipulators/PRVManipulator.cs	(revision 6294)
+++ /branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/PriorityRulesVector/Manipulators/PRVManipulator.cs	(revision 6294)
@@ -0,0 +1,53 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2011 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.Common;
+using HeuristicLab.Core;
+using HeuristicLab.Optimization;
+using HeuristicLab.Parameters;
+using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HeuristicLab.Encodings.SchedulingEncoding.Encodings;
+using HeuristicLab.Encodings.SchedulingEncoding.Interfaces;
+
+namespace HeuristicLab.Encodings.SchedulingEncoding.PriorityRulesVector.Manipulators {
+  [Item("PRVManipulator", "An operator which manipulates a PRV representation.")]
+  [StorableClass]
+  public abstract class PRVManipulator : SchedulingManipulator<PRVEncoding>, IPRVOperator {
+    [StorableConstructor]
+    protected PRVManipulator(bool deserializing) : base(deserializing) { }
+    protected PRVManipulator(PRVManipulator original, Cloner cloner) : base(original, cloner) { }
+    public PRVManipulator()
+      : base() {
+    }
+
+    protected abstract PRVEncoding Manipulate(IRandom random, PRVEncoding individual);
+
+
+    public override IOperation Apply() {
+      PRVEncoding solution = SchedulingSolutionParameter.ActualValue;
+
+      SchedulingSolutionParameter.ActualValue = Manipulate(RandomParameter.ActualValue, solution as PRVEncoding);
+
+      return base.Apply();
+    }
+
+  }
+}
Index: /branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/PriorityRulesVector/Manipulators/PRVUniformOnePositionManipulator.cs
===================================================================
--- /branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/PriorityRulesVector/Manipulators/PRVUniformOnePositionManipulator.cs	(revision 6294)
+++ /branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/PriorityRulesVector/Manipulators/PRVUniformOnePositionManipulator.cs	(revision 6294)
@@ -0,0 +1,54 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2011 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HeuristicLab.Core;
+using HeuristicLab.Common;
+using HeuristicLab.Encodings.PermutationEncoding;
+using HeuristicLab.Encodings.IntegerVectorEncoding;
+using HeuristicLab.Data;
+
+namespace HeuristicLab.Encodings.SchedulingEncoding.PriorityRulesVector.Manipulators {
+
+  [Item("PRV Uniform One Position Manipulator", "Represents a manipulation operation inserting parts of the individual at another position.")]
+  [StorableClass]
+  public class PRVUniformOnePositionManipulator : PRVManipulator {
+    [StorableConstructor]
+    protected PRVUniformOnePositionManipulator(bool deserializing) : base(deserializing) { }
+    protected PRVUniformOnePositionManipulator(PRVUniformOnePositionManipulator original, Cloner cloner)
+      : base(original, cloner) {
+    }
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new PRVUniformOnePositionManipulator(this, cloner);
+    }
+
+    public PRVUniformOnePositionManipulator() : base() { }
+
+    protected override PRVEncoding Manipulate(IRandom random, PRVEncoding individual) {
+      UniformOnePositionManipulator.Apply(random, individual.PriorityRulesVector, new IntValue(0), new IntValue(3));
+      return individual;
+    }
+  }
+}
Index: /branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/PriorityRulesVector/PRVEncoding.cs
===================================================================
--- /branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/PriorityRulesVector/PRVEncoding.cs	(revision 6294)
+++ /branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/PriorityRulesVector/PRVEncoding.cs	(revision 6294)
@@ -0,0 +1,89 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2011 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using HeuristicLab.Core;
+using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HeuristicLab.Common;
+using HeuristicLab.Encodings.PermutationEncoding;
+using HeuristicLab.Data;
+using HeuristicLab.Encodings.SchedulingEncoding.Interfaces;
+using HeuristicLab.Encodings.IntegerVectorEncoding;
+
+namespace HeuristicLab.Encodings.SchedulingEncoding.PriorityRulesVector {
+  [Item("Priority Rules Vector Encoding", "Represents a solution for a standard JobShop Scheduling Problem.")]
+  [StorableClass]
+  public class PRVEncoding : ParameterizedNamedItem, ISchedulingEncoding {
+    [StorableConstructor]
+    protected PRVEncoding(bool deserializing) : base(deserializing) { }
+    protected PRVEncoding(PRVEncoding original, Cloner cloner)
+      : base(original, cloner) {
+        this.nrOfRules = cloner.Clone(original.NrOfRules);
+        this.PriorityRulesVector = cloner.Clone(original.PriorityRulesVector);
+    }
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new PRVEncoding(this, cloner);
+    }
+
+    [Storable]
+    public IntegerVector PriorityRulesVector { get; set; }
+
+    [Storable]
+    private IntValue nrOfRules;
+    public IntValue NrOfRules { 
+      get {
+        return nrOfRules;
+      } 
+    }
+
+
+    public PRVEncoding(IntValue nrOfRules)
+      : base() {
+        this.nrOfRules = (IntValue)nrOfRules.Clone();
+        this.PriorityRulesVector = new IntegerVector();
+    }
+
+    public PRVEncoding (IntegerVector iv, IntValue nrOfRules) : base () {
+      this.nrOfRules = (IntValue)nrOfRules.Clone();
+      this.PriorityRulesVector = (IntegerVector)iv.Clone();
+    }
+
+    public PRVEncoding(int length, IRandom random, int min, int max, IntValue nrOfRules) : base() {
+      this.nrOfRules = (IntValue)nrOfRules.Clone();
+      this.PriorityRulesVector = new IntegerVector(length, random, min, max);
+    }
+
+    public override string ToString() {
+      StringBuilder sb = new StringBuilder();
+      sb.Append("[ ");
+
+      foreach (int i in PriorityRulesVector) {
+        sb.Append(i.ToString() + " ");
+      }
+
+      sb.Append("]");
+      return sb.ToString();
+    }
+  }
+}
Index: /branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/PriorityRulesVector/PRVRandomCreator.cs
===================================================================
--- /branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/PriorityRulesVector/PRVRandomCreator.cs	(revision 6294)
+++ /branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/PriorityRulesVector/PRVRandomCreator.cs	(revision 6294)
@@ -0,0 +1,80 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2011 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using HeuristicLab.Core;
+using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HeuristicLab.Common;
+using HeuristicLab.Optimization;
+using HeuristicLab.Parameters;
+using HeuristicLab.Data;
+using HeuristicLab.Encodings.PermutationEncoding;
+using HeuristicLab.Encodings.IntegerVectorEncoding;
+
+
+namespace HeuristicLab.Encodings.SchedulingEncoding.PriorityRulesVector {
+  [Item("Priority Rules Random Creator", "Creator class used to create PRV solutions for standard JobShop scheduling problems.")]
+  [StorableClass]
+  public class PRVRandomCreator : SchedulingCreator<PRVEncoding>, IStochasticOperator {
+    [StorableConstructor]
+    protected PRVRandomCreator(bool deserializing) : base(deserializing) { }
+    protected PRVRandomCreator(PRVRandomCreator original, Cloner cloner)
+      : base(original, cloner) {
+        this.NrOfRules = cloner.Clone(original.NrOfRules);
+    }
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new PRVRandomCreator(this, cloner);
+    }
+
+    public ILookupParameter<IRandom> RandomParameter {
+      get { return (LookupParameter<IRandom>)Parameters["Random"]; }
+    }
+    public IValueLookupParameter<IntValue> JobsParameter {
+      get { return (IValueLookupParameter<IntValue>)Parameters["Jobs"]; }
+    }
+    public IValueLookupParameter<IntValue> ResourcesParameter {
+      get { return (IValueLookupParameter<IntValue>)Parameters["Resources"]; }
+    }
+
+
+    [Storable]
+    public IntValue NrOfRules { get; set; }
+
+    public PRVRandomCreator()
+      : base() {
+      NrOfRules = new IntValue(10);
+      Parameters.Add(new LookupParameter<IRandom>("Random", "The pseudo random number generator."));
+      Parameters.Add(new ValueLookupParameter<IntValue>("Jobs", "The number of jobs handled in this problem instance."));
+      Parameters.Add(new ValueLookupParameter<IntValue>("Resources", "The number of resources used in this problem instance."));
+    }
+
+
+    protected override PRVEncoding CreateSolution() {
+      IntValue nrOfJobs = new IntValue (JobsParameter.ActualValue.Value);
+      IntValue nrOfResources = new IntValue (ResourcesParameter.ActualValue.Value);
+      PRVEncoding solution = new PRVEncoding(nrOfJobs.Value * nrOfResources.Value, RandomParameter.ActualValue, 0, NrOfRules.Value, NrOfRules);
+      return solution;
+    }
+  }
+}
Index: /branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/Properties/AssemblyInfo.cs
===================================================================
--- /branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/Properties/AssemblyInfo.cs	(revision 6294)
+++ /branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/Properties/AssemblyInfo.cs	(revision 6294)
@@ -0,0 +1,36 @@
+﻿using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("HeuristicLab.Encodings.SchedulingEncoding-3.3")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("FH-Hagenberg")]
+[assembly: AssemblyProduct("HeuristicLab.Encodings.SchedulingEncoding-3.3")]
+[assembly: AssemblyCopyright("Copyright © FH-Hagenberg 2011")]
+[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("cb0d3725-ec2e-4eee-8663-adade96d70b4")]
+
+// 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/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/ScheduleEncoding/IndexedScheduledTaskList.cs
===================================================================
--- /branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/ScheduleEncoding/IndexedScheduledTaskList.cs	(revision 6294)
+++ /branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/ScheduleEncoding/IndexedScheduledTaskList.cs	(revision 6294)
@@ -0,0 +1,84 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2011 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using HeuristicLab.Core;
+using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HeuristicLab.Common;
+using HeuristicLab.Parameters;
+using HeuristicLab.Data;
+
+namespace HeuristicLab.Encodings.SchedulingEncoding {
+  [Item("Indexed Tasklist", "Represents a list of tasks.")]
+  [StorableClass]
+  public class IndexedScheduledTaskList : ParameterizedNamedItem {
+    [StorableConstructor]
+    protected IndexedScheduledTaskList(bool deserializing) : base(deserializing) { }
+    protected IndexedScheduledTaskList(IndexedScheduledTaskList original, Cloner cloner)
+      : base(original, cloner) {
+      this.Index = cloner.Clone(original.Index);
+      this.Tasks = cloner.Clone(original.Tasks);
+    }
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new IndexedScheduledTaskList(this, cloner);
+    }
+
+
+    public IntValue Index {
+      get;
+      set;
+    }
+    public ItemList<ScheduledTask> Tasks {
+      get;
+      set;
+    }
+
+
+    public DoubleValue TotalDuration {
+      get {
+        double result = 0;
+        foreach (ScheduledTask t in Tasks) {
+          if (t.EndTime.Value > result)
+            result = t.EndTime.Value;
+        }
+        return new DoubleValue(result);
+      }
+    }
+
+    public IndexedScheduledTaskList (IntValue index) : base (){
+      Index = index;
+      Tasks = new ItemList<ScheduledTask>();
+    }
+
+    public override string ToString() {
+      StringBuilder sb = new StringBuilder();
+      sb.Append("TaskList#" + Index + " [ ");
+      foreach (ScheduledTask t in Tasks) {
+        sb.Append(t.ToString() + " ");
+      }
+      sb.Append("]");
+      return sb.ToString();
+    }
+  }
+}
Index: /branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/ScheduleEncoding/Resource.cs
===================================================================
--- /branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/ScheduleEncoding/Resource.cs	(revision 6294)
+++ /branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/ScheduleEncoding/Resource.cs	(revision 6294)
@@ -0,0 +1,57 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2011 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using HeuristicLab.Core;
+using HeuristicLab.Parameters;
+using HeuristicLab.Data;
+using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HeuristicLab.Common;
+
+namespace HeuristicLab.Encodings.SchedulingEncoding {
+  [Item("Resource Class", "Represents a resource used in scheduling problems.")]
+  [StorableClass]
+  public class Resource : IndexedScheduledTaskList {
+    [StorableConstructor]
+    protected Resource(bool deserializing) : base(deserializing) { }
+    protected Resource(Resource original, Cloner cloner)
+      : base(original, cloner) {
+    }
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new Resource(this, cloner);
+    }
+
+    public Resource(IntValue index) : base (index) { }
+
+    public override string ToString() {
+      StringBuilder sb = new StringBuilder();
+      sb.Append("Resource#" + Index + " [ ");
+      foreach (ScheduledTask t in Tasks) {
+        sb.Append(t.ToString() + " ");
+      }
+      sb.Append("]");
+      return sb.ToString();
+    }
+  }
+}
Index: /branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/ScheduleEncoding/Schedule.cs
===================================================================
--- /branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/ScheduleEncoding/Schedule.cs	(revision 6294)
+++ /branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/ScheduleEncoding/Schedule.cs	(revision 6294)
@@ -0,0 +1,170 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2011 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using HeuristicLab.Core;
+using HeuristicLab.Common;
+using HeuristicLab.Data;
+using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HeuristicLab.Parameters;
+using HeuristicLab.Encodings.PermutationEncoding;
+using System.ComponentModel;
+
+namespace HeuristicLab.Encodings.SchedulingEncoding {
+  [Item("Schedule Class", "Represents the general solution for scheduling problems.")]
+  [StorableClass]
+  public class Schedule : NamedItem{
+    [StorableConstructor]
+    protected Schedule(bool deserializing) : base(deserializing) { }
+    protected Schedule(Schedule original, Cloner cloner)
+      : base(original, cloner) {
+        this.Resources = cloner.Clone (original.Resources);
+        this.Quality = cloner.Clone(original.Quality);
+        this.lastScheduledTaskOfJob = new Dictionary<int, ScheduledTask>(original.lastScheduledTaskOfJob);
+    }
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new Schedule(this, cloner);
+    }
+
+    [Storable]
+    private ItemList<Resource> resources;
+    public ItemList<Resource> Resources {
+      get { return resources; }
+      set {
+        if (resources != null) DeregisterResourcesEvents();
+        resources = value;
+        if (resources != null) RegisterResourcesEvents();
+        OnResourcesChanged();
+      }
+    }
+
+    [Storable]
+    private DoubleValue quality;
+    public DoubleValue Quality {
+      get { return quality; }
+      set {
+        if (quality != value) {
+          if (quality != null) DeregisterQualityEvents();
+          quality = value;
+          if (quality != null) RegisterQualityEvents();
+          OnQualityChanged();
+        }
+      }
+    }
+
+
+    private Dictionary<int, ScheduledTask> lastScheduledTaskOfJob;
+
+
+    public double Makespan {
+      get {
+        double quality = 0;
+        foreach (Resource r in Resources) {
+          if (r.TotalDuration.Value > quality) {
+            quality = r.TotalDuration.Value;
+          }
+        }
+        return quality;
+      }
+    }
+
+    public Schedule(IntValue nrOfResources) {
+      Resources = new ItemList<Resource>();
+      Quality = new DoubleValue();
+      for (int i = 0; i < nrOfResources.Value; i++) {
+        Resources.Add(new Resource(new IntValue (i)));
+      }
+      lastScheduledTaskOfJob = new Dictionary<int, ScheduledTask>();
+    }
+
+    #region Events
+    public event EventHandler QualityChanged;
+    private void OnQualityChanged() {
+      var changed = QualityChanged;
+      if (changed != null)
+        changed(this, EventArgs.Empty);
+    }
+    private void RegisterQualityEvents() {
+      Quality.ValueChanged += new EventHandler(Quality_ValueChanged);
+    }
+    private void DeregisterQualityEvents() {
+      Quality.ValueChanged -= new EventHandler(Quality_ValueChanged);
+    }
+    private void Quality_ValueChanged(object sender, EventArgs e) {
+      OnQualityChanged();
+    }
+
+    public event EventHandler ResourcesChanged;
+    private void OnResourcesChanged() {
+      var changed = ResourcesChanged;
+      if (changed != null)
+        changed(this, EventArgs.Empty);
+    }
+    private void RegisterResourcesEvents() {
+      Resources.PropertyChanged += new System.ComponentModel.PropertyChangedEventHandler(Resources_PropertyChanged);
+    }
+    private void DeregisterResourcesEvents() {
+      Resources.PropertyChanged -= new System.ComponentModel.PropertyChangedEventHandler(Resources_PropertyChanged);
+    }
+    private void Resources_PropertyChanged(object sender, EventArgs e) {
+      OnResourcesChanged();
+    }
+    #endregion
+
+    public void ScheduleTask(int resNr, double startTime, double duration, int jobNr) {
+      ScheduledTask task = new ScheduledTask(resNr, startTime, duration, jobNr);
+      Resource affectedResource = resources[task.ResourceNr.Value];
+      int i = 0;
+      while (i < affectedResource.Tasks.Count && affectedResource.Tasks[i].StartTime.Value < task.StartTime.Value)
+        i++;
+
+      if (i >= affectedResource.Tasks.Count)
+        affectedResource.Tasks.Add(task);
+      else
+        affectedResource.Tasks.Insert(i, task);
+
+      if (!lastScheduledTaskOfJob.ContainsKey(jobNr))
+        lastScheduledTaskOfJob.Add(jobNr, task);
+      else
+        lastScheduledTaskOfJob[jobNr] = task;
+    }
+
+    public ScheduledTask GetLastScheduledTaskForJobNr(int jobNr) {
+      if (lastScheduledTaskOfJob.ContainsKey(jobNr))
+        return lastScheduledTaskOfJob[jobNr];
+      else 
+        return null;
+    }
+
+    public override string ToString() {
+      StringBuilder sb = new StringBuilder();
+      sb.Append("[ ");
+      foreach (Resource r in Resources) {
+        sb.Append(r.ToString () + " \n");
+      }
+      sb.Append("]");
+      return sb.ToString();
+    }
+  }
+}
Index: /branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/ScheduleEncoding/ScheduledTask.cs
===================================================================
--- /branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/ScheduleEncoding/ScheduledTask.cs	(revision 6294)
+++ /branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/ScheduleEncoding/ScheduledTask.cs	(revision 6294)
@@ -0,0 +1,74 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2011 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using HeuristicLab.Data;
+using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HeuristicLab.Core;
+using HeuristicLab.Common;
+
+namespace HeuristicLab.Encodings.SchedulingEncoding {
+  [Item("Scheduled Task Class", "Represents a task that has been scheduled already.")]
+  [StorableClass]
+  public class ScheduledTask : Item {
+    [StorableConstructor]
+    protected ScheduledTask(bool deserializing) : base(deserializing) { }
+    protected ScheduledTask(ScheduledTask original, Cloner cloner)
+      : base(original, cloner) {
+      this.ResourceNr = cloner.Clone(original.ResourceNr);
+      this.Duration = cloner.Clone(original.Duration);
+      this.StartTime = cloner.Clone(original.StartTime);
+      this.JobNr = cloner.Clone (original.JobNr);
+    }
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new ScheduledTask(this, cloner);
+    }
+
+
+    public IntValue ResourceNr { get; set; }
+    public DoubleValue Duration { get; set; }
+    public DoubleValue StartTime { get; set; }
+    public DoubleValue EndTime {
+      get {
+        return new DoubleValue(Duration.Value + StartTime.Value);
+      }
+    }
+    public IntValue JobNr { get; set; }
+
+
+    public ScheduledTask(int resNr, double startTime, double duration, int jobNr)
+      : base() {
+      Duration = new DoubleValue (duration);
+      ResourceNr = new IntValue (resNr);
+      StartTime = new DoubleValue (startTime);
+      JobNr = new IntValue (jobNr);
+    }
+
+    public override string ToString() {
+      StringBuilder sb = new StringBuilder();
+      sb.Append("[" + JobNr + "," + ResourceNr + "]");
+      return sb.ToString();
+    }
+  }
+}
Index: /branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/SchedulingCreator.cs
===================================================================
--- /branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/SchedulingCreator.cs	(revision 6294)
+++ /branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/SchedulingCreator.cs	(revision 6294)
@@ -0,0 +1,58 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2011 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HeuristicLab.Common;
+using HeuristicLab.Core;
+using HeuristicLab.Parameters;
+using HeuristicLab.Operators;
+using HeuristicLab.Encodings.SchedulingEncoding.Interfaces;
+
+namespace HeuristicLab.Encodings.SchedulingEncoding {
+  [Item("Scheduling Problem Encoding Creator", "Represents the generalized form of creators for Scheduling Problems.")]
+  [StorableClass]
+  public abstract class SchedulingCreator<T> : SingleSuccessorOperator, ISchedulingCreator where T : Item, ISchedulingEncoding {
+    [StorableConstructor]
+    protected SchedulingCreator(bool deserializing) : base(deserializing) { }
+    protected SchedulingCreator(SchedulingCreator<T> original, Cloner cloner)
+      : base(original, cloner) {
+    }
+    
+    public ILookupParameter<T> SchedulingSolutionParameter {
+      get { return (ILookupParameter<T>)Parameters["SchedulingSolution"]; }
+    }
+
+    public SchedulingCreator() : base (){
+      Parameters.Add(new LookupParameter<T>("SchedulingSolution", "The new scheduling solution."));
+    }
+
+    protected abstract T CreateSolution();
+
+    public override IOperation Apply() {
+      SchedulingSolutionParameter.ActualValue = CreateSolution();
+      return base.Apply();
+    } 
+  }
+}
Index: /branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/SchedulingCrossover.cs
===================================================================
--- /branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/SchedulingCrossover.cs	(revision 6294)
+++ /branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/SchedulingCrossover.cs	(revision 6294)
@@ -0,0 +1,62 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2011 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.Common;
+using HeuristicLab.Core;
+using HeuristicLab.Parameters;
+using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HeuristicLab.Encodings.SchedulingEncoding.Interfaces;
+using HeuristicLab.Optimization;
+using HeuristicLab.Operators;
+
+namespace HeuristicLab.Encodings.SchedulingEncoding {
+  [Item("Scheduling Crossover", "A scheduling crossover operation.")]
+  [StorableClass]
+  public abstract class SchedulingCrossover<T> : SingleSuccessorOperator, ISchedulingCrossover, IStochasticOperator where T : Item, ISchedulingEncoding {
+    #region ISchedulingCrossover Members
+    public ILookupParameter<ItemArray<T>> ParentsParameter {
+      get { return (ScopeTreeLookupParameter<T>)Parameters["Parents"]; }
+    }
+
+    public ILookupParameter<T> ChildParameter {
+      get { return (ILookupParameter<T>)Parameters["Child"]; }
+    }
+    #endregion
+
+    public ILookupParameter<IRandom> RandomParameter {
+      get { return (LookupParameter<IRandom>)Parameters["Random"]; }
+    }
+
+    [StorableConstructor]
+    protected SchedulingCrossover(bool deserializing) : base(deserializing) { }
+    protected SchedulingCrossover(SchedulingCrossover<T> original, Cloner cloner)
+      : base(original, cloner) {
+    }
+    public SchedulingCrossover()
+      : base() {
+        Parameters.Add(new LookupParameter<IRandom>("Random", "The pseudo random number generator which should be used for stochastic manipulation operators."));
+      Parameters.Add(new ScopeTreeLookupParameter<T>("Parents", "The parent solution which should be crossed."));
+      ParentsParameter.ActualName = "SchedulingSolution";
+      Parameters.Add(new LookupParameter<T>("Child", "The child solution resulting from the crossover."));
+      ChildParameter.ActualName = "SchedulingSolution";
+    }
+  }
+}
Index: /branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/SchedulingDecoder.cs
===================================================================
--- /branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/SchedulingDecoder.cs	(revision 6294)
+++ /branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/SchedulingDecoder.cs	(revision 6294)
@@ -0,0 +1,64 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2011 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using HeuristicLab.Core;
+using HeuristicLab.Parameters;
+using HeuristicLab.Common;
+using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HeuristicLab.Encodings.SchedulingEncoding.Interfaces;
+using HeuristicLab.Operators;
+
+namespace HeuristicLab.Encodings.SchedulingEncoding {
+  [Item("Scheduling Decoder", "A scheduling decoder operator.")]
+  [StorableClass]
+  public abstract class SchedulingDecoder<T> : SingleSuccessorOperator, ISchedulingDecoder where T : Item, ISchedulingEncoding {
+    [StorableConstructor]
+    protected SchedulingDecoder(bool deserializing) : base(deserializing) { }
+    protected SchedulingDecoder(SchedulingDecoder<T> original, Cloner cloner)
+      : base(original, cloner) {
+    }
+
+    public ILookupParameter<T> SchedulingSolutionParameter {
+      get { return (ILookupParameter<T>)Parameters["SchedulingSolution"]; }
+    }
+    public ILookupParameter<Schedule> DecodedSchedulingSolutionParameter {
+      get { return (ILookupParameter<Schedule>)Parameters["DecodedSchedulingSolution"]; }
+    }
+
+    public SchedulingDecoder()
+      : base() {
+      Parameters.Add(new LookupParameter<T>("SchedulingSolution", "The new scheduling solution represented as encoding."));
+      Parameters.Add(new LookupParameter<Schedule>("DecodedSchedulingSolution", "The decoded scheduling solution represented as generalized schedule."));
+    }
+
+    public abstract Schedule CreateScheduleFromEncoding(T solution);
+
+    public override IOperation Apply() {
+      Schedule result = CreateScheduleFromEncoding(SchedulingSolutionParameter.ActualValue);
+      DecodedSchedulingSolutionParameter.ActualValue = result;
+      return base.Apply();
+    } 
+  }
+}
Index: /branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/SchedulingEncodingTypes.cs
===================================================================
--- /branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/SchedulingEncodingTypes.cs	(revision 6294)
+++ /branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/SchedulingEncodingTypes.cs	(revision 6294)
@@ -0,0 +1,12 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace HeuristicLab.Encodings.SchedulingEncoding {
+  public enum SchedulingEncodingTypes {
+    JSMEncoding,
+    PRVEncoding,
+    PWREncoding
+  }
+}
Index: /branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/SchedulingManipulator.cs
===================================================================
--- /branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/SchedulingManipulator.cs	(revision 6294)
+++ /branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/SchedulingManipulator.cs	(revision 6294)
@@ -0,0 +1,58 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2011 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.Common;
+using HeuristicLab.Core;
+using HeuristicLab.Parameters;
+using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HeuristicLab.Encodings.SchedulingEncoding.Interfaces;
+using HeuristicLab.Optimization;
+using HeuristicLab.Operators;
+
+namespace HeuristicLab.Encodings.SchedulingEncoding.Encodings {
+  [Item("Scheduling Manipulator", "A JSSP manipulation operation.")]
+  [StorableClass]
+  public abstract class SchedulingManipulator<T> : SingleSuccessorOperator, ISchedulingManipulator, IStochasticOperator where T : Item, ISchedulingEncoding {
+    #region ISchedulingManipulator Members
+
+    public ILookupParameter<T> SchedulingSolutionParameter {
+      get { return (ILookupParameter<T>)Parameters["SchedulingSolution"]; }
+    }
+
+    #endregion
+
+    public ILookupParameter<IRandom> RandomParameter {
+      get { return (LookupParameter<IRandom>)Parameters["Random"]; }
+    }
+
+    [StorableConstructor]
+    protected SchedulingManipulator(bool deserializing) : base(deserializing) { }
+    protected SchedulingManipulator(SchedulingManipulator<T> original, Cloner cloner)
+      : base(original, cloner) {
+    }
+    public SchedulingManipulator()
+      : base() {
+        Parameters.Add(new LookupParameter<T>("SchedulingSolution", "The JSSP solution to be manipulated."));
+        Parameters.Add(new LookupParameter<IRandom>("Random", "The pseudo random number generator which should be used for stochastic manipulation operators."));
+    }
+
+  }
+}
Index: /branches/Scheduling/HeuristicLab.Problems.Scheduling.Views/3.3/HeuristicLab.Problems.Scheduling.Views-3.3.csproj
===================================================================
--- /branches/Scheduling/HeuristicLab.Problems.Scheduling.Views/3.3/HeuristicLab.Problems.Scheduling.Views-3.3.csproj	(revision 6293)
+++ /branches/Scheduling/HeuristicLab.Problems.Scheduling.Views/3.3/HeuristicLab.Problems.Scheduling.Views-3.3.csproj	(revision 6294)
@@ -74,16 +74,4 @@
       <DependentUpon>JobShopSchedulingProblemView.cs</DependentUpon>
     </Compile>
-    <Compile Include="JSMEncodingView.cs">
-      <SubType>UserControl</SubType>
-    </Compile>
-    <Compile Include="JSMEncodingView.Designer.cs">
-      <DependentUpon>JSMEncodingView.cs</DependentUpon>
-    </Compile>
-    <Compile Include="JSSPJobView.cs">
-      <SubType>UserControl</SubType>
-    </Compile>
-    <Compile Include="JSSPJobView.Designer.cs">
-      <DependentUpon>JSSPJobView.cs</DependentUpon>
-    </Compile>
     <Compile Include="Plugin.cs" />
     <Compile Include="Properties\AssemblyInfo.cs" />
@@ -139,4 +127,8 @@
       <Name>HeuristicLab.Encodings.PermutationEncoding-3.3</Name>
     </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Encodings.SchedulingEncoding\3.3\HeuristicLab.Encodings.SchedulingEncoding-3.3.csproj">
+      <Project>{17F3EF80-B2C3-4B8D-A4D5-BE9CE3BA2606}</Project>
+      <Name>HeuristicLab.Encodings.SchedulingEncoding-3.3</Name>
+    </ProjectReference>
     <ProjectReference Include="..\..\HeuristicLab.MainForm.WindowsForms\3.3\HeuristicLab.MainForm.WindowsForms-3.3.csproj">
       <Project>{AB687BBE-1BFE-476B-906D-44237135431D}</Project>
@@ -194,7 +186,4 @@
     <EmbeddedResource Include="JobShopSchedulingProblemView.resx">
       <DependentUpon>JobShopSchedulingProblemView.cs</DependentUpon>
-    </EmbeddedResource>
-    <EmbeddedResource Include="JSMEncodingView.resx">
-      <DependentUpon>JSMEncodingView.cs</DependentUpon>
     </EmbeddedResource>
     <EmbeddedResource Include="ScheduleView.resx">
Index: /branches/Scheduling/HeuristicLab.Problems.Scheduling.Views/3.3/JSMEncodingView.cs
===================================================================
--- /branches/Scheduling/HeuristicLab.Problems.Scheduling.Views/3.3/JSMEncodingView.cs	(revision 6293)
+++ /branches/Scheduling/HeuristicLab.Problems.Scheduling.Views/3.3/JSMEncodingView.cs	(revision 6294)
@@ -32,5 +32,5 @@
 using HeuristicLab.Core;
 using HeuristicLab.Encodings.PermutationEncoding;
-using HeuristicLab.Problems.Scheduling.Encodings.JobShopScheduling.JobSequenceMatrix;
+using HeuristicLab.Encodings.SchedulingEncoding.JobSequenceMatrix;
 
 namespace HeuristicLab.Problems.Scheduling.Views {
Index: /branches/Scheduling/HeuristicLab.Problems.Scheduling.Views/3.3/JobShopSchedulingProblemView.cs
===================================================================
--- /branches/Scheduling/HeuristicLab.Problems.Scheduling.Views/3.3/JobShopSchedulingProblemView.cs	(revision 6293)
+++ /branches/Scheduling/HeuristicLab.Problems.Scheduling.Views/3.3/JobShopSchedulingProblemView.cs	(revision 6294)
@@ -60,6 +60,7 @@
       int jobCount = 0;
       Random random = new Random(1);
-      foreach (JSSPJob j in content.Jobs) {
-        foreach (JSSPTask t in content.Jobs[jobCount].Tasks) {
+      foreach (Job j in content.JobData) {
+        double lastEndTime = 0;
+        foreach (Task t in content.JobData[jobCount].Tasks) {
           int categoryNr = t.JobNr.Value;
           string categoryName = "Job" + categoryNr;
@@ -67,7 +68,8 @@
           ganttChart.AddData(categoryName,
             categoryNr,
-            t.StartTime.Value,
-            t.EndTime.Value,
+            lastEndTime + 1,
+            lastEndTime + t.Duration.Value,
             "Job" + t.JobNr + " - " + "Task#" + t.TaskNr.Value.ToString());
+          lastEndTime += t.Duration.Value;
         }
         jobCount++;
Index: /branches/Scheduling/HeuristicLab.Problems.Scheduling.Views/3.3/Plugin.cs
===================================================================
--- /branches/Scheduling/HeuristicLab.Problems.Scheduling.Views/3.3/Plugin.cs	(revision 6293)
+++ /branches/Scheduling/HeuristicLab.Problems.Scheduling.Views/3.3/Plugin.cs	(revision 6294)
@@ -23,5 +23,5 @@
 
 namespace HeuristicLab.Problems.Scheduling.Views {
-  [Plugin("HeuristicLab.Problems.Scheduling.Views", "3.3.3.6260")]
+  [Plugin("HeuristicLab.Problems.Scheduling.Views", "3.3.3.6266")]
   [PluginFile("HeuristicLab.Problems.Scheduling.Views-3.3.dll", PluginFileType.Assembly)]
   public class HeuristicLabProblemsSchedulingViewsPlugin : PluginBase {
Index: /branches/Scheduling/HeuristicLab.Problems.Scheduling.Views/3.3/Properties/AssemblyInfo.cs
===================================================================
--- /branches/Scheduling/HeuristicLab.Problems.Scheduling.Views/3.3/Properties/AssemblyInfo.cs	(revision 6293)
+++ /branches/Scheduling/HeuristicLab.Problems.Scheduling.Views/3.3/Properties/AssemblyInfo.cs	(revision 6294)
@@ -53,3 +53,3 @@
 // by using the '*' as shown below:
 [assembly: AssemblyVersion("3.3.0.0")]
-[assembly: AssemblyFileVersion("3.3.0.6260")]
+[assembly: AssemblyFileVersion("3.3.0.6266")]
Index: /branches/Scheduling/HeuristicLab.Problems.Scheduling.Views/3.3/ScheduleView.cs
===================================================================
--- /branches/Scheduling/HeuristicLab.Problems.Scheduling.Views/3.3/ScheduleView.cs	(revision 6293)
+++ /branches/Scheduling/HeuristicLab.Problems.Scheduling.Views/3.3/ScheduleView.cs	(revision 6294)
@@ -31,4 +31,5 @@
 using HeuristicLab.MainForm;
 using HeuristicLab.Core;
+using HeuristicLab.Encodings.SchedulingEncoding;
 
 namespace HeuristicLab.Problems.Scheduling.Views {
@@ -77,10 +78,10 @@
       Random random = new Random (1);
       foreach (Resource r in content.Resources) {
-        foreach (JSSPTask t in content.Resources[resCount].Tasks) {
-          int categoryNr = 0;      
-          string toolTip = "Task#" + t.TaskNr;
+        foreach (ScheduledTask t in content.Resources[resCount].Tasks) {
+          int categoryNr = 0;
+          string toolTip = "Task#";// +t.TaskNr;
           string categoryName = "ScheduleTasks";
-          if (t is JSSPTask) {
-            categoryNr = ((JSSPTask)t).JobNr.Value;
+          if (t is ScheduledTask) {
+            categoryNr = ((ScheduledTask)t).JobNr.Value;
             categoryName = "Job" + categoryNr;
             toolTip = categoryName + " - " + toolTip;
Index: /branches/Scheduling/HeuristicLab/3.3/Files.txt
===================================================================
--- /branches/Scheduling/HeuristicLab/3.3/Files.txt	(revision 6293)
+++ /branches/Scheduling/HeuristicLab/3.3/Files.txt	(revision 6294)
@@ -32,4 +32,5 @@
 HeuristicLab.Encodings.IntegerVectorEncoding\3.3:HeuristicLab.Encodings.IntegerVectorEncoding-3.3.dll
 HeuristicLab.Encodings.PermutationEncoding\3.3:HeuristicLab.Encodings.PermutationEncoding-3.3.dll
+HeuristicLab.Encodings.SchedulingEncoding\3.3:HeuristicLab.Encodings.SchedulingEncoding-3.3.dll
 HeuristicLab.Encodings.PermutationEncoding.Views\3.3:HeuristicLab.Encodings.PermutationEncoding.Views-3.3.dll
 HeuristicLab.Encodings.RealVectorEncoding\3.3:HeuristicLab.Encodings.RealVectorEncoding-3.3.dll
Index: /branches/Scheduling/HeuristicLab/3.3/Tests/HeuristicLab-3.3.Tests.csproj
===================================================================
--- /branches/Scheduling/HeuristicLab/3.3/Tests/HeuristicLab-3.3.Tests.csproj	(revision 6293)
+++ /branches/Scheduling/HeuristicLab/3.3/Tests/HeuristicLab-3.3.Tests.csproj	(revision 6294)
@@ -500,4 +500,12 @@
       <Name>HeuristicLab.Problems.QuadraticAssignment-3.3</Name>
     </ProjectReference>
+    <ProjectReference Include="..\..\..\HeuristicLab.Problems.Scheduling.Views\3.3\HeuristicLab.Problems.Scheduling.Views-3.3.csproj">
+      <Project>{78763A4E-E163-48C2-98EB-709760D06F25}</Project>
+      <Name>HeuristicLab.Problems.Scheduling.Views-3.3</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\..\HeuristicLab.Problems.Scheduling\3.3\HeuristicLab.Problems.Scheduling-3.3.csproj">
+      <Project>{2BF1D639-1A74-44ED-AAAD-41ECD395AD93}</Project>
+      <Name>HeuristicLab.Problems.Scheduling-3.3</Name>
+    </ProjectReference>
     <ProjectReference Include="..\..\..\HeuristicLab.Problems.TestFunctions.Views\3.3\HeuristicLab.Problems.TestFunctions.Views-3.3.csproj">
       <Project>{6AE0E1F5-D3FF-43A3-90E1-2435E7493FB5}</Project>
