<br><font size=2 face="sans-serif">Justin,</font>
<br>
<br><font size=2 face="sans-serif">The answers to some of the questions
can be found in the original paper - </font><font size=3 color=#a2a2a2>E.
M. L. Beale and J. A. Tomlin, <i>Special facilities in a general mathematical
programming system for non-convex problems using ordered sets of variables</i>,
In J. Lawrence (Ed.), Proceedings of the Fifth International Conference
on Operational Research 447-454, London: Tavistock Publications (1970).
9</font><font size=3> &nbsp;</font><font size=2 face="sans-serif"> &nbsp;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. &nbsp;So the weights are for that purpose.
&nbsp;In the original paper I think the weights were derived from the &quot;reference&quot;
row in the model but now we allow the user to enter any weights to help
direct the branching.</font>
<br>
<br><font size=2 face="sans-serif">The preprocessing is a bit primitive
and it was thought that advanced users would define their own sets and
weights as in example. &nbsp;So SOS are very much meant to be independent
of preprocessing.</font>
<br>
<br><font size=2 face="sans-serif">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.</font>
<br>
<br><font size=2 face="sans-serif">John Forrest</font>
<br>
<br>
<br>
<table width=100%>
<tr valign=top>
<td width=40%><font size=1 face="sans-serif"><b>jtyates@buffalo.edu</b>
</font>
<br><font size=1 face="sans-serif">Sent by: coin-lpsolver-bounces@list.coin-or.org</font>
<p><font size=1 face="sans-serif">03/23/2006 04:15 PM</font>
<td width=59%>
<table width=100%>
<tr valign=top>
<td>
<div align=right><font size=1 face="sans-serif">To</font></div>
<td><font size=1 face="sans-serif">coin-lpsolver@list.coin-or.org</font>
<tr valign=top>
<td>
<div align=right><font size=1 face="sans-serif">cc</font></div>
<td>
<tr valign=top>
<td>
<div align=right><font size=1 face="sans-serif">Subject</font></div>
<td><font size=1 face="sans-serif">[Coin-lpsolver] SOS in preprocessing</font></table>
<br>
<table>
<tr valign=top>
<td>
<td></table>
<br></table>
<br>
<br>
<br><tt><font size=2>I've spent some time recently looking into the presence
and usage of SOS<br>
as a form of preprocessing and branching within COIN. &nbsp;The main files
I<br>
have found which contain SOS code are in CglPreProcess, CbcBranchActual<br>
and in a sample code found under Cbc\Samples simply called SOS.cpp.<br>
<br>
As of right now, I can see that Coin has the ability to find SOS and<br>
branch on them. &nbsp;What I still can't see is specifically how the<br>
weighting of the SOS is accomplished and what the weights represent<br>
(weightSOS_), whether the SOS branching in Cbc is based off of the<br>
preprocess SOS found in the Cgl or whether these are two independent<br>
steps, and whether there is much on SOS2 (from what I've seen it appears<br>
that the focus is on SOS1 and the fixing and branching that comes from<br>
it, and not so much on SOS2).<br>
<br>
Any direction on where to find additional SOS code or materials within<br>
any of the programs would be helpful. &nbsp;Also, any answers to the above<br>
questions on SOS would be sincerely appreciated. &nbsp;I am specifically<br>
interested in SOS as they relate to preprocessing.<br>
<br>
Thank you,<br>
<br>
Justin<br>
<br>
__________________________________________<br>
Mr. Justin .T. Yates<br>
Dept. of Industrial and Systems Engineering<br>
State University of New York at Buffalo<br>
415 Lawrence D. Bell Hall<br>
Buffalo, NY 14260-2050<br>
_______________________________________________<br>
Coin-lpsolver mailing list<br>
Coin-lpsolver@list.coin-or.org<br>
http://list.coin-or.org/mailman/listinfo/coin-lpsolver<br>
</font></tt>
<br>