oj! Algorithms v51.2.0 Release Notes
Release Date: 2022-04-20 // about 2 years ago-
➕ Added
org.ojalgo.function
- ✅
MissingMath
can now find the greatest common denominator of multiple int:s or long:s.
org.ojalgo.matrix
- ➕ Added support for creating diagonal matrices in
MatrixFactory
.
org.ojalgo.optimisation
- ✅ There is now a new solver,
GomorySolver
, for (mixed) integer models. It implements Gomory's cutting plane method. This solver is primarily used to test the cut generation feature used inIntegerSolver
, which is the solver to use for (mixed) integer problems. The real news here is thatIntegerSolver
now generates GMI cuts as part of the solve process. - Utilities in
Expression
(actually inModelEntity
) to simplify creatingExpression
:s from combinations of otherExpression
:s (ModelEntity
.s).
org.ojalgo.type
- ➕ Additional utilities in
NumberContext
likeisInteger(double)
,isSmall(BigDecimal,BigDecimal)
and more.
🔄 Changed
org.ojalgo.optimisation
- The
IntegerSolver
is no longer a pure branch-and-bound algorithm. It now also generates GMI cuts. - 🔨 A whole lot of refactoring to enable cut generation for the
IntegerSolver
. This touches almost everything in the optimisation package, but the public API:s for normal/recommended usage should be unchanged.
🗄 Deprecated
org.ojalgo.optimisation
- 🗄 Deprecated the separation between preferred and fallback solver integrations in
ExpressionsBasedModel
. Instead, if you want add a solver integration, you simply calladdIntegration(Integration<?>)
.
🛠 Fixed
org.ojalgo.optimisation
- 🔨 The MPS file parser of
ExpressionsBasedModel
has been refactored and can now handle more format variants. In particular some instances from MIPLIB2017 had problems.
✂ Removed
- 🗄 The methods
isMinimisation()
andisMaximisation()
fromExpressionsBasedModel
. They've been deprecated for a while and are replaced bygetOptimisationSense()
. There is no way to set the optimisation sense – you simply callminimise()
ormaximise()
;
- ✅