11 #include "CglCutGenerator.hpp"
24 int ncols = p -> nVars ();
26 if ((info.inTree) && (info.pass==0)) {
32 OsiBabSolver *auxinfo = dynamic_cast <OsiBabSolver *> (si.getAuxiliaryInfo ());
35 have_parent_lower =
false,
36 have_parent_upper =
false;
38 if (auxinfo && (auxinfo -> extraCharacteristics () & 2)) {
42 *beforeLower = auxinfo -> beforeLower (),
43 *beforeUpper = auxinfo -> beforeUpper ();
45 if (beforeLower || beforeUpper) {
49 *nowLower = p -> Lb (),
50 *nowUpper = p -> Ub ();
54 have_parent_lower =
true;
56 for (
int i=0; i < ncols; i++)
63 have_parent_upper =
true;
65 for (
int i=0; i < ncols; i++)
74 if (!have_parent_lower ||
78 printf (
"### Warning: could not access parent node's %sbounds in generateCuts()\n",
79 have_parent_lower ?
"upper " : have_parent_upper ?
"lower " :
"");
83 if (!have_parent_lower)
84 for (
int i=0; i < ncols; i++)
87 if (!have_parent_upper)
88 for (
int i=0; i < ncols; i++)
void updateBranchInfo(const OsiSolverInterface &si, CouenneProblem *p, t_chg_bounds *chg, const CglTreeInfo &info)
get new bounds from parents' bounds + branching rules
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
status of lower/upper bound of a variable, to be checked/modified in bound tightening ...
void setLower(ChangeStatus lower)
void setUpper(ChangeStatus upper)
Class for MINLP problems with symbolic information.