16 using namespace Couenne;
21 const OsiBranchingInformation *
info,
28 if (brDist) {free (brDist); brDist = NULL;}
32 wi = obj -> Reference () ->
Index ();
34 assert ((xi >= 0) && (yi >= 0) && (wi >= 0));
36 brpts = (
double *) realloc (brpts,
sizeof (
double));
42 yu = info -> upper_ [yi],
43 y0 = info -> solution_ [yi];
58 return CoinMin (brDist [0], brDist [1]);
89 return CoinMin (brDist [0], brDist [1]);
99 wu = info -> upper_ [wi],
100 w0 = info -> solution_ [wi],
101 x0 = info -> solution_ [xi];
108 var = obj -> Reference ();
127 return CoinMin (brDist [0], brDist [1]);
141 return CoinMin (brDist [0], brDist [1]);
149 xl = info -> lower_ [xi],
150 xu = info -> upper_ [xi],
162 if (dx > dw) {var =
arglist_[0]; *brpts = (xl+xu)/2.; }
163 else {var = obj->
Reference(); *brpts = (wl+wu)/2.; }
165 if (dy > dw) {var =
arglist_[1]; *brpts = (yl+yu)/2.; }
166 else {var = obj->
Reference(); *brpts = (wl+wu)/2.; }
169 return CoinMin (brDist [0], brDist [1]);
void fint fint fint real fint real real real real real real real real real fint real fint fint fint real fint fint fint fint * info
OsiObject for auxiliary variables $w=f(x)$.
virtual CouNumber selectBranch(const CouenneObject *obj, const OsiBranchingInformation *info, expression *&var, double *&brpts, double *&brDist, int &way)
Set up branching object by evaluating many branching points for each expression's arguments...
virtual int Index() const
Return index of variable (only valid for exprVar and exprAux)
double * computeMulBrDist(const OsiBranchingInformation *info, int xi, int yi, int wi, int brind, double *brpt, int nPts)
compute distance from future convexifications in set with x,y,w bounded.
expression ** arglist_
argument list is an array of pointers to other expressions
double CouNumber
main number type in Couenne
exprVar * Reference() const
return reference auxiliary variable
#define COUENNE_NEAR_BOUND