<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. 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. CoinModel is a complete representation of the data input to
the model including names and integer information. 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. You can set
any element in the model by model.setElement(row,column,value) in a reasonably
efficient manner. 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. So you can set an objective
coefficient to 2.0+value1*0.3 and an element to -value1. 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<=10.0
; value ++) {</font>
<br><font size=2 face="sans-serif"> buildObject.associateElement("value1",value);</font>
<br><font size=2 face="sans-serif"> model.loadProblem(buildObject);</font>
<br><font size=2 face="sans-serif"> 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. 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. The
functionality is available for Clp and Osi. 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>