ojAlgo v57
ojAlgo v57.0.0 has been released!
This is also the first release announced on the new ojalgo.org site, which has been rebuilt from the ground up using Eleventy replacing the old WordPress setup. The site is now fully static, fast, and easy to maintain.
New ADMM QP Solver
The highlight of v57 is a new ADMM (OSQP-style) QP solver named AlternatingDirectionSolver. The ConvexSolver.Configuration now lets you specify either the ACTIVE_SET or ADMM algorithm. If you don't specify, simple logic will select for you. The new solver also works with iterative refinement.
Optimisation Environment
A new Optimisation.Environment class holds solver integrations, presolvers, variable/expression factories, and 3rd-party configurators. Use Optimisation.newEnvironment() to create isolated configurations and Environment.newModel() as the model factory.
Revised Simplex Improvements
The revised simplex solver now freezes the constraint matrix to R064CSC before solving and uses raw double[] working vectors, reducing per-iteration allocations and improving cache locality. The SparseDecomposition (backed by SparseLU) is now the default basis engine, with an adaptive refactorisation heuristic that triggers re-decomposition based on fill-in.
Integer Solver Enhancements
The IntegerSolver gained root-phase strong-branching probes, a true global dual bound, and warm-start support for bound-only changes. Together these significantly improve branch-and-bound performance and the quality of solutions found early.
Matrix Decomposition Factors
Decompositions now expose individual factors via MatrixDecomposition.Solver.getFactors() returning List<InvertibleFactor>. Each factor supports ftran/btran operations on both PhysicalStore and raw double[] arrays.
Breaking Changes
A few changes require attention when upgrading:
ModelStrategy.initialise(...)signature simplified to no-arg. Any third-partyModelStrategysubclass needs updating.ExpressionsBasedModel.getVariableValues()is now a cheap extraction only and returnsState.UNEXPLORED. Code that relied on validated state/objective behaviour must callgetVariableValuesValidated()instead.UpdatableSolver.getEntityMap()now returnsOptional<EntityMap>.- The
ExpressionsBasedModel.Validatorclass andsetKnownSolution(...)methods have been removed. Optimisation.Resultmultiplier methods are deprecated in favour ofgetDualSolution()andgetDualValues().
Read the complete change log for all the details:
https://github.com/optimatika/ojAlgo/blob/develop/CHANGELOG.md
<dependency>
<groupId>org.ojalgo</groupId>
<artifactId>ojalgo</artifactId>
<version>57.0.0</version>
</dependency>
- ← Previous
QP News