raskorasko via MathKB.com wrote:
> Hi Paul,
> I'm implementing my algorithm with your help. Thank you so much for your
> replies.
You're welcome.
> I just have a simple question :
>
> - in the branch callback, I will just create a new branch with a "null"
> IloRange as argument, because I want my cuts to be added as global cuts,
> which is done by the lazy cut callback ?
I'm not sure what would happen if you used a null argument. It might
cause CPLEX to throw an exception, or it might cause CPLEX to proceed
with branching on its own. The problem with "branching on its own" is
that CPLEX will look to separate based on an integer variable whose
solution in the node LP is fractional; but if the node LP gave an
integer solution, CPLEX will not find a variable on which to separate,
and will either prune the node (bad) or throw an exception (worse).
So my branch callback either returns without doing anything (if there
are no cuts queued) or, if there are global cuts in the queue waiting
for the cut callback to install them, the branch callback passes those
same cuts in its argument. The child node will be built from the parent
by adding those cuts (adding them only at the child). At the child
node, the cut callback will immediately be called and will add those
same cuts again, this time as global cuts. (The cut callback also
clears the queue, so that those cuts are not added over and over.) The
cut callback adding the cuts a second time to the child is harmless, and
the cut callback is necessary to make the cuts global.
>
> By the way, I'd love to speak more about the project your working on,
> especially because I have seen very few such algorithms in the litterature
> whereras it seems to me (young and naive phd student ;-) ) that they might be
> very efficient.
>
> Here is my email: mposs [at] ulb [dot] ac [dot] be
>
> Send my yours and we could chat a bit more about that subject if you're
> interested.
I will do that. I'm off to a conference today, but I'll be back in a
week, and we can get in direct contact then.
>
> Thank's again for your help, you prevented me from writing another branch-and-
> cut from scratch :-).
>
You're welcome, and good luck.
/Paul