Go to the documentation of this file.
12 #ifndef COUENNEOBJECT_HPP
13 #define COUENNEOBJECT_HPP
31 #define THRES_ZERO_SYMM 0.8
45 class CouenneCutGenerator;
CouNumber lp_clamp() const
Defines safe interval percentage for using LP point as a branching point.
exprVar * Reference() const
return reference auxiliary variable
~CouenneObject()
Destructor.
enum pseudocostMult pseudoMultType_
multiplier type for pseudocost
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.
virtual double checkInfeasibility(const OsiBranchingInformation *info) const
compute infeasibility of this variable, |w - f(x)|, where w is the auxiliary variable defined as w = ...
bool isInteger(CouNumber x)
is this number integer?
virtual CouenneObject * clone() const
Cloning method.
CouenneProblem * problem_
pointer to Couenne problem
void setEstimates(const OsiBranchingInformation *info, CouNumber *infeasibility, CouNumber *brpt) const
set up/down estimates based on branching information
Cut Generator for linear convexifications.
const CouNumber closeToBounds
general include file for different compilers
CouNumber lp_clamp_
Defines safe interval percentage for using LP point as a branching point.
CouNumber alpha_
Combination parameter for the mid-point branching point selection strategy.
CouenneCutGenerator * cutGen_
pointer to cut generator (not necessary, can be NULL)
OsiObject for auxiliary variables $w=f(x)$.
virtual bool isCuttable() const
are we on the bad or good side of the expression?
bool doFBBT_
shall we do Feasibility based Bound Tightening (FBBT) at branching?
pseudocostMult
type of up/down estimate to return for pseudocosts
virtual OsiBranchingObject * createBranch(OsiSolverInterface *, const OsiBranchingInformation *, int) const
create CouenneBranchingObject or CouenneThreeWayBranchObj based on this object
double CouNumber
main number type in Couenne
const CouNumber default_alpha
void setEstimate(double est, int direction)
set up/down estimate (0 for down, 1 for up).
branch_obj
type of object (for branching variable selection)
JnlstPtr jnlst_
SmartPointer to the Journalist.
CouNumber getBrPoint(funtriplet *ft, CouNumber x0, CouNumber l, CouNumber u, const OsiBranchingInformation *info=NULL) const
pick branching point based on current strategy
bool doConvCuts_
shall we add convexification cuts at branching?
double downEstimate_
down estimate (to be used in pseudocost)
virtual int columnNumber() const
Returns the column index.
const double large_bound
if |branching point| > this, change it
CouNumber maxHeight(funtriplet *ft, CouNumber lb, CouNumber ub)
const CouNumber max_pseudocost
const CouNumber default_clamp
virtual double upEstimate() const
Return "up" estimate (for non-convex, distance old <--> new LP point)
enum brSelStrat strategy_
Branching point selection strategy.
CouenneObject()
empty constructor (for unused objects)
exprVar * reference_
The (auxiliary) variable this branching object refers to.
double infeasibility() const
void setParameters(Bonmin::BabSetupBase *base)
set object parameters by reading from command line
virtual double downEstimate() const
Return "down" estimate (for non-convex, distance old <--> new LP point)
Class for MINLP problems with symbolic information.
double upEstimate_
up estimate (to be used in pseudocost)
virtual double feasibleRegion(OsiSolverInterface *, const OsiBranchingInformation *) const
fix (one of the) arguments of reference auxiliary variable
enum brSelStrat Strategy() const
return branching point selection strategy
virtual double intInfeasibility(double value, double lb, double ub) const
integer infeasibility: min {value - floor(value), ceil(value) - value}
CouNumber feas_tolerance_
feasibility tolerance (equal to that of CouenneProblem)
CouNumber minMaxDelta(funtriplet *ft, CouNumber lb, CouNumber ub)