Hessian output using simulannealbnd and fmincon

2 views (last 30 days)
For an optimisation problem to estimate parameters of a model, I run "simulannealbnd" along with the hybrid options of "fmincon" to get the global minima. The codes are below:
rng(1234,'twister') % for reproducibility
options = optimoptions('simulannealbnd','PlotFcns',{@saplotbestx,@saplotbestf,@saplotx,@saplotf});
options = optimoptions(options,'MaxIterations',2000);
options = optimoptions(options,'FunctionTolerance',10^-8);
hybridoptions = optimoptions('fmincon','Display','iter','FunctionTolerance',10^-8,'PlotFcn',@optimplotfval);
options = optimoptions(options,'HybridFcn',{@fmincon,hybridoptions});
[param,fval,exitFlag,output] = simulannealbnd(@function_name,param_0,param_lb,param_ub,options);
How can I calculate the Hessian for the parameters that I estimate given fmincon is a hybrid option and "simulannealbnd" does not support "hessian" as an output.

Accepted Answer

Matt J
Matt J on 6 Apr 2021
Edited: Matt J on 6 Apr 2021
I'm assuming you can't simply do an analytical Hessian computation at the solution you found...
One alternative would be to run an iteration of fmincon with the solution from simulannealbnd as the initial guess, x0. Since x0 is already a solution, fmincon should stop in zero iterations and report the Hessian at x0 as output.
Another alternative would be to use a finite differencing tool from the File Exchange to compute the Hessian, e.g.,
  3 Comments
Matt J
Matt J on 6 Apr 2021
Edited: Matt J on 6 Apr 2021
the Hessian value that this would give is unreliable
Even in the case when zero iterations are done? There is no next-to-last iterate in that case.

Sign in to comment.

More Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!