<div dir="ltr">Thanks a lot John for the bug fixes and extensive explanation.<div><br></div><div><br></div></div><div class="gmail_extra"><br><br><div class="gmail_quote">2014-06-28 10:14 GMT+02:00 John Forrest <span dir="ltr"><<a href="mailto:john.forrest@fastercoin.com" target="_blank">john.forrest@fastercoin.com</a>></span>:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div text="#000000" bgcolor="#FFFFFF">
<div>Marco,<br>
<br>
I would strongly recommend going to Cbc/trunk as then I can
quickly fix things for you.<br>
<br>
There are three! ways of passing in SOS to Cbc -<br>
1) SOS indicated in an mps file going in via OsiClp.<br>
2) SOS set in CbcModel.solver() by OsiSOS<br>
3) SOS set in CbcModel by CbcSOS<br>
<br>
1) and 3) were working but 2) was not being detected (now fixed) -
so probably better to have<br>
<br>
objs[0]= new CbcSOS(&model,3,which,NULL,0,1);<br>
model.addObjects(1,objs);<br>
<br>
in your code.<br>
<br>
The Lotsizing example does work on stable - but I can see problems
with stable. Osi and OsiClp do not know about lotsizing so again
you need to use model.addObjects(1,objs). <br>
<br>
This worked on stable if I used model.branchAndBound(). I have
fixed in trunk so that callCbc also works correctly.<br>
<br>
However for safety you need to modify your code a bit - by playing
around a bit with bounds I managed to get a solution with x1 at
6.33333, even though x1 was declared as integer. This is because
a lotsizing decision overrode the integer decision. There is no
elegant change to code to fix that problem, but the solution is
trivial. If you really want ranges of valid values in a lotsizing
variable then do not declare it to be integer. If you want a
subset of points, then again do not declare it as integer but use
something like -<br>
<br>
double points[7] = {0.0,3.0,4.0,5.0,6.0,8.0,10.0};<br>
objs[0] = new CbcLotsize(&model,1,7,points);<br>
model.addObjects(1,objs);<br>
<br>
If you want something even more complicated then it is easy to
derive a MyLotsizing object which does exactly what you want.<br>
<br>
I attach a (much) modified version of your code (adjusted for
gcc).<br>
<br>
I hope this helps.<div class=""><br>
<br>
John Forrest<br>
On 27/06/14 15:50, mg wrote:<br>
</div></div>
<blockquote type="cite"><div><div class="h5">
<div dir="ltr">Hi all,
<div>I'm trying to use SOS and LotSize/SemiContinuous objects
without success.</div>
<div><br>
</div>
<div>I have created a very simple program (attached) containing
a small problem with SOS and a small problem using LotSize
objects... </div>
<div><br>
</div>
<div>The SOS test problem is the following:</div>
<div><br>
</div>
<div>
<div>max 3 * x0 + 2 * x1 + 4 * x2</div>
<div>subject to</div>
<div> x0, x1, x2 binary</div>
<div> sos1(x0, x1, x2)</div>
</div>
<div><br>
</div>
<div>and solving it, I get x0 = 1, x1= 1, x2 = 1 where I
expected just one single 1...</div>
<div><br>
</div>
<div>The LotSize/SemiContinuous test problem is the following:</div>
<div><br>
</div>
<div>
<div>min 2 * x0 + 3 * x1 + x2</div>
<div>subject to</div>
<div> 3 * x0 + 5 * x1 + 7 * x2 <= 42</div>
<div> 4 * x0 + 3 * x1 + 2 * x2 <= 31</div>
<div> 2 * x0 + 1 * x1 + 5 * x2 <= 23</div>
<div> x0, x1, x2 integers [0,4]</div>
<div> x1 semi-continuous can be 0 or [3,4]</div>
</div>
<div><br>
</div>
<div><span>and solving it, I get x0 = 4, x1 = 2 where I expected
x1 being 0,3 or 4</span><br>
</div>
<div><span><br>
</span></div>
<div>Am I doing something wrong ?</div>
<div><br>
</div>
<div>Thanks in advance,</div>
<div>Marco</div>
</div>
<br>
<fieldset></fieldset>
<br>
</div></div><div class=""><pre>_______________________________________________
Cbc mailing list
<a href="mailto:Cbc@list.coin-or.org" target="_blank">Cbc@list.coin-or.org</a>
<a href="http://list.coin-or.org/mailman/listinfo/cbc" target="_blank">http://list.coin-or.org/mailman/listinfo/cbc</a>
</pre>
</div></blockquote>
<br>
</div>
<br>_______________________________________________<br>
Cbc mailing list<br>
<a href="mailto:Cbc@list.coin-or.org">Cbc@list.coin-or.org</a><br>
<a href="http://list.coin-or.org/mailman/listinfo/cbc" target="_blank">http://list.coin-or.org/mailman/listinfo/cbc</a><br>
<br></blockquote></div><br></div>