- Main Page
- Modules
- Namespaces
- Classes
- Files
- Related Pages

- Alphabetical List
- Class List
- Class Hierarchy
- Class Members

# CglPreProcess Class Reference

Class for preProcessing and postProcessing. More...

`#include <CglPreProcess.hpp>`

Collaboration diagram for CglPreProcess:

[legend]
List of all members.

## Public Member Functions
Main methods
OsiSolverInterface * | preProcess (OsiSolverInterface &model, bool makeEquality=false, int numberPasses=5)
| preProcess problem - returning new problem.
OsiSolverInterface * | preProcessNonDefault (OsiSolverInterface &model, int makeEquality=0, int numberPasses=5, int tuning=0)
| preProcess problem - returning new problem.
void | postProcess (OsiSolverInterface &model)
| Creates solution in original model.
int | tightenPrimalBounds (OsiSolverInterface &model, double factor=0.0)
| Tightens primal bounds to make dual and branch and cutfaster.
OsiSolverInterface * | someFixed (OsiSolverInterface &model, double fractionToKeep=0.25, bool fixContinuousAsWell=false, char *keep=NULL) const
| Fix some of problem - returning new problem.
int | reducedCostFix (OsiSolverInterface &model)
| If we have a cutoff - fix variables.
Parameter set/get methods
The set methods return true if the parameter was set to the given value, false if the value of the parameter is out of range. The get methods return the value of the parameter.
void | setCutoff (double value)
| Set cutoff bound on the objective function.
double | getCutoff () const
| Get the cutoff bound on the objective function - always as minimize.
OsiSolverInterface * | originalModel () const
| The original solver associated with this model.
OsiSolverInterface * | startModel () const
| Solver after making clique equalities (may == original).
OsiSolverInterface * | modelAtPass (int iPass) const
| Copies of solver at various stages after presolve.
OsiSolverInterface * | modifiedModel (int iPass) const
| Copies of solver at various stages after presolve after modifications.
OsiPresolve * | presolve (int iPass) const
| Matching presolve information.
const int * | originalColumns () const
| Return a pointer to the original columns (with possible clique slacks) MUST be called before postProcess otherwise you just get 0,1,2.
const int * | originalRows () const
| Return a pointer to the original rows MUST be called before postProcess otherwise you just get 0,1,2.
int | numberSOS () const
| Number of SOS if found.
const int * | typeSOS () const
| Type of each SOS.
const int * | startSOS () const
| Start of each SOS.
const int * | whichSOS () const
| Columns in SOS.
const double * | weightSOS () const
| Weights for each SOS column.
void | passInProhibited (const char *prohibited, int numberColumns)
| Pass in prohibited columns.
const char * | prohibited ()
| Updated prohibited columns.
int | numberIterationsPre () const
| Number of iterations PreProcessing.
int | numberIterationsPost () const
| Number of iterations PostProcessing.
void | passInRowTypes (const char *rowTypes, int numberRows)
| Pass in row types 0 normal 1 cut rows - will be dropped if remain in At end of preprocess cut rows will be dropped and put into cuts.
const char * | rowTypes ()
| Updated row types - may be NULL Carried around and corresponds to existing rows -1 added by preprocess e.g.
const CglStored & | cuts () const
| Return cuts from dropped rows.
const CglStored * | cutsPointer () const
| Return pointer to cuts from dropped rows.
void | update (const OsiPresolve *pinfo, const OsiSolverInterface *solver)
| Update prohibited and rowType.
void | setOptions (int value)
| Set options.
Cut generator methods
int | numberCutGenerators () const
| Get the number of cut generators.
CglCutGenerator ** | cutGenerators () const
| Get the list of cut generators.
CglCutGenerator * | cutGenerator (int i) const
| Get the specified cut generator.
void | addCutGenerator (CglCutGenerator *generator)
| Add one generator - up to user to delete generators.
Setting/Accessing application data
void | setApplicationData (void *appData)
| Set application data.
void * | getApplicationData () const
| Get application data.
Message handling
void | passInMessageHandler (CoinMessageHandler *handler)
| Pass in Message handler (not deleted at end).
void | newLanguage (CoinMessages::Language language)
| Set language.
void | setLanguage (CoinMessages::Language language)
| Pass in Message handler (not deleted at end).
CoinMessageHandler * | messageHandler () const
| Return handler.
CoinMessages | messages ()
| Return messages.
CoinMessages * | messagesPointer ()
| Return pointer to messages.
Constructors and destructors etc
| CglPreProcess ()
| Constructor.
| CglPreProcess (const CglPreProcess &rhs)
| Copy constructor .
CglPreProcess & | operator= (const CglPreProcess &rhs)
| Assignment operator.
| ~CglPreProcess ()
| Destructor.
void | gutsOfDestructor ()
| Clears out as much as possible.
## Private Member Functions
private methods
OsiSolverInterface * | modified (OsiSolverInterface *model, bool constraints, int &numberChanges, int iBigPass, int numberPasses)
| Return model with useful modifications.
void | createOriginalIndices () const
| create original columns and rows
void | makeInteger ()
| Make continuous variables integer.
## Private Attributes
Private member data
OsiSolverInterface * | originalModel_
| The original solver associated with this model.
OsiSolverInterface * | startModel_
| Solver after making clique equalities (may == original).
int | numberSolvers_
| Number of solvers at various stages.
OsiSolverInterface ** | model_
| Copies of solver at various stages after presolve.
OsiSolverInterface ** | modifiedModel_
| Copies of solver at various stages after presolve after modifications.
OsiPresolve ** | presolve_
| Matching presolve information.
CoinMessageHandler * | handler_
| Message handler.
bool | defaultHandler_
| Flag to say if handler_ is the default handler.
CoinMessages | messages_
| Cgl messages.
void * | appData_
| Pointer to user-defined data structure.
int * | originalColumn_
| Original column numbers.
int * | originalRow_
| Original row numbers.
int | numberCutGenerators_
| Number of cut generators.
CglCutGenerator ** | generator_
| Cut generators.
int | numberSOS_
| Number of SOS if found.
int * | typeSOS_
| Type of each SOS.
int * | startSOS_
| Start of each SOS.
int * | whichSOS_
| Columns in SOS.
double * | weightSOS_
| Weights for each SOS column.
int | numberProhibited_
| Number of columns in original prohibition set.
int | numberIterationsPre_
| Number of iterations done in PreProcessing.
int | numberIterationsPost_
| Number of iterations done in PostProcessing.
char * | prohibited_
| Columns which should not be presolved e.g. SOS.
int | numberRowType_
| Number of rows in original row types.
int | options_
| Options 1 - original model had integer bounds before tightening.
char * | rowType_
| Row types (may be NULL) Carried around and corresponds to existing rows -1 added by preprocess e.g.
CglStored | cuts_
| Cuts from dropped rows.

## Detailed Description

Class for preProcessing and postProcessing.

While cuts can be added at any time in the tree, some cuts are actually just stronger versions of existing constraints. In this case they can replace those constraints rather than being added as new constraints. This is awkward in the tree but reasonable at the root node.

This is a general process class which uses other cut generators to strengthen constraints, establish that constraints are redundant, fix variables and find relationships such as x + y == 1.

Presolve will also be done.

If row names existed they may be replaced by R0000000 etc

Definition at line 35 of file CglPreProcess.hpp.

## Constructor & Destructor Documentation

CglPreProcess::CglPreProcess | ( |  | ) |

Constructor.

CglPreProcess::CglPreProcess | ( | const CglPreProcess & | rhs | ) |

Copy constructor .

CglPreProcess::~CglPreProcess | ( |  | ) |

Destructor.

## Member Function Documentation

OsiSolverInterface* CglPreProcess::preProcess | ( | OsiSolverInterface & | model,
|  | bool | makeEquality = `false`,
|  | int | numberPasses = `5` |
| ) |  |  |

preProcess problem - returning new problem.

If makeEquality true then <= cliques converted to ==. Presolve will be done numberPasses times.

Returns NULL if infeasible

This version uses default strategy. For more control copy and edit code from this function i.e. call preProcessNonDefault

OsiSolverInterface* CglPreProcess::preProcessNonDefault | ( | OsiSolverInterface & | model,
|  | int | makeEquality = `0`,
|  | int | numberPasses = `5`,
|  | int | tuning = `0` |
| ) |  |  |

preProcess problem - returning new problem.

If makeEquality true then <= cliques converted to ==. Presolve will be done numberPasses times.

Returns NULL if infeasible

This version assumes user has added cut generators to CglPreProcess object before calling it. As an example use coding in preProcess If makeEquality is 1 add slacks to get cliques, if 2 add slacks to get sos (but only if looks plausible) and keep sos info

void CglPreProcess::postProcess | ( | OsiSolverInterface & | model | ) |

Creates solution in original model.

int CglPreProcess::tightenPrimalBounds | ( | OsiSolverInterface & | model,
|  | double | factor = `0.0` |
| ) |  |  |

