Lifed Simple Generalized Flow Cover Cut Generator Class. More...
#include <CglFlowCover.hpp>


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 | |
| 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 | |
| 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 |
| Set rowtypes, take over the ownership. | |
| CglFlowRowType | getRowType (const int i) const |
| Set rowtypes, take over the ownership. | |
| void | setRowTypes (CglFlowRowType *rt) |
| Set rowtypes, take over the ownership. | |
| void | setRowTypes (const CglFlowRowType rt, const int i) |
| Set rowtypes, take over the ownership. | |
| const CglFlowVUB * | getVubs () const |
| Set rowtypes, take over the ownership. | |
| const CglFlowVUB & | getVubs (int i) const |
| Set rowtypes, take over the ownership. | |
| void | setVubs (CglFlowVUB *vubs) |
| Set CglFlowVUBs,take over the ownership. | |
| void | setVubs (const CglFlowVUB &vub, int i) |
| Set rowtypes, take over the ownership. | |
| void | printVubs (std::ostream &os) const |
| Set rowtypes, take over the ownership. | |
| const CglFlowVLB * | getVlbs () const |
| Set rowtypes, take over the ownership. | |
| const CglFlowVLB & | getVlbs (int i) const |
| Set rowtypes, take over the ownership. | |
| void | setVlbs (CglFlowVLB *vlbs) |
| Set CglFlowVLBs,take over the ownership. | |
| void | setVlbs (const CglFlowVLB &vlb, int i) |
| Set rowtypes, take over the ownership. | |
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. | |
Lifed Simple Generalized Flow Cover Cut Generator 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:.
This function is called by 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] |
Definition at line 178 of file CglFlowCover.hpp.
| void CglFlowCover::setMaxNumCuts | ( | int | mc | ) | [inline] |
Definition at line 179 of file CglFlowCover.hpp.
| static int CglFlowCover::getNumFlowCuts | ( | ) | [inline, static] |
Definition at line 185 of file CglFlowCover.hpp.
| static void CglFlowCover::setNumFlowCuts | ( | int | fc | ) | [inline, static] |
Definition at line 186 of file CglFlowCover.hpp.
| static void CglFlowCover::incNumFlowCuts | ( | int | fc = 1 |
) | [inline, static] |
Definition at line 187 of file CglFlowCover.hpp.
| virtual CglCutGenerator* CglFlowCover::clone | ( | ) | const [virtual] |
Clone.
Implements CglCutGenerator.
| CglFlowCover& CglFlowCover::operator= | ( | const CglFlowCover & | rhs | ) |
Assignment operator.
Reimplemented from CglCutGenerator.
| virtual std::string CglFlowCover::generateCpp | ( | FILE * | fp | ) | [virtual] |
Create C++ lines to get to current state.
Reimplemented from CglCutGenerator.
| 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] |
Set rowtypes, take over the ownership.
Definition at line 268 of file CglFlowCover.hpp.
| CglFlowRowType CglFlowCover::getRowType | ( | const int | i | ) | const [inline, private] |
Set rowtypes, take over the ownership.
Definition at line 270 of file CglFlowCover.hpp.
| void CglFlowCover::setRowTypes | ( | CglFlowRowType * | rt | ) | [inline, private] |
Set rowtypes, take over the ownership.
Definition at line 273 of file CglFlowCover.hpp.
| void CglFlowCover::setRowTypes | ( | const CglFlowRowType | rt, | |
| const int | i | |||
| ) | [inline, private] |
Set rowtypes, take over the ownership.
Definition at line 275 of file CglFlowCover.hpp.
| const CglFlowVUB* CglFlowCover::getVubs | ( | ) | const [inline, private] |
Set rowtypes, take over the ownership.
Definition at line 290 of file CglFlowCover.hpp.
| const CglFlowVUB& CglFlowCover::getVubs | ( | int | i | ) | const [inline, private] |
Set rowtypes, take over the ownership.
Definition at line 291 of file CglFlowCover.hpp.
| void CglFlowCover::setVubs | ( | CglFlowVUB * | vubs | ) | [inline, private] |
Set CglFlowVUBs,take over the ownership.
Definition at line 293 of file CglFlowCover.hpp.
| void CglFlowCover::setVubs | ( | const CglFlowVUB & | vub, | |
| int | i | |||
| ) | [inline, private] |
Set rowtypes, take over the ownership.
Definition at line 294 of file CglFlowCover.hpp.
| void CglFlowCover::printVubs | ( | std::ostream & | os | ) | const [inline, private] |
Set rowtypes, take over the ownership.
Definition at line 304 of file CglFlowCover.hpp.
| const CglFlowVLB* CglFlowCover::getVlbs | ( | ) | const [inline, private] |
Set rowtypes, take over the ownership.
Definition at line 314 of file CglFlowCover.hpp.
| const CglFlowVLB& CglFlowCover::getVlbs | ( | int | i | ) | const [inline, private] |
Set rowtypes, take over the ownership.
Definition at line 315 of file CglFlowCover.hpp.
| void CglFlowCover::setVlbs | ( | CglFlowVLB * | vlbs | ) | [inline, private] |
Set CglFlowVLBs,take over the ownership.
Definition at line 317 of file CglFlowCover.hpp.
| void CglFlowCover::setVlbs | ( | const CglFlowVLB & | vlb, | |
| int | i | |||
| ) | [inline, private] |
Set rowtypes, take over the ownership.
Definition at line 318 of file CglFlowCover.hpp.
| 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.
double CglFlowCover::EPSILON_ [private] |
Tolerance used for numerical purpose.
Definition at line 337 of file CglFlowCover.hpp.
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] |
Very large number.
Definition at line 341 of file CglFlowCover.hpp.
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] |
First time preprocessing.
Definition at line 345 of file CglFlowCover.hpp.
int CglFlowCover::numRows_ [mutable, private] |
The number rows of the problem.
Definition at line 347 of file CglFlowCover.hpp.
int CglFlowCover::numCols_ [mutable, private] |
The number columns of the problem.
Definition at line 349 of file CglFlowCover.hpp.
int CglFlowCover::numFlowCuts_ [static, private] |
The number flow cuts found.
Definition at line 351 of file CglFlowCover.hpp.
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.
CglFlowVLB* CglFlowCover::vlbs_ [mutable, private] |
The array of CglFlowVLBs.
Definition at line 357 of file CglFlowCover.hpp.
CglFlowRowType* CglFlowCover::rowTypes_ [mutable, private] |
CglFlowRowType of the rows in model.
Definition at line 359 of file CglFlowCover.hpp.
1.6.1