CglProbing Class Reference

Probing Cut Generator Class. More...

#include <CglProbing.hpp>

Inheritance diagram for CglProbing:

Inheritance graph
[legend]
Collaboration diagram for CglProbing:

Collaboration graph
[legend]
List of all members.

Private member data

typedef CglProbing::disaggregation_struct_tag disaggregation
 Disaggregation cuts and for building cliques.
CoinPackedMatrixrowCopy_
 Row copy (only if snapshot).
CoinPackedMatrixcolumnCopy_
 Column copy (only if snapshot).
double * rowLower_
 Lower bounds on rows.
double * rowUpper_
 Upper bounds on rows.
double * colLower_
 Lower bounds on columns.
double * colUpper_
 Upper bounds on columns.
int numberRows_
 Number of rows in snapshot (or when cliqueRow stuff computed).
int numberColumns_
 Number of columns in problem ( must == current).
double primalTolerance_
 Tolerance to see if infeasible.
int mode_
 Mode - 0 lazy using snapshot, 1 just unsatisfied, 2 all.
int rowCuts_
 Row cuts flag 0 no cuts, 1 just disaggregation type, 2 coefficient ( 3 both), 4 just column cuts -n as +n but just fixes variables unless at root.
int maxPass_
 Maximum number of passes to do in probing.
int logLevel_
 Log level - 0 none, 1 - a bit, 2 - more details.
int maxProbe_
 Maximum number of unsatisfied variables to probe.
int maxStack_
 Maximum number of variables to look at in one probe.
int maxElements_
 Maximum number of elements in row for scan.
int maxPassRoot_
 Maximum number of passes to do in probing at root.
int maxProbeRoot_
 Maximum number of unsatisfied variables to probe at root.
int maxStackRoot_
 Maximum number of variables to look at in one probe at root.
int maxElementsRoot_
 Maximum number of elements in row for scan at root.
bool usingObjective_
 Whether to include objective as constraint.
int numberIntegers_
 Number of integer variables.
int number01Integers_
 Number of 0-1 integer variables.
disaggregationcutVector_
 Disaggregation cuts and for building cliques.
int numberCliques_
 Cliques Number of cliques.
cliqueTypecliqueType_
 Disaggregation cuts and for building cliques.
int * cliqueStart_
 Start of each clique.
cliqueEntrycliqueEntry_
 Disaggregation cuts and for building cliques.
int * oneFixStart_
 Start of oneFixes cliques for a column in matrix or -1 if not in any clique.
int * zeroFixStart_
 Start of zeroFixes cliques for a column in matrix or -1 if not in any clique.
int * endFixStart_
 End of fixes for a column.
int * whichClique_
 Clique numbers for one or zero fixes.
cliqueEntrycliqueRow_
 For each column with nonzero in row copy this gives a clique "number".
int * cliqueRowStart_
 cliqueRow_ starts for each row

Public Member Functions

Generate Cuts
virtual void generateCuts (const OsiSolverInterface &si, OsiCuts &cs, const CglTreeInfo info=CglTreeInfo()) const
 Generate probing/disaggregation cuts for the model of the solver interface, si.
int generateCutsAndModify (const OsiSolverInterface &si, OsiCuts &cs, const CglTreeInfo info=CglTreeInfo())
 Generate probing/disaggregation cuts for the model of the solver interface, si.
int generateCutsAndModify (const OsiSolverInterface &si, OsiCuts &cs, CglTreeInfo *info2)
 Generate probing/disaggregation cuts for the model of the solver interface, si.
snapshot etc
int snapshot (const OsiSolverInterface &si, char *possible=NULL, bool withObjective=true)
 Create a copy of matrix which is to be used this is to speed up process and to give global cuts Can give an array with 1 set to select, 0 to ignore column bounds are tightened If array given then values of 1 will be set to 0 if redundant.
void deleteSnapshot ()
 Deletes snapshot.
int createCliques (OsiSolverInterface &si, int minimumSize=2, int maximumSize=100, bool extendCliques=false)
 Creates cliques for use by probing.
void deleteCliques ()
 Delete all clique information.
Get tighter column bounds
const double * tightLower () const
 Lower.
const double * tightUpper () const
 Upper.
Get possible freed up row bounds - only valid after mode==3
const double * relaxedRowLower () const
 Lower.
const double * relaxedRowUpper () const
 Upper.
Change mode
void setMode (int mode)
 Set.
int getMode () const
 Get.
Change maxima
void setMaxPass (int value)
 Set maximum number of passes per node.
int getMaxPass () const
 Get maximum number of passes per node.
void setLogLevel (int value)
 Set log level - 0 none, 1 - a bit, 2 - more details.
int getLogLevel () const
 Get log level.
void setMaxProbe (int value)
 Set maximum number of unsatisfied variables to look at.
int getMaxProbe () const
 Get maximum number of unsatisfied variables to look at.
void setMaxLook (int value)
 Set maximum number of variables to look at in one probe.
int getMaxLook () const
 Get maximum number of variables to look at in one probe.
void setMaxElements (int value)
 Set maximum number of elements in row for it to be considered.
int getMaxElements () const
 Get maximum number of elements in row for it to be considered.
void setMaxPassRoot (int value)
 Set maximum number of passes per node (root node).
int getMaxPassRoot () const
 Get maximum number of passes per node (root node).
void setMaxProbeRoot (int value)
 Set maximum number of unsatisfied variables to look at (root node).
int getMaxProbeRoot () const
 Get maximum number of unsatisfied variables to look at (root node).
void setMaxLookRoot (int value)
 Set maximum number of variables to look at in one probe (root node).
int getMaxLookRoot () const
 Get maximum number of variables to look at in one probe (root node).
void setMaxElementsRoot (int value)
 Set maximum number of elements in row for it to be considered (root node).
int getMaxElementsRoot () const
 Get maximum number of elements in row for it to be considered (root node).
virtual bool mayGenerateRowCutsInTree () const
 Returns true if may generate Row cuts in tree (rather than root node).
Stop or restart row cuts (otherwise just fixing from probing)
void setRowCuts (int type)
 Set 0 no cuts, 1 just disaggregation type, 2 coefficient ( 3 both).
int rowCuts () const
 Get.
Whether use objective as constraint
void setUsingObjective (bool yesNo)
 Set.
int getUsingObjective () const
 Get.
Constructors and destructors
 CglProbing ()
 Default constructor.
 CglProbing (const CglProbing &)
 Copy constructor.
virtual CglCutGeneratorclone () const
 Clone.
CglProbingoperator= (const CglProbing &rhs)
 Assignment operator.
virtual ~CglProbing ()
 Destructor.
virtual void refreshSolver (OsiSolverInterface *solver)
 This can be used to refresh any inforamtion.
virtual std::string generateCpp (FILE *fp)
 Create C++ lines to get to current state.

Private Member Functions

probe
int probe (const OsiSolverInterface &si, const OsiRowCutDebugger *debugger, OsiCuts &cs, double *colLower, double *colUpper, CoinPackedMatrix *rowCopy, double *rowLower, double *rowUpper, char *intVar, double *minR, double *maxR, int *markR, int *look, int nlook, const CglTreeInfo info) const
 Does probing and adding cuts (without cliques and mode_!=0).
int probeCliques (const OsiSolverInterface &si, const OsiRowCutDebugger *debugger, OsiCuts &cs, double *colLower, double *colUpper, CoinPackedMatrix *rowCopy, double *rowLower, double *rowUpper, char *intVar, double *minR, double *maxR, int *markR, int *look, int nlook, const CglTreeInfo info) const
 Does probing and adding cuts (with cliques).
int probeSlacks (const OsiSolverInterface &si, const OsiRowCutDebugger *debugger, OsiCuts &cs, double *colLower, double *colUpper, CoinPackedMatrix *rowCopy, double *rowLower, double *rowUpper, char *intVar, double *minR, double *maxR, int *markR, const CglTreeInfo info) const
 Does probing and adding cuts for clique slacks.
int gutsOfGenerateCuts (const OsiSolverInterface &si, OsiCuts &cs, double *rowLower, double *rowUpper, double *colLower, double *colUpper, const CglTreeInfo info) const
 Does most of work of generateCuts Returns number of infeasibilities.
void setupRowCliqueInformation (const OsiSolverInterface &si)
 Sets up clique information for each row.
