OsiObject for auxiliary variables $w=f(x)$. More...
#include <CouenneObject.hpp>


Public Types | |
| 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) More... | |
| CouenneObject (CouenneCutGenerator *cutgen, CouenneProblem *p, exprVar *ref, Bonmin::BabSetupBase *base, JnlstPtr jnlst) | |
| Constructor with information for branching point selection strategy. More... | |
| CouenneObject (exprVar *ref, Bonmin::BabSetupBase *base, JnlstPtr jnlst) | |
| Constructor with lesser information, used for infeasibility only. More... | |
| ~CouenneObject () | |
| Destructor. More... | |
| CouenneObject (const CouenneObject &src) | |
| Copy constructor. More... | |
| virtual CouenneObject * | clone () const |
| Cloning method. More... | |
| void | setParameters (Bonmin::BabSetupBase *base) |
| set object parameters by reading from command line More... | |
| 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) More... | |
| 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) More... | |
| virtual double | feasibleRegion (OsiSolverInterface *, const OsiBranchingInformation *) const |
| fix (one of the) arguments of reference auxiliary variable More... | |
| virtual OsiBranchingObject * | createBranch (OsiSolverInterface *, const OsiBranchingInformation *, int) const |
| create CouenneBranchingObject or CouenneThreeWayBranchObj based on this object More... | |
| exprVar * | Reference () const |
| return reference auxiliary variable More... | |
| enum brSelStrat | Strategy () const |
| return branching point selection strategy More... | |
| CouNumber | getBrPoint (funtriplet *ft, CouNumber x0, CouNumber l, CouNumber u, const OsiBranchingInformation *info=NULL) const |
| pick branching point based on current strategy More... | |
| CouNumber | midInterval (CouNumber x, CouNumber l, CouNumber u, const OsiBranchingInformation *info=NULL) const |
| returns a point "inside enough" a given interval, or x if it already is. More... | |
| virtual double | downEstimate () const |
| Return "down" estimate (for non-convex, distance old <–> new LP point) More... | |
| virtual double | upEstimate () const |
| Return "up" estimate (for non-convex, distance old <–> new LP point) More... | |
| void | setEstimate (double est, int direction) |
| set up/down estimate (0 for down, 1 for up). More... | |
| void | setEstimates (const OsiBranchingInformation *info, CouNumber *infeasibility, CouNumber *brpt) const |
| set up/down estimates based on branching information More... | |
| virtual bool | isCuttable () const |
| are we on the bad or good side of the expression? More... | |
| virtual double | intInfeasibility (double value, double lb, double ub) const |
| integer infeasibility: min {value - floor(value), ceil(value) - value} More... | |
| CouNumber | lp_clamp () const |
| Defines safe interval percentage for using LP point as a branching point. More... | |
| virtual int | columnNumber () const |
| Returns the column index. More... | |
Protected Attributes | |
| CouenneCutGenerator * | cutGen_ |
| pointer to cut generator (not necessary, can be NULL) More... | |
| CouenneProblem * | problem_ |
| pointer to Couenne problem More... | |
| exprVar * | reference_ |
| The (auxiliary) variable this branching object refers to. More... | |
| enum brSelStrat | strategy_ |
| Branching point selection strategy. More... | |
| JnlstPtr | jnlst_ |
| SmartPointer to the Journalist. More... | |
| CouNumber | alpha_ |
| Combination parameter for the mid-point branching point selection strategy. More... | |
| CouNumber | lp_clamp_ |
| Defines safe interval percentage for using LP point as a branching point. More... | |
| CouNumber | feas_tolerance_ |
| feasibility tolerance (equal to that of CouenneProblem) More... | |
| bool | doFBBT_ |
| shall we do Feasibility based Bound Tightening (FBBT) at branching? More... | |
| bool | doConvCuts_ |
| shall we add convexification cuts at branching? More... | |
| double | downEstimate_ |
| down estimate (to be used in pseudocost) More... | |
| double | upEstimate_ |
| up estimate (to be used in pseudocost) More... | |
| enum pseudocostMult | pseudoMultType_ |
| multiplier type for pseudocost More... | |
OsiObject for auxiliary variables $w=f(x)$.
Associated with a multi-variate function $f(x)$ and a related infeasibility $|w-f(x)|$, creates branches to help restoring feasibility
Definition at line 57 of file CouenneObject.hpp.
type of up/down estimate to return for pseudocosts
| Enumerator | |
|---|---|
| INFEASIBILITY | |
| INTERVAL_LP | |
| INTERVAL_LP_REV | |
| INTERVAL_BR | |
| INTERVAL_BR_REV | |
| PROJECTDIST | |
Definition at line 62 of file CouenneObject.hpp.
type of object (for branching variable selection)
| Enumerator | |
|---|---|
| EXPR_OBJ | |
| VAR_OBJ | |
| VT_OBJ | |
Definition at line 68 of file CouenneObject.hpp.
strategy names
| Enumerator | |
|---|---|
| NO_STRATEGY | |
| NO_BRANCH | |
| MID_INTERVAL | |
| MIN_AREA | |
| BALANCED | |
| LP_CENTRAL | |
| LP_CLAMPED | |
Definition at line 71 of file CouenneObject.hpp.
| CouenneObject::CouenneObject | ( | ) |
empty constructor (for unused objects)
Empty constructor.
Definition at line 25 of file CouenneObject.cpp.
| CouenneObject::CouenneObject | ( | CouenneCutGenerator * | cutgen, |
| CouenneProblem * | p, | ||
| exprVar * | ref, | ||
| Bonmin::BabSetupBase * | base, | ||
| JnlstPtr | jnlst | ||
| ) |
Constructor with information for branching point selection strategy.
Definition at line 44 of file CouenneObject.cpp.
| CouenneObject::CouenneObject | ( | exprVar * | ref, |
| Bonmin::BabSetupBase * | base, | ||
| JnlstPtr | jnlst | ||
| ) |
Constructor with lesser information, used for infeasibility only.
Definition at line 94 of file CouenneObject.cpp.
|
inline |
Destructor.
Definition at line 85 of file CouenneObject.hpp.
| CouenneObject::CouenneObject | ( | const CouenneObject & | src | ) |
Copy constructor.
Definition at line 119 of file CouenneObject.cpp.
|
inlinevirtual |
Cloning method.
Reimplemented in Couenne::CouenneComplObject, Couenne::CouenneVarObject, and Couenne::CouenneVTObject.
Definition at line 91 of file CouenneObject.hpp.
| void CouenneObject::setParameters | ( | Bonmin::BabSetupBase * | base | ) |
set object parameters by reading from command line
set parameters by reading command line or parameter file
Definition at line 475 of file CouenneObject.cpp.
|
virtual |
compute infeasibility of this variable, |w - f(x)| (where w is the auxiliary variable defined as w = f(x)
non-linear infeasibility – not called by independent's CouenneVarObject
Reimplemented in Couenne::CouenneVarObject, Couenne::CouenneComplObject, and Couenne::CouenneVTObject.
Definition at line 364 of file CouenneObject.cpp.
|
virtual |
compute infeasibility of this variable, |w - f(x)|, where w is the auxiliary variable defined as w = f(x)
non-linear infeasibility – no need for the domain's push instruction as this is called from CouenneVarObject::infeasibility()
Reimplemented in Couenne::CouenneVarObject, and Couenne::CouenneComplObject.
Definition at line 411 of file CouenneObject.cpp.
|
virtual |
fix (one of the) arguments of reference auxiliary variable
fix integer coordinates of current integer feasible solution
Reimplemented in Couenne::CouenneVarObject.
Definition at line 28 of file feasibleRegion.cpp.
|
virtual |
create CouenneBranchingObject or CouenneThreeWayBranchObj based on this object
apply the branching rule
Debug output
Reimplemented in Couenne::CouenneVarObject, and Couenne::CouenneComplObject.
Definition at line 151 of file CouenneObject.cpp.
|
inline |
return reference auxiliary variable
Definition at line 114 of file CouenneObject.hpp.
|
inline |
return branching point selection strategy
Definition at line 118 of file CouenneObject.hpp.
| CouNumber CouenneObject::getBrPoint | ( | funtriplet * | ft, |
| CouNumber | x0, | ||
| CouNumber | l, | ||
| CouNumber | u, | ||
| const OsiBranchingInformation * | info = NULL |
||
| ) | const |
pick branching point based on current strategy
Definition at line 337 of file CouenneObject.cpp.
| CouNumber CouenneObject::midInterval | ( | CouNumber | x, |
| CouNumber | l, | ||
| CouNumber | u, | ||
| const OsiBranchingInformation * | info = NULL |
||
| ) | const |
returns a point "inside enough" a given interval, or x if it already is.
computes a not-too-bad point where to branch, in the "middle" of an interval
Modify alpha_ using gap provided by info
Definition at line 269 of file CouenneObject.cpp.
|
inlinevirtual |
Return "down" estimate (for non-convex, distance old <–> new LP point)
Definition at line 129 of file CouenneObject.hpp.
|
inlinevirtual |
Return "up" estimate (for non-convex, distance old <–> new LP point)
Definition at line 138 of file CouenneObject.hpp.
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 150 of file CouenneObject.hpp.
| void CouenneObject::setEstimates | ( | const OsiBranchingInformation * | info, |
| CouNumber * | infeasibility, | ||
| CouNumber * | brpt | ||
| ) | const |
set up/down estimates based on branching information
Definition at line 576 of file CouenneObject.cpp.
|
inlinevirtual |
are we on the bad or good side of the expression?
Reimplemented in Couenne::CouenneVarObject.
Definition at line 159 of file CouenneObject.hpp.
|
virtual |
integer infeasibility: min {value - floor(value), ceil(value) - value}
integer infeasibility: min {value - floor(value), ceil(value) - value}.
Handle special cases so that Cbc and Couenne agree. Also, check out-of-bounds values.
Definition at line 140 of file CouenneObject.cpp.
|
inline |
Defines safe interval percentage for using LP point as a branching point.
Definition at line 170 of file CouenneObject.hpp.
|
inlinevirtual |
Returns the column index.
Definition at line 174 of file CouenneObject.hpp.
|
protected |
pointer to cut generator (not necessary, can be NULL)
Definition at line 180 of file CouenneObject.hpp.
|
protected |
pointer to Couenne problem
Definition at line 183 of file CouenneObject.hpp.
|
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 188 of file CouenneObject.hpp.
|
protected |
Branching point selection strategy.
Definition at line 191 of file CouenneObject.hpp.
|
protected |
SmartPointer to the Journalist.
Definition at line 194 of file CouenneObject.hpp.
|
protected |
Combination parameter for the mid-point branching point selection strategy.
Definition at line 198 of file CouenneObject.hpp.
|
protected |
Defines safe interval percentage for using LP point as a branching point.
Definition at line 201 of file CouenneObject.hpp.
|
protected |
feasibility tolerance (equal to that of CouenneProblem)
Definition at line 204 of file CouenneObject.hpp.
|
protected |
shall we do Feasibility based Bound Tightening (FBBT) at branching?
Definition at line 207 of file CouenneObject.hpp.
|
protected |
shall we add convexification cuts at branching?
Definition at line 210 of file CouenneObject.hpp.
|
mutableprotected |
down estimate (to be used in pseudocost)
Definition at line 213 of file CouenneObject.hpp.
|
mutableprotected |
up estimate (to be used in pseudocost)
Definition at line 216 of file CouenneObject.hpp.
|
protected |
multiplier type for pseudocost
Definition at line 219 of file CouenneObject.hpp.
1.8.5