Originally posted by: Trino
Hi, In the model I'm solving in Cplex using concert c++ (cplex 12.5) there are a set of exponential constraints, so I'm using a branch&cut with the formulation relaxed for this exponential set.
For integer nodes I use the LazyConstraintCallback and everything works just fine. For fractional nodes, I was using the UserCutCallback, however I'm having some problems when adding cuts via the user cut callback. For example, for one instance cplex throws an error saying there are no solutions.
I've taken all the cuts added for this instance, analysed them manually and they all seemed ok, I mean, they didn't cut the optimal solution. To test further I loaded them into the model at the beggining and solved without the B&C, just to check if the same error would be thrown, but cplex found a solution, which means that the cuts are just fine.
I was checking the documentation for the UserCutCallback (here) and I noticed the following part:
The constraints added in an instance of UserCutCallbackI must be real cuts in the sense that omitting them does not affect the feasible region of the model under consideration.
What happens is that, since I'm solving a relaxed version of my formulation, the separation procedure at fractional nodes not only cut the current node, but also can cut integer points, which apparently is not ok for the UserCutCallback. I though that by disabling the options IloCplex::Reduce and IloCplex::PreLinear would be fine to add this kind of cuts in such callback.
Since the LazyConstraintCallback is only called for integer solution, how can I separed these constraints in fractional nodes?
Thanks.
#CPLEXOptimizers#DecisionOptimization