I am trying to use Xpress on a model with bilinear terms.
With linear models it works while with my bilinear model I obtain:
?900 Warning: The quadratic part of row 'R21577' defines a nonconvex region.
Please check your model or use nlpoptimize.
How to use nlpoptimize?
I tried using
MyBMod = BilevelModel(Xpress.nlpOptimizer, mode=...)
or declaring it as an option
but without success.
Thank you in advance
cc @joaquimg is our Xpress and BilevelJuMP expert.
You could try using Gurobi instead, but the non-convex part combined with BilevelJuMP is a bit concerning. Is the bilinearity in the upper or lower level?
The bilinearity is in the upper level.
I already used gurobi but I would like to compare it with Xpress
I dont think Xpress.jl supports that yet then. We have a plan to fix things early next year.
Do you know how to declare the non linearity with xpress on single-level models?
( MyMod = model…)
Not to my knowledge but Joaquim might. Its what we would fix next year
Ok I will wait for the answer of @joaquimg to see if it is possible (and how) to use xpress.jl to solve a single-level model with bilinear terms.
I am searching for the equivalent in xpress of the option (nonconvex=2) of gurobi
Sorry for the delay.
Xpress NL requires some updates to the API that are not ready yet.
Since the problem is a QCQP, it might only require a simple update in
optimize! and a recent version of express.
I can give it a try and check.
You can use QuadraticToBinary.jl to get rid of bilinear terms. There is a tutorial for this: Using QuadraticToBinary · BilevelJuMP.jl
However, this might not be considered a fair benchmark between Xpress and Gurobi.