Tightens primal bounds to make dual and branch and cutfaster.

Unless fixed or integral, bounds are slightly looser than they could be. Returns non-zero if problem infeasible Fudge for branch and bound - put bounds on columns of factor * largest value (at continuous) - should improve stability in branch and bound on infeasible branches (0.0 is off)

OsiSolverInterface* CglPreProcess::someFixed | ( | OsiSolverInterface & | model,
|  | double | fractionToKeep = `0.25`,
|  | bool | fixContinuousAsWell = `false`,
|  | char * | keep = `NULL` |
| ) |  |  | const

Fix some of problem - returning new problem.

Uses reduced costs. Optional signed character array 1 always keep, -1 always discard, 0 use djs

int CglPreProcess::reducedCostFix | ( | OsiSolverInterface & | model | ) |

If we have a cutoff - fix variables.

void CglPreProcess::setCutoff | ( | double | value | ) |

Set cutoff bound on the objective function.

When using strict comparison, the bound is adjusted by a tolerance to avoid accidentally cutting off the optimal solution.

double CglPreProcess::getCutoff | ( |  | ) | const

Get the cutoff bound on the objective function - always as minimize.

OsiSolverInterface* CglPreProcess::originalModel | ( |  | ) | const`[inline]`

The original solver associated with this model.

Definition at line 111 of file CglPreProcess.hpp.

References originalModel_.

OsiSolverInterface* CglPreProcess::startModel | ( |  | ) | const`[inline]`

Solver after making clique equalities (may == original).

Definition at line 114 of file CglPreProcess.hpp.

References startModel_.

OsiSolverInterface* CglPreProcess::modelAtPass | ( | int | iPass | ) | const`[inline]`

Copies of solver at various stages after presolve.

Definition at line 117 of file CglPreProcess.hpp.

References model_, and numberSolvers_.

OsiSolverInterface* CglPreProcess::modifiedModel | ( | int | iPass | ) | const`[inline]`

Copies of solver at various stages after presolve after modifications.

Definition at line 120 of file CglPreProcess.hpp.

References modifiedModel_, and numberSolvers_.

OsiPresolve* CglPreProcess::presolve | ( | int | iPass | ) | const`[inline]`

Matching presolve information.

Definition at line 123 of file CglPreProcess.hpp.

References numberSolvers_, and presolve_.

const int* CglPreProcess::originalColumns | ( |  | ) | const

Return a pointer to the original columns (with possible clique slacks) MUST be called before postProcess otherwise you just get 0,1,2.

const int* CglPreProcess::originalRows | ( |  | ) | const

Return a pointer to the original rows MUST be called before postProcess otherwise you just get 0,1,2.

int CglPreProcess::numberSOS | ( |  | ) | const`[inline]`

Number of SOS if found.

Definition at line 132 of file CglPreProcess.hpp.

References numberSOS_.

const int* CglPreProcess::typeSOS | ( |  | ) | const`[inline]`

Type of each SOS.

Definition at line 135 of file CglPreProcess.hpp.

References typeSOS_.

const int* CglPreProcess::startSOS | ( |  | ) | const`[inline]`

Start of each SOS.

Definition at line 138 of file CglPreProcess.hpp.

References startSOS_.

const int* CglPreProcess::whichSOS | ( |  | ) | const`[inline]`

Columns in SOS.

Definition at line 141 of file CglPreProcess.hpp.

References whichSOS_.

const double* CglPreProcess::weightSOS | ( |  | ) | const`[inline]`

Weights for each SOS column.

Definition at line 144 of file CglPreProcess.hpp.

References weightSOS_.

void CglPreProcess::passInProhibited | ( | const char * | prohibited,
|  | int | numberColumns |
| ) |  |  |

Pass in prohibited columns.

const char* CglPreProcess::prohibited | ( |  | ) | `[inline]`

Updated prohibited columns.

Definition at line 149 of file CglPreProcess.hpp.

References prohibited_.

int CglPreProcess::numberIterationsPre | ( |  | ) | const`[inline]`

Number of iterations PreProcessing.

Definition at line 152 of file CglPreProcess.hpp.

References numberIterationsPre_.

int CglPreProcess::numberIterationsPost | ( |  | ) | const`[inline]`

Number of iterations PostProcessing.

Definition at line 155 of file CglPreProcess.hpp.

References numberIterationsPost_.

void CglPreProcess::passInRowTypes | ( | const char * | rowTypes,
|  | int | numberRows |
| ) |  |  |

