Loading...
Searching...
No Matches
CglProbing Class Reference

Probing Cut Generator Class. More...

`#include <CglProbing.hpp>`

Inheritance diagram for CglProbing:
[legend]
Collaboration diagram for CglProbing:
[legend]

## Classes

struct | CliqueType
| Clique type. More...
struct | disaggregation_struct_tag
| Disaggregation cuts and for building cliques. More...

## Public Member Functions

Generate Cuts
virtual void | generateCuts (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 *info)
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)
| Creates cliques for use by probing.
void | deleteCliques ()
| Delete all clique information.
OsiSolverInterface * | cliqueModel (const OsiSolverInterface *model, int type)
| Create a fake model by adding cliques if type&4 then delete rest of model first, if 1 then add proper cliques, 2 add fake cliques.
Get tighter column bounds
const double * | tightLower () const
| Lower.
const double * | tightUpper () const
| Upper.
const char * | tightenBounds () const
| Array which says tighten continuous.
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).
Get information back from probing
int | numberThisTime () const
| Number looked at this time.
const int * | lookedAt () const
| Which ones looked at this time.
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.
Information on cliques
int | numberCliques () const
| Number of cliques.
CliqueType * | cliqueType () const
| Clique type.
CoinBigIndex * | cliqueStart () const
| Start of each clique.
CliqueEntry * | cliqueEntry () const
| Entries for clique.
Whether use objective as constraint
void | setUsingObjective (int yesNo)
| Set 0 don't 1 do -1 don't even think about it.
int | getUsingObjective () const
| Get.
Mark which continuous variables are to be tightened
void | tightenThese (const OsiSolverInterface &solver, int number, const int *which)
| Mark variables to be tightened.
Constructors and destructors
| CglProbing ()
| Default constructor.
| CglProbing (const CglProbing &)
| Copy constructor.
virtual CglCutGenerator * | clone () const
| Clone.
CglProbing & | operator= (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.
Public Member Functions inherited from CglCutGenerator
| CglCutGenerator ()
| Default constructor.
| CglCutGenerator (const CglCutGenerator &)
| Copy constructor.
CglCutGenerator & | operator= (const CglCutGenerator &rhs)
| Assignment operator.
virtual | ~CglCutGenerator ()
| Destructor.
int | getAggressiveness () const
| Get Aggressiveness - 0 = neutral, 100 is normal root node.
void | setAggressiveness (int value)
| Set Aggressiveness - 0 = neutral, 100 is normal root node.
void | setGlobalCuts (bool trueOrFalse)
| Set whether can do global cuts.
bool | canDoGlobalCuts () const
| Say whether can do global cuts.
virtual bool | needsOptimalBasis () const
| Return true if needs optimal basis to do cuts.
virtual int | maximumLengthOfCutInTree () const
| Return maximum length of cut in tree.

## Friends

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

## Private member data

typedef struct CglProbing::disaggregation_struct_tag | disaggregation
| Disaggregation cuts and for building cliques.
CoinPackedMatrix * | rowCopy_
| Row copy (only if snapshot).
CoinPackedMatrix * | columnCopy_
| 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.
int | usingObjective_
| Whether to include objective as constraint.
int | numberIntegers_
| Number of integer variables.
int | number01Integers_
| Number of 0-1 integer variables.
int | numberThisTime_
| Number looked at this time.
int | totalTimesCalled_
| Total number of times called.
int * | lookedAt_
| Which ones looked at this time.
disaggregation * | cutVector_
int | numberCliques_
| Cliques Number of cliques.
CliqueType * | cliqueType_
| Clique type.
CoinBigIndex * | cliqueStart_
| Start of each clique.
CliqueEntry * | cliqueEntry_
| Entries for clique.
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.
CliqueEntry * | cliqueRow_
| For each column with nonzero in row copy this gives a clique "number".
int * | cliqueRowStart_
| cliqueRow_ starts for each row
char * | tightenBounds_
| If not null and [i] !=0 then also tighten even if continuous.

## probe

struct | CglProbing::disaggregation_struct_tag
int | probe (const OsiSolverInterface &si, const OsiRowCutDebugger *debugger, OsiCuts &cs, double *colLower, double *colUpper, CoinPackedMatrix *rowCopy, CoinPackedMatrix *columnCopy, const CoinBigIndex *rowStartPos, const int *realRow, const double *rowLower, const double *rowUpper, const char *intVar, double *minR, double *maxR, int *markR, CglTreeInfo *info)
| 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, CoinPackedMatrix *columnCopy, const int *realRow, double *rowLower, double *rowUpper, char *intVar, double *minR, double *maxR, int *markR, CglTreeInfo *info)
| Does probing and adding cuts (with cliques).
int | probeSlacks (const OsiSolverInterface &si, const OsiRowCutDebugger *debugger, OsiCuts &cs, double *colLower, double *colUpper, CoinPackedMatrix *rowCopy, CoinPackedMatrix *columnCopy, double *rowLower, double *rowUpper, char *intVar, double *minR, double *maxR, int *markR, CglTreeInfo *info)
| Does probing and adding cuts for clique slacks.
int | gutsOfGenerateCuts (const OsiSolverInterface &si, OsiCuts &cs, double *rowLower, double *rowUpper, double *colLower, double *colUpper, CglTreeInfo *info)
| 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 CoinBigIndex *rowStartPos, const int *rowLength, double *rowLower, double *rowUpper, int nRows, int nCols, char *intVar, int maxpass, double tolerance)
| 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)
| This just sets minima and maxima on rows.

