minFunc is a Matlab function for unconstrained optimization(无约束最优化) of differentiable real-valued multivariate functions (可微分实值多元函数)using line-search methods(线性搜索).
接口
function [x,f,exitflag,output] = minFunc(funObj,x0,options,varargin)
% Inputs:
% funObj - is a function handle
% x0 - is a starting vector;
% options - is a struct containing parameters (defaults are used for non-existent or blank fields)
% varargin{:} - all other arguments are passed as additional arguments to funObj
%
% Outputs:
% x is the minimum value found
% f is the function value at the minimum found
(1)既然针对的是可微函数,至少需要为最优化的目标函数提供函数值和一阶梯度的输出,
% f.m function [y, dy] = f(x) y = (x-2)^2; dy = 2*(x-2); >> minFunc(@f, 0) Iteration FunEvals Step Length Function Val Opt Cond 1 2 2.50000e-01 1.00000e+00 2.00000e+00 2 3 1.00000e+00 0.00000e+00 0.00000e+00 Optimality Condition below optTol ans = 2 % 也即在 x = 2 处取得最小值,
options vs options.Method
options
% Initialize options for minFunc
options.Method = 'cg';
% 'lbfgs'
options.display = 'off';
options.verbose = 0;
options.maxIter = 20;
options.Method
- (1)’sd’:Steepest Descent
- (2)’cg’: Non-Linear Conjugate Gradient(非线性共轭梯度)