Clp
1.17.11
Toggle main menu visibility
Loading...
Searching...
No Matches
Clp
src
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
36
37
class
ClpPredictorCorrector
:
public
ClpInterior
{
38
39
public
:
42
48
49
int
solve
();
51
54
55
//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
*/
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
Generated by
1.17.0