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()) |
| Generate Mixed Integer Rounding cuts for the model data contained in si. More... | |
Constructors and destructors | |
| CglMixedIntegerRounding2 () | |
| Default constructor. More... | |
| CglMixedIntegerRounding2 (const int maxaggr, const bool multiply, const int criterion, const int preproc=-1) | |
| Alternate Constructor. More... | |
| CglMixedIntegerRounding2 (const CglMixedIntegerRounding2 &) | |
| Copy constructor. More... | |
| virtual CglCutGenerator * | clone () const |
| Clone. More... | |
| CglMixedIntegerRounding2 & | operator= (const CglMixedIntegerRounding2 &rhs) |
| Assignment operator. More... | |
| virtual | ~CglMixedIntegerRounding2 () |
| Destructor. More... | |
| virtual void | refreshSolver (OsiSolverInterface *solver) |
| This can be used to refresh any inforamtion. More... | |
| virtual std::string | generateCpp (FILE *fp) |
| Create C++ lines to get to current state. More... | |
Set and get methods | |
| void | setMAXAGGR_ (int maxaggr) |
| Set MAXAGGR_. More... | |
| int | getMAXAGGR_ () const |
| Get MAXAGGR_. More... | |
| void | setMULTIPLY_ (bool multiply) |
| Set MULTIPLY_. More... | |
| bool | getMULTIPLY_ () const |
| Get MULTIPLY_. More... | |
| void | setCRITERION_ (int criterion) |
| Set CRITERION_. More... | |
| int | getCRITERION_ () const |
| Get CRITERION_. More... | |
| void | setDoPreproc (int value) |
| Set doPreproc. More... | |
| bool | getDoPreproc () const |
| Get doPreproc. More... | |
Public Member Functions inherited from CglCutGenerator | |
| CglCutGenerator () | |
| Default constructor. More... | |
| CglCutGenerator (const CglCutGenerator &) | |
| Copy constructor. More... | |
| CglCutGenerator & | operator= (const CglCutGenerator &rhs) |
| Assignment operator. More... | |
| virtual | ~CglCutGenerator () |
| Destructor. 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 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) |
| RowType | determineRowType (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 *coefByCol, const int *rowInds, const int *colStarts, 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 CoinIndexedVector &rowAggregated, const double *colUpperBound, const double *colLowerBound, const CoinIndexedVector &setRowsAggregated, const double *xlp, const double *coefByCol, const int *rowInds, const int *colStarts, 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 *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. More... | |
| double | TOLERANCE_ |
| int | doPreproc_ |
| Controls the preprocessing of the matrix to identify rows suitable for cut generation. More... | |
| 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) |
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... | |
Mixed Integer Rounding Cut Generator Class.
Definition at line 87 of file CglMixedIntegerRounding2.hpp.
|
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 |
Destructor.
|
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 |
Clone.
Implements CglCutGenerator.
| CglMixedIntegerRounding2& CglMixedIntegerRounding2::operator= | ( | const CglMixedIntegerRounding2 & | rhs | ) |
Assignment operator.
|
virtual |
This can be used to refresh any inforamtion.
Reimplemented from CglCutGenerator.
|
virtual |
Create C++ lines to get to current state.
Reimplemented from CglCutGenerator.
|
inline |
Set MAXAGGR_.
Definition at line 171 of file CglMixedIntegerRounding2.hpp.
|
inline |
Get MAXAGGR_.
Definition at line 182 of file CglMixedIntegerRounding2.hpp.
|
inline |
Set MULTIPLY_.
Definition at line 185 of file CglMixedIntegerRounding2.hpp.
|
inline |
Get MULTIPLY_.
Definition at line 188 of file CglMixedIntegerRounding2.hpp.
|
inline |
Set CRITERION_.
Definition at line 191 of file CglMixedIntegerRounding2.hpp.
|
inline |
Get CRITERION_.
Definition at line 202 of file CglMixedIntegerRounding2.hpp.
| void CglMixedIntegerRounding2::setDoPreproc | ( | int | value | ) |
Set doPreproc.
| bool CglMixedIntegerRounding2::getDoPreproc | ( | ) | const |
Get doPreproc.
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
inlineprivate |
|
private |
|
private |
|
private |
|
inlineprivate |
|
private |
|
friend |
|
private |
Definition at line 358 of file CglMixedIntegerRounding2.hpp.
|
private |
Definition at line 360 of file CglMixedIntegerRounding2.hpp.
|
private |
Definition at line 362 of file CglMixedIntegerRounding2.hpp.
|
private |
Definition at line 364 of file CglMixedIntegerRounding2.hpp.
|
private |
There is no variable upper bound or variable lower bound defined.
Definition at line 366 of file CglMixedIntegerRounding2.hpp.
|
private |
Definition at line 368 of file CglMixedIntegerRounding2.hpp.
|
private |
Controls the preprocessing of the matrix to identify rows suitable for cut generation.
Default value: -1
Definition at line 376 of file CglMixedIntegerRounding2.hpp.
|
private |
Definition at line 378 of file CglMixedIntegerRounding2.hpp.
|
private |
Definition at line 380 of file CglMixedIntegerRounding2.hpp.
|
private |
Definition at line 382 of file CglMixedIntegerRounding2.hpp.
|
private |
Definition at line 384 of file CglMixedIntegerRounding2.hpp.
|
private |
Definition at line 386 of file CglMixedIntegerRounding2.hpp.
|
private |
Definition at line 388 of file CglMixedIntegerRounding2.hpp.
|
private |
Definition at line 390 of file CglMixedIntegerRounding2.hpp.
|
private |
Definition at line 392 of file CglMixedIntegerRounding2.hpp.
|
private |
Definition at line 394 of file CglMixedIntegerRounding2.hpp.
|
private |
Definition at line 396 of file CglMixedIntegerRounding2.hpp.
|
private |
Definition at line 398 of file CglMixedIntegerRounding2.hpp.
|
private |
Definition at line 400 of file CglMixedIntegerRounding2.hpp.
|
private |
Definition at line 402 of file CglMixedIntegerRounding2.hpp.
|
private |
Definition at line 405 of file CglMixedIntegerRounding2.hpp.
|
private |
Definition at line 408 of file CglMixedIntegerRounding2.hpp.
|
private |
Definition at line 410 of file CglMixedIntegerRounding2.hpp.
|
private |
Definition at line 412 of file CglMixedIntegerRounding2.hpp.
|
private |
Definition at line 414 of file CglMixedIntegerRounding2.hpp.
1.8.5