The Engine is not your average solver. This post is about to outline twelve reasons why.
Octeract Engine stands out as technology that works for the user by seamlessly solving complex optimisation problems. Here’s how the Engine differs from local solvers:
1. Finds a Global Solution
Local solvers are infamous for their ability to get stuck on a local optimum or return low-quality solutions. The worst part is sometimes they don’t return a solution at all. Octeract Engine doesn’t compromise on this. It will always find the global solution without user intervention. Guaranteed.
2. No Starting Points Needed
It’s a fact that local solvers will only work well when provided with some good starting points. This can mean months of trial and error for you. The Engine prioritises efficiency and has no need for user-provided starting points. It will always find the global solution without the user having to identify starting points. You’re welcome.
3. No Need for Derivatives
Unless invoked through a modeling language, most local solvers require users to provide derivatives of their optimisation problem. If no derivatives are provided, local solvers will use finite differences to compute them. This is not good news. The calculation is much slower, inaccurate, numerically unstable, and let’s face it: coding the sparse vectors for the Hessian of the Lagrangian of a problem is not a good use of anyone’s time. Instead, the Engine is up to the task and will calculate exact derivatives based on the user’s math. This a problem you need not ever worry about.
4. Speedy Derivatives
Our derivatives are faster than yours. Seriously. Even if you take the time to code the callbacks required by local solvers, it will be super slow. We’ve seen cases where users homebrew derivatives at a rate that is 20 000 – 100 000 times slower than ours. For the same problem. It’s not the user’s fault though. We have an unfair advantage. Octeract Engine not only has professionally-written algorithmic differentiation code behind its name, but it can also read the user’s math. This means that it can symbolically simplify any problem so that the derivatives are as cheap to compute as possible. Save your time for when you need it.
5. Problem Simplification
Given the Engine’s ability to read math, it can presolve any problem. The process of presolving involves making the problem smaller before solving it. This powerful toolbox of techniques allows Octeract Engine to reduce the size of a problem by 10 – 100 times before solving it. Just another trick the Engine has up its sleeve to make solving simple.
6. Detects Convexity
The detection of convexity is vital for local solvers as it’s part of the KKT conditions for optimality. However, local solvers can’t tell if the problem is convex as they can only see the numbers, not the math. Octeract Engine is equipped with advanced convexity detection algorithms. This means that it will automatically detect convexity in the user’s problem and exploit it. Hello, unique global solutions.
7. Convexifies Non-convex Problems
The Engine can read math so it has context. This means that Octeract Engine knows when it’s safe to make assumptions and approximations to convexify a problem. The Engine does this seamlessly without compromising the global solution. Needless to say, this breaks down the barriers to solving complex problems to global optimality. It also goes without saying that this is a bridge too far for any local solver.
8. Makes Math Better
We’ve said it before and we’ll say it again: local solvers cannot read math. It’s a fact that their input is vectors and matrices of numbers. Therefore, a user’s responsibility is to ensure the math is solver-friendly. With Octeract Engine, this is taken care of automatically as it comes with a built-in symbolic Engine. This can apply over 200 different tricks to the user’s math, making it fast and numerically stable. Yes, it’s as clever as it sounds.
9. Solves (MI)LPs Well Too
A good way to experience time standing still: use a local solver to solve a linear programming problem. They are often really slow. As in a glacial pace. Octeract Engine has Octeract Engine has 14 solvers built-in to exploit any special structure it detects. This means that the Engine works well even if the problem is not non-linear. It’s anything but a one-trick pony.
10. Solves Non-smooth, Discontinuous Problems
When faced with these types of problems, local solvers either never converge or they crash. Since Octeract Engine comes with a built-in symbolic engine, it can solve non-smooth, discontinuous problems to global optimality. No user intervention required.
11. Points Out a Faulty Model
When a local solver fails to find a solution, it will return a message saying that it converged to an infeasible point. This doesn’t help the user in any way, shape, or form. Could there be a bug in the derivatives? Or do the starting points need to change? Is the model wrong? This guessing game could cost you weeks. Octeract Engine doesn’t leave you trying to figure it out. The Engine detects when a model is infeasible so you know where the issue lies and can fix it. Efficiency at its best.
12. Parallel Scaling
Octeract Engine is one of a kind – it is built for supercomputing and supports this out of the box. Despite the fact we thrive on coding mathematical tricks, some problems just need brute force if they’re going to be solved this century. The Engine can attack hard problems with thousands of CPUs to speed up the solving process. This is a superpower that puts the Engine in a league of its own.
The Engine is unlike any solver since it allows for simple solving. You can try the Engine out by requesting a trial.