[Coin-discuss] OSI, CLP pivot
John J Forrest
jjforre at us.ibm.com
Wed May 10 14:13:41 EDT 2006
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
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>
cc
05/09/06 11:15 PM Subject
Re: [Coin-discuss] OSI, CLP pivot
Please respond to
Discussions about
open source
software for
Operations
Research
<coin-discuss at lis
t.coin-or.org>
Hi John,
One thing that would be an immediate speedup for this kind of thing, is
to have a version of getBInvARow which does not actually do the memcpy.
Instead, it would be more efficient, if it just returned a pointer to
CLP's memory where z and slack exist. In profiling our codes, we have
found that getBInvARow takes a decent amount of our overall CPU, but 80%
of getBInvARow is the 2 memcpys.
Is this easy to add? Of course, the user has to promise not to mess up
that memory.
Matt
>Matt,
>
>If you want to keep to an OsiSolverInterface then I probably can't help,
>but if you know you will be using OsiClpSolverInterface then I may be able
>to help. If you can put together a driver to go through the steps you
want
>then I can see how much faster I can make it - either by adding calls
using
>the Clp getModelPtr() or more elegantly by adding a new specialOption bit
>to OsiClpSolverInterface.
>
>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>
> 04/19/06 09:34 AM cc
>
> Subject
> Please respond to [Coin-discuss] OSI, CLP pivot
> Discussions about
> open source
> software for
> Operations
> Research
> <coin-discuss at lis
> t.coin-or.org>
>
>
>
>
>
>
>If someone wants to do the following, using the "simplex interface":
>{
> while{
> //some stuff...
> ...
> si->resolve();
> si->pivot(colIn, colOut, outStatus);
> ...
> si->getBasisStatus();
> si->getBInvARow( );
> ...
> //some stuff...
> }
>}
>
>Is it neccessary to call enable/disableSimplexInterface at every call?
>
>I noticed, that if you pivot, the "basis_" is not updated until
>disableSimplexInterface is called. So, the next call to getBasisStatus
>does not have updated status.
>
>The following seems to work, but is very slow. There is alot of time
>spent in enable/disable.
>
>{
> while{
> //some stuff...
> ...
> si->resolve();
> si->enableSimplexInterface();
> si->pivot(colIn, colOut, outStatus);
> si->disableSimplexInterface();
> ...
> si->enableSimplexInterface();
> si->getBasisStatus();
> si->disableSimplexInterface();
>
> si->enableSimplexInterface();
> si->getBInvARow( );
> si->disableSimplexInterface();
> ...
> //some stuff...
> }
>}
>
>Thanks,
>Matt
>
>
>_______________________________________________
>Coin-discuss mailing list
>Coin-discuss at list.coin-or.org
>http://list.coin-or.org/mailman/listinfo/coin-discuss
>
>
>_______________________________________________
>Coin-discuss mailing list
>Coin-discuss at list.coin-or.org
>http://list.coin-or.org/mailman/listinfo/coin-discuss
>
>
_______________________________________________
Coin-discuss mailing list
Coin-discuss at list.coin-or.org
http://list.coin-or.org/mailman/listinfo/coin-discuss
More information about the Coin-discuss
mailing list