Can SCIP solve MINLP with trigonometric functions?

Hi everyone!

I’m trying out SCIP in JuMP (with SCIP.jl). In the FAQ in the documentation, when aswering the question “Which kind of MINLPs are supported by SCIP?” (SCIP Doxygen Documentation: Frequently Asked Questions (FAQ)), it is written that SCIP does not support trigonometric functions. However when I wanted to try it out, the solver did manage to solve a problem with trigonometric function. The problem is:

import JuMP, SCIP

model = Model(SCIP.Optimizer)
set_attribute(model, "display/verblevel", 0)
set_attribute(model, "limits/gap", 0.05)

@variable(model, 0<= x <= pi)
@variable(model, y)

@objective(model, Min, y)

@NLconstraint(model, c, y>= sin(x)*sin(11*x))

optimize!(model)

Was SCIP updated to support trigonometric functions but not the documentation? Thanks!

(I’m using JuMP v1.22.2 and SCIP v0.11.6)

1 Like

SCIP supports sin and cos.

See GitHub - scipopt/SCIP.jl: Julia interface to SCIP solver

In general, SCIP will throw an error if you try to use an unsupported function.

1 Like

Thanks for the answer!

Do you know if trigonometric functions are natively supported by SCIP or if it is the Julia wrapper that reformulates the functions in a way the solver can handle ?

SCIP supports sin and cos. The Julia wrappers do not reformulate approximations of nonlinear expressions; we pass them directly to the solver.

Thanks for the feedback. I’ve created a SCIP issue: Documentation update about trigonometric functions (cos, sin) support · Issue #98 · scipopt/scip · GitHub

Feedback from SCIP devs: support was introduced in SCIP 8.0.0 (early 2022), see: