Matlab Optimization Toolbox: Most Materials Are Obtained From Matlab Website
Matlab Optimization Toolbox: Most Materials Are Obtained From Matlab Website
Constrained minimization
GUI
optimtool Tool to select solver, optimization options, and run problems
Utilities
Use fmincon
The interface of fmincon
x = fmincon(fun,x0,A,b,Aeq,beq,
lb,ub,nonlcon,options)
Execution
[x,fval] = fmincon(@rosenbrock,[0 0],...
[],[],[],[],[],[],@unitdisk)
Add Options
Matlab does have struct
Options is a huge structure containing
Add Options
Use command to set/get options
Options = optimset('Display','iter',...
'Algorithm','active-set');
Or just
Options = optimset;
Options.Display = 'iter';
Options.Algorithm = 'active-set';
Gradient
If gradient or Hessian are not provided,
Matlab uses finite difference to
approximate them (for some functions).
To provide gradient
Enable options: optimset(GradObj',on')
The user function
function [f g] = rosenbrock(x)
f = 100*(x(2) - x(1)^2)^2 + (1-x(1))^2;
g = [-400*(x(2)-x(1)^2)*x(1)-2*(1-x(1));
200*(x(2)-x(1)^2)];
end
User-supplied Hessian:
optimset('Hessian','user-supplied','HessFcn',@hessianfcn)
Quasi-Newton: optimset('Hessian','bfgs') or
optimset('Hessian',{'lbfgs',positive integer});
Option HessMult
You can define your own matrix-vector
multiplication function for Hessian
optimset('Hessian','user-supplied',...
'SubproblemAlgorithm','cg', ...
'HessMult',@HessMultFcn);