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 set_optimizer(MyBMod, "nlpoptimize",1)
but without success.
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?
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.