int tighten (double *colLower, double *colUpper, const int *column, const double *rowElements, const CoinBigIndex *rowStart, const int *rowLength, double *rowLower, double *rowUpper, int nRows, int nCols, char *intVar, int maxpass, double tolerance) const
 This tightens column bounds (and can declare infeasibility) It may also declare rows to be redundant.
void tighten2 (double *colLower, double *colUpper, const int *column, const double *rowElements, const CoinBigIndex *rowStart, const int *rowLength, double *rowLower, double *rowUpper, double *minR, double *maxR, int *markR, int nRows, int nCols) const
 This just sets minima and maxima on rows.

Friends

struct CglProbing::disaggregation_struct_tag
void CglProbingUnitTest (const OsiSolverInterface *siP, const std::string mpdDir)
 A function that tests the methods in the CglProbing class.

Classes

struct  cliqueEntry
 Entries for clique. More...
struct  cliqueType
 Clique type. More...
struct  disaggregation_struct_tag
 Disaggregation cuts and for building cliques. More...
struct  disaggregationAction
 Only useful type of disaggregation is most normal For now just done for 0-1 variables Can be used for building cliques. More...

Detailed Description

Probing Cut Generator Class.

Definition at line 11 of file CglProbing.hpp.


Member Typedef Documentation

typedef struct CglProbing::disaggregation_struct_tag CglProbing::disaggregation [private]

Disaggregation cuts and for building cliques.


Constructor & Destructor Documentation

CglProbing::CglProbing (  ) 

Default constructor.

CglProbing::CglProbing ( const CglProbing  ) 

Copy constructor.

virtual CglProbing::~CglProbing (  )  [virtual]

Destructor.


Member Function Documentation

virtual void CglProbing::generateCuts ( const OsiSolverInterface si,
OsiCuts cs,
const CglTreeInfo  info = CglTreeInfo() 
) const [virtual]

Generate probing/disaggregation cuts for the model of the solver interface, si.

This is a simplification of probing ideas put into OSL about ten years ago. The only known documentation is a copy of a talk handout - we think Robin Lougee-Heimer has a copy!

For selected integer variables (e.g. unsatisfied ones) the effect of setting them up or down is investigated. Setting a variable up may in turn set other variables (continuous as well as integer). There are various possible results:

1) It is shown that problem is infeasible (this may also be because objective function or reduced costs show worse than best solution). If the other way is feasible we can generate a column cut (and continue probing), if not feasible we can say problem infeasible.

2) If both ways are feasible, it can happen that x to 0 implies y to 1 and x to 1 implies y to 1 (again a column cut). More common is that x to 0 implies y to 1 and x to 1 implies y to 0 so we could substitute for y which might lead later to more powerful cuts. This is not done in this code as there is no mechanism for returning information.

3) When x to 1 a constraint went slack by c. We can tighten the constraint ax + .... <= b (where a may be zero) to (a+c)x + .... <= b. If this cut is violated then it is generated.

4) Similarly we can generate implied disaggregation cuts

Note - differences to cuts in OSL.

a) OSL had structures intended to make this faster. b) The "chaining" in 2) was done c) Row cuts modified original constraint rather than adding cut b) This code can cope with general integer variables.

Insert the generated cuts into OsiCut, cs.

If a "snapshot" of a matrix exists then this will be used. Presumably this will give global cuts and will be faster. No check is done to see if cuts will be global.

Otherwise use current matrix.

Both row cuts and column cuts may be returned

The mode options are: 0) Only unsatisfied integer variables will be looked at. If no information exists for that variable then probing will be done so as a by-product you "may" get a fixing or infeasibility. This will be fast and is only available if a snapshot exists (otherwise as 1). The bounds in the snapshot are the ones used. 1) Look at unsatisfied integer variables, using current bounds. Probing will be done on all looked at. 2) Look at all integer variables, using current bounds. Probing will be done on all

If generateCutsAndModify is used then new relaxed row bounds and tightened coliumn bounds are generated Returns number of infeasibilities

Implements CglCutGenerator.

int CglProbing::generateCutsAndModify ( const OsiSolverInterface si,
OsiCuts cs,
const CglTreeInfo  info = CglTreeInfo() 
)

Generate probing/disaggregation cuts for the model of the solver interface, si.

