Index: branches/Scheduling/HeuristicLab 3.3.sln
===================================================================
--- branches/Scheduling/HeuristicLab 3.3.sln	(revision 6297)
+++ branches/Scheduling/HeuristicLab 3.3.sln	(revision 6364)
@@ -402,4 +402,6 @@
 EndProject
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.Encodings.SchedulingEncoding-3.3", "HeuristicLab.Encodings.SchedulingEncoding\3.3\HeuristicLab.Encodings.SchedulingEncoding-3.3.csproj", "{17F3EF80-B2C3-4B8D-A4D5-BE9CE3BA2606}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.Encodings.SchedulingEncoding.Views-3.3", "HeuristicLab.Encodings.SchedulingEncoding.Views\3.3\HeuristicLab.Encodings.SchedulingEncoding.Views-3.3.csproj", "{0C378762-D5DB-488A-8931-2BA42B1B7CBF}"
 EndProject
 Global
@@ -1880,4 +1882,12 @@
 		{17F3EF80-B2C3-4B8D-A4D5-BE9CE3BA2606}.Release|x64.ActiveCfg = Release|Any CPU
 		{17F3EF80-B2C3-4B8D-A4D5-BE9CE3BA2606}.Release|x86.ActiveCfg = Release|Any CPU
+		{0C378762-D5DB-488A-8931-2BA42B1B7CBF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{0C378762-D5DB-488A-8931-2BA42B1B7CBF}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{0C378762-D5DB-488A-8931-2BA42B1B7CBF}.Debug|x64.ActiveCfg = Debug|Any CPU
+		{0C378762-D5DB-488A-8931-2BA42B1B7CBF}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{0C378762-D5DB-488A-8931-2BA42B1B7CBF}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{0C378762-D5DB-488A-8931-2BA42B1B7CBF}.Release|Any CPU.Build.0 = Release|Any CPU
+		{0C378762-D5DB-488A-8931-2BA42B1B7CBF}.Release|x64.ActiveCfg = Release|Any CPU
+		{0C378762-D5DB-488A-8931-2BA42B1B7CBF}.Release|x86.ActiveCfg = Release|Any CPU
 	EndGlobalSection
 	GlobalSection(SolutionProperties) = preSolution
Index: branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding.Views/3.3/GanttChart.Designer.cs
===================================================================
--- branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding.Views/3.3/GanttChart.Designer.cs	(revision 6364)
+++ branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding.Views/3.3/GanttChart.Designer.cs	(revision 6364)
@@ -0,0 +1,74 @@
+﻿namespace HeuristicLab.Encodings.SchedulingEncoding.Views {
+  partial class GanttChart {
+    /// <summary> 
+    /// Required designer variable.
+    /// </summary>
+    private System.ComponentModel.IContainer components = null;
+
+    /// <summary> 
+    /// Clean up any resources being used.
+    /// </summary>
+    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+    protected override void Dispose(bool disposing) {
+      if (disposing && (components != null)) {
+        components.Dispose();
+      }
+      base.Dispose(disposing);
+    }
+
+    #region Component Designer generated code
+
+    /// <summary> 
+    /// Required method for Designer support - do not modify 
+    /// the contents of this method with the code editor.
+    /// </summary>
+    private void InitializeComponent() {
+      System.Windows.Forms.DataVisualization.Charting.ChartArea chartArea1 = new System.Windows.Forms.DataVisualization.Charting.ChartArea();
+      System.Windows.Forms.DataVisualization.Charting.Legend legend1 = new System.Windows.Forms.DataVisualization.Charting.Legend();
+      System.Windows.Forms.DataVisualization.Charting.Series series1 = new System.Windows.Forms.DataVisualization.Charting.Series();
+      this.chart = new HeuristicLab.Visualization.ChartControlsExtensions.EnhancedChart();
+      ((System.ComponentModel.ISupportInitialize)(this.chart)).BeginInit();
+      this.SuspendLayout();
+      // 
+      // chart
+      // 
+      this.chart.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)));
+      chartArea1.Name = "ChartArea1";
+      this.chart.ChartAreas.Add(chartArea1);
+      legend1.Name = "Legend";
+      this.chart.Legends.Add(legend1);
+      this.chart.Location = new System.Drawing.Point(0, 0);
+      this.chart.Name = "chart";
+      series1.ChartArea = "ChartArea1";
+      series1.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.RangeBar;
+      series1.CustomProperties = "DrawingStyle=Cylinder";
+      series1.IsVisibleInLegend = false;
+      series1.Legend = "Legend";
+      series1.Name = "Series1";
+      series1.YValuesPerPoint = 2;
+      series1.YValueType = System.Windows.Forms.DataVisualization.Charting.ChartValueType.Time;
+      this.chart.Series.Add(series1);
+      this.chart.Size = new System.Drawing.Size(687, 347);
+      this.chart.TabIndex = 0;
+      this.chart.Text = "chart";
+      this.chart.MouseClick += new System.Windows.Forms.MouseEventHandler(this.chart_MouseClick);
+      // 
+      // GanttChart
+      // 
+      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+      this.Controls.Add(this.chart);
+      this.Name = "GanttChart";
+      this.Size = new System.Drawing.Size(687, 347);
+      ((System.ComponentModel.ISupportInitialize)(this.chart)).EndInit();
+      this.ResumeLayout(false);
+
+    }
+
+    #endregion
+
+    private Visualization.ChartControlsExtensions.EnhancedChart chart;
+  }
+}
Index: branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding.Views/3.3/GanttChart.cs
===================================================================
--- branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding.Views/3.3/GanttChart.cs	(revision 6364)
+++ branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding.Views/3.3/GanttChart.cs	(revision 6364)
@@ -0,0 +1,77 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Drawing;
+using System.Linq;
+using System.Windows.Forms;
+using System.Windows.Forms.DataVisualization.Charting;
+
+namespace HeuristicLab.Encodings.SchedulingEncoding.Views {
+  public partial class GanttChart : UserControl {
+
+    private IDictionary<int, Color> jobColors = new SortedDictionary<int, Color>();
+    private IDictionary<string, int> rowNames = new Dictionary<string, int>();
+    
+
+    public GanttChart() {
+      InitializeComponent();
+      chart.Series[0].YValueType = ChartValueType.Double;
+    }
+
+    public void AddJobColor(int jobNr) {
+      if (!jobColors.ContainsKey(jobNr)) {
+        Random r = new Random(jobNr + 1);
+        jobColors[jobNr] = Color.FromArgb (r.Next(256),r.Next(256),r.Next(256));
+        chart.Legends[0].CustomItems.Clear();
+        if (jobColors.Count > 1) {
+          int i = 0;
+          foreach (Color c in jobColors.Values) {
+            chart.Legends[0].CustomItems.Add(c, "Job#" + (i++));
+          }
+        }   
+      }
+    }
+
+    private void AddRowName(string rowName) {
+      if (!rowNames.ContainsKey(rowName)) {
+        int nextId = rowNames.Count == 0 ? 1 : rowNames.Values.Max() + 1;
+        rowNames.Add(rowName, nextId);
+      }
+    }
+
+    public void AddData(string rowName, int jobNr, double start, double end, string tooltip, bool showLabel = true) {
+      AddRowName(rowName);
+      var point = new DataPoint(rowNames[rowName], new double[] { start, end });
+      point.Color = jobColors[jobNr];
+      point.AxisLabel = rowName;
+      point.ToolTip = tooltip;
+      chart.Series[0].Points.Add(point);
+    }
+
+    public void Reset() {
+      chart.Series[0].Points.Clear();
+      jobColors.Clear();
+      chart.Legends[0].CustomItems.Clear();
+      rowNames.Clear();
+    }
+
+    void chart_MouseClick(object sender, MouseEventArgs e) {
+      var pos = e.Location;
+      var results = chart.HitTest(pos.X, pos.Y, false, ChartElementType.DataPoint);
+      foreach (DataPoint dp in chart.Series[0].Points) {
+        Color newColor = Color.FromArgb(255, dp.Color);
+        dp.Color = newColor;
+      }
+      foreach (var result in results) {
+        if (result.ChartElementType == ChartElementType.DataPoint) {
+          Color currentColor = chart.Series[0].Points[result.PointIndex].Color;
+          foreach (DataPoint dp in result.Series.Points) {
+            if (dp.Color != currentColor) {
+              Color newColor = Color.FromArgb(0, dp.Color);
+              dp.Color = newColor;
+            }
+          }
+        }
+      }
+    }
+  }
+}
Index: branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding.Views/3.3/GanttChart.resx
===================================================================
--- branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding.Views/3.3/GanttChart.resx	(revision 6364)
+++ branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding.Views/3.3/GanttChart.resx	(revision 6364)
@@ -0,0 +1,120 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=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>
+</root>
Index: branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding.Views/3.3/HeuristicLab.Encodings.SchedulingEncoding.Views-3.3.csproj
===================================================================
--- branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding.Views/3.3/HeuristicLab.Encodings.SchedulingEncoding.Views-3.3.csproj	(revision 6297)
+++ branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding.Views/3.3/HeuristicLab.Encodings.SchedulingEncoding.Views-3.3.csproj	(revision 6364)
@@ -40,4 +40,7 @@
     <Reference Include="System" />
     <Reference Include="System.Core" />
+    <Reference Include="System.Drawing" />
+    <Reference Include="System.Windows.Forms" />
+    <Reference Include="System.Windows.Forms.DataVisualization" />
     <Reference Include="System.Xml.Linq" />
     <Reference Include="System.Data.DataSetExtensions" />
@@ -47,6 +50,18 @@
   </ItemGroup>
   <ItemGroup>
+    <Compile Include="GanttChart.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Include="GanttChart.Designer.cs">
+      <DependentUpon>GanttChart.cs</DependentUpon>
+    </Compile>
     <Compile Include="Plugin.cs" />
     <Compile Include="Properties\AssemblyInfo.cs" />
+    <Compile Include="ScheduleView.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Include="ScheduleView.Designer.cs">
+      <DependentUpon>ScheduleView.cs</DependentUpon>
+    </Compile>
   </ItemGroup>
   <ItemGroup>
@@ -67,8 +82,16 @@
       <Name>HeuristicLab.Common-3.3</Name>
     </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Core.Views\3.3\HeuristicLab.Core.Views-3.3.csproj">
+      <Project>{E226881D-315F-423D-B419-A766FE0D8685}</Project>
+      <Name>HeuristicLab.Core.Views-3.3</Name>
+    </ProjectReference>
     <ProjectReference Include="..\..\HeuristicLab.Core\3.3\HeuristicLab.Core-3.3.csproj">
       <Project>{C36BD924-A541-4A00-AFA8-41701378DDC5}</Project>
       <Name>HeuristicLab.Core-3.3</Name>
     </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Data.Views\3.3\HeuristicLab.Data.Views-3.3.csproj">
+      <Project>{72104A0B-90E7-42F3-9ABE-9BBBADD4B943}</Project>
+      <Name>HeuristicLab.Data.Views-3.3</Name>
+    </ProjectReference>
     <ProjectReference Include="..\..\HeuristicLab.Data\3.3\HeuristicLab.Data-3.3.csproj">
       <Project>{BBAB9DF5-5EF3-4BA8-ADE9-B36E82114937}</Project>
@@ -83,8 +106,28 @@
       <Name>HeuristicLab.Encodings.PermutationEncoding-3.3</Name>
     </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Encodings.SchedulingEncoding\3.3\HeuristicLab.Encodings.SchedulingEncoding-3.3.csproj">
+      <Project>{17F3EF80-B2C3-4B8D-A4D5-BE9CE3BA2606}</Project>
+      <Name>HeuristicLab.Encodings.SchedulingEncoding-3.3</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Encodings.SymbolicExpressionTreeEncoding\3.4\HeuristicLab.Encodings.SymbolicExpressionTreeEncoding-3.4.csproj">
+      <Project>{06D4A186-9319-48A0-BADE-A2058D462EEA}</Project>
+      <Name>HeuristicLab.Encodings.SymbolicExpressionTreeEncoding-3.4</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.MainForm.WindowsForms\3.3\HeuristicLab.MainForm.WindowsForms-3.3.csproj">
+      <Project>{AB687BBE-1BFE-476B-906D-44237135431D}</Project>
+      <Name>HeuristicLab.MainForm.WindowsForms-3.3</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.MainForm\3.3\HeuristicLab.MainForm-3.3.csproj">
+      <Project>{3BD61258-31DA-4B09-89C0-4F71FEF5F05A}</Project>
+      <Name>HeuristicLab.MainForm-3.3</Name>
+    </ProjectReference>
     <ProjectReference Include="..\..\HeuristicLab.Operators\3.3\HeuristicLab.Operators-3.3.csproj">
       <Project>{23DA7FF4-D5B8-41B6-AA96-F0561D24F3EE}</Project>
       <Name>HeuristicLab.Operators-3.3</Name>
     </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Optimization.Views\3.3\HeuristicLab.Optimization.Views-3.3.csproj">
+      <Project>{662B4B15-8F4D-4AE5-B3EB-D91C215F5AF2}</Project>
+      <Name>HeuristicLab.Optimization.Views-3.3</Name>
+    </ProjectReference>
     <ProjectReference Include="..\..\HeuristicLab.Optimization\3.3\HeuristicLab.Optimization-3.3.csproj">
       <Project>{14AB8D24-25BC-400C-A846-4627AA945192}</Project>
@@ -103,4 +146,48 @@
       <Name>HeuristicLab.PluginInfrastructure-3.3</Name>
     </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Problems.DataAnalysis.Symbolic.Regression.Views\3.4\HeuristicLab.Problems.DataAnalysis.Symbolic.Regression.Views-3.4.csproj">
+      <Project>{20831A74-D18F-42D9-A667-1CE3AF53DF93}</Project>
+      <Name>HeuristicLab.Problems.DataAnalysis.Symbolic.Regression.Views-3.4</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Problems.DataAnalysis.Symbolic.Regression\3.4\HeuristicLab.Problems.DataAnalysis.Symbolic.Regression-3.4.csproj">
+      <Project>{5AC82412-911B-4FA2-A013-EDC5E3F3FCC2}</Project>
+      <Name>HeuristicLab.Problems.DataAnalysis.Symbolic.Regression-3.4</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Problems.DataAnalysis.Symbolic.Views\3.4\HeuristicLab.Problems.DataAnalysis.Symbolic.Views-3.4.csproj">
+      <Project>{7A2531CE-3F7C-4F13-BCCA-ED6DC27A7086}</Project>
+      <Name>HeuristicLab.Problems.DataAnalysis.Symbolic.Views-3.4</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Problems.DataAnalysis.Symbolic\3.4\HeuristicLab.Problems.DataAnalysis.Symbolic-3.4.csproj">
+      <Project>{3D28463F-EC96-4D82-AFEE-38BE91A0CA00}</Project>
+      <Name>HeuristicLab.Problems.DataAnalysis.Symbolic-3.4</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Problems.DataAnalysis.Views\3.4\HeuristicLab.Problems.DataAnalysis.Views-3.4.csproj">
+      <Project>{3E9E8944-44FF-40BB-A622-3A4A7DD0F198}</Project>
+      <Name>HeuristicLab.Problems.DataAnalysis.Views-3.4</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Problems.DataAnalysis\3.4\HeuristicLab.Problems.DataAnalysis-3.4.csproj">
+      <Project>{DF87C13E-A889-46FF-8153-66DCAA8C5674}</Project>
+      <Name>HeuristicLab.Problems.DataAnalysis-3.4</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Problems.Scheduling\3.3\HeuristicLab.Problems.Scheduling-3.3.csproj">
+      <Project>{2BF1D639-1A74-44ED-AAAD-41ECD395AD93}</Project>
+      <Name>HeuristicLab.Problems.Scheduling-3.3</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Problems.VehicleRouting\3.3\HeuristicLab.Problems.VehicleRouting-3.3.csproj">
+      <Project>{6410BDA6-3641-42B2-BABA-AA626E2F6F71}</Project>
+      <Name>HeuristicLab.Problems.VehicleRouting-3.3</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Visualization.ChartControlsExtensions\3.3\HeuristicLab.Visualization.ChartControlsExtensions-3.3.csproj">
+      <Project>{315BDA09-3F4F-49B3-9790-B37CFC1C5750}</Project>
+      <Name>HeuristicLab.Visualization.ChartControlsExtensions-3.3</Name>
+    </ProjectReference>
+  </ItemGroup>
+  <ItemGroup>
+    <EmbeddedResource Include="GanttChart.resx">
+      <DependentUpon>GanttChart.cs</DependentUpon>
+    </EmbeddedResource>
+    <EmbeddedResource Include="ScheduleView.resx">
+      <DependentUpon>ScheduleView.cs</DependentUpon>
+    </EmbeddedResource>
   </ItemGroup>
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
Index: branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding.Views/3.3/Plugin.cs
===================================================================
--- branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding.Views/3.3/Plugin.cs	(revision 6297)
+++ branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding.Views/3.3/Plugin.cs	(revision 6364)
@@ -22,8 +22,8 @@
 using HeuristicLab.PluginInfrastructure;
 
