Loading...
Searching...
No Matches
ClpPredictorCorrector.hpp
Go to the documentation of this file.
/* $Id$ */
// Copyright (C) 2003, International Business Machines
// Corporation and others. All Rights Reserved.
// This code is licensed under the terms of the Eclipse Public License (EPL).
/*
Authors
John Forrest
*/
#ifndef ClpPredictorCorrector_H
#define ClpPredictorCorrector_H
#include "ClpInterior.hpp"
class ClpPredictorCorrector : public ClpInterior {
public:
int solve();
//phase - 0 predictor
// 1 corrector
// 2 primal dual
CoinWorkDouble findStepLength(int phase);
CoinWorkDouble findDirectionVector(const int phase);
int createSolution();
//phase 0=as is , 1 = after predictor , 2 after corrector
CoinWorkDouble complementarityGap(int &numberComplementarityPairs, int &numberComplementarityItems,
const int phase);
//phase 0=affine , 1 = corrector , 2 = primal-dual
void setupForSolve(const int phase);
void solveSystem(CoinWorkDouble *region1, CoinWorkDouble *region2,
const CoinWorkDouble *region1In, const CoinWorkDouble *region2In,
const CoinWorkDouble *saveRegion1, const CoinWorkDouble *saveRegion2,
bool gentleRefine);
bool checkGoodMove(const bool doCorrector, CoinWorkDouble &bestNextGap,
bool allowIncreasingGap);
bool checkGoodMove2(CoinWorkDouble move, CoinWorkDouble &bestNextGap,
bool allowIncreasingGap);
//returns number fixed
int updateSolution(CoinWorkDouble nextGap);
CoinWorkDouble affineProduct();
void debugMove(int phase, CoinWorkDouble primalStep, CoinWorkDouble dualStep);
};
#endif
/* vi: softtabstop=2 shiftwidth=2 expandtab tabstop=2
*/
ClpInterior.hpp
ClpInterior::ClpInterior
ClpInterior()
Default constructor.
ClpPredictorCorrector
This solves LPs using the predictor-corrector method due to Mehrotra.
Definition ClpPredictorCorrector.hpp:37
ClpPredictorCorrector::checkGoodMove2
bool checkGoodMove2(CoinWorkDouble move, CoinWorkDouble &bestNextGap, bool allowIncreasingGap)
: checks for one step size
ClpPredictorCorrector::solveSystem
void solveSystem(CoinWorkDouble *region1, CoinWorkDouble *region2, const CoinWorkDouble *region1In, const CoinWorkDouble *region2In, const CoinWorkDouble *saveRegion1, const CoinWorkDouble *saveRegion2, bool gentleRefine)
Does solve.
ClpPredictorCorrector::updateSolution
int updateSolution(CoinWorkDouble nextGap)
updateSolution. Updates solution at end of iteration
ClpPredictorCorrector::findStepLength
CoinWorkDouble findStepLength(int phase)
findStepLength.
ClpPredictorCorrector::findDirectionVector
CoinWorkDouble findDirectionVector(const int phase)
findDirectionVector.
ClpPredictorCorrector::setupForSolve
void setupForSolve(const int phase)
setupForSolve.
ClpPredictorCorrector::solve
int solve()
Primal Dual Predictor Corrector algorithm.
ClpPredictorCorrector::affineProduct
CoinWorkDouble affineProduct()
Save info on products of affine deltaT*deltaW and deltaS*deltaZ.
ClpPredictorCorrector::checkGoodMove
bool checkGoodMove(const bool doCorrector, CoinWorkDouble &bestNextGap, bool allowIncreasingGap)
sees if looks plausible change in complementarity
ClpPredictorCorrector::createSolution
int createSolution()
createSolution. Creates solution from scratch (- code if no memory)
ClpPredictorCorrector::debugMove
void debugMove(int phase, CoinWorkDouble primalStep, CoinWorkDouble dualStep)
See exactly what would happen given current deltas.
ClpPredictorCorrector::complementarityGap
CoinWorkDouble complementarityGap(int &numberComplementarityPairs, int &numberComplementarityItems, const int phase)
complementarityGap. Computes gap