[Coin-bcpdiscuss] Information on the children of a node

Laszlo Ladanyi ladanyi at us.ibm.com
Sun Jan 28 22:05:21 EST 2007



On Mon, 29 Jan 2007, Soumitra Pal wrote:

> Thanks Laci & Francois.
> 
> In fact, I have the code of CSP with me. Around six months back, I 
> posted a mail on this discussion group asking for an example CSP code 
> and one of the users, Dr. Rao, forwarded me the code since it was not 
> visible on the CVS that time. However, I did not use it because I got 
> busy with other work. Now I am giving more attention to my Masters 
> thesis and this code/BCP will definitely help me working out the ideas 
> we are having.
> 
> I could successfully build the example with the BCP_1.0.0. However, I am 
> not sure if I have the latest copy of the code since I got it long time 
> back. It will be great if you put it on SVN. From my experience, it 
> should not take much time. Only thing I had to do is to take Makefile.in 
> from other example (BAC) and change it for the CSP source files and use 
> configure to generate the Makefile.

The only work is that the interface has changed slightly since the CSP code
was written and it needs to be brought up-to-date.

> 
> However, I still have one doubt on the branching. From my current 
> understanding, vars[i]->is_non_removable() is true in both the children. 
> Right? Then how can we differentiate between the two children using this 
> information only?

Simply by looking at the bounds of the variable. 

> 
> Another problem which I think may come up some time later is the 
> following. In Vanderbeck 1999, it is proposed that there can be 
> branching on the sum of fractional variables instead of a single 
> fractional variable. However, according to my understanding, currently 
> branching in BCP is limited to single fractional variable. Is this correct?

No, it's not correct. A branching object in BCP is anything that (maybe after
adding cuts -- I mean that adding a cut can be part of how a branching object
functions) changes bounds on cuts and variables arbitrarily. Probably the
easiest way to achive Vanderbeck's rule is that you create a cut type of your
own (deriving from BCP_cut_algo) that you'll use for branching. When you
decide to branch and figured out which vars to include, just create a
branching cut and in the children set the cut's bounds as you like. You'll
probably have to store the indices (vars[i]->bcpind(), which is the index of
the var assigned by BCP to a variable, not its current position in the matrix)
of the affected variables in the cut as the matrix may change. Note that the
index of a var may be negative if it has not yet been sent to the tree
manager. In this case -vars[i]->bcpind() will be its final internal index.

> 
> Thanks
> Soumitra.
> 

I hope this helps,
--Laci




More information about the Coin-bcpdiscuss mailing list