Opened 12 months ago

Last modified 5 months ago

#2864 assigned feature request

Implementation of PFSP and LOP

Reported by: fholzing Owned by: fholzing
Priority: low Milestone: HeuristicLab 3.3.16
Component: Problems Version: branch
Keywords: PFSP LOP Cc:

Description (last modified by fholzing)

The Permutation Flowshop Scheduling Problem (PFSP) and the Linear Ordering Problem (LOP) are two permutation based, combinatorial optimization problems. Both problems have been implemented in HeuristicLab by Florian Holzinger in his master's Thesis (Permutationsbasierte Benchmarkprobleme) and shall now be adapted to the HeuristicLab-coding guidelines, reviewed and finally checked in.

Update: The Problems should be implemented as BasicProblems

Change History (34)

comment:1 Changed 12 months ago by gkronber

What's PFSP and LOP?

Please add a description.

comment:2 Changed 12 months ago by fholzing

  • Description modified (diff)

comment:3 Changed 12 months ago by fholzing

  • Description modified (diff)
  • Type changed from task to feature request

comment:4 Changed 12 months ago by fholzing

  • Status changed from new to accepted

comment:5 Changed 12 months ago by fholzing

r15521: First commit of new branch of Permutation based benchmark problems.

comment:6 Changed 12 months ago by fholzing

r15541: CleanUp of old code, added LOP benchmark instances

comment:7 Changed 12 months ago by fholzing

r15542: Delete obj

comment:8 Changed 12 months ago by fholzing

r15544: Deleted unused files

comment:9 Changed 12 months ago by fholzing

  • Owner changed from fholzing to mkommend
  • Status changed from accepted to reviewing

comment:10 Changed 12 months ago by mkommend

  • Version set to branch

comment:11 Changed 11 months ago by fholzing

  • Owner changed from mkommend to fholzing
  • Status changed from reviewing to assigned

Additional Task: Change to BasicProblem

comment:12 Changed 11 months ago by fholzing

  • Description modified (diff)

comment:13 Changed 11 months ago by fholzing

r15639: Adapted PFSP and LOP to the new BasicProblem

comment:14 Changed 11 months ago by fholzing

r15640: Adapted PFSP and LOP to the new BasicProblem

comment:15 Changed 11 months ago by fholzing

r15661: Simplified Project-Structure

comment:16 Changed 11 months ago by fholzing

r15662: Removed old projects

comment:17 Changed 11 months ago by fholzing

r15663: Ignore obj-folder

comment:18 Changed 11 months ago by fholzing

r15664: Ignore obj-folder

comment:19 Changed 11 months ago by fholzing

  • Owner changed from fholzing to abeham
  • Status changed from assigned to reviewing

comment:20 Changed 11 months ago by fholzing

r15686: Adapted to new trunk-structure

comment:21 Changed 10 months ago by abeham

Reviewing the branch:

  • Please activate remove and sort usings on save
  • Please adhere to the developer guidelines, we use K&R style braces
  • Use english names and descriptions, e.g. SuperDiagonale -> Superdiagonal
  • Update all license headers' dates (including .frame files)
  • Some projects do not have x86/x64 platform configurations
  • LinearOrderingProblem.cs
    • Matrix seems like an essential parameter, it should not be an OptionalValueParameter, but a normal ValueParameter
    • An event handler must be attached to changes to the Parameter that contains the matrix, as well as to the matrix itself. This event handler must also be attached in an after deserialization hook and in the cloning and default ctor. In case the parameter's value changes the event handler to the matrix needs to be reattached. In case the matrix is changed the encoding dimension need to be adapted. In this case, an exception should not be thrown on non-square matrices, as a matrix may sequentially change row and then column information
    • Load(LOPData) should check if it's a square matrix and otherwise throw an exception
    • The problem should implement the Analyze method to add a visual representation of the best solution to the results, respectively update the BestKnownQuality and BestKnownSolution
    • line 53: move the event closer to the method that raises it, is this event really necessary? Nobody listens to it and one could easily subscribe to the BestKnownSolutionParameter's ValueChanged event.
    • line 119: use permut instead of data.BestKnownPermutation
    • line 128: check if BestKnownQuality is double.NaN in which case set null
    • line 129: fix possible NullReferenceException when BestKnownSolution is null
    • line 138: the ToArray() call is a waste of time
    • line 148: change the signature of Evaluate(int[], DoubleMatrix) to Evaluate(Permutation, DoubleMatrix), wrap in a Permutation during Load(LOPData) -> Load is not performance critical, but Evaluate is, move the method closer to the actual Evaluate method and outside the "Helper Methods" region
  • PermutationFlowshopSchedulingProblem.cs
    • The JobMatrix should not be an OptionalValueParameter, it's essential for the problem, it should not contain null
    • several of the remarks mentioned for LOP also apply to the PFSP
    • The problem should implement the Analyze method to add a visual representation of the best solution to the results, respectively update the BestKnownQuality and BestKnownSolution
    • line 165-168: move variable declarations closer to reference
    • line 182: Math.Max(..) should be used for clarity, except if it's significantly slower than the ternary operator
    • I would suggest to make the Evaluate(int[], DoubleMatrix) method public (should change Permutation for int[]) and instead of double return the calculatedTime matrix (use a double[,] -> DoubleMatrix's setter is slow).
  • JobShopSchedulingProblemView.cs
    • Shouldn't the file as well as the class be called PermutationFlowshopSchedulingProblemView?
    • Call the aforementioned public Evaluate instead of duplicating the code to generate the calculatedTime matrix
    • line 74: the null check can be removed when the JobMatrix parameter has been changed to just ValueParameter
  • LOPData.cs
    • Remove ".Types" from the namespace
  • FSSPData.cs
    • License header
    • API doc strings
  • Problem instance plugin
    • Please consider adding unit tests to the HeuristicLab.Tests project in which you load every instance and test that no exception occured
    • Plugin.cs.frame
      • wrong namespace
    • FSSPTAILIBInstanceProvider.cs
    • A base class for all LOP instance providers could probably avoid code duplication
    • LOPXLOLIBInstanceProvider.cs
      • The uri returns a 404, please check, maybe case-sensitive
    • LOPSPECInstanceProvider.cs
      • URI returns 404
    • LOPRANDBInstanceProvider.cs
      • URI returns 404
    • LOPRANDA2InstanceProvider.cs
      • URI returns 404
    • LOPRANDA1InstanceProvider.cs
      • URI returns 404
    • AssemblyInfo.cs.frame
      • Please check title, product and copyright
Last edited 10 months ago by abeham (previous) (diff)

comment:22 Changed 10 months ago by abeham

  • Owner changed from abeham to fholzing
  • Status changed from reviewing to assigned

comment:23 Changed 5 months ago by fholzing

r16003: Changed Copyright from -2016 to -2018

comment:24 Changed 5 months ago by fholzing

r16004: Adapted Links of LOP-Instances

comment:25 Changed 5 months ago by fholzing

r16005: Removed .Types from the LOPData.cs-Namespace

comment:26 Changed 5 months ago by fholzing

r16006: Renamed JobShopSchedulingProblemView to PermutationFlowshopSchedulingProblemView

comment:27 Changed 5 months ago by fholzing

r16007: Changed remaining Copyrights from -2016 to -2018 and AssemblyVersion from 3.3.14 to 3.3.15

comment:28 Changed 5 months ago by fholzing

r16008: Added missing Licence header

comment:29 Changed 5 months ago by fholzing

r16009: Added reference publications

comment:30 Changed 5 months ago by fholzing

r16010: Corrected and harmonized the AssemblyInfos

comment:31 Changed 5 months ago by fholzing

r16011: Double-checked the namespaces and ordering of imports

comment:32 Changed 5 months ago by fholzing

r16012: Added "documentation" for FSSPData.cs

comment:33 Changed 5 months ago by fholzing

r16013: Implemented a base class as the instance provider of LOPs

comment:34 Changed 5 months ago by fholzing

r16014: Removed regions, EventHandler and Changed from OptionalValueParameter to ValueParameter (Matrix)

Note: See TracTickets for help on using tickets.