oj! Algorithms – ojAlgo – is Open Source Java code to do mathematics, linear algebra and optimisation. It’s what you need for data science, machine learning and scientific computing.
High Performance on a Rich Feature Set with Zero Dependencies
- ojAlgo is the fastest pure Java linear algebra library available. That statement is backed by the latest Java Matrix Benchmark results – that’s a third party independent benchmark (not written by anyone associated with ojAlgo).
- Optimisation (mathematical programming) tools including LP, QP and MIP solvers – again this is pure Java with zero dependencies.
- A collection of “array” classes that can be sparse or dense and arbitrarily large. They can be used as 1-, 2- or N/Any-dimensional arrays, and may contain/handle a multitude of different number types including complex numbers, rational numbers and quaternions. The memory for the arrays can alternatively be allocated off heap or in a file. The linear algebra part of ojAlgo builds on these arrays – they’re fast and efficient.
- Artificial Neural Networks
- Various other things like time series, random numbers, stochastic processes, descriptive statistics…
- Code for the JVM: There are no calls to native (C or Fortran) libraries. ojAlgo is primarily a Java library, but Scala, Android and Kotlin programmers are also successfully using ojAlgo.
- No dependencies: NOTHING besides a JDK is needed to compile or execute the code. In fact ojAlgo only requires the Compact Profile ‘compact1’.
- Write code that scales: When choosing algorithms and data structures ojAlgo often favours designs that perform well on larger more complex cases, even if it’s more than what’s currently required.
- Anything and everything may change in the future (breaking API compatibility). Part of the code is “in production” in commercial systems – but will be changed if improvements or new features require it.
Follow @optimatika Watch Star Fork Issue
<dependency> <groupId>org.ojalgo</groupId> <artifactId>ojalgo</artifactId> <version>X.Y.Z</version> </dependency>
Documentation, Support & Services
User documentation with code examples can be found here (this site) in the form of blog posts. If you create an account you can ask questions on the individual blog posts.
Programming questions related to ojAlgo are best asked at stack overflow. Just remember to actually mention ojAlgo and tag the question using ‘ojalgo’ and whatever other tags you find suitable.
Bug reports, and to some extent feature requests should be posted at GitHub Issues. (Please do not use GitHub Issues for general discussions or support requests!)
The ojAlgo-user mailing list can be used for just about anything as long as it relates to ojAlgo. Regarding the list:
- You have to be a member to be able to post to the list – anyone can sign up.
- All new members are moderated until the administrator decides to trust them (usually with their first post).
- There is a searchable list archive. It’s a low volume list, but it’s been around since 2003 so there is content to search and information to find.
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.
Optimatika is a software consulting company specialising in decision support systems – particularly optimisation and applied maths related to finance.
- Optimatika offers commercial support for ojAlgo.
- Optimatika accepts commissions to extend ojAlgo.
- Even without ojAlgo, Optimatika can help you build high performance systems.
In these cases please contact Optimatika directly.