您的位置:首页 > 编程语言 > MATLAB

utilities(matlab)—— minFunc

2016-05-09 11:16 585 查看
minFunc

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(非线性共轭梯度)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: