Index: /trunk/sources/HeuristicLab 3.3.sln
===================================================================
--- /trunk/sources/HeuristicLab 3.3.sln	(revision 8881)
+++ /trunk/sources/HeuristicLab 3.3.sln	(revision 8882)
@@ -88,6 +88,8 @@
 		{B7A64A60-B538-479F-9C47-A3180C458F6C} = {B7A64A60-B538-479F-9C47-A3180C458F6C}
 		{0C378762-D5DB-488A-8931-2BA42B1B7CBF} = {0C378762-D5DB-488A-8931-2BA42B1B7CBF}
+		{07486E68-1517-4B9D-A58D-A38E99AE71AB} = {07486E68-1517-4B9D-A58D-A38E99AE71AB}
 		{4AE3FC69-C575-42D2-BC46-0FAD5850EFC5} = {4AE3FC69-C575-42D2-BC46-0FAD5850EFC5}
 		{56F9106A-079F-4C61-92F6-86A84C2D84B7} = {56F9106A-079F-4C61-92F6-86A84C2D84B7}
+		{9D792B6D-836B-46DC-9D69-50B4B1E7B87F} = {9D792B6D-836B-46DC-9D69-50B4B1E7B87F}
 		{399EBB6E-37A1-4AE4-B8CD-0D461FF286A3} = {399EBB6E-37A1-4AE4-B8CD-0D461FF286A3}
 		{3C906172-E044-4DF0-B4FD-AA21192D5D3E} = {3C906172-E044-4DF0-B4FD-AA21192D5D3E}
@@ -129,4 +131,5 @@
 		{66D249C3-A01D-42A8-82A2-919BC8EC3D83} = {66D249C3-A01D-42A8-82A2-919BC8EC3D83}
 		{E4CFB0C3-0589-4893-B38E-8BEDF885C765} = {E4CFB0C3-0589-4893-B38E-8BEDF885C765}
+		{E6CB1FC5-78EC-4EB8-BF12-35303C36F962} = {E6CB1FC5-78EC-4EB8-BF12-35303C36F962}
 		{79271BC8-4446-40E2-BB89-9BE4E17174FE} = {79271BC8-4446-40E2-BB89-9BE4E17174FE}
 		{7A2531CE-3F7C-4F13-BCCA-ED6DC27A7086} = {7A2531CE-3F7C-4F13-BCCA-ED6DC27A7086}
@@ -370,4 +373,6 @@
 EndProject
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.Problems.DataAnalysis.Symbolic.TimeSeriesPrognosis.Views-3.4", "HeuristicLab.Problems.DataAnalysis.Symbolic.TimeSeriesPrognosis.Views\3.4\HeuristicLab.Problems.DataAnalysis.Symbolic.TimeSeriesPrognosis.Views-3.4.csproj", "{E6CB1FC5-78EC-4EB8-BF12-35303C36F962}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.Problems.Instances.Scheduling-3.3", "HeuristicLab.Problems.Instances.Scheduling\3.3\HeuristicLab.Problems.Instances.Scheduling-3.3.csproj", "{9D792B6D-836B-46DC-9D69-50B4B1E7B87F}"
 EndProject
 Global
@@ -1809,4 +1814,16 @@
 		{E6CB1FC5-78EC-4EB8-BF12-35303C36F962}.Release|x86.ActiveCfg = Release|x86
 		{E6CB1FC5-78EC-4EB8-BF12-35303C36F962}.Release|x86.Build.0 = Release|x86
+		{9D792B6D-836B-46DC-9D69-50B4B1E7B87F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{9D792B6D-836B-46DC-9D69-50B4B1E7B87F}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{9D792B6D-836B-46DC-9D69-50B4B1E7B87F}.Debug|x64.ActiveCfg = Debug|x64
+		{9D792B6D-836B-46DC-9D69-50B4B1E7B87F}.Debug|x64.Build.0 = Debug|x64
+		{9D792B6D-836B-46DC-9D69-50B4B1E7B87F}.Debug|x86.ActiveCfg = Debug|x86
+		{9D792B6D-836B-46DC-9D69-50B4B1E7B87F}.Debug|x86.Build.0 = Debug|x86
+		{9D792B6D-836B-46DC-9D69-50B4B1E7B87F}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{9D792B6D-836B-46DC-9D69-50B4B1E7B87F}.Release|Any CPU.Build.0 = Release|Any CPU
+		{9D792B6D-836B-46DC-9D69-50B4B1E7B87F}.Release|x64.ActiveCfg = Release|x64
+		{9D792B6D-836B-46DC-9D69-50B4B1E7B87F}.Release|x64.Build.0 = Release|x64
+		{9D792B6D-836B-46DC-9D69-50B4B1E7B87F}.Release|x86.ActiveCfg = Release|x86
+		{9D792B6D-836B-46DC-9D69-50B4B1E7B87F}.Release|x86.Build.0 = Release|x86
 	EndGlobalSection
 	GlobalSection(SolutionProperties) = preSolution
Index: /trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/PriorityRulesVector/Manipulators/PRVUniformOnePositionManipulator.cs
===================================================================
--- /trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/PriorityRulesVector/Manipulators/PRVUniformOnePositionManipulator.cs	(revision 8881)
+++ /trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/PriorityRulesVector/Manipulators/PRVUniformOnePositionManipulator.cs	(revision 8882)
@@ -43,5 +43,5 @@
 
     public static void Apply(IRandom random, PRVEncoding individual) {
-      UniformOnePositionManipulator.Apply(random, individual.PriorityRulesVector, new IntMatrix(new int[,] { { 0, 2 } }));
+      UniformOnePositionManipulator.Apply(random, individual.PriorityRulesVector, new IntMatrix(new int[,] { { 0, individual.NrOfRules.Value } }));
     }
 
Index: /trunk/sources/HeuristicLab.Problems.Instances.Scheduling/3.3/HeuristicLab.Problems.Instances.Scheduling-3.3.csproj
===================================================================
--- /trunk/sources/HeuristicLab.Problems.Instances.Scheduling/3.3/HeuristicLab.Problems.Instances.Scheduling-3.3.csproj	(revision 8882)
+++ /trunk/sources/HeuristicLab.Problems.Instances.Scheduling/3.3/HeuristicLab.Problems.Instances.Scheduling-3.3.csproj	(revision 8882)
@@ -0,0 +1,162 @@
+﻿<?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>{9D792B6D-836B-46DC-9D69-50B4B1E7B87F}</ProjectGuid>
+    <OutputType>Library</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>HeuristicLab.Problems.Instances.Scheduling</RootNamespace>
+    <AssemblyName>HeuristicLab.Problems.Instances.Scheduling-3.3</AssemblyName>
+    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
+    <FileAlignment>512</FileAlignment>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>..\..\bin\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>..\..\bin\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup>
+    <SignAssembly>true</SignAssembly>
+  </PropertyGroup>
+  <PropertyGroup>
+    <AssemblyOriginatorKeyFile>HeuristicLab.snk</AssemblyOriginatorKeyFile>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
+    <DebugSymbols>true</DebugSymbols>
+    <OutputPath>..\..\bin\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <DebugType>full</DebugType>
+    <PlatformTarget>x86</PlatformTarget>
+    <CodeAnalysisLogFile>bin\Debug\Plugin.dll.CodeAnalysisLog.xml</CodeAnalysisLogFile>
+    <CodeAnalysisUseTypeNameInSuppression>true</CodeAnalysisUseTypeNameInSuppression>
+    <CodeAnalysisModuleSuppressionsFile>GlobalSuppressions.cs</CodeAnalysisModuleSuppressionsFile>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRuleSetDirectories>;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\\Rule Sets</CodeAnalysisRuleSetDirectories>
+    <CodeAnalysisIgnoreBuiltInRuleSets>false</CodeAnalysisIgnoreBuiltInRuleSets>
+    <CodeAnalysisRuleDirectories>;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\FxCop\\Rules</CodeAnalysisRuleDirectories>
+    <CodeAnalysisIgnoreBuiltInRules>false</CodeAnalysisIgnoreBuiltInRules>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">
+    <OutputPath>..\..\bin\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <Optimize>true</Optimize>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>x86</PlatformTarget>
+    <CodeAnalysisLogFile>bin\Release\Plugin.dll.CodeAnalysisLog.xml</CodeAnalysisLogFile>
+    <CodeAnalysisUseTypeNameInSuppression>true</CodeAnalysisUseTypeNameInSuppression>
+    <CodeAnalysisModuleSuppressionsFile>GlobalSuppressions.cs</CodeAnalysisModuleSuppressionsFile>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRuleSetDirectories>;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\\Rule Sets</CodeAnalysisRuleSetDirectories>
+    <CodeAnalysisRuleDirectories>;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\FxCop\\Rules</CodeAnalysisRuleDirectories>
+    <CodeAnalysisIgnoreBuiltInRules>true</CodeAnalysisIgnoreBuiltInRules>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'">
+    <DebugSymbols>true</DebugSymbols>
+    <OutputPath>..\..\bin\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <DebugType>full</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <CodeAnalysisLogFile>bin\Debug\Plugin.dll.CodeAnalysisLog.xml</CodeAnalysisLogFile>
+    <CodeAnalysisUseTypeNameInSuppression>true</CodeAnalysisUseTypeNameInSuppression>
+    <CodeAnalysisModuleSuppressionsFile>GlobalSuppressions.cs</CodeAnalysisModuleSuppressionsFile>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRuleSetDirectories>;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\\Rule Sets</CodeAnalysisRuleSetDirectories>
+    <CodeAnalysisIgnoreBuiltInRuleSets>false</CodeAnalysisIgnoreBuiltInRuleSets>
+    <CodeAnalysisRuleDirectories>;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\FxCop\\Rules</CodeAnalysisRuleDirectories>
+    <CodeAnalysisIgnoreBuiltInRules>false</CodeAnalysisIgnoreBuiltInRules>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'">
+    <OutputPath>..\..\bin\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <Optimize>true</Optimize>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <CodeAnalysisLogFile>bin\Release\Plugin.dll.CodeAnalysisLog.xml</CodeAnalysisLogFile>
+    <CodeAnalysisUseTypeNameInSuppression>true</CodeAnalysisUseTypeNameInSuppression>
+    <CodeAnalysisModuleSuppressionsFile>GlobalSuppressions.cs</CodeAnalysisModuleSuppressionsFile>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRuleSetDirectories>;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\\Rule Sets</CodeAnalysisRuleSetDirectories>
+    <CodeAnalysisIgnoreBuiltInRuleSets>true</CodeAnalysisIgnoreBuiltInRuleSets>
+    <CodeAnalysisRuleDirectories>;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\FxCop\\Rules</CodeAnalysisRuleDirectories>
+    <CodeAnalysisIgnoreBuiltInRules>true</CodeAnalysisIgnoreBuiltInRules>
+    <CodeAnalysisFailOnMissingRules>false</CodeAnalysisFailOnMissingRules>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="HeuristicLab.PluginInfrastructure-3.3">
+      <HintPath>..\bin\HeuristicLab.PluginInfrastructure-3.3.dll</HintPath>
+      <Private>False</Private>
+    </Reference>
+    <Reference Include="ICSharpCode.SharpZipLib">
+      <HintPath>..\bin\ICSharpCode.SharpZipLib.dll</HintPath>
+      <Private>False</Private>
+    </Reference>
+    <Reference Include="System" />
+    <Reference Include="System.Core" />
+    <Reference Include="System.Data" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="JSSPORLIBDataDescriptor.cs" />
+    <Compile Include="JSSPORLIBInstanceProvider.cs" />
+    <Compile Include="JSSPORLIBParser.cs" />
+    <EmbeddedResource Include="Data\JSSPORLIB.zip" />
+    <None Include="Plugin.cs.frame" />
+    <Compile Include="Plugin.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+    <None Include="Properties\AssemblyInfo.cs.frame" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="HeuristicLab.snk" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\..\HeuristicLab.Common\3.3\HeuristicLab.Common-3.3.csproj">
+      <Project>{A9AD58B9-3EF9-4CC1-97E5-8D909039FF5C}</Project>
+      <Name>HeuristicLab.Common-3.3</Name>
+      <Private>False</Private>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Problems.Instances\3.3\HeuristicLab.Problems.Instances-3.3.csproj">
+      <Project>{3540E29E-4793-49E7-8EE2-FEA7F61C3994}</Project>
+      <Name>HeuristicLab.Problems.Instances-3.3</Name>
+      <Private>False</Private>
+    </ProjectReference>
+  </ItemGroup>
+  <ItemGroup />
+  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+  <PropertyGroup>
+    <PreBuildEvent>set Path=%25Path%25;$(ProjectDir);$(SolutionDir)
+set ProjectDir=$(ProjectDir)
+set SolutionDir=$(SolutionDir)
+set Outdir=$(Outdir)
+
+call PreBuildEvent.cmd</PreBuildEvent>
+  </PropertyGroup>
+  <PropertyGroup>
+    <PostBuildEvent>
+    </PostBuildEvent>
+  </PropertyGroup>
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+</Project>
Index: /trunk/sources/HeuristicLab.Problems.Instances.Scheduling/3.3/JSSPORLIBDataDescriptor.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.Instances.Scheduling/3.3/JSSPORLIBDataDescriptor.cs	(revision 8882)
+++ /trunk/sources/HeuristicLab.Problems.Instances.Scheduling/3.3/JSSPORLIBDataDescriptor.cs	(revision 8882)
@@ -0,0 +1,37 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2012 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+namespace HeuristicLab.Problems.Instances.Scheduling {
+  internal class JSSPORLIBDataDescriptor : IDataDescriptor {
+    public string Name { get; internal set; }
+    public string Description { get; internal set; }
+
+    internal string InstanceIdentifier { get; set; }
+    internal string SolutionIdentifier { get; set; }
+
+    internal JSSPORLIBDataDescriptor(string name, string description, string instanceIdentifier, string solutionIdentifier) {
+      this.Name = name;
+      this.Description = description;
+      this.InstanceIdentifier = instanceIdentifier;
+      this.SolutionIdentifier = solutionIdentifier;
+    }
+  }
+}
Index: /trunk/sources/HeuristicLab.Problems.Instances.Scheduling/3.3/JSSPORLIBInstanceProvider.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.Instances.Scheduling/3.3/JSSPORLIBInstanceProvider.cs	(revision 8882)
+++ /trunk/sources/HeuristicLab.Problems.Instances.Scheduling/3.3/JSSPORLIBInstanceProvider.cs	(revision 8882)
@@ -0,0 +1,134 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2012 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Reflection;
+using System.Text.RegularExpressions;
+using ICSharpCode.SharpZipLib.Zip;
+
+namespace HeuristicLab.Problems.Instances.Scheduling {
+  public class JSSPORLIBInstanceProvider : ProblemInstanceProvider<JSSPData> {
+
+    public override string Name {
+      get { return "ORLIB JSSP"; }
+    }
+
+    public override string Description {
+      get { return "Job shop scheduling problems from the Operations Research Library."; }
+    }
+
+    public override Uri WebLink {
+      get { return new Uri("http://people.brunel.ac.uk/~mastjjb/jeb/orlib/jobshopinfo.html"); }
+    }
+
+    public override string ReferencePublication {
+      get { return String.Empty; }
+    }
+
+    public override IEnumerable<IDataDescriptor> GetDataDescriptors() {
+      var instanceArchiveName = GetResourceName("JSSPORLIB.zip");
+      if (String.IsNullOrEmpty(instanceArchiveName)) yield break;
+
+      using (var instanceStream = new ZipInputStream(GetType().Assembly.GetManifestResourceStream(instanceArchiveName))) {
+        foreach (var entry in GetZipContents(instanceStream).OrderBy(x => x)) {
+          yield return new JSSPORLIBDataDescriptor(Path.GetFileNameWithoutExtension(entry), GetDescription(), entry, null);
+        }
+      }
+    }
+
+    public override JSSPData LoadData(IDataDescriptor id) {
+      var descriptor = (JSSPORLIBDataDescriptor)id;
+      var instanceArchiveName = GetResourceName("JSSPORLIB.zip");
+      using (var instancesZipFile = new ZipFile(GetType().Assembly.GetManifestResourceStream(instanceArchiveName))) {
+        var entry = instancesZipFile.GetEntry(descriptor.InstanceIdentifier);
+
+        using (var stream = instancesZipFile.GetInputStream(entry)) {
+          var parser = new JSSPORLIBParser();
+          parser.Parse(stream);
+          var instance = Load(parser);
+          instance.Name = id.Name;
+          instance.Description = id.Description;
+
+          return instance;
+        }
+      }
+    }
+
+    public override bool CanImportData {
+      get { return true; }
+    }
+    public override JSSPData ImportData(string path) {
+      var parser = new JSSPORLIBParser();
+      parser.Parse(path);
+      var instance = Load(parser);
+      instance.Name = Path.GetFileName(path);
+      instance.Description = "Loaded from file \"" + path + "\" on " + DateTime.Now.ToString();
+      return instance;
+    }
+
+    private JSSPData Load(JSSPORLIBParser parser) {
+      var instance = new JSSPData {
+        Jobs = parser.Jobs,
+        Resources = parser.Resources,
+        ProcessingTimes = parser.ProcessingTimes,
+        Demands = parser.Demands,
+        DueDates = parser.DueDates
+      };
+      return instance;
+    }
+
+    public override bool CanExportData {
+      get { return true; }
+    }
+
+    public override void ExportData(JSSPData instance, string path) {
+      var parser = new JSSPORLIBParser {
+        Name = instance.Name,
+        Description = instance.Description,
+        Jobs = instance.Jobs,
+        Resources = instance.Resources,
+        ProcessingTimes = instance.ProcessingTimes,
+        Demands = instance.Demands,
+        DueDates = instance.DueDates
+      };
+      parser.Export(path);
+    }
+
+    private string GetDescription() {
+      return "Embedded instance of plugin version " + Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyFileVersionAttribute), true).Cast<AssemblyFileVersionAttribute>().First().Version + ".";
+    }
+
+    protected virtual string GetResourceName(string fileName) {
+      return Assembly.GetExecutingAssembly().GetManifestResourceNames()
+        .SingleOrDefault(x => Regex.Match(x, @".*\.Data\." + fileName).Success);
+    }
+
+    protected IEnumerable<string> GetZipContents(ZipInputStream zipFile) {
+      ZipEntry entry;
+      while ((entry = zipFile.GetNextEntry()) != null) {
+        yield return entry.Name;
+      }
+    }
+  }
+}
Index: /trunk/sources/HeuristicLab.Problems.Instances.Scheduling/3.3/JSSPORLIBParser.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.Instances.Scheduling/3.3/JSSPORLIBParser.cs	(revision 8882)
+++ /trunk/sources/HeuristicLab.Problems.Instances.Scheduling/3.3/JSSPORLIBParser.cs	(revision 8882)
@@ -0,0 +1,114 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2012 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Globalization;
+using System.IO;
+using System.Linq;
+
+namespace HeuristicLab.Problems.Instances.Scheduling {
+  public class JSSPORLIBParser {
+    public string Name { get; set; }
+    public string Description { get; set; }
+    public int Jobs { get; set; }
+    public int Resources { get; set; }
+    public double[,] ProcessingTimes { get; set; }
+    public int[,] Demands { get; set; }
+    public double[] DueDates { get; set; }
+
+    public JSSPORLIBParser() {
+      Reset();
+    }
+
+    public void Reset() {
+      Name = Description = String.Empty;
+      Jobs = Resources = 0;
+      ProcessingTimes = null;
+      Demands = null;
+    }
+
+    public void Parse(string file) {
+      using (Stream stream = new FileStream(file, FileMode.Open, FileAccess.Read)) {
+        Parse(stream);
+      }
+    }
+
+    public void Export(string file) {
+      using (Stream stream = new FileStream(file, FileMode.Open, FileAccess.Read)) {
+        Export(stream);
+      }
+    }
+
+    /// <summary>
+    /// Reads from the given stream data which is expected to be in the JSSP ORLIB format.
+    /// </summary>
+    /// <remarks>
+    /// The stream is not closed or disposed. The caller has to take care of that.
+    /// </remarks>
+    /// <param name="stream">The stream to read data from.</param>
+    /// <returns>True if the file was successfully read or false otherwise.</returns>
+    public void Parse(Stream stream) {
+      var reader = new StreamReader(stream);
+      Name = reader.ReadLine().Trim();
+      Description = reader.ReadLine().Trim();
+      var delim = new char[] { ' ', '\t' };
+
+      var info = reader.ReadLine().Split(delim, StringSplitOptions.RemoveEmptyEntries);
+      Jobs = int.Parse(info[0]);
+      Resources = int.Parse(info[1]);
+      ProcessingTimes = new double[Jobs, Resources];
+      Demands = new int[Jobs, Resources];
+
+      for (int k = 0; k < Jobs; k++) {
+        if (reader.EndOfStream) throw new InvalidDataException("Unexpected End of Stream.");
+        var valLine = reader.ReadLine();
+        while (String.IsNullOrWhiteSpace(valLine)) valLine = reader.ReadLine();
+        var vals = valLine.Split(delim, StringSplitOptions.RemoveEmptyEntries);
+        if (vals.Length > 2 * Resources) {
+          if (DueDates == null) DueDates = new double[Jobs];
+          DueDates[k] = double.Parse(vals.Last(), CultureInfo.InvariantCulture.NumberFormat);
+        }
+
+        for (int i = 0; i < Resources; i++) {
+          Demands[k, i] = int.Parse(vals[2 * i]);
+          ProcessingTimes[k, i] = double.Parse(vals[2 * i + 1], CultureInfo.InvariantCulture.NumberFormat);
+        }
+      }
+
+    }
+
+    public void Export(Stream stream) {
+      var writer = new StreamWriter(stream);
+      writer.WriteLine(Name);
+      writer.WriteLine(Description);
+      writer.WriteLine(Jobs.ToString(CultureInfo.InvariantCulture.NumberFormat) + " " + Resources.ToString(CultureInfo.InvariantCulture.NumberFormat));
+      for (int i = 0; i < Jobs; i++) {
+        for (int j = 0; j < Resources; j++) {
+          writer.Write(Demands[i, j] + " " + ProcessingTimes[i, j] + " ");
+        }
+        if (DueDates != null) writer.Write(DueDates[i].ToString(CultureInfo.InvariantCulture.NumberFormat));
+        writer.WriteLine();
+      }
+      writer.Flush();
+    }
+
+  }
+}
Index: /trunk/sources/HeuristicLab.Problems.Instances.Scheduling/3.3/Plugin.cs.frame
===================================================================
--- /trunk/sources/HeuristicLab.Problems.Instances.Scheduling/3.3/Plugin.cs.frame	(revision 8882)
+++ /trunk/sources/HeuristicLab.Problems.Instances.Scheduling/3.3/Plugin.cs.frame	(revision 8882)
@@ -0,0 +1,30 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2012 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using HeuristicLab.PluginInfrastructure;
+
+namespace HeuristicLab.Problems.Instances.Scheduling {
+  [Plugin("HeuristicLab.Problems.Instances.Scheduling", "3.3.7.$WCREV$")]
+  [PluginFile("HeuristicLab.Problems.Instances.Scheduling-3.3.dll", PluginFileType.Assembly)]
+  [PluginDependency("HeuristicLab.Problems.Instances", "3.3")]
+  public class HeuristicLabProblemsInstancesSchedulingPlugin : PluginBase {
+  }
+}
Index: /trunk/sources/HeuristicLab.Problems.Instances.Scheduling/3.3/Properties/AssemblyInfo.cs.frame
===================================================================
--- /trunk/sources/HeuristicLab.Problems.Instances.Scheduling/3.3/Properties/AssemblyInfo.cs.frame	(revision 8882)
+++ /trunk/sources/HeuristicLab.Problems.Instances.Scheduling/3.3/Properties/AssemblyInfo.cs.frame	(revision 8882)
@@ -0,0 +1,57 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2012 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("HeuristicLab.Problems.Instances.Scheduling")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("HEAL")]
+[assembly: AssemblyProduct("HeuristicLab")]
+[assembly: AssemblyCopyright("(c) 2002-2012 HEAL")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM components.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("7c14407e-6980-465b-ba3a-4a916d48989b")]
+
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version 
+//      Build Number
+//      Revision
+//
+// You can specify all the values or you can default the Build and Revision Numbers 
+// by using the '*' as shown below:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("3.3.0.0")]
+[assembly: AssemblyFileVersion("3.3.7.$WCREV$")]
Index: /trunk/sources/HeuristicLab.Problems.Instances/3.3/HeuristicLab.Problems.Instances-3.3.csproj
===================================================================
--- /trunk/sources/HeuristicLab.Problems.Instances/3.3/HeuristicLab.Problems.Instances-3.3.csproj	(revision 8881)
+++ /trunk/sources/HeuristicLab.Problems.Instances/3.3/HeuristicLab.Problems.Instances-3.3.csproj	(revision 8882)
@@ -115,4 +115,5 @@
     <Compile Include="IProblemInstanceExporter.cs" />
     <Compile Include="Types\ATSPData.cs" />
+    <Compile Include="Types\JSSPData.cs" />
     <Compile Include="Types\CTAPData.cs" />
     <Compile Include="IDataDescriptor.cs" />
@@ -152,5 +153,5 @@
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
   <PropertyGroup>
-   <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">set Path=%25Path%25;$(ProjectDir);$(SolutionDir)
+    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">set Path=%25Path%25;$(ProjectDir);$(SolutionDir)
 set ProjectDir=$(ProjectDir)
 set SolutionDir=$(SolutionDir)
@@ -158,5 +159,5 @@
 
 call PreBuildEvent.cmd</PreBuildEvent>
-<PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
 export ProjectDir=$(ProjectDir)
 export SolutionDir=$(SolutionDir)
Index: /trunk/sources/HeuristicLab.Problems.Instances/3.3/Types/JSSPData.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.Instances/3.3/Types/JSSPData.cs	(revision 8882)
+++ /trunk/sources/HeuristicLab.Problems.Instances/3.3/Types/JSSPData.cs	(revision 8882)
@@ -0,0 +1,68 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2012 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+
+namespace HeuristicLab.Problems.Instances {
+  /// <summary>
+  /// Describes instances of the Job Shop Scheduling Problem (JSSP).
+  /// </summary>
+  public class JSSPData {
+    /// <summary>
+    /// The name of the instance
+    /// </summary>
+    public string Name { get; set; }
+    /// <summary>
+    /// Optional! The description of the instance
+    /// </summary>
+    public string Description { get; set; }
+
+    /// <summary>
+    /// The number of jobs.
+    /// </summary>
+    public int Jobs { get; set; }
+    /// <summary>
+    /// The number of resources.
+    /// </summary>
+    public int Resources { get; set; }
+    /// <summary>
+    /// The first dimension lists the jobs, the second dimension the operations and the value denotes the processing time.
+    /// </summary>
+    public double[,] ProcessingTimes { get; set; }
+    /// <summary>
+    /// The first dimension lists the jobs, the second dimension the operations and the value denotes the resource that is demanded.
+    /// </summary>
+    public int[,] Demands { get; set; }
+    /// <summary>
+    /// Optional! Specifies the due dates for each job.
+    /// </summary>
+    public double[] DueDates { get; set; }
+
+    /// <summary>
+    /// Optional! The best-known schedule.
+    /// The first dimension lists the resources, the second dimension is the order and the value denotes the job
+    /// </summary>
+    public int[,] BestKnownSchedule { get; set; }
+    /// <summary>
+    /// Optional! The quality of the best-known schedule.
+    /// </summary>
+    public double? BestKnownQuality { get; set; }
+  }
+}
Index: /trunk/sources/HeuristicLab.Problems.QuadraticAssignment.Views/3.3/HeuristicLab.Problems.QuadraticAssignment.Views-3.3.csproj
===================================================================
--- /trunk/sources/HeuristicLab.Problems.QuadraticAssignment.Views/3.3/HeuristicLab.Problems.QuadraticAssignment.Views-3.3.csproj	(revision 8881)
+++ /trunk/sources/HeuristicLab.Problems.QuadraticAssignment.Views/3.3/HeuristicLab.Problems.QuadraticAssignment.Views-3.3.csproj	(revision 8882)
@@ -212,5 +212,5 @@
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
   <PropertyGroup>
-   <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">set Path=%25Path%25;$(ProjectDir);$(SolutionDir)
+    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">set Path=%25Path%25;$(ProjectDir);$(SolutionDir)
 set ProjectDir=$(ProjectDir)
 set SolutionDir=$(SolutionDir)
@@ -220,5 +220,5 @@
 SubWCRev "%25ProjectDir%25\" "%25ProjectDir%25\Plugin.cs.frame" "%25ProjectDir%25\Plugin.cs"
 </PreBuildEvent>
-<PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
 export ProjectDir=$(ProjectDir)
 export SolutionDir=$(SolutionDir)
Index: /trunk/sources/HeuristicLab.Problems.QuadraticAssignment.Views/3.3/QuadraticAssignmentProblemView.Designer.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.QuadraticAssignment.Views/3.3/QuadraticAssignmentProblemView.Designer.cs	(revision 8881)
+++ /trunk/sources/HeuristicLab.Problems.QuadraticAssignment.Views/3.3/QuadraticAssignmentProblemView.Designer.cs	(revision 8882)
@@ -120,5 +120,5 @@
       this.qapView.Location = new System.Drawing.Point(3, 3);
       this.qapView.Name = "qapView";
-      this.qapView.Size = new System.Drawing.Size(497, 245);
+      this.qapView.Size = new System.Drawing.Size(497, 274);
       this.qapView.TabIndex = 0;
       this.qapView.Weights = null;
@@ -126,5 +126,4 @@
       // QuadraticAssignmentProblemView
       // 
-      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
       this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Inherit;
       this.Name = "QuadraticAssignmentProblemView";
Index: /trunk/sources/HeuristicLab.Problems.QuadraticAssignment.Views/3.3/QuadraticAssignmentProblemView.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.QuadraticAssignment.Views/3.3/QuadraticAssignmentProblemView.cs	(revision 8881)
+++ /trunk/sources/HeuristicLab.Problems.QuadraticAssignment.Views/3.3/QuadraticAssignmentProblemView.cs	(revision 8882)
@@ -53,13 +53,13 @@
     }
 
-    private void DistanceMatrixParameter_ValueChanged(object sender, System.EventArgs e) {
+    private void DistanceMatrixParameter_ValueChanged(object sender, EventArgs e) {
       qapView.Distances = Content.Distances;
     }
 
-    private void WeightsParameter_ValueChanged(object sender, System.EventArgs e) {
+    private void WeightsParameter_ValueChanged(object sender, EventArgs e) {
       qapView.Weights = Content.Weights;
     }
 
-    private void BestKnownSolutionParameter_ValueChanged(object sender, System.EventArgs e) {
+    private void BestKnownSolutionParameter_ValueChanged(object sender, EventArgs e) {
       qapView.Assignment = Content.BestKnownSolution;
     }
@@ -77,8 +77,4 @@
       }
     }
-
-    protected override void SetEnabledStateOfControls() {
-      base.SetEnabledStateOfControls();
-    }
   }
 }
Index: /trunk/sources/HeuristicLab.Problems.Scheduling.Views/3.3/HeuristicLab.Problems.Scheduling.Views-3.3.csproj
===================================================================
--- /trunk/sources/HeuristicLab.Problems.Scheduling.Views/3.3/HeuristicLab.Problems.Scheduling.Views-3.3.csproj	(revision 8881)
+++ /trunk/sources/HeuristicLab.Problems.Scheduling.Views/3.3/HeuristicLab.Problems.Scheduling.Views-3.3.csproj	(revision 8882)
@@ -115,10 +115,4 @@
     <Compile Include="Plugin.cs" />
     <Compile Include="Properties\AssemblyInfo.cs" />
-    <Compile Include="SchedulingProblemImportDialog.cs">
-      <SubType>Form</SubType>
-    </Compile>
-    <Compile Include="SchedulingProblemImportDialog.Designer.cs">
-      <DependentUpon>SchedulingProblemImportDialog.cs</DependentUpon>
-    </Compile>
   </ItemGroup>
   <ItemGroup>
@@ -128,12 +122,4 @@
   </ItemGroup>
   <ItemGroup>
-    <EmbeddedResource Include="JobShopSchedulingProblemView.resx">
-      <DependentUpon>JobShopSchedulingProblemView.cs</DependentUpon>
-    </EmbeddedResource>
-    <EmbeddedResource Include="SchedulingProblemImportDialog.resx">
-      <DependentUpon>SchedulingProblemImportDialog.cs</DependentUpon>
-    </EmbeddedResource>
-  </ItemGroup>
-  <ItemGroup>
     <ProjectReference Include="..\..\HeuristicLab.Collections\3.3\HeuristicLab.Collections-3.3.csproj">
       <Project>{958B43BC-CC5C-4FA2-8628-2B3B01D890B6}</Project>
@@ -176,4 +162,9 @@
       <Private>False</Private>
     </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Optimization.Views\3.3\HeuristicLab.Optimization.Views-3.3.csproj">
+      <Project>{662B4B15-8F4D-4AE5-B3EB-D91C215F5AF2}</Project>
+      <Name>HeuristicLab.Optimization.Views-3.3</Name>
+      <Private>False</Private>
+    </ProjectReference>
     <ProjectReference Include="..\..\HeuristicLab.Optimization\3.3\HeuristicLab.Optimization-3.3.csproj">
       <Project>{14AB8D24-25BC-400C-A846-4627AA945192}</Project>
@@ -185,4 +176,8 @@
       <Name>HeuristicLab.PluginInfrastructure-3.3</Name>
       <Private>False</Private>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Problems.Instances\3.3\HeuristicLab.Problems.Instances-3.3.csproj">
+      <Project>{3540E29E-4793-49E7-8EE2-FEA7F61C3994}</Project>
+      <Name>HeuristicLab.Problems.Instances-3.3</Name>
     </ProjectReference>
     <ProjectReference Include="..\..\HeuristicLab.Problems.Scheduling\3.3\HeuristicLab.Problems.Scheduling-3.3.csproj">
Index: /trunk/sources/HeuristicLab.Problems.Scheduling.Views/3.3/JobShopSchedulingProblemView.Designer.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.Scheduling.Views/3.3/JobShopSchedulingProblemView.Designer.cs	(revision 8881)
+++ /trunk/sources/HeuristicLab.Problems.Scheduling.Views/3.3/JobShopSchedulingProblemView.Designer.cs	(revision 8882)
@@ -25,15 +25,40 @@
     /// </summary>
     private void InitializeComponent() {
-      this.importButton = new System.Windows.Forms.Button();
-      this.parameterCollectionView = new HeuristicLab.Core.Views.ParameterCollectionView();
-      this.tabControl1 = new System.Windows.Forms.TabControl();
-      this.tabPage1 = new System.Windows.Forms.TabPage();
-      this.tabPage2 = new System.Windows.Forms.TabPage();
-      this.ganttChart = new GanttChart();
+      this.problemTabControl = new System.Windows.Forms.TabControl();
+      this.problemTabPage = new System.Windows.Forms.TabPage();
+      this.visualizationTabPage = new System.Windows.Forms.TabPage();
+      this.ganttChart = new HeuristicLab.Encodings.ScheduleEncoding.Views.GanttChart();
+      ((System.ComponentModel.ISupportInitialize)(this.problemInstanceSplitContainer)).BeginInit();
+      this.problemInstanceSplitContainer.Panel1.SuspendLayout();
+      this.problemInstanceSplitContainer.Panel2.SuspendLayout();
+      this.problemInstanceSplitContainer.SuspendLayout();
       ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).BeginInit();
-      this.tabControl1.SuspendLayout();
-      this.tabPage1.SuspendLayout();
-      this.tabPage2.SuspendLayout();
+      this.problemTabControl.SuspendLayout();
+      this.problemTabPage.SuspendLayout();
+      this.visualizationTabPage.SuspendLayout();
       this.SuspendLayout();
+      // 
+      // problemInstanceSplitContainer
+      // 
+      this.problemInstanceSplitContainer.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)));
+      this.problemInstanceSplitContainer.Dock = System.Windows.Forms.DockStyle.Fill;
+      // 
+      // problemInstanceSplitContainer.Panel2
+      // 
+      this.problemInstanceSplitContainer.Panel2.Controls.Add(this.problemTabControl);
+      // 
+      // ProblemInstanceConsumerViewHost
+      // 
+      this.ProblemInstanceConsumerViewHost.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)));
+      this.ProblemInstanceConsumerViewHost.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.ProblemInstanceConsumerViewHost.Location = new System.Drawing.Point(0, 0);
+      this.ProblemInstanceConsumerViewHost.Size = new System.Drawing.Size(511, 26);
+      // 
+      // parameterCollectionView
+      // 
+      this.parameterCollectionView.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)));
+      this.parameterCollectionView.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.parameterCollectionView.Location = new System.Drawing.Point(3, 3);
+      this.parameterCollectionView.Size = new System.Drawing.Size(491, 271);
       // 
       // nameTextBox
@@ -41,79 +66,51 @@
       this.errorProvider.SetIconAlignment(this.nameTextBox, System.Windows.Forms.ErrorIconAlignment.MiddleLeft);
       this.errorProvider.SetIconPadding(this.nameTextBox, 2);
-      this.nameTextBox.Size = new System.Drawing.Size(650, 20);
+      this.nameTextBox.Size = new System.Drawing.Size(439, 20);
       // 
       // infoLabel
       // 
-      this.infoLabel.Location = new System.Drawing.Point(714, 3);
+      this.infoLabel.Location = new System.Drawing.Point(492, 3);
       // 
-      // importButton
+      // problemTabControl
       // 
-      this.importButton.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
-                  | System.Windows.Forms.AnchorStyles.Right)));
-      this.importButton.Location = new System.Drawing.Point(6, 26);
-      this.importButton.Name = "importButton";
-      this.importButton.Size = new System.Drawing.Size(724, 23);
-      this.importButton.TabIndex = 3;
-      this.importButton.Text = "Import";
-      this.importButton.UseVisualStyleBackColor = true;
-      this.importButton.Click += new System.EventHandler(this.importButton_Click);
+      this.problemTabControl.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 
+            | System.Windows.Forms.AnchorStyles.Left) 
+            | System.Windows.Forms.AnchorStyles.Right)));
+      this.problemTabControl.Controls.Add(this.problemTabPage);
+      this.problemTabControl.Controls.Add(this.visualizationTabPage);
+      this.problemTabControl.Location = new System.Drawing.Point(3, 27);
+      this.problemTabControl.Name = "problemTabControl";
+      this.problemTabControl.SelectedIndex = 0;
+      this.problemTabControl.Size = new System.Drawing.Size(505, 303);
+      this.problemTabControl.TabIndex = 5;
       // 
-      // parameterCollectionView
+      // problemTabPage
       // 
-      this.parameterCollectionView.AllowEditingOfHiddenParameters = true;
-      this.parameterCollectionView.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
-                  | System.Windows.Forms.AnchorStyles.Left)
-                  | System.Windows.Forms.AnchorStyles.Right)));
-      this.parameterCollectionView.Caption = "ParameterCollection View";
-      this.parameterCollectionView.Content = null;
-      this.parameterCollectionView.Location = new System.Drawing.Point(3, 0);
-      this.parameterCollectionView.Name = "parameterCollectionView";
-      this.parameterCollectionView.ReadOnly = false;
-      this.parameterCollectionView.Size = new System.Drawing.Size(713, 387);
-      this.parameterCollectionView.TabIndex = 4;
+      this.problemTabPage.Controls.Add(this.parameterCollectionView);
+      this.problemTabPage.Location = new System.Drawing.Point(4, 22);
+      this.problemTabPage.Name = "problemTabPage";
+      this.problemTabPage.Padding = new System.Windows.Forms.Padding(3);
+      this.problemTabPage.Size = new System.Drawing.Size(497, 277);
+      this.problemTabPage.TabIndex = 0;
+      this.problemTabPage.Text = "Problem";
+      this.problemTabPage.UseVisualStyleBackColor = true;
       // 
-      // tabControl1
+      // visualizationTabPage
       // 
-      this.tabControl1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
-                  | System.Windows.Forms.AnchorStyles.Left)
-                  | System.Windows.Forms.AnchorStyles.Right)));
-      this.tabControl1.Controls.Add(this.tabPage1);
-      this.tabControl1.Controls.Add(this.tabPage2);
-      this.tabControl1.Location = new System.Drawing.Point(6, 56);
-      this.tabControl1.Name = "tabControl1";
-      this.tabControl1.SelectedIndex = 0;
-      this.tabControl1.Size = new System.Drawing.Size(724, 413);
-      this.tabControl1.TabIndex = 5;
-      // 
-      // tabPage1
-      // 
-      this.tabPage1.Controls.Add(this.parameterCollectionView);
-      this.tabPage1.Location = new System.Drawing.Point(4, 22);
-      this.tabPage1.Name = "tabPage1";
-      this.tabPage1.Padding = new System.Windows.Forms.Padding(3);
-      this.tabPage1.Size = new System.Drawing.Size(716, 387);
-      this.tabPage1.TabIndex = 0;
-      this.tabPage1.Text = "Problem";
-      this.tabPage1.UseVisualStyleBackColor = true;
-      // 
-      // tabPage2
-      // 
-      this.tabPage2.Controls.Add(this.ganttChart);
-      this.tabPage2.Location = new System.Drawing.Point(4, 22);
-      this.tabPage2.Name = "tabPage2";
-      this.tabPage2.Padding = new System.Windows.Forms.Padding(3);
-      this.tabPage2.Size = new System.Drawing.Size(716, 387);
-      this.tabPage2.TabIndex = 1;
-      this.tabPage2.Text = "Visualization";
-      this.tabPage2.UseVisualStyleBackColor = true;
+      this.visualizationTabPage.Controls.Add(this.ganttChart);
+      this.visualizationTabPage.Location = new System.Drawing.Point(4, 22);
+      this.visualizationTabPage.Name = "visualizationTabPage";
+      this.visualizationTabPage.Padding = new System.Windows.Forms.Padding(3);
+      this.visualizationTabPage.Size = new System.Drawing.Size(497, 277);
+      this.visualizationTabPage.TabIndex = 1;
+      this.visualizationTabPage.Text = "Visualization";
+      this.visualizationTabPage.UseVisualStyleBackColor = true;
       // 
       // ganttChart
       // 
-      this.ganttChart.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
-                  | System.Windows.Forms.AnchorStyles.Left)
-                  | System.Windows.Forms.AnchorStyles.Right)));
-      this.ganttChart.Location = new System.Drawing.Point(0, 3);
+      this.ganttChart.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.ganttChart.Location = new System.Drawing.Point(3, 3);
       this.ganttChart.Name = "ganttChart";
-      this.ganttChart.Size = new System.Drawing.Size(716, 384);
+      this.ganttChart.Size = new System.Drawing.Size(491, 271);
       this.ganttChart.TabIndex = 0;
       // 
@@ -122,19 +119,15 @@
       this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
       this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
-      this.Controls.Add(this.tabControl1);
-      this.Controls.Add(this.importButton);
       this.Name = "JobShopSchedulingProblemView";
-      this.Size = new System.Drawing.Size(733, 472);
-      this.Controls.SetChildIndex(this.importButton, 0);
-      this.Controls.SetChildIndex(this.nameLabel, 0);
-      this.Controls.SetChildIndex(this.nameTextBox, 0);
-      this.Controls.SetChildIndex(this.infoLabel, 0);
-      this.Controls.SetChildIndex(this.tabControl1, 0);
+      this.problemInstanceSplitContainer.Panel1.ResumeLayout(false);
+      this.problemInstanceSplitContainer.Panel2.ResumeLayout(false);
+      this.problemInstanceSplitContainer.Panel2.PerformLayout();
+      ((System.ComponentModel.ISupportInitialize)(this.problemInstanceSplitContainer)).EndInit();
+      this.problemInstanceSplitContainer.ResumeLayout(false);
       ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).EndInit();
-      this.tabControl1.ResumeLayout(false);
-      this.tabPage1.ResumeLayout(false);
-      this.tabPage2.ResumeLayout(false);
+      this.problemTabControl.ResumeLayout(false);
+      this.problemTabPage.ResumeLayout(false);
+      this.visualizationTabPage.ResumeLayout(false);
       this.ResumeLayout(false);
-      this.PerformLayout();
 
     }
@@ -142,9 +135,7 @@
     #endregion
 
-    private System.Windows.Forms.Button importButton;
-    private Core.Views.ParameterCollectionView parameterCollectionView;
-    private System.Windows.Forms.TabControl tabControl1;
-    private System.Windows.Forms.TabPage tabPage1;
-    private System.Windows.Forms.TabPage tabPage2;
+    private System.Windows.Forms.TabControl problemTabControl;
+    private System.Windows.Forms.TabPage problemTabPage;
+    private System.Windows.Forms.TabPage visualizationTabPage;
     private GanttChart ganttChart;
   }
Index: /trunk/sources/HeuristicLab.Problems.Scheduling.Views/3.3/JobShopSchedulingProblemView.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.Scheduling.Views/3.3/JobShopSchedulingProblemView.cs	(revision 8881)
+++ /trunk/sources/HeuristicLab.Problems.Scheduling.Views/3.3/JobShopSchedulingProblemView.cs	(revision 8882)
@@ -20,20 +20,12 @@
 #endregion
 
-using System;
 using System.Windows.Forms;
-using HeuristicLab.Core;
-using HeuristicLab.Core.Views;
-using HeuristicLab.Encodings.ScheduleEncoding;
 using HeuristicLab.MainForm;
-using HeuristicLab.PluginInfrastructure;
+using HeuristicLab.Optimization.Views;
 
 namespace HeuristicLab.Problems.Scheduling.Views {
   [View("JobShop Scheduling Problem View")]
   [Content(typeof(JobShopSchedulingProblem), true)]
-  public partial class JobShopSchedulingProblemView : NamedItemView {
-    public JobShopSchedulingProblemView() {
-      InitializeComponent();
-    }
-    private SchedulingProblemImportDialog spImportDialog;
+  public partial class JobShopSchedulingProblemView : ProblemView {
 
     public new JobShopSchedulingProblem Content {
@@ -42,11 +34,16 @@
     }
 
+    public JobShopSchedulingProblemView() {
+      InitializeComponent();
+      Controls.Remove(parameterCollectionView);
+      parameterCollectionView.Dock = DockStyle.Fill;
+      problemTabPage.Controls.Add(parameterCollectionView);
+    }
+
     protected override void OnContentChanged() {
       base.OnContentChanged();
       if (Content == null) {
-        parameterCollectionView.Content = null;
         ganttChart.Reset();
       } else {
-        parameterCollectionView.Content = ((IParameterizedNamedItem)Content).Parameters;
         FillGanttChart(Content);
       }
@@ -54,11 +51,9 @@
 
     private void FillGanttChart(JobShopSchedulingProblem content) {
-      //Add Jobs as Categories
       ganttChart.Reset();
       int jobCount = 0;
-      Random random = new Random(1);
-      foreach (Job j in content.JobData) {
+      foreach (var j in content.JobData) {
         double lastEndTime = 0;
-        foreach (Task t in content.JobData[jobCount].Tasks) {
+        foreach (var t in content.JobData[jobCount].Tasks) {
           int categoryNr = t.JobNr;
           string categoryName = "Job" + categoryNr;
@@ -74,32 +69,4 @@
       }
     }
-
-    protected override void SetEnabledStateOfControls() {
-      base.SetEnabledStateOfControls();
-      parameterCollectionView.Enabled = Content != null;
-      importButton.Enabled = Content != null && !ReadOnly;
-    }
-
-    private void importButton_Click(object sender, EventArgs e) {
-      if (spImportDialog == null) spImportDialog = new SchedulingProblemImportDialog();
-
-      if (spImportDialog.ShowDialog(this) == DialogResult.OK) {
-        try {
-          switch (spImportDialog.Format) {
-            case SPFormat.ORLib:
-              Content.ImportFromORLibrary(spImportDialog.SPFileName);
-              break;
-          }
-
-
-          if (!string.IsNullOrEmpty(spImportDialog.OptimalScheduleFileName))
-            Content.ImportJSMSolution(spImportDialog.OptimalScheduleFileName);
-          OnContentChanged();
-        }
-        catch (Exception ex) {
-          ErrorHandling.ShowErrorDialog(this, ex);
-        }
-      }
-    }
   }
 }
Index: unk/sources/HeuristicLab.Problems.Scheduling.Views/3.3/JobShopSchedulingProblemView.resx
===================================================================
--- /trunk/sources/HeuristicLab.Problems.Scheduling.Views/3.3/JobShopSchedulingProblemView.resx	(revision 8881)
+++ 	(revision )
@@ -1,126 +1,0 @@
-﻿<?xml version="1.0" encoding="utf-8"?>
-<root>
-  <!-- 
-    Microsoft ResX Schema 
-    
-    Version 2.0
-    
-    The primary goals of this format is to allow a simple XML format 
-    that is mostly human readable. The generation and parsing of the 
-    various data types are done through the TypeConverter classes 
-    associated with the data types.
-    
-    Example:
-    
-    ... ado.net/XML headers & schema ...
-    <resheader name="resmimetype">text/microsoft-resx</resheader>
-    <resheader name="version">2.0</resheader>
-    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
-    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
-    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
-    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
-    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
-        <value>[base64 mime encoded serialized .NET Framework object]</value>
-    </data>
-    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
-        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
-        <comment>This is a comment</comment>
-    </data>
-                
-    There are any number of "resheader" rows that contain simple 
-    name/value pairs.
-    
-    Each data row contains a name, and value. The row also contains a 
-    type or mimetype. Type corresponds to a .NET class that support 
-    text/value conversion through the TypeConverter architecture. 
-    Classes that don't support this are serialized and stored with the 
-    mimetype set.
-    
-    The mimetype is used for serialized objects, and tells the 
-    ResXResourceReader how to depersist the object. This is currently not 
-    extensible. For a given mimetype the value must be set accordingly:
-    
-    Note - application/x-microsoft.net.object.binary.base64 is the format 
-    that the ResXResourceWriter will generate, however the reader can 
-    read any of the formats listed below.
-    
-    mimetype: application/x-microsoft.net.object.binary.base64
-    value   : The object must be serialized with 
-            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
-            : and then encoded with base64 encoding.
-    
-    mimetype: application/x-microsoft.net.object.soap.base64
-    value   : The object must be serialized with 
-            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
-            : and then encoded with base64 encoding.
-
-    mimetype: application/x-microsoft.net.object.bytearray.base64
-    value   : The object must be serialized into a byte array 
-            : using a System.ComponentModel.TypeConverter
-            : and then encoded with base64 encoding.
-    -->
-  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
-    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
-    <xsd:element name="root" msdata:IsDataSet="true">
-      <xsd:complexType>
-        <xsd:choice maxOccurs="unbounded">
-          <xsd:element name="metadata">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" />
-              </xsd:sequence>
-              <xsd:attribute name="name" use="required" type="xsd:string" />
-              <xsd:attribute name="type" type="xsd:string" />
-              <xsd:attribute name="mimetype" type="xsd:string" />
-              <xsd:attribute ref="xml:space" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="assembly">
-            <xsd:complexType>
-              <xsd:attribute name="alias" type="xsd:string" />
-              <xsd:attribute name="name" type="xsd:string" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="data">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
-                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
-              </xsd:sequence>
-              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
-              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
-              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
-              <xsd:attribute ref="xml:space" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="resheader">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
-              </xsd:sequence>
-              <xsd:attribute name="name" type="xsd:string" use="required" />
-            </xsd:complexType>
-          </xsd:element>
-        </xsd:choice>
-      </xsd:complexType>
-    </xsd:element>
-  </xsd:schema>
-  <resheader name="resmimetype">
-    <value>text/microsoft-resx</value>
-  </resheader>
-  <resheader name="version">
-    <value>2.0</value>
-  </resheader>
-  <resheader name="reader">
-    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-  </resheader>
-  <resheader name="writer">
-    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-  </resheader>
-  <metadata name="errorProvider.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
-    <value>107, 17</value>
-  </metadata>
-  <metadata name="toolTip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
-    <value>17, 17</value>
-  </metadata>
-</root>
Index: /trunk/sources/HeuristicLab.Problems.Scheduling.Views/3.3/Plugin.cs.frame
===================================================================
--- /trunk/sources/HeuristicLab.Problems.Scheduling.Views/3.3/Plugin.cs.frame	(revision 8881)
+++ /trunk/sources/HeuristicLab.Problems.Scheduling.Views/3.3/Plugin.cs.frame	(revision 8882)
@@ -32,4 +32,6 @@
   [PluginDependency("HeuristicLab.MainForm", "3.3")]
   [PluginDependency("HeuristicLab.MainForm.WindowsForms", "3.3")]
+  [PluginDependency("HeuristicLab.Optimization", "3.3")]
+  [PluginDependency("HeuristicLab.Optimization.Views", "3.3")]
   [PluginDependency("HeuristicLab.Problems.Scheduling", "3.3")]
   public class HeuristicLabProblemsSchedulingViewsPlugin : PluginBase {
Index: unk/sources/HeuristicLab.Problems.Scheduling.Views/3.3/SchedulingProblemImportDialog.Designer.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.Scheduling.Views/3.3/SchedulingProblemImportDialog.Designer.cs	(revision 8881)
+++ 	(revision )
@@ -1,216 +1,0 @@
-﻿#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2012 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
- *
- * This file is part of HeuristicLab.
- *
- * HeuristicLab is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * HeuristicLab is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
- */
-#endregion
-
-namespace HeuristicLab.Problems.Scheduling.Views {
-  partial class SchedulingProblemImportDialog {
-    /// <summary>
-    /// Required designer variable.
-    /// </summary>
-    private System.ComponentModel.IContainer components = null;
-
-    /// <summary>
-    /// Clean up any resources being used.
-    /// </summary>
-    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
-    protected override void Dispose(bool disposing) {
-      if (disposing && (components != null)) {
-        components.Dispose();
-      }
-      base.Dispose(disposing);
-    }
-
-    #region Windows Form Designer generated code
-
-    /// <summary>
-    /// Required method for Designer support - do not modify
-    /// the contents of this method with the code editor.
-    /// </summary>
-    private void InitializeComponent() {
-      System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(SchedulingProblemImportDialog));
-      this.okButton = new System.Windows.Forms.Button();
-      this.cancelButton = new System.Windows.Forms.Button();
-      this.openSchedulingProblemFileDialog = new System.Windows.Forms.OpenFileDialog();
-      this.spFileLabel = new System.Windows.Forms.Label();
-      this.openSchedulingProblemFileButton = new System.Windows.Forms.Button();
-      this.spFileTextBox = new System.Windows.Forms.TextBox();
-      this.optimalScheduleFileLabel = new System.Windows.Forms.Label();
-      this.openOptimalScheduleFileButton = new System.Windows.Forms.Button();
-      this.optimalScheduleFileTextBox = new System.Windows.Forms.TextBox();
-      this.openOptimalScheduleFileDialog = new System.Windows.Forms.OpenFileDialog();
-      this.clearOptimalScheduleButton = new System.Windows.Forms.Button();
-      this.SuspendLayout();
-      // 
-      // okButton
-      // 
-      this.okButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
-      this.okButton.DialogResult = System.Windows.Forms.DialogResult.OK;
-      this.okButton.Enabled = false;
-      this.okButton.Location = new System.Drawing.Point(422, 69);
-      this.okButton.Name = "okButton";
-      this.okButton.Size = new System.Drawing.Size(75, 23);
-      this.okButton.TabIndex = 9;
-      this.okButton.Text = "&OK";
-      this.okButton.UseVisualStyleBackColor = true;
-      // 
-      // cancelButton
-      // 
-      this.cancelButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
-      this.cancelButton.DialogResult = System.Windows.Forms.DialogResult.Cancel;
-      this.cancelButton.Location = new System.Drawing.Point(499, 69);
-      this.cancelButton.Name = "cancelButton";
-      this.cancelButton.Size = new System.Drawing.Size(75, 23);
-      this.cancelButton.TabIndex = 10;
-      this.cancelButton.Text = "&Cancel";
-      this.cancelButton.UseVisualStyleBackColor = true;
-      // 
-      // openSchedulingProblemFileDialog
-      // 
-      this.openSchedulingProblemFileDialog.DefaultExt = "scp";
-      this.openSchedulingProblemFileDialog.FileName = "scp";
-      this.openSchedulingProblemFileDialog.Filter = "ORLib Format|*.txt";
-      this.openSchedulingProblemFileDialog.Title = "Open Scheduling Problem File";
-      // 
-      // spFileLabel
-      // 
-      this.spFileLabel.AutoSize = true;
-      this.spFileLabel.Location = new System.Drawing.Point(12, 15);
-      this.spFileLabel.Name = "spFileLabel";
-      this.spFileLabel.Size = new System.Drawing.Size(43, 13);
-      this.spFileLabel.TabIndex = 0;
-      this.spFileLabel.Text = "&SP File:";
-      // 
-      // openSchedulingProblemFileButton
-      // 
-      this.openSchedulingProblemFileButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
-      this.openSchedulingProblemFileButton.Image = ((System.Drawing.Image)(resources.GetObject("openSchedulingProblemFileButton.Image")));
-      this.openSchedulingProblemFileButton.Location = new System.Drawing.Point(520, 10);
-      this.openSchedulingProblemFileButton.Name = "openSchedulingProblemFileButton";
-      this.openSchedulingProblemFileButton.Size = new System.Drawing.Size(24, 24);
-      this.openSchedulingProblemFileButton.TabIndex = 2;
-      this.openSchedulingProblemFileButton.UseVisualStyleBackColor = true;
-      this.openSchedulingProblemFileButton.Click += new System.EventHandler(this.openSchedulingProblemFileButton_Click);
-      // 
-      // spFileTextBox
-      // 
-      this.spFileTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
-                  | System.Windows.Forms.AnchorStyles.Right)));
-      this.spFileTextBox.Enabled = false;
-      this.spFileTextBox.Location = new System.Drawing.Point(136, 12);
-      this.spFileTextBox.Name = "spFileTextBox";
-      this.spFileTextBox.ReadOnly = true;
-      this.spFileTextBox.Size = new System.Drawing.Size(378, 20);
-      this.spFileTextBox.TabIndex = 1;
-      // 
-      // optimalScheduleFileLabel
-      // 
-      this.optimalScheduleFileLabel.AutoSize = true;
-      this.optimalScheduleFileLabel.Location = new System.Drawing.Point(12, 41);
-      this.optimalScheduleFileLabel.Name = "optimalScheduleFileLabel";
-      this.optimalScheduleFileLabel.Size = new System.Drawing.Size(112, 13);
-      this.optimalScheduleFileLabel.TabIndex = 5;
-      this.optimalScheduleFileLabel.Text = "&Optimal Schedule File:";
-      // 
-      // openOptimalScheduleFileButton
-      // 
-      this.openOptimalScheduleFileButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
-      this.openOptimalScheduleFileButton.Image = ((System.Drawing.Image)(resources.GetObject("openOptimalScheduleFileButton.Image")));
-      this.openOptimalScheduleFileButton.Location = new System.Drawing.Point(520, 35);
-      this.openOptimalScheduleFileButton.Name = "openOptimalScheduleFileButton";
-      this.openOptimalScheduleFileButton.Size = new System.Drawing.Size(24, 24);
-      this.openOptimalScheduleFileButton.TabIndex = 7;
-      this.openOptimalScheduleFileButton.UseVisualStyleBackColor = true;
-      this.openOptimalScheduleFileButton.Click += new System.EventHandler(this.openOptimalScheduleFileButton_Click);
-      // 
-      // optimalScheduleFileTextBox
-      // 
-      this.optimalScheduleFileTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
-                  | System.Windows.Forms.AnchorStyles.Right)));
-      this.optimalScheduleFileTextBox.Enabled = false;
-      this.optimalScheduleFileTextBox.Location = new System.Drawing.Point(136, 38);
-      this.optimalScheduleFileTextBox.Name = "optimalScheduleFileTextBox";
-      this.optimalScheduleFileTextBox.ReadOnly = true;
-      this.optimalScheduleFileTextBox.Size = new System.Drawing.Size(378, 20);
-      this.optimalScheduleFileTextBox.TabIndex = 6;
-      // 
-      // openOptimalScheduleFileDialog
-      // 
-      this.openOptimalScheduleFileDialog.DefaultExt = "opt";
-      this.openOptimalScheduleFileDialog.FileName = "tour";
-      this.openOptimalScheduleFileDialog.Filter = "Optimal Schedule Files|*.opt";
-      this.openOptimalScheduleFileDialog.SupportMultiDottedExtensions = true;
-      this.openOptimalScheduleFileDialog.Title = "Open Optimal Schedule File";
-      // 
-      // clearOptimalScheduleButton
-      // 
-      this.clearOptimalScheduleButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
-      this.clearOptimalScheduleButton.Image = ((System.Drawing.Image)(resources.GetObject("clearOptimalScheduleButton.Image")));
-      this.clearOptimalScheduleButton.Location = new System.Drawing.Point(550, 35);
-      this.clearOptimalScheduleButton.Name = "clearOptimalScheduleButton";
-      this.clearOptimalScheduleButton.Size = new System.Drawing.Size(24, 24);
-      this.clearOptimalScheduleButton.TabIndex = 8;
-      this.clearOptimalScheduleButton.UseVisualStyleBackColor = true;
-      this.clearOptimalScheduleButton.Click += new System.EventHandler(this.clearTourFileButton_Click);
-      // 
-      // SchedulingProblemImportDialog
-      // 
-      this.AcceptButton = this.okButton;
-      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
-      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
-      this.CancelButton = this.cancelButton;
-      this.ClientSize = new System.Drawing.Size(586, 104);
-      this.Controls.Add(this.optimalScheduleFileTextBox);
-      this.Controls.Add(this.spFileTextBox);
-      this.Controls.Add(this.clearOptimalScheduleButton);
-      this.Controls.Add(this.openOptimalScheduleFileButton);
-      this.Controls.Add(this.openSchedulingProblemFileButton);
-      this.Controls.Add(this.optimalScheduleFileLabel);
-      this.Controls.Add(this.spFileLabel);
-      this.Controls.Add(this.cancelButton);
-      this.Controls.Add(this.okButton);
-      this.HelpButton = true;
-      this.MaximizeBox = false;
-      this.MinimizeBox = false;
-      this.Name = "SchedulingProblemImportDialog";
-      this.ShowIcon = false;
-      this.ShowInTaskbar = false;
-      this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
-      this.Text = "Import Scheduling Problem";
-      this.HelpButtonClicked += new System.ComponentModel.CancelEventHandler(this.VRPImportDialog_HelpButtonClicked);
-      this.ResumeLayout(false);
-      this.PerformLayout();
-
-    }
-
-    #endregion
-
-    private System.Windows.Forms.Button okButton;
-    private System.Windows.Forms.Button cancelButton;
-    private System.Windows.Forms.OpenFileDialog openSchedulingProblemFileDialog;
-    private System.Windows.Forms.Label spFileLabel;
-    private System.Windows.Forms.Button openSchedulingProblemFileButton;
-    private System.Windows.Forms.TextBox spFileTextBox;
-    private System.Windows.Forms.Label optimalScheduleFileLabel;
-    private System.Windows.Forms.Button openOptimalScheduleFileButton;
-    private System.Windows.Forms.TextBox optimalScheduleFileTextBox;
-    private System.Windows.Forms.OpenFileDialog openOptimalScheduleFileDialog;
-    private System.Windows.Forms.Button clearOptimalScheduleButton;
-  }
-}
Index: unk/sources/HeuristicLab.Problems.Scheduling.Views/3.3/SchedulingProblemImportDialog.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.Scheduling.Views/3.3/SchedulingProblemImportDialog.cs	(revision 8881)
+++ 	(revision )
@@ -1,85 +1,0 @@
-﻿#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2012 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
- *
- * This file is part of HeuristicLab.
- *
- * HeuristicLab is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * HeuristicLab is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
- */
-#endregion
-
-using System;
-using System.ComponentModel;
-using System.Text;
-using System.Windows.Forms;
-
-namespace HeuristicLab.Problems.Scheduling.Views {
-  public enum SPFormat { Empty, ORLib }
-
-  public sealed partial class SchedulingProblemImportDialog : Form {
-    private string spFileName;
-    public string SPFileName {
-      get { return spFileName; }
-    }
-    private string optimalScheduleFileName;
-    public string OptimalScheduleFileName {
-      get { return optimalScheduleFileName; }
-    }
-    private SPFormat format;
-    public SPFormat Format {
-      get { return format; }
-    }
-
-    public SchedulingProblemImportDialog() {
-      InitializeComponent();
-      spFileName = string.Empty;
-      optimalScheduleFileName = string.Empty;
-      format = SPFormat.Empty;
-    }
-
-    private void openSchedulingProblemFileButton_Click(object sender, EventArgs e) {
-      if (openSchedulingProblemFileDialog.ShowDialog(this) == DialogResult.OK) {
-        spFileTextBox.Text = openSchedulingProblemFileDialog.FileName;
-        spFileTextBox.Enabled = true;
-        spFileName = openSchedulingProblemFileDialog.FileName;
-        okButton.Enabled = true;
-
-        optimalScheduleFileTextBox.Text = string.Empty;
-        optimalScheduleFileName = string.Empty;
-
-        format = (SPFormat)(openSchedulingProblemFileDialog.FilterIndex);
-      }
-    }
-    private void openOptimalScheduleFileButton_Click(object sender, EventArgs e) {
-      if (openOptimalScheduleFileDialog.ShowDialog(this) == DialogResult.OK) {
-        optimalScheduleFileTextBox.Text = openOptimalScheduleFileDialog.FileName;
-        optimalScheduleFileTextBox.Enabled = true;
-        optimalScheduleFileName = openOptimalScheduleFileDialog.FileName;
-      }
-    }
-    private void clearTourFileButton_Click(object sender, EventArgs e) {
-      optimalScheduleFileTextBox.Text = string.Empty;
-      optimalScheduleFileTextBox.Enabled = false;
-      optimalScheduleFileName = string.Empty;
-    }
-
-    private void VRPImportDialog_HelpButtonClicked(object sender, CancelEventArgs e) {
-      if (MessageBox.Show("Do you want to open the HeuristicLab wiki website?", "Help",
-        MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1) == System.Windows.Forms.DialogResult.Yes) {
-          System.Diagnostics.Process.Start("http://dev.heuristiclab.com/trac/hl/core/wiki/Scheduling%20Problem");
-      }
-    }
-
-  }
-}
Index: unk/sources/HeuristicLab.Problems.Scheduling.Views/3.3/SchedulingProblemImportDialog.resx
===================================================================
--- /trunk/sources/HeuristicLab.Problems.Scheduling.Views/3.3/SchedulingProblemImportDialog.resx	(revision 8881)
+++ 	(revision )
@@ -1,219 +1,0 @@
-﻿<?xml version="1.0" encoding="utf-8"?>
-<root>
-  <!-- 
-    Microsoft ResX Schema 
-    
-    Version 2.0
-    
-    The primary goals of this format is to allow a simple XML format 
-    that is mostly human readable. The generation and parsing of the 
-    various data types are done through the TypeConverter classes 
-    associated with the data types.
-    
-    Example:
-    
-    ... ado.net/XML headers & schema ...
-    <resheader name="resmimetype">text/microsoft-resx</resheader>
-    <resheader name="version">2.0</resheader>
-    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
-    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
-    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
-    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
-    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
-        <value>[base64 mime encoded serialized .NET Framework object]</value>
-    </data>
-    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
-        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
-        <comment>This is a comment</comment>
-    </data>
-                
-    There are any number of "resheader" rows that contain simple 
-    name/value pairs.
-    
-    Each data row contains a name, and value. The row also contains a 
-    type or mimetype. Type corresponds to a .NET class that support 
-    text/value conversion through the TypeConverter architecture. 
-    Classes that don't support this are serialized and stored with the 
-    mimetype set.
-    
-    The mimetype is used for serialized objects, and tells the 
-    ResXResourceReader how to depersist the object. This is currently not 
-    extensible. For a given mimetype the value must be set accordingly:
-    
-    Note - application/x-microsoft.net.object.binary.base64 is the format 
-    that the ResXResourceWriter will generate, however the reader can 
-    read any of the formats listed below.
-    
-    mimetype: application/x-microsoft.net.object.binary.base64
-    value   : The object must be serialized with 
-            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
-            : and then encoded with base64 encoding.
-    
-    mimetype: application/x-microsoft.net.object.soap.base64
-    value   : The object must be serialized with 
-            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
-            : and then encoded with base64 encoding.
-
-    mimetype: application/x-microsoft.net.object.bytearray.base64
-    value   : The object must be serialized into a byte array 
-            : using a System.ComponentModel.TypeConverter
-            : and then encoded with base64 encoding.
-    -->
-  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
-    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
-    <xsd:element name="root" msdata:IsDataSet="true">
-      <xsd:complexType>
-        <xsd:choice maxOccurs="unbounded">
-          <xsd:element name="metadata">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" />
-              </xsd:sequence>
-              <xsd:attribute name="name" use="required" type="xsd:string" />
-              <xsd:attribute name="type" type="xsd:string" />
-              <xsd:attribute name="mimetype" type="xsd:string" />
-              <xsd:attribute ref="xml:space" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="assembly">
-            <xsd:complexType>
-              <xsd:attribute name="alias" type="xsd:string" />
-              <xsd:attribute name="name" type="xsd:string" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="data">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
-                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
-              </xsd:sequence>
-              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
-              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
-              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
-              <xsd:attribute ref="xml:space" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="resheader">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
-              </xsd:sequence>
-              <xsd:attribute name="name" type="xsd:string" use="required" />
-            </xsd:complexType>
-          </xsd:element>
-        </xsd:choice>
-      </xsd:complexType>
-    </xsd:element>
-  </xsd:schema>
-  <resheader name="resmimetype">
-    <value>text/microsoft-resx</value>
-  </resheader>
-  <resheader name="version">
-    <value>2.0</value>
-  </resheader>
-  <resheader name="reader">
-    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-  </resheader>
-  <resheader name="writer">
-    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-  </resheader>
-  <metadata name="openSchedulingProblemFileDialog.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
-    <value>244, 17</value>
-  </metadata>
-  <assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
-  <data name="openSchedulingProblemFileButton.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
-    <value>
-        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6
-        JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAAACXBIWXMAAAsQAAALEAGtI711AAACeklE
-        QVQ4T6WTWUiUURiG/4suurJIjUIwskQsEANDqosQpUVNKbdCSRPKrQVDMddmXEedGdcpFXNGnUYdrSzF
-        sEIoFInQcqHE1CwoKsXUUMnt6Z+RLMtA8OK5OZz3Oe/5OEcAhPWwpnBaodZZmqfjWmY5GSo98XJNwq9D
-        1yQIilLhFaYIMIQuxZaZJ4uy6FS1T2BUIUKdNsdPhL9pqpEp/ne18PiiE94RCjzDco0C+rs1zIzXGvkx
-        pmNuRI2+XEG9NjV5NYlXuBLP0DzcQwoQaiuUTI9VrQgvfC5irjeSqrJMKovTURcmU5KbxE15HAWyGNH5
-        e/BCtSab6a+a5ZMXxTD9cdAbsir/CG6Xyvj+qcRY2xBurss28lCfRYNOxr3KdPTqFHQlUspV17mVl0Cx
-        Mg5VdqyxjVBZks7k+3wMtYdaJdRXKVkYksJw6kreiWuD8dAXBa8j6Krx5UqwR4WgVqUwMZAJH+Tcr1bQ
-        /ki+tOnPK7wKhA5v5tvcmHnsxNsKOy6ePTohCvYKpXkSvr2RMtyWSL1OzuKgBHpClwRdwWLwNPPtHsy0
-        HGGy6RCjdfuQhllzxsUs1zBMoUiZyGh3LHe02XQ+E5v0RYqC89AZwOLzk8w+Pc5U82HG6h34Um1LR9pm
-        /N2scLAxsTEKVFlx9LQkcVebBQNJ8FKs+8KH2VZ3pp44Md7gyIjejo+a3fTKTZGE7MJ+j0Xj8lPOz4ih
-        tjyT3gfhdOQIy7TLN9Ai20hj8iZqEsxRx1hw4+oO/F13LjraW7ouC3JSo8mRXCAjNoj4y36GyXLO14VT
-        xw7gfNCO/XbW2FpZYLndjK1bTNhmarLyIa3nKxuyPwG9D9E7Fbto+QAAAABJRU5ErkJggg==
-</value>
-  </data>
-  <data name="openOptimalScheduleFileButton.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
-    <value>
-        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6
-        JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAAACXBIWXMAAAsQAAALEAGtI711AAACeklE
-        QVQ4T6WTWUiUURiG/4suurJIjUIwskQsEANDqosQpUVNKbdCSRPKrQVDMddmXEedGdcpFXNGnUYdrSzF
-        sEIoFInQcqHE1CwoKsXUUMnt6Z+RLMtA8OK5OZz3Oe/5OEcAhPWwpnBaodZZmqfjWmY5GSo98XJNwq9D
-        1yQIilLhFaYIMIQuxZaZJ4uy6FS1T2BUIUKdNsdPhL9pqpEp/ne18PiiE94RCjzDco0C+rs1zIzXGvkx
-        pmNuRI2+XEG9NjV5NYlXuBLP0DzcQwoQaiuUTI9VrQgvfC5irjeSqrJMKovTURcmU5KbxE15HAWyGNH5
-        e/BCtSab6a+a5ZMXxTD9cdAbsir/CG6Xyvj+qcRY2xBurss28lCfRYNOxr3KdPTqFHQlUspV17mVl0Cx
-        Mg5VdqyxjVBZks7k+3wMtYdaJdRXKVkYksJw6kreiWuD8dAXBa8j6Krx5UqwR4WgVqUwMZAJH+Tcr1bQ
-        /ki+tOnPK7wKhA5v5tvcmHnsxNsKOy6ePTohCvYKpXkSvr2RMtyWSL1OzuKgBHpClwRdwWLwNPPtHsy0
-        HGGy6RCjdfuQhllzxsUs1zBMoUiZyGh3LHe02XQ+E5v0RYqC89AZwOLzk8w+Pc5U82HG6h34Um1LR9pm
-        /N2scLAxsTEKVFlx9LQkcVebBQNJ8FKs+8KH2VZ3pp44Md7gyIjejo+a3fTKTZGE7MJ+j0Xj8lPOz4ih
-        tjyT3gfhdOQIy7TLN9Ai20hj8iZqEsxRx1hw4+oO/F13LjraW7ouC3JSo8mRXCAjNoj4y36GyXLO14VT
-        xw7gfNCO/XbW2FpZYLndjK1bTNhmarLyIa3nKxuyPwG9D9E7Fbto+QAAAABJRU5ErkJggg==
-</value>
-  </data>
-  <metadata name="openOptimalScheduleFileDialog.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
-    <value>17, 17</value>
-  </metadata>
-  <data name="clearOptimalScheduleButton.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
-    <value>
-        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
-        w6/9DUORY3pvwx7IAAAAAElFTkSuQmCC
-</value>
-  </data>
-</root>
Index: /trunk/sources/HeuristicLab.Problems.Scheduling/3.3/Evaluators/MakespanEvaluator.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.Scheduling/3.3/Evaluators/MakespanEvaluator.cs	(revision 8881)
+++ /trunk/sources/HeuristicLab.Problems.Scheduling/3.3/Evaluators/MakespanEvaluator.cs	(revision 8882)
@@ -20,4 +20,5 @@
 #endregion
 
