Optimisation Service

When a model outgrows pure Java, your model code does not have to change. Keep the ExpressionsBasedModel you have already built, point it at a service running in your own cluster, and let it solve problems the built-in solvers cannot. Building, packaging, tuning and operating that solver stack is Optimatika’s responsibility, not yours.

When pure Java is no longer enough

Most models never need more than ojAlgo itself. The built-in solvers are pure Java, carry no dependencies, and handle the great majority of the linear, quadratic and mixed-integer problems put to them. That is why the library has been a default choice on the JVM for more than 20 years.

Some models eventually outgrow them, and at that point the JVM runs out of answers — there is no pure-Java solver stronger than ojAlgo’s own. The conventional next step is a native solver, and it is expensive in every sense that is not the licence fee: platform-specific binaries, JNI, licence servers, container images to build and maintain, and a deployment that has to be defended to whoever owns the security policy. What that step actually costs.

The Optimisation Service is that step, already taken. We assemble, test and maintain the solver stack and ship it as a deployable server. You run it in your own account and keep the model you have.

How it works

Start in pure Java

Build the model with ojAlgo’s ExpressionsBasedModel and solve it with the built-in solvers. Nothing to install, nothing to deploy.

Deploy when you need more

Run the server in your own Kubernetes cluster, in your own cloud account. Add the client library to your application.

Keep the model you have

Point the same model at the service. Formulation, constraints and objective are untouched; only the solving moves.

Your application stays pure Java

The reason to choose ojAlgo in the first place is that it asks nothing of your runtime: one Maven dependency, no native binaries, no JNI, no licence server. Upgrading a solver normally forfeits all of that.

Here it does not. The client is small, pure Java and dependency-free, and the native code lives in the deployed server rather than in your application process. Your build, your artefact and your security review stay as they were.

How the service solves your model is an implementation detail. It is configured and tuned for linear, quadratic and mixed-integer problems, and Optimatika maintains and improves the solver stack. Improvements reach you through ordinary service updates, and the interface you build against does not change. You send a model. You get a solution.

The stack is assembled from the open source solver integrations we maintain. What it is made of is our concern rather than yours, and it will change as solvers improve — so the Service promises you a solved model, not access to any particular solver. Choosing between them, and switching when one of them stops being the right answer, is the work you are handing over.

Two things about that suite are worth stating plainly. No commercial solver licence is required, and none is included — there is nothing to buy from anyone else, and nothing here exposed to another vendor’s pricing. And every solver in it is under a permissive licence — Apache-2.0, MIT, BSD. The image ships a complete SBOM (SPDX 2.3) and the full licence texts of every component, so whoever reviews what runs in your cluster has it all in front of them.

Who is this for

Java developers who need optimisation

You have a problem that needs LP, QP, or MIP — but you don’t want to become a solver expert. Add one Maven dependency, formulate your model, and get a solution. No native libraries to install, no license servers to manage, no platform-specific builds to maintain.

Teams already building on ojAlgo

You have models in production built on ExpressionsBasedModel, most likely inside an application nobody outside your organisation ever sees. They work, until one of them does not scale. This is the upgrade path that does not ask you to rewrite them, adopt a new modelling API, or take native code into your own build.

Anyone comparing solver costs

A commercial solver licence is only part of the bill. JNI packaging, platform-specific builds, licence server operations, security review of native binaries, and the engineering time to keep all of it working across environments — that is where the real cost sits. This replaces the entire stack with one subscription and one container image, under permissive licences your security team can approve in an afternoon.

Three ways to use it

As an ojAlgo solver backend. The client configures ExpressionsBasedModel to solve through the service. No new API to learn and no change to the code that builds the model. This is the mode most existing ojAlgo users will want.

// Add the client dependency
// <artifactId>optimisation-service-client</artifactId>

// Configure the service endpoint (one-time setup)
OptModel.configure(URI.create("https://your-service-endpoint"));

// Your existing ojAlgo model now solves via the service
ExpressionsBasedModel model = new ExpressionsBasedModel();
// ... define variables, constraints, objective ...
Optimisation.Result result = model.minimise();

With the dedicated client. A lightweight model API with no dependencies, built for this service. Construct the problem programmatically and solve it, without adopting a larger modelling framework.

Over standards-based REST. Submit a model in MPS or LP format over HTTP and receive the solution. Any language, any toolchain, no client library.

All three are covered in the full documentation.

How you get it

The Service runs as a server inside your own cluster, in your own cloud account. Optimatika hosts nothing and receives nothing: no model data, no input data and no solution data ever leaves your environment.

Getting hold of it asks nothing of you in advance. There is no registry account to create, no credentials to arrange and no sales conversation to have first — the image is public, and the documentation has the one command that fetches it.

Without a licence key it still works. The server runs in a restricted mode — ojAlgo’s own solvers, on a single core — free forever, and enough to put a real model through and see what happens before deciding anything. A licence key unlocks the full solver suite and the capacity you have licensed. Nothing about that first step involves us.

What it costs

The licence is part of the Optimatika Subscription — one ladder, priced by the number of vCPUs you run on, with support included at every paid step.

vCPUSolversPer month
Free 1 Limited EUR 0
Base 2 Full EUR 175
Extra 8 Full EUR 350
Unlimited unlimited Full EUR 500

Run it on at least 4 vCPUs. That is the smallest allocation worth giving a real model, and at that size the subscription costs about the same as metering the identical capacity through a cloud marketplace. Below it you are paying mostly for the solvers and the support; above it, mostly for the capacity.

Pay annually and two months are free. Prices exclude VAT. Cloud compute is billed separately by your own provider, as it is for anything else in your cluster. Full terms, and what the support included with each step covers, are on the subscription page.

No seat count, no licence server, and no usage metering: nothing reports anything about your models to anyone. The server checks its licence keys periodically and nothing else leaves your cluster.

See what a subscription includes

Not ready to decide? Get in touch and describe the problem first.