## Additional Inherited Members

int | aggressive_
| Aggressiveness - 0 = neutral, 100 is normal root node.
bool | canDoGlobalCuts_
| True if can do global cuts i.e. no general integers.

## Detailed Description

Probing Cut Generator Class.

Definition at line 25 of file CglProbing.hpp.

## Member Typedef Documentation

## disaggregation

typedef struct CglProbing::disaggregation_struct_tag CglProbing::disaggregation

private

Disaggregation cuts and for building cliques.

## Constructor & Destructor Documentation

## CglProbing() [1/2]

CglProbing::CglProbing | ( |  | ) |

Default constructor.

## CglProbing() [2/2]

CglProbing::CglProbing | ( | const CglProbing & |  | ) |

Copy constructor.

## ~CglProbing()

virtual CglProbing::~CglProbing | ( |  | ) |

virtual

Destructor.

## Member Function Documentation

## generateCuts()

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

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 column bounds are generated Returns number of infeasibilities

Implements CglCutGenerator.

## generateCutsAndModify()

int CglProbing::generateCutsAndModify | ( | const OsiSolverInterface & | si,
|  | OsiCuts & | cs,
|  | CglTreeInfo * | info )

## snapshot()

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

## deleteSnapshot()

void CglProbing::deleteSnapshot | ( |  | ) |

Deletes snapshot.

## createCliques()

int CglProbing::createCliques | ( | OsiSolverInterface & | si,
|  | int | minimumSize = 2,
|  | int | maximumSize = 100 )

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.

## deleteCliques()

void CglProbing::deleteCliques | ( |  | ) |

Delete all clique information.

## cliqueModel()

OsiSolverInterface * CglProbing::cliqueModel | ( | const OsiSolverInterface * | model,
|  | int | type )

Create a fake model by adding cliques if type&4 then delete rest of model first, if 1 then add proper cliques, 2 add fake cliques.

## tightLower()

const double * CglProbing::tightLower | ( |  | ) | const

Lower.

## tightUpper()

const double * CglProbing::tightUpper | ( |  | ) | const

Upper.

## tightenBounds()

const char * CglProbing::tightenBounds | ( |  | ) | const

inline

Array which says tighten continuous.

Definition at line 143 of file CglProbing.hpp.

## relaxedRowLower()

const double * CglProbing::relaxedRowLower | ( |  | ) | const

Lower.