This is a simplification of probing ideas put into OSL about ten years ago. The only known documentation is a copy of a talk handout - we think Robin Lougee-Heimer has a copy!

For selected integer variables (e.g. unsatisfied ones) the effect of setting them up or down is investigated. Setting a variable up may in turn set other variables (continuous as well as integer). There are various possible results:

1) It is shown that problem is infeasible (this may also be because objective function or reduced costs show worse than best solution). If the other way is feasible we can generate a column cut (and continue probing), if not feasible we can say problem infeasible.

2) If both ways are feasible, it can happen that x to 0 implies y to 1 and x to 1 implies y to 1 (again a column cut). More common is that x to 0 implies y to 1 and x to 1 implies y to 0 so we could substitute for y which might lead later to more powerful cuts. This is not done in this code as there is no mechanism for returning information.

3) When x to 1 a constraint went slack by c. We can tighten the constraint ax + .... <= b (where a may be zero) to (a+c)x + .... <= b. If this cut is violated then it is generated.

4) Similarly we can generate implied disaggregation cuts

Note - differences to cuts in OSL.

a) OSL had structures intended to make this faster. b) The "chaining" in 2) was done c) Row cuts modified original constraint rather than adding cut b) This code can cope with general integer variables.

Insert the generated cuts into OsiCut, cs.

If a "snapshot" of a matrix exists then this will be used. Presumably this will give global cuts and will be faster. No check is done to see if cuts will be global.

Otherwise use current matrix.

Both row cuts and column cuts may be returned

The mode options are: 0) Only unsatisfied integer variables will be looked at. If no information exists for that variable then probing will be done so as a by-product you "may" get a fixing or infeasibility. This will be fast and is only available if a snapshot exists (otherwise as 1). The bounds in the snapshot are the ones used. 1) Look at unsatisfied integer variables, using current bounds. Probing will be done on all looked at. 2) Look at all integer variables, using current bounds. Probing will be done on all

If generateCutsAndModify is used then new relaxed row bounds and tightened coliumn bounds are generated Returns number of infeasibilities

int CglProbing::generateCutsAndModify ( const OsiSolverInterface si,
OsiCuts cs,
CglTreeInfo info2 
)

Generate probing/disaggregation cuts for the model of the solver interface, si.

This is a simplification of probing ideas put into OSL about ten years ago. The only known documentation is a copy of a talk handout - we think Robin Lougee-Heimer has a copy!

For selected integer variables (e.g. unsatisfied ones) the effect of setting them up or down is investigated. Setting a variable up may in turn set other variables (continuous as well as integer). There are various possible results:

1) It is shown that problem is infeasible (this may also be because objective function or reduced costs show worse than best solution). If the other way is feasible we can generate a column cut (and continue probing), if not feasible we can say problem infeasible.

2) If both ways are feasible, it can happen that x to 0 implies y to 1 and x to 1 implies y to 1 (again a column cut). More common is that x to 0 implies y to 1 and x to 1 implies y to 0 so we could substitute for y which might lead later to more powerful cuts. This is not done in this code as there is no mechanism for returning information.

3) When x to 1 a constraint went slack by c. We can tighten the constraint ax + .... <= b (where a may be zero) to (a+c)x + .... <= b. If this cut is violated then it is generated.

4) Similarly we can generate implied disaggregation cuts

Note - differences to cuts in OSL.

a) OSL had structures intended to make this faster. b) The "chaining" in 2) was done c) Row cuts modified original constraint rather than adding cut b) This code can cope with general integer variables.

Insert the generated cuts into OsiCut, cs.

If a "snapshot" of a matrix exists then this will be used. Presumably this will give global cuts and will be faster. No check is done to see if cuts will be global.

Otherwise use current matrix.

Both row cuts and column cuts may be returned

The mode options are: 0) Only unsatisfied integer variables will be looked at. If no information exists for that variable then probing will be done so as a by-product you "may" get a fixing or infeasibility. This will be fast and is only available if a snapshot exists (otherwise as 1). The bounds in the snapshot are the ones used. 1) Look at unsatisfied integer variables, using current bounds. Probing will be done on all looked at. 2) Look at all integer variables, using current bounds. Probing will be done on all

