<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    <div class="moz-cite-prefix">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&nbsp; 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>
      &nbsp;&nbsp;&nbsp; objs[0]= new CbcSOS(&amp;model,3,which,NULL,0,1);<br>
      &nbsp;&nbsp;&nbsp; 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.&nbsp; Osi and OsiClp do not know about lotsizing so again
      you need to use model.addObjects(1,objs). &nbsp; <br>
      <br>
      This worked on stable if I used model.branchAndBound().&nbsp; 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.&nbsp; This is because
      a lotsizing decision overrode the integer decision.&nbsp; There is no
      elegant change to code to fix that problem, but the solution is
      trivial.&nbsp; If you really want ranges of valid values in a lotsizing
      variable then do not declare it to be integer.&nbsp; If you want a
      subset of points, then again do not declare it as integer but use
      something like -<br>
      <br>
      &nbsp;&nbsp;&nbsp; double points[7] =&nbsp; {0.0,3.0,4.0,5.0,6.0,8.0,10.0};<br>
      &nbsp;&nbsp;&nbsp; objs[0] = new CbcLotsize(&amp;model,1,7,points);<br>
      &nbsp;&nbsp;&nbsp; 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.<br>
      <br>
      John Forrest<br>
      On 27/06/14 15:50, mg wrote:<br>
    </div>
    <blockquote
cite="mid:CAOayR=bVm9BGxNTkSE0WkFxczJ0HO-YFhMKeETjQ8mmu_tcu9Q@mail.gmail.com"
      type="cite">
      <meta http-equiv="Context-Type" content="text/html; charset=UTF-8">
      <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... &nbsp;</div>
        <div><br>
        </div>
        <div>The SOS test problem is the following:</div>
        <div><br>
        </div>
        <div>
          <div>max &nbsp; &nbsp; &nbsp; &nbsp; 3 * x0 + 2 * x1 + 4 * x2</div>
          <div>subject to</div>
          <div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; x0, x1, x2 binary</div>
          <div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 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 &nbsp; &nbsp; &nbsp; &nbsp; 2 * x0 + 3 * x1 + x2</div>
          <div>subject to</div>
          <div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 3 * x0 + 5 * x1 + 7 * x2 &lt;= 42</div>
          <div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 4 * x0 + 3 * x1 + 2 * x2 &lt;= 31</div>
          <div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 2 * x0 + 1 * x1 + 5 * x2 &lt;= 23</div>
          <div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; x0, x1, x2 integers [0,4]</div>
          <div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 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 class="mimeAttachmentHeader"></fieldset>
      <br>
      <pre wrap="">_______________________________________________
Cbc mailing list
<a class="moz-txt-link-abbreviated" href="mailto:Cbc@list.coin-or.org">Cbc@list.coin-or.org</a>
<a class="moz-txt-link-freetext" href="http://list.coin-or.org/mailman/listinfo/cbc">http://list.coin-or.org/mailman/listinfo/cbc</a>
</pre>
    </blockquote>
    <br>
  </body>
</html>