## relaxedRowUpper()

const double * CglProbing::relaxedRowUpper | ( |  | ) | const

Upper.

## setMode()

void CglProbing::setMode | ( | int | mode | ) |

Set.

## getMode()

int CglProbing::getMode | ( |  | ) | const

Get.

## setMaxPass()

void CglProbing::setMaxPass | ( | int | value | ) |

Set maximum number of passes per node.

## getMaxPass()

int CglProbing::getMaxPass | ( |  | ) | const

Get maximum number of passes per node.

## setLogLevel()

void CglProbing::setLogLevel | ( | int | value | ) |

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

## getLogLevel()

int CglProbing::getLogLevel | ( |  | ) | const

Get log level.

## setMaxProbe()

void CglProbing::setMaxProbe | ( | int | value | ) |

Set maximum number of unsatisfied variables to look at.

## getMaxProbe()

int CglProbing::getMaxProbe | ( |  | ) | const

Get maximum number of unsatisfied variables to look at.

## setMaxLook()

void CglProbing::setMaxLook | ( | int | value | ) |

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

## getMaxLook()

int CglProbing::getMaxLook | ( |  | ) | const

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

## setMaxElements()

void CglProbing::setMaxElements | ( | int | value | ) |

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

## getMaxElements()

int CglProbing::getMaxElements | ( |  | ) | const

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

## setMaxPassRoot()

void CglProbing::setMaxPassRoot | ( | int | value | ) |

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

## getMaxPassRoot()

int CglProbing::getMaxPassRoot | ( |  | ) | const

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

## setMaxProbeRoot()

void CglProbing::setMaxProbeRoot | ( | int | value | ) |

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

## getMaxProbeRoot()

int CglProbing::getMaxProbeRoot | ( |  | ) | const

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

## setMaxLookRoot()

void CglProbing::setMaxLookRoot | ( | int | value | ) |

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

## getMaxLookRoot()

int CglProbing::getMaxLookRoot | ( |  | ) | const

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

## setMaxElementsRoot()

void CglProbing::setMaxElementsRoot | ( | int | value | ) |

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

## getMaxElementsRoot()

int CglProbing::getMaxElementsRoot | ( |  | ) | const

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

## mayGenerateRowCutsInTree()

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.

## numberThisTime()

int CglProbing::numberThisTime | ( |  | ) | const

inline

Number looked at this time.

Definition at line 214 of file CglProbing.hpp.

## lookedAt()

const int * CglProbing::lookedAt | ( |  | ) | const

inline

Which ones looked at this time.

Definition at line 217 of file CglProbing.hpp.

## setRowCuts()

void CglProbing::setRowCuts | ( | int | type | ) |

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

## rowCuts()

int CglProbing::rowCuts | ( |  | ) | const

Get.

## numberCliques()

int CglProbing::numberCliques | ( |  | ) | const

inline

Number of cliques.

Definition at line 237 of file CglProbing.hpp.

## cliqueType()

CliqueType * CglProbing::cliqueType | ( |  | ) | const

inline

Clique type.

Definition at line 240 of file CglProbing.hpp.

## cliqueStart()

CoinBigIndex * CglProbing::cliqueStart | ( |  | ) | const

inline

Start of each clique.

Definition at line 243 of file CglProbing.hpp.

## cliqueEntry()

CliqueEntry * CglProbing::cliqueEntry | ( |  | ) | const

inline

Entries for clique.

Definition at line 246 of file CglProbing.hpp.

## setUsingObjective()

void CglProbing::setUsingObjective | ( | int | yesNo | ) |

Set 0 don't 1 do -1 don't even think about it.

## getUsingObjective()

int CglProbing::getUsingObjective | ( |  | ) | const

Get.

## tightenThese()

void CglProbing::tightenThese | ( | const OsiSolverInterface & | solver,
|  | int | number,
|  | const int * | which )

Mark variables to be tightened.

## clone()

virtual CglCutGenerator * CglProbing::clone | ( |  | ) | const

virtual

Clone.

Implements CglCutGenerator.

## operator=()

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

Assignment operator.

## refreshSolver()

virtual void CglProbing::refreshSolver | ( | OsiSolverInterface * | solver | ) |

virtual

This can be used to refresh any inforamtion.

Reimplemented from CglCutGenerator.

## generateCpp()

virtual std::string CglProbing::generateCpp | ( | FILE * | fp | ) |

virtual

Create C++ lines to get to current state.

Reimplemented from CglCutGenerator.

## probe()

int CglProbing::probe | ( | const OsiSolverInterface & | si,
|  | const OsiRowCutDebugger * | debugger,
|  | OsiCuts & | cs,
|  | double * | colLower,
|  | double * | colUpper,
|  | CoinPackedMatrix * | rowCopy,
|  | CoinPackedMatrix * | columnCopy,
|  | const CoinBigIndex * | rowStartPos,
|  | const int * | realRow,
|  | const double * | rowLower,
|  | const double * | rowUpper,
|  | const char * | intVar,
|  | double * | minR,
|  | double * | maxR,
|  | int * | markR,
|  | CglTreeInfo * | info )

private

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

## probeCliques()

int CglProbing::probeCliques | ( | const OsiSolverInterface & | si,
|  | const OsiRowCutDebugger * | debugger,
|  | OsiCuts & | cs,
|  | double * | colLower,
|  | double * | colUpper,
|  | CoinPackedMatrix * | rowCopy,
|  | CoinPackedMatrix * | columnCopy,
|  | const int * | realRow,
|  | double * | rowLower,
|  | double * | rowUpper,
|  | char * | intVar,
|  | double * | minR,
|  | double * | maxR,
|  | int * | markR,
|  | CglTreeInfo * | info )

private

Does probing and adding cuts (with cliques).

## probeSlacks()

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

private

Does probing and adding cuts for clique slacks.

## gutsOfGenerateCuts()

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

private

Does most of work of generateCuts Returns number of infeasibilities.

## setupRowCliqueInformation()

void CglProbing::setupRowCliqueInformation | ( | const OsiSolverInterface & | si | ) |

private

Sets up clique information for each row.

## tighten()

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

private

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

## tighten2()

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 )

private

This just sets minima and maxima on rows.

## Friends And Related Symbol Documentation

## CglProbing::disaggregation_struct_tag

friend struct CglProbing::disaggregation_struct_tag

friend

Definition at line 358 of file CglProbing.hpp.

## CglProbingUnitTest

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

## rowCopy_

CoinPackedMatrix* CglProbing::rowCopy_

private

Row copy (only if snapshot).

Definition at line 363 of file CglProbing.hpp.

## columnCopy_

CoinPackedMatrix* CglProbing::columnCopy_

private

Column copy (only if snapshot).

Definition at line 365 of file CglProbing.hpp.

## rowLower_

double* CglProbing::rowLower_

private

Lower bounds on rows.

Definition at line 367 of file CglProbing.hpp.

## rowUpper_

double* CglProbing::rowUpper_

private

Upper bounds on rows.

Definition at line 369 of file CglProbing.hpp.

## colLower_

double* CglProbing::colLower_

private

Lower bounds on columns.

Definition at line 371 of file CglProbing.hpp.

## colUpper_

double* CglProbing::colUpper_

private

Upper bounds on columns.

Definition at line 373 of file CglProbing.hpp.

## numberRows_

int CglProbing::numberRows_

private

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

Definition at line 375 of file CglProbing.hpp.

## numberColumns_

int CglProbing::numberColumns_

private

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

Definition at line 377 of file CglProbing.hpp.

## primalTolerance_

double CglProbing::primalTolerance_

private

Tolerance to see if infeasible.

Definition at line 379 of file CglProbing.hpp.

## mode_

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 383 of file CglProbing.hpp.

## rowCuts_

int CglProbing::rowCuts_

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 388 of file CglProbing.hpp.

## maxPass_

