Main Page | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Class Members | File Members

CglFlowCover Class Reference

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

#include <CglFlowCover.hpp>

Inheritance diagram for CglFlowCover:

CglCutGenerator List of all members.

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 CglCutGeneratorclone () const
 Clone.
CglFlowCoveroperator= (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 CglFlowRowTypegetRowTypes () 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 CglFlowVUBgetVubs () const
const CglFlowVUBgetVubs (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 CglFlowVLBgetVlbs () const
const CglFlowVLBgetVlbs (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.
CglFlowVUBvubs_
 The array of CglFlowVUBs.
CglFlowVLBvlbs_
 The array of CglFlowVLBs.
CglFlowRowTyperowTypes_
 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.

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

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

References maxNumCuts_.

int CglFlowCover::getNumFlowCuts  )  [inline, static]
 

Definition at line 185 of file CglFlowCover.hpp.

void CglFlowCover::setNumFlowCuts int  fc  )  [inline, static]
 

Definition at line 186 of file CglFlowCover.hpp.

References numFlowCuts_.

void CglFlowCover::incNumFlowCuts int  fc = 1  )  [inline, static]
 

Definition at line 187 of file CglFlowCover.hpp.

References numFlowCuts_.

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
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]
 

Definition at line 268 of file CglFlowCover.hpp.

References CglFlowRowType.

const CglFlowRowType CglFlowCover::getRowType const int  i  )  const [inline, private]
 

Definition at line 270 of file CglFlowCover.hpp.

References CglFlowRowType, and rowTypes_.

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]
 

Definition at line 275 of file CglFlowCover.hpp.

References rowTypes_.

const CglFlowVUB* CglFlowCover::getVubs  )  const [inline, private]
 

Definition at line 290 of file CglFlowCover.hpp.

const CglFlowVUB& CglFlowCover::getVubs int  i  )  const [inline, private]
 

Definition at line 291 of file CglFlowCover.hpp.

References vubs_.

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]
 

Definition at line 294 of file CglFlowCover.hpp.

References vubs_.

void CglFlowCover::printVubs std::ostream &  os  )  const [inline, private]
 

Definition at line 304 of file CglFlowCover.hpp.

References vubs_.

const CglFlowVLB* CglFlowCover::getVlbs  )  const [inline, private]
 

Definition at line 314 of file CglFlowCover.hpp.

References CglFlowVLB.

const CglFlowVLB& CglFlowCover::getVlbs int  i  )  const [inline, private]
 

Definition at line 315 of file CglFlowCover.hpp.

References CglFlowVLB, and vlbs_.

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]
 

Definition at line 318 of file CglFlowCover.hpp.

References vlbs_.


Friends And Related Function Documentation

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.


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.

Referenced by setMaxNumCuts().

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.

Referenced by 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]
 

The array of CglFlowVLBs.

Definition at line 357 of file CglFlowCover.hpp.

Referenced by getVlbs(), and setVlbs().

CglFlowRowType* CglFlowCover::rowTypes_ [mutable, private]
 

CglFlowRowType of the rows in model.

Definition at line 359 of file CglFlowCover.hpp.

Referenced by getRowType(), and setRowTypes().


The documentation for this class was generated from the following file:
Generated on Sun Jun 11 02:00:51 2006 by  doxygen 1.3.9.1