-namespace HeuristicLab.Encodings.SchedulingEncoding.View {
-  [Plugin("HeuristicLab.Encodings.SchedulingEncoding.View", "3.3.3.0")]
-  [PluginFile("HeuristicLab.Encodings.SchedulingEncoding.View-3.3.dll", PluginFileType.Assembly)]
-  public class HeuristicLabEncodingsSchedulingEncodingViewPlugin : PluginBase {
+namespace HeuristicLab.Encodings.SchedulingEncoding.Views {
+  [Plugin("HeuristicLab.Encodings.SchedulingEncoding.Views", "3.3.3.6297")]
+  [PluginFile("HeuristicLab.Encodings.SchedulingEncoding.Views-3.3.dll", PluginFileType.Assembly)]
+  public class HeuristicLabEncodingsSchedulingEncodingViewsPlugin : PluginBase {
   }
 }
Index: branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding.Views/3.3/Plugin.cs.frame
===================================================================
--- branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding.Views/3.3/Plugin.cs.frame	(revision 6297)
+++ branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding.Views/3.3/Plugin.cs.frame	(revision 6364)
@@ -22,8 +22,8 @@
 using HeuristicLab.PluginInfrastructure;
 
-namespace HeuristicLab.Encodings.SchedulingEncoding.View {
-  [Plugin("HeuristicLab.Encodings.SchedulingEncoding.View", "3.3.3.$WCREV$")]
-  [PluginFile("HeuristicLab.Encodings.SchedulingEncoding.View-3.3.dll", PluginFileType.Assembly)]
-  public class HeuristicLabEncodingsSchedulingEncodingViewPlugin : PluginBase {
+namespace HeuristicLab.Encodings.SchedulingEncoding.Views {
+  [Plugin("HeuristicLab.Encodings.SchedulingEncoding.Views", "3.3.3.$WCREV$")]
+  [PluginFile("HeuristicLab.Encodings.SchedulingEncoding.Views-3.3.dll", PluginFileType.Assembly)]
+  public class HeuristicLabEncodingsSchedulingEncodingViewsPlugin : PluginBase {
   }
 }
Index: branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding.Views/3.3/ScheduleView.Designer.cs
===================================================================
--- branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding.Views/3.3/ScheduleView.Designer.cs	(revision 6364)
+++ branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding.Views/3.3/ScheduleView.Designer.cs	(revision 6364)
@@ -0,0 +1,72 @@
+﻿namespace HeuristicLab.Encodings.SchedulingEncoding.Views {
+  partial class ScheduleView {
+    /// <summary> 
+    /// Required designer variable.
+    /// </summary>
+    private System.ComponentModel.IContainer components = null;
+
+    /// <summary> 
+    /// Clean up any resources being used.
+    /// </summary>
+    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+    protected override void Dispose(bool disposing) {
+      if (disposing && (components != null)) {
+        components.Dispose();
+      }
+      base.Dispose(disposing);
+    }
+
+    #region Component Designer generated code
+
+    /// <summary> 
+    /// Required method for Designer support - do not modify 
+    /// the contents of this method with the code editor.
+    /// </summary>
+    private void InitializeComponent() {
+      this.ganttChart = new GanttChart();
+      ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).BeginInit();
+      this.SuspendLayout();
+      // 
+      // nameTextBox
+      // 
+      this.errorProvider.SetIconAlignment(this.nameTextBox, System.Windows.Forms.ErrorIconAlignment.MiddleLeft);
+      this.errorProvider.SetIconPadding(this.nameTextBox, 2);
+      this.nameTextBox.Size = new System.Drawing.Size(446, 20);
+      // 
+      // infoLabel
+      // 
+      this.infoLabel.Location = new System.Drawing.Point(510, 3);
+      // 
+      // 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(6, 22);
+      this.ganttChart.Name = "ganttChart";
+      this.ganttChart.Size = new System.Drawing.Size(520, 320);
+      this.ganttChart.TabIndex = 3;
+      // 
+      // ScheduleView
+      // 
+      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+      this.Controls.Add(this.ganttChart);
+      this.Name = "ScheduleView";
+      this.Size = new System.Drawing.Size(529, 345);
+      this.Controls.SetChildIndex(this.ganttChart, 0);
+      this.Controls.SetChildIndex(this.nameLabel, 0);
+      this.Controls.SetChildIndex(this.nameTextBox, 0);
+      this.Controls.SetChildIndex(this.infoLabel, 0);
+      ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).EndInit();
+      this.ResumeLayout(false);
+      this.PerformLayout();
+
+    }
+
+    #endregion
+
+    private GanttChart ganttChart;
+
+  }
+}
Index: branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding.Views/3.3/ScheduleView.cs
===================================================================
--- branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding.Views/3.3/ScheduleView.cs	(revision 6364)
+++ branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding.Views/3.3/ScheduleView.cs	(revision 6364)
@@ -0,0 +1,130 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2011 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Drawing;
+using System.Data;
+using System.Linq;
+using System.Text;
+using System.Windows.Forms;
+using HeuristicLab.Core.Views;
+using HeuristicLab.MainForm;
+using HeuristicLab.Core;
+using HeuristicLab.Encodings.SchedulingEncoding;
+
+namespace HeuristicLab.Encodings.SchedulingEncoding.Views {
+  [View("Schedule View")]
+  [Content(typeof(Schedule), true)]
+  public partial class ScheduleView : NamedItemView {
+    public ScheduleView() {
+      InitializeComponent();
+    }
+
+
+    protected override void DeregisterContentEvents() {
+      Content.QualityChanged -= new EventHandler(Content_QualityChanged);
+      Content.ResourcesChanged -= new EventHandler(Content_ResourcesChanged);
+
+      base.DeregisterContentEvents();
+    }
+    protected override void RegisterContentEvents() {
+      base.RegisterContentEvents();
+      Content.QualityChanged += new EventHandler(Content_QualityChanged);
+      Content.ResourcesChanged += new EventHandler(Content_ResourcesChanged);
+    }
+
+
+    public new Schedule Content {
+      get { return (Schedule)base.Content; }
+      set { base.Content = value; }
+    }
+
+    protected override void OnContentChanged() {
+      base.OnContentChanged();
+      if (Content == null) {
+        ResetGanttChart();
+      } else {
+        FillGanttChart(Content);
+      }
+    }
+
+    private void ResetGanttChart() {
+      ganttChart.Reset();
+    }
+
+    private void FillGanttChart(Schedule content) {
+      ResetGanttChart();
+      int resCount = 0;
+      Random random = new Random (1);
+      foreach (Resource r in content.Resources) {
+        foreach (ScheduledTask t in content.Resources[resCount].Tasks) {
+          int categoryNr = 0;
+          string toolTip = "Task#";// +t.TaskNr;
+          string categoryName = "ScheduleTasks";
+          if (t is ScheduledTask) {
+            categoryNr = ((ScheduledTask)t).JobNr.Value;
+            categoryName = "Job" + categoryNr;
+            toolTip = categoryName + " - " + toolTip;
+          } 
+          ganttChart.AddJobColor(categoryNr);
+          ganttChart.AddData("Resource" + r.Index, 
+            categoryNr, 
+            t.StartTime.Value, 
+            t.EndTime.Value, 
+            toolTip);
+        }
+        resCount++;
+      }
+    }
+
+    protected override void SetEnabledStateOfControls() {
+      base.SetEnabledStateOfControls();
+      ganttChart.Enabled = Content != null;
+    }
+
+
+    private void Content_QualityChanged(object sender, EventArgs e) {
+      if (InvokeRequired)
+        Invoke(new EventHandler(Content_QualityChanged), sender, e);
+      else {
+        if (Content == null) {
+          ResetGanttChart();
+        } else {
+          FillGanttChart(Content);
+        }
+      }
+    }
+
+    private void Content_ResourcesChanged(object sender, EventArgs e) {
+      if (InvokeRequired)
+        Invoke(new EventHandler(Content_ResourcesChanged), sender, e);
+      else {
+        if (Content == null) {
+          ResetGanttChart();
+        } else {
+          FillGanttChart(Content);
+        }
+      }
+    }
+  }
+}
Index: branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding.Views/3.3/ScheduleView.resx
===================================================================
--- branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding.Views/3.3/ScheduleView.resx	(revision 6364)
+++ branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding.Views/3.3/ScheduleView.resx	(revision 6364)
@@ -0,0 +1,126 @@
+﻿<?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: branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/HeuristicLab.Encodings.SchedulingEncoding-3.3.csproj
===================================================================
--- branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/HeuristicLab.Encodings.SchedulingEncoding-3.3.csproj	(revision 6297)
+++ branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/HeuristicLab.Encodings.SchedulingEncoding-3.3.csproj	(revision 6364)
@@ -47,4 +47,5 @@
   </ItemGroup>
   <ItemGroup>
+    <Compile Include="Interfaces\ISchedulingEvaluationAlgorithm.cs" />
     <Compile Include="Interfaces\IJSMOperator.cs" />
     <Compile Include="Interfaces\IPRVOperator.cs" />
@@ -82,5 +83,4 @@
     <Compile Include="PriorityRulesVector\PRVRandomCreator.cs" />
     <Compile Include="Properties\AssemblyInfo.cs" />
-    <Compile Include="ScheduleEncoding\IndexedScheduledTaskList.cs" />
     <Compile Include="ScheduleEncoding\Resource.cs" />
     <Compile Include="ScheduleEncoding\Schedule.cs" />
@@ -89,5 +89,4 @@
     <Compile Include="SchedulingCrossover.cs" />
     <Compile Include="SchedulingDecoder.cs" />
-    <Compile Include="SchedulingEncodingTypes.cs" />
     <Compile Include="SchedulingManipulator.cs" />
   </ItemGroup>
@@ -148,4 +147,13 @@
   <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
+SubWCRev "%25ProjectDir%25\" "%25ProjectDir%25\Plugin.cs.frame" "%25ProjectDir%25\Plugin.cs"</PreBuildEvent>
+  </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.
Index: branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/Interfaces/ISchedulingEvaluationAlgorithm.cs
===================================================================
--- branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/Interfaces/ISchedulingEvaluationAlgorithm.cs	(revision 6364)
+++ branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/Interfaces/ISchedulingEvaluationAlgorithm.cs	(revision 6364)
@@ -0,0 +1,10 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using HeuristicLab.Optimization;
+
+namespace HeuristicLab.Encodings.SchedulingEncoding.Interfaces {
+  public interface ISchedulingEvaluationAlgorithm : ISingleObjectiveEvaluator {
+  }
+}
Index: branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/JobSequenceMatrix/JSMEncoding.cs
===================================================================
--- branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/JobSequenceMatrix/JSMEncoding.cs	(revision 6297)
+++ branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/JobSequenceMatrix/JSMEncoding.cs	(revision 6364)
@@ -32,5 +32,5 @@
 
 namespace HeuristicLab.Encodings.SchedulingEncoding.JobSequenceMatrix {
-  [Item("Job Sequencing Matrix Encoding", "Represents a solution for a standard JobShop Scheduling Problem.")]
+  [Item("Job Sequence Matrix Encoding", "Represents a solution for a standard JobShop Scheduling Problem.")]
   [StorableClass]
   public class JSMEncoding : ParameterizedNamedItem, ISchedulingEncoding{
Index: branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/JobSequenceMatrix/JSMRandomCreator.cs
===================================================================
--- branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/JobSequenceMatrix/JSMRandomCreator.cs	(revision 6297)
+++ branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/JobSequenceMatrix/JSMRandomCreator.cs	(revision 6364)
@@ -34,5 +34,5 @@
 
 namespace HeuristicLab.Encodings.SchedulingEncoding.JobSequenceMatrix {
-  [Item("Job Sequencing Matrix Creator", "Creator class used to create Job Sequencing Matrix solutions for standard JobShop scheduling problems.")]
+  [Item("Job Sequence Matrix Creator", "Creator class used to create Job Sequence Matrix solutions for standard JobShop scheduling problems.")]
   [StorableClass]
   public class JSMRandomCreator : SchedulingCreator<JSMEncoding>, IStochasticOperator {
Index: branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/JobSequenceMatrix/Manipulators/JSMManipulator.cs
===================================================================
--- branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/JobSequenceMatrix/Manipulators/JSMManipulator.cs	(revision 6297)
+++ branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/JobSequenceMatrix/Manipulators/JSMManipulator.cs	(revision 6364)
@@ -29,5 +29,5 @@
 
 namespace HeuristicLab.Encodings.SchedulingEncoding.JobSequenceMatrix.Manipulators {
-  [Item("AlbaManipulator", "An operator which manipulates a VRP representation.")]
+  [Item("JSMManipulator", "An operator which manipulates a JSM representation.")]
   [StorableClass]
   public abstract class JSMManipulator : SchedulingManipulator<JSMEncoding>, IJSMOperator {
Index: branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/JobSequenceMatrix/Manipulators/JSMShiftChangeManipulator.cs
===================================================================
--- branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/JobSequenceMatrix/Manipulators/JSMShiftChangeManipulator.cs	(revision 6297)
+++ branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/JobSequenceMatrix/Manipulators/JSMShiftChangeManipulator.cs	(revision 6364)
@@ -31,5 +31,5 @@
 namespace HeuristicLab.Encodings.SchedulingEncoding.JobSequenceMatrix.Manipulators {
 
-  [Item("JSM Shift Change Manipulator", "Represents a manipulation operation inserting parts of the individual at another position.")]
+  [Item("JSM Shift Change Manipulator", "Represents a manipulation operation where the operations of a randomly determined job are shifted in one direction for all resources.")]
   [StorableClass]
   public class JSMShiftChangeManipulator : JSMManipulator {
Index: branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/JobSequenceMatrix/Manipulators/JSMSwapManipulator.cs
===================================================================
--- branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/JobSequenceMatrix/Manipulators/JSMSwapManipulator.cs	(revision 6297)
+++ branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/JobSequenceMatrix/Manipulators/JSMSwapManipulator.cs	(revision 6364)
@@ -31,5 +31,5 @@
 namespace HeuristicLab.Encodings.SchedulingEncoding.JobSequenceMatrix.Manipulators {
 
-  [Item("JSM Swap Manipulator", "Represents a manipulation operation inserting parts of the individual at another position.")]
+  [Item("JSM Swap Manipulator", "Represents a manipulation operation swapping parts of the individual.")]
   [StorableClass]
   public class JSMSwapManipulator : JSMManipulator {
Index: branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/Plugin.cs
===================================================================
--- branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/Plugin.cs	(revision 6297)
+++ branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/Plugin.cs	(revision 6364)
@@ -23,5 +23,5 @@
 
 namespace HeuristicLab.Encodings.SchedulingEncoding {
-  [Plugin("HeuristicLab.Encodings.SchedulingEncoding", "3.3.3.6266")]
+  [Plugin("HeuristicLab.Encodings.SchedulingEncoding", "3.3.3.6294")]
   [PluginFile("HeuristicLab.Encodings.SchedulingEncoding-3.3.dll", PluginFileType.Assembly)]
   public class HeuristicLabEncodingsSchedulingEncodingPlugin : PluginBase {
Index: branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/ScheduleEncoding/IndexedScheduledTaskList.cs
===================================================================
--- branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/ScheduleEncoding/IndexedScheduledTaskList.cs	(revision 6297)
+++ 	(revision )
@@ -1,84 +1,0 @@
-﻿#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2011 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
- *
- * This file is part of HeuristicLab.
- *
- * HeuristicLab is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * HeuristicLab is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
- */
-#endregion
-
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using HeuristicLab.Core;
-using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
-using HeuristicLab.Common;
-using HeuristicLab.Parameters;
-using HeuristicLab.Data;
-
-namespace HeuristicLab.Encodings.SchedulingEncoding {
-  [Item("Indexed Tasklist", "Represents a list of tasks.")]
-  [StorableClass]
-  public class IndexedScheduledTaskList : ParameterizedNamedItem {
-    [StorableConstructor]
-    protected IndexedScheduledTaskList(bool deserializing) : base(deserializing) { }
-    protected IndexedScheduledTaskList(IndexedScheduledTaskList original, Cloner cloner)
-      : base(original, cloner) {
-      this.Index = cloner.Clone(original.Index);
-      this.Tasks = cloner.Clone(original.Tasks);
-    }
-    public override IDeepCloneable Clone(Cloner cloner) {
-      return new IndexedScheduledTaskList(this, cloner);
-    }
-
-
-    public IntValue Index {
-      get;
-      set;
-    }
-    public ItemList<ScheduledTask> Tasks {
-      get;
-      set;
-    }
-
-
-    public DoubleValue TotalDuration {
-      get {
-        double result = 0;
-        foreach (ScheduledTask t in Tasks) {
-          if (t.EndTime.Value > result)
-            result = t.EndTime.Value;
-        }
-        return new DoubleValue(result);
-      }
-    }
-
-    public IndexedScheduledTaskList (IntValue index) : base (){
-      Index = index;
-      Tasks = new ItemList<ScheduledTask>();
-    }
-
-    public override string ToString() {
-      StringBuilder sb = new StringBuilder();
-      sb.Append("TaskList#" + Index + " [ ");
-      foreach (ScheduledTask t in Tasks) {
-        sb.Append(t.ToString() + " ");
-      }
-      sb.Append("]");
-      return sb.ToString();
-    }
-  }
-}
Index: branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/ScheduleEncoding/Resource.cs
===================================================================
--- branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/ScheduleEncoding/Resource.cs	(revision 6297)
+++ branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/ScheduleEncoding/Resource.cs	(revision 6364)
@@ -33,9 +33,11 @@
   [Item("Resource Class", "Represents a resource used in scheduling problems.")]
   [StorableClass]
-  public class Resource : IndexedScheduledTaskList {
+  public class Resource : Item {
     [StorableConstructor]
     protected Resource(bool deserializing) : base(deserializing) { }
     protected Resource(Resource original, Cloner cloner)
       : base(original, cloner) {
+        this.Index = cloner.Clone(original.Index);
+        this.Tasks = cloner.Clone(original.Tasks);
     }
     public override IDeepCloneable Clone(Cloner cloner) {
@@ -43,5 +45,29 @@
     }
 
-    public Resource(IntValue index) : base (index) { }
+    public Resource(IntValue index) : base () {
+      Index = index;
+      Tasks = new ItemList<ScheduledTask>();
+    }
+
+    public IntValue Index {
+      get;
+      set;
+    }
+    public ItemList<ScheduledTask> Tasks {
+      get;
+      set;
+    }
+
+
+    public DoubleValue TotalDuration {
+      get {
+        double result = 0;
+        foreach (ScheduledTask t in Tasks) {
+          if (t.EndTime.Value > result)
+            result = t.EndTime.Value;
+        }
+        return new DoubleValue(result);
+      }
+    }
 
     public override string ToString() {
Index: branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/SchedulingEncodingTypes.cs
===================================================================
--- branches/Scheduling/HeuristicLab.Encodings.SchedulingEncoding/3.3/SchedulingEncodingTypes.cs	(revision 6297)
+++ 	(revision )
@@ -1,12 +1,0 @@
-﻿using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-
-namespace HeuristicLab.Encodings.SchedulingEncoding {
-  public enum SchedulingEncodingTypes {
-    JSMEncoding,
-    PRVEncoding,
-    PWREncoding
-  }
-}
Index: branches/Scheduling/HeuristicLab.Problems.Scheduling.Views/3.3/GanttChart.Designer.cs
===================================================================
--- branches/Scheduling/HeuristicLab.Problems.Scheduling.Views/3.3/GanttChart.Designer.cs	(revision 6297)
+++ 	(revision )
@@ -1,74 +1,0 @@
-﻿namespace HeuristicLab.Problems.Scheduling.Views {
-  partial class GanttChart {
-    /// <summary> 
-    /// Required designer variable.
-    /// </summary>
-    private System.ComponentModel.IContainer components = null;
-
-    /// <summary> 
-    /// Clean up any resources being used.
-    /// </summary>
-    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
-    protected override void Dispose(bool disposing) {
-      if (disposing && (components != null)) {
-        components.Dispose();
-      }
-      base.Dispose(disposing);
-    }
-
-    #region Component Designer generated code
-
-    /// <summary> 
-    /// Required method for Designer support - do not modify 
-    /// the contents of this method with the code editor.
-    /// </summary>
-    private void InitializeComponent() {
-      System.Windows.Forms.DataVisualization.Charting.ChartArea chartArea1 = new System.Windows.Forms.DataVisualization.Charting.ChartArea();
-      System.Windows.Forms.DataVisualization.Charting.Legend legend1 = new System.Windows.Forms.DataVisualization.Charting.Legend();
-      System.Windows.Forms.DataVisualization.Charting.Series series1 = new System.Windows.Forms.DataVisualization.Charting.Series();
-      this.chart = new HeuristicLab.Visualization.ChartControlsExtensions.EnhancedChart();
-      ((System.ComponentModel.ISupportInitialize)(this.chart)).BeginInit();
-      this.SuspendLayout();
-      // 
-      // chart
-      // 
-      this.chart.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)));
-      chartArea1.Name = "ChartArea1";
-      this.chart.ChartAreas.Add(chartArea1);
-      legend1.Name = "Legend";
-      this.chart.Legends.Add(legend1);
-      this.chart.Location = new System.Drawing.Point(0, 0);
-      this.chart.Name = "chart";
-      series1.ChartArea = "ChartArea1";
-      series1.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.RangeBar;
-      series1.CustomProperties = "DrawingStyle=Cylinder";
-      series1.IsVisibleInLegend = false;
-      series1.Legend = "Legend";
-      series1.Name = "Series1";
-      series1.YValuesPerPoint = 2;
-      series1.YValueType = System.Windows.Forms.DataVisualization.Charting.ChartValueType.Time;
-      this.chart.Series.Add(series1);
-      this.chart.Size = new System.Drawing.Size(687, 347);
-      this.chart.TabIndex = 0;
-      this.chart.Text = "chart";
-      this.chart.MouseClick += new System.Windows.Forms.MouseEventHandler(this.chart_MouseClick);
-      // 
-      // GanttChart
-      // 
-      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
-      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
-      this.Controls.Add(this.chart);
-      this.Name = "GanttChart";
-      this.Size = new System.Drawing.Size(687, 347);
-      ((System.ComponentModel.ISupportInitialize)(this.chart)).EndInit();
-      this.ResumeLayout(false);
-
-    }
-
-    #endregion
-
-    private Visualization.ChartControlsExtensions.EnhancedChart chart;
-  }
-}
Index: branches/Scheduling/HeuristicLab.Problems.Scheduling.Views/3.3/GanttChart.cs
===================================================================
--- branches/Scheduling/HeuristicLab.Problems.Scheduling.Views/3.3/GanttChart.cs	(revision 6297)
+++ 	(revision )
@@ -1,77 +1,0 @@
-﻿using System;
-using System.Collections.Generic;
-using System.Drawing;
-using System.Linq;
-using System.Windows.Forms;
-using System.Windows.Forms.DataVisualization.Charting;
-
-namespace HeuristicLab.Problems.Scheduling.Views {
-  public partial class GanttChart : UserControl {
-
-    private IDictionary<int, Color> jobColors = new SortedDictionary<int, Color>();
-    private IDictionary<string, int> rowNames = new Dictionary<string, int>();
-    
-
-    public GanttChart() {
-      InitializeComponent();
-      chart.Series[0].YValueType = ChartValueType.Double;
-    }
-
-    public void AddJobColor(int jobNr) {
-      if (!jobColors.ContainsKey(jobNr)) {
-        Random r = new Random(jobNr + 1);
-        jobColors[jobNr] = Color.FromArgb (r.Next(256),r.Next(256),r.Next(256));
-        chart.Legends[0].CustomItems.Clear();
-        if (jobColors.Count > 1) {
-          int i = 0;
-          foreach (Color c in jobColors.Values) {
-            chart.Legends[0].CustomItems.Add(c, "Job#" + (i++));
-          }
-        }   
-      }
-    }
-
-    private void AddRowName(string rowName) {
-      if (!rowNames.ContainsKey(rowName)) {
-        int nextId = rowNames.Count == 0 ? 1 : rowNames.Values.Max() + 1;
-        rowNames.Add(rowName, nextId);
-      }
-    }
-
-    public void AddData(string rowName, int jobNr, double start, double end, string tooltip, bool showLabel = true) {
-      AddRowName(rowName);
-      var point = new DataPoint(rowNames[rowName], new double[] { start, end });
-      point.Color = jobColors[jobNr];
-      point.AxisLabel = rowName;
-      point.ToolTip = tooltip;
-      chart.Series[0].Points.Add(point);
-    }
-
-    public void Reset() {
-      chart.Series[0].Points.Clear();
-      jobColors.Clear();
-      chart.Legends[0].CustomItems.Clear();
-      rowNames.Clear();
-    }
-
-    void chart_MouseClick(object sender, MouseEventArgs e) {
-      var pos = e.Location;
-      var results = chart.HitTest(pos.X, pos.Y, false, ChartElementType.DataPoint);
-      foreach (DataPoint dp in chart.Series[0].Points) {
-        Color newColor = Color.FromArgb(255, dp.Color);
-        dp.Color = newColor;
-      }
-      foreach (var result in results) {
-        if (result.ChartElementType == ChartElementType.DataPoint) {
-          Color currentColor = chart.Series[0].Points[result.PointIndex].Color;
-          foreach (DataPoint dp in result.Series.Points) {
-            if (dp.Color != currentColor) {
-              Color newColor = Color.FromArgb(0, dp.Color);
-              dp.Color = newColor;
-            }
-          }
-        }
-      }
-    }
-  }
-}
Index: branches/Scheduling/HeuristicLab.Problems.Scheduling.Views/3.3/GanttChart.resx
===================================================================
--- branches/Scheduling/HeuristicLab.Problems.Scheduling.Views/3.3/GanttChart.resx	(revision 6297)
+++ 	(revision )
@@ -1,120 +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>
-</root>
Index: branches/Scheduling/HeuristicLab.Problems.Scheduling.Views/3.3/HeuristicLab.Problems.Scheduling.Views-3.3.csproj
===================================================================
--- branches/Scheduling/HeuristicLab.Problems.Scheduling.Views/3.3/HeuristicLab.Problems.Scheduling.Views-3.3.csproj	(revision 6297)
+++ branches/Scheduling/HeuristicLab.Problems.Scheduling.Views/3.3/HeuristicLab.Problems.Scheduling.Views-3.3.csproj	(revision 6364)
@@ -62,10 +62,4 @@
   </ItemGroup>
   <ItemGroup>
-    <Compile Include="GanttChart.cs">
-      <SubType>UserControl</SubType>
-    </Compile>
-    <Compile Include="GanttChart.Designer.cs">
-      <DependentUpon>GanttChart.cs</DependentUpon>
-    </Compile>
     <Compile Include="JobShopSchedulingProblemView.cs">
       <SubType>UserControl</SubType>
@@ -76,10 +70,4 @@
     <Compile Include="Plugin.cs" />
     <Compile Include="Properties\AssemblyInfo.cs" />
-    <Compile Include="ScheduleView.cs">
-      <SubType>UserControl</SubType>
-    </Compile>
-    <Compile Include="ScheduleView.Designer.cs">
-      <DependentUpon>ScheduleView.cs</DependentUpon>
-    </Compile>
     <Compile Include="SchedulingProblemImportDialog.cs">
       <SubType>Form</SubType>
@@ -126,4 +114,8 @@
       <Project>{DBECB8B0-B166-4133-BAF1-ED67C3FD7FCA}</Project>
       <Name>HeuristicLab.Encodings.PermutationEncoding-3.3</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Encodings.SchedulingEncoding.Views\3.3\HeuristicLab.Encodings.SchedulingEncoding.Views-3.3.csproj">
+      <Project>{0C378762-D5DB-488A-8931-2BA42B1B7CBF}</Project>
+      <Name>HeuristicLab.Encodings.SchedulingEncoding.Views-3.3</Name>
     </ProjectReference>
     <ProjectReference Include="..\..\HeuristicLab.Encodings.SchedulingEncoding\3.3\HeuristicLab.Encodings.SchedulingEncoding-3.3.csproj">
@@ -181,12 +173,6 @@
   </ItemGroup>
   <ItemGroup>
-    <EmbeddedResource Include="GanttChart.resx">
-      <DependentUpon>GanttChart.cs</DependentUpon>
-    </EmbeddedResource>
     <EmbeddedResource Include="JobShopSchedulingProblemView.resx">
       <DependentUpon>JobShopSchedulingProblemView.cs</DependentUpon>
-    </EmbeddedResource>
-    <EmbeddedResource Include="ScheduleView.resx">
-      <DependentUpon>ScheduleView.cs</DependentUpon>
     </EmbeddedResource>
     <EmbeddedResource Include="SchedulingProblemImportDialog.resx">
Index: branches/Scheduling/HeuristicLab.Problems.Scheduling.Views/3.3/JobShopSchedulingProblemView.Designer.cs
===================================================================
--- branches/Scheduling/HeuristicLab.Problems.Scheduling.Views/3.3/JobShopSchedulingProblemView.Designer.cs	(revision 6297)
+++ branches/Scheduling/HeuristicLab.Problems.Scheduling.Views/3.3/JobShopSchedulingProblemView.Designer.cs	(revision 6364)
@@ -1,3 +1,4 @@
-﻿namespace HeuristicLab.Problems.Scheduling.Views {
+﻿using HeuristicLab.Encodings.SchedulingEncoding.Views;
+namespace HeuristicLab.Problems.Scheduling.Views {
   partial class JobShopSchedulingProblemView {
     /// <summary> 
@@ -29,5 +30,5 @@
       this.tabPage1 = new System.Windows.Forms.TabPage();
       this.tabPage2 = new System.Windows.Forms.TabPage();
-      this.ganttChart = new HeuristicLab.Problems.Scheduling.Views.GanttChart();
+      this.ganttChart = new GanttChart();
       ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).BeginInit();
       this.tabControl1.SuspendLayout();
Index: branches/Scheduling/HeuristicLab.Problems.Scheduling.Views/3.3/Plugin.cs
===================================================================
--- branches/Scheduling/HeuristicLab.Problems.Scheduling.Views/3.3/Plugin.cs	(revision 6297)
+++ branches/Scheduling/HeuristicLab.Problems.Scheduling.Views/3.3/Plugin.cs	(revision 6364)
@@ -23,5 +23,5 @@
 
 namespace HeuristicLab.Problems.Scheduling.Views {
-  [Plugin("HeuristicLab.Problems.Scheduling.Views", "3.3.3.6266")]
+  [Plugin("HeuristicLab.Problems.Scheduling.Views", "3.3.3.6294")]
   [PluginFile("HeuristicLab.Problems.Scheduling.Views-3.3.dll", PluginFileType.Assembly)]
   public class HeuristicLabProblemsSchedulingViewsPlugin : PluginBase {
Index: branches/Scheduling/HeuristicLab.Problems.Scheduling.Views/3.3/Properties/AssemblyInfo.cs
===================================================================
--- branches/Scheduling/HeuristicLab.Problems.Scheduling.Views/3.3/Properties/AssemblyInfo.cs	(revision 6297)
+++ branches/Scheduling/HeuristicLab.Problems.Scheduling.Views/3.3/Properties/AssemblyInfo.cs	(revision 6364)
@@ -53,3 +53,3 @@
 // by using the '*' as shown below:
 [assembly: AssemblyVersion("3.3.0.0")]
-[assembly: AssemblyFileVersion("3.3.0.6266")]
+[assembly: AssemblyFileVersion("3.3.0.6294")]
Index: branches/Scheduling/HeuristicLab.Problems.Scheduling.Views/3.3/ScheduleView.Designer.cs
===================================================================
--- branches/Scheduling/HeuristicLab.Problems.Scheduling.Views/3.3/ScheduleView.Designer.cs	(revision 6297)
+++ 	(revision )
@@ -1,72 +1,0 @@
-﻿namespace HeuristicLab.Problems.Scheduling.Views {
-  partial class ScheduleView {
-    /// <summary> 
-    /// Required designer variable.
-    /// </summary>
-    private System.ComponentModel.IContainer components = null;
-
-    /// <summary> 
-    /// Clean up any resources being used.
-    /// </summary>
-    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
-    protected override void Dispose(bool disposing) {
-      if (disposing && (components != null)) {
-        components.Dispose();
-      }
-      base.Dispose(disposing);
-    }
-
-    #region Component Designer generated code
-
-    /// <summary> 
-    /// Required method for Designer support - do not modify 
-    /// the contents of this method with the code editor.
-    /// </summary>
-    private void InitializeComponent() {
-      this.ganttChart = new HeuristicLab.Problems.Scheduling.Views.GanttChart();
-      ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).BeginInit();
-      this.SuspendLayout();
-      // 
-      // nameTextBox
-      // 
-      this.errorProvider.SetIconAlignment(this.nameTextBox, System.Windows.Forms.ErrorIconAlignment.MiddleLeft);
-      this.errorProvider.SetIconPadding(this.nameTextBox, 2);
-      this.nameTextBox.Size = new System.Drawing.Size(446, 20);
-      // 
-      // infoLabel
-      // 
-      this.infoLabel.Location = new System.Drawing.Point(510, 3);
-      // 
-      // 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(6, 22);
-      this.ganttChart.Name = "ganttChart";
-      this.ganttChart.Size = new System.Drawing.Size(520, 320);
-      this.ganttChart.TabIndex = 3;
-      // 
-      // ScheduleView
-      // 
-      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
-      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
-      this.Controls.Add(this.ganttChart);
-      this.Name = "ScheduleView";
-      this.Size = new System.Drawing.Size(529, 345);
-      this.Controls.SetChildIndex(this.ganttChart, 0);
-      this.Controls.SetChildIndex(this.nameLabel, 0);
-      this.Controls.SetChildIndex(this.nameTextBox, 0);
-      this.Controls.SetChildIndex(this.infoLabel, 0);
-      ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).EndInit();
-      this.ResumeLayout(false);
-      this.PerformLayout();
-
-    }
-
-    #endregion
-
-    private GanttChart ganttChart;
-
-  }
-}
Index: branches/Scheduling/HeuristicLab.Problems.Scheduling.Views/3.3/ScheduleView.cs
===================================================================
--- branches/Scheduling/HeuristicLab.Problems.Scheduling.Views/3.3/ScheduleView.cs	(revision 6297)
+++ 	(revision )
@@ -1,130 +1,0 @@
-﻿#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2011 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
- *
- * This file is part of HeuristicLab.
- *
- * HeuristicLab is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * HeuristicLab is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
- */
-#endregion
-
-using System;
-using System.Collections.Generic;
-using System.ComponentModel;
-using System.Drawing;
-using System.Data;
-using System.Linq;
-using System.Text;
-using System.Windows.Forms;
-using HeuristicLab.Core.Views;
-using HeuristicLab.MainForm;
-using HeuristicLab.Core;
-using HeuristicLab.Encodings.SchedulingEncoding;
-
-namespace HeuristicLab.Problems.Scheduling.Views {
-  [View("Schedule View")]
-  [Content(typeof(Schedule), true)]
-  public partial class ScheduleView : NamedItemView {
-    public ScheduleView() {
-      InitializeComponent();
-    }
-
-
-    protected override void DeregisterContentEvents() {
-      Content.QualityChanged -= new EventHandler(Content_QualityChanged);
-      Content.ResourcesChanged -= new EventHandler(Content_ResourcesChanged);
-
-      base.DeregisterContentEvents();
-    }
-    protected override void RegisterContentEvents() {
-      base.RegisterContentEvents();
-      Content.QualityChanged += new EventHandler(Content_QualityChanged);
-      Content.ResourcesChanged += new EventHandler(Content_ResourcesChanged);
-    }
-
-
-    public new Schedule Content {
-      get { return (Schedule)base.Content; }
-      set { base.Content = value; }
-    }
-
-    protected override void OnContentChanged() {
-      base.OnContentChanged();
-      if (Content == null) {
-        ResetGanttChart();
-      } else {
-        FillGanttChart(Content);
-      }
-    }
-
-    private void ResetGanttChart() {
-      ganttChart.Reset();
-    }
-
-    private void FillGanttChart(Schedule content) {
-      ResetGanttChart();
-      int resCount = 0;
-      Random random = new Random (1);
-      foreach (Resource r in content.Resources) {
-        foreach (ScheduledTask t in content.Resources[resCount].Tasks) {
-          int categoryNr = 0;
-          string toolTip = "Task#";// +t.TaskNr;
-          string categoryName = "ScheduleTasks";
-          if (t is ScheduledTask) {
-            categoryNr = ((ScheduledTask)t).JobNr.Value;
-            categoryName = "Job" + categoryNr;
-            toolTip = categoryName + " - " + toolTip;
-          } 
-          ganttChart.AddJobColor(categoryNr);
-          ganttChart.AddData("Resource" + r.Index, 
-            categoryNr, 
-            t.StartTime.Value, 
-            t.EndTime.Value, 
-            toolTip);
-        }
-        resCount++;
-      }
-    }
-
-    protected override void SetEnabledStateOfControls() {
-      base.SetEnabledStateOfControls();
-      ganttChart.Enabled = Content != null;
-    }
-
-
-    private void Content_QualityChanged(object sender, EventArgs e) {
-      if (InvokeRequired)
-        Invoke(new EventHandler(Content_QualityChanged), sender, e);
-      else {
-        if (Content == null) {
-          ResetGanttChart();
-        } else {
-          FillGanttChart(Content);
-        }
-      }
-    }
-
-    private void Content_ResourcesChanged(object sender, EventArgs e) {
-      if (InvokeRequired)
-        Invoke(new EventHandler(Content_ResourcesChanged), sender, e);
-      else {
-        if (Content == null) {
-          ResetGanttChart();
-        } else {
-          FillGanttChart(Content);
-        }
-      }
-    }
-  }
-}
Index: branches/Scheduling/HeuristicLab.Problems.Scheduling.Views/3.3/ScheduleView.resx
===================================================================
--- branches/Scheduling/HeuristicLab.Problems.Scheduling.Views/3.3/ScheduleView.resx	(revision 6297)
+++ 	(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: branches/Scheduling/HeuristicLab.Problems.Scheduling/3.3/Decoders/JSMDecoder.cs
===================================================================
--- branches/Scheduling/HeuristicLab.Problems.Scheduling/3.3/Decoders/JSMDecoder.cs	(revision 6297)
+++ branches/Scheduling/HeuristicLab.Problems.Scheduling/3.3/Decoders/JSMDecoder.cs	(revision 6364)
@@ -36,5 +36,5 @@
 
 namespace HeuristicLab.Problems.Scheduling.Decoders {
-  [Item("Job Sequencing Matrix Decoder", "Applies the GifflerThompson algorithm to create an active schedule from a JobSequencing Matrix.")]
+  [Item("Job Sequence Matrix Decoder", "Applies the GifflerThompson algorithm to create an active schedule from a JobSequence Matrix.")]
   [StorableClass]
   public class JSMDecoder : SchedulingDecoder<JSMEncoding>, IStochasticOperator, IJSSPOperator {
@@ -76,5 +76,5 @@
       : base() {
       Parameters.Add(new LookupParameter<IRandom>("Random", "The pseudo random number generator which should be used for stochastic manipulation operators."));
-      Parameters.Add(new LookupParameter<ItemList<Job>>("JobData", "Job data taken from the JSSP - Instance."));
+      Parameters.Add(new LookupParameter<ItemList<Job>>("JobData", "Job data taken from the Schedulingproblem - Instance."));
     }
 
Index: branches/Scheduling/HeuristicLab.Problems.Scheduling/3.3/Decoders/PRVDecoder.cs
===================================================================
--- branches/Scheduling/HeuristicLab.Problems.Scheduling/3.3/Decoders/PRVDecoder.cs	(revision 6297)
+++ branches/Scheduling/HeuristicLab.Problems.Scheduling/3.3/Decoders/PRVDecoder.cs	(revision 6364)
@@ -197,43 +197,10 @@
     }
 
-    private ItemList<Task> GetEarliestNotScheduledTasks() {
-      ItemList<Task> result = new ItemList<Task>();
-      foreach (Job j in jobs) {
-        foreach (Task t in j.Tasks) {
-          if (!t.IsScheduled.Value) {
-            result.Add(t);
-            break;
-          }
-        }
-      }
-      return result;
-    }
-    private Task GetTaskWithMinimalEC(ItemList<Task> earliestTasksList) {
-      double minEct = double.MaxValue;
-      Task result = null;
-      foreach (Task t in earliestTasksList) {
-        double ect = GTAlgorithmUtils.ComputeEarliestCompletionTime(t, resultingSchedule);
-        if (ect < minEct) {
-          result = t;
-          minEct = ect;
-        }
-      }
-      return result;
-    }
-    private ItemList<Task> GetConflictSetForTask(Task conflictedTask, ItemList<Task> earliestTasksList) {
-      ItemList<Task> result = new ItemList<Task>();
-      double conflictedCompletionTime = GTAlgorithmUtils.ComputeEarliestCompletionTime(conflictedTask, resultingSchedule);
-      foreach (Task t in earliestTasksList) {
-        if (t.ResourceNr.Value == conflictedTask.ResourceNr.Value) {
-          if (GTAlgorithmUtils.ComputeEarliestStartTime(t, resultingSchedule) < conflictedCompletionTime)
-            result.Add(t);
-        }
-      }
-      return result;
-    }
+
+
     private Task SelectTaskFromConflictSet(ItemList<Task> conflictSet, int ruleIndex, int nrOfRules) {
       if (conflictSet.Count == 1)
         return conflictSet[0];
-      
+
       ruleIndex = ruleIndex % nrOfRules;
       switch (ruleIndex) {
@@ -249,5 +216,5 @@
         case 9: return RandomRule(conflictSet);
         default: return RandomRule(conflictSet);
-      }  
+      }
     }
 
@@ -265,15 +232,16 @@
       //GT-Algorithm
       //STEP 0 - Compute a list of "earliest operations"
-      ItemList<Task> earliestTasksList = GetEarliestNotScheduledTasks();
-      int currentDecisionIndex = 0;
+      ItemList<Task> earliestTasksList = GTAlgorithmUtils.GetEarliestNotScheduledTasks(jobs);
+      //int currentDecisionIndex = 0;
       while (earliestTasksList.Count > 0) {
         //STEP 1 - Get earliest not scheduled operation with minimal earliest completing time
-        Task minimal = GetTaskWithMinimalEC(earliestTasksList);
+        Task minimal = GTAlgorithmUtils.GetTaskWithMinimalEC(earliestTasksList, resultingSchedule);
 
         //STEP 2 - Compute a conflict set of all operations that can be scheduled on the machine the previously selected operation runs on
-        ItemList<Task> conflictSet = GetConflictSetForTask(minimal, earliestTasksList);
+        ItemList<Task> conflictSet = GTAlgorithmUtils.GetConflictSetForTask(minimal, earliestTasksList, jobs, resultingSchedule);
 
         //STEP 3 - Select an operation from the conflict set (various methods depending on how the algorithm should work..)
-        Task selectedTask = SelectTaskFromConflictSet(conflictSet, solution.PriorityRulesVector [currentDecisionIndex++], solution.NrOfRules.Value);
+        //Task selectedTask = SelectTaskFromConflictSet(conflictSet, solution.PriorityRulesVector [currentDecisionIndex++], solution.NrOfRules.Value);
+        Task selectedTask = SelectTaskFromConflictSet(conflictSet, solution.PriorityRulesVector[minimal.JobNr.Value], solution.NrOfRules.Value);
 
         //STEP 4 - Adding the selected operation to the current schedule
@@ -283,5 +251,5 @@
 
         //STEP 5 - Back to STEP 1
-        earliestTasksList = GetEarliestNotScheduledTasks();
+        earliestTasksList = GTAlgorithmUtils.GetEarliestNotScheduledTasks(jobs);
       }
 
Index: branches/Scheduling/HeuristicLab.Problems.Scheduling/3.3/Evaluators/MeanTardinessEvaluator.cs
===================================================================
--- branches/Scheduling/HeuristicLab.Problems.Scheduling/3.3/Evaluators/MeanTardinessEvaluator.cs	(revision 6297)
+++ branches/Scheduling/HeuristicLab.Problems.Scheduling/3.3/Evaluators/MeanTardinessEvaluator.cs	(revision 6364)
@@ -31,9 +31,10 @@
 using HeuristicLab.Parameters;
 using HeuristicLab.Encodings.SchedulingEncoding;
+using HeuristicLab.Problems.Scheduling.Interfaces;
 
 namespace HeuristicLab.Problems.Scheduling.Evaluators {
-  [Item("Men tardiness Evaluator", "Represents an evaluator using the mean tardiness of a schedule.")]
+  [Item("Mean tardiness Evaluator", "Represents an evaluator using the mean tardiness of a schedule.")]
   [StorableClass]
-  public class MeanTardinessEvaluator : SchedulingEvaluator {
+  public class MeanTardinessEvaluator : SchedulingEvaluator, IJSSPOperator {
     [StorableConstructor]
     protected MeanTardinessEvaluator(bool deserializing) : base(deserializing) { }
@@ -46,16 +47,16 @@
 
     #region Parameter Properties
-    public ILookupParameter<ItemList<Job>> JobsParameter {
-      get { return (ILookupParameter<ItemList<Job>>)Parameters["Jobs"]; }
+    public ILookupParameter<ItemList<Job>> JobDataParameter {
+      get { return (ILookupParameter<ItemList<Job>>)Parameters["JobData"]; }
     }
     #endregion
     #region Properties
-    public ItemList<Job> Jobs {
-      get { return JobsParameter.ActualValue; }
+    public ItemList<Job> JobData {
+      get { return JobDataParameter.ActualValue; }
     }
     #endregion
 
     public MeanTardinessEvaluator() : base() {
-      Parameters.Add(new LookupParameter<ItemList<Job>>("Jobs", "Jobdata defining the precedence relationships and the duration of the tasks in this JSSP-Instance."));
+      Parameters.Add(new LookupParameter<ItemList<Job>>("JobData", "Jobdata defining the precedence relationships and the duration of the tasks in this JSSP-Instance."));
     }
 
@@ -63,5 +64,5 @@
       double totalTardiness = 0;
       foreach (Resource r in schedule.Resources) {
-        double tardiness = r.Tasks[r.Tasks.Count - 1].EndTime.Value - Jobs[r.Tasks[r.Tasks.Count - 1].JobNr.Value].DueDate.Value;
+        double tardiness = r.Tasks[r.Tasks.Count - 1].EndTime.Value - JobData[r.Tasks[r.Tasks.Count - 1].JobNr.Value].DueDate.Value;
         if (tardiness > 0)
           totalTardiness += tardiness;
Index: branches/Scheduling/HeuristicLab.Problems.Scheduling/3.3/Evaluators/SchedulingEvaluationAlgorithm.cs
===================================================================
--- branches/Scheduling/HeuristicLab.Problems.Scheduling/3.3/Evaluators/SchedulingEvaluationAlgorithm.cs	(revision 6297)
+++ branches/Scheduling/HeuristicLab.Problems.Scheduling/3.3/Evaluators/SchedulingEvaluationAlgorithm.cs	(revision 6364)
@@ -35,15 +35,19 @@
 
 namespace HeuristicLab.Problems.Scheduling.Evaluators {
-  [Item("Scheduling Evaluator", "Represents a general evaluator class for scheduling problems.")]
+  [Item("Scheduling Evaluation Algorithm", "Represents a composition of a decoder and an evaluator for scheduling problems.")]
   [StorableClass]
-  public class SchedulingEvaluationAlgorithm : AlgorithmOperator, ISchedulingEvaluator {
+  public class SchedulingEvaluationAlgorithm : AlgorithmOperator, ISchedulingEvaluationAlgorithm {
     [StorableConstructor]
     protected SchedulingEvaluationAlgorithm(bool deserializing) : base(deserializing) { }
     protected SchedulingEvaluationAlgorithm(SchedulingEvaluationAlgorithm original, Cloner cloner)
       : base(original, cloner) {
+        this.evaluator = cloner.Clone(original.evaluator);
     }
     public override IDeepCloneable Clone(Cloner cloner) {
       return new SchedulingEvaluationAlgorithm(this, cloner);
     }
+
+    [Storable]
+    private Placeholder evaluator;
 
     public ILookupParameter<DoubleValue> QualityParameter {
@@ -56,5 +60,5 @@
     }
 
-    public void InitializeOperatorGraph<T>(SchedulingDecoder<T> decoder, SchedulingEvaluator evaluator) where T: Item, ISchedulingEncoding{
+    public void InitializeOperatorGraph<T>(SchedulingDecoder<T> decoder) where T: Item, ISchedulingEncoding{
       OperatorGraph.Operators.Clear();
       OperatorGraph.InitialOperator = decoder;
@@ -65,4 +69,6 @@
       : base() {
         Parameters.Add(new LookupParameter<DoubleValue>("Quality", "The quality value aka fitness value of the solution."));
+        evaluator = new Placeholder();
+        evaluator.OperatorParameter.ActualName = "SolutionEvaluator";
     }
 
Index: branches/Scheduling/HeuristicLab.Problems.Scheduling/3.3/Evaluators/SchedulingEvaluator.cs
===================================================================
--- branches/Scheduling/HeuristicLab.Problems.Scheduling/3.3/Evaluators/SchedulingEvaluator.cs	(revision 6297)
+++ branches/Scheduling/HeuristicLab.Problems.Scheduling/3.3/Evaluators/SchedulingEvaluator.cs	(revision 6364)
@@ -35,5 +35,5 @@
 
 namespace HeuristicLab.Problems.Scheduling.Evaluators {
-  [Item("JSSP Evaluator", "Represents a evaluator class for standard job shop scheduling problems.")]
+  [Item("Scheduling Evaluator", "Represents a evaluator class for standard scheduling problems.")]
   [StorableClass]
   public abstract class SchedulingEvaluator : SingleSuccessorOperator, ISchedulingEvaluator {
Index: branches/Scheduling/HeuristicLab.Problems.Scheduling/3.3/Evaluators/SchedulingEvaluatorType.cs
===================================================================
--- branches/Scheduling/HeuristicLab.Problems.Scheduling/3.3/Evaluators/SchedulingEvaluatorType.cs	(revision 6297)
+++ 	(revision )
@@ -1,42 +1,0 @@
-﻿#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2011 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
- *
- * This file is part of HeuristicLab.
- *
- * HeuristicLab is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * HeuristicLab is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
- */
-#endregion
-
-using System.Drawing;
-using HeuristicLab.Common;
-using HeuristicLab.Core;
-using HeuristicLab.Data;
-using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
-
-namespace HeuristicLab.Problems.Scheduling.Evaluators {
-  [Item("SchedulingEvaluatorType", "Represents a certain type of scheduling evaluator.")]
-  [StorableClass]
-  public class SchedulingEvaluatorType : ValueTypeValue<SchedulingEvaluatorTypes> {
-    [StorableConstructor]
-    protected SchedulingEvaluatorType(bool deserializing) : base(deserializing) { }
-    protected SchedulingEvaluatorType(SchedulingEvaluatorType original, Cloner cloner) : base(original, cloner) { }
-    public SchedulingEvaluatorType() : base() { }
-    public SchedulingEvaluatorType(SchedulingEvaluatorTypes type) : base(type) { }
-
-    public override IDeepCloneable Clone(Cloner cloner) {
-      return new SchedulingEvaluatorType(this, cloner);
-    }
-  }
-}
Index: branches/Scheduling/HeuristicLab.Problems.Scheduling/3.3/Evaluators/SchedulingEvaluatorTypes.cs
===================================================================
--- branches/Scheduling/HeuristicLab.Problems.Scheduling/3.3/Evaluators/SchedulingEvaluatorTypes.cs	(revision 6297)
+++ 	(revision )
@@ -1,11 +1,0 @@
-﻿using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-
-namespace HeuristicLab.Problems.Scheduling.Evaluators {
-  public enum SchedulingEvaluatorTypes {
-    MakespanEvaluator,
-    MeanTardinessEvaluator
-  }
-}
Index: branches/Scheduling/HeuristicLab.Problems.Scheduling/3.3/HeuristicLab.Problems.Scheduling-3.3.csproj
===================================================================
--- branches/Scheduling/HeuristicLab.Problems.Scheduling/3.3/HeuristicLab.Problems.Scheduling-3.3.csproj	(revision 6297)
+++ branches/Scheduling/HeuristicLab.Problems.Scheduling/3.3/HeuristicLab.Problems.Scheduling-3.3.csproj	(revision 6364)
@@ -56,6 +56,4 @@
     <Compile Include="Decoders\PRVDecoder.cs" />
     <Compile Include="Decoders\PWRDecoder.cs" />
-    <Compile Include="Evaluators\SchedulingEvaluatorType.cs" />
-    <Compile Include="Evaluators\SchedulingEvaluatorTypes.cs" />
     <Compile Include="Evaluators\MeanTardinessEvaluator.cs" />
     <Compile Include="Evaluators\MakespanEvaluator.cs" />
Index: branches/Scheduling/HeuristicLab.Problems.Scheduling/3.3/IndexedTaskList.cs
===================================================================
--- branches/Scheduling/HeuristicLab.Problems.Scheduling/3.3/IndexedTaskList.cs	(revision 6297)
+++ 	(revision )
@@ -1,74 +1,0 @@
-﻿#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2011 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
- *
- * This file is part of HeuristicLab.
- *
- * HeuristicLab is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * HeuristicLab is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
- */
-#endregion
-
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using HeuristicLab.Core;
-using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
-using HeuristicLab.Common;
-using HeuristicLab.Parameters;
-using HeuristicLab.Data;
-
-namespace HeuristicLab.Problems.Scheduling {
-  [Item("Indexed Tasklist", "Represents a list of tasks.")]
-  [StorableClass]
-  public class IndexedTaskList : ParameterizedNamedItem {
-    [StorableConstructor]
-    protected IndexedTaskList(bool deserializing) : base(deserializing) { }
-    protected IndexedTaskList(IndexedTaskList original, Cloner cloner)
-      : base(original, cloner) {
-      this.Index = cloner.Clone(original.Index);
-      this.Tasks = cloner.Clone(original.Tasks);
-    }
-    public override IDeepCloneable Clone(Cloner cloner) {
-      return new IndexedTaskList(this, cloner);
-    }
-
-
-    public IntValue Index {
-      get;
-      set;
-    }
-    public ItemList<Task> Tasks {
-      get;
-      set;
-    }
-
-
-    public IndexedTaskList(IntValue index)
-      : base() {
-      Index = index;
-      Tasks = new ItemList<Task>();
-    }
-
-    public override string ToString() {
-      StringBuilder sb = new StringBuilder();
-      sb.Append("TaskList#" + Index + " [ ");
-      foreach (Task t in Tasks) {
-        sb.Append(t.ToString() + " ");
-      }
-      sb.Append("]");
-      return sb.ToString();
-    }
-  }
-}
Index: branches/Scheduling/HeuristicLab.Problems.Scheduling/3.3/Interfaces/IJSSPOperator.cs
===================================================================
--- branches/Scheduling/HeuristicLab.Problems.Scheduling/3.3/Interfaces/IJSSPOperator.cs	(revision 6364)
+++ branches/Scheduling/HeuristicLab.Problems.Scheduling/3.3/Interfaces/IJSSPOperator.cs	(revision 6364)
@@ -0,0 +1,12 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using HeuristicLab.Core;
+using HeuristicLab.Parameters;
+
+namespace HeuristicLab.Problems.Scheduling.Interfaces {
+  public interface IJSSPOperator : IOperator {
+     ILookupParameter<ItemList<Job>> JobDataParameter {get;}
+  }
+}
Index: branches/Scheduling/HeuristicLab.Problems.Scheduling/3.3/Job.cs
===================================================================
--- branches/Scheduling/HeuristicLab.Problems.Scheduling/3.3/Job.cs	(revision 6297)
+++ branches/Scheduling/HeuristicLab.Problems.Scheduling/3.3/Job.cs	(revision 6364)
@@ -31,7 +31,7 @@
 
 namespace HeuristicLab.Problems.Scheduling {
-  [Item("Job Class", "Represents a composition of tasks that require processing in a job shop scheduling problem.")]
+  [Item("Job Class", "Represents a composition of tasks that require processing in a scheduling problem.")]
   [StorableClass]
-  public class Job : IndexedTaskList {
+  public class Job : Item {
     [StorableConstructor]
     protected Job(bool deserializing) : base(deserializing) { }
@@ -39,4 +39,6 @@
       : base(original, cloner) {
         this.DueDate = cloner.Clone(original.DueDate);
+        this.Index = cloner.Clone(original.Index);
+        this.Tasks = cloner.Clone(original.Tasks);
     }
     public override IDeepCloneable Clone(Cloner cloner) {
@@ -46,5 +48,18 @@
     public DoubleValue DueDate { get; set; }
 
-    public Job(IntValue index, DoubleValue dueDate) : base (index) {
+    public IntValue Index {
+      get;
+      set;
+    }
+    public ItemList<Task> Tasks {
+      get;
+      set;
+    }
+
+
+    public Job(IntValue index, DoubleValue dueDate) : base () {
+      Index = index;
+      Tasks = new ItemList<Task>();
+
       if (dueDate != null)
         DueDate = (DoubleValue)dueDate.Clone();
Index: branches/Scheduling/HeuristicLab.Problems.Scheduling/3.3/JobShopSchedulingProblem.cs
===================================================================
--- branches/Scheduling/HeuristicLab.Problems.Scheduling/3.3/JobShopSchedulingProblem.cs	(revision 6297)
+++ branches/Scheduling/HeuristicLab.Problems.Scheduling/3.3/JobShopSchedulingProblem.cs	(revision 6364)
@@ -52,8 +52,9 @@
     private JobShopSchedulingProblem(JobShopSchedulingProblem original, Cloner cloner)
       : base(original, cloner) {
-      this.encodingType = original.encodingType;
       this.Jobs = cloner.Clone(original.Jobs);
-      this.EvaluatorType = cloner.Clone(original.EvaluatorType);
-        AttachEventHandlers();
+      this.Resources = cloner.Clone(original.Resources);
+      this.JobData = cloner.Clone(original.JobData);
+      this.SolutionEvaluator = cloner.Clone(original.SolutionEvaluator);
+      this.DueDates = cloner.Clone(original.DueDates);
     }
     public override IDeepCloneable Clone(Cloner cloner) {
@@ -66,7 +67,4 @@
       get { return (ValueParameter<ItemList<Job>>)Parameters["JobData"]; }
     }
-    public ValueParameter<SchedulingEvaluatorType> EvaluatorTypeParameter {
-      get { return (ValueParameter<SchedulingEvaluatorType>)Parameters["EvaluatorType"]; }
-    }
     public OptionalValueParameter<Schedule> BestKnownSolutionParameter {
       get { return (OptionalValueParameter<Schedule>)Parameters["BestKnownSolution"]; }
@@ -79,5 +77,10 @@
       get { return (ValueParameter<IntValue>)Parameters["Resources"]; }
     }
-
+    public ValueParameter<SchedulingEvaluator> SolutionEvaluatorParameter {
+      get { return (ValueParameter<SchedulingEvaluator>)Parameters["SolutionEvaluator"]; }
+    }
+    public ValueParameter<BoolValue> DueDatesParameter {
+      get { return (ValueParameter<BoolValue>)Parameters["DueDates"]; }
+    } 
     #endregion
 
@@ -87,8 +90,4 @@
       set { JobDataParameter.Value = value; }
     }
-    public SchedulingEvaluatorType EvaluatorType {
-      get { return EvaluatorTypeParameter.Value; }
-      set { EvaluatorTypeParameter.Value = value; }
-    }
     public Schedule BestKnownSolution {
       get { return BestKnownSolutionParameter.Value; }
@@ -103,33 +102,31 @@
       set { ResourcesParameter.Value = value; }
     }
-    #endregion
-
-    [Storable]
-    private SchedulingEncodingTypes encodingType;
+    public SchedulingEvaluator SolutionEvaluator {
+      get { return SolutionEvaluatorParameter.Value; }
+      set { SolutionEvaluatorParameter.Value = value; }
+    }
+    public BoolValue DueDates {
+      get { return DueDatesParameter.Value; }
+      set { DueDatesParameter.Value = value; }
+    }
+    #endregion
+
 
     public JobShopSchedulingProblem()
       : base(new SchedulingEvaluationAlgorithm (), new JSMRandomCreator ()) {
       Parameters.Add(new ValueParameter<ItemList<Job>>("JobData", "Jobdata defining the precedence relationships and the duration of the tasks in this JSSP-Instance.", new ItemList<Job>()));
-      Parameters.Add(new ValueParameter<SchedulingEvaluatorType>("EvaluatorType", "Type of the evaluator used to determine the quality of an individual.", new SchedulingEvaluatorType(SchedulingEvaluatorTypes.MakespanEvaluator)));
       Parameters.Add(new OptionalValueParameter<Schedule>("BestKnownSolution", "The best known solution of this JSSP instance."));
-      
-      Parameters.Add(new ValueParameter<IntValue>("Jobs", "The number of jobs used in this JSSP instance.", new IntValue ()));
+
+      Parameters.Add(new ValueParameter<IntValue>("Jobs", "The number of jobs used in this JSSP instance.", new IntValue()));
       Parameters.Add(new ValueParameter<IntValue>("Resources", "The number of resources used this JSSP instance.", new IntValue()));
-      encodingType = SchedulingEncodingTypes.JSMEncoding;
-        InitializeOperators();
-        AttachEventHandlers();
+      Parameters.Add(new ValueParameter<BoolValue>("DueDates", "Determines whether the problem instance uses due dates or not.", new BoolValue()));
+      Parameters.Add(new ValueParameter<SchedulingEvaluator>("SolutionEvaluator", "The evaluator used to determine the quality of a solution.", new MakespanEvaluator()));
+
+      InitializeOperators();
+      InitializeProblemInstance();
     }
 
     #region Events
-    //TODO: Implement event handlers for problem specific events!
     protected override void OnSolutionCreatorChanged() {
-      if (SolutionCreator.GetType().Equals(typeof(JSMRandomCreator)))
-        encodingType = SchedulingEncodingTypes.JSMEncoding;
-      else {
-        if (SolutionCreator.GetType().Equals(typeof(PRVRandomCreator)))
-          encodingType = SchedulingEncodingTypes.PRVEncoding;
-        else
-          encodingType = SchedulingEncodingTypes.PWREncoding;
-      }
       InitializeOperators();
     }
@@ -137,56 +134,49 @@
 
     #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();
       ApplyEncoding();
       Operators.Add(new BestSchedulingSolutionAnalyzer());
-      //ParameterizeAnalyzer();
-      //ParameterizeOperators();
     }
 
     private void ApplyEncoding() {
-      if (EvaluatorType.Value == SchedulingEvaluatorTypes.MakespanEvaluator) {
-        if (encodingType == SchedulingEncodingTypes.JSMEncoding) {
-          Operators.AddRange(ApplicationManager.Manager.GetInstances<IJSMOperator>());
-          ((SchedulingEvaluationAlgorithm)this.EvaluatorParameter.ActualValue).InitializeOperatorGraph<JSMEncoding>(new JSMDecoder(), new MakespanEvaluator());
+      if (SolutionCreator.GetType().Equals(typeof(JSMRandomCreator))) {
+        Operators.AddRange(ApplicationManager.Manager.GetInstances<IJSMOperator>());
+        ((SchedulingEvaluationAlgorithm)this.EvaluatorParameter.ActualValue).InitializeOperatorGraph<JSMEncoding>(new JSMDecoder());
+      } else {
+        if (SolutionCreator.GetType().Equals(typeof(PRVRandomCreator))) {
+          Operators.AddRange(ApplicationManager.Manager.GetInstances<IPRVOperator>());
+          ((SchedulingEvaluationAlgorithm)this.EvaluatorParameter.ActualValue).InitializeOperatorGraph<PRVEncoding>(new PRVDecoder());
         } else {
-          if (encodingType == SchedulingEncodingTypes.PRVEncoding) {
-            Operators.AddRange(ApplicationManager.Manager.GetInstances<IPRVOperator>());
-            ((SchedulingEvaluationAlgorithm)this.EvaluatorParameter.ActualValue).InitializeOperatorGraph<PRVEncoding>(new PRVDecoder(), new MakespanEvaluator());
-          } else {
-            if (encodingType == SchedulingEncodingTypes.PWREncoding) {
-              Operators.AddRange(ApplicationManager.Manager.GetInstances<IPWROperator>());
-              ((SchedulingEvaluationAlgorithm)this.EvaluatorParameter.ActualValue).InitializeOperatorGraph<PWREncoding>(new PWRDecoder(), new MakespanEvaluator());
-            }
+          if (SolutionCreator.GetType().Equals(typeof(PWRRandomCreator))) {
+            Operators.AddRange(ApplicationManager.Manager.GetInstances<IPWROperator>());
+            ((SchedulingEvaluationAlgorithm)this.EvaluatorParameter.ActualValue).InitializeOperatorGraph<PWREncoding>(new PWRDecoder());
           }
         }
-      } else {
-        if (encodingType == SchedulingEncodingTypes.JSMEncoding) {
-          Operators.AddRange(ApplicationManager.Manager.GetInstances<IJSMOperator>());
-          ((SchedulingEvaluationAlgorithm)this.EvaluatorParameter.ActualValue).InitializeOperatorGraph<JSMEncoding>(new JSMDecoder(), new MeanTardinessEvaluator());
-        } else {
-          if (encodingType == SchedulingEncodingTypes.PRVEncoding) {
-            Operators.AddRange(ApplicationManager.Manager.GetInstances<IPRVOperator>());
-            ((SchedulingEvaluationAlgorithm)this.EvaluatorParameter.ActualValue).InitializeOperatorGraph<PRVEncoding>(new PRVDecoder(), new MeanTardinessEvaluator());
-          } else {
-            if (encodingType == SchedulingEncodingTypes.PWREncoding) {
-              Operators.AddRange(ApplicationManager.Manager.GetInstances<IPWROperator>());
-              ((SchedulingEvaluationAlgorithm)this.EvaluatorParameter.ActualValue).InitializeOperatorGraph<PWREncoding>(new PWRDecoder(), new MeanTardinessEvaluator());
-            }
-          }
-        }
-      }
-    }
-
-    private void AttachEventHandlers() {
-      //TODO: Attach event handlers implemented aabove to appropriate events of the problem.
-    }
-
-    private void ParameterizeOperators() {
-      throw new NotImplementedException();
-    }
-
-    private void ParameterizeAnalyzer() {
-      throw new NotImplementedException();
+      }
     }
     #endregion
@@ -213,4 +203,20 @@
       return arr;
     }
+    private Job CreateJobFromData (List<string> data, int jobCount)   {
+      DoubleValue dueDate = null;
+      int dataCount = data.Count;
+      if (DueDates.Value) {
+        dueDate = new DoubleValue(Double.Parse(data[data.Count - 1]));
+        dataCount--;
+      }
+      Job j = new Job(new IntValue(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))
@@ -231,24 +237,13 @@
           //data[2] = bestKnownQuality (double)
           //data[3] = dueDates (0|1)
-          bool withDueDates = false;
+          DueDates.Value = false;
           if (data.Count > 2)
             BestKnownQualityParameter.ActualValue = new DoubleValue(Double.Parse (data[2]));
           if (data.Count > 3 && data[3] == "1")
-            withDueDates = true;
+            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)) {
-            DoubleValue dueDate = null;
-            int dataCount = data.Count;
-            if (withDueDates) {
-              dueDate = new DoubleValue(Double.Parse(data[data.Count - 1]));
-              dataCount--;
-            }
-            Job j = new Job(new IntValue(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
+            Job j = CreateJobFromData(data, jobCount);
             this.JobData.Add(j);
             jobCount++;
Index: branches/Scheduling/HeuristicLab.Problems.Scheduling/3.3/Plugin.cs
===================================================================
--- branches/Scheduling/HeuristicLab.Problems.Scheduling/3.3/Plugin.cs	(revision 6297)
+++ branches/Scheduling/HeuristicLab.Problems.Scheduling/3.3/Plugin.cs	(revision 6364)
@@ -23,5 +23,5 @@
 
 namespace HeuristicLab.Problems.Scheduling {
-  [Plugin("HeuristicLab.Problems.Scheduling", "3.3.3.6266")]
+  [Plugin("HeuristicLab.Problems.Scheduling", "3.3.3.6293")]
   [PluginFile("HeuristicLab.Problems.Scheduling-3.3.dll", PluginFileType.Assembly)]
   public class HeuristicLabProblemsSchedulingPlugin : PluginBase {
Index: branches/Scheduling/HeuristicLab.Problems.Scheduling/3.3/SchedulingProblem.cs
===================================================================
--- branches/Scheduling/HeuristicLab.Problems.Scheduling/3.3/SchedulingProblem.cs	(revision 6297)
+++ branches/Scheduling/HeuristicLab.Problems.Scheduling/3.3/SchedulingProblem.cs	(revision 6364)
@@ -33,5 +33,5 @@
   [Item("Scheduling Problem", "Abstract class that represents a Scheduling Problem")]
   [StorableClass]
-  public abstract class SchedulingProblem : SingleObjectiveHeuristicOptimizationProblem<ISchedulingEvaluator, ISchedulingCreator> {
+  public abstract class SchedulingProblem : SingleObjectiveHeuristicOptimizationProblem<ISchedulingEvaluationAlgorithm, ISchedulingCreator> {
     [StorableConstructor]
     protected SchedulingProblem(bool deserializing) : base(deserializing) { }
@@ -40,5 +40,5 @@
     }
 
-    protected SchedulingProblem (ISchedulingEvaluator se, ISchedulingCreator sc) : base (se, sc) {}
+    protected SchedulingProblem (ISchedulingEvaluationAlgorithm se, ISchedulingCreator sc) : base (se, sc) {}
 
   }
Index: branches/Scheduling/HeuristicLab.Problems.TravelingSalesman.Views/3.3/HeuristicLab.Problems.TravelingSalesman.Views-3.3.csproj
===================================================================
--- branches/Scheduling/HeuristicLab.Problems.TravelingSalesman.Views/3.3/HeuristicLab.Problems.TravelingSalesman.Views-3.3.csproj	(revision 6297)
+++ branches/Scheduling/HeuristicLab.Problems.TravelingSalesman.Views/3.3/HeuristicLab.Problems.TravelingSalesman.Views-3.3.csproj	(revision 6364)
@@ -96,4 +96,8 @@
   </PropertyGroup>
   <ItemGroup>
+    <Reference Include="HeuristicLab.Problems.Scheduling-3.3">
+      <HintPath>..\..\HeuristicLab.Problems.Scheduling\3.3\bin\Debug\HeuristicLab.Problems.Scheduling-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Visualization.ChartControlsExtensions-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL" />
     <Reference Include="System" />
     <Reference Include="System.Core">
@@ -102,4 +106,5 @@
     <Reference Include="System.Drawing" />
     <Reference Include="System.Windows.Forms" />
+    <Reference Include="System.Windows.Forms.DataVisualization" />
     <Reference Include="System.Xml.Linq">
       <RequiredTargetFramework>3.5</RequiredTargetFramework>
@@ -190,4 +195,8 @@
       <Project>{94186A6A-5176-4402-AE83-886557B53CCA}</Project>
       <Name>HeuristicLab.PluginInfrastructure-3.3</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Problems.Scheduling.Views\3.3\HeuristicLab.Problems.Scheduling.Views-3.3.csproj">
+      <Project>{78763A4E-E163-48C2-98EB-709760D06F25}</Project>
+      <Name>HeuristicLab.Problems.Scheduling.Views-3.3</Name>
     </ProjectReference>
     <ProjectReference Include="..\..\HeuristicLab.Problems.TravelingSalesman\3.3\HeuristicLab.Problems.TravelingSalesman-3.3.csproj">
@@ -212,4 +221,9 @@
       <Install>true</Install>
     </BootstrapperPackage>
+  </ItemGroup>
+  <ItemGroup>
+    <EmbeddedResource Include="PathTSPTourView.resx">
+      <DependentUpon>PathTSPTourView.cs</DependentUpon>
+    </EmbeddedResource>
   </ItemGroup>
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
Index: branches/Scheduling/HeuristicLab/3.3/Files.txt
===================================================================
--- branches/Scheduling/HeuristicLab/3.3/Files.txt	(revision 6297)
+++ branches/Scheduling/HeuristicLab/3.3/Files.txt	(revision 6364)
@@ -32,6 +32,7 @@
 HeuristicLab.Encodings.IntegerVectorEncoding\3.3:HeuristicLab.Encodings.IntegerVectorEncoding-3.3.dll
 HeuristicLab.Encodings.PermutationEncoding\3.3:HeuristicLab.Encodings.PermutationEncoding-3.3.dll
+HeuristicLab.Encodings.PermutationEncoding.Views\3.3:HeuristicLab.Encodings.PermutationEncoding.Views-3.3.dll
 HeuristicLab.Encodings.SchedulingEncoding\3.3:HeuristicLab.Encodings.SchedulingEncoding-3.3.dll
-HeuristicLab.Encodings.PermutationEncoding.Views\3.3:HeuristicLab.Encodings.PermutationEncoding.Views-3.3.dll
+HeuristicLab.Encodings.SchedulingEncoding.Views\3.3:HeuristicLab.Encodings.SchedulingEncoding.Views-3.3.dll
 HeuristicLab.Encodings.RealVectorEncoding\3.3:HeuristicLab.Encodings.RealVectorEncoding-3.3.dll
 HeuristicLab.Encodings.SymbolicExpressionTreeEncoding\3.3:HeuristicLab.Encodings.SymbolicExpressionTreeEncoding-3.3.dll
Index: branches/Scheduling/HeuristicLab/3.3/Tests/HeuristicLab-3.3.Tests.csproj
===================================================================
--- branches/Scheduling/HeuristicLab/3.3/Tests/HeuristicLab-3.3.Tests.csproj	(revision 6297)
+++ branches/Scheduling/HeuristicLab/3.3/Tests/HeuristicLab-3.3.Tests.csproj	(revision 6364)
@@ -252,4 +252,12 @@
       <Name>HeuristicLab.Encodings.RealVectorEncoding-3.3</Name>
     </ProjectReference>
+    <ProjectReference Include="..\..\..\HeuristicLab.Encodings.SchedulingEncoding.Views\3.3\HeuristicLab.Encodings.SchedulingEncoding.Views-3.3.csproj">
+      <Project>{0C378762-D5DB-488A-8931-2BA42B1B7CBF}</Project>
+      <Name>HeuristicLab.Encodings.SchedulingEncoding.Views-3.3</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\..\HeuristicLab.Encodings.SchedulingEncoding\3.3\HeuristicLab.Encodings.SchedulingEncoding-3.3.csproj">
+      <Project>{17F3EF80-B2C3-4B8D-A4D5-BE9CE3BA2606}</Project>
+      <Name>HeuristicLab.Encodings.SchedulingEncoding-3.3</Name>
+    </ProjectReference>
     <ProjectReference Include="..\..\..\HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Views\3.3\HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Views-3.3.csproj">
       <Project>{6F42C5F8-16CD-43EE-8208-FD4573A69D85}</Project>
