<br><font size=2 face="sans-serif">"feature" should be fixed
now. Tell me if not.</font>
<br>
<br><font size=2 face="sans-serif">John Forrest</font>
<br>
<br>
<br>
<table width=100%>
<tr valign=top>
<td width=40%><font size=1 face="sans-serif"><b>"Torsten Fahle"
<Torsten.Fahle@inform-ac.com></b> </font>
<br><font size=1 face="sans-serif">Sent by: coin-lpsolver-bounces@list.coin-or.org</font>
<p><font size=1 face="sans-serif">11/29/2005 11:00 AM</font>
<td width=59%>
<table width=100%>
<tr>
<td>
<div align=right><font size=1 face="sans-serif">To</font></div>
<td valign=top><font size=1 face="sans-serif"><coin-lpsolver@list.coin-or.org></font>
<tr>
<td>
<div align=right><font size=1 face="sans-serif">cc</font></div>
<td valign=top>
<tr>
<td>
<div align=right><font size=1 face="sans-serif">Subject</font></div>
<td valign=top><font size=1 face="sans-serif">[Coin-lpsolver] CLP factorization
info lost when using OsiClpSolverInterface::initialeSolve
?</font></table>
<br>
<table>
<tr valign=top>
<td>
<td></table>
<br></table>
<br>
<br>
<br><font size=2><tt>Hi,<br>
<br>
I'd like to increase the factorization limit of CLP through the OsiClpSolverInterface.<br>
As far as I can see from the documentation, a simple way to do so is asking
Osi for the model pointer <br>
and than change the parameters in question like <br>
<br>
MyOsiSolver->getModelPtr()->setFactorizationFrequency(1400);<br>
<br>
When calling MyOsiSolver->initialSolve(), however, the parameter is
lost and instead Osi uses i<br>
ts own factorization value (computed as 100 + numberOfRows/50)<br>
<br>
In OsiSolverInterface.cpp the corresponding code reads as <br>
<br>
void OsiClpSolverInterface::initialSolve()<br>
{<br>
...<br>
(###)<br>
// change from 200 (unless changed)<br>
if (model2->factorization()->maximumPivots()==200)<br>
model2->factorization()->maximumPivots(100+model2->numberRows()/50);<br>
...<br>
}<br>
<br>
This looks like OSI is only allowed to change the value if it is still
the default value. <br>
Having changed the value to 1400 I was surprised that OSI still reads
a value of 200 and consequently updates maxPivots.<br>
<br>
So I checked the modelPtr_ which still holds the value 1400. And I checked
model2 which only holds 200.<br>
<br>
model2 is a pointer to a presolved LP that was "stored" in a
variable called solver a few lines before.<br>
And also solver only knows the default value of 200.<br>
<br>
The problem seems to occur already in the first three lines of initialSolve()
where variable solver borrows the original model<br>
<br>
void OsiClpSolverInterface::initialSolve()<br>
{<br>
ClpSimplex solver; <br>
solver.borrowModel(*modelPtr_);<br>
[...]<br>
}<br>
<br>
ClpSimplex::borrowModel() does only copy a selection of parameters. This
selection does not include factorization information as far as I can see.<br>
So solver only knows the default value 200.<br>
<br>
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.<br>
<br>
My questions:<br>
Is it intended not to copy the entire information?<br>
If so, is there a different way to set factorization information through
OSI ?<br>
<br>
Thanks a lot.<br>
<br>
Kind regards,<br>
<br>
Torsten<br>
<br>
<br>
<br>
---<br>
Dr. Torsten Fahle<br>
Geschäftsbereich Systeme Airport<br>
INFORM GmbH, Pascalstr.23, 52076 Aachen, Germany<br>
Tel. (+49) 24 08 - 94 56 24 FAX: -94 56 25<br>
e-mail: Torsten.Fahle@inform-ac.com http://www.groundstar.de <br>
<br>
<br>
<br>
_______________________________________________<br>
Coin-lpsolver mailing list<br>
Coin-lpsolver@list.coin-or.org<br>
http://list.coin-or.org/mailman/listinfo/coin-lpsolver<br>
</tt></font>
<br>