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

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

# ClpDualRowSteepest Class Reference

Dual Row Pivot Steepest Edge Algorithm Class. More...

`#include <ClpDualRowSteepest.hpp>`

Inheritance diagram for ClpDualRowSteepest:

[legend]
Collaboration diagram for ClpDualRowSteepest:

[legend]
List of all members.

## Public Types
| normal = 0x00
| keep = 0x01
enum | Persistence { normal = 0x00, keep = 0x01 }
| enums for persistence More...
## Public Member Functions
Algorithmic methods
virtual int | pivotRow ()
| Returns pivot row, -1 if none.
virtual double | updateWeights (CoinIndexedVector *input, CoinIndexedVector *spare, CoinIndexedVector *spare2, CoinIndexedVector *updatedColumn)
| Updates weights and returns pivot alpha.
virtual void | updatePrimalSolution (CoinIndexedVector *input, double theta, double &changeInObjective)
| Updates primal solution (and maybe list of candidates) Uses input vector which it deletes Computes change in objective function.
virtual void | saveWeights (ClpSimplex *model, int mode)
| Saves any weights round factorization as pivot rows may change Save model May also recompute infeasibility stuff 1) before factorization 2) after good factorization (if weights empty may initialize) 3) after something happened but no factorization (e.g.
virtual void | unrollWeights ()
| Gets rid of last update.
virtual void | clearArrays ()
| Gets rid of all arrays.
virtual bool | looksOptimal () const
| Returns true if would not find any row.
virtual void | maximumPivotsChanged ()
| Called when maximum pivots changes.
Constructors and destructors
| ClpDualRowSteepest (int mode=3)
| Default Constructor 0 is uninitialized, 1 full, 2 is partial uninitialized, 3 starts as 2 but may switch to 1.
| ClpDualRowSteepest (const ClpDualRowSteepest &)
| Copy constructor.
ClpDualRowSteepest & | operator= (const ClpDualRowSteepest &rhs)
| Assignment operator.
void | fill (const ClpDualRowSteepest &rhs)
| Fill most values.
virtual | ~ClpDualRowSteepest ()
| Destructor.
virtual ClpDualRowPivot * | clone (bool copyData=true) const
| Clone.
gets and sets
int | mode () const
| Mode.
void | setPersistence (Persistence life)
| Set/ get persistence.
Persistence | persistence () const
| Mode.
## Private Attributes
Private member data
int | state_
| Status 0) Normal -1) Needs initialization 1) Weights are stored by sequence number.
int | mode_
| If 0 then we are using uninitialized weights, 1 then full, if 2 then uninitialized partial, 3 switchable.
Persistence | persistence_
| Life of weights.
double * | weights_
| weight array
CoinIndexedVector * | infeasible_
| square of infeasibility array (just for infeasible rows)
CoinIndexedVector * | alternateWeights_
| alternate weight array (so we can unroll)
CoinIndexedVector * | savedWeights_
| save weight array (so we can use checkpoint)
int * | dubiousWeights_
| Dubious weights.

## Detailed Description

Dual Row Pivot Steepest Edge Algorithm Class.

See Forrest-Goldfarb paper for algorithm

Definition at line 19 of file ClpDualRowSteepest.hpp.

## Member Enumeration Documentation

enum ClpDualRowSteepest::Persistence

enums for persistence

Enumerator:

  normal |
  keep |

Definition at line 67 of file ClpDualRowSteepest.hpp.

## Constructor & Destructor Documentation

ClpDualRowSteepest::ClpDualRowSteepest | ( | int | mode = `3` | ) |

Default Constructor 0 is uninitialized, 1 full, 2 is partial uninitialized, 3 starts as 2 but may switch to 1.

By partial is meant that the weights are updated as normal but only part of the infeasible basic variables are scanned. This can be faster on very easy problems.

ClpDualRowSteepest::ClpDualRowSteepest | ( | const ClpDualRowSteepest & |  | ) |

Copy constructor.

virtual ClpDualRowSteepest::~ClpDualRowSteepest | ( |  | ) | `[virtual]`

Destructor.

## Member Function Documentation

virtual int ClpDualRowSteepest::pivotRow | ( |  | ) | `[virtual]`

Returns pivot row, -1 if none.

Implements ClpDualRowPivot.

virtual double ClpDualRowSteepest::updateWeights | ( | CoinIndexedVector * | input,
|  | CoinIndexedVector * | spare,
|  | CoinIndexedVector * | spare2,
|  | CoinIndexedVector * | updatedColumn |
| ) |  |  | `[virtual]`

