#include <BonHeuristicInnerApproximation.hpp>
Collaboration diagram for Bonmin::HeuristicInnerApproximation:
Public Member Functions | |
HeuristicInnerApproximation (BonminSetup *setup) | |
Constructor with setup. | |
HeuristicInnerApproximation (const HeuristicInnerApproximation ©) | |
Copy constructor. | |
~HeuristicInnerApproximation () | |
Destructor. | |
HeuristicInnerApproximation & | operator= (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 | |
BonminSetup * | setup_ |
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). | |
SubMipSolver * | mip_ |
A subsolver for MIP. | |
int | nbAp_ |
Number of Approximation points. |
Definition at line 20 of file BonHeuristicInnerApproximation.hpp.
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 | ) |
Bonmin::HeuristicInnerApproximation::~HeuristicInnerApproximation | ( | ) |
HeuristicInnerApproximation & Bonmin::HeuristicInnerApproximation::operator= | ( | const HeuristicInnerApproximation & | rhs | ) |
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] |
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().
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().
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=().