[Coin-lpsolver] SOS in preprocessing

John J Forrest jjforre at us.ibm.com
Fri Mar 24 06:03:15 EST 2006


Justin,

The answers to some of the questions can be found in the original paper - 
E. M. L. Beale and J. A. Tomlin, Special facilities in a general 
mathematical programming system for non-convex problems using ordered sets 
of variables, In J. Lawrence (Ed.), Proceedings of the Fifth International 
Conference on Operational Research 447-454, London: Tavistock Publications 
(1970). 9    So the weights are designed so that the code knows where to 
branch - so if an SOS1 set was to model facilities with sizes of 0, 
400,600 and 800 and if the variable for size 0 had value 0.6 and the 
variable for size 800 had value 0.4 then the LP is using a capacity of 320 
so the two branches should be 0 or at least 400.  So the weights are for 
that purpose.  In the original paper I think the weights were derived from 
the "reference" row in the model but now we allow the user to enter any 
weights to help direct the branching.

The preprocessing is a bit primitive and it was thought that advanced 
users would define their own sets and weights as in example.  So SOS are 
very much meant to be independent of preprocessing.

As for SOS2, I did not have a realistic example to hand, but I know that 
John Tomlin has used SOS2 successfully with COIN and he may be able to add 
some thoughts.

John Forrest



jtyates at buffalo.edu 
Sent by: coin-lpsolver-bounces at list.coin-or.org
03/23/2006 04:15 PM

To
coin-lpsolver at list.coin-or.org
cc

Subject
[Coin-lpsolver] SOS in preprocessing






I've spent some time recently looking into the presence and usage of SOS
as a form of preprocessing and branching within COIN.  The main files I
have found which contain SOS code are in CglPreProcess, CbcBranchActual
and in a sample code found under Cbc\Samples simply called SOS.cpp.

As of right now, I can see that Coin has the ability to find SOS and
branch on them.  What I still can't see is specifically how the
weighting of the SOS is accomplished and what the weights represent
(weightSOS_), whether the SOS branching in Cbc is based off of the
preprocess SOS found in the Cgl or whether these are two independent
steps, and whether there is much on SOS2 (from what I've seen it appears
that the focus is on SOS1 and the fixing and branching that comes from
it, and not so much on SOS2).

Any direction on where to find additional SOS code or materials within
any of the programs would be helpful.  Also, any answers to the above
questions on SOS would be sincerely appreciated.  I am specifically
interested in SOS as they relate to preprocessing.

Thank you,

Justin

__________________________________________
Mr. Justin .T. Yates
Dept. of Industrial and Systems Engineering
State University of New York at Buffalo
415 Lawrence D. Bell Hall
Buffalo, NY 14260-2050
_______________________________________________
Coin-lpsolver mailing list
Coin-lpsolver at list.coin-or.org
http://list.coin-or.org/mailman/listinfo/coin-lpsolver

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://list.coin-or.org/pipermail/clp/attachments/20060324/2a235ea8/attachment.html>


More information about the Clp mailing list