|
Cbc
2.10.5
|
Gomory Cut Generator Class. More...
#include <CglGomory.hpp>
Inheritance diagram for CglGomory:
Collaboration diagram for CglGomory:Public Member Functions | |
Generate Cuts | |
| virtual void | generateCuts (const OsiSolverInterface &si, OsiCuts &cs, const CglTreeInfo info=CglTreeInfo()) |
| Generate Mixed Integer Gomory cuts for the model of the solver interface, si. More... | |
| 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()) |
| Generates cuts given matrix and solution etc, returns number of cuts generated. More... | |
| 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()) |
| Generates cuts given matrix and solution etc, returns number of cuts generated (no row copy passed in) More... | |
| virtual bool | needsOptimalBasis () const |
| Return true if needs optimal basis to do cuts (will return true) More... | |
Change way Gomory works | |
| void | passInOriginalSolver (OsiSolverInterface *solver) |
| Pass in a copy of original solver (clone it) More... | |
| OsiSolverInterface * | originalSolver () const |
| Returns original solver. More... | |
| void | setGomoryType (int type) |
| Set type - 0 normal, 1 add original matrix one, 2 replace. More... | |
| int | gomoryType () const |
| Return type. More... | |
Change limit on how many variables in cut (default 50) | |
| void | setLimit (int limit) |
| Set. More... | |
| int | getLimit () const |
| Get. More... | |
| void | setLimitAtRoot (int limit) |
| Set at root (if <normal then use normal) More... | |
| int | getLimitAtRoot () const |
| Get at root. More... | |
| virtual int | maximumLengthOfCutInTree () const |
| Return maximum length of cut in tree. More... | |
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. More... | |
| double | getAway () const |
| Get away. More... | |
| void | setAwayAtRoot (double value) |
| Set away at root. More... | |
| double | getAwayAtRoot () const |
| Get away at root. More... | |
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. More... | |
| double | getConditionNumberMultiplier () const |
| Get ConditionNumberMultiplier. More... | |
| void | setLargestFactorMultiplier (double value) |
| Set LargestFactorMultiplier. More... | |
| double | getLargestFactorMultiplier () const |
| Get LargestFactorMultiplier. More... | |
change factorization | |
| void | useAlternativeFactorization (bool yes=true) |
| Set/unset alternative factorization. More... | |
| bool | alternativeFactorization () const |
| Get whether alternative factorization being used. More... | |
Constructors and destructors | |
| CglGomory () | |
| Default constructor. More... | |
| CglGomory (const CglGomory &) | |
| Copy constructor. More... | |
| virtual CglCutGenerator * | clone () const |
| Clone. More... | |
| CglGomory & | operator= (const CglGomory &rhs) |
| Assignment operator. More... | |
| virtual | ~CglGomory () |
| Destructor. More... | |
| virtual std::string | generateCpp (FILE *fp) |
| Create C++ lines to get to current state. More... | |
| virtual void | refreshSolver (OsiSolverInterface *solver) |
| This can be used to refresh any inforamtion. 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... | |
Private Attributes | |
Private member data | |
| double | away_ |
| Only investigate if more than this away from integrality. More... | |
| double | awayAtRoot_ |
| Only investigate if more than this away from integrality (at root) More... | |
| double | conditionNumberMultiplier_ |
| Multiplier for conditionNumber cut relaxation. More... | |
| double | largestFactorMultiplier_ |
| Multiplier for largest factor cut relaxation. More... | |
| OsiSolverInterface * | originalSolver_ |
| Original solver. More... | |
| int | limit_ |
| Limit - only generate if fewer than this in cut. More... | |
| int | limitAtRoot_ |
| Limit - only generate if fewer than this in cut (at root) More... | |
| int | dynamicLimitInTree_ |
| Dynamic limit in tree. More... | |
| int | numberTimesStalled_ |
| Number of times stalled. More... | |
| int | alternateFactorization_ |
| nonzero to use alternative factorization More... | |
| int | gomoryType_ |
| Type - 0 normal, 1 add original matrix one, 2 replace. More... | |
Friends | |
| void | CglGomoryUnitTest (const OsiSolverInterface *siP, const std::string mpdDir) |
| A function that tests the methods in the CglGomory class. More... | |
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... | |
Gomory Cut Generator Class.
Definition at line 14 of file CglGomory.hpp.
| CglGomory::CglGomory | ( | ) |
Default constructor.
| CglGomory::CglGomory | ( | const CglGomory & | ) |
Copy constructor.
|
virtual |
Destructor.
|
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() |
||
| ) |
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() |
||
| ) |
Generates cuts given matrix and solution etc, returns number of cuts generated (no row copy passed in)
|
inlinevirtual |
Return true if needs optimal basis to do cuts (will return true)
Reimplemented from CglCutGenerator.
Definition at line 61 of file CglGomory.hpp.
| void CglGomory::passInOriginalSolver | ( | OsiSolverInterface * | solver | ) |
Pass in a copy of original solver (clone it)
|
inline |
Returns original solver.
Definition at line 69 of file CglGomory.hpp.
|
inline |
Set type - 0 normal, 1 add original matrix one, 2 replace.
Definition at line 72 of file CglGomory.hpp.
|
inline |
Return type.
Definition at line 75 of file CglGomory.hpp.
| 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 |
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.
|
inline |
Set/unset alternative factorization.
Definition at line 129 of file CglGomory.hpp.
|
inline |
Get whether alternative factorization being used.
Definition at line 132 of file CglGomory.hpp.
|
virtual |
Clone.
Implements CglCutGenerator.
|
virtual |
Create C++ lines to get to current state.
Reimplemented from CglCutGenerator.
|
virtual |
This can be used to refresh any inforamtion.
Reimplemented from CglCutGenerator.
|
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.
|
private |
Only investigate if more than this away from integrality.
Definition at line 171 of file CglGomory.hpp.
|
private |
Only investigate if more than this away from integrality (at root)
Definition at line 173 of file CglGomory.hpp.
|
private |
Multiplier for conditionNumber cut relaxation.
Definition at line 175 of file CglGomory.hpp.
|
private |
Multiplier for largest factor cut relaxation.
Definition at line 177 of file CglGomory.hpp.
|
private |
Original solver.
Definition at line 179 of file CglGomory.hpp.
|
private |
Limit - only generate if fewer than this in cut.
Definition at line 181 of file CglGomory.hpp.
|
private |
Limit - only generate if fewer than this in cut (at root)
Definition at line 183 of file CglGomory.hpp.
|
private |
Dynamic limit in tree.
Definition at line 185 of file CglGomory.hpp.
|
private |
Number of times stalled.
Definition at line 187 of file CglGomory.hpp.
|
private |
nonzero to use alternative factorization
Definition at line 189 of file CglGomory.hpp.
|
private |
Type - 0 normal, 1 add original matrix one, 2 replace.
Definition at line 191 of file CglGomory.hpp.
1.8.5