<br><font size=2 face="sans-serif">I was glad to hear that using CoinBuild
Brady Hunsaker, </font><font size=2><tt>François Galea</tt></font><font size=2 face="sans-serif">
and David Wright got better performance so I have developed a CoinModel
class which has more flexibility and is about as fast when used in a similar
way to CoinBuild. &nbsp;You can still pass the data across to Clp or Osi
by addRows or addColumns but you also have the possibility of loading the
entire problem with loadProblem.</font>
<br>
<br><font size=2 face="sans-serif">A big disadvantage of CoinBuild was
that you could add rows or add columns but not both which lacked flexibility
and meant that the other dimension had to be created in a non-intuitive
way. &nbsp;CoinModel is a complete representation of the data input to
the model including names and integer information. &nbsp;So apart from
using addRow or addColumn you can set the upper bound on column 1000 to
20 and not care how many columns there are at present. &nbsp;You can set
any element in the model by model.setElement(row,column,value) in a reasonably
efficient manner. &nbsp;You can traverse the nonzero values in any row
or column etc.</font>
<br>
<br><font size=2 face="sans-serif">To make it a bit more interesting I
also allow strings as well as doubles. &nbsp;So you can set an objective
coefficient to 2.0+value1*0.3 and an element to -value1. &nbsp;Then to
solve that model for values 0.0 to 10.0 by 1.0 using an OsiSolverInterface
model would be:</font>
<br>
<br><font size=2 face="sans-serif">for (double value = 0.0; value&lt;=10.0
; value ++) {</font>
<br><font size=2 face="sans-serif">&nbsp; buildObject.associateElement(&quot;value1&quot;,value);</font>
<br><font size=2 face="sans-serif">&nbsp; model.loadProblem(buildObject);</font>
<br><font size=2 face="sans-serif">&nbsp; model.resolve();</font>
<br><font size=2 face="sans-serif">}</font>
<br>
<br><font size=2 face="sans-serif">I am not sure how useful that is - it
just made it more interesting and I may try and write some interactive
tool for model editing. &nbsp;It could be useful for some iterative algorithms</font>
<br>
<br><font size=2 face="sans-serif">The code is involved in several unit
tests and sample coding can be found in Clp/Samples/add*.cpp. &nbsp;The
functionality is available for Clp and Osi. &nbsp;I have left CoinBuild
for simpler applications as it is simpler and slightly faster.</font>
<br>
<br><font size=2 face="sans-serif">John Forrest</font>
<br>