RSSAmplifier

Blog

oj! Algorithms

Open Source Java code for mathematics, linear algebra and optimisation.

ojalgo.orgRSS feed ↗10 posts

Latest posts

LP & QP Performance with v57

With the release of ojAlgo v57.0.0 comes significant changes to both the LP and QP solvers, including improvements to the revised simplex and an entirely new ADMM QP solver alongside the existing active-set solver. Time to measure the results. This is an update to the LP & QP Java Performance Report from November 2025, now with ojAlgo v57.0.0 and updated versions of the other solvers. Solvers…

ojAlgo v57

ojAlgo v57.0.0 has been released! This is also the first release announced on the new ojalgo.org site, which has been rebuilt from the ground up using Eleventy replacing the old WordPress setup. The site is now fully static, fast, and easy to maintain. New ADMM QP Solver The highlight of v57 is a new ADMM (OSQP-style) QP solver named AlternatingDirectionSolver . The ConvexSolver.Configuration now…

QP News

Two recent releases with a lot of QP related news. < dependency > < groupId > org.ojalgo </ groupId > < artifactId > ojalgo </ artifactId > < version > 56.2.0 </ version > </ dependency > < dependency > < groupId > org.ojalgo </ groupId > < artifactId > ojalgo-clarabel4j </ artifactId > < version > 0.1.0 </ version > </ dependency > What’s new? ojAlgo-clarabel4j is a new 3:d party solver…

LP & QP Java Performance Report

ojAlgo aims to have the best set of pure Java solvers available, and to be roughly on par with good native code solvers when the models are not too big or numerically challenging. Below are the results from 3 benchmark executions comparing ojAlgo to the best Java alternatives as well as some native code reference. The solvers used in the benchmarks are: ojAlgo (Open Source, Java, LP & QP)…

Model and Solve the Traveling Salesman Problem

The Traveling Salesman Problem (TSP) is a classic optimization problem in which a salesman must visit a set of cities exactly once and return to the starting city, while minimizing the total travel distance. Formally, given a list of cities and the distances between each pair, the goal is to find the shortest possible route that visits each city once and returns to the origin. TSP is widely…

Questions, Complaints and Misconceptions

Playing around with various AI tools, as is common nowadays, I asked the tool to search the internet and summarise common questions, complaints and misconceptions about ojAlgo. Just thought it would be interesting to learn something about the weak spots, and maybe do something about it. Below you’ll find the AI’s response. It listed a number of points in each category, and also provided a…

Hooking Your Solver to ojAlgo

This post aims to demonstrate how to make a solver usable from ExpressionsBasedModel . To do that we first implement a very simple solver, and then the integration. There are some very high-level ojAlgo concepts (interfaces) you should know about: Optimisation.Model – a description of an optimisation problem. Optimisation.Solver – a specific algorithm implementation. Optimisation.Integration –…

Mall Customer Segmentation

This post describes how to do clustering with ojAlgo. Support for clustering is new with v55.1.0. This version added basic implementations of k-means and greedy clustering, but in a very general and configurable way. Paired with that there is a Point class corresponding to a (k-means) multidimensional data point, and using that, preconfigured clustering. Convert whatever data you have to a…

1BRC using ojAlgo

The One Billion Row Challenge (1BRC) is a fun exploration of how far modern Java can be pushed for aggregating one billion rows from a text file. Grab all your (virtual) threads, reach out to SIMD, optimize your GC, or pull any other trick, and create the fastest implementation for solving this task! https://github.com/gunnarmorling/1brc The One Billion Row Challenge just finished. I followed the…

Image Processing using FFT

The Fast Fourier Transform (FFT) algorithm to calculate discrete Fourier transforms (DFT) is a recent addition to ojAlgo. The last blog post was about Image Processing (using Singular Value Decomposition, SVD). 2D Fourier transforms can also be used for image processing. Let’s have a look at how to do that. In image processing, the most common way to represent an image is simply as a matrix of…