<br><font size=2 face="sans-serif">That's right: &nbsp;SmiScnModel::readSmps()
will not read all bounds formats correctly. &nbsp;SmiScnModel seems to
be working fine, though.</font>
<br>
<br><font size=2 face="sans-serif">So its better to use the &quot;direct
interface pattern&quot;. &nbsp;I have uploaded the nice Bug example using
this pattern into Coin/Examples/Stoch/stoch.cpp. &nbsp;</font>
<br>
<br><font size=2 face="sans-serif">Thanks Francois!</font>
<br><font size=2 face="sans-serif"><br>
Alan King</font>
<br>
<br>
<br>
<br>
<table width=100%>
<tr valign=top>
<td width=40%><font size=1 face="sans-serif"><b>Francois Margot &lt;fmargot@andrew.cmu.edu&gt;</b>
</font>
<br><font size=1 face="sans-serif">Sent by: coin-smi-bounces@list.coin-or.org</font>
<p><font size=1 face="sans-serif">05/20/2005 12:00 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-smi@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-SMI] Changing right hand side
of inequalities</font></table>
<br>
<table>
<tr valign=top>
<td>
<td></table>
<br></table>
<br>
<br>
<br><font size=2><tt><br>
I am trying to change the right hand side of inequalities in the .stoch
file. <br>
When working with equalities, everything works as expected, but with <br>
inequalities, instead of changing the rhs, the code creates a ranged <br>
constraint. I list below the three input files creating the problem.<br>
<br>
The code we use is basically the following:<br>
<br>
smi.readSmps(bug);<br>
OsiClpSolverInterface *clp = new OsiClpSolverInterface();<br>
smi.setOsiSolverHandle(*clp);<br>
OsiSolverInterface *osiStoch =smi.loadOsiSolverData();<br>
osiStoch-&gt;writeMps(&quot;bug&quot;);<br>
<br>
Using the following files:<br>
<br>
----------------------------------------------------------<br>
bug.core file:<br>
<br>
NAME &nbsp; &nbsp;BUG<br>
ROWS<br>
 &nbsp;N &nbsp;obj<br>
 &nbsp;G &nbsp;C0<br>
 &nbsp;G &nbsp;C1<br>
 &nbsp;G &nbsp;C2<br>
 &nbsp;G &nbsp;C3<br>
COLUMNS<br>
 &nbsp; x01 &nbsp; obj &nbsp; 1<br>
 &nbsp; x01 &nbsp; C3 &nbsp; &nbsp;1<br>
 &nbsp; x01 &nbsp; C1 &nbsp; &nbsp;1<br>
 &nbsp; x01 &nbsp; C0 &nbsp; &nbsp;1<br>
 &nbsp; x02 &nbsp; obj &nbsp; 1<br>
 &nbsp; x02 &nbsp; C2 &nbsp; &nbsp;1<br>
 &nbsp; x02 &nbsp; C1 &nbsp; &nbsp;1<br>
 &nbsp; x02 &nbsp; C0 &nbsp; &nbsp;1<br>
 &nbsp; x03 &nbsp; obj &nbsp; 1<br>
 &nbsp; x03 &nbsp; C3 &nbsp; &nbsp;1<br>
 &nbsp; x03 &nbsp; C2 &nbsp; &nbsp;1<br>
 &nbsp; x03 &nbsp; C0 &nbsp; &nbsp;1<br>
 &nbsp; x04 &nbsp; obj &nbsp; 0.5<br>
 &nbsp; x04 &nbsp; C3 &nbsp; &nbsp;1<br>
 &nbsp; x04 &nbsp; C1 &nbsp; &nbsp;1<br>
 &nbsp; x05 &nbsp; obj &nbsp; 0.5<br>
 &nbsp; x05 &nbsp; C2 &nbsp; &nbsp;1<br>
 &nbsp; x05 &nbsp; C1 &nbsp; &nbsp;1<br>
 &nbsp; x06 &nbsp; obj &nbsp; 0.5<br>
 &nbsp; x06 &nbsp; C3 &nbsp; &nbsp;1<br>
 &nbsp; x06 &nbsp; C2 &nbsp; &nbsp;1<br>
RHS<br>
 &nbsp;RHS &nbsp; &nbsp;C0 &nbsp; &nbsp;0<br>
 &nbsp;RHS &nbsp; &nbsp;C1 &nbsp; &nbsp;1<br>
 &nbsp;RHS &nbsp; &nbsp;C2 &nbsp; &nbsp;1<br>
 &nbsp;RHS &nbsp; &nbsp;C3 &nbsp; &nbsp;1<br>
ENDATA<br>
----------------------------------------------------------<br>
bug.stoch file:<br>
<br>
NAME &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;BUG<br>
SCENARIOS &nbsp; &nbsp; DISCRETE &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp;REPLACE<br>
 &nbsp;SC SCEN01 &nbsp; &nbsp;ROOT &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0.500
&nbsp; &nbsp;STG02<br>
 &nbsp; &nbsp; RHS &nbsp; &nbsp; &nbsp; C1 &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; 1.000<br>
 &nbsp; &nbsp; RHS &nbsp; &nbsp; &nbsp; C2 &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; 1.000<br>
 &nbsp; &nbsp; RHS &nbsp; &nbsp; &nbsp; C3 &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; 0.000<br>
 &nbsp;SC SCEN02 &nbsp; &nbsp;ROOT &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0.500
