17 using namespace Couenne;
26 curWei = 1. / CoinMax (1., (
double) depth),
41 for (
int i=0; i<
problem_ -> nVars (); ++i) {
45 nlb = lb [i], nub = ub [i];
47 if (nlb < olb) nlb = olb;
48 if (nub > oub) nub = oub;
53 ((optimum [i] < nlb -
COUENNE_EPS && optimum [i] >= olb) ||
54 (optimum [i] > nub +
COUENNE_EPS && optimum [i] <= oub)))
56 printf (
" %30s cuts optimum at x_%d=%e: [%e,%e] --> [%e,%e], diff:%e\n",
61 CoinMax (nlb - optimum [i],
68 ((nlb >= nub + 2 - 1
e-5) && i == 0))
70 printf (
" %30s makes bound worse (x%d): [%e,%e] --> [%e,%e], diff:%e\n",
86 nFixed = nShr = nShrDbl = 0;
107 ratio += (
log (CoinMax (1
e-6, oub - olb)) -
108 log (CoinMax (1
e-6, nub - nlb)));
127 ratio /=
log ((
double) 2.);
double nFixed_
Whose performance is this?
CouExpr & log(CouExpr &e)
double * oldLB_
total weight (used to give an average indicator at the end of Couenne)
double boundRatio_
number of fixed variables
double shrunkInf_
average bound width shrinkage
int nRuns_
CPU time spent on this.
void fint fint fint real fint real real real real real real real real real * e
static double ratio(Bigint *a, Bigint *b)
double nProvedInfeas_
average # bounds that went from doubly infinite to infinite
double * oldUB_
old lower bounds (initial, i.e. before BT)
double shrunkDoubleInf_
average # bounds that went from infinite to finite (counts twice if [-inf,inf] to [a...
double CouNumber
main number type in Couenne
CouenneProblem * problem_
number of runs
void update(const CouNumber *lb, const CouNumber *ub, int depth) const
double weightSum_
average # proofs of infeasibility