+using System.Linq;
 using HeuristicLab.Common;
 using HeuristicLab.Core;
@@ -41,12 +42,10 @@
     public MakespanEvaluator() : base() { }
 
-    protected override DoubleValue evaluate(Schedule schedule) {
-      DoubleValue quality = new DoubleValue(0);
-      foreach (Resource r in schedule.Resources) {
-        if (r.TotalDuration > quality.Value) {
-          quality.Value = r.TotalDuration;
-        }
-      }
-      return quality;
+    public static double GetMakespan(Schedule schedule) {
+      return schedule.Resources.Select(r => r.TotalDuration).Max();
+    }
+
+    protected override DoubleValue Evaluate(Schedule schedule) {
+      return new DoubleValue(GetMakespan(schedule));
     }
 
Index: /trunk/sources/HeuristicLab.Problems.Scheduling/3.3/Evaluators/MeanTardinessEvaluator.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.Scheduling/3.3/Evaluators/MeanTardinessEvaluator.cs	(revision 8881)
+++ /trunk/sources/HeuristicLab.Problems.Scheduling/3.3/Evaluators/MeanTardinessEvaluator.cs	(revision 8882)
@@ -20,4 +20,6 @@
 #endregion
 
+using System;
+using System.Linq;
 using HeuristicLab.Common;
 using HeuristicLab.Core;
@@ -31,9 +33,8 @@
   [StorableClass]
   public class MeanTardinessEvaluator : SchedulingEvaluator, IJSSPOperator {
+
     [StorableConstructor]
     protected MeanTardinessEvaluator(bool deserializing) : base(deserializing) { }
-    protected MeanTardinessEvaluator(MeanTardinessEvaluator original, Cloner cloner)
-      : base(original, cloner) {
-    }
+    protected MeanTardinessEvaluator(MeanTardinessEvaluator original, Cloner cloner) : base(original, cloner) { }
     public override IDeepCloneable Clone(Cloner cloner) {
       return new MeanTardinessEvaluator(this, cloner);
@@ -45,9 +46,4 @@
     }
     #endregion
-    #region Properties
-    public ItemList<Job> JobData {
-      get { return JobDataParameter.ActualValue; }
-    }
-    #endregion
 
     public MeanTardinessEvaluator()
@@ -56,16 +52,12 @@
     }
 
-    protected override DoubleValue evaluate(Schedule schedule) {
-      double totalTardiness = 0;
-      foreach (Resource r in schedule.Resources) {
-        double tardiness = r.Tasks[r.Tasks.Count - 1].EndTime - JobData[r.Tasks[r.Tasks.Count - 1].JobNr].DueDate;
-        if (tardiness > 0)
-          totalTardiness += tardiness;
-      }
-      return new DoubleValue(totalTardiness / schedule.Resources.Count);
+    public static double GetMeanTardiness(Schedule schedule, ItemList<Job> jobData) {
+      return schedule.Resources
+        .Select(r => Math.Max(0, r.Tasks.Last().EndTime - jobData[r.Tasks.Last().JobNr].DueDate))
+        .Average();
     }
 
-    public override IOperation Apply() {
-      return base.Apply();
+    protected override DoubleValue Evaluate(Schedule schedule) {
+      return new DoubleValue(GetMeanTardiness(schedule, JobDataParameter.ActualValue));
     }
   }
Index: /trunk/sources/HeuristicLab.Problems.Scheduling/3.3/Evaluators/SchedulingEvaluator.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.Scheduling/3.3/Evaluators/SchedulingEvaluator.cs	(revision 8881)
+++ /trunk/sources/HeuristicLab.Problems.Scheduling/3.3/Evaluators/SchedulingEvaluator.cs	(revision 8882)
@@ -61,9 +61,9 @@
     }
 
-    protected abstract DoubleValue evaluate(Schedule schedule);
+    protected abstract DoubleValue Evaluate(Schedule schedule);
 
     public override IOperation Apply() {
       Schedule schedule = ScheduleParameter.ActualValue;
-      QualityParameter.ActualValue = evaluate(schedule);
+      QualityParameter.ActualValue = Evaluate(schedule);
       return base.Apply();
     }
Index: /trunk/sources/HeuristicLab.Problems.Scheduling/3.3/HeuristicLab.Problems.Scheduling-3.3.csproj
===================================================================
--- /trunk/sources/HeuristicLab.Problems.Scheduling/3.3/HeuristicLab.Problems.Scheduling-3.3.csproj	(revision 8881)
+++ /trunk/sources/HeuristicLab.Problems.Scheduling/3.3/HeuristicLab.Problems.Scheduling-3.3.csproj	(revision 8882)
@@ -193,4 +193,9 @@
       <Private>False</Private>
     </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Problems.Instances\3.3\HeuristicLab.Problems.Instances-3.3.csproj">
+      <Project>{3540E29E-4793-49E7-8EE2-FEA7F61C3994}</Project>
+      <Name>HeuristicLab.Problems.Instances-3.3</Name>
+      <Private>False</Private>
+    </ProjectReference>
   </ItemGroup>
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
Index: /trunk/sources/HeuristicLab.Problems.Scheduling/3.3/JobShopSchedulingProblem.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.Scheduling/3.3/JobShopSchedulingProblem.cs	(revision 8881)
+++ /trunk/sources/HeuristicLab.Problems.Scheduling/3.3/JobShopSchedulingProblem.cs	(revision 8882)
@@ -20,8 +20,5 @@
 #endregion
 
-using System;
-using System.Collections.Generic;
 using System.Drawing;
-using System.IO;
 using HeuristicLab.Common;
 using HeuristicLab.Core;
@@ -35,10 +32,43 @@
 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
 using HeuristicLab.PluginInfrastructure;
+using HeuristicLab.Problems.Instances;
 
 namespace HeuristicLab.Problems.Scheduling {
-  [Item("JobShop Scheduling Problem", "Represents a standard JobShop Scheduling Problem")]
+  [Item("Job Shop Scheduling Problem", "Represents a standard Job Shop Scheduling Problem")]
   [Creatable("Problems")]
   [StorableClass]
-  public sealed class JobShopSchedulingProblem : SchedulingProblem, IStorableContent {
+  public sealed class JobShopSchedulingProblem : SchedulingProblem, IProblemInstanceConsumer<JSSPData>, IProblemInstanceExporter<JSSPData>, IStorableContent {
+    #region Default Instance
+    private static readonly JSSPData DefaultInstance = new JSSPData() {
+      Jobs = 10,
+      Resources = 10,
+      BestKnownQuality = 930,
+      ProcessingTimes = new double[,] {
+          { 29, 78,  9, 36, 49, 11, 62, 56, 44, 21 },
+          { 43, 90, 75, 11, 69, 28, 46, 46, 72, 30 },
+          { 91, 85, 39, 74, 90, 10, 12, 89, 45, 33 },
+          { 81, 95, 71, 99,  9, 52, 85, 98, 22, 43 },
+          { 14,  6, 22, 61, 26, 69, 21, 49, 72, 53 },
+          { 84,  2, 52, 95, 48, 72, 47, 65,  6, 25 },
+          { 46, 37, 61, 13, 32, 21, 32, 89, 30, 55 },
+          { 31, 86, 46, 74, 32, 88, 19, 48, 36, 79 },
+          { 76, 69, 76, 51, 85, 11, 40, 89, 26, 74 },
+          { 85, 13, 61,  7, 64, 76, 47, 52, 90, 45 }
+        },
+      Demands = new int[,] {
+          { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 },
+          { 0, 2, 4, 9, 3, 1, 6, 5, 7, 8 },
+          { 1, 0, 3, 2, 8, 5, 7, 6, 9, 4 },
+          { 1, 2, 0, 4, 6, 8, 7, 3, 9, 5 },
+          { 2, 0, 1, 5, 3, 4, 8, 7, 9, 6 },
+          { 2, 1, 5, 3, 8, 9, 0, 6, 4, 7 },
+          { 1, 0, 3, 2, 6, 5, 9, 8, 7, 4 },
+          { 2, 0, 1, 5, 4, 6, 8, 9, 7, 3 },
+          { 0, 1, 3, 5, 2, 9, 6, 7, 4, 8 },
+          { 1, 0, 2, 6, 8, 9, 5, 3, 4, 7 }
+        }
+    };
+    #endregion
+
     #region Parameter Properties
     public ValueParameter<ItemList<Job>> JobDataParameter {
@@ -105,5 +135,5 @@
 
       InitializeOperators();
-      InitializeProblemInstance();
+      Load(DefaultInstance);
     }
 
@@ -121,35 +151,66 @@
       InitializeOperators();
     }
-
-    protected override void OnEvaluatorChanged() {
-      base.OnEvaluatorChanged();
+    #endregion
+
+    #region Problem Instance Handling
+    public void Load(JSSPData data) {
+      var jobData = new ItemList<Job>(data.Jobs);
+      for (int j = 0; j < data.Jobs; j++) {
+        var job = new Job(j, data.DueDates != null ? data.DueDates[j] : double.MaxValue);
+        for (int t = 0; t < data.Resources; t++) {
+          job.Tasks.Add(new Task(t, data.Demands[j, t], j, data.ProcessingTimes[j, t]));
+        }
+        jobData.Add(job);
+      }
+
+      if (data.BestKnownQuality.HasValue) BestKnownQuality = new DoubleValue(data.BestKnownQuality.Value);
+      else BestKnownQuality = null;
+      if (data.BestKnownSchedule != null) {
+        var enc = new JSMEncoding();
+        enc.JobSequenceMatrix = new ItemList<Permutation>(data.Resources);
+        for (int i = 0; i < data.Resources; i++) {
+          enc.JobSequenceMatrix[i] = new Permutation(PermutationTypes.Absolute, new int[data.Jobs]);
+          for (int j = 0; j < data.Jobs; j++) {
+            enc.JobSequenceMatrix[i][j] = data.BestKnownSchedule[i, j];
+          }
+        }
+        BestKnownSolution = new JSMDecoder().CreateScheduleFromEncoding(enc, jobData);
+        if (SolutionEvaluator is MeanTardinessEvaluator)
+          BestKnownQuality = new DoubleValue(MeanTardinessEvaluator.GetMeanTardiness(BestKnownSolution, jobData));
+        else if (SolutionEvaluator is MakespanEvaluator)
+          BestKnownQuality = new DoubleValue(MakespanEvaluator.GetMakespan(BestKnownSolution));
+      }
+
+      JobData = jobData;
+      Jobs = new IntValue(data.Jobs);
+      Resources = new IntValue(data.Resources);
+      DueDates = new BoolValue(data.DueDates != null);
+    }
+
+    public JSSPData Export() {
+      var result = new JSSPData {
+        Name = Name,
+        Description = Description,
+        Jobs = Jobs.Value,
+        Resources = Resources.Value,
+        ProcessingTimes = new double[Jobs.Value, Resources.Value],
+        Demands = new int[Jobs.Value, Resources.Value],
+        DueDates = (DueDates.Value ? new double[Jobs.Value] : null)
+      };
+
+      foreach (var job in JobData) {
+        var counter = 0;
+        if (DueDates.Value) result.DueDates[job.Index] = job.DueDate;
+        foreach (var task in job.Tasks) {
+          result.ProcessingTimes[task.JobNr, counter] = task.Duration;
+          result.Demands[task.JobNr, counter] = task.ResourceNr;
+          counter++;
+        }
+      }
+      return result;
     }
     #endregion
 
     #region Helpers
-    private void InitializeProblemInstance() {
-      Jobs = new IntValue(10);
-      Resources = new IntValue(10);
-      BestKnownQuality = new DoubleValue(930);
-      JobData = new ItemList<Job>();
-      List<string> data = new List<string>
-      {"0 29 1 78 2  9 3 36 4 49 5 11 6 62 7 56 8 44 9 21",
-       "0 43 2 90 4 75 9 11 3 69 1 28 6 46 5 46 7 72 8 30",
-       "1 91 0 85 3 39 2 74 8 90 5 10 7 12 6 89 9 45 4 33",
-       "1 81 2 95 0 71 4 99 6  9 8 52 7 85 3 98 9 22 5 43",
-       "2 14 0  6 1 22 5 61 3 26 4 69 8 21 7 49 9 72 6 53",
-       "2 84 1  2 5 52 3 95 8 48 9 72 0 47 6 65 4  6 7 25",
-       "1 46 0 37 3 61 2 13 6 32 5 21 9 32 8 89 7 30 4 55",
-       "2 31 0 86 1 46 5 74 4 32 6 88 8 19 9 48 7 36 3 79",
-       "0 76 1 69 3 76 5 51 2 85 9 11 6 40 7 89 4 26 8 74",
-       "1 85 0 13 2 61 6  7 8 64 9 76 5 47 3 52 4 90 7 45" };
-
-      int jobCount = 0;
-      foreach (string s in data) {
-        List<string> split = SplitString(s);
-        JobData.Add(CreateJobFromData(split, jobCount++));
-      }
-    }
-
     private void InitializeOperators() {
       Operators.Clear();
@@ -159,135 +220,20 @@
 
     private void ApplyEncoding() {
-      if (SolutionCreator.GetType().Equals(typeof(JSMRandomCreator))) {
+      if (SolutionCreator.GetType() == typeof(JSMRandomCreator)) {
         Operators.AddRange(ApplicationManager.Manager.GetInstances<IJSMOperator>());
-        JSMDecoder decoder = new JSMDecoder();
-        ((SchedulingEvaluationAlgorithm)this.EvaluatorParameter.ActualValue).InitializeOperatorGraph<JSMEncoding>(decoder);
-      } else {
-        if (SolutionCreator.GetType().Equals(typeof(PRVRandomCreator))) {
-          Operators.AddRange(ApplicationManager.Manager.GetInstances<IPRVOperator>());
-          PRVDecoder decoder = new PRVDecoder();
-          ((SchedulingEvaluationAlgorithm)this.EvaluatorParameter.ActualValue).InitializeOperatorGraph<PRVEncoding>(decoder);
-        } else {
-          if (SolutionCreator.GetType().Equals(typeof(PWRRandomCreator))) {
-            Operators.AddRange(ApplicationManager.Manager.GetInstances<IPWROperator>());
-            PWRDecoder decoder = new PWRDecoder();
-            ((SchedulingEvaluationAlgorithm)this.EvaluatorParameter.ActualValue).InitializeOperatorGraph<PWREncoding>(decoder);
-          } else {
-            if (SolutionCreator.GetType().Equals(typeof(DirectScheduleRandomCreator))) {
-              Operators.AddRange(ApplicationManager.Manager.GetInstances<IDirectScheduleOperator>());
-              ((SchedulingEvaluationAlgorithm)this.EvaluatorParameter.ActualValue).InitializeOperatorGraph<Schedule>();
-            }
-          }
-        }
-      }
-    }
-    #endregion
-
-    #region Importmethods
-    private List<string> SplitString(string line) {
-      if (line == null)
-        return null;
-      List<string> data = new List<string>(line.Split(' '));
-      List<string> result = new List<string>();
-
-      foreach (string s in data) {
-        if (!String.IsNullOrEmpty(s) && s != "" && s != " ")
-          result.Add(s);
-      }
-
-      return result;
-    }
-    private int[] GetIntArray(List<string> data) {
-      int[] arr = new int[data.Count];
-      for (int i = 0; i < data.Count; i++) {
-        arr[i] = Int32.Parse(data[i]);
-      }
-      return arr;
-    }
-    private Job CreateJobFromData(List<string> data, int jobCount) {
-      double dueDate = 0;
-      int dataCount = data.Count;
-      if (DueDates.Value) {
-        dueDate = Double.Parse(data[data.Count - 1]);
-        dataCount--;
-      }
-      Job j = new Job(jobCount, dueDate);
-      for (int i = 0; i < dataCount; i++) {
-        Task t = new Task(i / 2, Int32.Parse(data[i]), jobCount, Double.Parse(data[i + 1]));
-        j.Tasks.Add(t);
-        i++;
-      }//for
-      return j;
-    }
-
-    public void ImportFromORLibrary(string fileName) {
-      if (!File.Exists(fileName))
-        return;
-      StreamReader problemFile = new StreamReader(fileName);
-      //assures that the parser only reads the first problem instance given in the file
-      bool problemFound = false;
-
-      JobData = new ItemList<Job>();
-
-      while (!problemFile.EndOfStream && !problemFound) {
-        string line = problemFile.ReadLine();
-        List<string> data = SplitString(line);
-        if (data.Count > 0 && ((int)data[0][0] >= 48 && (int)data[0][0] <= 57)) {
-          int jobCount = 0;
-          Jobs = new IntValue(Int32.Parse(data[0]));
-          Resources = new IntValue(Int32.Parse(data[1]));
-          //data[2] = bestKnownQuality (double)
-          //data[3] = dueDates (0|1)
-          DueDates.Value = false;
-          if (data.Count > 2)
-            BestKnownQualityParameter.ActualValue = new DoubleValue(Double.Parse(data[2]));
-          if (data.Count > 3 && data[3] == "1")
-            DueDates.Value = true;
-          line = problemFile.ReadLine();
-          data = SplitString(line);
-          while (!problemFile.EndOfStream && data.Count > 0 && ((int)data[0][0] >= 48 && (int)data[0][0] <= 57)) {
-            Job j = CreateJobFromData(data, jobCount);
-            this.JobData.Add(j);
-            jobCount++;
-            line = problemFile.ReadLine();
-            data = SplitString(line);
-          }//while
-          problemFound = true;
-        }//if
-      }//while
-      problemFile.Close();
-    }
-
-    public void ImportJSMSolution(string fileName) {
-      if (!File.Exists(fileName))
-        return;
-      StreamReader solutionFile = new StreamReader(fileName);
-      //assures that the parser only reads the first solution instance given in the file
-      bool solutionFound = false;
-      JSMEncoding solution = new JSMEncoding();
-      while (!solutionFile.EndOfStream && !solutionFound) {
-
-        string line = solutionFile.ReadLine();
-        List<string> data = SplitString(line);
-        if (data.Count > 0 && ((int)data[0][0] >= 48 && (int)data[0][0] <= 57)) {
-          if (data.Count > 2)
-            BestKnownQualityParameter.ActualValue = new DoubleValue(Double.Parse(data[2]));
-          line = solutionFile.ReadLine();
-          data = SplitString(line);
-          while (data != null && data.Count > 0 && ((int)data[0][0] >= 48 && (int)data[0][0] <= 57)) {
-            Permutation p = new Permutation(PermutationTypes.Absolute, GetIntArray(data));
-            solution.JobSequenceMatrix.Add(p);
-
-            line = solutionFile.ReadLine();
-            data = SplitString(line);
-          }//while
-          solutionFound = true;
-        }//if
-      }//while
-      solutionFile.Close();
-
-      JSMDecoder decoder = new JSMDecoder();
-      Schedule result = decoder.CreateScheduleFromEncoding(solution, JobData);
-      BestKnownSolution = result;
+        var decoder = new JSMDecoder();
+        ((SchedulingEvaluationAlgorithm)EvaluatorParameter.ActualValue).InitializeOperatorGraph(decoder);
+      } else if (SolutionCreator.GetType() == typeof(PRVRandomCreator)) {
+        Operators.AddRange(ApplicationManager.Manager.GetInstances<IPRVOperator>());
+        var decoder = new PRVDecoder();
+        ((SchedulingEvaluationAlgorithm)EvaluatorParameter.ActualValue).InitializeOperatorGraph(decoder);
+      } else if (SolutionCreator.GetType() == typeof(PWRRandomCreator)) {
+        Operators.AddRange(ApplicationManager.Manager.GetInstances<IPWROperator>());
+        var decoder = new PWRDecoder();
+        ((SchedulingEvaluationAlgorithm)EvaluatorParameter.ActualValue).InitializeOperatorGraph(decoder);
+      } else if (SolutionCreator.GetType() == typeof(DirectScheduleRandomCreator)) {
+        Operators.AddRange(ApplicationManager.Manager.GetInstances<IDirectScheduleOperator>());
+        ((SchedulingEvaluationAlgorithm)EvaluatorParameter.ActualValue).InitializeOperatorGraph<Schedule>();
+      }
     }
     #endregion
Index: /trunk/sources/HeuristicLab.Problems.Scheduling/3.3/Plugin.cs.frame
===================================================================
--- /trunk/sources/HeuristicLab.Problems.Scheduling/3.3/Plugin.cs.frame	(revision 8881)
+++ /trunk/sources/HeuristicLab.Problems.Scheduling/3.3/Plugin.cs.frame	(revision 8882)
@@ -37,4 +37,5 @@
   [PluginDependency("HeuristicLab.Parameters", "3.3")]
   [PluginDependency("HeuristicLab.Persistence", "3.3")]
+  [PluginDependency("HeuristicLab.Problems.Instances", "3.3")]
   public class HeuristicLabProblemsSchedulingPlugin : PluginBase {
   }
Index: /trunk/sources/HeuristicLab.Tests/HeuristicLab.Tests.csproj
===================================================================
--- /trunk/sources/HeuristicLab.Tests/HeuristicLab.Tests.csproj	(revision 8881)
+++ /trunk/sources/HeuristicLab.Tests/HeuristicLab.Tests.csproj	(revision 8882)
@@ -230,4 +230,7 @@
     <Reference Include="HeuristicLab.Problems.Instances.QAPLIB-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
       <HintPath>..\bin\HeuristicLab.Problems.Instances.QAPLIB-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Problems.Instances.Scheduling-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
+      <HintPath>..\bin\HeuristicLab.Problems.Instances.Scheduling-3.3.dll</HintPath>
     </Reference>
     <Reference Include="HeuristicLab.Problems.Instances.TSPLIB-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
