# CbcHeuristicFPump Class Reference

Feasibility Pump class. More...

`#include <CbcHeuristicFPump.hpp>`

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

List of all members.

## Public Member Functions
| CbcHeuristicFPump ()
| CbcHeuristicFPump (CbcModel &model, double downValue=0.5, bool roundExpensive=false)
| CbcHeuristicFPump (const CbcHeuristicFPump &)
| ~CbcHeuristicFPump ()
CbcHeuristicFPump & | operator= (const CbcHeuristicFPump &rhs)
| Assignment operator.
virtual CbcHeuristic * | clone () const
| Clone.
virtual void | generateCpp (FILE *fp)
| Create C++ lines to get to current state.
virtual void | resetModel (CbcModel *model)
| Resets stuff if model changes.
virtual void | setModel (CbcModel *model)
| update model (This is needed if cliques update matrix etc)
virtual int | solution (double &objectiveValue, double *newSolution)
| returns 0 if no solution, 1 if valid solution with better objective value than one passed in Sets solution values if good, sets objective value (only if good) This is called after cuts have been added - so can not add cuts.
void | setMaximumTime (double value)
| Set maximum Time (default off) - also sets starttime to current.
double | maximumTime () const
| Get maximum Time (default 0.0 == time limit off).
void | setFakeCutoff (double value)
| Set fake cutoff (default COIN_DBL_MAX == off).
double | fakeCutoff () const
| Get fake cutoff (default 0.0 == off).
void | setAbsoluteIncrement (double value)
| Set absolute increment (default 0.0 == off).
double | absoluteIncrement () const
| Get absolute increment (default 0.0 == off).
void | setRelativeIncrement (double value)
| Set relative increment (default 0.0 == off).
double | relativeIncrement () const
| Get relative increment (default 0.0 == off).
void | setDefaultRounding (double value)
| Set default rounding (default 0.5).
double | defaultRounding () const
| Get default rounding (default 0.5).
void | setInitialWeight (double value)
| Set initial weight (default 0.0 == off).
double | initialWeight () const
| Get initial weight (default 0.0 == off).
void | setWeightFactor (double value)
| Set weight factor (default 0.1).
double | weightFactor () const
| Get weight factor (default 0.1).
void | setArtificialCost (double value)
| Set threshold cost for using original cost - even on continuous (default infinity).
double | artificialCost () const
| Get threshold cost for using original cost - even on continuous (default infinity).
double | iterationRatio () const
| Get iteration to size ratio.
void | setIterationRatio (double value)
| Set iteration to size ratio.
void | setMaximumPasses (int value)
| Set maximum passes (default 100).
int | maximumPasses () const
| Get maximum passes (default 100).
void | setMaximumRetries (int value)
| Set maximum retries (default 1).
int | maximumRetries () const
| Get maximum retries (default 1).
void | setAccumulate (int value)
| Set use of multiple solutions and solves 0 - do not reuse solves, do not accumulate integer solutions for local search 1 - do not reuse solves, accumulate integer solutions for local search 2 - reuse solves, do not accumulate integer solutions for local search 3 - reuse solves, accumulate integer solutions for local search If we add 4 then use second form of problem (with extra rows and variables for general integers) At some point (date?), I added.
int | accumulate () const
| Get accumulation option.
void | setFixOnReducedCosts (int value)
| Set whether to fix variables on known solution 0 - do not fix 1 - fix integers on reduced costs 2 - fix integers on reduced costs but only on entry.
int | fixOnReducedCosts () const
| Get reduced cost option.
void | setReducedCostMultiplier (double value)
| Set reduced cost multiplier 1.0 as normal <1.0 (x) - pretend gap is x* actual gap - just for fixing.
double | reducedCostMultiplier () const
| Get reduced cost multiplier.
## Protected Attributes
double | startTime_
| Start time.
double | maximumTime_
| Maximum Cpu seconds.
double | fakeCutoff_
| Fake cutoff value.
double | absoluteIncrement_
| If positive carry on after solution expecting gain of at least this.
double | relativeIncrement_
| If positive carry on after solution expecting gain of at least this times objective.
double | defaultRounding_
| Default is round up if > this.
double | initialWeight_
| Initial weight for true objective.
double | weightFactor_
| Factor for decreasing weight.
double | artificialCost_
| Threshold cost for using original cost - even on continuous.
double | iterationRatio_
| If iterationRatio >0 use instead of maximumPasses_ test is iterations > ratio*(2*nrow+ncol).
double | reducedCostMultiplier_
| Reduced cost multiplier 1.0 as normal <1.0 (x) - pretend gap is x* actual gap - just for fixing.
int | maximumPasses_
| Maximum number of passes.
int | maximumRetries_
| Maximum number of retries if we find a solution.
int | accumulate_
| Set use of multiple solutions and solves 0 - do not reuse solves, do not accumulate integer solutions for local search 1 - do not reuse solves, accumulate integer solutions for local search 2 - reuse solves, do not accumulate integer solutions for local search 3 - reuse solves, accumulate integer solutions for local search If we add 4 then use second form of problem (with extra rows and variables for general integers) If we do not accumulate solutions then no mini branch and bounds will be done reuse - refers to initial solve after adding in new "cut" If we add 8 then can run after initial cuts (if no solution).
int | fixOnReducedCosts_
| Set whether to fix variables on known solution 0 - do not fix 1 - fix integers on reduced costs 2 - fix integers on reduced costs but only on entry.
bool | roundExpensive_
| If true round to expensive.
## Private Member Functions
int | rounds (OsiSolverInterface *solver, double *solution, int numberIntegers, const int *integerVariable, int passNumber, double downValue=0.5, int *flip=0)
| Rounds solution - down if < downValue If roundExpensive then always to more expnsive.

