diff options
author | tlatorre <tlatorre@uchicago.edu> | 2018-09-11 11:21:03 -0500 |
---|---|---|
committer | tlatorre <tlatorre@uchicago.edu> | 2018-09-11 11:21:03 -0500 |
commit | aefa7a135151ab6fffa90a205464c8f818dabff0 (patch) | |
tree | ed8a9d639d7e25fa751d3d6f188f41a212b107af /src | |
parent | 95a5ee9bb23a9c78106ec11932d5a66826740c67 (diff) | |
download | sddm-aefa7a135151ab6fffa90a205464c8f818dabff0.tar.gz sddm-aefa7a135151ab6fffa90a205464c8f818dabff0.tar.bz2 sddm-aefa7a135151ab6fffa90a205464c8f818dabff0.zip |
only print the likelihood value once for each iteration during the "quick" minimization phase
Diffstat (limited to 'src')
-rw-r--r-- | src/fit.c | 50 |
1 files changed, 37 insertions, 13 deletions
@@ -28,6 +28,7 @@ typedef struct fitParams { event *ev; double epsrel; int fast; + int print; } fitParams; /* In order to start the fitter close to the minimum, we first do a series of @@ -101,19 +102,20 @@ double nll(unsigned int n, const double *x, double *grad, void *params) long long elapsed = (tv_stop.tv_sec - tv_start.tv_sec)*1000 + (tv_stop.tv_usec - tv_start.tv_usec)/1000; - printf("%5zu %10.2f %7.2f %7.2f %7.2f %5.2f %5.2f %5.2f %5.2f %5.2f f() = %7.3e took %lld ms\n", - iter++, - x[0], - x[1], - x[2], - x[3], - x[4], - x[5], - x[6], - x[7], - x[8], - fval, - elapsed); + if (fpars->print) + printf("%5zu %10.2f %7.2f %7.2f %7.2f %5.2f %5.2f %5.2f %5.2f %5.2f f() = %7.3e took %lld ms\n", + iter++, + x[0], + x[1], + x[2], + x[3], + x[4], + x[5], + x[6], + x[7], + x[8], + fval, + elapsed); return fval; } @@ -204,6 +206,7 @@ int fit_event(event *ev, double *xopt, double *fmin) fitParams fpars; double x[9], ss[9], lb[9], ub[9], fval, n, qhs_sum, x0[9], T0, Tmin; int rv; + struct timeval tv_start, tv_stop; nlopt_opt opt = nlopt_create(NLOPT_LN_BOBYQA, 9); nlopt_set_min_objective(opt,nll,&fpars); @@ -287,6 +290,7 @@ int fit_event(event *ev, double *xopt, double *fmin) * tolerance on the numerical integration to 10%. */ fpars.epsrel = 1e-1; fpars.fast = 1; + fpars.print = 0; nlopt_set_ftol_abs(opt, 1.0); nlopt_set_maxeval(opt, 10); @@ -323,7 +327,26 @@ int fit_event(event *ev, double *xopt, double *fmin) x[6] = guess_t0(ev,x+1); + gettimeofday(&tv_start, NULL); rv = nlopt_optimize(opt,x,&fval); + gettimeofday(&tv_stop, NULL); + + long long elapsed = (tv_stop.tv_sec - tv_start.tv_sec)*1000 + (tv_stop.tv_usec - tv_start.tv_usec)/1000; + + printf("%5zu/%5zu %10.2f %7.2f %7.2f %7.2f %5.2f %5.2f %5.2f %5.2f %5.2f f() = %7.3e took %lld ms\n", + i+1, + sizeof(startingParameters)/sizeof(startingParameters[0]), + x[0], + x[1], + x[2], + x[3], + x[4], + x[5], + x[6], + x[7], + x[8], + fval, + elapsed); if (i == 0 || fval < *fmin) { *fmin = fval; @@ -360,6 +383,7 @@ int fit_event(event *ev, double *xopt, double *fmin) /* Now, we do the "real" minimization. */ fpars.epsrel = 1e-4; fpars.fast = 0; + fpars.print = 1; nlopt_set_ftol_abs(opt, 1e-5); nlopt_set_maxeval(opt, 1000); |