Solvers

ojAlgo includes LP, QP and MIP solvers — pure Java, zero dependencies. For many problems that is all you need. When a model outgrows the built-in solvers, ExpressionsBasedModel lets you swap in a third-party solver without changing your model code.

Built-in solvers

These ship with ojAlgo itself. No additional dependencies required.

  • LinearSolver — revised simplex for LP.
  • ConvexSolver — active-set and ADMM algorithms for QP.
  • IntegerSolver — branch-and-bound with presolve, strong branching and cutting planes for MIP.

See the LP & QP benchmark for current performance data.

Commercial solvers

The leading commercial solvers offer the highest performance and the broadest feature sets, but they come with significant licence costs and require deploying native binaries alongside your application.

ExtensionSolverType
ojAlgo-cplexIBM ILOG CPLEXLP, QP, MIP
ojAlgo-gurobiGurobiLP, QP, MIP
ojAlgo-mosekMOSEKLP, QP, MIP

Other Java solver libraries

If you want to stay in pure Java there are alternatives, but ojAlgo consistently outperforms them — both in speed and in the number of models solved. See the benchmark for the numbers.

ExtensionSolverTypeNotes
ojAlgo-hipparchusHipparchusLP, QP
ojAlgo-commons-math3Apache Commons MathLPHipparchus is the maintained fork
ojAlgo-joptimizerJOptimizerQPLargely superseded by ojAlgo’s own QP solvers
ojAlgo-ssclpSSC-LPLP, MIPIn development

Open source native solvers

Good alternatives when your models outgrow pure Java. They are free to use but require packaging and deploying native binaries, which adds build and deployment complexity.

ExtensionSolverTypeLanguageStatus
ojAlgo-highsHiGHSLP, QP, MIPC++Released
ojAlgo-ortoolsGoogle OR-Tools / GLOPLP, MIPC++Released
ojAlgo-clarabel4jClarabel via clarabel4jQPRustReleased
ojAlgo-clarabelClarabelQPRustIn development
ojAlgo-scipSCIPLP, QP, MIPCIn development

Optimisation Service

All of the native solver integrations above require obtaining, building and deploying native libraries inside your application. Optimatika’s Optimisation Service is an attractive alternative: a solver server you deploy in your own cluster from the AWS, Azure or Google Cloud marketplace, reached through a small pure Java client that configures ExpressionsBasedModel to solve through it. No native code enters your application, no solver licences to manage, and in capability it sits between the built-in pure Java solvers and the large commercial solvers — for many models that outgrow pure Java it is enough.

All extensions

For the complete list of extension modules — solvers and others — see the Extensions page.