## Detailed Description

Feasibility Pump class.

Definition at line 15 of file CbcHeuristicFPump.hpp.

## Constructor & Destructor Documentation

CbcHeuristicFPump::CbcHeuristicFPump | ( |  | ) |

CbcHeuristicFPump::CbcHeuristicFPump | ( | CbcModel & | model,
|  | double | downValue = `0.5`,
|  | bool | roundExpensive = `false` |
| ) |  |  |

CbcHeuristicFPump::CbcHeuristicFPump | ( | const CbcHeuristicFPump & |  | ) |

CbcHeuristicFPump::~CbcHeuristicFPump | ( |  | ) |

## Member Function Documentation

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

Assignment operator.

Reimplemented from CbcHeuristic.

virtual CbcHeuristic* CbcHeuristicFPump::clone | ( |  | ) | const`[virtual]`

Clone.

Implements CbcHeuristic.

virtual void CbcHeuristicFPump::generateCpp | ( | FILE * | fp | ) | `[virtual]`

Create C++ lines to get to current state.

Reimplemented from CbcHeuristic.

virtual void CbcHeuristicFPump::resetModel | ( | CbcModel * | model | ) | `[virtual]`

Resets stuff if model changes.

Implements CbcHeuristic.

virtual void CbcHeuristicFPump::setModel | ( | CbcModel * | model | ) | `[virtual]`

update model (This is needed if cliques update matrix etc)

Reimplemented from CbcHeuristic.

virtual int CbcHeuristicFPump::solution | ( | double & | objectiveValue,
|  | double * | newSolution |
| ) |  |  | `[virtual]`

returns 0 if no solution, 1 if valid solution with better objective value than one passed in Sets solution values if good, sets objective value (only if good) This is called after cuts have been added - so can not add cuts.

It may make sense for user to call this outside Branch and Cut to get solution. Or normally is just at root node.

new meanings for when_ - on first try then set back to 1 11 - at end fix all integers at same bound throughout 12 - also fix all integers staying at same internal integral value throughout 13 - also fix all continuous variables staying at same bound throughout 14 - also fix all continuous variables staying at same internal value throughout 15 - as 13 but no internal integers And beyond that, it's apparently possible for the range to be between 21 and 25, in which case it's reduced on entry to solution() to be between 11 and 15 and allSlack is set to true. Then, if we're not processing general integers, we'll use an all-slack basis to solve ... what? Don't see that yet.

Implements CbcHeuristic.

void CbcHeuristicFPump::setMaximumTime | ( | double | value | ) |

Set maximum Time (default off) - also sets starttime to current.

double CbcHeuristicFPump::maximumTime | ( |  | ) | const`[inline]`

Get maximum Time (default 0.0 == time limit off).

Definition at line 71 of file CbcHeuristicFPump.hpp.

void CbcHeuristicFPump::setFakeCutoff | ( | double | value | ) | `[inline]`

Set fake cutoff (default COIN_DBL_MAX == off).

Definition at line 75 of file CbcHeuristicFPump.hpp.

double CbcHeuristicFPump::fakeCutoff | ( |  | ) | const`[inline]`

Get fake cutoff (default 0.0 == off).

Definition at line 79 of file CbcHeuristicFPump.hpp.

void CbcHeuristicFPump::setAbsoluteIncrement | ( | double | value | ) | `[inline]`

Set absolute increment (default 0.0 == off).

Definition at line 83 of file CbcHeuristicFPump.hpp.

double CbcHeuristicFPump::absoluteIncrement | ( |  | ) | const`[inline]`

Get absolute increment (default 0.0 == off).

Definition at line 87 of file CbcHeuristicFPump.hpp.

