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

- Class List
- Class Index
- Class Hierarchy
- Class Members

Classes | Public Member Functions | Static Public Member Functions | Private Member Functions | Private Attributes | List of all members
remove_dual_action Class Reference

Attempt to fix variables by bounding reduced costs. More...

`#include <CoinPresolveDual.hpp>`

Inheritance diagram for remove_dual_action:
[legend]
Collaboration diagram for remove_dual_action:
[legend]

## Classes
struct | action
| Postsolve (bound restore) instruction. More...

## Public Member Functions
| ~remove_dual_action ()
| Destructor. More...
const char * | name () const
| Name. More...
void | postsolve (CoinPostsolveMatrix *prob) const
| Postsolve. More...
Public Member Functions inherited from CoinPresolveAction
| CoinPresolveAction (const CoinPresolveAction *next)
| Construct a postsolve object and add it to the transformation list. More...
void | setNext (const CoinPresolveAction *nextAction)
| modify next (when building rather than passing) More...
virtual | ~CoinPresolveAction ()
| Virtual destructor. More...

## Static Public Member Functions
static const CoinPresolveAction * | presolve (CoinPresolveMatrix *prob, const CoinPresolveAction *next)
| Attempt to fix variables by bounding reduced costs. More...
Static Public Member Functions inherited from CoinPresolveAction
static void | throwCoinError (const char *error, const char *ps_routine)
| Stub routine to throw exceptions. More...

## Private Member Functions
| remove_dual_action (int nactions, const action *actions, const CoinPresolveAction *next)
| Constructor with postsolve actions. More...

## Private Attributes
const int | nactions_
| Count of bound restore entries. More...
const action * | actions_
| Bound restore entries. More...

## Additional Inherited Members
Public Attributes inherited from CoinPresolveAction
const CoinPresolveAction * | next
| The next presolve transformation. More...

## Detailed Description

Attempt to fix variables by bounding reduced costs.

The reduced cost of x_j is d_j = c_j - y*a_j (1). Assume minimization, so that at optimality d_j >= 0 for x_j nonbasic at lower bound, and d_j <= 0 for x_j nonbasic at upper bound.

For a slack variable s_i, c_(n+i) = 0 and a_(n+i) is a unit vector, hence d_(n+i) = -y_i. If s_i has a finite lower bound and no upper bound, we must have y_i <= 0 at optimality. Similarly, if s_i has no lower bound and a finite upper bound, we must have y_i >= 0.

For a singleton variable x_j, d_j = c_j - y_i*a_ij. Given x_j with a single finite bound, we can bound d_j greater or less than 0 at optimality, and that allows us to calculate an upper or lower bound on y_i (depending on the bound on d_j and the sign of a_ij).

Now we have bounds on some subset of the y_i, and we can use these to calculate upper and lower bounds on the d_j, using bound propagation on (1). If we can manage to bound some d_j as strictly positive or strictly negative, then at optimality the corresponding variable must be nonbasic at its lower or upper bound, respectively. If the required bound is lacking, the problem is unbounded.

Definition at line 35 of file CoinPresolveDual.hpp.

## Constructor & Destructor Documentation

remove_dual_action::~remove_dual_action | ( |  | ) |

Destructor.

remove_dual_action::remove_dual_action | ( | int | nactions,
|  | const action * | actions,
|  | const CoinPresolveAction * | next
| ) |  |
| inline private

Constructor with postsolve actions.

Definition at line 70 of file CoinPresolveDual.hpp.

## Member Function Documentation

const char* remove_dual_action::name | ( |  | ) | const
| inline virtual

Name.

Implements CoinPresolveAction.

Definition at line 43 of file CoinPresolveDual.hpp.

static const CoinPresolveAction* remove_dual_action::presolve | ( | CoinPresolveMatrix * | prob,
|  | const CoinPresolveAction * | next
| ) |  |
| static

Attempt to fix variables by bounding reduced costs.

Always scans all variables. Propagates bounds on reduced costs until there's no change or until some set of variables can be fixed.

void remove_dual_action::postsolve | ( | CoinPostsolveMatrix * | prob | ) | const
| virtual

Postsolve.

In addition to fixing variables (handled by make_fixed_action), we may need use our own postsolve to restore constraint bounds.

Implements CoinPresolveAction.

## Member Data Documentation

const int remove_dual_action::nactions_
| private

Count of bound restore entries.

Definition at line 78 of file CoinPresolveDual.hpp.

const action* remove_dual_action::actions_
| private

Bound restore entries.

Definition at line 80 of file CoinPresolveDual.hpp.

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

- /tmp/CHiPPS-Blis-0.94.3/CoinUtils/src/CoinPresolveDual.hpp