ClpPredictorCorrector Class Reference

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

#include <ClpPredictorCorrector.hpp>

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

List of all members.

Public Member Functions

Description of algorithm



int solve ()
 Primal Dual Predictor Corrector algorithm.
Functions used in algorithm



double findStepLength (int phase)
 findStepLength.
double findDirectionVector (const int phase)
 findDirectionVector.
int createSolution ()
 createSolution. Creates solution from scratch (- code if no memory)
double complementarityGap (int &numberComplementarityPairs, int &numberComplementarityItems, const int phase)
 complementarityGap. Computes gap
void setupForSolve (const int phase)
 setupForSolve.
void solveSystem (double *region1, double *region2, const double *region1In, const double *region2In, const double *saveRegion1, const double *saveRegion2, bool gentleRefine)
 Does solve.
bool checkGoodMove (const bool doCorrector, double &bestNextGap, bool allowIncreasingGap)
 sees if looks plausible change in complementarity
bool checkGoodMove2 (double move, double &bestNextGap, bool allowIncreasingGap)
 : checks for one step size
int updateSolution (double nextGap)
 updateSolution. Updates solution at end of iteration
double affineProduct ()
 Save info on products of affine deltaT*deltaW and deltaS*deltaZ.
void debugMove (int phase, double primalStep, double 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 36 of file ClpPredictorCorrector.hpp.


Member Function Documentation

int ClpPredictorCorrector::solve (  ) 

Primal Dual Predictor Corrector algorithm.

Method

Big TODO

double ClpPredictorCorrector::findStepLength ( int  phase  ) 

findStepLength.

double ClpPredictorCorrector::findDirectionVector ( const int  phase  ) 

findDirectionVector.

int ClpPredictorCorrector::createSolution (  ) 

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

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

complementarityGap. Computes gap

void ClpPredictorCorrector::setupForSolve ( const int  phase  ) 

setupForSolve.

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

Does solve.

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

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

sees if looks plausible change in complementarity

bool ClpPredictorCorrector::checkGoodMove2 ( double  move,
double &  bestNextGap,
bool  allowIncreasingGap 
)

: checks for one step size

int ClpPredictorCorrector::updateSolution ( double  nextGap  ) 

updateSolution. Updates solution at end of iteration

double ClpPredictorCorrector::affineProduct (  ) 

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

void ClpPredictorCorrector::debugMove ( int  phase,
double  primalStep,
double  dualStep 
)

See exactly what would happen given current deltas.


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

Generated on 15 Mar 2015 for Coin-All by  doxygen 1.6.1