Changeset 8882


Ignore:
Timestamp:
11/08/12 13:31:18 (10 years ago)
Author:
abeham
Message:

#1329:

  • Added JSSPData class to problem instances
  • Added problem instance provider for some ORLIB JSSP instances (abz, ft, la01-20)
  • Adapted JSSP to load and export jssp problems
  • Adapted JSSP problem view to derive from ProblemView
  • Added static methods to MakespanEvaluator and MeanTardinessEvaluator
  • Fixed a bug in PRVUniformOnePositionManipulator
Location:
trunk/sources
Files:
13 added
4 deleted
17 edited

Legend:

Unmodified
Added
Removed
  • trunk/sources/HeuristicLab 3.3.sln

    r8801 r8882  
    8888    {B7A64A60-B538-479F-9C47-A3180C458F6C} = {B7A64A60-B538-479F-9C47-A3180C458F6C}
    8989    {0C378762-D5DB-488A-8931-2BA42B1B7CBF} = {0C378762-D5DB-488A-8931-2BA42B1B7CBF}
     90    {07486E68-1517-4B9D-A58D-A38E99AE71AB} = {07486E68-1517-4B9D-A58D-A38E99AE71AB}
    9091    {4AE3FC69-C575-42D2-BC46-0FAD5850EFC5} = {4AE3FC69-C575-42D2-BC46-0FAD5850EFC5}
    9192    {56F9106A-079F-4C61-92F6-86A84C2D84B7} = {56F9106A-079F-4C61-92F6-86A84C2D84B7}
     93    {9D792B6D-836B-46DC-9D69-50B4B1E7B87F} = {9D792B6D-836B-46DC-9D69-50B4B1E7B87F}
    9294    {399EBB6E-37A1-4AE4-B8CD-0D461FF286A3} = {399EBB6E-37A1-4AE4-B8CD-0D461FF286A3}
    9395    {3C906172-E044-4DF0-B4FD-AA21192D5D3E} = {3C906172-E044-4DF0-B4FD-AA21192D5D3E}
     
    129131    {66D249C3-A01D-42A8-82A2-919BC8EC3D83} = {66D249C3-A01D-42A8-82A2-919BC8EC3D83}
    130132    {E4CFB0C3-0589-4893-B38E-8BEDF885C765} = {E4CFB0C3-0589-4893-B38E-8BEDF885C765}
     133    {E6CB1FC5-78EC-4EB8-BF12-35303C36F962} = {E6CB1FC5-78EC-4EB8-BF12-35303C36F962}
    131134    {79271BC8-4446-40E2-BB89-9BE4E17174FE} = {79271BC8-4446-40E2-BB89-9BE4E17174FE}
    132135    {7A2531CE-3F7C-4F13-BCCA-ED6DC27A7086} = {7A2531CE-3F7C-4F13-BCCA-ED6DC27A7086}
     
    370373EndProject
    371374Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.Problems.DataAnalysis.Symbolic.TimeSeriesPrognosis.Views-3.4", "HeuristicLab.Problems.DataAnalysis.Symbolic.TimeSeriesPrognosis.Views\3.4\HeuristicLab.Problems.DataAnalysis.Symbolic.TimeSeriesPrognosis.Views-3.4.csproj", "{E6CB1FC5-78EC-4EB8-BF12-35303C36F962}"
     375EndProject
     376Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.Problems.Instances.Scheduling-3.3", "HeuristicLab.Problems.Instances.Scheduling\3.3\HeuristicLab.Problems.Instances.Scheduling-3.3.csproj", "{9D792B6D-836B-46DC-9D69-50B4B1E7B87F}"
    372377EndProject
    373378Global
     
    18091814    {E6CB1FC5-78EC-4EB8-BF12-35303C36F962}.Release|x86.ActiveCfg = Release|x86
    18101815    {E6CB1FC5-78EC-4EB8-BF12-35303C36F962}.Release|x86.Build.0 = Release|x86
     1816    {9D792B6D-836B-46DC-9D69-50B4B1E7B87F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
     1817    {9D792B6D-836B-46DC-9D69-50B4B1E7B87F}.Debug|Any CPU.Build.0 = Debug|Any CPU
     1818    {9D792B6D-836B-46DC-9D69-50B4B1E7B87F}.Debug|x64.ActiveCfg = Debug|x64
     1819    {9D792B6D-836B-46DC-9D69-50B4B1E7B87F}.Debug|x64.Build.0 = Debug|x64
     1820    {9D792B6D-836B-46DC-9D69-50B4B1E7B87F}.Debug|x86.ActiveCfg = Debug|x86
     1821    {9D792B6D-836B-46DC-9D69-50B4B1E7B87F}.Debug|x86.Build.0 = Debug|x86
     1822    {9D792B6D-836B-46DC-9D69-50B4B1E7B87F}.Release|Any CPU.ActiveCfg = Release|Any CPU
     1823    {9D792B6D-836B-46DC-9D69-50B4B1E7B87F}.Release|Any CPU.Build.0 = Release|Any CPU
     1824    {9D792B6D-836B-46DC-9D69-50B4B1E7B87F}.Release|x64.ActiveCfg = Release|x64
     1825    {9D792B6D-836B-46DC-9D69-50B4B1E7B87F}.Release|x64.Build.0 = Release|x64
     1826    {9D792B6D-836B-46DC-9D69-50B4B1E7B87F}.Release|x86.ActiveCfg = Release|x86
     1827    {9D792B6D-836B-46DC-9D69-50B4B1E7B87F}.Release|x86.Build.0 = Release|x86
    18111828  EndGlobalSection
    18121829  GlobalSection(SolutionProperties) = preSolution
  • trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/PriorityRulesVector/Manipulators/PRVUniformOnePositionManipulator.cs

    r8603 r8882  
    4343
    4444    public static void Apply(IRandom random, PRVEncoding individual) {
    45       UniformOnePositionManipulator.Apply(random, individual.PriorityRulesVector, new IntMatrix(new int[,] { { 0, 2 } }));
     45      UniformOnePositionManipulator.Apply(random, individual.PriorityRulesVector, new IntMatrix(new int[,] { { 0, individual.NrOfRules.Value } }));
    4646    }
    4747
  • trunk/sources/HeuristicLab.Problems.Instances/3.3/HeuristicLab.Problems.Instances-3.3.csproj

    r8600 r8882  
    115115    <Compile Include="IProblemInstanceExporter.cs" />
    116116    <Compile Include="Types\ATSPData.cs" />
     117    <Compile Include="Types\JSSPData.cs" />
    117118    <Compile Include="Types\CTAPData.cs" />
    118119    <Compile Include="IDataDescriptor.cs" />
     
    152153  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
    153154  <PropertyGroup>
    154    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">set Path=%25Path%25;$(ProjectDir);$(SolutionDir)
     155    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">set Path=%25Path%25;$(ProjectDir);$(SolutionDir)
    155156set ProjectDir=$(ProjectDir)
    156157set SolutionDir=$(SolutionDir)
     
    158159
    159160call PreBuildEvent.cmd</PreBuildEvent>
    160 <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
     161    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
    161162export ProjectDir=$(ProjectDir)
    162163export SolutionDir=$(SolutionDir)
  • trunk/sources/HeuristicLab.Problems.QuadraticAssignment.Views/3.3/HeuristicLab.Problems.QuadraticAssignment.Views-3.3.csproj

    r8600 r8882  
    212212  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
    213213  <PropertyGroup>
    214    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">set Path=%25Path%25;$(ProjectDir);$(SolutionDir)
     214    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">set Path=%25Path%25;$(ProjectDir);$(SolutionDir)
    215215set ProjectDir=$(ProjectDir)
    216216set SolutionDir=$(SolutionDir)
     
    220220SubWCRev "%25ProjectDir%25\" "%25ProjectDir%25\Plugin.cs.frame" "%25ProjectDir%25\Plugin.cs"
    221221</PreBuildEvent>
    222 <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
     222    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
    223223export ProjectDir=$(ProjectDir)
    224224export SolutionDir=$(SolutionDir)
  • trunk/sources/HeuristicLab.Problems.QuadraticAssignment.Views/3.3/QuadraticAssignmentProblemView.Designer.cs

    r7967 r8882  
    120120      this.qapView.Location = new System.Drawing.Point(3, 3);
    121121      this.qapView.Name = "qapView";
    122       this.qapView.Size = new System.Drawing.Size(497, 245);
     122      this.qapView.Size = new System.Drawing.Size(497, 274);
    123123      this.qapView.TabIndex = 0;
    124124      this.qapView.Weights = null;
     
    126126      // QuadraticAssignmentProblemView
    127127      //
    128       this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
    129128      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Inherit;
    130129      this.Name = "QuadraticAssignmentProblemView";
  • trunk/sources/HeuristicLab.Problems.QuadraticAssignment.Views/3.3/QuadraticAssignmentProblemView.cs

    r7878 r8882  
    5353    }
    5454
    55     private void DistanceMatrixParameter_ValueChanged(object sender, System.EventArgs e) {
     55    private void DistanceMatrixParameter_ValueChanged(object sender, EventArgs e) {
    5656      qapView.Distances = Content.Distances;
    5757    }
    5858
    59     private void WeightsParameter_ValueChanged(object sender, System.EventArgs e) {
     59    private void WeightsParameter_ValueChanged(object sender, EventArgs e) {
    6060      qapView.Weights = Content.Weights;
    6161    }
    6262
    63     private void BestKnownSolutionParameter_ValueChanged(object sender, System.EventArgs e) {
     63    private void BestKnownSolutionParameter_ValueChanged(object sender, EventArgs e) {
    6464      qapView.Assignment = Content.BestKnownSolution;
    6565    }
     
    7777      }
    7878    }
    79 
    80     protected override void SetEnabledStateOfControls() {
    81       base.SetEnabledStateOfControls();
    82     }
    8379  }
    8480}
  • trunk/sources/HeuristicLab.Problems.Scheduling.Views/3.3/HeuristicLab.Problems.Scheduling.Views-3.3.csproj

    r8806 r8882  
    115115    <Compile Include="Plugin.cs" />
    116116    <Compile Include="Properties\AssemblyInfo.cs" />
    117     <Compile Include="SchedulingProblemImportDialog.cs">
    118       <SubType>Form</SubType>
    119     </Compile>
    120     <Compile Include="SchedulingProblemImportDialog.Designer.cs">
    121       <DependentUpon>SchedulingProblemImportDialog.cs</DependentUpon>
    122     </Compile>
    123117  </ItemGroup>
    124118  <ItemGroup>
     
    128122  </ItemGroup>
    129123  <ItemGroup>
    130     <EmbeddedResource Include="JobShopSchedulingProblemView.resx">
    131       <DependentUpon>JobShopSchedulingProblemView.cs</DependentUpon>
    132     </EmbeddedResource>
    133     <EmbeddedResource Include="SchedulingProblemImportDialog.resx">
    134       <DependentUpon>SchedulingProblemImportDialog.cs</DependentUpon>
    135     </EmbeddedResource>
    136   </ItemGroup>
    137   <ItemGroup>
    138124    <ProjectReference Include="..\..\HeuristicLab.Collections\3.3\HeuristicLab.Collections-3.3.csproj">
    139125      <Project>{958B43BC-CC5C-4FA2-8628-2B3B01D890B6}</Project>
     
    176162      <Private>False</Private>
    177163    </ProjectReference>
     164    <ProjectReference Include="..\..\HeuristicLab.Optimization.Views\3.3\HeuristicLab.Optimization.Views-3.3.csproj">
     165      <Project>{662B4B15-8F4D-4AE5-B3EB-D91C215F5AF2}</Project>
     166      <Name>HeuristicLab.Optimization.Views-3.3</Name>
     167      <Private>False</Private>
     168    </ProjectReference>
    178169    <ProjectReference Include="..\..\HeuristicLab.Optimization\3.3\HeuristicLab.Optimization-3.3.csproj">
    179170      <Project>{14AB8D24-25BC-400C-A846-4627AA945192}</Project>
     
    185176      <Name>HeuristicLab.PluginInfrastructure-3.3</Name>
    186177      <Private>False</Private>
     178    </ProjectReference>
     179    <ProjectReference Include="..\..\HeuristicLab.Problems.Instances\3.3\HeuristicLab.Problems.Instances-3.3.csproj">
     180      <Project>{3540E29E-4793-49E7-8EE2-FEA7F61C3994}</Project>
     181      <Name>HeuristicLab.Problems.Instances-3.3</Name>
    187182    </ProjectReference>
    188183    <ProjectReference Include="..\..\HeuristicLab.Problems.Scheduling\3.3\HeuristicLab.Problems.Scheduling-3.3.csproj">
  • trunk/sources/HeuristicLab.Problems.Scheduling.Views/3.3/JobShopSchedulingProblemView.Designer.cs

    r6406 r8882  
    2525    /// </summary>
    2626    private void InitializeComponent() {
    27       this.importButton = new System.Windows.Forms.Button();
    28       this.parameterCollectionView = new HeuristicLab.Core.Views.ParameterCollectionView();
    29       this.tabControl1 = new System.Windows.Forms.TabControl();
    30       this.tabPage1 = new System.Windows.Forms.TabPage();
    31       this.tabPage2 = new System.Windows.Forms.TabPage();
    32       this.ganttChart = new GanttChart();
     27      this.problemTabControl = new System.Windows.Forms.TabControl();
     28      this.problemTabPage = new System.Windows.Forms.TabPage();
     29      this.visualizationTabPage = new System.Windows.Forms.TabPage();
     30      this.ganttChart = new HeuristicLab.Encodings.ScheduleEncoding.Views.GanttChart();
     31      ((System.ComponentModel.ISupportInitialize)(this.problemInstanceSplitContainer)).BeginInit();
     32      this.problemInstanceSplitContainer.Panel1.SuspendLayout();
     33      this.problemInstanceSplitContainer.Panel2.SuspendLayout();
     34      this.problemInstanceSplitContainer.SuspendLayout();
    3335      ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).BeginInit();
    34       this.tabControl1.SuspendLayout();
    35       this.tabPage1.SuspendLayout();
    36       this.tabPage2.SuspendLayout();
     36      this.problemTabControl.SuspendLayout();
     37      this.problemTabPage.SuspendLayout();
     38      this.visualizationTabPage.SuspendLayout();
    3739      this.SuspendLayout();
     40      //
     41      // problemInstanceSplitContainer
     42      //
     43      this.problemInstanceSplitContainer.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)));
     44      this.problemInstanceSplitContainer.Dock = System.Windows.Forms.DockStyle.Fill;
     45      //
     46      // problemInstanceSplitContainer.Panel2
     47      //
     48      this.problemInstanceSplitContainer.Panel2.Controls.Add(this.problemTabControl);
     49      //
     50      // ProblemInstanceConsumerViewHost
     51      //
     52      this.ProblemInstanceConsumerViewHost.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)));
     53      this.ProblemInstanceConsumerViewHost.Dock = System.Windows.Forms.DockStyle.Fill;
     54      this.ProblemInstanceConsumerViewHost.Location = new System.Drawing.Point(0, 0);
     55      this.ProblemInstanceConsumerViewHost.Size = new System.Drawing.Size(511, 26);
     56      //
     57      // parameterCollectionView
     58      //
     59      this.parameterCollectionView.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)));
     60      this.parameterCollectionView.Dock = System.Windows.Forms.DockStyle.Fill;
     61      this.parameterCollectionView.Location = new System.Drawing.Point(3, 3);
     62      this.parameterCollectionView.Size = new System.Drawing.Size(491, 271);
    3863      //
    3964      // nameTextBox
     
    4166      this.errorProvider.SetIconAlignment(this.nameTextBox, System.Windows.Forms.ErrorIconAlignment.MiddleLeft);
    4267      this.errorProvider.SetIconPadding(this.nameTextBox, 2);
    43       this.nameTextBox.Size = new System.Drawing.Size(650, 20);
     68      this.nameTextBox.Size = new System.Drawing.Size(439, 20);
    4469      //
    4570      // infoLabel
    4671      //
    47       this.infoLabel.Location = new System.Drawing.Point(714, 3);
     72      this.infoLabel.Location = new System.Drawing.Point(492, 3);
    4873      //
    49       // importButton
     74      // problemTabControl
    5075      //
    51       this.importButton.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
    52                   | System.Windows.Forms.AnchorStyles.Right)));
    53       this.importButton.Location = new System.Drawing.Point(6, 26);
    54       this.importButton.Name = "importButton";
    55       this.importButton.Size = new System.Drawing.Size(724, 23);
    56       this.importButton.TabIndex = 3;
    57       this.importButton.Text = "Import";
    58       this.importButton.UseVisualStyleBackColor = true;
    59       this.importButton.Click += new System.EventHandler(this.importButton_Click);
     76      this.problemTabControl.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
     77            | System.Windows.Forms.AnchorStyles.Left)
     78            | System.Windows.Forms.AnchorStyles.Right)));
     79      this.problemTabControl.Controls.Add(this.problemTabPage);
     80      this.problemTabControl.Controls.Add(this.visualizationTabPage);
     81      this.problemTabControl.Location = new System.Drawing.Point(3, 27);
     82      this.problemTabControl.Name = "problemTabControl";
     83      this.problemTabControl.SelectedIndex = 0;
     84      this.problemTabControl.Size = new System.Drawing.Size(505, 303);
     85      this.problemTabControl.TabIndex = 5;
    6086      //
    61       // parameterCollectionView
     87      // problemTabPage
    6288      //
    63       this.parameterCollectionView.AllowEditingOfHiddenParameters = true;
    64       this.parameterCollectionView.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
    65                   | System.Windows.Forms.AnchorStyles.Left)
    66                   | System.Windows.Forms.AnchorStyles.Right)));
    67       this.parameterCollectionView.Caption = "ParameterCollection View";
    68       this.parameterCollectionView.Content = null;
    69       this.parameterCollectionView.Location = new System.Drawing.Point(3, 0);
    70       this.parameterCollectionView.Name = "parameterCollectionView";
    71       this.parameterCollectionView.ReadOnly = false;
    72       this.parameterCollectionView.Size = new System.Drawing.Size(713, 387);
    73       this.parameterCollectionView.TabIndex = 4;
     89      this.problemTabPage.Controls.Add(this.parameterCollectionView);
     90      this.problemTabPage.Location = new System.Drawing.Point(4, 22);
     91      this.problemTabPage.Name = "problemTabPage";
     92      this.problemTabPage.Padding = new System.Windows.Forms.Padding(3);
     93      this.problemTabPage.Size = new System.Drawing.Size(497, 277);
     94      this.problemTabPage.TabIndex = 0;
     95      this.problemTabPage.Text = "Problem";
     96      this.problemTabPage.UseVisualStyleBackColor = true;
    7497      //
    75       // tabControl1
     98      // visualizationTabPage
    7699      //
    77       this.tabControl1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
    78                   | System.Windows.Forms.AnchorStyles.Left)
    79                   | System.Windows.Forms.AnchorStyles.Right)));
    80       this.tabControl1.Controls.Add(this.tabPage1);
    81       this.tabControl1.Controls.Add(this.tabPage2);
    82       this.tabControl1.Location = new System.Drawing.Point(6, 56);
    83       this.tabControl1.Name = "tabControl1";
    84       this.tabControl1.SelectedIndex = 0;
    85       this.tabControl1.Size = new System.Drawing.Size(724, 413);
    86       this.tabControl1.TabIndex = 5;
    87       //
    88       // tabPage1
    89       //
    90       this.tabPage1.Controls.Add(this.parameterCollectionView);
    91       this.tabPage1.Location = new System.Drawing.Point(4, 22);
    92       this.tabPage1.Name = "tabPage1";
    93       this.tabPage1.Padding = new System.Windows.Forms.Padding(3);
    94       this.tabPage1.Size = new System.Drawing.Size(716, 387);
    95       this.tabPage1.TabIndex = 0;
    96       this.tabPage1.Text = "Problem";
    97       this.tabPage1.UseVisualStyleBackColor = true;
    98       //
    99       // tabPage2
    100       //
    101       this.tabPage2.Controls.Add(this.ganttChart);
    102       this.tabPage2.Location = new System.Drawing.Point(4, 22);
    103       this.tabPage2.Name = "tabPage2";
    104       this.tabPage2.Padding = new System.Windows.Forms.Padding(3);
    105       this.tabPage2.Size = new System.Drawing.Size(716, 387);
    106       this.tabPage2.TabIndex = 1;
    107       this.tabPage2.Text = "Visualization";
    108       this.tabPage2.UseVisualStyleBackColor = true;
     100      this.visualizationTabPage.Controls.Add(this.ganttChart);
     101      this.visualizationTabPage.Location = new System.Drawing.Point(4, 22);
     102      this.visualizationTabPage.Name = "visualizationTabPage";
     103      this.visualizationTabPage.Padding = new System.Windows.Forms.Padding(3);
     104      this.visualizationTabPage.Size = new System.Drawing.Size(497, 277);
     105      this.visualizationTabPage.TabIndex = 1;
     106      this.visualizationTabPage.Text = "Visualization";
     107      this.visualizationTabPage.UseVisualStyleBackColor = true;
    109108      //
    110109      // ganttChart
    111110      //
    112       this.ganttChart.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
    113                   | System.Windows.Forms.AnchorStyles.Left)
    114                   | System.Windows.Forms.AnchorStyles.Right)));
    115       this.ganttChart.Location = new System.Drawing.Point(0, 3);
     111      this.ganttChart.Dock = System.Windows.Forms.DockStyle.Fill;
     112      this.ganttChart.Location = new System.Drawing.Point(3, 3);
    116113      this.ganttChart.Name = "ganttChart";
    117       this.ganttChart.Size = new System.Drawing.Size(716, 384);
     114      this.ganttChart.Size = new System.Drawing.Size(491, 271);
    118115      this.ganttChart.TabIndex = 0;
    119116      //
     
    122119      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
    123120      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
    124       this.Controls.Add(this.tabControl1);
    125       this.Controls.Add(this.importButton);
    126121      this.Name = "JobShopSchedulingProblemView";
    127       this.Size = new System.Drawing.Size(733, 472);
    128       this.Controls.SetChildIndex(this.importButton, 0);
    129       this.Controls.SetChildIndex(this.nameLabel, 0);
    130       this.Controls.SetChildIndex(this.nameTextBox, 0);
    131       this.Controls.SetChildIndex(this.infoLabel, 0);
    132       this.Controls.SetChildIndex(this.tabControl1, 0);
     122      this.problemInstanceSplitContainer.Panel1.ResumeLayout(false);
     123      this.problemInstanceSplitContainer.Panel2.ResumeLayout(false);
     124      this.problemInstanceSplitContainer.Panel2.PerformLayout();
     125      ((System.ComponentModel.ISupportInitialize)(this.problemInstanceSplitContainer)).EndInit();
     126      this.problemInstanceSplitContainer.ResumeLayout(false);
    133127      ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).EndInit();
    134       this.tabControl1.ResumeLayout(false);
    135       this.tabPage1.ResumeLayout(false);
    136       this.tabPage2.ResumeLayout(false);
     128      this.problemTabControl.ResumeLayout(false);
     129      this.problemTabPage.ResumeLayout(false);
     130      this.visualizationTabPage.ResumeLayout(false);
    137131      this.ResumeLayout(false);
    138       this.PerformLayout();
    139132
    140133    }
     
    142135    #endregion
    143136
    144     private System.Windows.Forms.Button importButton;
    145     private Core.Views.ParameterCollectionView parameterCollectionView;
    146     private System.Windows.Forms.TabControl tabControl1;
    147     private System.Windows.Forms.TabPage tabPage1;
    148     private System.Windows.Forms.TabPage tabPage2;
     137    private System.Windows.Forms.TabControl problemTabControl;
     138    private System.Windows.Forms.TabPage problemTabPage;
     139    private System.Windows.Forms.TabPage visualizationTabPage;
    149140    private GanttChart ganttChart;
    150141  }
  • trunk/sources/HeuristicLab.Problems.Scheduling.Views/3.3/JobShopSchedulingProblemView.cs

    r8603 r8882  
    2020#endregion
    2121
    22 using System;
    2322using System.Windows.Forms;
    24 using HeuristicLab.Core;
    25 using HeuristicLab.Core.Views;
    26 using HeuristicLab.Encodings.ScheduleEncoding;
    2723using HeuristicLab.MainForm;
    28 using HeuristicLab.PluginInfrastructure;
     24using HeuristicLab.Optimization.Views;
    2925
    3026namespace HeuristicLab.Problems.Scheduling.Views {
    3127  [View("JobShop Scheduling Problem View")]
    3228  [Content(typeof(JobShopSchedulingProblem), true)]
    33   public partial class JobShopSchedulingProblemView : NamedItemView {
    34     public JobShopSchedulingProblemView() {
    35       InitializeComponent();
    36     }
    37     private SchedulingProblemImportDialog spImportDialog;
     29  public partial class JobShopSchedulingProblemView : ProblemView {
    3830
    3931    public new JobShopSchedulingProblem Content {
     
    4234    }
    4335
     36    public JobShopSchedulingProblemView() {
     37      InitializeComponent();
     38      Controls.Remove(parameterCollectionView);
     39      parameterCollectionView.Dock = DockStyle.Fill;
     40      problemTabPage.Controls.Add(parameterCollectionView);
     41    }
     42
    4443    protected override void OnContentChanged() {
    4544      base.OnContentChanged();
    4645      if (Content == null) {
    47         parameterCollectionView.Content = null;
    4846        ganttChart.Reset();
    4947      } else {
    50         parameterCollectionView.Content = ((IParameterizedNamedItem)Content).Parameters;
    5148        FillGanttChart(Content);
    5249      }
     
    5451
    5552    private void FillGanttChart(JobShopSchedulingProblem content) {
    56       //Add Jobs as Categories
    5753      ganttChart.Reset();
    5854      int jobCount = 0;
    59       Random random = new Random(1);
    60       foreach (Job j in content.JobData) {
     55      foreach (var j in content.JobData) {
    6156        double lastEndTime = 0;
    62         foreach (Task t in content.JobData[jobCount].Tasks) {
     57        foreach (var t in content.JobData[jobCount].Tasks) {
    6358          int categoryNr = t.JobNr;
    6459          string categoryName = "Job" + categoryNr;
     
    7469      }
    7570    }
    76 
    77     protected override void SetEnabledStateOfControls() {
    78       base.SetEnabledStateOfControls();
    79       parameterCollectionView.Enabled = Content != null;
    80       importButton.Enabled = Content != null && !ReadOnly;
    81     }
    82 
    83     private void importButton_Click(object sender, EventArgs e) {
    84       if (spImportDialog == null) spImportDialog = new SchedulingProblemImportDialog();
    85 
    86       if (spImportDialog.ShowDialog(this) == DialogResult.OK) {
    87         try {
    88           switch (spImportDialog.Format) {
    89             case SPFormat.ORLib:
    90               Content.ImportFromORLibrary(spImportDialog.SPFileName);
    91               break;
    92           }
    93 
    94 
    95           if (!string.IsNullOrEmpty(spImportDialog.OptimalScheduleFileName))
    96             Content.ImportJSMSolution(spImportDialog.OptimalScheduleFileName);
    97           OnContentChanged();
    98         }
    99         catch (Exception ex) {
    100           ErrorHandling.ShowErrorDialog(this, ex);
    101         }
    102       }
    103     }
    10471  }
    10572}
  • trunk/sources/HeuristicLab.Problems.Scheduling.Views/3.3/Plugin.cs.frame

    r8603 r8882  
    3232  [PluginDependency("HeuristicLab.MainForm", "3.3")]
    3333  [PluginDependency("HeuristicLab.MainForm.WindowsForms", "3.3")]
     34  [PluginDependency("HeuristicLab.Optimization", "3.3")]
     35  [PluginDependency("HeuristicLab.Optimization.Views", "3.3")]
    3436  [PluginDependency("HeuristicLab.Problems.Scheduling", "3.3")]
    3537  public class HeuristicLabProblemsSchedulingViewsPlugin : PluginBase {
  • trunk/sources/HeuristicLab.Problems.Scheduling/3.3/Evaluators/MakespanEvaluator.cs

    r8603 r8882  
    2020#endregion
    2121
     22using System.Linq;
    2223using HeuristicLab.Common;
    2324using HeuristicLab.Core;
     
    4142    public MakespanEvaluator() : base() { }
    4243
    43     protected override DoubleValue evaluate(Schedule schedule) {
    44       DoubleValue quality = new DoubleValue(0);
    45       foreach (Resource r in schedule.Resources) {
    46         if (r.TotalDuration > quality.Value) {
    47           quality.Value = r.TotalDuration;
    48         }
    49       }
    50       return quality;
     44    public static double GetMakespan(Schedule schedule) {
     45      return schedule.Resources.Select(r => r.TotalDuration).Max();
     46    }
     47
     48    protected override DoubleValue Evaluate(Schedule schedule) {
     49      return new DoubleValue(GetMakespan(schedule));
    5150    }
    5251
  • trunk/sources/HeuristicLab.Problems.Scheduling/3.3/Evaluators/MeanTardinessEvaluator.cs

    r8603 r8882  
    2020#endregion
    2121
     22using System;
     23using System.Linq;
    2224using HeuristicLab.Common;
    2325using HeuristicLab.Core;
     
    3133  [StorableClass]
    3234  public class MeanTardinessEvaluator : SchedulingEvaluator, IJSSPOperator {
     35
    3336    [StorableConstructor]
    3437    protected MeanTardinessEvaluator(bool deserializing) : base(deserializing) { }
    35     protected MeanTardinessEvaluator(MeanTardinessEvaluator original, Cloner cloner)
    36       : base(original, cloner) {
    37     }
     38    protected MeanTardinessEvaluator(MeanTardinessEvaluator original, Cloner cloner) : base(original, cloner) { }
    3839    public override IDeepCloneable Clone(Cloner cloner) {
    3940      return new MeanTardinessEvaluator(this, cloner);
     
    4546    }
    4647    #endregion
    47     #region Properties
    48     public ItemList<Job> JobData {
    49       get { return JobDataParameter.ActualValue; }
    50     }
    51     #endregion
    5248
    5349    public MeanTardinessEvaluator()
     
    5652    }
    5753
    58     protected override DoubleValue evaluate(Schedule schedule) {
    59       double totalTardiness = 0;
    60       foreach (Resource r in schedule.Resources) {
    61         double tardiness = r.Tasks[r.Tasks.Count - 1].EndTime - JobData[r.Tasks[r.Tasks.Count - 1].JobNr].DueDate;
    62         if (tardiness > 0)
    63           totalTardiness += tardiness;
    64       }
    65       return new DoubleValue(totalTardiness / schedule.Resources.Count);
     54    public static double GetMeanTardiness(Schedule schedule, ItemList<Job> jobData) {
     55      return schedule.Resources
     56        .Select(r => Math.Max(0, r.Tasks.Last().EndTime - jobData[r.Tasks.Last().JobNr].DueDate))
     57        .Average();
    6658    }
    6759
    68     public override IOperation Apply() {
    69       return base.Apply();
     60    protected override DoubleValue Evaluate(Schedule schedule) {
     61      return new DoubleValue(GetMeanTardiness(schedule, JobDataParameter.ActualValue));
    7062    }
    7163  }
  • trunk/sources/HeuristicLab.Problems.Scheduling/3.3/Evaluators/SchedulingEvaluator.cs

    r8603 r8882  
    6161    }
    6262
    63     protected abstract DoubleValue evaluate(Schedule schedule);
     63    protected abstract DoubleValue Evaluate(Schedule schedule);
    6464
    6565    public override IOperation Apply() {
    6666      Schedule schedule = ScheduleParameter.ActualValue;
    67       QualityParameter.ActualValue = evaluate(schedule);
     67      QualityParameter.ActualValue = Evaluate(schedule);
    6868      return base.Apply();
    6969    }
  • trunk/sources/HeuristicLab.Problems.Scheduling/3.3/HeuristicLab.Problems.Scheduling-3.3.csproj

    r8800 r8882  
    193193      <Private>False</Private>
    194194    </ProjectReference>
     195    <ProjectReference Include="..\..\HeuristicLab.Problems.Instances\3.3\HeuristicLab.Problems.Instances-3.3.csproj">
     196      <Project>{3540E29E-4793-49E7-8EE2-FEA7F61C3994}</Project>
     197      <Name>HeuristicLab.Problems.Instances-3.3</Name>
     198      <Private>False</Private>
     199    </ProjectReference>
    195200  </ItemGroup>
    196201  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
  • trunk/sources/HeuristicLab.Problems.Scheduling/3.3/JobShopSchedulingProblem.cs

    r8603 r8882  
    2020#endregion
    2121
    22 using System;
    23 using System.Collections.Generic;
    2422using System.Drawing;
    25 using System.IO;
    2623using HeuristicLab.Common;
    2724using HeuristicLab.Core;
     
    3532using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
    3633using HeuristicLab.PluginInfrastructure;
     34using HeuristicLab.Problems.Instances;
    3735
    3836namespace HeuristicLab.Problems.Scheduling {
    39   [Item("JobShop Scheduling Problem", "Represents a standard JobShop Scheduling Problem")]
     37  [Item("Job Shop Scheduling Problem", "Represents a standard Job Shop Scheduling Problem")]
    4038  [Creatable("Problems")]
    4139  [StorableClass]
    42   public sealed class JobShopSchedulingProblem : SchedulingProblem, IStorableContent {
     40  public sealed class JobShopSchedulingProblem : SchedulingProblem, IProblemInstanceConsumer<JSSPData>, IProblemInstanceExporter<JSSPData>, IStorableContent {
     41    #region Default Instance
     42    private static readonly JSSPData DefaultInstance = new JSSPData() {
     43      Jobs = 10,
     44      Resources = 10,
     45      BestKnownQuality = 930,
     46      ProcessingTimes = new double[,] {
     47          { 29, 78,  9, 36, 49, 11, 62, 56, 44, 21 },
     48          { 43, 90, 75, 11, 69, 28, 46, 46, 72, 30 },
     49          { 91, 85, 39, 74, 90, 10, 12, 89, 45, 33 },
     50          { 81, 95, 71, 99,  9, 52, 85, 98, 22, 43 },
     51          { 14,  6, 22, 61, 26, 69, 21, 49, 72, 53 },
     52          { 84,  2, 52, 95, 48, 72, 47, 65,  6, 25 },
     53          { 46, 37, 61, 13, 32, 21, 32, 89, 30, 55 },
     54          { 31, 86, 46, 74, 32, 88, 19, 48, 36, 79 },
     55          { 76, 69, 76, 51, 85, 11, 40, 89, 26, 74 },
     56          { 85, 13, 61,  7, 64, 76, 47, 52, 90, 45 }
     57        },
     58      Demands = new int[,] {
     59          { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 },
     60          { 0, 2, 4, 9, 3, 1, 6, 5, 7, 8 },
     61          { 1, 0, 3, 2, 8, 5, 7, 6, 9, 4 },
     62          { 1, 2, 0, 4, 6, 8, 7, 3, 9, 5 },
     63          { 2, 0, 1, 5, 3, 4, 8, 7, 9, 6 },
     64          { 2, 1, 5, 3, 8, 9, 0, 6, 4, 7 },
     65          { 1, 0, 3, 2, 6, 5, 9, 8, 7, 4 },
     66          { 2, 0, 1, 5, 4, 6, 8, 9, 7, 3 },
     67          { 0, 1, 3, 5, 2, 9, 6, 7, 4, 8 },
     68          { 1, 0, 2, 6, 8, 9, 5, 3, 4, 7 }
     69        }
     70    };
     71    #endregion
     72
    4373    #region Parameter Properties
    4474    public ValueParameter<ItemList<Job>> JobDataParameter {
     
    105135
    106136      InitializeOperators();
    107       InitializeProblemInstance();
     137      Load(DefaultInstance);
    108138    }
    109139
     
    121151      InitializeOperators();
    122152    }
    123 
    124     protected override void OnEvaluatorChanged() {
    125       base.OnEvaluatorChanged();
     153    #endregion
     154
     155    #region Problem Instance Handling
     156    public void Load(JSSPData data) {
     157      var jobData = new ItemList<Job>(data.Jobs);
     158      for (int j = 0; j < data.Jobs; j++) {
     159        var job = new Job(j, data.DueDates != null ? data.DueDates[j] : double.MaxValue);
     160        for (int t = 0; t < data.Resources; t++) {
     161          job.Tasks.Add(new Task(t, data.Demands[j, t], j, data.ProcessingTimes[j, t]));
     162        }
     163        jobData.Add(job);
     164      }
     165
     166      if (data.BestKnownQuality.HasValue) BestKnownQuality = new DoubleValue(data.BestKnownQuality.Value);
     167      else BestKnownQuality = null;
     168      if (data.BestKnownSchedule != null) {
     169        var enc = new JSMEncoding();
     170        enc.JobSequenceMatrix = new ItemList<Permutation>(data.Resources);
     171        for (int i = 0; i < data.Resources; i++) {
     172          enc.JobSequenceMatrix[i] = new Permutation(PermutationTypes.Absolute, new int[data.Jobs]);
     173          for (int j = 0; j < data.Jobs; j++) {
     174            enc.JobSequenceMatrix[i][j] = data.BestKnownSchedule[i, j];
     175          }
     176        }
     177        BestKnownSolution = new JSMDecoder().CreateScheduleFromEncoding(enc, jobData);
     178        if (SolutionEvaluator is MeanTardinessEvaluator)
     179          BestKnownQuality = new DoubleValue(MeanTardinessEvaluator.GetMeanTardiness(BestKnownSolution, jobData));
     180        else if (SolutionEvaluator is MakespanEvaluator)
     181          BestKnownQuality = new DoubleValue(MakespanEvaluator.GetMakespan(BestKnownSolution));
     182      }
     183
     184      JobData = jobData;
     185      Jobs = new IntValue(data.Jobs);
     186      Resources = new IntValue(data.Resources);
     187      DueDates = new BoolValue(data.DueDates != null);
     188    }
     189
     190    public JSSPData Export() {
     191      var result = new JSSPData {
     192        Name = Name,
     193        Description = Description,
     194        Jobs = Jobs.Value,
     195        Resources = Resources.Value,
     196        ProcessingTimes = new double[Jobs.Value, Resources.Value],
     197        Demands = new int[Jobs.Value, Resources.Value],
     198        DueDates = (DueDates.Value ? new double[Jobs.Value] : null)
     199      };
     200
     201      foreach (var job in JobData) {
     202        var counter = 0;
     203        if (DueDates.Value) result.DueDates[job.Index] = job.DueDate;
     204        foreach (var task in job.Tasks) {
     205          result.ProcessingTimes[task.JobNr, counter] = task.Duration;
     206          result.Demands[task.JobNr, counter] = task.ResourceNr;
     207          counter++;
     208        }
     209      }
     210      return result;
    126211    }
    127212    #endregion
    128213
    129214    #region Helpers
    130     private void InitializeProblemInstance() {
    131       Jobs = new IntValue(10);
    132       Resources = new IntValue(10);
    133       BestKnownQuality = new DoubleValue(930);
    134       JobData = new ItemList<Job>();
    135       List<string> data = new List<string>
    136       {"0 29 1 78 2  9 3 36 4 49 5 11 6 62 7 56 8 44 9 21",
    137        "0 43 2 90 4 75 9 11 3 69 1 28 6 46 5 46 7 72 8 30",
    138        "1 91 0 85 3 39 2 74 8 90 5 10 7 12 6 89 9 45 4 33",
    139        "1 81 2 95 0 71 4 99 6  9 8 52 7 85 3 98 9 22 5 43",
    140        "2 14 0  6 1 22 5 61 3 26 4 69 8 21 7 49 9 72 6 53",
    141        "2 84 1  2 5 52 3 95 8 48 9 72 0 47 6 65 4  6 7 25",
    142        "1 46 0 37 3 61 2 13 6 32 5 21 9 32 8 89 7 30 4 55",
    143        "2 31 0 86 1 46 5 74 4 32 6 88 8 19 9 48 7 36 3 79",
    144        "0 76 1 69 3 76 5 51 2 85 9 11 6 40 7 89 4 26 8 74",
    145        "1 85 0 13 2 61 6  7 8 64 9 76 5 47 3 52 4 90 7 45" };
    146 
    147       int jobCount = 0;
    148       foreach (string s in data) {
    149         List<string> split = SplitString(s);
    150         JobData.Add(CreateJobFromData(split, jobCount++));
    151       }
    152     }
    153 
    154215    private void InitializeOperators() {
    155216      Operators.Clear();
     
    159220
    160221    private void ApplyEncoding() {
    161       if (SolutionCreator.GetType().Equals(typeof(JSMRandomCreator))) {
     222      if (SolutionCreator.GetType() == typeof(JSMRandomCreator)) {
    162223        Operators.AddRange(ApplicationManager.Manager.GetInstances<IJSMOperator>());
    163         JSMDecoder decoder = new JSMDecoder();
    164         ((SchedulingEvaluationAlgorithm)this.EvaluatorParameter.ActualValue).InitializeOperatorGraph<JSMEncoding>(decoder);
    165       } else {
    166         if (SolutionCreator.GetType().Equals(typeof(PRVRandomCreator))) {
    167           Operators.AddRange(ApplicationManager.Manager.GetInstances<IPRVOperator>());
    168           PRVDecoder decoder = new PRVDecoder();
    169           ((SchedulingEvaluationAlgorithm)this.EvaluatorParameter.ActualValue).InitializeOperatorGraph<PRVEncoding>(decoder);
    170         } else {
    171           if (SolutionCreator.GetType().Equals(typeof(PWRRandomCreator))) {
    172             Operators.AddRange(ApplicationManager.Manager.GetInstances<IPWROperator>());
    173             PWRDecoder decoder = new PWRDecoder();
    174             ((SchedulingEvaluationAlgorithm)this.EvaluatorParameter.ActualValue).InitializeOperatorGraph<PWREncoding>(decoder);
    175           } else {
    176             if (SolutionCreator.GetType().Equals(typeof(DirectScheduleRandomCreator))) {
    177               Operators.AddRange(ApplicationManager.Manager.GetInstances<IDirectScheduleOperator>());
    178               ((SchedulingEvaluationAlgorithm)this.EvaluatorParameter.ActualValue).InitializeOperatorGraph<Schedule>();
    179             }
    180           }
    181         }
    182       }
    183     }
    184     #endregion
    185 
    186     #region Importmethods
    187     private List<string> SplitString(string line) {
    188       if (line == null)
    189         return null;
    190       List<string> data = new List<string>(line.Split(' '));
    191       List<string> result = new List<string>();
    192 
    193       foreach (string s in data) {
    194         if (!String.IsNullOrEmpty(s) && s != "" && s != " ")
    195           result.Add(s);
    196       }
    197 
    198       return result;
    199     }
    200     private int[] GetIntArray(List<string> data) {
    201       int[] arr = new int[data.Count];
    202       for (int i = 0; i < data.Count; i++) {
    203         arr[i] = Int32.Parse(data[i]);
    204       }
    205       return arr;
    206     }
    207     private Job CreateJobFromData(List<string> data, int jobCount) {
    208       double dueDate = 0;
    209       int dataCount = data.Count;
    210       if (DueDates.Value) {
    211         dueDate = Double.Parse(data[data.Count - 1]);
    212         dataCount--;
    213       }
    214       Job j = new Job(jobCount, dueDate);
    215       for (int i = 0; i < dataCount; i++) {
    216         Task t = new Task(i / 2, Int32.Parse(data[i]), jobCount, Double.Parse(data[i + 1]));
    217         j.Tasks.Add(t);
    218         i++;
    219       }//for
    220       return j;
    221     }
    222 
    223     public void ImportFromORLibrary(string fileName) {
    224       if (!File.Exists(fileName))
    225         return;
    226       StreamReader problemFile = new StreamReader(fileName);
    227       //assures that the parser only reads the first problem instance given in the file
    228       bool problemFound = false;
    229 
    230       JobData = new ItemList<Job>();
    231 
    232       while (!problemFile.EndOfStream && !problemFound) {
    233         string line = problemFile.ReadLine();
    234         List<string> data = SplitString(line);
    235         if (data.Count > 0 && ((int)data[0][0] >= 48 && (int)data[0][0] <= 57)) {
    236           int jobCount = 0;
    237           Jobs = new IntValue(Int32.Parse(data[0]));
    238           Resources = new IntValue(Int32.Parse(data[1]));
    239           //data[2] = bestKnownQuality (double)
    240           //data[3] = dueDates (0|1)
    241           DueDates.Value = false;
    242           if (data.Count > 2)
    243             BestKnownQualityParameter.ActualValue = new DoubleValue(Double.Parse(data[2]));
    244           if (data.Count > 3 && data[3] == "1")
    245             DueDates.Value = true;
    246           line = problemFile.ReadLine();
    247           data = SplitString(line);
    248           while (!problemFile.EndOfStream && data.Count > 0 && ((int)data[0][0] >= 48 && (int)data[0][0] <= 57)) {
    249             Job j = CreateJobFromData(data, jobCount);
    250             this.JobData.Add(j);
    251             jobCount++;
    252             line = problemFile.ReadLine();
    253             data = SplitString(line);
    254           }//while
    255           problemFound = true;
    256         }//if
    257       }//while
    258       problemFile.Close();
    259     }
    260 
    261     public void ImportJSMSolution(string fileName) {
    262       if (!File.Exists(fileName))
    263         return;
    264       StreamReader solutionFile = new StreamReader(fileName);
    265       //assures that the parser only reads the first solution instance given in the file
    266       bool solutionFound = false;
    267       JSMEncoding solution = new JSMEncoding();
    268       while (!solutionFile.EndOfStream && !solutionFound) {
    269 
    270         string line = solutionFile.ReadLine();
    271         List<string> data = SplitString(line);
    272         if (data.Count > 0 && ((int)data[0][0] >= 48 && (int)data[0][0] <= 57)) {
    273           if (data.Count > 2)
    274             BestKnownQualityParameter.ActualValue = new DoubleValue(Double.Parse(data[2]));
    275           line = solutionFile.ReadLine();
    276           data = SplitString(line);
    277           while (data != null && data.Count > 0 && ((int)data[0][0] >= 48 && (int)data[0][0] <= 57)) {
    278             Permutation p = new Permutation(PermutationTypes.Absolute, GetIntArray(data));
    279             solution.JobSequenceMatrix.Add(p);
    280 
    281             line = solutionFile.ReadLine();
    282             data = SplitString(line);
    283           }//while
    284           solutionFound = true;
    285         }//if
    286       }//while
    287       solutionFile.Close();
    288 
    289       JSMDecoder decoder = new JSMDecoder();
    290       Schedule result = decoder.CreateScheduleFromEncoding(solution, JobData);
    291       BestKnownSolution = result;
     224        var decoder = new JSMDecoder();
     225        ((SchedulingEvaluationAlgorithm)EvaluatorParameter.ActualValue).InitializeOperatorGraph(decoder);
     226      } else if (SolutionCreator.GetType() == typeof(PRVRandomCreator)) {
     227        Operators.AddRange(ApplicationManager.Manager.GetInstances<IPRVOperator>());
     228        var decoder = new PRVDecoder();
     229        ((SchedulingEvaluationAlgorithm)EvaluatorParameter.ActualValue).InitializeOperatorGraph(decoder);
     230      } else if (SolutionCreator.GetType() == typeof(PWRRandomCreator)) {
     231        Operators.AddRange(ApplicationManager.Manager.GetInstances<IPWROperator>());
     232        var decoder = new PWRDecoder();
     233        ((SchedulingEvaluationAlgorithm)EvaluatorParameter.ActualValue).InitializeOperatorGraph(decoder);
     234      } else if (SolutionCreator.GetType() == typeof(DirectScheduleRandomCreator)) {
     235        Operators.AddRange(ApplicationManager.Manager.GetInstances<IDirectScheduleOperator>());
     236        ((SchedulingEvaluationAlgorithm)EvaluatorParameter.ActualValue).InitializeOperatorGraph<Schedule>();
     237      }
    292238    }
    293239    #endregion
  • trunk/sources/HeuristicLab.Problems.Scheduling/3.3/Plugin.cs.frame

    r8603 r8882  
    3737  [PluginDependency("HeuristicLab.Parameters", "3.3")]
    3838  [PluginDependency("HeuristicLab.Persistence", "3.3")]
     39  [PluginDependency("HeuristicLab.Problems.Instances", "3.3")]
    3940  public class HeuristicLabProblemsSchedulingPlugin : PluginBase {
    4041  }
  • trunk/sources/HeuristicLab.Tests/HeuristicLab.Tests.csproj

    r8798 r8882  
    230230    <Reference Include="HeuristicLab.Problems.Instances.QAPLIB-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
    231231      <HintPath>..\bin\HeuristicLab.Problems.Instances.QAPLIB-3.3.dll</HintPath>
     232    </Reference>
     233    <Reference Include="HeuristicLab.Problems.Instances.Scheduling-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
     234      <HintPath>..\bin\HeuristicLab.Problems.Instances.Scheduling-3.3.dll</HintPath>
    232235    </Reference>
    233236    <Reference Include="HeuristicLab.Problems.Instances.TSPLIB-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
Note: See TracChangeset for help on using the changeset viewer.