[CoinMp] CoinMP.dll errors

Rod Frowd rod at frowd.net
Mon Feb 18 04:33:51 EST 2008


I found that the CoinMP.dll did not work when built from source, though
the downloaded binary dll did. It was giving primal infeasible errors, 
when the problem was feasible,

Upon looking  at the source code I found the problem below, some of the
real tolerances were being set to zero as the CoinGetIntOption was being
called instead of the CoinGetRealOption? The built from source dll works
after this change.

Index: CoinMP.cpp
===================================================================
--- CoinMP.cpp    (revision 53)
+++ CoinMP.cpp    (working copy)
@@ -646,10 +646,10 @@

     pCoin->clp->setMaximumIterations(CoinGetIntOption(hProb,
COIN_INT_MAXITER));

-    pCoin->clp->setPrimalObjectiveLimit(CoinGetIntOption(hProb,
COIN_REAL_PRIMALOBJLIM));
-    pCoin->clp->setDualObjectiveLimit(CoinGetIntOption(hProb,
COIN_REAL_DUALOBJLIM));
-    pCoin->clp->setPrimalTolerance(CoinGetIntOption(hProb,
COIN_REAL_PRIMALOBJTOL));
-    pCoin->clp->setDualTolerance(CoinGetIntOption(hProb,
COIN_REAL_DUALOBJTOL));
+    pCoin->clp->setPrimalObjectiveLimit(CoinGetRealOption(hProb,
COIN_REAL_PRIMALOBJLIM));
+    pCoin->clp->setDualObjectiveLimit(CoinGetRealOption(hProb,
COIN_REAL_DUALOBJLIM));
+    pCoin->clp->setPrimalTolerance(CoinGetRealOption(hProb,
COIN_REAL_PRIMALOBJTOL));
+    pCoin->clp->setDualTolerance(CoinGetRealOption(hProb,
COIN_REAL_DUALOBJTOL));

     /* check if it has been changed, leave alone otherwise */
    ClpPrimalColumnSteepest primalSteepest(CoinGetIntOption(hProb,
COIN_INT_PRIMALPIVOTALG));
@@ -659,7 +659,7 @@
    pCoin->clp->setDualRowPivotAlgorithm(dualSteepest);

     if (CoinGetIntOption(hProb, COIN_INT_CRASHIND)) {
-        pCoin->clp->crash(CoinGetIntOption(hProb, COIN_REAL_CRASHGAP),
+        pCoin->clp->crash(CoinGetRealOption(hProb, COIN_REAL_CRASHGAP),
                                 CoinGetIntOption(hProb,
COIN_INT_CRASHPIVOT));
     }
     switch (CoinGetIntOption(hProb,COIN_INT_SOLVEMETHOD)) {



Another issue I found is that the default options were not set the same
as in the CLP executable, making CoinMP.dll a lot slower. I was able to
speed it up by a factor of 3 with the following parameter changes:

COIN_INT_SCALING  set to 5 was 3
COIN_INT_PERTURBATION    set to 50 was 100
COIN_INT_PRIMALPIVOTALG  set to 4 was 1
COIN_INT_DUALPIVOTALG    set to 3 was 1


Rod Frowd

-------------- next part --------------
A non-text attachment was scrubbed...
Name: rod.vcf
Type: text/x-vcard
Size: 302 bytes
Desc: not available
Url : http://list.coin-or.org/pipermail/coinmp/attachments/20080218/ae3de475/attachment.vcf 


More information about the CoinMp mailing list