Opened 15 months ago
Last modified 2 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 (35)
comment:1 Changed 15 months ago by gkronber
comment:2 Changed 15 months ago by fholzing
- Description modified (diff)
comment:3 Changed 15 months ago by fholzing
- Description modified (diff)
- Type changed from task to feature request
comment:4 Changed 15 months ago by fholzing
- Status changed from new to accepted
comment:5 Changed 15 months ago by fholzing
r15521: First commit of new branch of Permutation based benchmark problems.
comment:6 Changed 14 months ago by fholzing
r15541: CleanUp of old code, added LOP benchmark instances
comment:7 Changed 14 months ago by fholzing
r15542: Delete obj
comment:8 Changed 14 months ago by fholzing
r15544: Deleted unused files
comment:9 Changed 14 months ago by fholzing
- Owner changed from fholzing to mkommend
- Status changed from accepted to reviewing
comment:10 Changed 14 months ago by mkommend
- Version set to branch
comment:11 Changed 13 months ago by fholzing
- Owner changed from mkommend to fholzing
- Status changed from reviewing to assigned
Additional Task: Change to BasicProblem
comment:12 Changed 13 months ago by fholzing
- Description modified (diff)
comment:13 Changed 13 months ago by fholzing
r15639: Adapted PFSP and LOP to the new BasicProblem
comment:14 Changed 13 months ago by fholzing
r15640: Adapted PFSP and LOP to the new BasicProblem
comment:15 Changed 13 months ago by fholzing
r15661: Simplified Project-Structure
comment:16 Changed 13 months ago by fholzing
r15662: Removed old projects
comment:17 Changed 13 months ago by fholzing
r15663: Ignore obj-folder
comment:18 Changed 13 months ago by fholzing
r15664: Ignore obj-folder
comment:19 Changed 13 months ago by fholzing
- Owner changed from fholzing to abeham
- Status changed from assigned to reviewing
comment:20 Changed 13 months ago by fholzing
r15686: Adapted to new trunk-structure
comment:21 Changed 12 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
- The reference publication should be a citation of https://www.sciencedirect.com/science/article/pii/037722179390182M
- 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
comment:22 Changed 12 months ago by abeham
- Owner changed from abeham to fholzing
- Status changed from reviewing to assigned
comment:23 Changed 7 months ago by fholzing
r16003: Changed Copyright from -2016 to -2018
comment:24 Changed 7 months ago by fholzing
r16004: Adapted Links of LOP-Instances
comment:25 Changed 7 months ago by fholzing
r16005: Removed .Types from the LOPData.cs-Namespace
comment:26 Changed 7 months ago by fholzing
r16006: Renamed JobShopSchedulingProblemView to PermutationFlowshopSchedulingProblemView
comment:27 Changed 7 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 7 months ago by fholzing
r16008: Added missing Licence header
comment:29 Changed 7 months ago by fholzing
r16009: Added reference publications
comment:30 Changed 7 months ago by fholzing
r16010: Corrected and harmonized the AssemblyInfos
comment:31 Changed 7 months ago by fholzing
r16011: Double-checked the namespaces and ordering of imports
comment:32 Changed 7 months ago by fholzing
r16012: Added "documentation" for FSSPData.cs
comment:33 Changed 7 months ago by fholzing
r16013: Implemented a base class as the instance provider of LOPs
comment:34 Changed 7 months ago by fholzing
r16014: Removed regions, EventHandler and Changed from OptionalValueParameter to ValueParameter (Matrix)
What's PFSP and LOP?
Please add a description.