14 using namespace Ipopt;
15 using namespace Couenne;
25 "[created Complementarity constraint object with sign %d]\n", sign);
48 int index0 = arglist [0] -> Index (),
49 index1 = arglist [1] -> Index ();
54 x0 = info -> solution_ [index0],
55 x1 = info -> solution_ [index1],
60 if (prod <= 0)
return 0;
67 if (prod >= 0)
return 0;
81 x0 = fabs (info -> solution_ [index0]),
82 x1 = fabs (info -> solution_ [index1]);
86 way = (
x1 <
x0) ? 1 : 0;
99 int index0 = arglist [0] -> Index (),
100 index1 = arglist [1] -> Index ();
103 x0 = info -> solution_ [index0],
104 x1 = info -> solution_ [index1],
110 ((
sign_ < 0) && (prod >= 0)) ||
111 ((
sign_ > 0) && (prod <= 0)) ? fabs (prod) : 0.;
118 const OsiBranchingInformation *
info,
Cut Generator for linear convexifications.
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 = ...
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)$.
exprVar * reference_
The (auxiliary) variable this branching object refers to.
OsiObject for complementarity constraints .
const Ipopt::EJournalCategory J_BRANCHING(Ipopt::J_USER1)
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 doFBBT_
shall we do Feasibility based Bound Tightening (FBBT) at branching?
CouenneComplObject(CouenneCutGenerator *c, CouenneProblem *p, exprVar *ref, Bonmin::BabSetupBase *base, JnlstPtr jnlst, int sign)
Constructor with information for branching point selection strategy.
CouenneProblem * problem_
pointer to Couenne problem
A class to have all elements necessary to setup a branch-and-bound.
bool doConvCuts_
shall we add convexification cuts at branching?
"Spatial" branching object for complementarity constraints.
Class for MINLP problems with symbolic information.
double CouNumber
main number type in Couenne
virtual OsiBranchingObject * createBranch(OsiSolverInterface *, const OsiBranchingInformation *, int way) const
create CouenneBranchingObject or CouenneThreeWayBranchObj based on this object
CouenneCutGenerator * cutGen_
pointer to cut generator (not necessary, can be NULL)
JnlstPtr jnlst_
SmartPointer to the Journalist.
int sign_
-1 if object is for xi * xj <= 0 +1 if object is for xi * xj <= 0 0 if object is for xi * xj = 0 (cla...