Hi,
I am currently trying out different formulations for a research problem. Some of these models I consider replace (sets of constraints) by equivalent formulations using Lazy Cuts.
Similar to
this question, I experience some unwanted behavior, as some solutions are accepted even though the solution violates certain lazy inequalities.
Specifically, my callback handler does not find any violations as (seemingly) the values obtained by calling cbGetSolution() seem out of date.
My model contains binary as well as continuous variables. Nearly all of the continuous variables are implicitly binary as these are set via logical connectives (implications, conjunctions etc.).
While the explicit binary variables attain values in {0,1}, some other variables are fractional, which should not be possible.
To rule out some mistakes on my side, I tried the following:
- Recreate the model and fix all binary variables according to the (wrongly found) solution. In this case my callback handler directly determines that this solution is not feasible.
- Recreate the model from scratch and use the values of the (wrongly found) solution as a start vector for the solution. Also in this case the callback handler determines the infeasibility and gurobi reports that "MIP start did not produce a new incumbent solution".
It seems that this behavior is triggered by Gurobi trying to fix infeasibilities. I experienced this behavior only after a solution is cut off by the callback handler after which a new solution with questionable variable values is proposed.
I have experienced this behavior both with Gurobi 6.0.5 and with 6.5.
I can provide the source code by mail, if necessary.
Best,
Matthias Rost