[Clp] Basis maintenance in presolve
Julian Hall
J.A.J.Hall at ed.ac.uk
Tue Apr 6 06:16:21 EDT 2010
Dear Rune,
> We are currently implementing some specialized presolve actions. We want
> these to maintain a basis of the original model as is already done by
> the current
>
> presolve actions. However, it is not clear to us how this actually
> happens. For instance, for a forcing constraint like
>
>
>
> 2x + 4y <= 0 , 0 <= x, 0 <= y
>
>
>
> it seems that Clp presolve first fixes x and y at zero and removes them
> from the matrix and after that removes the row since it has become
> empty. But what if x or y are basis variables?
Before presolve, perform a fresh inversion of the basis matrix---if
using the Clp INVERT, you'll have to know the relationship between basic
columns and pivotal rows.
There will be pivots corresponding to x and y. Introduce into the basis
the slack variables corresponding to these rows. [They can't already be
basic since they would be the pivots in their "home" row.]
> Also every time, we remove a row, we cause the basis columns to become linearly dependent,
> so which column should we remove from the basis?
Remove the column corresponding to the pivot in that row.
> Basis maintenance in presolve seems non-trivial, but we have not been
> able to find any literature discussing the issue.
>
> Is there a simple answer to how this is done or do you know a good ref
> describing how to do it? (The presolve source code refers to some
> article here and there. Would that be Andersen & Andersen?).
If you are fully conversant with the basis factorization, then it's not
so difficult.
I assume that you're not trying to perform your specialized presolve
actions after calling the Clp presolve. Doing this it sounds hazardous.
Julian
--
Dr. J. A. Julian Hall, Senior Lecturer, School of Mathematics,
University of Edinburgh, JCMB, King's Buildings, EDINBURGH, EH9 3JZ, UK.
Room: 6221 Phone: [+44](131) 650 5075 Email: J.A.J.Hall at ed.ac.uk
Fax: [+44](131) 650 6553 Web: http://www.maths.ed.ac.uk/hall
--
The University of Edinburgh is a charitable body, registered in
Scotland, with registration number SC005336.
More information about the Clp
mailing list