CglMixedIntegerRounding2 Class Reference

Mixed Integer Rounding Cut Generator Class. More...

#include <CglMixedIntegerRounding2.hpp>

Inheritance diagram for CglMixedIntegerRounding2:

Inheritance graph
[legend]
Collaboration diagram for CglMixedIntegerRounding2:

Collaboration graph
[legend]
List of all members.

Public Member Functions

Generate Cuts
virtual void generateCuts (const OsiSolverInterface &si, OsiCuts &cs, const CglTreeInfo info=CglTreeInfo()) const
 Generate Mixed Integer Rounding cuts for the model data contained in si.
Constructors and destructors
 CglMixedIntegerRounding2 ()
 Default constructor.
 CglMixedIntegerRounding2 (const int maxaggr, const bool multiply, const int criterion)
 Alternate Constructor.
 CglMixedIntegerRounding2 (const CglMixedIntegerRounding2 &)
 Copy constructor.
virtual CglCutGeneratorclone () const
 Clone.
CglMixedIntegerRounding2operator= (const CglMixedIntegerRounding2 &rhs)
 Assignment operator.
virtual ~CglMixedIntegerRounding2 ()
 Destructor.
virtual void refreshSolver (OsiSolverInterface *solver)
 This can be used to refresh any inforamtion.
virtual std::string generateCpp (FILE *fp)
 Create C++ lines to get to current state.
Set and get methods
void setMAXAGGR_ (int maxaggr)
 Set MAXAGGR_.
int getMAXAGGR_ () const
 Get MAXAGGR_.
void setMULTIPLY_ (bool multiply)
 Set MULTIPLY_.
bool getMULTIPLY_ () const
 Get MULTIPLY_.
void setCRITERION_ (int criterion)
 Set CRITERION_.
int getCRITERION_ () const
 Get CRITERION_.

Private Types

 ROW_UNDEFINED
 ROW_VARUB
 After the row is flipped to 'L', the row has exactly two variables: one is negative binary and the other is a continous, and the RHS is zero.
 ROW_VARLB
 After the row is flipped to 'L', the row has exactly two variables: one is positive binary and the other is a continous, and the RHS is zero.
 ROW_VAREQ
 The row sense is 'E', the row has exactly two variables: one is binary and the other is a continous, and the RHS is zero.
 ROW_MIX
 ROW_CONT
 ROW_INT
 ROW_OTHER
enum  RowType {
  ROW_UNDEFINED, ROW_VARUB, ROW_VARLB, ROW_VAREQ,
  ROW_MIX, ROW_CONT, ROW_INT, ROW_OTHER
}

Private Member Functions

void gutsOfConstruct (const int maxaggr, const bool multiply, const int criterion)
void gutsOfDelete ()
void gutsOfCopy (const CglMixedIntegerRounding2 &rhs)
void mixIntRoundPreprocess (const OsiSolverInterface &si) const
RowType determineRowType (const OsiSolverInterface &si, const int rowLen, const int *ind, const double *coef, const char sense, const double rhs) const
void generateMirCuts (const OsiSolverInterface &si, const double *xlp, const double *colUpperBound, const double *colLowerBound, const CoinPackedMatrix &matrixByRow, const double *LHS, const double *coefByRow, const int *colInds, const int *rowStarts, const int *rowLengths, const CoinPackedMatrix &matrixByCol, const double *coefByCol, const int *rowInds, const int *colStarts, const int *colLengths, OsiCuts &cs) const
void copyRowSelected (const int iAggregate, const int rowSelected, std::set< int > &setRowsAggregated, int *listRowsAggregated, double *xlpExtra, const char sen, const double rhs, const double lhs, const CoinPackedMatrix &matrixByRow, CoinIndexedVector &rowToAggregate, double &rhsToAggregate) const
bool selectRowToAggregate (const OsiSolverInterface &si, const CoinIndexedVector &rowAggregated, const double *colUpperBound, const double *colLowerBound, const std::set< int > &setRowsAggregated, const double *xlp, const double *coefByCol, const int *rowInds, const int *colStarts, const int *colLengths, int &rowSelected, int &colSelected) const
void aggregateRow (const int colSelected, CoinIndexedVector &rowToAggregate, double rhs, CoinIndexedVector &rowAggregated, double &rhsAggregated) const
bool isLowerSubst (const double inf, const double aj, const double xlp, const double LB, const double UB) const
bool boundSubstitution (const OsiSolverInterface &si, const CoinIndexedVector &rowAggregated, const double *xlp, const double *xlpExtra, const double *colUpperBound, const double *colLowerBound, CoinIndexedVector &mixedKnapsack, double &rhsMixedKnapsack, double &sStar, CoinIndexedVector &contVariablesInS) const
bool cMirSeparation (const OsiSolverInterface &si, const CoinPackedMatrix &matrixByRow, const CoinIndexedVector &rowAggregated, const int *listRowsAggregated, const char *sense, const double *RHS, const double *coefByRow, const int *colInds, const int *rowStarts, const int *rowLengths, const double *xlp, const double sStar, const double *colUpperBound, const double *colLowerBound, const CoinIndexedVector &mixedKnapsack, const double &rhsMixedKnapsack, const CoinIndexedVector &contVariablesInS, CoinIndexedVector *workVector, OsiRowCut &flowCut) const
void cMirInequality (const int numInt, const double delta, const double numeratorBeta, const int *knapsackIndices, const double *knapsackElements, const double *xlp, const double sStar, const double *colUpperBound, const std::set< int > &setC, CoinIndexedVector &cMIR, double &rhscMIR, double &sCoef, double &violation) const
double functionG (const double d, const double f) const
void printStats (std::ofstream &fout, const bool hasCut, const OsiSolverInterface &si, const CoinIndexedVector &rowAggregated, const double &rhsAggregated, const double *xlp, const double *xlpExtra, const int *listRowsAggregated, const int *listColsSelected, const int level, const double *colUpperBound, const double *colLowerBound) const

Private Attributes

int MAXAGGR_
bool MULTIPLY_
int CRITERION_
double EPSILON_
int UNDEFINED_
 There is no variable upper bound or variable lower bound defined.
double TOLERANCE_
int numRows_
int numCols_
bool doneInitPre_
CglMixIntRoundVUB2vubs_
CglMixIntRoundVLB2vlbs_
RowTyperowTypes_
int * indRows_
int numRowMix_
int * indRowMix_
int numRowCont_
int * indRowCont_
int numRowInt_
int * indRowInt_
int numRowContVB_
int * indRowContVB_
char * integerType_
char * sense_
double * RHS_

Friends

void CglMixedIntegerRounding2UnitTest (const OsiSolverInterface *siP, const std::string mpdDir)

Detailed Description

Mixed Integer Rounding Cut Generator Class.

Definition at line 87 of file CglMixedIntegerRounding2.hpp.


Member Enumeration Documentation

enum CglMixedIntegerRounding2::RowType [private]

Enumerator:
ROW_UNDEFINED 
ROW_VARUB  After the row is flipped to 'L', the row has exactly two variables: one is negative binary and the other is a continous, and the RHS is zero.
ROW_VARLB  After the row is flipped to 'L', the row has exactly two variables: one is positive binary and the other is a continous, and the RHS is zero.
ROW_VAREQ  The row sense is 'E', the row has exactly two variables: one is binary and the other is a continous, and the RHS is zero.
ROW_MIX 
ROW_CONT 
ROW_INT 
ROW_OTHER 

Definition at line 96 of file CglMixedIntegerRounding2.hpp.


Constructor & Destructor Documentation

CglMixedIntegerRounding2::CglMixedIntegerRounding2 (  ) 

Default constructor.

CglMixedIntegerRounding2::CglMixedIntegerRounding2 ( const int  maxaggr,
const bool  multiply,
const int  criterion 
)

Alternate Constructor.

CglMixedIntegerRounding2::CglMixedIntegerRounding2 ( const CglMixedIntegerRounding2  ) 

Copy constructor.

virtual CglMixedIntegerRounding2::~CglMixedIntegerRounding2 (  )  [virtual]

Destructor.


Member Function Documentation

virtual void CglMixedIntegerRounding2::generateCuts ( const OsiSolverInterface si,
OsiCuts cs,
const CglTreeInfo  info = CglTreeInfo() 
) const [virtual]

Generate Mixed Integer Rounding cuts for the model data contained in si.

The generated cuts are inserted in the collection of cuts cs.

Implements CglCutGenerator.

virtual CglCutGenerator* CglMixedIntegerRounding2::clone (  )  const [virtual]

Clone.

Implements CglCutGenerator.

CglMixedIntegerRounding2& CglMixedIntegerRounding2::operator= ( const CglMixedIntegerRounding2 rhs  ) 

Assignment operator.

virtual void CglMixedIntegerRounding2::refreshSolver ( OsiSolverInterface solver  )  [virtual]

This can be used to refresh any inforamtion.

Reimplemented from CglCutGenerator.

virtual std::string CglMixedIntegerRounding2::generateCpp ( FILE *  fp  )  [virtual]

Create C++ lines to get to current state.

Reimplemented from CglCutGenerator.

void CglMixedIntegerRounding2::setMAXAGGR_ ( int  maxaggr  )  [inline]

Set MAXAGGR_.

Definition at line 170 of file CglMixedIntegerRounding2.hpp.

References MAXAGGR_.

int CglMixedIntegerRounding2::getMAXAGGR_ (  )  const [inline]

Get MAXAGGR_.

Definition at line 181 of file CglMixedIntegerRounding2.hpp.

