Cbc  2.10.5
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Member Functions | Private Member Functions | Private Attributes | Friends | List of all members
CglFlowCover Class Reference

Lifed Simple Generalized Flow Cover Cut Generator Class. More...

#include <CglFlowCover.hpp>

+ Inheritance diagram for CglFlowCover:
+ Collaboration diagram for CglFlowCover:

Public Member Functions

void flowPreprocess (const OsiSolverInterface &si)
 Do the following tasks: More...
 
Generate Cuts
virtual void generateCuts (const OsiSolverInterface &si, OsiCuts &cs, const CglTreeInfo info=CglTreeInfo())
 Generate Lifed Simple Generalized flow cover cuts for the model data contained in si. More...
 
Functions to query and set maximum number of cuts can be

generated.

int getMaxNumCuts () const
 
void setMaxNumCuts (int mc)
 
Functions to query and set the number of cuts have been

generated.

int getNumFlowCuts ()
 
void setNumFlowCuts (int fc)
 
void incNumFlowCuts (int fc=1)
 
Constructors and destructors
 CglFlowCover ()
 Default constructor. More...
 
 CglFlowCover (const CglFlowCover &)
 Copy constructor. More...
 
virtual CglCutGeneratorclone () const
 Clone. More...
 
CglFlowCoveroperator= (const CglFlowCover &rhs)
 Assignment operator. More...
 
virtual ~CglFlowCover ()
 Destructor. More...
 
virtual std::string generateCpp (FILE *fp)
 Create C++ lines to get to current state. More...
 
- Public Member Functions inherited from CglCutGenerator
 CglCutGenerator ()
 Default constructor. More...
 
 CglCutGenerator (const CglCutGenerator &)
 Copy constructor. More...
 
CglCutGeneratoroperator= (const CglCutGenerator &rhs)
 Assignment operator. More...
 
virtual ~CglCutGenerator ()
 Destructor. More...
 
virtual void refreshSolver (OsiSolverInterface *)
 This can be used to refresh any information. More...
 
int getAggressiveness () const
 Get Aggressiveness - 0 = neutral, 100 is normal root node. More...
 
void setAggressiveness (int value)
 Set Aggressiveness - 0 = neutral, 100 is normal root node. More...
 
void setGlobalCuts (bool trueOrFalse)
 Set whether can do global cuts. More...
 
bool canDoGlobalCuts () const
 Say whether can do global cuts. More...
 
virtual bool mayGenerateRowCutsInTree () const
 Returns true if may generate Row cuts in tree (rather than root node). More...
 
virtual bool needsOptimalBasis () const
 Return true if needs optimal basis to do cuts. More...
 
virtual int maximumLengthOfCutInTree () const
 Return maximum length of cut in tree. More...
 

Private Member Functions

bool generateOneFlowCut (const OsiSolverInterface &si, const int rowLen, int *ind, double *coef, char sense, double rhs, OsiRowCut &flowCut, double &violation)
 Based a given row, a LP solution and other model data, this function tries to generate a violated lifted simple generalized flow cover. More...
 
void flipRow (int rowLen, double *coef, double &rhs) const
 Transform a row from ">=" to "<=", and vice versa. More...
 
void flipRow (int rowLen, double *coef, char &sen, double &rhs) const
 Transform a row from ">=" to "<=", and vice versa. More...
 
CglFlowRowType determineOneRowType (const OsiSolverInterface &si, int rowLen, int *ind, double *coef, char sen, double rhs) const
 Determine the type of a given row. More...
 
void liftMinus (double &movement, int t, int r, double z, double dPrimePrime, double lambda, double ml, double *M, double *rho) const
 Lift functions. More...
 
bool liftPlus (double &alpha, double &beta, int r, double m_j, double lambda, double y_j, double x_j, double dPrimePrime, double *M) const
 
const CglFlowRowTypegetRowTypes () const
 
CglFlowRowType getRowType (const int i) const
 
void setRowTypes (CglFlowRowType *rt)
 Set rowtypes, take over the ownership. More...
 
void setRowTypes (const CglFlowRowType rt, const int i)
 
const CglFlowVUBgetVubs () const
 
const CglFlowVUBgetVubs (int i) const
 
void setVubs (CglFlowVUB *vubs)
 Set CglFlowVUBs,take over the ownership. More...
 
void setVubs (const CglFlowVUB &vub, int i)
 
void printVubs (std::ostream &os) const
 
const CglFlowVLBgetVlbs () const
 
const CglFlowVLBgetVlbs (int i) const
 
void setVlbs (CglFlowVLB *vlbs)
 Set CglFlowVLBs,take over the ownership. More...
 
void setVlbs (const CglFlowVLB &vlb, int i)
 

Private Attributes

int maxNumCuts_
 The maximum number of flow cuts to be generated. More...
 
double EPSILON_
 Tolerance used for numerical purpose. More...
 
int UNDEFINED_
 The variable upper bound of a flow is not indentified yet. More...
 
double INFTY_
 Very large number. More...
 
double TOLERANCE_
 If violation of a cut is greater that this number, the cut is useful. More...
 
bool firstProcess_
 First time preprocessing. More...
 
int numRows_
 The number rows of the problem. More...
 
int numCols_
 The number columns of the problem. More...
 
int numFlowCuts_
 The number flow cuts found. More...
 
bool doneInitPre_
 Indicate whether initial flow preprecessing has been done. More...
 
CglFlowVUBvubs_
 The array of CglFlowVUBs. More...
 
CglFlowVLBvlbs_
 The array of CglFlowVLBs. More...
 
CglFlowRowTyperowTypes_
 CglFlowRowType of the rows in model. More...
 

Friends

void CglFlowCoverUnitTest (const OsiSolverInterface *siP, const std::string mpdDir)
 A function that tests the methods in the CglFlowCover class. More...
 

Additional Inherited Members

- Public Attributes inherited from CglCutGenerator
int aggressive_
 Aggressiveness - 0 = neutral, 100 is normal root node. More...
 
bool canDoGlobalCuts_
 True if can do global cuts i.e. no general integers. More...
 

Detailed Description

Lifed Simple Generalized Flow Cover Cut Generator Class.

Definition at line 148 of file CglFlowCover.hpp.

Constructor & Destructor Documentation

CglFlowCover::CglFlowCover ( )

Default constructor.

CglFlowCover::CglFlowCover ( const CglFlowCover )

Copy constructor.

virtual CglFlowCover::~CglFlowCover ( )
virtual

Destructor.

Member Function Documentation

void CglFlowCover::flowPreprocess ( const OsiSolverInterface si)

Do the following tasks:

  • classify row types
  • indentify vubs and vlbs

This function is called by generateCuts(const OsiSolverInterface & si, OsiCuts & cs).

virtual void CglFlowCover::generateCuts ( const OsiSolverInterface si,
OsiCuts cs,
const CglTreeInfo  info = CglTreeInfo() 
)
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.

int CglFlowCover::getNumFlowCuts ( )
inline

Definition at line 185 of file CglFlowCover.hpp.

void CglFlowCover::setNumFlowCuts ( int  fc)
inline

Definition at line 186 of file CglFlowCover.hpp.

void CglFlowCover::incNumFlowCuts ( int  fc = 1)
inline

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.

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 
)
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.

bool 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
inlineprivate

Definition at line 268 of file CglFlowCover.hpp.

CglFlowRowType CglFlowCover::getRowType ( const int  i) const
inlineprivate

Definition at line 270 of file CglFlowCover.hpp.

void CglFlowCover::setRowTypes ( CglFlowRowType rt)
inlineprivate

Set rowtypes, take over the ownership.

Definition at line 273 of file CglFlowCover.hpp.

void CglFlowCover::setRowTypes ( const CglFlowRowType  rt,
const int  i 
)
inlineprivate

Definition at line 275 of file CglFlowCover.hpp.

const CglFlowVUB* CglFlowCover::getVubs ( ) const
inlineprivate

Definition at line 290 of file CglFlowCover.hpp.

const CglFlowVUB& CglFlowCover::getVubs ( int  i) const
inlineprivate

Definition at line 291 of file CglFlowCover.hpp.

void CglFlowCover::setVubs ( CglFlowVUB vubs)
inlineprivate

Set CglFlowVUBs,take over the ownership.

Definition at line 293 of file CglFlowCover.hpp.

void CglFlowCover::setVubs ( const CglFlowVUB vub,
int  i 
)
inlineprivate

Definition at line 294 of file CglFlowCover.hpp.

void CglFlowCover::printVubs ( std::ostream &  os) const
inlineprivate

Definition at line 304 of file CglFlowCover.hpp.

const CglFlowVLB* CglFlowCover::getVlbs ( ) const
inlineprivate

Definition at line 314 of file CglFlowCover.hpp.

const CglFlowVLB& CglFlowCover::getVlbs ( int  i) const
inlineprivate

Definition at line 315 of file CglFlowCover.hpp.

void CglFlowCover::setVlbs ( CglFlowVLB vlbs)
inlineprivate

Set CglFlowVLBs,take over the ownership.

Definition at line 317 of file CglFlowCover.hpp.

void CglFlowCover::setVlbs ( const CglFlowVLB vlb,
int  i 
)
inlineprivate

Definition at line 318 of file CglFlowCover.hpp.

Friends And Related Function Documentation

void CglFlowCoverUnitTest ( const OsiSolverInterface siP,
const std::string  mpdDir 
)
friend

A function that tests the methods in the CglFlowCover 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.

Member Data Documentation

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_
private

First time preprocessing.

Definition at line 345 of file CglFlowCover.hpp.

int CglFlowCover::numRows_
private

The number rows of the problem.

Definition at line 347 of file CglFlowCover.hpp.

int CglFlowCover::numCols_
private

The number columns of the problem.

Definition at line 349 of file CglFlowCover.hpp.

int CglFlowCover::numFlowCuts_
private

The number flow cuts found.

Definition at line 351 of file CglFlowCover.hpp.

bool CglFlowCover::doneInitPre_
private

Indicate whether initial flow preprecessing has been done.

Definition at line 353 of file CglFlowCover.hpp.

CglFlowVUB* CglFlowCover::vubs_
private

The array of CglFlowVUBs.

Definition at line 355 of file CglFlowCover.hpp.

CglFlowVLB* CglFlowCover::vlbs_
private

The array of CglFlowVLBs.

Definition at line 357 of file CglFlowCover.hpp.

CglFlowRowType* CglFlowCover::rowTypes_
private

CglFlowRowType of the rows in model.

Definition at line 359 of file CglFlowCover.hpp.


The documentation for this class was generated from the following file: