All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- BundleSolverML, a BundleSolver variant whose step-size t is predicted by a neural network (Torch) trainable online across solves, with shared weights among multiple instances and TorchScript model save / load; it is only built if Torch is available.
- BPar5 and RstAlgPrm were never initialized in the BundleSolver constructor, leading to nondeterministic behavior (up to complete stalls of the algorithm) whenever dblBPar5 / intRstAlg were not explicitly set by the ComputeConfig.
-
check for when all components are easy
-
temporary solution to management of putting an inconsistent BundleSolverState (see comments to intFrcLstSS)
-
useful option to get_var_solution() for duals/reduced costs of all easy components
-
support for reading primal and dual solutions out of easy components
-
CHECK_BAD_F (warnings to show possible oracle issues)
-
algo information getters
-
Heuristic() are protected and virtual (so that we can develop new ML-based ones)
-
support to un_any_thing_count_*
-
adapted to new standard organization of makefiles
-
avoided const vectors prone to static initialization fiasco
-
deactivated useless warnings
-
huge logical flaw whereby a problem that was empty due to easy components making it so was not properly recognised as being so
-
allow to terminate in exactly one iteration
-
makefiles and Cmake files updated to new global SMS++ scheme
-
documentation updated accordingly
-
default OSISolver is Gurobi
-
improved BundleSolverState by keeping all upper and lower values for each component
-
fixed sloppy setting of OSI parameters
-
fixed
has_*_solution()andhas_*_feasible()
0.4.3 - 2023-05-23
-
handling the constant term Modification for hard components
-
handling constant term for "easy" components
-
support for OsiGrbSolverInterface
- better printing in case of errors in a Fi
-
missing check of max number of iterations in one case
-
issues in put_State()
-
issue in one case of process_outstanding_Modification (adding Linearization was not properly managed)
-
management of numerical errors in the MPSolver
-
typos and spaces
0.4.2 - 2022-06-28
- added new parameter intTrgtMng controlling different aspects of how models are used to pass targets and accuracy to the C05Function and to forecast the value (using the Lipschitz_constant)
-
generate the abstract representation in set_Block()
-
minor improvements in logging and comments
-
quite significant rehaul of t heuristics: reshuffled the bits in tSPar1 (baiscally keeping compatibility with develop branch) and added the "reversal form of the poorman's quasi-Newton update". This requires the computation of the norm of the "aggregated representative subgradient", doing which called for some nontrivial changes in the computation of Alfa1 and ScPr1
-
ParallelBundleSolver now properly counts the computed components; previously those of the ramp-down phase were not, which may lead to getting an error if the last step was not a SS and intFrcLstSS was true
-
fixed get_dual_solution() when there is no easy component
0.4.1 - 2021-12-07
-
improved Modification handling (no over-reacting to easy ones, important bugfix)
-
better log, printing times for each component in verbosity 4 and higher
-
fixed several flaws
-
improved namespace handling and similar stuff
0.4.0 - 2021-05-02
Several major improvements:
-
restructured stopping conditions, with a new one on the norm (INF, 1 or 2) of zStar, possibly relative to subgradient ; tStar anyway remains the driver of t-strategies.
-
BundleSolver now detects when "zStar == 0" (see previous point) and uses this to algorithmically produce globally valid lower bounds.
-
BundleSolver now checks if the objectives are (all) convex or concave and adapts accordingly (by sneakily converting the concave problem internally into a convex one and adapting the results on the fly when they go out).
-
Box constraints are now handled, either by means of NNConstraint/BoxConstraint or as NN constraints "inherent" in the ColVariable.
-
Changes in the costs or RHS/bounds in easy components now are allowed and managed.
-
Changes in the 0-th component now allowed.
-
Added hooks for perspective handling of changes in easy components.
-
Complete rehaul of Modification in "easy" components.
-
Better bad termination reporting.
-
Allowing to switch away Cplex.
-
Added ComputeConfig for hard and easy and NoEasy.
-
Added individual Configurations.
- Many fixes throughout the code, too many to list.
0.3.0 - 2020-09-16
- Support for better modification framework.
- Minor fixes.
0.2.0 - 2020-03-06
- Minor fixes.
0.1.2 - 2020-03-02
- Minor fixes.
0.1.1 - 2020-02-17
- Minor bug in CMake configuration file.
0.1.0 - 2020-02-10
- First test release.