#include <CglFlowCover.hpp>
Inheritance diagram for CglFlowCover:
Public Member Functions | |
void | flowPreprocess (const OsiSolverInterface &si) const |
Do the following tasks:. | |
Generate Cuts | |
virtual void | generateCuts (const OsiSolverInterface &si, OsiCuts &cs, const CglTreeInfo info=CglTreeInfo()) const |
Generate Lifed Simple Generalized flow cover cuts for the model data contained in si. | |
Functions to query and set maximum number of cuts can be | |
generated. | |
int | getMaxNumCuts () const |
void | setMaxNumCuts (int mc) |
Constructors and destructors | |
CglFlowCover () | |
Default constructor. | |
CglFlowCover (const CglFlowCover &) | |
Copy constructor. | |
virtual CglCutGenerator * | clone () const |
Clone. | |
CglFlowCover & | operator= (const CglFlowCover &rhs) |
Assignment operator. | |
virtual | ~CglFlowCover () |
Destructor. | |
virtual std::string | generateCpp (FILE *fp) |
Create C++ lines to get to current state. | |
Static Public Member Functions | |
Functions to query and set the number of cuts have been | |
generated. | |
static int | getNumFlowCuts () |
static void | setNumFlowCuts (int fc) |
static void | incNumFlowCuts (int fc=1) |
Private Member Functions | |
bool | generateOneFlowCut (const OsiSolverInterface &si, const int rowLen, int *ind, double *coef, char sense, double rhs, OsiRowCut &flowCut, double &violation) const |
Based a given row, a LP solution and other model data, this function tries to generate a violated lifted simple generalized flow cover. | |
void | flipRow (int rowLen, double *coef, double &rhs) const |
Transform a row from ">=" to "<=", and vice versa. | |
void | flipRow (int rowLen, double *coef, char &sen, double &rhs) const |
Transform a row from ">=" to "<=", and vice versa. | |
CglFlowRowType | determineOneRowType (const OsiSolverInterface &si, int rowLen, int *ind, double *coef, char sen, double rhs) const |
Determine the type of a given row. | |
void | liftMinus (double &movement, int t, int r, double z, double dPrimePrime, double lambda, double ml, double *M, double *rho) const |
Lift functions. | |
int | liftPlus (double &alpha, double &beta, int r, double m_j, double lambda, double y_j, double x_j, double dPrimePrime, double *M) const |
const CglFlowRowType * | getRowTypes () const |
CglFlowRowType | getRowType (const int i) const |
void | setRowTypes (CglFlowRowType *rt) |
Set rowtypes, take over the ownership. | |
void | setRowTypes (const CglFlowRowType rt, const int i) |
const CglFlowVUB * | getVubs () const |
const CglFlowVUB & | getVubs (int i) const |
void | setVubs (CglFlowVUB *vubs) |
Set CglFlowVUBs,take over the ownership. | |
void | setVubs (const CglFlowVUB &vub, int i) |
void | printVubs (std::ostream &os) const |
const CglFlowVLB * | getVlbs () const |
const CglFlowVLB & | getVlbs (int i) const |
void | setVlbs (CglFlowVLB *vlbs) |
Set CglFlowVLBs,take over the ownership. | |
void | setVlbs (const CglFlowVLB &vlb, int i) |
Private Attributes | |
int | maxNumCuts_ |
The maximum number of flow cuts to be generated. | |
double | EPSILON_ |
Tolerance used for numerical purpose. | |
int | UNDEFINED_ |
The variable upper bound of a flow is not indentified yet. | |
double | INFTY_ |
Very large number. | |
double | TOLERANCE_ |
If violation of a cut is greater that this number, the cut is useful. | |
bool | firstProcess_ |
First time preprocessing. | |
int | numRows_ |
The number rows of the problem. | |
int | numCols_ |
The number columns of the problem. | |
bool | doneInitPre_ |
Indicate whether initial flow preprecessing has been done. | |
CglFlowVUB * | vubs_ |
The array of CglFlowVUBs. | |
CglFlowVLB * | vlbs_ |
The array of CglFlowVLBs. | |
CglFlowRowType * | rowTypes_ |
CglFlowRowType of the rows in model. | |
Static Private Attributes | |
static int | numFlowCuts_ |
The number flow cuts found. | |
Friends | |
void | CglFlowCoverUnitTest (const OsiSolverInterface *siP, const std::string mpdDir) |
A function that tests the methods in the CglProbing class. |
Definition at line 148 of file CglFlowCover.hpp.
CglFlowCover::CglFlowCover | ( | ) |
Default constructor.
CglFlowCover::CglFlowCover | ( | const CglFlowCover & | ) |
Copy constructor.
virtual CglFlowCover::~CglFlowCover | ( | ) | [virtual] |
Destructor.
void CglFlowCover::flowPreprocess | ( | const OsiSolverInterface & | si | ) | const |
Do the following tasks:.
generateCuts(const OsiSolverInterface & si, OsiCuts & cs)
.
virtual void CglFlowCover::generateCuts | ( | const OsiSolverInterface & | si, | |
OsiCuts & | cs, | |||
const CglTreeInfo | info = CglTreeInfo() | |||
) | const [virtual] |
Generate Lifed Simple Generalized flow cover cuts for the model data contained in si.
The generated cuts are inserted into and returned in the collection of cuts cs.
Implements CglCutGenerator.
int CglFlowCover::getMaxNumCuts | ( | ) | const [inline] |
void CglFlowCover::setMaxNumCuts | ( | int | mc | ) | [inline] |
static int CglFlowCover::getNumFlowCuts | ( | ) | [inline, static] |
static void CglFlowCover::setNumFlowCuts | ( | int | fc | ) | [inline, static] |
static void CglFlowCover::incNumFlowCuts | ( | int | fc = 1 |
) | [inline, static] |
virtual CglCutGenerator* CglFlowCover::clone | ( | ) | const [virtual] |
CglFlowCover& CglFlowCover::operator= | ( | const CglFlowCover & | rhs | ) |
Assignment operator.
virtual std::string CglFlowCover::generateCpp | ( | FILE * | fp | ) | [virtual] |
bool CglFlowCover::generateOneFlowCut | ( | const OsiSolverInterface & | si, | |
const int | rowLen, | |||
int * | ind, | |||
double * | coef, | |||
char | sense, | |||
double | rhs, | |||
OsiRowCut & | flowCut, | |||
double & | violation | |||
) | const [private] |
Based a given row, a LP solution and other model data, this function tries to generate a violated lifted simple generalized flow cover.
void CglFlowCover::flipRow | ( | int | rowLen, | |
double * | coef, | |||
double & | rhs | |||
) | const [private] |
Transform a row from ">=" to "<=", and vice versa.
void CglFlowCover::flipRow | ( | int | rowLen, | |
double * | coef, | |||
char & | sen, | |||
double & | rhs | |||
) | const [private] |
Transform a row from ">=" to "<=", and vice versa.
Have 'sense'.
CglFlowRowType CglFlowCover::determineOneRowType | ( | const OsiSolverInterface & | si, | |
int | rowLen, | |||
int * | ind, | |||
double * | coef, | |||
char | sen, | |||
double | rhs | |||
) | const [private] |
Determine the type of a given row.
void CglFlowCover::liftMinus | ( | double & | movement, | |
int | t, | |||
int | r, | |||
double | z, | |||
double | dPrimePrime, | |||
double | lambda, | |||
double | ml, | |||
double * | M, | |||
double * | rho | |||
) | const [private] |
Lift functions.
int CglFlowCover::liftPlus | ( | double & | alpha, | |
double & | beta, | |||
int | r, | |||
double | m_j, | |||
double | lambda, | |||
double | y_j, | |||
double | x_j, | |||
double | dPrimePrime, | |||
double * | M | |||
) | const [private] |
const CglFlowRowType* CglFlowCover::getRowTypes | ( | ) | const [inline, private] |
CglFlowRowType CglFlowCover::getRowType | ( | const int | i | ) | const [inline, private] |
void CglFlowCover::setRowTypes | ( | CglFlowRowType * | rt | ) | [inline, private] |
Set rowtypes, take over the ownership.
Definition at line 273 of file CglFlowCover.hpp.
References rowTypes_.
void CglFlowCover::setRowTypes | ( | const CglFlowRowType | rt, | |
const int | i | |||
) | [inline, private] |
const CglFlowVUB* CglFlowCover::getVubs | ( | ) | const [inline, private] |
const CglFlowVUB& CglFlowCover::getVubs | ( | int | i | ) | const [inline, private] |
void CglFlowCover::setVubs | ( | CglFlowVUB * | vubs | ) | [inline, private] |
Set CglFlowVUBs,take over the ownership.
Definition at line 293 of file CglFlowCover.hpp.
References vubs_.
void CglFlowCover::setVubs | ( | const CglFlowVUB & | vub, | |
int | i | |||
) | [inline, private] |
void CglFlowCover::printVubs | ( | std::ostream & | os | ) | const [inline, private] |
const CglFlowVLB* CglFlowCover::getVlbs | ( | ) | const [inline, private] |
const CglFlowVLB& CglFlowCover::getVlbs | ( | int | i | ) | const [inline, private] |
void CglFlowCover::setVlbs | ( | CglFlowVLB * | vlbs | ) | [inline, private] |
Set CglFlowVLBs,take over the ownership.
Definition at line 317 of file CglFlowCover.hpp.
References vlbs_.
void CglFlowCover::setVlbs | ( | const CglFlowVLB & | vlb, | |
int | i | |||
) | [inline, private] |
void CglFlowCoverUnitTest | ( | const OsiSolverInterface * | siP, | |
const std::string | mpdDir | |||
) | [friend] |
A function that tests the methods in the CglProbing class.
The only reason for it not to be a member method is that this way it doesn't have to be compiled into the library. And that's a gain, because the library should be compiled with optimization on, but this method should be compiled with debugging.
int CglFlowCover::maxNumCuts_ [private] |
The maximum number of flow cuts to be generated.
Default is 1000.
Definition at line 335 of file CglFlowCover.hpp.
Referenced by getMaxNumCuts(), and setMaxNumCuts().
double CglFlowCover::EPSILON_ [private] |
int CglFlowCover::UNDEFINED_ [private] |
The variable upper bound of a flow is not indentified yet.
Definition at line 339 of file CglFlowCover.hpp.
double CglFlowCover::INFTY_ [private] |
double CglFlowCover::TOLERANCE_ [private] |
If violation of a cut is greater that this number, the cut is useful.
Definition at line 343 of file CglFlowCover.hpp.
bool CglFlowCover::firstProcess_ [mutable, private] |
int CglFlowCover::numRows_ [mutable, private] |
int CglFlowCover::numCols_ [mutable, private] |
The number columns of the problem.
Definition at line 349 of file CglFlowCover.hpp.
Referenced by printVubs().
int CglFlowCover::numFlowCuts_ [static, private] |
The number flow cuts found.
Definition at line 351 of file CglFlowCover.hpp.
Referenced by getNumFlowCuts(), incNumFlowCuts(), and setNumFlowCuts().
bool CglFlowCover::doneInitPre_ [mutable, private] |
Indicate whether initial flow preprecessing has been done.
Definition at line 353 of file CglFlowCover.hpp.
CglFlowVUB* CglFlowCover::vubs_ [mutable, private] |
The array of CglFlowVUBs.
Definition at line 355 of file CglFlowCover.hpp.
Referenced by getVubs(), printVubs(), and setVubs().
CglFlowVLB* CglFlowCover::vlbs_ [mutable, private] |
CglFlowRowType* CglFlowCover::rowTypes_ [mutable, private] |
CglFlowRowType of the rows in model.
Definition at line 359 of file CglFlowCover.hpp.
Referenced by getRowType(), getRowTypes(), and setRowTypes().