[Coin-lpsolver] OsiClp/ClpSimplex/clp performance disparity

John J Forrest jjforre at us.ibm.com
Tue May 2 08:33:33 EDT 2006


Ojas,

I will have to run those problems to check but it is probable that the clp 
executable is being clever about algorithms and initial solutions.  You 
should be able to get same results with ClpSimplex::initialSolve by 
setting parameters.

Would it be useful if I worked on the interface and documentation for part 
of my DIMACS presentation?

John Forrest



Ojas Parekh <ojas at mathcs.emory.edu> 
Sent by: coin-lpsolver-bounces at list.coin-or.org
05/01/2006 10:07 PM

To
coin-lpsolver at list.coin-or.org
cc
Sebastien Siva <ssiva at emory.edu>, Cynthia A Phillips <caphill at sandia.gov>
Subject
[Coin-lpsolver] OsiClp/ClpSimplex/clp performance disparity






Hi,

   We've observed appreciable disparities in the performance of 
OsiClpSolverInterface->initialSolve(), ClpSimplex->initialSolve(), 
and the clp executable program.  In particular here are some of our 
observed running times on instances from well-known collections:

collection/file                   clp exec.     ClpSimplex     OsiClp
-----------------------------     ---------     ----------     ------
Linderoth-MIP/dano3_4.mps         57.78         151.99         145.44
Linderoth-MIP/neos-520729.mps      7.70          20.46          20.50
Linedroth-MIP/qap10.mps            4.00           3.90          51.51
COIN/Mps/Big/mkc7.mps             21.15         169.08         165.12

All numbers represent seconds on a 2.2Ghz dual core Opteron running a 
SUSE x86_64 Linux distribution using a CVS build of COIN-OR no older 
than a few weeks.  We've also observed comparable ratios on Solaris 
and PPC Mac OS X machines.  We passed no parameters to the clp 
executable other than the file name and used the following code for 
the object oriented interfaces:

ClpSimplex model;
model.readMps(argv[1]);
model.initialSolve();

and

OsiClpSolverInterface si;
si.readMps(argv[1]);
si.initialSolve();

We have larger instances particular to our application (Sandia Labs' 
PICO combinatorial optimization engine) that have exhibited similar 
behavior: the clp executable performs an order of magnitude better. 
We have tried experimenting with ClpSolve parameters and writing a 
simple heuristic to mimic the clp executable but have been 
unsuccessful in consistently obtaining comparable performance. 
Before proceeding any further I thought it would be a good idea to 
ask the following questions here:

(1) Does the clp executable do any extra preprocessing or 
presolving?  Do you think the gap is explained only by the way in 
which the three interfaces each set their parameters?  If so, which 
parameters are especially critical for the problems above?

(2) I have explored the source code; however, I was wondering if 
there was any documentation that speaks specifically to the 
differences in (in philosophy of) the three interfaces.

(3) PICO currently exclusively relies on the OsiClp interface.  I 
understand that I can use the getModelPtr() method to call 
ClpSimplex's version of initialSolve().  Is there callable access to 
the code that the clp executable uses?

Thanks!
-Ojas
_______________________________________________
Coin-lpsolver mailing list
Coin-lpsolver at list.coin-or.org
http://list.coin-or.org/mailman/listinfo/coin-lpsolver

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://list.coin-or.org/pipermail/clp/attachments/20060502/1c8e897a/attachment.html>


More information about the Clp mailing list