[Coin-lpsolver] CLP factorization info lost when using OsiClpSolverInterface::initialeSolve ?

John J Forrest jjforre at us.ibm.com
Wed Nov 30 10:33:46 EST 2005


"feature" should be fixed now.  Tell me if not.

John Forrest



"Torsten Fahle" <Torsten.Fahle at inform-ac.com> 
Sent by: coin-lpsolver-bounces at list.coin-or.org
11/29/2005 11:00 AM

To
<coin-lpsolver at list.coin-or.org>
cc

Subject
[Coin-lpsolver] CLP factorization info lost when using 
OsiClpSolverInterface::initialeSolve ?






Hi,
 
I'd like to increase the factorization limit of CLP through the 
OsiClpSolverInterface.
As far as I can see from the documentation, a simple way to do so is 
asking Osi for the model pointer 
and than change the parameters in question like 

  MyOsiSolver->getModelPtr()->setFactorizationFrequency(1400);

When calling MyOsiSolver->initialSolve(), however, the parameter is lost 
and instead Osi uses i
ts own factorization value (computed as 100 + numberOfRows/50)

In OsiSolverInterface.cpp the corresponding code reads as 

void OsiClpSolverInterface::initialSolve()
{
...
     (###)
     // change from 200 (unless changed)
      if (model2->factorization()->maximumPivots()==200)
 model2->factorization()->maximumPivots(100+model2->numberRows()/50);
...
}

This looks like OSI is only allowed to change the value if it is still the 
default value. 
Having changed the value to 1400  I was surprised that OSI still reads a 
value of 200 and consequently updates maxPivots.

So I checked the modelPtr_ which still holds the value 1400. And I checked 
model2 which only holds 200.

model2 is a pointer to a presolved LP that was "stored" in a variable 
called solver a few lines before.
And also solver only knows the default value of 200.

The problem seems to occur already in the first three lines of 
initialSolve() where variable solver borrows the original model

void OsiClpSolverInterface::initialSolve()
{
    ClpSimplex solver; 
    solver.borrowModel(*modelPtr_);
   [...]
}

ClpSimplex::borrowModel() does only copy a selection of parameters. This 
selection does not include factorization information as far as I can see.
So solver only knows the default value 200.

Since (###) explicitly checks for a change I assume it is a bug if solver 
(and later on model2) do not know factorization info as well.

My questions:
 Is it intended not to copy the entire information?
 If so, is there a different way to set factorization information through 
OSI ?

Thanks a lot.

Kind regards,

   Torsten



---
Dr. Torsten Fahle
Geschäftsbereich Systeme Airport
INFORM GmbH, Pascalstr.23, 52076 Aachen, Germany
Tel. (+49) 24 08 - 94 56 24  FAX: -94 56 25
e-mail: Torsten.Fahle at inform-ac.com   http://www.groundstar.de 



_______________________________________________
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/20051130/bca46ba2/attachment.html>


More information about the Clp mailing list