'Solver not applicable (gurobi)' For QCQP

35 views
Skip to first unread message

S G

unread,
May 29, 2020, 11:56:33 AM5/29/20
to YALMIP
Dear Prof. Löfberg,
I'm trying to solve a non-convex QCQP problem using YALMIP. The newest version of GUROBI can handle bilinear terms (https://www.gurobi.com/resource/non-convex-quadratic-optimization/), but YALMIP recognizes the problem is not applicable for GUROBI.

Please find a simple script below that can reproduce this issue.

clear;
x = sdpvar;
y = sdpvar;

% sdpopt = sdpsettings('solver','knitro');
sdpopt = sdpsettings('solver','gurobi');
optimize([-2 <= x*y <= 1; -5<=x<=-1; -1<=y<=6], x^2+y^2, sdpopt)


Matlab outputs:

Warning: Solver not applicable (gurobi)

ans =

  struct with fields:

    solvertime: 0
          info: 'Solver not applicable (gurobi)'
       problem: -4
    yalmiptime: 0.0720

Thanks,
SG

Johan Löfberg

unread,
May 29, 2020, 12:00:29 PM5/29/20
to YALMIP
Not supported yet. Use bmibnb if you want to solve that problem globally

S G

unread,
May 29, 2020, 1:07:21 PM5/29/20
to YALMIP
Thanks! I will try bmibnb.

Currently I'm using KNITRO to solve my problem,but it seems YALMIP is stuck at building the problem for KNITRO for more than 1 hour. (Maybe I should try a smaller problem first, currently I have about 3e4 varibles and 1e4 constraints...)

Operation terminated by user during jacobiansparsityfromnonlinear
(line 29)


In callknitro (line 31)
model.options.knitro.JacobPattern =
jacobiansparsityfromnonlinear(model,0);

In solvesdp_multiple (line 38)
        eval(['output = ' model.solver.call '(model);']);

In solvesdp (line 17)
        diagnostic = solvesdp_multiple(varargin{:});

In optimize (line 31)
[varargout{1:nargout}] = solvesdp(varargin{:});

Johan Löfberg

unread,
May 29, 2020, 1:22:07 PM5/29/20
to yal...@googlegroups.com
With that size the problem is just orders of orders of magnitude too large for a rigorous global solver
Reply all
Reply to author
Forward
0 new messages