void CbcHeuristicFPump::setRelativeIncrement | ( | double | value | ) | `[inline]`

Set relative increment (default 0.0 == off).

Definition at line 91 of file CbcHeuristicFPump.hpp.

double CbcHeuristicFPump::relativeIncrement | ( |  | ) | const`[inline]`

Get relative increment (default 0.0 == off).

Definition at line 95 of file CbcHeuristicFPump.hpp.

void CbcHeuristicFPump::setDefaultRounding | ( | double | value | ) | `[inline]`

Set default rounding (default 0.5).

Definition at line 99 of file CbcHeuristicFPump.hpp.

double CbcHeuristicFPump::defaultRounding | ( |  | ) | const`[inline]`

Get default rounding (default 0.5).

Definition at line 103 of file CbcHeuristicFPump.hpp.

void CbcHeuristicFPump::setInitialWeight | ( | double | value | ) | `[inline]`

Set initial weight (default 0.0 == off).

Definition at line 107 of file CbcHeuristicFPump.hpp.

double CbcHeuristicFPump::initialWeight | ( |  | ) | const`[inline]`

Get initial weight (default 0.0 == off).

Definition at line 111 of file CbcHeuristicFPump.hpp.

void CbcHeuristicFPump::setWeightFactor | ( | double | value | ) | `[inline]`

Set weight factor (default 0.1).

Definition at line 115 of file CbcHeuristicFPump.hpp.

double CbcHeuristicFPump::weightFactor | ( |  | ) | const`[inline]`

Get weight factor (default 0.1).

Definition at line 119 of file CbcHeuristicFPump.hpp.

void CbcHeuristicFPump::setArtificialCost | ( | double | value | ) | `[inline]`

Set threshold cost for using original cost - even on continuous (default infinity).

Definition at line 123 of file CbcHeuristicFPump.hpp.

double CbcHeuristicFPump::artificialCost | ( |  | ) | const`[inline]`

Get threshold cost for using original cost - even on continuous (default infinity).

Definition at line 127 of file CbcHeuristicFPump.hpp.

double CbcHeuristicFPump::iterationRatio | ( |  | ) | const`[inline]`

Get iteration to size ratio.

Definition at line 131 of file CbcHeuristicFPump.hpp.

void CbcHeuristicFPump::setIterationRatio | ( | double | value | ) | `[inline]`

Set iteration to size ratio.

Definition at line 135 of file CbcHeuristicFPump.hpp.

void CbcHeuristicFPump::setMaximumPasses | ( | int | value | ) | `[inline]`

Set maximum passes (default 100).

Definition at line 139 of file CbcHeuristicFPump.hpp.

int CbcHeuristicFPump::maximumPasses | ( |  | ) | const`[inline]`

Get maximum passes (default 100).

Definition at line 143 of file CbcHeuristicFPump.hpp.

void CbcHeuristicFPump::setMaximumRetries | ( | int | value | ) | `[inline]`

Set maximum retries (default 1).

Definition at line 147 of file CbcHeuristicFPump.hpp.

int CbcHeuristicFPump::maximumRetries | ( |  | ) | const`[inline]`

Get maximum retries (default 1).

Definition at line 151 of file CbcHeuristicFPump.hpp.

void CbcHeuristicFPump::setAccumulate | ( | int | value | ) | `[inline]`

Set use of multiple solutions and solves 0 - do not reuse solves, do not accumulate integer solutions for local search 1 - do not reuse solves, accumulate integer solutions for local search 2 - reuse solves, do not accumulate integer solutions for local search 3 - reuse solves, accumulate integer solutions for local search If we add 4 then use second form of problem (with extra rows and variables for general integers) At some point (date?), I added.

And then there are a few bit fields: 4 - something about general integers So my (lh) guess for 4 was at least in the ballpark, but I'll have to rethink 8 entirely (and it may well not mean the same thing as it did when I added that comment. 8 - determines whether we process general integers

And on 090831, John added

If we add 4 then use second form of problem (with extra rows and variables for general integers) If we add 8 then can run after initial cuts (if no solution)

Definition at line 175 of file CbcHeuristicFPump.hpp.

int CbcHeuristicFPump::accumulate | ( |  | ) | const`[inline]`

Get accumulation option.

Definition at line 179 of file CbcHeuristicFPump.hpp.

void CbcHeuristicFPump::setFixOnReducedCosts | ( | int | value | ) | `[inline]`

Set whether to fix variables on known solution 0 - do not fix 1 - fix integers on reduced costs 2 - fix integers on reduced costs but only on entry.

Definition at line 187 of file CbcHeuristicFPump.hpp.

int CbcHeuristicFPump::fixOnReducedCosts | ( |  | ) | const`[inline]`

Get reduced cost option.

Definition at line 191 of file CbcHeuristicFPump.hpp.

void CbcHeuristicFPump::setReducedCostMultiplier | ( | double | value | ) | `[inline]`

Set reduced cost multiplier 1.0 as normal <1.0 (x) - pretend gap is x* actual gap - just for fixing.

Definition at line 198 of file CbcHeuristicFPump.hpp.

double CbcHeuristicFPump::reducedCostMultiplier | ( |  | ) | const`[inline]`

Get reduced cost multiplier.

Definition at line 202 of file CbcHeuristicFPump.hpp.

int CbcHeuristicFPump::rounds | ( | OsiSolverInterface * | solver,
|  | double * | solution,
|  | int | numberIntegers,
|  | const int * | integerVariable,
|  | int | passNumber,
|  | double | downValue = `0.5`,
|  | int * | flip = `0` |
| ) |  |  | `[private]`

Rounds solution - down if < downValue If roundExpensive then always to more expnsive.

returns 0 if current is solution

## Member Data Documentation

double CbcHeuristicFPump::startTime_`[protected]`

Start time.

Definition at line 209 of file CbcHeuristicFPump.hpp.

double CbcHeuristicFPump::maximumTime_`[protected]`

Maximum Cpu seconds.

Definition at line 211 of file CbcHeuristicFPump.hpp.

double CbcHeuristicFPump::fakeCutoff_`[protected]`

Fake cutoff value.

If set then better of real cutoff and this used to add a constraint

Definition at line 215 of file CbcHeuristicFPump.hpp.

double CbcHeuristicFPump::absoluteIncrement_`[protected]`

If positive carry on after solution expecting gain of at least this.

Definition at line 217 of file CbcHeuristicFPump.hpp.

double CbcHeuristicFPump::relativeIncrement_`[protected]`

If positive carry on after solution expecting gain of at least this times objective.

Definition at line 219 of file CbcHeuristicFPump.hpp.

double CbcHeuristicFPump::defaultRounding_`[protected]`

Default is round up if > this.

Definition at line 221 of file CbcHeuristicFPump.hpp.

double CbcHeuristicFPump::initialWeight_`[protected]`

Initial weight for true objective.

Definition at line 223 of file CbcHeuristicFPump.hpp.

double CbcHeuristicFPump::weightFactor_`[protected]`

Factor for decreasing weight.

Definition at line 225 of file CbcHeuristicFPump.hpp.

double CbcHeuristicFPump::artificialCost_`[protected]`

Threshold cost for using original cost - even on continuous.

Definition at line 227 of file CbcHeuristicFPump.hpp.

double CbcHeuristicFPump::iterationRatio_`[protected]`

If iterationRatio >0 use instead of maximumPasses_ test is iterations > ratio*(2*nrow+ncol).

Definition at line 230 of file CbcHeuristicFPump.hpp.

double CbcHeuristicFPump::reducedCostMultiplier_`[protected]`

Reduced cost multiplier 1.0 as normal <1.0 (x) - pretend gap is x* actual gap - just for fixing.

Definition at line 235 of file CbcHeuristicFPump.hpp.

int CbcHeuristicFPump::maximumPasses_`[protected]`

Maximum number of passes.

Definition at line 237 of file CbcHeuristicFPump.hpp.

int CbcHeuristicFPump::maximumRetries_`[protected]`

Maximum number of retries if we find a solution.

If negative we clean out used array

Definition at line 241 of file CbcHeuristicFPump.hpp.

int CbcHeuristicFPump::accumulate_`[protected]`

Set use of multiple solutions and solves 0 - do not reuse solves, do not accumulate integer solutions for local search 1 - do not reuse solves, accumulate integer solutions for local search 2 - reuse solves, do not accumulate integer solutions for local search 3 - reuse solves, accumulate integer solutions for local search If we add 4 then use second form of problem (with extra rows and variables for general integers) If we do not accumulate solutions then no mini branch and bounds will be done reuse - refers to initial solve after adding in new "cut" If we add 8 then can run after initial cuts (if no solution).

Definition at line 252 of file CbcHeuristicFPump.hpp.

int CbcHeuristicFPump::fixOnReducedCosts_`[protected]`

Set whether to fix variables on known solution 0 - do not fix 1 - fix integers on reduced costs 2 - fix integers on reduced costs but only on entry.

Definition at line 258 of file CbcHeuristicFPump.hpp.

bool CbcHeuristicFPump::roundExpensive_`[protected]`

If true round to expensive.

Definition at line 260 of file CbcHeuristicFPump.hpp.

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

- /home/coin/svn-release/Cbc-2.7.7/Cbc/src/CbcHeuristicFPump.hpp

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines