coin-Cgl
List of all members
CglDuplicateRow Class Reference

DuplicateRow Cut Generator Class. More...

#include <CglDuplicateRow.hpp>

Inheritance diagram for CglDuplicateRow:
Inheritance graph
[legend]
Collaboration diagram for CglDuplicateRow:
Collaboration graph
[legend]

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. More...
 
CglStoredoutDuplicates (OsiSolverInterface *solver)
 Fix variables and find duplicate/dominated rows for the model of the solver interface, si. More...
 
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. More...
 
int sizeDynamic () const
 Size of dynamic program. More...
 
int numberOriginalRows () const
 Number of rows in original problem. More...
 
int logLevel () const
 logLevel More...
 
void setLogLevel (int value)
 Get duplicate row list, -1 means still in, -2 means out (all fixed), k>= means same as row k. More...
 
We only check for duplicates amongst rows with effective rhs <= this
int maximumRhs () const
 Get. More...
 
void setMaximumRhs (int value)
 Set. More...
 
We only check for dominated amongst groups of columns whose size <= this
int maximumDominated () const
 Get. More...
 
void setMaximumDominated (int value)
 Set. More...
 
gets and sets
int mode () const
 Get mode. More...
 
void setMode (int value)
 Set mode. More...
 
Constructors and destructors
 CglDuplicateRow ()
 Default constructor. More...
 
 CglDuplicateRow (OsiSolverInterface *solver)
 Useful constructor. More...
 
 CglDuplicateRow (const CglDuplicateRow &rhs)
 Copy constructor. More...
 
virtual CglCutGeneratorclone () const
 Clone. More...
 
CglDuplicateRowoperator= (const CglDuplicateRow &rhs)
 Assignment operator. More...
 
virtual ~CglDuplicateRow ()
 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...
 
CglCutGeneratoroperator= (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...
 
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...
 

Protected Attributes

Protected member data
CoinPackedMatrix matrix_
 Matrix. More...
 
CoinPackedMatrix matrixByRow_
 Matrix by row. More...
 
int * rhs_
 Possible rhs (if 0 then not possible) More...
 
int * duplicate_
 Marks duplicate rows. More...
 
int * lower_
 To allow for <= rows. More...
 
CglStoredstoredCuts_
 Stored cuts if we found dominance cuts. More...
 
int maximumDominated_
 Check dominated columns if less than this number of candidates. More...
 
int maximumRhs_
 Check duplicates if effective rhs <= this. More...
 
int sizeDynamic_
 Size of dynamic program. More...
 
int mode_
 1 do rows, 2 do columns, 3 do both More...
 
int logLevel_
 Controls print out. More...
 

Additional Inherited Members

- Public Attributes inherited from CglCutGenerator
int aggressive_
 Aggressiveness - 0 = neutral, 100 is normal root node. More...
 

Detailed Description

DuplicateRow Cut Generator Class.

Definition at line 12 of file CglDuplicateRow.hpp.

Constructor & Destructor Documentation

CglDuplicateRow::CglDuplicateRow ( )

Default constructor.

CglDuplicateRow::CglDuplicateRow ( OsiSolverInterface *  solver)

Useful constructor.

CglDuplicateRow::CglDuplicateRow ( const CglDuplicateRow rhs)

Copy constructor.

virtual CglDuplicateRow::~CglDuplicateRow ( )
virtual

Destructor.

Member Function Documentation

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.

References sizeDynamic_.

int CglDuplicateRow::numberOriginalRows ( ) const
inline

Number of rows in original problem.

Definition at line 71 of file CglDuplicateRow.hpp.

References matrix_.

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.

References logLevel_.

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.

References maximumRhs_.

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.

References maximumDominated_.

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.

References mode_.

virtual CglCutGenerator* CglDuplicateRow::clone ( ) const
virtual

Clone.

Implements CglCutGenerator.

CglDuplicateRow& CglDuplicateRow::operator= ( const CglDuplicateRow rhs)

Assignment operator.

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.

Member Data Documentation

CoinPackedMatrix CglDuplicateRow::matrix_
protected

Matrix.

Definition at line 152 of file CglDuplicateRow.hpp.

Referenced by numberOriginalRows().

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_
mutableprotected

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_
mutableprotected

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.

Referenced by setMaximumDominated().

int CglDuplicateRow::maximumRhs_
protected

Check duplicates if effective rhs <= this.

Definition at line 166 of file CglDuplicateRow.hpp.

Referenced by setMaximumRhs().

int CglDuplicateRow::sizeDynamic_
mutableprotected

Size of dynamic program.

Definition at line 168 of file CglDuplicateRow.hpp.

Referenced by sizeDynamic().

int CglDuplicateRow::mode_
protected

1 do rows, 2 do columns, 3 do both

Definition at line 170 of file CglDuplicateRow.hpp.

Referenced by setMode().

int CglDuplicateRow::logLevel_
protected

Controls print out.

Definition at line 172 of file CglDuplicateRow.hpp.

Referenced by setLogLevel().


The documentation for this class was generated from the following file: