- Main Page
- Modules
- Namespaces
- Classes
- Files
- Related Pages

- Alphabetical List
- Class List
- Class Hierarchy
- Class Members

# presolvehlink Class Reference

Links to aid in packed matrix modification. More...

`#include <CoinPresolveMatrix.hpp>`

List of all members.

## 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
void | PRESOLVE_INSERT_LINK (presolvehlink *link, int i, int j)
| insert vector i after vector j
void | PRESOLVE_MOVE_LINK (presolvehlink *link, int i, int j)
| relink vector j in place of vector i

## Detailed Description

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 678 of file CoinPresolveMatrix.hpp.

## Friends And Related Function Documentation

void PRESOLVE_REMOVE_LINK | ( | presolvehlink * | link,
|  | int | i |
| ) |  |  | `[related]`

unlink vector i

Remove vector i from the ordering.

Definition at line 690 of file CoinPresolveMatrix.hpp.

References NO_LINK, pre, and suc.

void PRESOLVE_INSERT_LINK | ( | presolvehlink * | link,
|  | int | i,
|  | int | j |
| ) |  |  | `[related]`

insert vector i after vector j

Insert vector i between j and j.suc.

Definition at line 708 of file CoinPresolveMatrix.hpp.

References pre, and suc.

void PRESOLVE_MOVE_LINK | ( | presolvehlink * | link,
|  | int | i,
|  | int | j |
| ) |  |  | `[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 730 of file CoinPresolveMatrix.hpp.

References NO_LINK, pre, and suc.

## Member Data Documentation

int presolvehlink::pre

Definition at line 680 of file CoinPresolveMatrix.hpp.

Referenced by PRESOLVE_INSERT_LINK(), PRESOLVE_MOVE_LINK(), and PRESOLVE_REMOVE_LINK().

int presolvehlink::suc

Definition at line 680 of file CoinPresolveMatrix.hpp.

Referenced by PRESOLVE_INSERT_LINK(), PRESOLVE_MOVE_LINK(), and PRESOLVE_REMOVE_LINK().

The documentation for this class was generated from the following file:

- /home/coin/SVN-release/Osi-0.98.1/CoinUtils/src/CoinPresolveMatrix.hpp