If generateCutsAndModify is used then new relaxed row bounds and tightened coliumn bounds are generated Returns number of infeasibilities

int CglProbing::snapshot ( const OsiSolverInterface si,
char *  possible = NULL,
bool  withObjective = true 
)

Create a copy of matrix which is to be used this is to speed up process and to give global cuts Can give an array with 1 set to select, 0 to ignore column bounds are tightened If array given then values of 1 will be set to 0 if redundant.

Objective may be added as constraint Returns 1 if infeasible otherwise 0

void CglProbing::deleteSnapshot (  ) 

Deletes snapshot.

int CglProbing::createCliques ( OsiSolverInterface si,
int  minimumSize = 2,
int  maximumSize = 100,
bool  extendCliques = false 
)

Creates cliques for use by probing.

Only cliques >= minimumSize and < maximumSize created Can also try and extend cliques as a result of probing (root node). Returns number of cliques found.

void CglProbing::deleteCliques (  ) 

Delete all clique information.

const double* CglProbing::tightLower (  )  const

Lower.

const double* CglProbing::tightUpper (  )  const

Upper.

const double* CglProbing::relaxedRowLower (  )  const

Lower.

const double* CglProbing::relaxedRowUpper (  )  const

Upper.

void CglProbing::setMode ( int  mode  ) 

Set.

int CglProbing::getMode (  )  const

Get.

void CglProbing::setMaxPass ( int  value  ) 

Set maximum number of passes per node.

int CglProbing::getMaxPass (  )  const

Get maximum number of passes per node.

void CglProbing::setLogLevel ( int  value  ) 

Set log level - 0 none, 1 - a bit, 2 - more details.

int CglProbing::getLogLevel (  )  const

Get log level.

void CglProbing::setMaxProbe ( int  value  ) 

Set maximum number of unsatisfied variables to look at.

int CglProbing::getMaxProbe (  )  const

Get maximum number of unsatisfied variables to look at.

void CglProbing::setMaxLook ( int  value  ) 

Set maximum number of variables to look at in one probe.

int CglProbing::getMaxLook (  )  const

Get maximum number of variables to look at in one probe.

void CglProbing::setMaxElements ( int  value  ) 

Set maximum number of elements in row for it to be considered.

int CglProbing::getMaxElements (  )  const

Get maximum number of elements in row for it to be considered.

void CglProbing::setMaxPassRoot ( int  value  ) 

Set maximum number of passes per node (root node).

int CglProbing::getMaxPassRoot (  )  const

Get maximum number of passes per node (root node).

void CglProbing::setMaxProbeRoot ( int  value  ) 

Set maximum number of unsatisfied variables to look at (root node).

int CglProbing::getMaxProbeRoot (  )  const

Get maximum number of unsatisfied variables to look at (root node).

void CglProbing::setMaxLookRoot ( int  value  ) 

Set maximum number of variables to look at in one probe (root node).

int CglProbing::getMaxLookRoot (  )  const

Get maximum number of variables to look at in one probe (root node).

void CglProbing::setMaxElementsRoot ( int  value  ) 

Set maximum number of elements in row for it to be considered (root node).

int CglProbing::getMaxElementsRoot (  )  const

Get maximum number of elements in row for it to be considered (root node).

virtual bool CglProbing::mayGenerateRowCutsInTree (  )  const [virtual]

Returns true if may generate Row cuts in tree (rather than root node).

Used so know if matrix will change in tree. Really meant so column cut generators can still be active without worrying code. Default is true

Reimplemented from CglCutGenerator.

void CglProbing::setRowCuts ( int  type  ) 

Set 0 no cuts, 1 just disaggregation type, 2 coefficient ( 3 both).

int CglProbing::rowCuts (  )  const

Get.

void CglProbing::setUsingObjective ( bool  yesNo  ) 

Set.

int CglProbing::getUsingObjective (  )  const

Get.

virtual CglCutGenerator* CglProbing::clone (  )  const [virtual]

Clone.

Implements CglCutGenerator.

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

Assignment operator.

virtual void CglProbing::refreshSolver ( OsiSolverInterface solver  )  [virtual]

This can be used to refresh any inforamtion.

Reimplemented from CglCutGenerator.