&nbsp; &nbsp;STG02<br>
 &nbsp; &nbsp; RHS &nbsp; &nbsp; &nbsp; C1 &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; 0.000<br>
 &nbsp; &nbsp; RHS &nbsp; &nbsp; &nbsp; C2 &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; 1.000<br>
 &nbsp; &nbsp; RHS &nbsp; &nbsp; &nbsp; C3 &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; 0.000 <br>
ENDATA<br>
<br>
-----------------------------------------------------------<br>
bug.time:<br>
<br>
TIME &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;BUG<br>
PERIODS &nbsp; &nbsp; &nbsp; LP<br>
 &nbsp; &nbsp; x01 &nbsp; &nbsp; &nbsp; C0 &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;STG01<br>
 &nbsp; &nbsp; x04 &nbsp; &nbsp; &nbsp; C1 &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;STG02 <br>
ENDATA <br>
-----------------------------------------------------------<br>
<br>
bug.mps file obtained:<br>
<br>
<br>
NAME &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;BLANK <br>
ROWS<br>
 &nbsp;N &nbsp;OBJROW<br>
 &nbsp;G &nbsp;R0000000<br>
 &nbsp;E &nbsp;R0000001<br>
 &nbsp;E &nbsp;R0000002<br>
 &nbsp;L &nbsp;R0000003<br>
 &nbsp;L &nbsp;R0000004<br>
 &nbsp;E &nbsp;R0000005<br>
 &nbsp;L &nbsp;R0000006<br>
COLUMNS<br>
 &nbsp; &nbsp; C0000000 &nbsp;OBJROW &nbsp; &nbsp;1. &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; R0000000 &nbsp;1.<br>
 &nbsp; &nbsp; C0000000 &nbsp;R0000001 &nbsp;1. &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; R0000003 &nbsp;1.<br>
 &nbsp; &nbsp; C0000000 &nbsp;R0000004 &nbsp;1. &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; R0000006 &nbsp;1.<br>
 &nbsp; &nbsp; C0000001 &nbsp;OBJROW &nbsp; &nbsp;1. &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; R0000000 &nbsp;1.<br>
 &nbsp; &nbsp; C0000001 &nbsp;R0000001 &nbsp;1. &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; R0000002 &nbsp;1.<br>
 &nbsp; &nbsp; C0000001 &nbsp;R0000004 &nbsp;1. &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; R0000005 &nbsp;1.<br>
 &nbsp; &nbsp; C0000002 &nbsp;OBJROW &nbsp; &nbsp;1. &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; R0000000 &nbsp;1.<br>
 &nbsp; &nbsp; C0000002 &nbsp;R0000002 &nbsp;1. &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; R0000003 &nbsp;1.<br>
 &nbsp; &nbsp; C0000002 &nbsp;R0000005 &nbsp;1. &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; R0000006 &nbsp;1.<br>
 &nbsp; &nbsp; C0000003 &nbsp;OBJROW &nbsp; &nbsp;0.25 &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; R0000001 &nbsp;1.<br>
 &nbsp; &nbsp; C0000003 &nbsp;R0000003 &nbsp;1.<br>
 &nbsp; &nbsp; C0000004 &nbsp;OBJROW &nbsp; &nbsp;0.25 &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; R0000001 &nbsp;1.<br>
 &nbsp; &nbsp; C0000004 &nbsp;R0000002 &nbsp;1.<br>
 &nbsp; &nbsp; C0000005 &nbsp;OBJROW &nbsp; &nbsp;0.25 &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; R0000002 &nbsp;1.<br>
 &nbsp; &nbsp; C0000005 &nbsp;R0000003 &nbsp;1.<br>
 &nbsp; &nbsp; C0000006 &nbsp;OBJROW &nbsp; &nbsp;0.25 &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; R0000004 &nbsp;1.<br>
 &nbsp; &nbsp; C0000006 &nbsp;R0000006 &nbsp;1.<br>
 &nbsp; &nbsp; C0000007 &nbsp;OBJROW &nbsp; &nbsp;0.25 &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; R0000004 &nbsp;1.<br>
 &nbsp; &nbsp; C0000007 &nbsp;R0000005 &nbsp;1.<br>
 &nbsp; &nbsp; C0000008 &nbsp;OBJROW &nbsp; &nbsp;0.25 &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; R0000005 &nbsp;1.<br>
 &nbsp; &nbsp; C0000008 &nbsp;R0000006 &nbsp;1. <br>
RHS<br>
 &nbsp; &nbsp; RHS &nbsp; &nbsp; &nbsp; R0000001 &nbsp;1. &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; R0000002 &nbsp;1.<br>
 &nbsp; &nbsp; RHS &nbsp; &nbsp; &nbsp; R0000005 &nbsp;1. <br>
RANGES<br>
 &nbsp; &nbsp; RANGE &nbsp; &nbsp; R0000003 &nbsp; -1. &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; R0000004 &nbsp; -1.<br>
 &nbsp; &nbsp; RANGE &nbsp; &nbsp; R0000006 &nbsp; -1. <br>
ENDATA<br>
------------------------------------------------------------------<br>
<br>
Note that R0000001, R0000002, and R0000005 become equalities (instead of
&gt;= 1)<br>
and R0000003, R0000004, and R0000006 become ranged constraints <br>
(instead of &gt;= 0).<br>
<br>
If the proper way to change the rhs of inequalities is something else,
<br>
I would appreciate a simple example.<br>
<br>
Francois<br>
_______________________________________________<br>
Coin-SMI mailing list<br>
Coin-SMI@list.coin-or.org<br>
http://list.coin-or.org/mailman/listinfo/coin-smi<br>
</tt></font>
<br>