What (deterministic) global optimization packages support trigonometric functions such as $\sin, \cos, \tan$ in the constraints or objective function? What limitations do they have?

I am not asking about heuristic or metaheuristic algorithms.


4 Answers 4


SCIP does not currently support any trigonometric functions as of this post from May 2018.

COUENNE appears to handle $\sin$ and $\cos$ expressions.

ANTIGONE appears to not support any trigonometric functions as of 2013.

BARON states in the manual to not support any trigonometric functions in March 2019.

LINDOGLOBAL supports cos, sin, tan, cosh, sinh, tanh, arccos, arcsin, arctan.

COCONUT and MINOTAUR: no information found yet.

  • 4
    $\begingroup$ SCIP still does not support trigonometric functions as of now (June 2019). $\endgroup$ Commented Jun 3, 2019 at 8:08

Here is an option for MATLAB users which is not mentioned in any other answers.

YALMIP's BMIBNB iI a global branch and bound solver https://yalmip.github.io/solver/bmibnb/. It is used in combination with (i.e., calls) a MILP solver (such as CPLEX, GUROBI, SCIP, MOSEK) and a "call back" for evaluation continuous variable local optimization solver (such as FMINCON, KNITRO, IPOPT, SNOPT, FILTERSD) as an upper solver. It can then handle most functions in MATLAB, as well as integer variables.

It can be combined with SDP solvers as upper solver, including in principle with a nonlinear SDP solver such as PENLAB as upper solver. That provides a capability not available in any other global solver I am aware of, to globally optimize non-convex nonlinear semidefinite-constrained optimization problems; and may be mixed integer-constrained as well.

Here's a made up stupid example

sdpvar x; % declare x to be a continuous variable
intvar y; % declare y to be an integer variable
Constraints = [x+y >= 2,-5 <= x <= 5,-4 <=y <= 7]; 
Objective = atan(sin(x+y))+x^2-y^2 +4*sin(y^3) % some nonsense with trig functions
options = sdpsettings('solver','bmibnb','bmibnb.uppersolver','fmincon');
optimize(Constraints,Objective,options) % solve the problem

The key limitation is that BMIBNB was developed by one person with limited time devoted, as opposed to much larger scale development efforts for other solvers. Also, it may run out of time or memory, and it is only as good as the solvers it calls for subproblems. If used with an unreliable MILP solver, it may give erroneous results. Really badly scaled or ill-conditioned problems can cause screw ups.

All variables must be explicitly bounded, i.e., finite box constraints are required.

  • $\begingroup$ thanks, I never heard of YALMIP before! $\endgroup$ Commented Jun 1, 2019 at 17:23

From the presentation given by Vigerske, S. (2015), it is noted that the solvers Couenne by P. Belotti and LindoAPI by Y. Lin and L. Schrage can handle trigonometric expressions. Both are deterministic global optimisation solvers for MINLP.


[1] Vigerske, S. (2015). MINLP - Global Solvers. Available from: http://co-at-work.zib.de/files/stefan_minlp.pdf.

  • $\begingroup$ Thanks, that's a great start. Which trigonometric functions does each of the solvers support? The presentations mentions $\sin$ and $\cos$ for Couenne, what about $\tan$, and the hyperbolic variants? $\endgroup$ Commented Jun 1, 2019 at 16:16
  • 2
    $\begingroup$ I think Couenne is restricted to $\sin$ and $\cos$. For LindoAPI I'm not sure as it has many functions. However, note that hyperbolic functions are just combinations of exponential functions... $\endgroup$
    – TheSimpliFire
    Commented Jun 1, 2019 at 16:19
  • $\begingroup$ I am aware of that, but I suppose a solver supporting them natively might potentially produce better convex underestimators along the way and thus converge faster. $\endgroup$ Commented Jun 1, 2019 at 16:21

Octeract Engine (the solver I develop), is a deterministic global MINLP solver that supports all trigonometric functions (including hyperbolic functions).


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.