ojAlgo has zero dependencies, but through extensions it integrates with various 3:d party tools and libraries.

All extensions are in one and the same GitHub repository – ojAlgo-extensions. The individual extensions are (sub)modules. Each such extension module corresponds to a development project and build artifact. Typically each module/project/artifact has 2 dependencies – ojAlgo and 1 other.

ModuleDependencyVersion
ojAlgo-commons-math3http://commons.apache.org/proper/commons-math/ Latest version at Maven Central
ojAlgo-cplexhttps://www.ibm.com/products/ilog-cplex-optimization-studio Latest version at Maven Central
ojAlgo-gurobihttp://www.gurobi.com Latest version at Maven Central
ojAlgo-hipparchushttps://hipparchus.org Latest version at Maven Central
ojAlgo-jfreecharthttps://www.jfree.org/jfreechart/ Latest version at Maven Central
ojAlgo-joptimizerJOptimizer Latest version at Maven Central
ojAlgo-mosekhttps://www.mosek.com Latest version at Maven Central
ojAlgo-ortoolshttps://developers.google.com/optimization Latest version at Maven Central
ojAlgo-rocksdbhttp://rocksdb.org Latest version at Maven Central
ojAlgo-yahoofinancehttps://financequotes-api.com Latest version at Maven Central

The ojAlgo-extensions repository is private. If you sponsor ojAlgo you’ll get access to it. The code is Open Source and the artifacts are available at Maven Central, but to get direct/explicit access to the code repository you need to be an ojAlgo sponsor. New versions of the artifacts are built on request. To make such a request you also need to be an ojAlgo sponsor.

ojAlgo-commons-math3

  • Convert, back and forth, between ojAlgo and commons-math matrices. Makes it easy to work with the two libraries interchangeably.
  • Make commons-math’s various (random number) distributions available as ojAlgo RandomNumber instances.
  • Use org.apache.commons.math3.optim.linear.SimplexSolver as a solver with ojAlgo’s ExpressionsBasedModel.
  • Drop-in replacement for org.apache.commons.math3.optim.linear.SimplexSolver based on ojAlgo’s LP solver.

ojAlgo-cplex

  • Use CPLEX as a solver with ojAlgo’s ExpressionsBasedModel.

ojAlgo-gurobi

  • Use GUROBI as a solver with ojAlgo’s ExpressionsBasedModel.

ojAlgo-hipparchus

Same feature set as ojAlgo-commons-math3. Hipparchus is a fork of Apache Commons Math.

ojAlgo-jfreechart

  • Standardised/simplified builders for charts commonly used (by Optimatika)
  • Integration with ojAlgo data structures, like time series, to simplify the creation of some charts.

ojAlgo-joptimizer

  • Use JOptimizer as a solver with ojAlgo’s ExpressionsBasedModel.

ojAlgo-mosek

  • Use MOSEK as a solver with ojAlgo’s ExpressionsBasedModel.

ojAlgo-ortools

  • Use Google’s OR Tools as a solver with ojAlgo’s ExpressionsBasedModel.

ojAlgo-rocksdb

  • A RocksDB based Map implementation

ojAlgo-yahoofinance

  • Download historical financial data from Yahoo Finance. ojAlgo used to have functionality to download such data from a variety of sources. That code is now mostly broken, and is deprecated – it will not be restored. An alternative, that still works, is Yahoo Finance API. (ojAlgo still support parsing of the various download/file formats – just not fetching the data.) You can use Yahoo Finance API to fetch the data, and then this integrates with ojAlgo’s features to parse, coordinate, cache and otherwise manipulate time series data.

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 post. 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 as well as how you should ask them and what you should do when you get a reply. Also, it’s a good idea to actually mention ojAlgo and tag the question using ‘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 then 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 support from Optimatika.

Use the Products & Services Inquiry form to get in contact with Optimatika. Tell us what you need and we’ll find a way to help you.

A lightweight alternative to purchasing services from Optimatika is to become a sponsor. This entitles you to direct private communications with the ojAlgo developers.