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.
| Extension | Solver | Type |
|---|---|---|
| ojAlgo-cplex | IBM ILOG CPLEX | LP, QP, MIP |
| ojAlgo-gurobi | Gurobi | LP, QP, MIP |
| ojAlgo-mosek | MOSEK | LP, 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.
| Extension | Solver | Type | Notes |
|---|---|---|---|
| ojAlgo-hipparchus | Hipparchus | LP, QP | — |
| ojAlgo-commons-math3 | Apache Commons Math | LP | Hipparchus is the maintained fork |
| ojAlgo-joptimizer | JOptimizer | QP | Largely superseded by ojAlgo’s own QP solvers |
| ojAlgo-ssclp | SSC-LP | LP, MIP | In 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.
| Extension | Solver | Type | Language | Status |
|---|---|---|---|---|
| ojAlgo-highs | HiGHS | LP, QP, MIP | C++ | Released |
| ojAlgo-ortools | Google OR-Tools / GLOP | LP, MIP | C++ | Released |
| ojAlgo-clarabel4j | Clarabel via clarabel4j | QP | Rust | Released |
| ojAlgo-clarabel | Clarabel | QP | Rust | In development |
| ojAlgo-scip | SCIP | LP, QP, MIP | C | In 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.