[Clp] Correction to CoinMP.cpp

Rod Frowd rod at frowd.net
Mon Feb 18 20:51:31 EST 2008


Parameters I changed were:

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

It went from 15000 iterations to around 5000 with these changed. The 
problem I am solving is not well conditioned numerically so these 
parameters seem to help.

I am benchmarking it with CPLEX and it seems to be getting the same 
solution so I am relatively confident that this is working properly.

Ok, my java wrapper uses the xfunction toolkit from 
http://www.excelsior-usa.com/xfunction.html , Russian software for $50, 
it works and hides all the messy JNI stuff and the conversions of arguments.

Rod

Larry A. Taylor wrote:
> At 04:37 PM 2/18/2008, Rod Frowd wrote:
>> Larry:
>>
>> I don't have any privileges either, I am relatively new to this list.
>> Your changes look the same as mine. Perhaps John Forrest can help us 
>> organize to get this checked in.
>
> I hope so. However, no one seems to be working on CoinMP.dll.
>
>
>> Did the dll work after you made these changes?
>
> Yes. By "working" I mean it fixed the problems I had spotted -- that some
> feasible problems that had been marked as infeasible. They now are 
> working
> correctly so far as I can see.
>
> I have not found other problems.
>
> If you have a differently problem, you should say what was not 
> "working" --
> tell in detail if the program is crashing, or giving wrong or strange 
> results.
>
>
>> I also found the parameter settings important, cut the solve time by 
>> a factor of 10. Also I have this running from a Java callable 
>> interface too.
>>
>> Rod
>
> Which parameter settings? What values?
>
> I have CoinMP.dll running from a Visual Basic interface. I wrote a 
> wrapper routine,
> WrapCoinMP.dll, which I would check in if I could
>
> LAT
>
>
>
>
>> Larry A. Taylor wrote:
>>> Hi Rod,
>>>
>>> What you found appears identical to what I found and put into a 
>>> ticket at
>>> https://projects.coin-or.org/CoinMP/ticket/1
>>>
>>> Check to see if it is exactly the same.
>>>
>>> I can't check anything in, but if you can do it, I would be grateful.
>>>
>>> LAT
>>>
>>> At 09:33 PM 2/17/2008, Rod Frowd wrote:
>>>> Hi:
>>>>
>>>> I found that the CoinMP.dll did not work when built from source, 
>>>> though the downloaded binary dll did.
>>>>
>>>> Upon looking  at the source code I found the problem below, some of 
>>>> the real tolerance 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)) {
>>>>
>>>> Do you want me to check this in?
>>>> 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/clp/attachments/20080219/4f6042d2/attachment.vcf>


More information about the Clp mailing list