**Table of Contents**

In the dual algorithm, any infeasible basic variable may be chosen to leave the basis. Similarly in the primal algorithm, any non-basic variable with a "bad" reduced cost may be chosen to enter the basis. This choice is probably the most important factor in determining the number of iterations it will take to solve a problem. Clp provides a abstract base class for each case and then instances of each. It is relatively simple for an advanced user to create new instances.

For the dual method the base class is `ClpDualRowPivot`.
The two existing instances are `ClpDualRowDantzig` and
`ClpDualRowSteepest`. The Dantzig version implements the
"standard" pivot rule: choose the most violated basic variable. It
is easily dominated by the Steepest instance which should normally be used. The
default is to use un-initialized weights where the initial weight for each basic
variable is 1.0. If an all-slack basis is being used then these are the correct
weights. To use a version which calculates the weights, create an instance and
pass it to ClpSimplex model as in the following code fragment:

ClpDualRowSteepest steep(1); // 0 uninitialized, 1 compute weights model.setDualRowPivotAlgorithm(steep);

Similarly for the primal method the base class is
`ClpPrimalColumnPivot`. The two existing instances are
`ClpPrimalColumnDantzig` and
`ClpPrimalColumnSteepest`. The Dantzig version implements
"standard" pivot rule: choose the most "violated" non-basic
variable. It is dominated by the Steepest instance which should normally be
used. The default is to use exact Devex where the initial weight for each
non-basic variable is 1.0. Unlike for the dual, this is never the same as
normal steepest edge. To use a version which does steepest edge create an
instance and pass it to ClpSimplex model as in the following code fragment:

ClpPrimalColumnSteepest steep(1); // 0 devex, 1 steepest model.setPrimalColumnPivotAlgorithm(steep);

The partial pricing scheme (for long, thin problems) currently does not exist. This could be implemented by anyone who is interested.