References MAXAGGR_.

void CglMixedIntegerRounding2::setMULTIPLY_ ( bool  multiply  )  [inline]

Set MULTIPLY_.

Definition at line 184 of file CglMixedIntegerRounding2.hpp.

References MULTIPLY_.

bool CglMixedIntegerRounding2::getMULTIPLY_ (  )  const [inline]

Get MULTIPLY_.

Definition at line 187 of file CglMixedIntegerRounding2.hpp.

References MULTIPLY_.

void CglMixedIntegerRounding2::setCRITERION_ ( int  criterion  )  [inline]

Set CRITERION_.

Definition at line 190 of file CglMixedIntegerRounding2.hpp.

References CRITERION_.

int CglMixedIntegerRounding2::getCRITERION_ (  )  const [inline]

Get CRITERION_.

Definition at line 201 of file CglMixedIntegerRounding2.hpp.

References CRITERION_.

void CglMixedIntegerRounding2::gutsOfConstruct ( const int  maxaggr,
const bool  multiply,
const int  criterion 
) [private]

void CglMixedIntegerRounding2::gutsOfDelete (  )  [private]

void CglMixedIntegerRounding2::gutsOfCopy ( const CglMixedIntegerRounding2 rhs  )  [private]

void CglMixedIntegerRounding2::mixIntRoundPreprocess ( const OsiSolverInterface si  )  const [private]

RowType CglMixedIntegerRounding2::determineRowType ( const OsiSolverInterface si,
const int  rowLen,
const int *  ind,
const double *  coef,
const char  sense,
const double  rhs 
) const [private]

void CglMixedIntegerRounding2::generateMirCuts ( const OsiSolverInterface si,
const double *  xlp,
const double *  colUpperBound,
const double *  colLowerBound,
const CoinPackedMatrix matrixByRow,
const double *  LHS,
const double *  coefByRow,
const int *  colInds,
const int *  rowStarts,
const int *  rowLengths,
const CoinPackedMatrix matrixByCol,
const double *  coefByCol,
const int *  rowInds,
const int *  colStarts,
const int *  colLengths,
OsiCuts cs 
) const [private]

void CglMixedIntegerRounding2::copyRowSelected ( const int  iAggregate,
const int  rowSelected,
std::set< int > &  setRowsAggregated,
int *  listRowsAggregated,
double *  xlpExtra,
const char  sen,
const double  rhs,
const double  lhs,
const CoinPackedMatrix matrixByRow,
CoinIndexedVector rowToAggregate,
double &  rhsToAggregate 
) const [private]

bool CglMixedIntegerRounding2::selectRowToAggregate ( const OsiSolverInterface si,
const CoinIndexedVector rowAggregated,
const double *  colUpperBound,
const double *  colLowerBound,
const std::set< int > &  setRowsAggregated,
const double *  xlp,
const double *  coefByCol,
const int *  rowInds,
const int *  colStarts,
const int *  colLengths,
int &  rowSelected,
int &  colSelected 
) const [private]

void CglMixedIntegerRounding2::aggregateRow ( const int  colSelected,
CoinIndexedVector rowToAggregate,
double  rhs,
CoinIndexedVector rowAggregated,
double &  rhsAggregated 
) const [private]

bool CglMixedIntegerRounding2::isLowerSubst ( const double  inf,
const double  aj,
const double  xlp,
const double  LB,
const double  UB 
) const [inline, private]

bool CglMixedIntegerRounding2::boundSubstitution ( const OsiSolverInterface si,
const CoinIndexedVector rowAggregated,
const double *  xlp,
const double *  xlpExtra,
const double *  colUpperBound,
const double *  colLowerBound,
CoinIndexedVector mixedKnapsack,
double &  rhsMixedKnapsack,
double &  sStar,
CoinIndexedVector contVariablesInS 
) const [private]

bool CglMixedIntegerRounding2::cMirSeparation ( const OsiSolverInterface si,
const CoinPackedMatrix matrixByRow,
const CoinIndexedVector rowAggregated,
const int *  listRowsAggregated,
const char *  sense,
const double *  RHS,
const double *  coefByRow,
const int *  colInds,
const int *  rowStarts,
const int *  rowLengths,
const double *  xlp,
const double  sStar,
const double *  colUpperBound,
const double *  colLowerBound,
const CoinIndexedVector mixedKnapsack,
const double &  rhsMixedKnapsack,
const CoinIndexedVector contVariablesInS,
CoinIndexedVector workVector,
OsiRowCut flowCut 
) const [private]

void CglMixedIntegerRounding2::cMirInequality ( const int  numInt,
const double  delta,
const double  numeratorBeta,
const int *  knapsackIndices,
const double *  knapsackElements,
const double *  xlp,
const double  sStar,
const double *  colUpperBound,
const std::set< int > &  setC,
CoinIndexedVector cMIR,
double &  rhscMIR,
double &  sCoef,
double &  violation 
) const [private]

double CglMixedIntegerRounding2::functionG ( const double  d,
const double  f 
) const [inline, private]

void CglMixedIntegerRounding2::printStats ( std::ofstream &  fout,
const bool  hasCut,
const OsiSolverInterface si,
const CoinIndexedVector rowAggregated,
const double &  rhsAggregated,
const double *  xlp,
const double *  xlpExtra,
const int *  listRowsAggregated,
const int *  listColsSelected,
const int  level,
const double *  colUpperBound,
const double *  colLowerBound 
) const [private]


Friends And Related Function Documentation

void CglMixedIntegerRounding2UnitTest ( const OsiSolverInterface siP,
const std::string  mpdDir 
) [friend]


Member Data Documentation

int CglMixedIntegerRounding2::MAXAGGR_ [private]

Definition at line 355 of file CglMixedIntegerRounding2.hpp.

Referenced by getMAXAGGR_(), and setMAXAGGR_().

bool CglMixedIntegerRounding2::MULTIPLY_ [private]

Definition at line 357 of file CglMixedIntegerRounding2.hpp.

Referenced by getMULTIPLY_(), and setMULTIPLY_().

int CglMixedIntegerRounding2::CRITERION_ [private]

Definition at line 359 of file CglMixedIntegerRounding2.hpp.

Referenced by getCRITERION_(), and setCRITERION_().

double CglMixedIntegerRounding2::EPSILON_ [private]

Definition at line 361 of file CglMixedIntegerRounding2.hpp.

int CglMixedIntegerRounding2::UNDEFINED_ [private]

There is no variable upper bound or variable lower bound defined.

Definition at line 363 of file CglMixedIntegerRounding2.hpp.

double CglMixedIntegerRounding2::TOLERANCE_ [private]

Definition at line 365 of file CglMixedIntegerRounding2.hpp.

int CglMixedIntegerRounding2::numRows_ [mutable, private]

Definition at line 367 of file CglMixedIntegerRounding2.hpp.

int CglMixedIntegerRounding2::numCols_ [mutable, private]

Definition at line 369 of file CglMixedIntegerRounding2.hpp.

bool CglMixedIntegerRounding2::doneInitPre_ [mutable, private]

Definition at line 371 of file CglMixedIntegerRounding2.hpp.

CglMixIntRoundVUB2* CglMixedIntegerRounding2::vubs_ [mutable, private]

Definition at line 373 of file CglMixedIntegerRounding2.hpp.

CglMixIntRoundVLB2* CglMixedIntegerRounding2::vlbs_ [mutable, private]

Definition at line 375 of file CglMixedIntegerRounding2.hpp.

RowType* CglMixedIntegerRounding2::rowTypes_ [mutable, private]

Definition at line 377 of file CglMixedIntegerRounding2.hpp.

int* CglMixedIntegerRounding2::indRows_ [mutable, private]

Definition at line 379 of file CglMixedIntegerRounding2.hpp.

int CglMixedIntegerRounding2::numRowMix_ [mutable, private]

Definition at line 381 of file CglMixedIntegerRounding2.hpp.

int* CglMixedIntegerRounding2::indRowMix_ [mutable, private]

Definition at line 383 of file CglMixedIntegerRounding2.hpp.

int CglMixedIntegerRounding2::numRowCont_ [mutable, private]

Definition at line 385 of file CglMixedIntegerRounding2.hpp.

int* CglMixedIntegerRounding2::indRowCont_ [mutable, private]

Definition at line 387 of file CglMixedIntegerRounding2.hpp.

int CglMixedIntegerRounding2::numRowInt_ [mutable, private]

Definition at line 389 of file CglMixedIntegerRounding2.hpp.

int* CglMixedIntegerRounding2::indRowInt_ [mutable, private]

Definition at line 391 of file CglMixedIntegerRounding2.hpp.

int CglMixedIntegerRounding2::numRowContVB_ [mutable, private]

Definition at line 394 of file CglMixedIntegerRounding2.hpp.

int* CglMixedIntegerRounding2::indRowContVB_ [mutable, private]

Definition at line 397 of file CglMixedIntegerRounding2.hpp.

char* CglMixedIntegerRounding2::integerType_ [mutable, private]

Definition at line 399 of file CglMixedIntegerRounding2.hpp.

char* CglMixedIntegerRounding2::sense_ [mutable, private]

Definition at line 401 of file CglMixedIntegerRounding2.hpp.

double* CglMixedIntegerRounding2::RHS_ [mutable, private]

Definition at line 403 of file CglMixedIntegerRounding2.hpp.


The documentation for this class was generated from the following file:
Generated on Thu May 15 22:00:13 2008 by  doxygen 1.4.7