11 #include "CoinHelperFunctions.hpp"
16 using namespace Couenne;
28 for (
int i=
nVars(); i--; knownOptimum++)
30 if (*knownOptimum <
Lb (i) ||
31 *knownOptimum >
Ub (i)) {
38 knownOptimum -=
nVars ();
44 for (
int i=0; i <
nVars (); i++)
47 "x_%03d [%+10g %+10g] ", i,
55 for (
int ii =
nVars (); ii--;) {
59 if (
Lb (i) >
Ub (i) &&
76 " implied bounds: w_%d has infeasible bounds [%g,%g]\n",
100 " impli %2d [%15.8g, %15.8g] -> [%15.8g, %15.8g]: ",
101 i, l0, u0,
Lb (i),
Ub (i));
118 "#### implied b_%d [%g,%g] cuts optimum %g\n",
int impliedBounds(t_chg_bounds *) const
"Backward" bound tightening, aka implied bounds.
int nVars() const
Total number of variables.
CouNumber & ub(register int index)
current upper bound
status of lower/upper bound of a variable, to be checked/modified in bound tightening ...
CouNumber & lb(register int index)
current lower bound
void print(std::ostream &=std::cout)
Display current representation of problem: objective, linear and nonlinear constraints, and auxiliary variables.
#define COUENNE_BOUND_PREC
ConstJnlstPtr Jnlst() const
Provide Journalist.
const Ipopt::EJournalCategory J_BOUNDTIGHTENING(Ipopt::J_USER2)
std::vector< exprVar * > variables_
Variables (original, auxiliary, and defined)
Domain domain_
current point and bounds;
int * numbering_
numbering of variables.
CouNumber * Ub() const
Return vector of upper bounds.
CouNumber * optimum_
Best solution known to be loaded from file – for testing purposes.
double CouNumber
main number type in Couenne
CouNumber * Lb() const
Return vector of lower bounds.