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.