Success with a Single Solver

Success
3 min read

Octeract Engine is a unique solver. For every problem. For everyone.

The Engine has been written in its very own programming language, Octeract Reformulation Language (ORL), which makes this MINLP solver one of a kind. This post will outline:

Why the Engine is one solver for everything
Types of optimisation problems that can be solved
Solution Quality
The Secret to Success

One Solver for Everything

The Engine has been specifically designed to tackle optimisation problems of various difficulty levels and mathematical structures. Nothing can throw it off the scent of finding a global solution. Octeract Engine puts the user first by ensuring that no solver-switching is needed. Here’s how the Engine does it all:

File Formats

Octeract Engine can read and write different file formats. Supported input formats include .nl, .mod, .lp, .mps, .py and .gms. Once a model is loaded into the Engine, it can also seamlessly write the model into any of the formats it supports. This makes the solver a useful file conversion tool and ensures no model is left out.

Python API

Our API allows users to call and use the Engine as well as the Reformulator tools using Python syntax. This user-friendly environment lets you build models and helps to perform repetitive or demanding tasks. Our interactive API ensures that the Engine is easy enough for everyone to use. There’re no barriers to employing this software.

Solves Well

The Engine can and will detect special structure. This means that the Engine has a habit of solving all types of problems well. It also makes math look easy. Octeract Engine is fully equipped to read your math and presolve any problem. No matter the problem, the Engine can solve it. In fact, it won’t stop until it’s found the best possible solution.

All the user needs is a problem. If you have explicit mathematical expressions and equations of your optimisation problem, you are ready to start solving.

Types of Optimisation Problems

The Engine has the ability to automatically read and classify a problem within seconds. When we say it solves all common types of problems, we mean it. Octeract Engine is equipped to handle the following problem classes:

Supported Problem Type(MI)LP(MI)QP(MI)QCP(MI)QCQPD(MI)NLP(MI)SDP*Black-box
Continuous
Convex
Mixed-Integer
Non-convexN/AN/A

*Currently, there is no known way to guarantee global optimality for black-box problems.

Solution Quality

The Engine is a deterministic global optimisation solver – it has got the power to return solutions of superior quality time and time again. This means that the user never needs to employ another solver.

Since the Engine is a non-linear solver, it’s characterised by its ability to solve everything. Not only does it solve everything. It does it well.

The Engine’s quest to find the global optimal solution enables it to always find the best solution. In general, there’s an 85% chance of the Engine returning a feasible solution to a problem within a minute or two, using a single CPU.

This dedication to finding the global optimal solution allows the Engine to get a better local solution. The power is in the process. While local solvers give up, the Engine will never stop searching for the best possible solution. This means that the solution is always much better than that returned by any local solver. Users don’t need to run the problem for hours on end to get a solution they can work with. Just another way the Engine works to the user’s advantage.

The Secret to Success

So, what’s the secret sauce that makes Ocertact Engine’s solving a recipe for success? The Engine comes with built-in reformulations. In fact, it has one of the highest number of reformulations found in any solver.

This feature allows the Engine to apply various tricks to the user’s math, making it better and easier to solve. The symbolic simplification of the math means that complex problems become light work for the Engine. This is why the Engine has a reputation as a solver with superpowers.

Leave a Reply

%d bloggers like this: