[Clp] high precision floating point numbers

John J Forrest jjforre at us.ibm.com
Wed May 13 09:31:08 EDT 2009


Alexey,

I have sent you an updated driver which I hope will help.

For the benefit of others who use Clp, I would like to point out two bad
features of the Clp library which can cause performance problems, but which
are easy to get round.  These defects do not occur in the stand-alone
solver.

The first is the way Clp adds a row to a problem.  As it uses
CoinPackedMatrix it adds a row to that.  Adding one row to a 100,000 row
problem means allocation of memory and moving everything.  Doing this
repeatedly can take a long time.  There is also a CoinModel object which
uses the same syntax to add a row but keeps the data in a very different
way.  It is easy to build up a model using CoinModel and then transferring
it to a ClpModel.  This can give a speedup of a 100!  See addRows.cpp in
clp/examples

The second is perturbation, or rather the lack of it.  Many problems
exhibit degeneracy due to ties in pivot choice.  This is easy to alleviate
by perturbing something e.g. the objective for dual simplex.  This is done
automatically if perturbation is set on, but the default is off.  The
recommended setting is

setPerturbation(50);


John Forrest
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://list.coin-or.org/pipermail/clp/attachments/20090513/2aa4d3e7/attachment.html>


More information about the Clp mailing list