drop_empty_cols_action

Physically removes empty columns in presolve, and reinserts empty columns in postsolve.

Physically removes empty columns in presolve, and reinserts empty columns in postsolve.

Inheritance

Inherits from: CoinPresolveAction

Description

Physical removal of rows and columns should be the last activities performed during presolve. Do them exactly once. The row-major matrix is not maintained by this transform. To physically drop the columns, CoinPrePostsolveMatrix::mcstrt_ and CoinPrePostsolveMatrix::hincol_ are compressed, along with column bounds, objective, and (if present) the column portions of the solution. This renumbers the columns. drop_empty_cols_action::presolve will reconstruct CoinPresolveMatrix::clink_. TodoConfirm correct behaviour with solution in presolve.

Public Methods

name

A name for debug printing.

const char * name()

postsolve

Apply the postsolve transformation for this particular presolve action.

void postsolve(CoinPostsolveMatrix * prob)

Parameters:

~drop_empty_cols_action

 ~drop_empty_cols_action()

presolve

const CoinPresolveAction * presolve(CoinPresolveMatrix * , const int * ecols, int necols, const CoinPresolveAction * )

Parameters:

presolve

const CoinPresolveAction * presolve(CoinPresolveMatrix * prob, const CoinPresolveAction * next)

Parameters:

Source

Header: layer-0/CoinUtils/src/CoinPresolveEmpty.hpp