#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. | |
int | getNumFlowCuts () |
void | setNumFlowCuts (int fc) |
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 |
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 | |
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.
|
Default constructor.
|
|
Copy constructor.
|
|
Destructor.
|
|
Do the following tasks:.
generateCuts(const OsiSolverInterface & si, OsiCuts & cs) . |
|
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. |
|
Definition at line 178 of file CglFlowCover.hpp. |
|
Definition at line 179 of file CglFlowCover.hpp. References maxNumCuts_. |
|
Definition at line 185 of file CglFlowCover.hpp. |
|
Definition at line 186 of file CglFlowCover.hpp. References numFlowCuts_. |
|
Definition at line 187 of file CglFlowCover.hpp. References numFlowCuts_. |
|
Clone.
Implements CglCutGenerator. |
|
Assignment operator.
|
|
Create C++ lines to get to current state.
Reimplemented from CglCutGenerator. |
|
Based a given row, a LP solution and other model data, this function tries to generate a violated lifted simple generalized flow cover.
|
|
Transform a row from ">=" to "<=", and vice versa.
|
|
Transform a row from ">=" to "<=", and vice versa. Have 'sense'. |
|
Determine the type of a given row.
|
|
Lift functions.
|
|
|
|
Definition at line 268 of file CglFlowCover.hpp. References CglFlowRowType. |
|
Definition at line 270 of file CglFlowCover.hpp. References CglFlowRowType, and rowTypes_. |
|
Set rowtypes, take over the ownership.
Definition at line 273 of file CglFlowCover.hpp. References rowTypes_. |
|
Definition at line 275 of file CglFlowCover.hpp. References rowTypes_. |
|
Definition at line 290 of file CglFlowCover.hpp. |
|
Definition at line 291 of file CglFlowCover.hpp. References vubs_. |
|
Set CglFlowVUBs,take over the ownership.
Definition at line 293 of file CglFlowCover.hpp. References vubs_. |
|
Definition at line 294 of file CglFlowCover.hpp. References vubs_. |
|
Definition at line 304 of file CglFlowCover.hpp. References vubs_. |
|
Definition at line 314 of file CglFlowCover.hpp. References CglFlowVLB. |
|
Definition at line 315 of file CglFlowCover.hpp. References CglFlowVLB, and vlbs_. |
|
Set CglFlowVLBs,take over the ownership.
Definition at line 317 of file CglFlowCover.hpp. References vlbs_. |
|
Definition at line 318 of file CglFlowCover.hpp. References vlbs_. |
|
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. |
|
The maximum number of flow cuts to be generated. Default is 1000. Definition at line 335 of file CglFlowCover.hpp. Referenced by setMaxNumCuts(). |
|
Tolerance used for numerical purpose.
Definition at line 337 of file CglFlowCover.hpp. |
|
The variable upper bound of a flow is not indentified yet.
Definition at line 339 of file CglFlowCover.hpp. |
|
Very large number.
Definition at line 341 of file CglFlowCover.hpp. |
|
If violation of a cut is greater that this number, the cut is useful.
Definition at line 343 of file CglFlowCover.hpp. |
|
First time preprocessing.
Definition at line 345 of file CglFlowCover.hpp. |
|
The number rows of the problem.
Definition at line 347 of file CglFlowCover.hpp. |
|
The number columns of the problem.
Definition at line 349 of file CglFlowCover.hpp. |
|
The number flow cuts found.
Definition at line 351 of file CglFlowCover.hpp. Referenced by incNumFlowCuts(), and setNumFlowCuts(). |
|
Indicate whether initial flow preprecessing has been done.
Definition at line 353 of file CglFlowCover.hpp. |
|
The array of CglFlowVUBs.
Definition at line 355 of file CglFlowCover.hpp. Referenced by getVubs(), printVubs(), and setVubs(). |
|
The array of CglFlowVLBs.
Definition at line 357 of file CglFlowCover.hpp. |
|
CglFlowRowType of the rows in model.
Definition at line 359 of file CglFlowCover.hpp. Referenced by getRowType(), and setRowTypes(). |