Non-convex QCQP: Gurobi 9.0.2 doesn't accept MIP start in presence of lazy callback
Hello,
I'm solving a non-convex problem using Benders decomposition, where the master problem is over a non-convex set that can be represented exactly using quadratic constraints. I have an initial solution to the problem that I know is feasible, and would like to pass to Gurobi, and I'm outer-approximating the objective using lazy constraint callbacks.
When I include lazy constraint callbacks, I have the log file
"Academic license - for non-commercial use only
Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (mac64)
Optimize a model with 2161 rows, 2253 columns and 14464 nonzeros
Model fingerprint: 0x53530502
Model has 822 quadratic constraints
Coefficient statistics:
Matrix range [2e-07, 1e+01]
QMatrix range [1e+00, 1e+00]
QLMatrix range [1e+00, 1e+00]
Objective range [1e+00, 1e+04]
Bounds range [1e+00, 1e+04]
RHS range [7e-01, 2e+00]
QRHS range [1e-03, 1e+00]
Presolve removed 20 rows and 20 columns
Continuous model is non-convex -- solving as a MIP.
User MIP start did not produce a new incumbent solution
"
and the solver then fails to find any feasible solutions (even after say 30,000 seconds in some cases).
Alternatively, if I implement a multi-tree version of Benders and add the same outer-approximation cuts directly, I get a log file message
"
Continuous model is non-convex -- solving as a MIP.
User MIP start produced solution with objective 0.37281 (0.05s)
Loaded user MIP start with objective 0.37281
"
and the warm-start is accepted by Gurobi. The only cuts I'm adding are optimality cuts, which don't change the space of feasible solutions, so the lazy callback shouldn't cut off the initial solution.
Does anyone have any suggestions for how to get Gurobi to accept the solution in the presence of the lazy callback?
N.b. I previously posted this question: https://support.gurobi.com/hc/en-us/community/posts/360065785591-Gurobi-9-0-Non-Convex-QCQP-solver-Having-trouble-getting-Gurobi-to-accept-a-warm-start?input_string=Non-convex%20QCQP%3A%20Gurobi%209.0.2%20doesn%27t%20accept%20MIP%20start%20in%20presence%20of%20lazy%20callback but it didn't fully resolve my issue.
-
Hi Ryan,
Could you evaluate your lazy constraints at your point of interest to check whether they are truly fulfilled (within tolerances)? It may be the case that some numerical issues or round off errors are preventing Gurobi from accepting your point in the first case but not in the second one.
Is it possible for you to provide a minimum working example of this issue?Best regards,
Jaromił0
Please sign in to leave a comment.
Comments
1 comment