<br><font size=2 face="sans-serif">Torsten,</font>
<br>
<br><font size=2 face="sans-serif">Apologies, I had another enquiry
to do with presolve and because you said presolve was on I got confused
and put the changes in the wrong place.</font>
<br>
<br><font size=2 face="sans-serif">Try again</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">12/01/2005 07:53 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">Re: [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>
Thanks for the fast reply, John.<br>
<br>
I tried with today's tarball, but the code still uses its own factor for
factorization rather than the one I stored via the modelPtr.<br>
<br>
Looking into the changes, ClpSolve::initialSolve() now has some extra code
that handels user defined factorization.<br>
So I put some printf into ClpSolve::InitialSolve() and into OsiClpSolverInterface::initialSolve().<br>
When running the code, only OsiClpSolverInterface::initialSolve() is called,
but ClpSolve::InitialSolve() is not.<br>
Thus your adaption is not considered.<br>
When replacing the formular in OsiClpSolverInterface::initialSolve(), line
154 with my value, CLP uses this value.<br>
Maybe this part has to be adapted as well?<br>
<br>
In case the problem is due to a mistake in my usage of the OsiInterface,
here is my calling sequence:<br>
<br>
OsiClpSolverInterface *_solver = new OsiClpSolverInterface();<br>
<br>
<snip .. some code that generates the model in a CoinModel ..snip><br>
<br>
_solver->loadFromCoinModel(*model);<br>
<br>
_solver->getModelPtr()->setFactorizationFrequency(1400);<br>
<br>
_solver->initialSolve(); <br>
--> solver runs without considering my factorization value<br>
<br>
Maybe you can help?<br>
<br>
Thanks,<br>
<br>
Torsten<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>
>>> John J Forrest <jjforre@us.ibm.com> 30.11.2005 16:33
>>><br>
"feature" should be fixed now. Tell me if not.<br>
<br>
John Forrest<br>
<br>
<br>
<br>
"Torsten Fahle" <Torsten.Fahle@inform-ac.com> <br>
Sent by: coin-lpsolver-bounces@list.coin-or.org <br>
11/29/2005 11:00 AM<br>
<br>
To<br>
<coin-lpsolver@list.coin-or.org><br>
cc<br>
<br>
Subject<br>
[Coin-lpsolver] CLP factorization info lost when using <br>
OsiClpSolverInterface::initialeSolve ?<br>
<br>
<br>
<br>
<br>
<br>
<br>
Hi,<br>
<br>
I'd like to increase the factorization limit of CLP through the <br>
OsiClpSolverInterface.<br>
As far as I can see from the documentation, a simple way to do so is <br>
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 <br>
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 <br>
default value. <br>
Having changed the value to 1400 I was surprised that OSI still reads
a <br>
value of 200 and consequently updates maxPivots.<br>
<br>
So I checked the modelPtr_ which still holds the value 1400. And I checked
<br>
model2 which only holds 200.<br>
<br>
model2 is a pointer to a presolved LP that was "stored" in a
variable <br>
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 <br>
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
<br>
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
<br>
(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
<br>
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>
<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>