# OsiBabSolver Class Reference

This class allows for the use of more exotic solvers e.g. More...

`#include <OsiAuxInfo.hpp>`

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

List of all members.

## Public Member Functions
| OsiBabSolver (int solverType=0)
| OsiBabSolver (const OsiBabSolver &rhs)
virtual | ~OsiBabSolver ()
virtual OsiAuxInfo * | clone () const
| Clone.
OsiBabSolver & | operator= (const OsiBabSolver &rhs)
| Assignment operator.
void | setSolver (const OsiSolverInterface *solver)
| Update solver.
void | setSolver (const OsiSolverInterface &solver)
| Update solver.
int | solution (double &objectiveValue, double *newSolution, int numberColumns)
| returns 0 if no heuristic solution, 1 if valid solution with better objective value than one passed in Sets solution values if good, sets objective value numberColumns is size of newSolution
void | setSolution (const double *solution, int numberColumns, double objectiveValue)
| Set solution and objective value.
bool | hasSolution (double &solutionValue, double *solution)
| returns true if the object stores a solution, false otherwise.
void | setSolverType (int value)
| Sets solver type 0 - normal LP solver 1 - DW - may also return heuristic solutions 2 - NLP solver or similar - can't compute objective value just from solution check solver to see if feasible and what objective value is may also return heuristic solution 3 - NLP solver or similar - can't compute objective value just from solution check this (rather than solver) to see if feasible and what objective value is.
int | solverType () const
| gets solver type 0 - normal LP solver 1 - DW - may also return heuristic solutions 2 - NLP solver or similar - can't compute objective value just from solution check this (rather than solver) to see if feasible and what objective value is may also return heuristic solution 3 - NLP solver or similar - can't compute objective value just from solution check this (rather than solver) to see if feasible and what objective value is.
bool | solutionAddsCuts () const
| Return true if getting solution may add cuts so hot start etc will be obsolete.
bool | alwaysTryCutsAtRootNode () const
| Return true if we should try cuts at root even if looks satisfied.
bool | solverAccurate () const
| Returns true if can use solver objective or feasible values, otherwise use mipBound etc.
bool | reducedCostsAccurate () const
| Returns true if can use reduced costs for fixing.
double | mipBound () const
| Get objective (well mip bound).
bool | mipFeasible () const
| Returns true if node feasible.
void | setMipBound (double value)
| Set mip bound (only used for some solvers).
double | bestObjectiveValue () const
| Get objective value of saved solution.
bool | tryCuts () const
| Says whether we want to try cuts at all.
bool | warmStart () const
| Says whether we have a warm start (so can do strong branching).
int | extraCharacteristics () const
| Get bit mask for odd actions of solvers 1 - solution or bound arrays may move in mysterious ways e.g.
void | setExtraCharacteristics (int value)
| Set bit mask for odd actions of solvers 1 - solution or bound arrays may move in mysterious ways e.g.
const double * | beforeLower () const
| Pointer to lower bounds before branch (only if extraCharacteristics set).
void | setBeforeLower (const double *array)
| Set pointer to lower bounds before branch (only if extraCharacteristics set).
const double * | beforeUpper () const
| Pointer to upper bounds before branch (only if extraCharacteristics set).
void | setBeforeUpper (const double *array)
| Set pointer to upper bounds before branch (only if extraCharacteristics set).
## Protected Attributes
double | bestObjectiveValue_
| Objective value of best solution (if there is one) (minimization).
double | mipBound_
| Current lower bound on solution ( if > 1.0e50 infeasible).
const OsiSolverInterface * | solver_
| Solver to use for getting/setting solutions etc.
double * | bestSolution_
| Best integer feasible solution.
const double * | beforeLower_
| Pointer to lower bounds before branch (only if extraCharacteristics set).
const double * | beforeUpper_
| Pointer to upper bounds before branch (only if extraCharacteristics set).
int | solverType_
| Solver type 0 - normal LP solver 1 - DW - may also return heuristic solutions 2 - NLP solver or similar - can't compute objective value just from solution check this (rather than solver) to see if feasible and what objective value is may also return heuristic solution 3 - NLP solver or similar - can't compute objective value just from solution check this (rather than solver) to see if feasible and what objective value is.
int | sizeSolution_
| Size of solution.
int | extraCharacteristics_
| Bit mask for odd actions of solvers 1 - solution or bound arrays may move in mysterious ways e.g.

## Detailed Description

This class allows for the use of more exotic solvers e.g.

Non-Linear or Volume.

You can derive from this although at present I can't see the need.

Definition at line 49 of file OsiAuxInfo.hpp.

## Constructor & Destructor Documentation

OsiBabSolver::OsiBabSolver | ( | int | solverType = `0` | ) |

OsiBabSolver::OsiBabSolver | ( | const OsiBabSolver & | rhs | ) |

virtual OsiBabSolver::~OsiBabSolver | ( |  | ) | `[virtual]`

## Member Function Documentation

virtual OsiAuxInfo* OsiBabSolver::clone | ( |  | ) | const`[virtual]`

Clone.

Reimplemented from OsiAuxInfo.

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

Assignment operator.

Reimplemented from OsiAuxInfo.

void OsiBabSolver::setSolver | ( | const OsiSolverInterface * | solver | ) | `[inline]`

Update solver.

Definition at line 65 of file OsiAuxInfo.hpp.

void OsiBabSolver::setSolver | ( | const OsiSolverInterface & | solver | ) | `[inline]`

Update solver.

Definition at line 68 of file OsiAuxInfo.hpp.

int OsiBabSolver::solution | ( | double & | objectiveValue,
|  | double * | newSolution,
|  | int | numberColumns |
| ) |  |  |

returns 0 if no heuristic solution, 1 if valid solution with better objective value than one passed in Sets solution values if good, sets objective value numberColumns is size of newSolution

void OsiBabSolver::setSolution | ( | const double * | solution,
|  | int | numberColumns,
|  | double | objectiveValue |
| ) |  |  |

Set solution and objective value.

Number of columns and optimization direction taken from current solver. Size of solution is numberColumns (may be padded or truncated in function)

bool OsiBabSolver::hasSolution | ( | double & | solutionValue,
|  | double * | solution |
| ) |  |  |

returns true if the object stores a solution, false otherwise.

If there is a solution then solutionValue and solution will be filled out as well. In that case the user needs to allocate solution to be a big enough array.

void OsiBabSolver::setSolverType | ( | int | value | ) | `[inline]`

Sets solver type 0 - normal LP solver 1 - DW - may also return heuristic solutions 2 - NLP solver or similar - can't compute objective value just from solution check solver to see if feasible and what objective value is

- may also return heuristic solution 3 - NLP solver or similar - can't compute objective value just from solution check this (rather than solver) to see if feasible and what objective value is.

Using Outer Approximation so called lp based

- may also return heuristic solution 4 - normal solver but cuts are needed for integral solution

Definition at line 102 of file OsiAuxInfo.hpp.

int OsiBabSolver::solverType | ( |  | ) | const`[inline]`

gets solver type 0 - normal LP solver 1 - DW - may also return heuristic solutions 2 - NLP solver or similar - can't compute objective value just from solution check this (rather than solver) to see if feasible and what objective value is

- may also return heuristic solution 3 - NLP solver or similar - can't compute objective value just from solution check this (rather than solver) to see if feasible and what objective value is.

Using Outer Approximation so called lp based

- may also return heuristic solution 4 - normal solver but cuts are needed for integral solution

Definition at line 116 of file OsiAuxInfo.hpp.

bool OsiBabSolver::solutionAddsCuts | ( |  | ) | const`[inline]`

Return true if getting solution may add cuts so hot start etc will be obsolete.

Definition at line 120 of file OsiAuxInfo.hpp.

bool OsiBabSolver::alwaysTryCutsAtRootNode | ( |  | ) | const`[inline]`

Return true if we should try cuts at root even if looks satisfied.

Definition at line 123 of file OsiAuxInfo.hpp.

bool OsiBabSolver::solverAccurate | ( |  | ) | const`[inline]`

Returns true if can use solver objective or feasible values, otherwise use mipBound etc.

Definition at line 127 of file OsiAuxInfo.hpp.

bool OsiBabSolver::reducedCostsAccurate | ( |  | ) | const`[inline]`

Returns true if can use reduced costs for fixing.

Definition at line 130 of file OsiAuxInfo.hpp.

double OsiBabSolver::mipBound | ( |  | ) | const

Get objective (well mip bound).

bool OsiBabSolver::mipFeasible | ( |  | ) | const

Returns true if node feasible.

void OsiBabSolver::setMipBound | ( | double | value | ) | `[inline]`

