coin-Cgl
|
Gomory Cut Generator Class. More...
#include <CglGomory.hpp>
Public Member Functions | |
Generate Cuts | |
virtual void | generateCuts (const OsiSolverInterface &si, OsiCuts &cs, const CglTreeInfo info=CglTreeInfo()) const |
Generate Mixed Integer Gomory cuts for the model of the solver interface, si. | |
int | generateCuts (const OsiRowCutDebugger *debugger, OsiCuts &cs, const CoinPackedMatrix &columnCopy, const CoinPackedMatrix &rowCopy, const double *colsol, const double *colLower, const double *colUpper, const double *rowLower, const double *rowUpper, const char *intVar, const CoinWarmStartBasis *warm, const CglTreeInfo info=CglTreeInfo()) const |
Generates cuts given matrix and solution etc, returns number of cuts generated. | |
int | generateCuts (const OsiRowCutDebugger *debugger, OsiCuts &cs, const CoinPackedMatrix &columnCopy, const double *colsol, const double *colLower, const double *colUpper, const double *rowLower, const double *rowUpper, const char *intVar, const CoinWarmStartBasis *warm, const CglTreeInfo info=CglTreeInfo()) const |
Generates cuts given matrix and solution etc, returns number of cuts generated (no row copy passed in) | |
virtual bool | needsOptimalBasis () const |
Return true if needs optimal basis to do cuts (will return true) | |
Change limit on how many variables in cut (default 50) | |
void | setLimit (int limit) |
Set. | |
int | getLimit () const |
Get. | |
void | setLimitAtRoot (int limit) |
Set at root (if <normal then use normal) | |
int | getLimitAtRoot () const |
Get at root. | |
virtual int | maximumLengthOfCutInTree () const |
Return maximum length of cut in tree. | |
Change criterion on which variables to look at. All ones | |
more than "away" away from integrality will be investigated (default 0.05) | |
void | setAway (double value) |
Set away. | |
double | getAway () const |
Get away. | |
void | setAwayAtRoot (double value) |
Set away at root. | |
double | getAwayAtRoot () const |
Get away at root. | |
Change criterion on which the cut id relaxed if the code | |
thinks the factorization has inaccuracies. The relaxation to RHS is smallest of - 1) 1.0e-4 2) conditionNumberMultiplier * condition number of factorization 3) largestFactorMultiplier * largest (dual*element) forming tableau row | |
void | setConditionNumberMultiplier (double value) |
Set ConditionNumberMultiplier. | |
double | getConditionNumberMultiplier () const |
Get ConditionNumberMultiplier. | |
void | setLargestFactorMultiplier (double value) |
Set LargestFactorMultiplier. | |
double | getLargestFactorMultiplier () const |
Get LargestFactorMultiplier. | |
change factorization | |
void | useAlternativeFactorization (bool yes=true) |
Set/unset alternative factorization. | |
bool | alternativeFactorization () const |
Get whether alternative factorization being used. | |
Constructors and destructors | |
CglGomory () | |
Default constructor. | |
CglGomory (const CglGomory &) | |
Copy constructor. | |
virtual CglCutGenerator * | clone () const |
Clone. | |
CglGomory & | operator= (const CglGomory &rhs) |
Assignment operator. | |
virtual | ~CglGomory () |
Destructor. | |
virtual std::string | generateCpp (FILE *fp) |
Create C++ lines to get to current state. | |
Private Attributes | |
Private member data | |
double | away_ |
Only investigate if more than this away from integrality. | |
double | awayAtRoot_ |
Only investigate if more than this away from integrality (at root) | |
double | conditionNumberMultiplier_ |
Multiplier for conditionNumber cut relaxation. | |
double | largestFactorMultiplier_ |
Multiplier for largest factor cut relaxation. | |
int | limit_ |
Limit - only generate if fewer than this in cut. | |
int | limitAtRoot_ |
Limit - only generate if fewer than this in cut (at root) | |
int | dynamicLimitInTree_ |
Dynamic limit in tree. | |
int | numberTimesStalled_ |
Number of times stalled. | |
int | alternateFactorization_ |
nonzero to use alternative factorization | |
Friends | |
void | CglGomoryUnitTest (const OsiSolverInterface *siP, const std::string mpdDir) |
A function that tests the methods in the CglGomory class. |
Gomory Cut Generator Class.
Definition at line 12 of file CglGomory.hpp.
Default constructor.
CglGomory::CglGomory | ( | const CglGomory & | ) |
Copy constructor.
virtual CglGomory::~CglGomory | ( | ) | [virtual] |
Destructor.
virtual void CglGomory::generateCuts | ( | const OsiSolverInterface & | si, |
OsiCuts & | cs, | ||
const CglTreeInfo | info = CglTreeInfo() |
||
) | const [virtual] |
Generate Mixed Integer Gomory cuts for the model of the solver interface, si.
Insert the generated cuts into OsiCut, cs.
There is a limit option, which will only generate cuts with less than this number of entries.
We can also only look at 0-1 variables a certain distance from integer.
Implements CglCutGenerator.
int CglGomory::generateCuts | ( | const OsiRowCutDebugger * | debugger, |
OsiCuts & | cs, | ||
const CoinPackedMatrix & | columnCopy, | ||
const CoinPackedMatrix & | rowCopy, | ||
const double * | colsol, | ||
const double * | colLower, | ||
const double * | colUpper, | ||
const double * | rowLower, | ||
const double * | rowUpper, | ||
const char * | intVar, | ||
const CoinWarmStartBasis * | warm, | ||
const CglTreeInfo | info = CglTreeInfo() |
||
) | const |
Generates cuts given matrix and solution etc, returns number of cuts generated.
int CglGomory::generateCuts | ( | const OsiRowCutDebugger * | debugger, |
OsiCuts & | cs, | ||
const CoinPackedMatrix & | columnCopy, | ||
const double * | colsol, | ||
const double * | colLower, | ||
const double * | colUpper, | ||
const double * | rowLower, | ||
const double * | rowUpper, | ||
const char * | intVar, | ||
const CoinWarmStartBasis * | warm, | ||
const CglTreeInfo | info = CglTreeInfo() |
||
) | const |
Generates cuts given matrix and solution etc, returns number of cuts generated (no row copy passed in)
virtual bool CglGomory::needsOptimalBasis | ( | ) | const [virtual] |
Return true if needs optimal basis to do cuts (will return true)
Reimplemented from CglCutGenerator.
void CglGomory::setLimit | ( | int | limit | ) |
Set.
int CglGomory::getLimit | ( | ) | const |
Get.
void CglGomory::setLimitAtRoot | ( | int | limit | ) |
Set at root (if <normal then use normal)
int CglGomory::getLimitAtRoot | ( | ) | const |
Get at root.
virtual int CglGomory::maximumLengthOfCutInTree | ( | ) | const [virtual] |
Return maximum length of cut in tree.
Reimplemented from CglCutGenerator.
void CglGomory::setAway | ( | double | value | ) |
Set away.
double CglGomory::getAway | ( | ) | const |
Get away.
void CglGomory::setAwayAtRoot | ( | double | value | ) |
Set away at root.
double CglGomory::getAwayAtRoot | ( | ) | const |
Get away at root.
void CglGomory::setConditionNumberMultiplier | ( | double | value | ) |
Set ConditionNumberMultiplier.
double CglGomory::getConditionNumberMultiplier | ( | ) | const |
Get ConditionNumberMultiplier.
void CglGomory::setLargestFactorMultiplier | ( | double | value | ) |
Set LargestFactorMultiplier.
double CglGomory::getLargestFactorMultiplier | ( | ) | const |
Get LargestFactorMultiplier.
void CglGomory::useAlternativeFactorization | ( | bool | yes = true | ) | [inline] |
Set/unset alternative factorization.
Definition at line 112 of file CglGomory.hpp.
References alternateFactorization_.
bool CglGomory::alternativeFactorization | ( | ) | const [inline] |
Get whether alternative factorization being used.
Definition at line 115 of file CglGomory.hpp.
References alternateFactorization_.
virtual CglCutGenerator* CglGomory::clone | ( | ) | const [virtual] |
Clone.
Implements CglCutGenerator.
virtual std::string CglGomory::generateCpp | ( | FILE * | fp | ) | [virtual] |
Create C++ lines to get to current state.
Reimplemented from CglCutGenerator.
void CglGomoryUnitTest | ( | const OsiSolverInterface * | siP, |
const std::string | mpdDir | ||
) | [friend] |
A function that tests the methods in the CglGomory 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.
double CglGomory::away_ [private] |
Only investigate if more than this away from integrality.
Definition at line 152 of file CglGomory.hpp.
double CglGomory::awayAtRoot_ [private] |
Only investigate if more than this away from integrality (at root)
Definition at line 154 of file CglGomory.hpp.
double CglGomory::conditionNumberMultiplier_ [private] |
Multiplier for conditionNumber cut relaxation.
Definition at line 156 of file CglGomory.hpp.
double CglGomory::largestFactorMultiplier_ [private] |
Multiplier for largest factor cut relaxation.
Definition at line 158 of file CglGomory.hpp.
int CglGomory::limit_ [private] |
Limit - only generate if fewer than this in cut.
Definition at line 160 of file CglGomory.hpp.
int CglGomory::limitAtRoot_ [private] |
Limit - only generate if fewer than this in cut (at root)
Definition at line 162 of file CglGomory.hpp.
int CglGomory::dynamicLimitInTree_ [mutable, private] |
Dynamic limit in tree.
Definition at line 164 of file CglGomory.hpp.
int CglGomory::numberTimesStalled_ [mutable, private] |
Number of times stalled.
Definition at line 166 of file CglGomory.hpp.
int CglGomory::alternateFactorization_ [private] |
nonzero to use alternative factorization
Definition at line 168 of file CglGomory.hpp.
Referenced by alternativeFactorization(), and useAlternativeFactorization().