12 #ifndef COUENNEBRANCHINGOBJECT_HPP
13 #define COUENNEBRANCHINGOBJECT_HPP
18 #include "OsiBranchingObject.hpp"
22 class CouenneCutGenerator;
25 #define COUENNE_CROP 1
26 #define COUENNE_LCROP (1e2*COUENNE_CROP)
28 #define COUENNE_LARGE_INTERVAL 1e4
29 #define COUENNE_NEAR_BOUND 1e-2
43 const OsiObject *originalObject,
56 OsiTwoWayBranchingObject (src),
68 virtual OsiBranchingObject *
clone ()
const
76 virtual double branch (OsiSolverInterface * solver = NULL);
Cut Generator for linear convexifications.
CouenneProblem * problem_
Pointer to CouenneProblem (necessary to allow FBBT)
CouenneBranchingObject(const CouenneBranchingObject &src)
Copy constructor.
CouenneCutGenerator * cutGen_
Pointer to CouenneCutGenerator (if any); if not NULL, allows to do extra cut generation during branch...
JnlstPtr jnlst_
SmartPointer to the Journalist.
status of lower/upper bound of a variable, to be checked/modified in bound tightening ...
double downEstimate_
down branch estimate (done at selectBranch with reduced costs)
virtual double branch(OsiSolverInterface *solver=NULL)
Execute the actions required to branch, as specified by the current state of the branching object...
"Spatial" branching object.
virtual OsiBranchingObject * clone() const
cloning method
static int nSGcomputations
expression * variable()
return branching variable
virtual bool boundBranch() const
does this branching object only change variable bounds?
bool doFBBT_
shall we do Feasibility based Bound Tightening (FBBT) at branching?
Class for MINLP problems with symbolic information.
CouenneBranchingObject(OsiSolverInterface *solver, const OsiObject *originalObject, JnlstPtr jnlst, CouenneCutGenerator *c, CouenneProblem *p, expression *var, int way, CouNumber brpoint, bool doFBBT, bool doConvCuts)
Constructor.
void fint fint fint fint fint fint fint fint fint fint real real real real real real real real * s
static int maxDepthOrbBranch
double CouNumber
main number type in Couenne
bool simulate_
are we currently in strong branching?
expression * variable_
The index of the variable this branching object refers to.
void branchCore(OsiSolverInterface *, int, int, bool, double, t_chg_bounds *&)
Perform branching step.
double upEstimate_
up branch estimate
bool doConvCuts_
shall we add convexification cuts at branching?
void setSimulate(bool s)
set simulate_ field below