Opened 7 years ago
Last modified 5 years ago
#2864 assigned feature request
Implementation of PFSP and LOP
Reported by: | fholzing | Owned by: | fholzing |
---|---|---|---|
Priority: | low | Milestone: | HeuristicLab 3.3.17 |
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 (43)
comment:1 Changed 7 years ago by gkronber
comment:2 Changed 7 years ago by fholzing
- Description modified (diff)
comment:3 Changed 7 years ago by fholzing
- Description modified (diff)
- Type changed from task to feature request
comment:4 Changed 7 years ago by fholzing
- Status changed from new to accepted
comment:5 Changed 7 years ago by fholzing
r15521: First commit of new branch of Permutation based benchmark problems.
comment:6 Changed 7 years ago by fholzing
r15541: CleanUp of old code, added LOP benchmark instances
comment:7 Changed 7 years ago by fholzing
r15542: Delete obj
comment:8 Changed 7 years ago by fholzing
r15544: Deleted unused files
comment:9 Changed 7 years ago by fholzing
- Owner changed from fholzing to mkommend
- Status changed from accepted to reviewing
comment:10 Changed 7 years ago by mkommend
- Version set to branch
comment:11 Changed 7 years ago by fholzing
- Owner changed from mkommend to fholzing
- Status changed from reviewing to assigned
Additional Task: Change to BasicProblem
comment:12 Changed 7 years ago by fholzing
- Description modified (diff)
comment:13 Changed 7 years ago by fholzing
r15639: Adapted PFSP and LOP to the new BasicProblem
comment:14 Changed 7 years ago by fholzing
r15640: Adapted PFSP and LOP to the new BasicProblem
comment:15 Changed 7 years ago by fholzing
r15661: Simplified Project-Structure
comment:16 Changed 7 years ago by fholzing
r15662: Removed old projects
comment:17 Changed 7 years ago by fholzing
r15663: Ignore obj-folder
comment:18 Changed 7 years ago by fholzing
r15664: Ignore obj-folder
comment:19 Changed 7 years ago by fholzing
- Owner changed from fholzing to abeham
- Status changed from assigned to reviewing
comment:20 Changed 7 years ago by fholzing
r15686: Adapted to new trunk-structure
comment:21 Changed 7 years 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 7 years ago by abeham
- Owner changed from abeham to fholzing
- Status changed from reviewing to assigned
comment:23 Changed 6 years ago by fholzing
r16003: Changed Copyright from -2016 to -2018
comment:24 Changed 6 years ago by fholzing
r16004: Adapted Links of LOP-Instances
comment:25 Changed 6 years ago by fholzing
r16005: Removed .Types from the LOPData.cs-Namespace
comment:26 Changed 6 years ago by fholzing
r16006: Renamed JobShopSchedulingProblemView to PermutationFlowshopSchedulingProblemView
comment:27 Changed 6 years ago by fholzing
r16007: Changed remaining Copyrights from -2016 to -2018 and AssemblyVersion from 3.3.14 to 3.3.15
comment:28 Changed 6 years ago by fholzing
r16008: Added missing Licence header
comment:29 Changed 6 years ago by fholzing
r16009: Added reference publications
comment:30 Changed 6 years ago by fholzing
r16010: Corrected and harmonized the AssemblyInfos
comment:31 Changed 6 years ago by fholzing
r16011: Double-checked the namespaces and ordering of imports
comment:32 Changed 6 years ago by fholzing
r16012: Added "documentation" for FSSPData.cs
comment:33 Changed 6 years ago by fholzing
r16013: Implemented a base class as the instance provider of LOPs
comment:34 Changed 6 years ago by fholzing
r16014: Removed regions, EventHandler and Changed from OptionalValueParameter to ValueParameter (Matrix)
comment:35 Changed 6 years ago by fholzing
comment:36 Changed 6 years ago by abeham
- Owner changed from fholzing to abeham
- Status changed from assigned to reviewing
comment:37 Changed 6 years ago by abeham
- Owner changed from abeham to fholzing
- Status changed from reviewing to assigned
As discussed, should be finished for 3.3.16. Needs to be updated to current trunk first.
comment:38 Changed 6 years ago by fholzing
r16826: Deleted Problems.Instances
comment:39 Changed 6 years ago by fholzing
r16827: Branched Problems.Instances
comment:40 Changed 6 years ago by fholzing
r16828: Added both necessary classes for PFSP and LOP
comment:41 Changed 6 years ago by fholzing
r16834: Made the branch compile again (References, new Persistence, ...)
comment:42 Changed 6 years ago by fholzing
r16840: Unified and replaced (broken) WebLink and used K&R Style
comment:43 Changed 5 years ago by fholzing
- Milestone changed from HeuristicLab 3.3.16 to HeuristicLab 3.3.17
What's PFSP and LOP?
Please add a description.