Mixed Integer Rounding Cut Generator Class. More...
#include <CglMixedIntegerRounding2.hpp>
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, const int preproc=-1) | |
Alternate Constructor. | |
CglMixedIntegerRounding2 (const CglMixedIntegerRounding2 &) | |
Copy constructor. | |
virtual CglCutGenerator * | clone () const |
Clone. | |
CglMixedIntegerRounding2 & | operator= (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_. | |
void | setDoPreproc (int value) |
Set doPreproc. | |
bool | getDoPreproc () const |
Get doPreproc. | |
Private Types | |
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, const int preproc) |
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, CoinIndexedVector &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 CoinIndexedVector &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 CoinIndexedVector &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 | doPreproc_ |
Controls the preprocessing of the matrix to identify rows suitable for cut generation. | |
int | numRows_ |
int | numCols_ |
bool | doneInitPre_ |
CglMixIntRoundVUB2 * | vubs_ |
CglMixIntRoundVLB2 * | vlbs_ |
RowType * | rowTypes_ |
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) |
Mixed Integer Rounding Cut Generator Class.
Definition at line 87 of file CglMixedIntegerRounding2.hpp.
enum CglMixedIntegerRounding2::RowType [private] |
Definition at line 96 of file CglMixedIntegerRounding2.hpp.
CglMixedIntegerRounding2::CglMixedIntegerRounding2 | ( | ) |
Default constructor.
CglMixedIntegerRounding2::CglMixedIntegerRounding2 | ( | const int | maxaggr, | |
const bool | multiply, | |||
const int | criterion, | |||
const int | preproc = -1 | |||
) |
Alternate Constructor.
CglMixedIntegerRounding2::CglMixedIntegerRounding2 | ( | const CglMixedIntegerRounding2 & | ) |
Copy constructor.
virtual CglMixedIntegerRounding2::~CglMixedIntegerRounding2 | ( | ) | [virtual] |
Destructor.
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.
Reimplemented from CglCutGenerator.
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 171 of file CglMixedIntegerRounding2.hpp.
int CglMixedIntegerRounding2::getMAXAGGR_ | ( | ) | const [inline] |
Get MAXAGGR_.
Definition at line 182 of file CglMixedIntegerRounding2.hpp.
void CglMixedIntegerRounding2::setMULTIPLY_ | ( | bool | multiply | ) | [inline] |
Set MULTIPLY_.
Definition at line 185 of file CglMixedIntegerRounding2.hpp.
bool CglMixedIntegerRounding2::getMULTIPLY_ | ( | ) | const [inline] |
Get MULTIPLY_.
Definition at line 188 of file CglMixedIntegerRounding2.hpp.
void CglMixedIntegerRounding2::setCRITERION_ | ( | int | criterion | ) | [inline] |
Set CRITERION_.
Definition at line 191 of file CglMixedIntegerRounding2.hpp.
int CglMixedIntegerRounding2::getCRITERION_ | ( | ) | const [inline] |
Get CRITERION_.
Definition at line 202 of file CglMixedIntegerRounding2.hpp.
void CglMixedIntegerRounding2::setDoPreproc | ( | int | value | ) |
Set doPreproc.
bool CglMixedIntegerRounding2::getDoPreproc | ( | ) | const |
Get doPreproc.
void CglMixedIntegerRounding2::gutsOfConstruct | ( | const int | maxaggr, | |
const bool | multiply, | |||
const int | criterion, | |||
const int | preproc | |||
) | [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, | |||
CoinIndexedVector & | 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 CoinIndexedVector & | 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 CoinIndexedVector & | 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] |
void CglMixedIntegerRounding2UnitTest | ( | const OsiSolverInterface * | siP, | |
const std::string | mpdDir | |||
) | [friend] |
int CglMixedIntegerRounding2::MAXAGGR_ [private] |
Definition at line 362 of file CglMixedIntegerRounding2.hpp.
bool CglMixedIntegerRounding2::MULTIPLY_ [private] |
Definition at line 364 of file CglMixedIntegerRounding2.hpp.
int CglMixedIntegerRounding2::CRITERION_ [private] |
Definition at line 366 of file CglMixedIntegerRounding2.hpp.
double CglMixedIntegerRounding2::EPSILON_ [private] |
Definition at line 368 of file CglMixedIntegerRounding2.hpp.
int CglMixedIntegerRounding2::UNDEFINED_ [private] |
There is no variable upper bound or variable lower bound defined.
Definition at line 370 of file CglMixedIntegerRounding2.hpp.
double CglMixedIntegerRounding2::TOLERANCE_ [private] |
Definition at line 372 of file CglMixedIntegerRounding2.hpp.
int CglMixedIntegerRounding2::doPreproc_ [private] |
Controls the preprocessing of the matrix to identify rows suitable for cut generation.
Default value: -1
Definition at line 380 of file CglMixedIntegerRounding2.hpp.
int CglMixedIntegerRounding2::numRows_ [mutable, private] |
Definition at line 382 of file CglMixedIntegerRounding2.hpp.
int CglMixedIntegerRounding2::numCols_ [mutable, private] |
Definition at line 384 of file CglMixedIntegerRounding2.hpp.
bool CglMixedIntegerRounding2::doneInitPre_ [mutable, private] |
Definition at line 386 of file CglMixedIntegerRounding2.hpp.
CglMixIntRoundVUB2* CglMixedIntegerRounding2::vubs_ [mutable, private] |
Definition at line 388 of file CglMixedIntegerRounding2.hpp.
CglMixIntRoundVLB2* CglMixedIntegerRounding2::vlbs_ [mutable, private] |
Definition at line 390 of file CglMixedIntegerRounding2.hpp.
RowType* CglMixedIntegerRounding2::rowTypes_ [mutable, private] |
Definition at line 392 of file CglMixedIntegerRounding2.hpp.
int* CglMixedIntegerRounding2::indRows_ [mutable, private] |
Definition at line 394 of file CglMixedIntegerRounding2.hpp.
int CglMixedIntegerRounding2::numRowMix_ [mutable, private] |
Definition at line 396 of file CglMixedIntegerRounding2.hpp.
int* CglMixedIntegerRounding2::indRowMix_ [mutable, private] |
Definition at line 398 of file CglMixedIntegerRounding2.hpp.
int CglMixedIntegerRounding2::numRowCont_ [mutable, private] |
Definition at line 400 of file CglMixedIntegerRounding2.hpp.
int* CglMixedIntegerRounding2::indRowCont_ [mutable, private] |
Definition at line 402 of file CglMixedIntegerRounding2.hpp.
int CglMixedIntegerRounding2::numRowInt_ [mutable, private] |
Definition at line 404 of file CglMixedIntegerRounding2.hpp.
int* CglMixedIntegerRounding2::indRowInt_ [mutable, private] |
Definition at line 406 of file CglMixedIntegerRounding2.hpp.
int CglMixedIntegerRounding2::numRowContVB_ [mutable, private] |
Definition at line 409 of file CglMixedIntegerRounding2.hpp.
int* CglMixedIntegerRounding2::indRowContVB_ [mutable, private] |
Definition at line 412 of file CglMixedIntegerRounding2.hpp.
char* CglMixedIntegerRounding2::integerType_ [mutable, private] |
Definition at line 414 of file CglMixedIntegerRounding2.hpp.
char* CglMixedIntegerRounding2::sense_ [mutable, private] |
Definition at line 416 of file CglMixedIntegerRounding2.hpp.
double* CglMixedIntegerRounding2::RHS_ [mutable, private] |
Definition at line 418 of file CglMixedIntegerRounding2.hpp.