heal-research / HeuristicLab

HeuristicLab - An environment for heuristic and evolutionary optimization
https://dev.heuristiclab.com
GNU General Public License v3.0
32 stars 15 forks source link

Implementation of PFSP and LOP #2864

Open HeuristicLab-Trac-Bot opened 6 years ago

HeuristicLab-Trac-Bot commented 6 years ago

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


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

HeuristicLab-Trac-Bot commented 6 years ago

2017-12-12 10:43:49: @gkronber commented


What's PFSP and LOP?

Please add a description.

HeuristicLab-Trac-Bot commented 6 years ago

2017-12-12 10:51:00: @Vanmodeus edited the issue description

HeuristicLab-Trac-Bot commented 6 years ago

2017-12-12 11:04:00: @Vanmodeus changed type from task to feature request

HeuristicLab-Trac-Bot commented 6 years ago

2017-12-12 11:04:00: @Vanmodeus edited the issue description

HeuristicLab-Trac-Bot commented 6 years ago

2017-12-13 11:08:06: @Vanmodeus changed status from new to accepted

HeuristicLab-Trac-Bot commented 6 years ago

2017-12-13 11:25:42: @Vanmodeus commented


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

HeuristicLab-Trac-Bot commented 6 years ago

2017-12-19 11:11:44: @Vanmodeus commented


r15541: CleanUp of old code, added LOP benchmark instances

HeuristicLab-Trac-Bot commented 6 years ago

2017-12-19 11:22:34: @Vanmodeus commented


r15542: Delete obj

HeuristicLab-Trac-Bot commented 6 years ago

2017-12-19 11:52:04: @Vanmodeus commented


r15544: Deleted unused files

HeuristicLab-Trac-Bot commented 6 years ago

2017-12-19 14:04:52: @Vanmodeus changed status from accepted to reviewing

HeuristicLab-Trac-Bot commented 6 years ago

2017-12-19 14:04:52: @Vanmodeus changed owner from @Vanmodeus to @mkommend

HeuristicLab-Trac-Bot commented 6 years ago

2018-01-17 12:05:20: @Vanmodeus changed status from reviewing to assigned

HeuristicLab-Trac-Bot commented 6 years ago

2018-01-17 12:05:20: @Vanmodeus changed owner from @mkommend to @Vanmodeus

HeuristicLab-Trac-Bot commented 6 years ago

2018-01-17 12:05:20: @Vanmodeus commented


Additional Task: Change to BasicProblem

HeuristicLab-Trac-Bot commented 6 years ago

2018-01-17 12:05:59: @Vanmodeus edited the issue description

HeuristicLab-Trac-Bot commented 6 years ago

2018-01-22 17:16:01: @Vanmodeus commented


r15639: Adapted PFSP and LOP to the new BasicProblem

HeuristicLab-Trac-Bot commented 6 years ago

2018-01-22 17:21:06: @Vanmodeus commented


r15640: Adapted PFSP and LOP to the new BasicProblem

HeuristicLab-Trac-Bot commented 6 years ago

2018-01-29 14:16:52: @Vanmodeus commented


r15661: Simplified Project-Structure

HeuristicLab-Trac-Bot commented 6 years ago

2018-01-29 14:19:15: @Vanmodeus commented


r15662: Removed old projects

HeuristicLab-Trac-Bot commented 6 years ago

2018-01-29 14:22:39: @Vanmodeus commented


r15663: Ignore obj-folder

HeuristicLab-Trac-Bot commented 6 years ago

2018-01-29 14:25:25: @Vanmodeus commented


r15664: Ignore obj-folder

HeuristicLab-Trac-Bot commented 6 years ago

2018-01-29 15:21:42: @Vanmodeus changed status from assigned to reviewing

HeuristicLab-Trac-Bot commented 6 years ago

2018-01-29 15:21:42: @Vanmodeus changed owner from @Vanmodeus to @abeham

HeuristicLab-Trac-Bot commented 6 years ago

2018-01-31 09:11:48: @Vanmodeus commented


r15686: Adapted to new trunk-structure

HeuristicLab-Trac-Bot commented 6 years ago

2018-02-13 16:34:21: @abeham commented


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) 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_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
HeuristicLab-Trac-Bot commented 6 years ago

2018-02-13 16:34:21: @abeham

HeuristicLab-Trac-Bot commented 6 years ago

2018-02-13 16:34:21: @abeham

HeuristicLab-Trac-Bot commented 6 years ago

2018-02-13 22:28:50: @abeham changed status from reviewing to assigned

HeuristicLab-Trac-Bot commented 6 years ago

2018-02-13 22:28:50: @abeham changed owner from @abeham to @Vanmodeus

HeuristicLab-Trac-Bot commented 5 years ago

2018-07-24 14:55:05: @Vanmodeus commented


r16003: Changed Copyright from -2016 to -2018

HeuristicLab-Trac-Bot commented 5 years ago

2018-07-24 15:08:06: @Vanmodeus commented


r16004: Adapted Links of LOP-Instances

HeuristicLab-Trac-Bot commented 5 years ago

2018-07-24 15:14:28: @Vanmodeus commented


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

HeuristicLab-Trac-Bot commented 5 years ago

2018-07-24 15:19:18: @Vanmodeus commented


r16006: Renamed JobShopSchedulingProblemView to PermutationFlowshopSchedulingProblemView

HeuristicLab-Trac-Bot commented 5 years ago

2018-07-24 15:26:19: @Vanmodeus commented


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

HeuristicLab-Trac-Bot commented 5 years ago

2018-07-24 15:48:07: @Vanmodeus commented


r16008: Added missing Licence header

HeuristicLab-Trac-Bot commented 5 years ago

2018-07-24 16:26:35: @Vanmodeus commented


r16009: Added reference publications

HeuristicLab-Trac-Bot commented 5 years ago

2018-07-24 16:42:01: @Vanmodeus commented


r16010: Corrected and harmonized the AssemblyInfos

HeuristicLab-Trac-Bot commented 5 years ago

2018-07-24 16:49:38: @Vanmodeus commented


r16011: Double-checked the namespaces and ordering of imports

HeuristicLab-Trac-Bot commented 5 years ago

2018-07-24 16:54:55: @Vanmodeus commented


r16012: Added "documentation" for FSSPData.cs

HeuristicLab-Trac-Bot commented 5 years ago

2018-07-24 17:16:31: @Vanmodeus commented


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

HeuristicLab-Trac-Bot commented 5 years ago

2018-07-25 09:34:32: @Vanmodeus commented


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

HeuristicLab-Trac-Bot commented 5 years ago

2018-12-20 11:12:34: @Vanmodeus

HeuristicLab-Trac-Bot commented 5 years ago

2019-04-12 13:54:55: @abeham changed status from assigned to reviewing

HeuristicLab-Trac-Bot commented 5 years ago

2019-04-12 13:54:55: @abeham changed owner from @Vanmodeus to @abeham

HeuristicLab-Trac-Bot commented 5 years ago

2019-04-17 16:12:51: @abeham changed status from reviewing to assigned

HeuristicLab-Trac-Bot commented 5 years ago

2019-04-17 16:12:51: @abeham changed owner from @abeham to @Vanmodeus

HeuristicLab-Trac-Bot commented 5 years ago

2019-04-17 16:12:51: @abeham commented


As discussed, should be finished for 3.3.16. Needs to be updated to current trunk first.

HeuristicLab-Trac-Bot commented 5 years ago

2019-04-19 09:04:09: @Vanmodeus commented


r16826: Deleted Problems.Instances

HeuristicLab-Trac-Bot commented 5 years ago

2019-04-19 09:04:20: @Vanmodeus commented


r16827: Branched Problems.Instances

HeuristicLab-Trac-Bot commented 5 years ago

2019-04-19 09:04:41: @Vanmodeus commented


r16828: Added both necessary classes for PFSP and LOP