Octeract

faq

Deterministic global optimization (DGO) is the science of solving a non-convex optimization problem, while at the same time obtaining a certificate of global optimality for the result. In other words, it is the branch of optimization which studies how to guarantee global optimality for non-convex problems. This also implies that DGO is the only way to prove/disprove infeasibility of a non-convex problem.
It highly depends on the math involved, and the domain of definition. The largest non-linear problem we have solved during our testing had about 110,000 continuous variables, 100,000 constraints and 10 binaries. Because we could exploit special structure, this was solved to global optimality in ~40s. In constrast, small problems of ~10 variables can take minutes or even a few hours if the functions are highly non-linear and full of singularities.
Octeract Engine should run on any modern computer, although we recommend at least 4 physical cores and 16GB of RAM if you are running large problems in MPI-based parallel mode. Otherwise, running in serial or multi-threaded mode is more efficient.
 
Performance highly depends on the problem you are trying to solve, and your desired global optimality tolerance. In most cases we are able to detect and exploit special structure, which can improve performance tremendously.
Generally speaking, the main factors which contribute to CPU time cost are: the number of variables and constraints; the degree and type of non-linearity in your problem expressions; and the level of sparsity of the Hessian and the Jacobian of your problem.
 
Large problems may require a significant amount of RAM, especially in MPI mode. As a rule of thumb, solving a 7000×7000 problem of moderate sparsity in a 100 processor cluster, consumed about 30GB of memory in the master node, while solving a 100,000×100,000 problem in serial mode consumed about 10GB of memory.
Not at the moment, but if this is a feature you need, you are most welcome to submit a feature request!
As always, the best way to gauge a solver’s performance for your particular problems, is to try it out yourself.
 
The solver is currently stable across a test set of 3,012 problems of varying size, sparsity, and nonlinear structure; and can solve about half of these problems in under a minute (using one CPU). Our internal benchmarks and statistics can be found here.
 
A proper comparison against other nonlinear solvers needs to be performed by an independent third party which we expect to happen in due time.
Octeract Engine has implementations of algorithms that guarantee convergence to a global optimum in finite time. The correctness of the majority of the calculations are ensured through a combination of interval arithmetic and infinite precision arithmetic. Of course, this guarantee can still be compromised due to undiscovered bugs in the software and/or floating-point errors from third-party dependencies.