Open HeuristicLab-Trac-Bot opened 6 years ago
What's PFSP and LOP?
Please add a description.
r15521: First commit of new branch of Permutation based benchmark problems.
r15541: CleanUp of old code, added LOP benchmark instances
Additional Task: Change to BasicProblem
Reviewing the branch:
- Please activate remove and sort usings on save
- Please adhere to the [[Documentation/DevelopmentCenter/DeveloperGuidelines|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_Optional_ValueParameter, 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)
toEvaluate(Permutation, DoubleMatrix)
, wrap in a Permutation duringLoad(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_Optional_ValueParameter, 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
r16006: Renamed JobShopSchedulingProblemView to PermutationFlowshopSchedulingProblemView
r16007: Changed remaining Copyrights from -2016 to -2018 and AssemblyVersion from 3.3.14 to 3.3.15
r16011: Double-checked the namespaces and ordering of imports
r16013: Implemented a base class as the instance provider of LOPs
r16014: Removed regions, EventHandler and Changed from OptionalValueParameter to ValueParameter (Matrix)
As discussed, should be finished for 3.3.16. Needs to be updated to current trunk first.
Issue migrated from trac ticket # 2864
milestone: HeuristicLab 3.3.17 | component: Problems | priority: low | keywords: PFSP LOP
2017-12-12 09:47:42: @Vanmodeus created the issue