Cgl
0.60.3

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 majordimension 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 majordimension 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 columnmajor 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 rowmajor 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.