<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"><head>
<title></title>
<meta http-equiv="content-type" content="text/html;charset=utf-8"/>
<meta http-equiv="Content-Style-Type" content="text/css"/>
</head>
<body>
<div align="left"><font face="Times New Roman"><span style="font-size:12pt">I have noticed some discrepancies between solutions obtained from OSLSE and COIN (e.g. using the
KandW3 example and others). to investigate this issue further I have looked more closely to the results of
readSMPS (among other things). what seems strange is the following:  </span></font></div>
<div align="left"><font face="Times New Roman"><span style="font-size:12pt"><br />
</span></font></div>
<div align="left"><font face="Times New Roman"><span style="font-size:12pt">if the row sense in the core-file is 'G' or 'L', the stoch-file uses the REPLACE option and the RHS is
stochastic "osiStoch->getRowSense()" returns 'R' rather than 'G' or 'L' (see code excerpt from unitTest.cpp
below). I understand that 'R' could be used on purpose to indicate that the RHS is stochastic/random. but
'R' does not appear if the row sense is 'E' or the RHS is non-stochastic.  </span></font></div>
<div align="left"><font face="Times New Roman"><span style="font-size:12pt"><br />
</span></font></div>
<div align="left"><font face="Times New Roman"><span style="font-size:12pt">in addition, the RHS of 'L' constraints <i>is not replaced</i> by the stoch-file entry. the RHS of 'G' constraints <i>is</i>
replaced!  </span></font></div>
<div align="left"><font face="Times New Roman"><span style="font-size:12pt"><br />
</span></font></div>
<div align="left"><font face="Times New Roman"><span style="font-size:12pt">another observation: using ADD in the the stoch-file does not change 'G' or 'L' to 'R' (as above) but the
stochastic RHS <i>is not added</i> to the RHS from the core-file. it is only added for equality constraints ('E'). </span></font></div>
<div align="left"><font face="Times New Roman"><span style="font-size:12pt"><br />
</span></font></div>
<div align="left"><font face="Times New Roman"><span style="font-size:12pt">has anyone else made similar observations?  how can this problem be resolved? </span></font></div>
<div align="left"><font face="Times New Roman"><span style="font-size:12pt"><br />
</span></font></div>
<div align="left"><font face="Times New Roman"><span style="font-size:12pt">~~Alois </span></font></div>
<div align="left"><font face="Times New Roman"><span style="font-size:12pt"><br />
</span></font></div>
<div align="left"><font face="Courier New" size="2"><span style="font-size:10pt">{</span></font></div>
<div align="left"><font face="Courier New" size="2"><span style="font-size:10pt">            // test SMPS files KandW3R</span></font></div>
<div align="left"><font face="Courier New" size="2"><span style="font-size:10pt">            printf(" *** testing KandW3.\n");</span></font></div>
<div align="left"><font face="Courier New" size="2"><span style="font-size:10pt">            SmiScnModel smi;  </span></font></div>
<div align="left"><font face="Courier New" size="2"><span style="font-size:10pt">            smi.readSmps("../../Mps/Stochastic/KandW3R");        </span></font></div>
<div align="left"><font face="Courier New" size="2"><span style="font-size:10pt">            OsiClpSolverInterface *clp = new OsiClpSolverInterface();</span></font></div>
<div align="left"><font face="Courier New" size="2"><span style="font-size:10pt">            smi.setOsiSolverHandle(*clp);</span></font></div>
<div align="left"><font face="Courier New" size="2"><span style="font-size:10pt">            OsiSolverInterface *osiStoch = smi.loadOsiSolverData();</span></font></div>
<div align="left"><font face="Courier New" size="2"><span style="font-size:10pt">     </span></font></div>
<div align="left"><font face="Courier New" size="2"><span style="font-size:10pt">            //+AG*</span></font></div>
<div align="left"><font face="Courier New" size="2"><span style="font-size:10pt">            int nrows = osiStoch->getNumRows();</span></font></div>
<div align="left"><font face="Courier New" size="2"><span style="font-size:10pt">            int ncols = osiStoch->getNumCols();</span></font></div>
<div align="left"><font face="Courier New" size="2"><span style="font-size:10pt">            const char * rs  = osiStoch->getRowSense();</span></font></div>
<div align="left"><font face="Courier New" size="2"><span style="font-size:10pt">            const double * rhs = osiStoch->getRightHandSide();</span></font></div>
<div align="left"><font face="Courier New" size="2"><span style="font-size:10pt"><br />
</span></font></div>
<div align="left"><font face="Courier New" size="2"><span style="font-size:10pt">            int i;    </span></font></div>
<div align="left"><font face="Courier New" size="2"><span style="font-size:10pt">            for (i=0;i<nrows;i++){</span></font></div>
<div align="left"><font face="Courier New" size="2"><span style="font-size:10pt">                  printf("i %d rs %c rhs %f\n",i,rs[i],rhs[i]);</span></font></div>
<div align="left"><font face="Courier New" size="2"><span style="font-size:10pt">            }</span></font></div>
<div align="left"><font face="Courier New" size="2"><span style="font-size:10pt">            //-AG*</span></font></div>
<div align="left"><font face="Courier New" size="2"><span style="font-size:10pt"><br />
</span></font></div>
<div align="left"><font face="Courier New" size="2"><span style="font-size:10pt">           osiStoch->initialSolve();    </span></font></div>
<div align="left"><font face="Courier New" size="2"><span style="font-size:10pt">           assert(fabs(osiStoch->getObjValue()2613.0) < 0.0001);</span></font></div>
<div align="left"><font face="Courier New" size="2"><span style="font-size:10pt">      }</span></font></div>
</body>
</html>