DuplicateRow Cut Generator Class. More...
#include <CglDuplicateRow.hpp>
Public Member Functions | |
Generate Cuts | |
virtual void | generateCuts (const OsiSolverInterface &si, OsiCuts &cs, const CglTreeInfo info=CglTreeInfo()) const |
Fix variables and find duplicate/dominated rows for the model of the solver interface, si. | |
CglStored * | outDuplicates (OsiSolverInterface *solver) |
Fix variables and find duplicate/dominated rows for the model of the solver interface, si. | |
Get information on size of problem | |
const int * | duplicate () const |
Get duplicate row list, -1 means still in, -2 means out (all fixed), k>= means same as row k. | |
int | sizeDynamic () const |
Size of dynamic program. | |
int | numberOriginalRows () const |
Number of rows in original problem. | |
int | logLevel () const |
logLevel | |
void | setLogLevel (int value) |
Get duplicate row list, -1 means still in, -2 means out (all fixed), k>= means same as row k. | |
We only check for duplicates amongst rows with effective rhs <= this | |
int | maximumRhs () const |
Get. | |
void | setMaximumRhs (int value) |
Set. | |
We only check for dominated amongst groups of columns whose size <= this | |
int | maximumDominated () const |
Get. | |
void | setMaximumDominated (int value) |
Set. | |
gets and sets | |
int | mode () const |
Get mode. | |
void | setMode (int value) |
Set mode. | |
Constructors and destructors | |
CglDuplicateRow () | |
Default constructor. | |
CglDuplicateRow (OsiSolverInterface *solver) | |
Useful constructor. | |
CglDuplicateRow (const CglDuplicateRow &rhs) | |
Copy constructor. | |
virtual CglCutGenerator * | clone () const |
Clone. | |
CglDuplicateRow & | operator= (const CglDuplicateRow &rhs) |
Assignment operator. | |
virtual | ~CglDuplicateRow () |
Destructor. | |
virtual std::string | generateCpp (FILE *fp) |
Create C++ lines to get to current state. | |
virtual void | refreshSolver (OsiSolverInterface *solver) |
This can be used to refresh any inforamtion. | |
Protected Attributes | |
Protected member data | |
CoinPackedMatrix | matrix_ |
Matrix. | |
CoinPackedMatrix | matrixByRow_ |
Matrix by row. | |
int * | rhs_ |
Possible rhs (if 0 then not possible). | |
int * | duplicate_ |
Marks duplicate rows. | |
int * | lower_ |
To allow for <= rows. | |
CglStored * | storedCuts_ |
Stored cuts if we found dominance cuts. | |
int | maximumDominated_ |
Check dominated columns if less than this number of candidates. | |
int | maximumRhs_ |
Check duplicates if effective rhs <= this. | |
int | sizeDynamic_ |
Size of dynamic program. | |
int | mode_ |
1 do rows, 2 do columns, 3 do both | |
int | logLevel_ |
Controls print out. |
DuplicateRow Cut Generator Class.
Definition at line 12 of file CglDuplicateRow.hpp.
CglDuplicateRow::CglDuplicateRow | ( | ) |
Default constructor.
CglDuplicateRow::CglDuplicateRow | ( | OsiSolverInterface * | solver | ) |
Useful constructor.
CglDuplicateRow::CglDuplicateRow | ( | const CglDuplicateRow & | rhs | ) |
Copy constructor.
virtual CglDuplicateRow::~CglDuplicateRow | ( | ) | [virtual] |
Destructor.
virtual void CglDuplicateRow::generateCuts | ( | const OsiSolverInterface & | si, | |
OsiCuts & | cs, | |||
const CglTreeInfo | info = CglTreeInfo() | |||
) | const [virtual] |
Fix variables and find duplicate/dominated rows for the model of the solver interface, si.
This is a very simple minded idea but I (JJF) am using it in a project so thought I might as well add it. It should really be called before first solve and I may modify CBC to allow for that.
This is designed for problems with few rows and many integer variables where the rhs are <= or == and all coefficients and rhs are small integers.
If effective rhs is K then we can fix all variables with coefficients > K to their lower bounds (effective rhs just means original with variables with nonzero lower bounds subtracted out).
If one row is a subset of another and the effective rhs are same we can fix some variables and then the two rows are identical.
The generator marks identical rows so can be taken out in solve
Implements CglCutGenerator.
CglStored* CglDuplicateRow::outDuplicates | ( | OsiSolverInterface * | solver | ) |
Fix variables and find duplicate/dominated rows for the model of the solver interface, si.
This is a very simple minded idea but I (JJF) am using it in a project so thought I might as well add it. It should really be called before first solve and I may modify CBC to allow for that.
This is designed for problems with few rows and many integer variables where the rhs are <= or == and all coefficients and rhs are small integers.
If effective rhs is K then we can fix all variables with coefficients > K to their lower bounds (effective rhs just means original with variables with nonzero lower bounds subtracted out).
If one row is a subset of another and the effective rhs are same we can fix some variables and then the two rows are identical.
This version does deletions and fixings and may return stored cuts for dominated columns
const int* CglDuplicateRow::duplicate | ( | ) | const [inline] |
Get duplicate row list, -1 means still in, -2 means out (all fixed), k>= means same as row k.
Definition at line 65 of file CglDuplicateRow.hpp.
int CglDuplicateRow::sizeDynamic | ( | ) | const [inline] |
Size of dynamic program.
Definition at line 68 of file CglDuplicateRow.hpp.
int CglDuplicateRow::numberOriginalRows | ( | ) | const [inline] |
Number of rows in original problem.
Definition at line 71 of file CglDuplicateRow.hpp.
int CglDuplicateRow::logLevel | ( | ) | const [inline] |
logLevel
Definition at line 78 of file CglDuplicateRow.hpp.
void CglDuplicateRow::setLogLevel | ( | int | value | ) | [inline] |
Get duplicate row list, -1 means still in, -2 means out (all fixed), k>= means same as row k.
Definition at line 80 of file CglDuplicateRow.hpp.
int CglDuplicateRow::maximumRhs | ( | ) | const [inline] |
Get.
Definition at line 88 of file CglDuplicateRow.hpp.
void CglDuplicateRow::setMaximumRhs | ( | int | value | ) | [inline] |
Set.
Definition at line 91 of file CglDuplicateRow.hpp.
int CglDuplicateRow::maximumDominated | ( | ) | const [inline] |
Get.
Definition at line 98 of file CglDuplicateRow.hpp.
void CglDuplicateRow::setMaximumDominated | ( | int | value | ) | [inline] |
Set.
Definition at line 101 of file CglDuplicateRow.hpp.
int CglDuplicateRow::mode | ( | ) | const [inline] |
Get mode.
Definition at line 107 of file CglDuplicateRow.hpp.
void CglDuplicateRow::setMode | ( | int | value | ) | [inline] |
Set mode.
Definition at line 110 of file CglDuplicateRow.hpp.
virtual CglCutGenerator* CglDuplicateRow::clone | ( | ) | const [virtual] |
Clone.
Implements CglCutGenerator.
CglDuplicateRow& CglDuplicateRow::operator= | ( | const CglDuplicateRow & | rhs | ) |
Assignment operator.
Reimplemented from CglCutGenerator.
virtual std::string CglDuplicateRow::generateCpp | ( | FILE * | fp | ) | [virtual] |
Create C++ lines to get to current state.
Reimplemented from CglCutGenerator.
virtual void CglDuplicateRow::refreshSolver | ( | OsiSolverInterface * | solver | ) | [virtual] |
This can be used to refresh any inforamtion.
Reimplemented from CglCutGenerator.
CoinPackedMatrix CglDuplicateRow::matrix_ [protected] |
Definition at line 152 of file CglDuplicateRow.hpp.
CoinPackedMatrix CglDuplicateRow::matrixByRow_ [protected] |
Matrix by row.
Definition at line 154 of file CglDuplicateRow.hpp.
int* CglDuplicateRow::rhs_ [protected] |
Possible rhs (if 0 then not possible).
Definition at line 156 of file CglDuplicateRow.hpp.
int* CglDuplicateRow::duplicate_ [mutable, protected] |
Marks duplicate rows.
Definition at line 158 of file CglDuplicateRow.hpp.
int* CglDuplicateRow::lower_ [protected] |
To allow for <= rows.
Definition at line 160 of file CglDuplicateRow.hpp.
CglStored* CglDuplicateRow::storedCuts_ [mutable, protected] |
Stored cuts if we found dominance cuts.
Definition at line 162 of file CglDuplicateRow.hpp.
int CglDuplicateRow::maximumDominated_ [protected] |
Check dominated columns if less than this number of candidates.
Definition at line 164 of file CglDuplicateRow.hpp.
int CglDuplicateRow::maximumRhs_ [protected] |
Check duplicates if effective rhs <= this.
Definition at line 166 of file CglDuplicateRow.hpp.
int CglDuplicateRow::sizeDynamic_ [mutable, protected] |
Size of dynamic program.
Definition at line 168 of file CglDuplicateRow.hpp.
int CglDuplicateRow::mode_ [protected] |
1 do rows, 2 do columns, 3 do both
Definition at line 170 of file CglDuplicateRow.hpp.
int CglDuplicateRow::logLevel_ [protected] |
Controls print out.
Definition at line 172 of file CglDuplicateRow.hpp.