Support & Community
ojAlgo is a mature, open source Java library for mathematics, linear algebra and optimisation. It is built and maintained by Optimatika and a community of contributors. Development began in 2003 and the project is hosted at github.com/optimatika/ojAlgo.
Documentation, Support & Services
User documentation, with code examples, can be found here on this site in the form of blog posts. The Code Examples page contains a complete list of example programs used in the blog posts. All blog posts containing example code are categorised as Documentation.
Programming questions related to ojAlgo are best asked at Stack Overflow. Just remember there are rules and standards regarding what questions you can ask, how you should ask them, and what you should do when you get a reply. It’s also a good idea to actually mention ojAlgo and tag the question with ojalgo and whatever other tags you find suitable.
Bug reports, or any issue with existing code, should be posted at GitHub Issues. GitHub is all about collaboration — if you raise an issue there, please participate in resolving it.
GitHub Discussions can be used to discuss anything related to ojAlgo.
ojAlgo is Open Source, and you are strongly encouraged to clone or fork the repository and work directly with the source code. The source code is (part of) the documentation, and you should read it.
Private Commercial Support
Optimatika is the primary sponsor of ojAlgo — it’s built by Optimatika — and we offer commercial support.
If you want private communications directly with the ojAlgo developer(s) regarding how to best solve your particular problem, then you should purchase ojAlgo Support from Optimatika. Use the contact form to get in touch.
A lightweight alternative is to become a GitHub Sponsor. Sponsors get direct private communication with the ojAlgo developers and access to the private ojAlgo-extensions repository.
When a model outgrows pure Java
The built-in solvers are pure Java with zero dependencies, and they handle the
great majority of the problems put to them. Some models eventually outgrow them,
and there is no pure-Java solver stronger than ojAlgo’s own. Models written
against ExpressionsBasedModel are not tied to a solver, so there are two ways
forward and neither requires rewriting the model.
Bring your own solver. The extensions let
ExpressionsBasedModel solve using Clarabel, CPLEX, Gurobi, MOSEK or OR-Tools.
You obtain the solver and, where applicable, the licence; the extension connects
it. The native libraries then run inside your own application process, which is
what makes this the more demanding option to deploy and maintain.
Use the Optimisation Service. Optimatika’s
Optimisation Service is a
solver server you deploy in your own cluster, from the AWS, Azure or Google
Cloud marketplace. A small pure Java client configures ExpressionsBasedModel
to solve through it, so no native code enters your application. 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, and it is cheaper
and considerably less work than licensing, packaging and operating a commercial
solver yourself.
ojAlgo itself remains Open Source and free to use, and it always will be. These are options for models that need more, not a paywall on anything that works today.