<html>

<head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=us-ascii">


<meta name=Generator content="Microsoft Word 10 (filtered)">

<style>
<!--
 /* Font Definitions */
 @font-face
        {font-family:Wingdings;
        panose-1:5 0 0 0 0 0 0 0 0 0;}
@font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman";}
p.MsoTitle, li.MsoTitle, div.MsoTitle
        {margin-top:12.0pt;
        margin-right:0in;
        margin-bottom:3.0pt;
        margin-left:0in;
        text-align:center;
        font-size:16.0pt;
        font-family:Arial;
        font-weight:bold;}
a:link, span.MsoHyperlink
        {color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {color:purple;
        text-decoration:underline;}
p.Main, li.Main, div.Main
        {margin:0in;
        margin-bottom:.0001pt;
        line-height:11.0pt;
        font-size:8.0pt;
        font-family:Tahoma;
        letter-spacing:.5pt;}
p.TitleIndent, li.TitleIndent, div.TitleIndent
        {margin-top:2.0pt;
        margin-right:0in;
        margin-bottom:2.0pt;
        margin-left:0in;
        line-height:11.0pt;
        font-size:8.0pt;
        font-family:Tahoma;
        letter-spacing:.5pt;
        font-weight:bold;}
span.EmailStyle20
        {font-family:Arial;
        color:windowtext;}
@page Section1
        {size:8.5in 11.0in;
        margin:1.0in 1.25in 1.0in 1.25in;}
div.Section1
        {page:Section1;}
 /* List Definitions */
 ol
        {margin-bottom:0in;}
ul
        {margin-bottom:0in;}
-->
</style>

</head>

<body lang=EN-US link=blue vlink=purple>

<div class=Section1>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>Hi,</span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>I&#8217;ve been investigating the feasibility of converting
GLPK MathProg problems to FLOPC++. To understand how to convert a MathProg
model to FLOPC++, I started with a simple comparison of FLOPC++ examples/transport.cpp
to GLPK examples/transport.mod. In executing both examples, I seem to get
conflicting optimal solutions:</span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>&nbsp;</span></font></p>

<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in'><font size=2
face=Wingdings><span style='font-size:10.0pt;font-family:Wingdings'>n<font
size=1 face="Times New Roman"><span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></font></span></font><font size=2 face=Arial><span style='font-size:
10.0pt;font-family:Arial'>glpsol calculates an optimal solution of 156.375</span></font></p>

<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in'><font size=2
face=Wingdings><span style='font-size:10.0pt;font-family:Wingdings'>n<font
size=1 face="Times New Roman"><span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></font></span></font><font size=2 face=Arial><span style='font-size:
10.0pt;font-family:Arial'>FLOPC++ calculates an optimal solution of 156.15</span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>&nbsp;</span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>In looking at transport.cpp, it occurred to me that the
problem statement may not exactly match the GLPK transport.mod (in transport.cpp,
transportation links do not seem to be defined for </span></font><font size=2
  face=Arial><span style='font-size:10.0pt;font-family:Arial'>Seattle</span></font><font
size=2 face=Arial><span style='font-size:10.0pt;font-family:Arial'>-&gt;</span></font><font
  size=2 face=Arial><span style='font-size:10.0pt;font-family:Arial'>Topeka</span></font><font
size=2 face=Arial><span style='font-size:10.0pt;font-family:Arial'> and </span></font><font
  size=2 face=Arial><span style='font-size:10.0pt;font-family:Arial'>San Diego</span></font><font
size=2 face=Arial><span style='font-size:10.0pt;font-family:Arial'>-&gt;</span></font><font
  size=2 face=Arial><span style='font-size:10.0pt;font-family:Arial'>New York</span></font><font
size=2 face=Arial><span style='font-size:10.0pt;font-family:Arial'>). To test
weather this accounted for the solution differences, I modified transport.cpp
to add those links (the code is shown below). When the modified transport
problem is executed, the optimal solution is calculated as 153.675. </span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>&nbsp;</span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>Can anyone offer an explanation for the difference in
calculated optimal solutions? It would seem a direct translation of the GLPK transport.mod
would require the additional links added in the code below. But this change
seems to increase the discrepancy with GLPK.</span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>&nbsp;</span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>Thanks in advance for any insights</span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>&nbsp;</span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>&nbsp;</span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>int main() {</span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>&nbsp;&nbsp;&nbsp; MP_model::getDefaultModel().setSolver(new
OsiClpSolverInterface);</span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>&nbsp;&nbsp;&nbsp; enum&nbsp; {</span></font><font size=2
  face=Arial><span style='font-size:10.0pt;font-family:Arial'>seattle</span></font><font
size=2 face=Arial><span style='font-size:10.0pt;font-family:Arial'>, sandiego, numS};</span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>&nbsp;&nbsp;&nbsp; enum&nbsp; {newyork, </span></font><font
  size=2 face=Arial><span style='font-size:10.0pt;font-family:Arial'>chicago</span></font><font
size=2 face=Arial><span style='font-size:10.0pt;font-family:Arial'>, </span></font><font
  size=2 face=Arial><span style='font-size:10.0pt;font-family:Arial'>topeka</span></font><font
size=2 face=Arial><span style='font-size:10.0pt;font-family:Arial'>,numD};</span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>&nbsp;</span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>&nbsp;&nbsp;&nbsp; MP_set S(numS);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
// Sources </span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>&nbsp;&nbsp;&nbsp; MP_set D(numD);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
// Destinations </span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>&nbsp;&nbsp;&nbsp; MP_subset&lt;2&gt; Link(S,D);&nbsp; //
Transportation links (sparse subset of S*D)</span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>&nbsp;</span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>&nbsp;&nbsp;&nbsp; Link.insert(</span></font><font size=2
  face=Arial><span style='font-size:10.0pt;font-family:Arial'>seattle</span></font><font
size=2 face=Arial><span style='font-size:10.0pt;font-family:Arial'>,newyork);</span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>&nbsp;&nbsp;&nbsp; Link.insert(seattle,chicago);</span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>&nbsp;&nbsp;&nbsp; Link.insert(</span></font><font size=2
  face=Arial><span style='font-size:10.0pt;font-family:Arial'>seattle</span></font><font
size=2 face=Arial><span style='font-size:10.0pt;font-family:Arial'>,</span></font><font
  size=2 face=Arial><span style='font-size:10.0pt;font-family:Arial'>topeka</span></font><font
size=2 face=Arial><span style='font-size:10.0pt;font-family:Arial'>);</span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>&nbsp;&nbsp;&nbsp; Link.insert(sandiego,newyork);</span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>&nbsp;&nbsp;&nbsp; Link.insert(sandiego,</span></font><font
  size=2 face=Arial><span style='font-size:10.0pt;font-family:Arial'>chicago</span></font><font
size=2 face=Arial><span style='font-size:10.0pt;font-family:Arial'>);</span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>&nbsp;&nbsp;&nbsp; Link.insert(sandiego,</span></font><font
  size=2 face=Arial><span style='font-size:10.0pt;font-family:Arial'>topeka</span></font><font
size=2 face=Arial><span style='font-size:10.0pt;font-family:Arial'>);</span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>&nbsp;</span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>&nbsp;&nbsp;&nbsp; MP_data SUPPLY(S);</span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>&nbsp;&nbsp;&nbsp; MP_data DEMAND(D);</span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>&nbsp;</span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>&nbsp;&nbsp;&nbsp; SUPPLY(</span></font><font size=2
  face=Arial><span style='font-size:10.0pt;font-family:Arial'>seattle</span></font><font
size=2 face=Arial><span style='font-size:10.0pt;font-family:Arial'>)=350;&nbsp;
SUPPLY(sandiego)=600;</span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>&nbsp;&nbsp;&nbsp; DEMAND(newyork)=325;&nbsp; DEMAND(chicago)=300;&nbsp;
DEMAND(topeka)=275;</span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>&nbsp;</span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>&nbsp;&nbsp;&nbsp; MP_data COST(Link);</span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>&nbsp;</span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>&nbsp;&nbsp;&nbsp; COST(Link(</span></font><font size=2
  face=Arial><span style='font-size:10.0pt;font-family:Arial'>seattle</span></font><font
size=2 face=Arial><span style='font-size:10.0pt;font-family:Arial'>,newyork)) =
2.5;</span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>&nbsp;&nbsp;&nbsp; COST(Link(seattle,chicago)) = 1.7;</span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>&nbsp;&nbsp;&nbsp; COST(Link(</span></font><font size=2
  face=Arial><span style='font-size:10.0pt;font-family:Arial'>seattle</span></font><font
size=2 face=Arial><span style='font-size:10.0pt;font-family:Arial'>,</span></font><font
  size=2 face=Arial><span style='font-size:10.0pt;font-family:Arial'>topeka</span></font><font
size=2 face=Arial><span style='font-size:10.0pt;font-family:Arial'>)) = 1.8;</span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>&nbsp;&nbsp;&nbsp; COST(Link(sandiego,newyork))= 2.5;</span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>&nbsp;&nbsp;&nbsp; COST(Link(sandiego,</span></font><font
  size=2 face=Arial><span style='font-size:10.0pt;font-family:Arial'>chicago</span></font><font
size=2 face=Arial><span style='font-size:10.0pt;font-family:Arial'>))= 1.8;</span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>&nbsp;&nbsp;&nbsp; COST(Link(sandiego,</span></font><font
  size=2 face=Arial><span style='font-size:10.0pt;font-family:Arial'>topeka</span></font><font
size=2 face=Arial><span style='font-size:10.0pt;font-family:Arial'>)) = 1.4;</span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>&nbsp;</span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>&nbsp;&nbsp;&nbsp; COST(Link) = 90 * COST(Link) / 1000.0;</span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>&nbsp;</span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>&nbsp;&nbsp;&nbsp; MP_variable x(Link);</span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>&nbsp;&nbsp;&nbsp; x.display(&quot;...&quot;);</span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>&nbsp;</span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>&nbsp;&nbsp;&nbsp; MP_constraint supply(S);</span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>&nbsp;&nbsp;&nbsp; MP_constraint demand(D);</span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>&nbsp;</span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>&nbsp;&nbsp;&nbsp; supply.display(&quot;...&quot;);</span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>&nbsp;</span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>&nbsp;&nbsp;&nbsp; supply(S) =&nbsp; sum( Link(S,D), x(Link)
) &lt;= SUPPLY(S);</span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>&nbsp;&nbsp;&nbsp; demand(D) =&nbsp; sum( Link(S,D), x(Link)
) &gt;= DEMAND(D);</span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>&nbsp;</span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>&nbsp;&nbsp;&nbsp; cout&lt;&lt;&quot;Here&quot;&lt;&lt;endl;</span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>&nbsp;</span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>&nbsp;&nbsp;&nbsp; minimize( sum(Link, COST(Link)*x(Link))
);</span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>/*</span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>&nbsp;&nbsp;&nbsp; assert(MP_model::getDefaultModel()-&gt;getNumRows()==5);</span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>&nbsp;&nbsp;&nbsp; assert(MP_model::getDefaultModel()-&gt;getNumCols()==4);</span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>&nbsp;&nbsp;&nbsp; assert(MP_model::getDefaultModel()-&gt;getNumElements()==8);</span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>&nbsp;&nbsp;&nbsp; assert(MP_model::getDefaultModel()-&gt;getObjValue()&gt;=156.14
&amp;&amp; MP_model::getDefaultModel()-&gt;getObjValue()&lt;=156.16);</span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>*/</span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>&nbsp;&nbsp;&nbsp; x.display(&quot;Optimal solution:&quot;);</span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>&nbsp;&nbsp;&nbsp; supply.display(&quot;Supply dual
solution&quot;);</span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>&nbsp;&nbsp;&nbsp; cout&lt;&lt;&quot;Test transport
passed.&quot;&lt;&lt;endl;</span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>}</span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>&nbsp;</span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>&nbsp;</span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>Greg Geiselhart</span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>email: <a href="mailto:geiselha@optonline.net">geiselha@optonline.net</a></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>gmail: <a href="mailto:geiselha@gmail.com">geiselha@gmail.com</a></span></font></p>

<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'>&nbsp;</span></font></p>

</div>

</body>

</html>