3 | | * The file-based problem definition should contain "MPS" in the item name: "Problem Definition File (MPS, OR-Tools Proto Files)" |
4 | | * The programmable based definition should have the item name: "Programmable Linear Problem Definition (LP, MILP)" |
5 | | * The description should not contain "and evaluates the solution" |
6 | | * I general I would support item names using some publicly agreed form such as "Mixed-Integer Linear Programming" (potentially add "(LP, MILP)" for the creatable in order to have the abbreviated forms) instead of "Linear/Mixed Integer Programming", because that term is not known in this form. Neither is 100% correct, but one is at least more widely known. |
| 3 | * Naming things |
| 4 | * The namespace and plugin should be renamed to "HeuristicLab.ExactOptimization" instead of "HeuristicLab.MathematicalOptimization" |
| 5 | * The ItemName of the file-based problem definition should be: "Problem Definition File (MPS, OR-Tools Proto Files)" |
| 6 | * The ItemName of the programmable based definition should be: "Programmable Linear Problem Definition (LP, MIP)" |
| 7 | * The description should not contain "and evaluates the solution" |
| 8 | * The ItemName of the algorithm should be "Mixed-Integer Linear Programming (LP, MIP)" |
| 9 | * The ItemName of the problem should be "Mixed-Integer Linear Programming Problem (LP, MIP)" |
8 | | I want to get feedback from other architects on this also. Review is to be continued. |
| 11 | * Usage |
| 12 | * MixedIntegerProgramming should be the default "ProblemType" for ILinearSolvers (if supported) |
| 13 | * The only use case to set this to LinearProgramming is if you explicitly want to solve the LP relaxation instead of the ILP. This should not be the default case. |
| 14 | * The ModelType is not shown in the run under Parameters, it should show which model type was used |
| 15 | * In the case of the MPS model type it should also show the path to the file |
| 16 | * In the case of the Programmable model type it should also show the name |
| 17 | * Advanced parameters like "PrimalTolerance", "DualTolerance", "Scaling" should be hidden by default (Hidden = true) |
| 18 | * A default timelimit of 1 minute should be set |
| 19 | * Isn't LpAlgorithm a parameter of the solver, are these provided by all solvers? Same question regarding the presolve option (which should be true by default) |
| 20 | * Export Model should be implemented as a button. The parameter should be removed. Please derive a custom algorithm view and add a button next to the prepare button, labeled "Export model to file". When this button is pressed a SaveFileDialog() should be opened where the user can choose the filename. After closing the dialog only the export should be performed. |
| 21 | * Why is the option called "CPLEX LP File"? It also worked to export in combination with CBC |
| 22 | * Can we offer an option to automatically include decision variables in the results (false by default)? |
| 23 | * For instance when MPS files are solved, there's no way to get the actual solution |
| 24 | * In the Problem type when selecting file-based model can we exclude Name and Data Type fields? They're readonly and are only confusing |
| 25 | * We should not offer GPLK as option if it creates problems or crashes the application (does it still?) |
| 26 | |
| 27 | * Code |
| 28 | * The BasisStatus, DoubleParam, IncrementalityValues, IntegerParam enum are not referenced |
| 29 | * ResultStatus: Do OR-Tools provide something similar to "OptimalWithinTolerance"? I hesitate to say "Optimal" when the BestObjectiveValue and the BestObjectiveBound are not equal |
| 30 | * LinearProgrammingProblem.cs |
| 31 | * ProblemDefinitionChanged event is not invoked from OnProblemDefinitionChanged, which in turn is not called from anywhere |
| 32 | * The problem definition is not cloned in the cloning constructor (necessary to derive ILinearProgrammingProblemDefinition from IDeepCloneable) |
| 33 | * LinearProgrammingAlgorithm.cs |
| 34 | * |