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

Torsten Fahle Torsten.Fahle at inform-ac.com
Tue Nov 29 11:00:14 EST 2005


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 






More information about the Clp mailing list