# ClpPredictorCorrector Class Reference

This solves LPs using the predictor-corrector method due to Mehrotra. More...

`#include <ClpPredictorCorrector.hpp>`

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

List of all members.

## Public Member Functions
Description of algorithm
int | solve ()
| Primal Dual Predictor Corrector algorithm.
Functions used in algorithm
CoinWorkDouble | findStepLength (int phase)
| findStepLength.
CoinWorkDouble | findDirectionVector (const int phase)
| findDirectionVector.
int | createSolution ()
| createSolution. Creates solution from scratch (- code if no memory)
CoinWorkDouble | complementarityGap (int &numberComplementarityPairs, int &numberComplementarityItems, const int phase)
| complementarityGap. Computes gap
void | setupForSolve (const int phase)
| setupForSolve.
void | solveSystem (CoinWorkDouble *region1, CoinWorkDouble *region2, const CoinWorkDouble *region1In, const CoinWorkDouble *region2In, const CoinWorkDouble *saveRegion1, const CoinWorkDouble *saveRegion2, bool gentleRefine)
| Does solve.
bool | checkGoodMove (const bool doCorrector, CoinWorkDouble &bestNextGap, bool allowIncreasingGap)
| sees if looks plausible change in complementarity
bool | checkGoodMove2 (CoinWorkDouble move, CoinWorkDouble &bestNextGap, bool allowIncreasingGap)
| : checks for one step size
int | updateSolution (CoinWorkDouble nextGap)
| updateSolution. Updates solution at end of iteration
CoinWorkDouble | affineProduct ()
| Save info on products of affine deltaT*deltaW and deltaS*deltaZ.
void | debugMove (int phase, CoinWorkDouble primalStep, CoinWorkDouble dualStep)
| See exactly what would happen given current deltas.

## Detailed Description

This solves LPs using the predictor-corrector method due to Mehrotra.

It also uses multiple centrality corrections as in Gondzio.

See; S. Mehrotra, "On the implementation of a primal-dual interior point method", SIAM Journal on optimization, 2 (1992) J. Gondzio, "Multiple centraility corrections in a primal-dual method for linear programming", Computational Optimization and Applications,6 (1996)

It is rather basic as Interior point is not my speciality

It inherits from ClpInterior. It has no data of its own and is never created - only cast from a ClpInterior object at algorithm time.

It can also solve QPs

Definition at line 37 of file ClpPredictorCorrector.hpp.

## Member Function Documentation

int ClpPredictorCorrector::solve | ( |  | ) |

Primal Dual Predictor Corrector algorithm.

Method

Big TODO

CoinWorkDouble ClpPredictorCorrector::findStepLength | ( | int | phase | ) |

findStepLength.

CoinWorkDouble ClpPredictorCorrector::findDirectionVector | ( | const int | phase | ) |

findDirectionVector.

int ClpPredictorCorrector::createSolution | ( |  | ) |

createSolution. Creates solution from scratch (- code if no memory)

CoinWorkDouble ClpPredictorCorrector::complementarityGap | ( | int & | numberComplementarityPairs,
|  | int & | numberComplementarityItems,
|  | const int | phase |
| ) |  |  |

complementarityGap. Computes gap

void ClpPredictorCorrector::setupForSolve | ( | const int | phase | ) |

setupForSolve.

void ClpPredictorCorrector::solveSystem | ( | CoinWorkDouble * | region1,
|  | CoinWorkDouble * | region2,
|  | const CoinWorkDouble * | region1In,
|  | const CoinWorkDouble * | region2In,
|  | const CoinWorkDouble * | saveRegion1,
|  | const CoinWorkDouble * | saveRegion2,
|  | bool | gentleRefine |
| ) |  |  |

Does solve.

region1 is for deltaX (columns+rows), region2 for deltaPi (rows)

bool ClpPredictorCorrector::checkGoodMove | ( | const bool | doCorrector,
|  | CoinWorkDouble & | bestNextGap,
|  | bool | allowIncreasingGap |
| ) |  |  |

sees if looks plausible change in complementarity

bool ClpPredictorCorrector::checkGoodMove2 | ( | CoinWorkDouble | move,
|  | CoinWorkDouble & | bestNextGap,
|  | bool | allowIncreasingGap |
| ) |  |  |

: checks for one step size

int ClpPredictorCorrector::updateSolution | ( | CoinWorkDouble | nextGap | ) |

updateSolution. Updates solution at end of iteration

CoinWorkDouble ClpPredictorCorrector::affineProduct | ( |  | ) |

Save info on products of affine deltaT*deltaW and deltaS*deltaZ.

void ClpPredictorCorrector::debugMove | ( | int | phase,
|  | CoinWorkDouble | primalStep,
|  | CoinWorkDouble | dualStep |
| ) |  |  |

See exactly what would happen given current deltas.

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

- /home/coin/svn-release/Alps-1.4.8/Clp/src/ClpPredictorCorrector.hpp