int CglProbing::maxPass_

private

Maximum number of passes to do in probing.

Definition at line 390 of file CglProbing.hpp.

## logLevel_

int CglProbing::logLevel_

private

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

Definition at line 392 of file CglProbing.hpp.

## maxProbe_

int CglProbing::maxProbe_

private

Maximum number of unsatisfied variables to probe.

Definition at line 394 of file CglProbing.hpp.

## maxStack_

int CglProbing::maxStack_

private

Maximum number of variables to look at in one probe.

Definition at line 396 of file CglProbing.hpp.

## maxElements_

int CglProbing::maxElements_

private

Maximum number of elements in row for scan.

Definition at line 398 of file CglProbing.hpp.

## maxPassRoot_

int CglProbing::maxPassRoot_

private

Maximum number of passes to do in probing at root.

Definition at line 400 of file CglProbing.hpp.

## maxProbeRoot_

int CglProbing::maxProbeRoot_

private

Maximum number of unsatisfied variables to probe at root.

Definition at line 402 of file CglProbing.hpp.

## maxStackRoot_

int CglProbing::maxStackRoot_

private

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

Definition at line 404 of file CglProbing.hpp.

## maxElementsRoot_

int CglProbing::maxElementsRoot_

private

Maximum number of elements in row for scan at root.

Definition at line 406 of file CglProbing.hpp.

## usingObjective_

int CglProbing::usingObjective_

private

Whether to include objective as constraint.

Definition at line 408 of file CglProbing.hpp.

## numberIntegers_

int CglProbing::numberIntegers_

private

Number of integer variables.

Definition at line 410 of file CglProbing.hpp.

## number01Integers_

int CglProbing::number01Integers_

private

Number of 0-1 integer variables.

Definition at line 412 of file CglProbing.hpp.

## numberThisTime_

int CglProbing::numberThisTime_

private

Number looked at this time.

Definition at line 414 of file CglProbing.hpp.

## totalTimesCalled_

int CglProbing::totalTimesCalled_

private

Total number of times called.

Definition at line 416 of file CglProbing.hpp.

## lookedAt_

int* CglProbing::lookedAt_

private

Which ones looked at this time.

Definition at line 418 of file CglProbing.hpp.

## cutVector_

disaggregation* CglProbing::cutVector_

private

Definition at line 426 of file CglProbing.hpp.

## numberCliques_

int CglProbing::numberCliques_

private

Cliques Number of cliques.

Definition at line 429 of file CglProbing.hpp.

## cliqueType_

CliqueType* CglProbing::cliqueType_

private

Clique type.

Definition at line 431 of file CglProbing.hpp.

## cliqueStart_

CoinBigIndex* CglProbing::cliqueStart_

private

Start of each clique.

Definition at line 433 of file CglProbing.hpp.

## cliqueEntry_

CliqueEntry* CglProbing::cliqueEntry_

private

Entries for clique.

Definition at line 435 of file CglProbing.hpp.

## oneFixStart_

int* CglProbing::oneFixStart_

private

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

Definition at line 438 of file CglProbing.hpp.

## zeroFixStart_

int* CglProbing::zeroFixStart_

private

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

Definition at line 441 of file CglProbing.hpp.

## endFixStart_

int* CglProbing::endFixStart_

private

End of fixes for a column.

Definition at line 443 of file CglProbing.hpp.

## whichClique_

int* CglProbing::whichClique_

private

Clique numbers for one or zero fixes.

Definition at line 445 of file CglProbing.hpp.

## cliqueRow_

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 450 of file CglProbing.hpp.

## cliqueRowStart_

int* CglProbing::cliqueRowStart_

private

cliqueRow_ starts for each row

Definition at line 452 of file CglProbing.hpp.

## tightenBounds_

char* CglProbing::tightenBounds_

private

If not null and [i] !=0 then also tighten even if continuous.

Definition at line 454 of file CglProbing.hpp.

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

- Cgl/src/CglProbing/CglProbing.hpp