Bonmin::HeuristicInnerApproximation Class Reference

#include <BonHeuristicInnerApproximation.hpp>

Collaboration diagram for Bonmin::HeuristicInnerApproximation:

Collaboration graph
[legend]
List of all members.

Public Member Functions

 HeuristicInnerApproximation (BonminSetup *setup)
 Constructor with setup.
 HeuristicInnerApproximation (const HeuristicInnerApproximation &copy)
 Copy constructor.
 ~HeuristicInnerApproximation ()
 Destructor.
HeuristicInnerApproximationoperator= (const HeuristicInnerApproximation &rhs)
 Assignment operator.
virtual CbcHeuristic * clone () const
 Clone.
void Initialize (BonminSetup *setup)
 Initialize method.
virtual void resetModel (CbcModel *model)
 Resets stuff if model changes.
virtual int solution (double &solutionValue, double *betterSolution)
 Returns a feasible solution to the MINLP The heuristic constructs a MIP based approximating all univariate functions appearing in nonlinear constraints The linear approximation is obtained by adding inner chords linking pairs of points until covering the range of each variable.

Static Public Member Functions

static void registerOptions (Ipopt::SmartPtr< Bonmin::RegisteredOptions > roptions)
 Register the options common to all local search based heuristics.

Protected Attributes

BonminSetupsetup_
 Setup to use for local searches (will make copies).

Private Member Functions

void extractInnerApproximation (OsiTMINLPInterface &nlp, OsiSolverInterface &si, const double *x, bool getObj)
bool getMyInnerApproximation (OsiTMINLPInterface &si, OsiCuts &cs, int ind, const double *x, const double *x2)
 Get an inner-approximation constraint obtained by drawing a chord linking the two given points x and x2.

Private Attributes

int howOften_
 How often to do (code can change).
SubMipSolvermip_
 A subsolver for MIP.
int nbAp_
 Number of Approximation points.

Detailed Description

Definition at line 20 of file BonHeuristicInnerApproximation.hpp.


Constructor & Destructor Documentation

Bonmin::HeuristicInnerApproximation::HeuristicInnerApproximation ( BonminSetup setup  ) 

Constructor with setup.

Definition at line 41 of file BonHeuristicInnerApproximation.cpp.

References Initialize().

Referenced by clone().

Bonmin::HeuristicInnerApproximation::HeuristicInnerApproximation ( const HeuristicInnerApproximation copy  ) 

Copy constructor.

Definition at line 47 of file BonHeuristicInnerApproximation.cpp.

Bonmin::HeuristicInnerApproximation::~HeuristicInnerApproximation (  ) 

Destructor.

Definition at line 90 of file BonHeuristicInnerApproximation.cpp.

References mip_.


Member Function Documentation

HeuristicInnerApproximation & Bonmin::HeuristicInnerApproximation::operator= ( const HeuristicInnerApproximation rhs  ) 

Assignment operator.

Definition at line 57 of file BonHeuristicInnerApproximation.cpp.

References howOften_, mip_, nbAp_, and setup_.

virtual CbcHeuristic* Bonmin::HeuristicInnerApproximation::clone (  )  const [inline, virtual]

Clone.

Definition at line 37 of file BonHeuristicInnerApproximation.hpp.

References HeuristicInnerApproximation().

void Bonmin::HeuristicInnerApproximation::Initialize ( BonminSetup setup  ) 

Initialize method.

Definition at line 82 of file BonHeuristicInnerApproximation.cpp.

References mip_, nbAp_, Bonmin::BabSetupBase::options(), and Bonmin::BabSetupBase::prefix().

Referenced by HeuristicInnerApproximation().

virtual void Bonmin::HeuristicInnerApproximation::resetModel ( CbcModel *  model  )  [inline, virtual]

Resets stuff if model changes.

Definition at line 45 of file BonHeuristicInnerApproximation.hpp.

int Bonmin::HeuristicInnerApproximation::solution ( double &  solutionValue,
double *  betterSolution 
) [virtual]

Returns a feasible solution to the MINLP The heuristic constructs a MIP based approximating all univariate functions appearing in nonlinear constraints The linear approximation is obtained by adding inner chords linking pairs of points until covering the range of each variable.

Definition at line 98 of file BonHeuristicInnerApproximation.cpp.

References Bonmin::B_BB, Bonmin::OsiTMINLPInterface::clone(), Bonmin::TMINLP::CONTINUOUS, DEBUG_BON_HEURISTIC, e, extractInnerApproximation(), Bonmin::TMINLP2TNLP::get_nlp_info(), Bonmin::BonminSetup::getAlgorithm(), Bonmin::SubMipSolver::getLastSolution(), howOften_, Bonmin::OsiTMINLPInterface::initialSolve(), mip_, Bonmin::BabSetupBase::nonlinearSolver(), Bonmin::SubMipSolver::optimize(), Bonmin::OsiTMINLPInterface::problem(), Bonmin::SubMipSolver::setLpSolver(), setup_, and Bonmin::SubMipSolver::solver().

void Bonmin::HeuristicInnerApproximation::registerOptions ( Ipopt::SmartPtr< Bonmin::RegisteredOptions roptions  )  [static]

Register the options common to all local search based heuristics.

Definition at line 70 of file BonHeuristicInnerApproximation.cpp.

References Bonmin::RegisteredOptions::UndocumentedCategory.

Referenced by Bonmin::SepaSetup::registerAllOptions().

void Bonmin::HeuristicInnerApproximation::extractInnerApproximation ( OsiTMINLPInterface nlp,
OsiSolverInterface &  si,
const double *  x,
bool  getObj 
) [private]

Definition at line 347 of file BonHeuristicInnerApproximation.cpp.

References Bonmin::OsiTMINLPInterface::addObjectiveFunction(), Bonmin::TMINLP::BINARY, diff(), Bonmin::TMINLP2TNLP::eval_f(), Bonmin::TMINLP2TNLP::eval_g(), Bonmin::TMINLP2TNLP::eval_grad_f(), Bonmin::TMINLP2TNLP::eval_jac_g(), g, Bonmin::TMINLP2TNLP::get_constraints_linearity(), Bonmin::TMINLP2TNLP::get_nlp_info(), Bonmin::OsiTMINLPInterface::getColLower(), Bonmin::OsiTMINLPInterface::getColUpper(), Bonmin::OsiTMINLPInterface::getInfinity(), getMyInnerApproximation(), Bonmin::OsiTMINLPInterface::getNumCols(), Bonmin::OsiTMINLPInterface::getNumRows(), Bonmin::OsiTMINLPInterface::getRowLower(), Bonmin::OsiTMINLPInterface::getRowUpper(), Bonmin::TMINLP2TNLP::hasLinearObjective(), infty, Bonmin::TMINLP::INTEGER, m, n, nbAp_, Bonmin::OsiTMINLPInterface::problem(), and Bonmin::TMINLP2TNLP::var_types().

Referenced by solution().

bool Bonmin::HeuristicInnerApproximation::getMyInnerApproximation ( OsiTMINLPInterface si,
OsiCuts &  cs,
int  ind,
const double *  x,
const double *  x2 
) [private]

Get an inner-approximation constraint obtained by drawing a chord linking the two given points x and x2.

This only applies to nonlinear constraints featuring univariate functions (f(x) <= y).

Definition at line 290 of file BonHeuristicInnerApproximation.cpp.

References a, diff(), e, Bonmin::TMINLP2TNLP::eval_gi(), Bonmin::TMINLP2TNLP::eval_grad_gi(), g, Bonmin::TMINLP2TNLP::get_nlp_info(), Bonmin::OsiTMINLPInterface::getInfinity(), infty, m, n, and Bonmin::OsiTMINLPInterface::problem().

Referenced by extractInnerApproximation().


Member Data Documentation

BonminSetup* Bonmin::HeuristicInnerApproximation::setup_ [protected]

Setup to use for local searches (will make copies).

Definition at line 58 of file BonHeuristicInnerApproximation.hpp.

Referenced by operator=(), and solution().

int Bonmin::HeuristicInnerApproximation::howOften_ [private]

How often to do (code can change).

Definition at line 62 of file BonHeuristicInnerApproximation.hpp.

Referenced by operator=(), and solution().

SubMipSolver* Bonmin::HeuristicInnerApproximation::mip_ [private]

A subsolver for MIP.

Definition at line 65 of file BonHeuristicInnerApproximation.hpp.

Referenced by Initialize(), operator=(), solution(), and ~HeuristicInnerApproximation().

int Bonmin::HeuristicInnerApproximation::nbAp_ [private]

Number of Approximation points.

Definition at line 68 of file BonHeuristicInnerApproximation.hpp.

Referenced by extractInnerApproximation(), Initialize(), and operator=().


The documentation for this class was generated from the following files:
Generated on Thu Nov 10 03:13:36 2011 by  doxygen 1.4.7