Updates weights and returns pivot alpha.

Also does FT update

Implements ClpDualRowPivot.

virtual void ClpDualRowSteepest::updatePrimalSolution | ( | CoinIndexedVector * | input,
|  | double | theta,
|  | double & | changeInObjective |
| ) |  |  | `[virtual]`

Updates primal solution (and maybe list of candidates) Uses input vector which it deletes Computes change in objective function.

Implements ClpDualRowPivot.

virtual void ClpDualRowSteepest::saveWeights | ( | ClpSimplex * | model,
|  | int | mode |
| ) |  |  | `[virtual]`

Saves any weights round factorization as pivot rows may change Save model May also recompute infeasibility stuff 1) before factorization 2) after good factorization (if weights empty may initialize) 3) after something happened but no factorization (e.g.

check for infeasible) 4) as 2 but restore weights from previous snapshot 5) for strong branching - initialize (uninitialized) , infeasibilities

Reimplemented from ClpDualRowPivot.

virtual void ClpDualRowSteepest::unrollWeights | ( |  | ) | `[virtual]`

Gets rid of last update.

Reimplemented from ClpDualRowPivot.

virtual void ClpDualRowSteepest::clearArrays | ( |  | ) | `[virtual]`

Gets rid of all arrays.

Reimplemented from ClpDualRowPivot.

virtual bool ClpDualRowSteepest::looksOptimal | ( |  | ) | const`[virtual]`

Returns true if would not find any row.

Reimplemented from ClpDualRowPivot.

virtual void ClpDualRowSteepest::maximumPivotsChanged | ( |  | ) | `[virtual]`

Called when maximum pivots changes.

Reimplemented from ClpDualRowPivot.

ClpDualRowSteepest& ClpDualRowSteepest::operator= | ( | const ClpDualRowSteepest & | rhs | ) |

Assignment operator.

void ClpDualRowSteepest::fill | ( | const ClpDualRowSteepest & | rhs | ) |

Fill most values.

virtual ClpDualRowPivot* ClpDualRowSteepest::clone | ( | bool | copyData = `true` | ) | const`[virtual]`

Clone.

Implements ClpDualRowPivot.

int ClpDualRowSteepest::mode | ( |  | ) | const`[inline]`

Mode.

Definition at line 102 of file ClpDualRowSteepest.hpp.

References mode_.

void ClpDualRowSteepest::setPersistence | ( | Persistence | life | ) | `[inline]`

Set/ get persistence.

Definition at line 105 of file ClpDualRowSteepest.hpp.

References persistence_.

Persistence ClpDualRowSteepest::persistence | ( |  | ) | const`[inline]`

Mode.

Definition at line 107 of file ClpDualRowSteepest.hpp.

References persistence_.

## Member Data Documentation

int ClpDualRowSteepest::state_`[private]`

Status 0) Normal -1) Needs initialization 1) Weights are stored by sequence number.

Definition at line 120 of file ClpDualRowSteepest.hpp.

int ClpDualRowSteepest::mode_`[private]`

If 0 then we are using uninitialized weights, 1 then full, if 2 then uninitialized partial, 3 switchable.

Definition at line 123 of file ClpDualRowSteepest.hpp.

Referenced by mode().

Persistence ClpDualRowSteepest::persistence_`[private]`

Life of weights.

Definition at line 125 of file ClpDualRowSteepest.hpp.

Referenced by persistence(), and setPersistence().

double* ClpDualRowSteepest::weights_`[private]`

weight array

Definition at line 127 of file ClpDualRowSteepest.hpp.

CoinIndexedVector* ClpDualRowSteepest::infeasible_`[private]`

square of infeasibility array (just for infeasible rows)

Definition at line 129 of file ClpDualRowSteepest.hpp.

CoinIndexedVector* ClpDualRowSteepest::alternateWeights_`[private]`

alternate weight array (so we can unroll)

Definition at line 131 of file ClpDualRowSteepest.hpp.

CoinIndexedVector* ClpDualRowSteepest::savedWeights_`[private]`

save weight array (so we can use checkpoint)

Definition at line 133 of file ClpDualRowSteepest.hpp.

int* ClpDualRowSteepest::dubiousWeights_`[private]`

Dubious weights.

Definition at line 135 of file ClpDualRowSteepest.hpp.

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

- /home/coin/SVN-release/Blis-0.91.2/Clp/src/ClpDualRowSteepest.hpp