DyLP
1.10.4
|
Links to aid in packed matrix modification. More...
#include <CoinPresolveMatrix.hpp>
Public Attributes | |
int | pre |
int | suc |
Related Functions | |
(Note that these are not member functions.) | |
void | PRESOLVE_REMOVE_LINK (presolvehlink *link, int i) |
unlink vector i More... | |
void | PRESOLVE_INSERT_LINK (presolvehlink *link, int i, int j) |
insert vector i after vector j More... | |
void | PRESOLVE_MOVE_LINK (presolvehlink *link, int i, int j) |
relink vector j in place of vector i More... | |
Links to aid in packed matrix modification.
Currently, the matrices held by the CoinPrePostsolveMatrix and CoinPresolveMatrix objects are represented in the same way as a CoinPackedMatrix. In the course of presolve and postsolve transforms, it will happen that a major-dimension vector needs to increase in size. In order to check whether there is enough room to add another coefficient in place, it helps to know the next vector (in memory order) in the bulk storage area. To do that, a linked list of major-dimension vectors is maintained; the "pre" and "suc" fields give the previous and next vector, in memory order (that is, the vector whose mcstrt_ or mrstrt_ entry is next smaller or larger).
Consider a column-major matrix with ncols columns. By definition, presolvehlink[ncols].pre points to the column in the last occupied position of the bulk storage arrays. There is no easy way to find the column which occupies the first position (there is no presolvehlink[-1] to consult). If the column that initially occupies the first position is moved for expansion, there is no way to reclaim the space until the bulk storage is compacted. The same holds for the last and first rows of a row-major matrix, of course.
Definition at line 809 of file CoinPresolveMatrix.hpp.
|
related |
unlink vector i
Remove vector i from the ordering.
Definition at line 821 of file CoinPresolveMatrix.hpp.
|
related |
insert vector i after vector j
Insert vector i between j and j.suc.
Definition at line 839 of file CoinPresolveMatrix.hpp.
|
related |
relink vector j in place of vector i
Replace vector i in the ordering with vector j. This is equivalent to
int pre = link[i].pre; PRESOLVE_REMOVE_LINK(link,i); PRESOLVE_INSERT_LINK(link,j,pre);
But, this routine will work even if i happens to be first in the order.
Definition at line 861 of file CoinPresolveMatrix.hpp.
int presolvehlink::pre |
Definition at line 811 of file CoinPresolveMatrix.hpp.
int presolvehlink::suc |
Definition at line 811 of file CoinPresolveMatrix.hpp.