Clp  1.17.8
ClpPredictorCorrector.hpp
Go to the documentation of this file.
1 /* $Id$ */
2 // Copyright (C) 2003, International Business Machines
3 // Corporation and others. All Rights Reserved.
4 // This code is licensed under the terms of the Eclipse Public License (EPL).
5 /*
6  Authors
7 
8  John Forrest
9 
10  */
11 #ifndef ClpPredictorCorrector_H
12 #define ClpPredictorCorrector_H
13 
14 #include "ClpInterior.hpp"
15 
38 
39 public:
49  int solve();
51 
54  //phase - 0 predictor
56  // 1 corrector
57  // 2 primal dual
58  CoinWorkDouble findStepLength(int phase);
60  CoinWorkDouble findDirectionVector(const int phase);
62  int createSolution();
64  //phase 0=as is , 1 = after predictor , 2 after corrector
65  CoinWorkDouble complementarityGap(int &numberComplementarityPairs, int &numberComplementarityItems,
66  const int phase);
68  //phase 0=affine , 1 = corrector , 2 = primal-dual
69  void setupForSolve(const int phase);
71  void solveSystem(CoinWorkDouble *region1, CoinWorkDouble *region2,
72  const CoinWorkDouble *region1In, const CoinWorkDouble *region2In,
73  const CoinWorkDouble *saveRegion1, const CoinWorkDouble *saveRegion2,
74  bool gentleRefine);
76  bool checkGoodMove(const bool doCorrector, CoinWorkDouble &bestNextGap,
77  bool allowIncreasingGap);
79  bool checkGoodMove2(CoinWorkDouble move, CoinWorkDouble &bestNextGap,
80  bool allowIncreasingGap);
82  //returns number fixed
83  int updateSolution(CoinWorkDouble nextGap);
85  CoinWorkDouble affineProduct();
87  void debugMove(int phase, CoinWorkDouble primalStep, CoinWorkDouble dualStep);
89 };
90 #endif
91 
92 /* vi: softtabstop=2 shiftwidth=2 expandtab tabstop=2
93 */
ClpPredictorCorrector::findStepLength
CoinWorkDouble findStepLength(int phase)
findStepLength.
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::createSolution
int createSolution()
createSolution. Creates solution from scratch (- code if no memory)
ClpInterior::complementarityGap
CoinWorkDouble complementarityGap() const
ComplementarityGap.
Definition: ClpInterior.hpp:254
ClpPredictorCorrector::updateSolution
int updateSolution(CoinWorkDouble nextGap)
updateSolution. Updates solution at end of iteration
ClpPredictorCorrector::debugMove
void debugMove(int phase, CoinWorkDouble primalStep, CoinWorkDouble dualStep)
See exactly what would happen given current deltas.
ClpInterior.hpp
ClpInterior
This solves LPs using interior point methods.
Definition: ClpInterior.hpp:72
ClpPredictorCorrector::checkGoodMove2
bool checkGoodMove2(CoinWorkDouble move, CoinWorkDouble &bestNextGap, bool allowIncreasingGap)
: checks for one step size
ClpPredictorCorrector::setupForSolve
void setupForSolve(const int phase)
setupForSolve.
ClpPredictorCorrector
This solves LPs using the predictor-corrector method due to Mehrotra.
Definition: ClpPredictorCorrector.hpp:37
ClpPredictorCorrector::checkGoodMove
bool checkGoodMove(const bool doCorrector, CoinWorkDouble &bestNextGap, bool allowIncreasingGap)
sees if looks plausible change in complementarity
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::findDirectionVector
CoinWorkDouble findDirectionVector(const int phase)
findDirectionVector.