Pass in row types 0 normal 1 cut rows - will be dropped if remain in At end of preprocess cut rows will be dropped and put into cuts.

const char* CglPreProcess::rowTypes | ( |  | ) | `[inline]`

Updated row types - may be NULL Carried around and corresponds to existing rows -1 added by preprocess e.g.

x+y=1 0 normal 1 cut rows - can be dropped if wanted

Definition at line 170 of file CglPreProcess.hpp.

References rowType_.

const CglStored& CglPreProcess::cuts | ( |  | ) | const`[inline]`

Return cuts from dropped rows.

Definition at line 173 of file CglPreProcess.hpp.

References cuts_.

const CglStored* CglPreProcess::cutsPointer | ( |  | ) | const`[inline]`

Return pointer to cuts from dropped rows.

Definition at line 176 of file CglPreProcess.hpp.

References cuts_.

void CglPreProcess::update | ( | const OsiPresolve * | pinfo,
|  | const OsiSolverInterface * | solver |
| ) |  |  |

Update prohibited and rowType.

void CglPreProcess::setOptions | ( | int | value | ) | `[inline]`

Set options.

Definition at line 181 of file CglPreProcess.hpp.

References options_.

int CglPreProcess::numberCutGenerators | ( |  | ) | const`[inline]`

Get the number of cut generators.

Definition at line 188 of file CglPreProcess.hpp.

References numberCutGenerators_.

CglCutGenerator** CglPreProcess::cutGenerators | ( |  | ) | const`[inline]`

Get the list of cut generators.

Definition at line 191 of file CglPreProcess.hpp.

References generator_.

CglCutGenerator* CglPreProcess::cutGenerator | ( | int | i | ) | const`[inline]`

Get the specified cut generator.

Definition at line 194 of file CglPreProcess.hpp.

References generator_.

void CglPreProcess::addCutGenerator | ( | CglCutGenerator * | generator | ) |

Add one generator - up to user to delete generators.

void CglPreProcess::setApplicationData | ( | void * | appData | ) |

Set application data.

This is a pointer that the application can store into and retrieve. This field is available for the application to optionally define and use.

void* CglPreProcess::getApplicationData | ( |  | ) | const

Get application data.

void CglPreProcess::passInMessageHandler | ( | CoinMessageHandler * | handler | ) |

Pass in Message handler (not deleted at end).

void CglPreProcess::newLanguage | ( | CoinMessages::Language | language | ) |

Set language.

Referenced by setLanguage().

void CglPreProcess::setLanguage | ( | CoinMessages::Language | language | ) | `[inline]`

Pass in Message handler (not deleted at end).

Definition at line 224 of file CglPreProcess.hpp.

References newLanguage().

CoinMessageHandler* CglPreProcess::messageHandler | ( |  | ) | const`[inline]`

Return handler.

Definition at line 227 of file CglPreProcess.hpp.

References handler_.

CoinMessages CglPreProcess::messages | ( |  | ) | `[inline]`

Return messages.

Definition at line 230 of file CglPreProcess.hpp.

References messages_.

CoinMessages* CglPreProcess::messagesPointer | ( |  | ) | `[inline]`

Return pointer to messages.

Definition at line 233 of file CglPreProcess.hpp.

References messages_.

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

Assignment operator.

void CglPreProcess::gutsOfDestructor | ( |  | ) |

Clears out as much as possible.

OsiSolverInterface* CglPreProcess::modified | ( | OsiSolverInterface * | model,
|  | bool | constraints,
|  | int & | numberChanges,
|  | int | iBigPass,
|  | int | numberPasses |
| ) |  |  | `[private]`

Return model with useful modifications.

If constraints true then adds any x+y=1 or x-y=0 constraints If NULL infeasible

void CglPreProcess::createOriginalIndices | ( |  | ) | const`[private]`

create original columns and rows

void CglPreProcess::makeInteger | ( |  | ) | `[private]`

Make continuous variables integer.

## Member Data Documentation

OsiSolverInterface* CglPreProcess::originalModel_`[private]`

The original solver associated with this model.

Definition at line 282 of file CglPreProcess.hpp.

Referenced by originalModel().

OsiSolverInterface* CglPreProcess::startModel_`[private]`

Solver after making clique equalities (may == original).

Definition at line 284 of file CglPreProcess.hpp.

Referenced by startModel().

int CglPreProcess::numberSolvers_`[private]`

Number of solvers at various stages.

Definition at line 286 of file CglPreProcess.hpp.

Referenced by modelAtPass(), modifiedModel(), and presolve().

OsiSolverInterface** CglPreProcess::model_`[private]`

Copies of solver at various stages after presolve.

Definition at line 288 of file CglPreProcess.hpp.

Referenced by modelAtPass().

OsiSolverInterface** CglPreProcess::modifiedModel_`[private]`

Copies of solver at various stages after presolve after modifications.

Definition at line 290 of file CglPreProcess.hpp.

Referenced by modifiedModel().

OsiPresolve** CglPreProcess::presolve_`[private]`

Matching presolve information.

Definition at line 292 of file CglPreProcess.hpp.

Referenced by presolve().

CoinMessageHandler* CglPreProcess::handler_`[private]`

Message handler.

Definition at line 295 of file CglPreProcess.hpp.

Referenced by messageHandler().

bool CglPreProcess::defaultHandler_`[private]`

Flag to say if handler_ is the default handler.

The default handler is deleted when the model is deleted. Other handlers (supplied by the client) will not be deleted.

Definition at line 302 of file CglPreProcess.hpp.

CoinMessages CglPreProcess::messages_`[private]`

Cgl messages.

Definition at line 305 of file CglPreProcess.hpp.

Referenced by messages(), and messagesPointer().

void* CglPreProcess::appData_`[private]`

Pointer to user-defined data structure.

Definition at line 308 of file CglPreProcess.hpp.

int* CglPreProcess::originalColumn_`[mutable, private]`

Original column numbers.

Definition at line 310 of file CglPreProcess.hpp.

int* CglPreProcess::originalRow_`[mutable, private]`

Original row numbers.

Definition at line 312 of file CglPreProcess.hpp.

int CglPreProcess::numberCutGenerators_`[private]`

Number of cut generators.

Definition at line 314 of file CglPreProcess.hpp.

Referenced by numberCutGenerators().

CglCutGenerator** CglPreProcess::generator_`[private]`

Cut generators.

Definition at line 316 of file CglPreProcess.hpp.

Referenced by cutGenerator(), and cutGenerators().

int CglPreProcess::numberSOS_`[private]`

Number of SOS if found.

Definition at line 318 of file CglPreProcess.hpp.

Referenced by numberSOS().

int* CglPreProcess::typeSOS_`[private]`

Type of each SOS.

Definition at line 320 of file CglPreProcess.hpp.

Referenced by typeSOS().

int* CglPreProcess::startSOS_`[private]`

Start of each SOS.

Definition at line 322 of file CglPreProcess.hpp.

Referenced by startSOS().

int* CglPreProcess::whichSOS_`[private]`

Columns in SOS.

Definition at line 324 of file CglPreProcess.hpp.

Referenced by whichSOS().

double* CglPreProcess::weightSOS_`[private]`

Weights for each SOS column.

Definition at line 326 of file CglPreProcess.hpp.

Referenced by weightSOS().

int CglPreProcess::numberProhibited_`[private]`

Number of columns in original prohibition set.

Definition at line 328 of file CglPreProcess.hpp.

int CglPreProcess::numberIterationsPre_`[private]`

Number of iterations done in PreProcessing.

Definition at line 330 of file CglPreProcess.hpp.

Referenced by numberIterationsPre().

int CglPreProcess::numberIterationsPost_`[private]`

Number of iterations done in PostProcessing.

Definition at line 332 of file CglPreProcess.hpp.

Referenced by numberIterationsPost().

char* CglPreProcess::prohibited_`[private]`

Columns which should not be presolved e.g. SOS.

Definition at line 334 of file CglPreProcess.hpp.

Referenced by prohibited().

int CglPreProcess::numberRowType_`[private]`

Number of rows in original row types.

Definition at line 336 of file CglPreProcess.hpp.

int CglPreProcess::options_`[private]`

Options 1 - original model had integer bounds before tightening.

Definition at line 340 of file CglPreProcess.hpp.

Referenced by setOptions().

char* CglPreProcess::rowType_`[private]`

Row types (may be NULL) Carried around and corresponds to existing rows -1 added by preprocess e.g.

x+y=1 0 normal 1 cut rows - can be dropped if wanted

Definition at line 347 of file CglPreProcess.hpp.

Referenced by rowTypes().

CglStored CglPreProcess::cuts_`[private]`

Cuts from dropped rows.

Definition at line 349 of file CglPreProcess.hpp.

Referenced by cuts(), and cutsPointer().

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

- /home/coin/SVN-release/Cgl-0.55.0/Cgl/src/CglPreProcess/CglPreProcess.hpp