[Coin-lpsolver] Re: [Coin-discuss] OSI, CLP pivot
Matthew Galati
magh at lehigh.edu
Fri May 19 15:40:56 EDT 2006
John,
As far as I can tell, if I do not enableSimplexInterface before
getBasics, I fail an assertion because pivotVariable( ) is NULL. I tried
turning the special option on just before it, but this did not help.
Matt
> Matt,
>
> The code you describe makes it look as if you could just do
> enableSimplexInterface at beginning and disable at end - why doesn't that
> work? If there are not too many functions which need to go back to normal
> way then maybe I could get those working.
>
> Some things will work if a factorization is kept around (
> clp->setSpecialOptions(currentvalue|9). Set that and then see if you can
> do clp->getBasics it does not seem to require enableSimplex but does
> require factorization info. I would think that I could get most things to
> work with just a saved factorization except the pivotIn which definitely
> needs enableSimplexInterface.
>
> John
>
>
>
> Matthew Galati
> <magh at lehigh.edu>
> Sent by: To
> coin-discuss-boun Discussions about open source
> ces at list.coin-or. software for Operations Research
> org <coin-discuss at list.coin-or.org>,
> Mustafa Rasim Kilinc
> <mrk304 at lehigh.edu>, Jeff Linderoth
> 05/17/06 05:39 PM <jtl3 at lehigh.edu>
> cc
>
> Please respond to Subject
> Discussions about Re: [Coin-discuss] OSI, CLP pivot
> open source
> software for
> Operations
> Research
> <coin-discuss at lis
> t.coin-or.org>
>
>
>
>
>
>
> Hi John. Thanks! This is much better to be able to just get the sparse row.
>
> The other bottleneck in our codes is related to the enable and disable
> simplex interface. It's too messy to strip out the codes and give you a
> small sample, but I can tell you the sequence of calls that we use which
> involve the simplex interface. We did our best to minimize the number of
> calls to enable/disable - but it is still too often. If you have a
> special option that could allow us to call this less often, that would
> be great.
>
> {
> //solve an LP
>
> //get basis header
> clp->enableSimplexInterface(false);
> clp->getBasics(head);
> clp->disableSimplexInterface();
>
> //save warm start
> CoinWarmStartBasis * ws =
> dynamic_cast<CoinWarmStartBasis*>(si->getWarmStart());
>
> for(...){
>
> //go back to original ws
> clp->setWarmStart(ws);
> clp->resolve()
> ...
>
> //get basis header
> clp->enableSimplexInterface(false);
> clp->getBasics(head);
> clp->disableSimplexInterface();
>
> clp->enableSimplexInterface(false);
> while(...){
> osiclp->getBInvARow(row, abar1, sbar1);
> for(...)
> osiclp->getBInvARow(row, abar2, sbar2);
> clp->pivot(in_col, out_col, out_status);
> clp->disableSimplexInterface();
> clp->enableSimplexInterface(false);
> }
> }
> clp->disableSimplexInterface();
> ...
> }
> }
>
> Thanks,
> Matt
>
>
>
>> Matt,
>>
>> Done - example code at line 1366 of
>>
> Osi/test/OsiClpSolverInterfaceTest.cpp.
>
>> You get the underlying CoinIndexedVectors so you can just get nonzeros.
>> Zeroing out the contents was optional but may be slightly faster.
>>
>> John
>>
>>
>>
>>
>>
> _______________________________________________
> Coin-discuss mailing list
> Coin-discuss at list.coin-or.org
> http://list.coin-or.org/mailman/listinfo/coin-discuss
>
>
> _______________________________________________
> Coin-lpsolver mailing list
> Coin-lpsolver at list.coin-or.org
> http://list.coin-or.org/mailman/listinfo/coin-lpsolver
>
More information about the Clp
mailing list