From 836ac7b95ca012f3b0379a5edbf1316c1ac14a2e Mon Sep 17 00:00:00 2001 From: stevenj Date: Sat, 8 Sep 2007 21:24:01 -0400 Subject: [PATCH] added verbose mode to Octave/Matlab plugin, for convenience darcs-hash:20070909012401-c8de0-02cf1c2c437a62a20ce7bdd0950499e4c6b19ba6.gz --- octave/nlopt_minimize-mex.c | 5 +++++ octave/nlopt_minimize-oct.cc | 4 ++++ octave/nlopt_minimize.m | 1 + 3 files changed, 10 insertions(+) diff --git a/octave/nlopt_minimize-mex.c b/octave/nlopt_minimize-mex.c index 1d9a600..68696f6 100644 --- a/octave/nlopt_minimize-mex.c +++ b/octave/nlopt_minimize-mex.c @@ -31,6 +31,7 @@ typedef struct { mxArray *plhs[2]; mxArray *prhs[MAXRHS]; int xrhs, nrhs; + int verbose, neval; } user_function_data; static double user_function(int n, const double *x, @@ -60,6 +61,8 @@ static double user_function(int n, const double *x, memcpy(gradient, mxGetPr(d->plhs[1]), n * sizeof(double)); mxDestroyArray(d->plhs[1]); } + d->neval++; + if (d->verbose) mexPrintf("nlopt_minimize eval #%d: %g\n", d->neval, f); return f; } @@ -139,6 +142,8 @@ void mexFunction(int nlhs, mxArray *plhs[], xtol_rel = struct_val_default(prhs[6], "xtol_rel", 0); maxeval = (int) (struct_val_default(prhs[6], "maxeval", -1) + 0.5); maxtime = struct_val_default(prhs[6], "maxtime", -1); + d.verbose = (int) struct_val_default(prhs[6], "verbose", 0); + d.neval = 0; { mxArray *val = mxGetField(prhs[6], 0, "xtol_abs"); if (val) { diff --git a/octave/nlopt_minimize-oct.cc b/octave/nlopt_minimize-oct.cc index 678c74d..3c9a4ef 100644 --- a/octave/nlopt_minimize-oct.cc +++ b/octave/nlopt_minimize-oct.cc @@ -34,6 +34,7 @@ static Matrix struct_val_default(Octave_map &m, const std::string& k, typedef struct { octave_function *f; Cell f_data; + int neval, verbose; } user_function_data; static double user_function(int n, const double *x, @@ -65,6 +66,9 @@ static double user_function(int n, const double *x, gradient[i] = grad(i); } } + data->neval++; + if (data->verbose) printf("nlopt_minimize eval #%d: %g\n", + data->neval, res(0).double_value()); return res(0).double_value(); } return 0; diff --git a/octave/nlopt_minimize.m b/octave/nlopt_minimize.m index 68fec75..43f6975 100644 --- a/octave/nlopt_minimize.m +++ b/octave/nlopt_minimize.m @@ -39,6 +39,7 @@ % stop.fmin_max = stop when f < fmin_max is found % stop.maxeval = maximum number of function evaluations % stop.maxtime = maximum run time in seconds +% stop.verbose = > 0 indicates verbose output % Minimization stops when any one of these conditions is met; any % condition that is omitted from stop will be ignored. WARNING: % not all algorithms interpret the stopping criteria in exactly the -- 2.30.2