virtual std::string CglProbing::generateCpp ( FILE *  fp  )  [virtual]

Create C++ lines to get to current state.

Reimplemented from CglCutGenerator.

int CglProbing::probe ( const OsiSolverInterface si,
const OsiRowCutDebugger debugger,
OsiCuts cs,
double *  colLower,
double *  colUpper,
CoinPackedMatrix rowCopy,
double *  rowLower,
double *  rowUpper,
char *  intVar,
double *  minR,
double *  maxR,
int *  markR,
int *  look,
int  nlook,
const CglTreeInfo  info 
) const [private]

Does probing and adding cuts (without cliques and mode_!=0).

int CglProbing::probeCliques ( const OsiSolverInterface si,
const OsiRowCutDebugger debugger,
OsiCuts cs,
double *  colLower,
double *  colUpper,
CoinPackedMatrix rowCopy,
double *  rowLower,
double *  rowUpper,
char *  intVar,
double *  minR,
double *  maxR,
int *  markR,
int *  look,
int  nlook,
const CglTreeInfo  info 
) const [private]

Does probing and adding cuts (with cliques).

int CglProbing::probeSlacks ( const OsiSolverInterface si,
const OsiRowCutDebugger debugger,
OsiCuts cs,
double *  colLower,
double *  colUpper,
CoinPackedMatrix rowCopy,
double *  rowLower,
double *  rowUpper,
char *  intVar,
double *  minR,
double *  maxR,
int *  markR,
const CglTreeInfo  info 
) const [private]

Does probing and adding cuts for clique slacks.

int CglProbing::gutsOfGenerateCuts ( const OsiSolverInterface si,
OsiCuts cs,
double *  rowLower,
double *  rowUpper,
double *  colLower,
double *  colUpper,
const CglTreeInfo  info 
) const [private]

Does most of work of generateCuts Returns number of infeasibilities.

void CglProbing::setupRowCliqueInformation ( const OsiSolverInterface si  )  [private]

Sets up clique information for each row.

int CglProbing::tighten ( double *  colLower,
double *  colUpper,
const int *  column,
const double *  rowElements,
const CoinBigIndex rowStart,
const int *  rowLength,
double *  rowLower,
double *  rowUpper,
int  nRows,
int  nCols,
char *  intVar,
int  maxpass,
double  tolerance 
) const [private]

This tightens column bounds (and can declare infeasibility) It may also declare rows to be redundant.

void CglProbing::tighten2 ( double *  colLower,
double *  colUpper,
const int *  column,
const double *  rowElements,
const CoinBigIndex rowStart,
const int *  rowLength,
double *  rowLower,
double *  rowUpper,
double *  minR,
double *  maxR,
int *  markR,
int  nRows,
int  nCols 
) const [private]

This just sets minima and maxima on rows.


Friends And Related Function Documentation

friend struct CglProbing::disaggregation_struct_tag [friend]

Definition at line 295 of file CglProbing.hpp.

void CglProbingUnitTest ( const OsiSolverInterface siP,
const std::string  mpdDir 
) [friend]

A function that tests the methods in the CglProbing 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.


Member Data Documentation

CoinPackedMatrix* CglProbing::rowCopy_ [private]

Row copy (only if snapshot).

Definition at line 301 of file CglProbing.hpp.

CoinPackedMatrix* CglProbing::columnCopy_ [private]

Column copy (only if snapshot).

Definition at line 303 of file CglProbing.hpp.

double* CglProbing::rowLower_ [private]

Lower bounds on rows.

Definition at line 305 of file CglProbing.hpp.

double* CglProbing::rowUpper_ [private]

Upper bounds on rows.

Definition at line 307 of file CglProbing.hpp.

double* CglProbing::colLower_ [private]

Lower bounds on columns.

Definition at line 309 of file CglProbing.hpp.

double* CglProbing::colUpper_ [private]

Upper bounds on columns.

Definition at line 311 of file CglProbing.hpp.

int CglProbing::numberRows_ [mutable, private]

Number of rows in snapshot (or when cliqueRow stuff computed).

Definition at line 313 of file CglProbing.hpp.

int CglProbing::numberColumns_ [mutable, private]

Number of columns in problem ( must == current).

Definition at line 315 of file CglProbing.hpp.

double CglProbing::primalTolerance_ [private]

Tolerance to see if infeasible.

Definition at line 317 of file CglProbing.hpp.

int CglProbing::mode_ [private]

Mode - 0 lazy using snapshot, 1 just unsatisfied, 2 all.

16 bit set if want to extend cliques at root node

Definition at line 321 of file CglProbing.hpp.

int CglProbing::rowCuts_ [mutable, private]

Row cuts flag 0 no cuts, 1 just disaggregation type, 2 coefficient ( 3 both), 4 just column cuts -n as +n but just fixes variables unless at root.

Definition at line 326 of file CglProbing.hpp.

int CglProbing::maxPass_ [private]

Maximum number of passes to do in probing.

Definition at line 328 of file CglProbing.hpp.

int CglProbing::logLevel_ [private]

Log level - 0 none, 1 - a bit, 2 - more details.

Definition at line 330 of file CglProbing.hpp.

int CglProbing::maxProbe_ [private]

Maximum number of unsatisfied variables to probe.

Definition at line 332 of file CglProbing.hpp.

int CglProbing::maxStack_ [private]

Maximum number of variables to look at in one probe.

Definition at line 334 of file CglProbing.hpp.

int CglProbing::maxElements_ [private]

Maximum number of elements in row for scan.

Definition at line 336 of file CglProbing.hpp.

int CglProbing::maxPassRoot_ [private]

Maximum number of passes to do in probing at root.

Definition at line 338 of file CglProbing.hpp.

int CglProbing::maxProbeRoot_ [private]

Maximum number of unsatisfied variables to probe at root.

Definition at line 340 of file CglProbing.hpp.

int CglProbing::maxStackRoot_ [private]

Maximum number of variables to look at in one probe at root.

Definition at line 342 of file CglProbing.hpp.

int CglProbing::maxElementsRoot_ [private]

Maximum number of elements in row for scan at root.

Definition at line 344 of file CglProbing.hpp.

bool CglProbing::usingObjective_ [private]

Whether to include objective as constraint.

Definition at line 346 of file CglProbing.hpp.

int CglProbing::numberIntegers_ [private]

Number of integer variables.

Definition at line 348 of file CglProbing.hpp.

int CglProbing::number01Integers_ [private]

Number of 0-1 integer variables.

Definition at line 350 of file CglProbing.hpp.

disaggregation* CglProbing::cutVector_ [private]

Disaggregation cuts and for building cliques.

Definition at line 368 of file CglProbing.hpp.

int CglProbing::numberCliques_ [private]

Cliques Number of cliques.

Definition at line 371 of file CglProbing.hpp.

cliqueType* CglProbing::cliqueType_ [private]

Disaggregation cuts and for building cliques.

Definition at line 376 of file CglProbing.hpp.

int* CglProbing::cliqueStart_ [private]

Start of each clique.

Definition at line 378 of file CglProbing.hpp.

cliqueEntry* CglProbing::cliqueEntry_ [private]

Disaggregation cuts and for building cliques.

Definition at line 384 of file CglProbing.hpp.

int* CglProbing::oneFixStart_ [private]

Start of oneFixes cliques for a column in matrix or -1 if not in any clique.

Definition at line 387 of file CglProbing.hpp.

int* CglProbing::zeroFixStart_ [private]

Start of zeroFixes cliques for a column in matrix or -1 if not in any clique.

Definition at line 390 of file CglProbing.hpp.

int* CglProbing::endFixStart_ [private]

End of fixes for a column.

Definition at line 392 of file CglProbing.hpp.

int* CglProbing::whichClique_ [private]

Clique numbers for one or zero fixes.

Definition at line 394 of file CglProbing.hpp.

cliqueEntry* CglProbing::cliqueRow_ [private]

For each column with nonzero in row copy this gives a clique "number".

So first clique mentioned in row is always 0. If no entries for row then no cliques. If sequence > numberColumns then not in clique.

Definition at line 399 of file CglProbing.hpp.

int* CglProbing::cliqueRowStart_ [private]

cliqueRow_ starts for each row

Definition at line 401 of file CglProbing.hpp.


The documentation for this class was generated from the following file:
Generated on Thu May 15 22:00:14 2008 by  doxygen 1.4.7