/* Interval branch-and-bound optimizer for non-linear funcrions */ /* Last edited on 2007-01-04 03:00:01 by stolfi */ #ifndef bbopt_h #define bbopt_h #include #include #include #include FBoxList bb_optimize ( int d, Interval F(Interval *xs), Interval *xr, Float *tol, Interval *fm, /* OUT */ void report(Interval *xs, Interval fs, bool_t final) ); /* Computes a set of approximate minima of {f} in the box ({d}-dimensional interval) {xr[0] × xr[1] × ... × xr[d-1]}. The method used is the interval branch-and-bound, stopping when the sub-boxes have width less than {tol[i]} along coordinate {i}, for every {i} in {0..d-1}. The function call {F(xs)} must return an interval {fs} that is guaranteed to contain the minimum value of {f(x)} for all points {x} in the box {xs[0..d-1]}. On output, the interval {fm} is set to the smallest known interval that is guaranteed to contain the minimum of {f} in the original box {xr}. The {report} procedure, if not NULL, is called with {final = FALSE} for every sub-box generated by the branch-and-bound procedure, and also with {final = TRUE} for every box that is returned in the result list. */ #endif