#include <CouenneObject.hpp>
Inheritance diagram for CouenneObject:
Public Types | |
INFEASIBILITY | |
INTERVAL_LP | |
INTERVAL_LP_REV | |
INTERVAL_BR | |
INTERVAL_BR_REV | |
PROJECTDIST | |
EXPR_OBJ | |
VAR_OBJ | |
VT_OBJ | |
NO_STRATEGY | |
NO_BRANCH | |
MID_INTERVAL | |
MIN_AREA | |
BALANCED | |
LP_CENTRAL | |
LP_CLAMPED | |
enum | pseudocostMult { INFEASIBILITY, INTERVAL_LP, INTERVAL_LP_REV, INTERVAL_BR, INTERVAL_BR_REV, PROJECTDIST } |
type of up/down estimate to return for pseudocosts More... | |
enum | branch_obj { EXPR_OBJ, VAR_OBJ, VT_OBJ } |
type of object (for branching variable selection) More... | |
enum | brSelStrat { NO_STRATEGY, NO_BRANCH, MID_INTERVAL, MIN_AREA, BALANCED, LP_CENTRAL, LP_CLAMPED } |
strategy names More... | |
Public Member Functions | |
CouenneObject () | |
empty constructor (for unused objects) | |
CouenneObject (CouenneCutGenerator *cutgen, CouenneProblem *p, exprVar *ref, Bonmin::BabSetupBase *base, JnlstPtr jnlst) | |
Constructor with information for branching point selection strategy. | |
CouenneObject (exprVar *ref, Bonmin::BabSetupBase *base, JnlstPtr jnlst) | |
Constructor with lesser information, used for infeasibility only. | |
~CouenneObject () | |
Destructor. | |
CouenneObject (const CouenneObject &src) | |
Copy constructor. | |
virtual CouenneObject * | clone () const |
Cloning method. | |
void | setParameters (Bonmin::BabSetupBase *base) |
set object parameters by reading from command line | |
virtual double | infeasibility (const OsiBranchingInformation *info, int &way) const |
compute infeasibility of this variable, |w - f(x)| (where w is the auxiliary variable defined as w = f(x) | |
virtual double | checkInfeasibility (const OsiBranchingInformation *info) const |
compute infeasibility of this variable, |w - f(x)|, where w is the auxiliary variable defined as w = f(x) | |
virtual double | feasibleRegion (OsiSolverInterface *, const OsiBranchingInformation *) const |
fix (one of the) arguments of reference auxiliary variable | |
virtual OsiBranchingObject * | createBranch (OsiSolverInterface *, const OsiBranchingInformation *, int) const |
create CouenneBranchingObject or CouenneThreeWayBranchObj based on this object | |
exprVar * | Reference () const |
return reference auxiliary variable | |
enum brSelStrat | Strategy () const |
return branching point selection strategy | |
CouNumber | getBrPoint (funtriplet *ft, CouNumber x0, CouNumber l, CouNumber u) const |
pick branching point based on current strategy | |
CouNumber | midInterval (CouNumber x, CouNumber l, CouNumber u) const |
returns a point "inside enough" a given interval, or x if it already is | |
virtual double | downEstimate () const |
Return "down" estimate (for non-convex, distance old <--> new LP point). | |
virtual double | upEstimate () const |
Return "up" estimate (for non-convex, distance old <--> new LP point). | |
void | setEstimate (double est, int direction) |
set up/down estimate (0 for down, 1 for up). | |
void | setEstimates (const OsiBranchingInformation *info, CouNumber *infeasibility, CouNumber *brpt) const |
set up/down estimates based on branching information | |
virtual bool | isCuttable () const |
are we on the bad or good side of the expression? | |
virtual double | intInfeasibility (double value, double lb, double ub) const |
integer infeasibility: min {value - floor(value), ceil(value) - value} | |
CouNumber | lp_clamp () const |
Defines safe interval percentage for using LP point as a branching point. | |
virtual int | columnNumber () const |
Protected Attributes | |
CouenneCutGenerator * | cutGen_ |
pointer to cut generator (not necessary, can be NULL) | |
CouenneProblem * | problem_ |
pointer to Couenne problem | |
exprVar * | reference_ |
The (auxiliary) variable this branching object refers to. | |
enum brSelStrat | strategy_ |
Branching point selection strategy. | |
JnlstPtr | jnlst_ |
SmartPointer to the Journalist. | |
CouNumber | alpha_ |
Combination parameter for the mid-point branching point selection strategy. | |
CouNumber | lp_clamp_ |
Defines safe interval percentage for using LP point as a branching point. | |
CouNumber | feas_tolerance_ |
feasibility tolerance (equal to that of CouenneProblem) | |
bool | doFBBT_ |
shall we do Feasibility based Bound Tightening (FBBT) at branching? | |
bool | doConvCuts_ |
shall we add convexification cuts at branching? | |
double | downEstimate_ |
down estimate (to be used in pseudocost) | |
double | upEstimate_ |
up estimate (to be used in pseudocost) | |
enum pseudocostMult | pseudoMultType_ |
multiplier type for pseudocost |
Associated with a multi-variate function $f(x)$ and a related infeasibility $|w-f(x)|$, creates branches to help restoring feasibility
Definition at line 50 of file CouenneObject.hpp.
CouenneObject::CouenneObject | ( | ) |
CouenneObject::CouenneObject | ( | CouenneCutGenerator * | cutgen, | |
CouenneProblem * | p, | |||
exprVar * | ref, | |||
Bonmin::BabSetupBase * | base, | |||
JnlstPtr | jnlst | |||
) |
Constructor with information for branching point selection strategy.
Constructor with lesser information, used for infeasibility only.
CouenneObject::~CouenneObject | ( | ) | [inline] |
CouenneObject::CouenneObject | ( | const CouenneObject & | src | ) |
Copy constructor.
virtual CouenneObject* CouenneObject::clone | ( | ) | const [inline, virtual] |
Cloning method.
Reimplemented in CouenneComplObject, CouenneOrbitObj, CouenneVarObject, and CouenneVTObject.
Definition at line 84 of file CouenneObject.hpp.
References CouenneObject().
void CouenneObject::setParameters | ( | Bonmin::BabSetupBase * | base | ) |
virtual double CouenneObject::infeasibility | ( | const OsiBranchingInformation * | info, | |
int & | way | |||
) | const [virtual] |
compute infeasibility of this variable, |w - f(x)| (where w is the auxiliary variable defined as w = f(x)
Reimplemented in CouenneComplObject, CouenneOrbitObj, CouenneVarObject, and CouenneVTObject.
virtual double CouenneObject::checkInfeasibility | ( | const OsiBranchingInformation * | info | ) | const [virtual] |
compute infeasibility of this variable, |w - f(x)|, where w is the auxiliary variable defined as w = f(x)
Reimplemented in CouenneComplObject, CouenneOrbitObj, and CouenneVarObject.
virtual double CouenneObject::feasibleRegion | ( | OsiSolverInterface * | , | |
const OsiBranchingInformation * | ||||
) | const [virtual] |
fix (one of the) arguments of reference auxiliary variable
Reimplemented in CouenneOrbitObj, and CouenneVarObject.
virtual OsiBranchingObject* CouenneObject::createBranch | ( | OsiSolverInterface * | , | |
const OsiBranchingInformation * | , | |||
int | ||||
) | const [virtual] |
create CouenneBranchingObject or CouenneThreeWayBranchObj based on this object
Reimplemented in CouenneComplObject, CouenneOrbitObj, and CouenneVarObject.
exprVar* CouenneObject::Reference | ( | ) | const [inline] |
return reference auxiliary variable
Definition at line 107 of file CouenneObject.hpp.
References reference_.
enum brSelStrat CouenneObject::Strategy | ( | ) | const [inline] |
return branching point selection strategy
Definition at line 111 of file CouenneObject.hpp.
References strategy_.
CouNumber CouenneObject::getBrPoint | ( | funtriplet * | ft, | |
CouNumber | x0, | |||
CouNumber | l, | |||
CouNumber | u | |||
) | const |
pick branching point based on current strategy
returns a point "inside enough" a given interval, or x if it already is
virtual double CouenneObject::downEstimate | ( | ) | const [inline, virtual] |
Return "down" estimate (for non-convex, distance old <--> new LP point).
Definition at line 122 of file CouenneObject.hpp.
References downEstimate_.
virtual double CouenneObject::upEstimate | ( | ) | const [inline, virtual] |
Return "up" estimate (for non-convex, distance old <--> new LP point).
Definition at line 131 of file CouenneObject.hpp.
References upEstimate_.
void CouenneObject::setEstimate | ( | double | est, | |
int | direction | |||
) | [inline] |
set up/down estimate (0 for down, 1 for up).
This happens in CouenneChooseStrong, where a new LP point is available and we can measure distance from old LP point. This is the denominator we use in pseudocost
Definition at line 143 of file CouenneObject.hpp.
References downEstimate_, and upEstimate_.
void CouenneObject::setEstimates | ( | const OsiBranchingInformation * | info, | |
CouNumber * | infeasibility, | |||
CouNumber * | brpt | |||
) | const |
set up/down estimates based on branching information
virtual bool CouenneObject::isCuttable | ( | ) | const [inline, virtual] |
are we on the bad or good side of the expression?
Reimplemented in CouenneVarObject.
Definition at line 152 of file CouenneObject.hpp.
References isInteger(), problem_, and reference_.
virtual double CouenneObject::intInfeasibility | ( | double | value, | |
double | lb, | |||
double | ub | |||
) | const [virtual] |
integer infeasibility: min {value - floor(value), ceil(value) - value}
CouNumber CouenneObject::lp_clamp | ( | ) | const [inline] |
Defines safe interval percentage for using LP point as a branching point.
Definition at line 163 of file CouenneObject.hpp.
References lp_clamp_.
virtual int CouenneObject::columnNumber | ( | ) | const [inline, virtual] |
CouenneCutGenerator* CouenneObject::cutGen_ [protected] |
pointer to cut generator (not necessary, can be NULL)
Definition at line 175 of file CouenneObject.hpp.
CouenneProblem* CouenneObject::problem_ [protected] |
pointer to Couenne problem
Definition at line 178 of file CouenneObject.hpp.
Referenced by isCuttable().
exprVar* CouenneObject::reference_ [protected] |
The (auxiliary) variable this branching object refers to.
If the expression is w=f(x,y), this is w, as opposed to CouenneBranchingObject, where it would be either x or y.
Definition at line 183 of file CouenneObject.hpp.
Referenced by columnNumber(), isCuttable(), and Reference().
enum brSelStrat CouenneObject::strategy_ [protected] |
Branching point selection strategy.
Definition at line 186 of file CouenneObject.hpp.
Referenced by Strategy().
JnlstPtr CouenneObject::jnlst_ [protected] |
CouNumber CouenneObject::alpha_ [protected] |
Combination parameter for the mid-point branching point selection strategy.
Definition at line 193 of file CouenneObject.hpp.
CouNumber CouenneObject::lp_clamp_ [protected] |
Defines safe interval percentage for using LP point as a branching point.
Definition at line 196 of file CouenneObject.hpp.
Referenced by lp_clamp().
CouNumber CouenneObject::feas_tolerance_ [protected] |
feasibility tolerance (equal to that of CouenneProblem)
Definition at line 199 of file CouenneObject.hpp.
bool CouenneObject::doFBBT_ [protected] |
shall we do Feasibility based Bound Tightening (FBBT) at branching?
Definition at line 202 of file CouenneObject.hpp.
bool CouenneObject::doConvCuts_ [protected] |
double CouenneObject::downEstimate_ [mutable, protected] |
down estimate (to be used in pseudocost)
Definition at line 208 of file CouenneObject.hpp.
Referenced by downEstimate(), and setEstimate().
double CouenneObject::upEstimate_ [mutable, protected] |
up estimate (to be used in pseudocost)
Definition at line 211 of file CouenneObject.hpp.
Referenced by setEstimate(), and upEstimate().
enum pseudocostMult CouenneObject::pseudoMultType_ [protected] |