Set mip bound (only used for some solvers).

Definition at line 137 of file OsiAuxInfo.hpp.

double OsiBabSolver::bestObjectiveValue | ( |  | ) | const`[inline]`

Get objective value of saved solution.

Definition at line 140 of file OsiAuxInfo.hpp.

bool OsiBabSolver::tryCuts | ( |  | ) | const`[inline]`

Says whether we want to try cuts at all.

Definition at line 143 of file OsiAuxInfo.hpp.

bool OsiBabSolver::warmStart | ( |  | ) | const`[inline]`

Says whether we have a warm start (so can do strong branching).

Definition at line 146 of file OsiAuxInfo.hpp.

int OsiBabSolver::extraCharacteristics | ( |  | ) | const`[inline]`

Get bit mask for odd actions of solvers 1 - solution or bound arrays may move in mysterious ways e.g.

cplex 2 - solver may want bounds before branch

Definition at line 152 of file OsiAuxInfo.hpp.

void OsiBabSolver::setExtraCharacteristics | ( | int | value | ) | `[inline]`

Set bit mask for odd actions of solvers 1 - solution or bound arrays may move in mysterious ways e.g.

cplex 2 - solver may want bounds before branch

Definition at line 158 of file OsiAuxInfo.hpp.

const double* OsiBabSolver::beforeLower | ( |  | ) | const`[inline]`

Pointer to lower bounds before branch (only if extraCharacteristics set).

Definition at line 161 of file OsiAuxInfo.hpp.

void OsiBabSolver::setBeforeLower | ( | const double * | array | ) | `[inline]`

Set pointer to lower bounds before branch (only if extraCharacteristics set).

Definition at line 164 of file OsiAuxInfo.hpp.

const double* OsiBabSolver::beforeUpper | ( |  | ) | const`[inline]`

Pointer to upper bounds before branch (only if extraCharacteristics set).

Definition at line 167 of file OsiAuxInfo.hpp.

void OsiBabSolver::setBeforeUpper | ( | const double * | array | ) | `[inline]`

Set pointer to upper bounds before branch (only if extraCharacteristics set).

Definition at line 170 of file OsiAuxInfo.hpp.

## Member Data Documentation

double OsiBabSolver::bestObjectiveValue_`[protected]`

Objective value of best solution (if there is one) (minimization).

Definition at line 174 of file OsiAuxInfo.hpp.

double OsiBabSolver::mipBound_`[protected]`

Current lower bound on solution ( if > 1.0e50 infeasible).

Definition at line 176 of file OsiAuxInfo.hpp.

const OsiSolverInterface* OsiBabSolver::solver_`[protected]`

Solver to use for getting/setting solutions etc.

Definition at line 178 of file OsiAuxInfo.hpp.

double* OsiBabSolver::bestSolution_`[protected]`

Best integer feasible solution.

Definition at line 180 of file OsiAuxInfo.hpp.

const double* OsiBabSolver::beforeLower_`[protected]`

Pointer to lower bounds before branch (only if extraCharacteristics set).

Definition at line 182 of file OsiAuxInfo.hpp.

const double* OsiBabSolver::beforeUpper_`[protected]`

Pointer to upper bounds before branch (only if extraCharacteristics set).

Definition at line 184 of file OsiAuxInfo.hpp.

int OsiBabSolver::solverType_`[protected]`

Solver type 0 - normal LP solver 1 - DW - may also return heuristic solutions 2 - NLP solver or similar - can't compute objective value just from solution check this (rather than solver) to see if feasible and what objective value is

- may also return heuristic solution 3 - NLP solver or similar - can't compute objective value just from solution check this (rather than solver) to see if feasible and what objective value is.

Using Outer Approximation so called lp based

- may also return heuristic solution

Definition at line 196 of file OsiAuxInfo.hpp.

int OsiBabSolver::sizeSolution_`[protected]`

Size of solution.

Definition at line 198 of file OsiAuxInfo.hpp.

int OsiBabSolver::extraCharacteristics_`[protected]`

Bit mask for odd actions of solvers 1 - solution or bound arrays may move in mysterious ways e.g.

cplex 2 - solver may want bounds before branch

Definition at line 203 of file OsiAuxInfo.hpp.

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

- /home/coin/svn-release/Bcps-0.93.10/Osi/src/Osi/OsiAuxInfo.hpp