Octeract Engine is a massively parallel MINLP solver. It is written in ORL (Octeract Reformulation Language), a programming language we designed to build a new generation optimisation engine. The ORL compiler enables rapid development of high-performance algorithms.
The engine contains 14 Octeract solvers for different types of mathematical structure, each with their own algorithms, to a grand total of 1031 high-performance algorithms.
Supported Modeling Languages
Supported Programming Languages
Supported File Formats
What makes this MINLP solver different?
- Finds the global solution. Every time. Guaranteed.
- No need for starting points from the user
- Solves any math, including non-smooth & discontinuous
- No need for the user to provide derivatives
- Thousands of CPUs can be used on hard problems
- Has a presolver that reduces problem size
- Automatically detects convexity
- Automatically convexifies non-convex problems
- Automatically applies hundreds of mathematical tricks
- Solves (MI)LPs well too
Did you know?
import octeract as orl from octeract import Model m = Model() m.import_model_file("aircraft.nl") m.detect_convexity() # Reformulate all powers of binaries to binaries if not m.is_convex(): linearise_powers = (orl.Match('V(b)^P(a)') & orl.IsBinary('b')).then(orl.SubTerm('b')) m.apply_mod(linearise_powers) m.global_solve(cores=30, timeout=10)
% Feasible Solutions in CoconutLib
% Feasible Solutions in MINLPLib
% Feasible Solutions in QPLib
- Built-in high-performance symbolic engine that does math for the user
- Natively supports distributed computing through MPI
- Guarantees global optimality for any algebraic mathematical structure
- Parallel branch-and-bound for continuous and discrete problems
- Performs symbolic whole-problem transformations to solve easier versions of the input problem
- Contains 14 solvers that exploit different types of mathematical structure
- Applies dozens of heuristics, problem reduction, and domain reduction techniques
- It will classify your problem
- It will linearise your problem
- It will automatically detect whether your problem is convex/concave
import octeract m = Model() m.import_model_file("../aircraft.nl") m.global_solve(cores=30)
The Future of Optimisation
Octeract Engine is more than just a solver. It’s an entire environment.
The Engine works the way you work, allowing you to do what you do. Just better.
Trial the Engine