method)和梯度法(Gradient method)。
直接搜索法适用于目标函数高度非线性,没有导数或导数很难计算的情况。
由于实际工作中很多问题都是非线性的,故直接搜索法不失为一种有效的解决
办法。常用的直接搜索法为单纯形法,此外还有 Hooke-Jeeves 搜索法、Pavell
共轭方向法等,其缺点是收敛速度慢。
在函数的导数可求的情况下,梯度法是一种更优的方法。该法利用函数的
梯度(一阶导数)和 Hess(二阶导数)构造算法,可以获得更快的收敛速度。
函数
的负梯度方向
即反映了函数的最大下降方向。当搜索方向
取为负梯度方向时称为最速下降法。
常见的梯度法有最速下降法、Newton 法、Marquart 法、共轭梯度法和拟牛
顿法(Quasi-Newton method)等。在所有这些方法中,用得最多的是拟牛顿法。
进行一维搜索时,如果梯度值可以直接得到,用三次插值的方法进行一维
搜索,如果梯度值不能直接得到,采用二次、三次混合插值法。
8.3.2 有关函数介绍
MATLAB 优 化 工 具 箱 中 用 于 求 解 无 约 束 非 线 性 规 划 问 题 的 函 数 有
fminunc 和 fminsearch。
⒈ fminunc 函数
用该函数求多变量无约束函数的最小值。多变量无约束函数的数学模型为:
式中,
是矢量,
为函数,返回标量。
fminunc 函数在给定初值的情况下,求多变量标量函数的最小值。常用于
无约束非线性最优化问题。其调用格式为:
●x=fminunc(fun,x0):给定初值 x0,求 fun 函数的局部极小值点 x。x0 可
以是标量、矢量或矩阵。
●x=fminunc(fun,x0,options):用 options 参数中指定的优化参数进行最小
化。
●x=fminunc(fun,x0,options,P1,P2,…):将问题参数 P1,P2 等直接输给目标
函数 fun,将 options 参数设置为空矩阵,作为 options 参数的默认值。
●[x,fval]=fminunc(…):将解 x 处目标函数值返回到 fval 参数中。
●[x,fval,exitflag]=fminunc(…):返回 exitflag 值,描述函数的退出条件。
●[x,fval,exitflag,output]=fminunc(…):返回包含优化信息的结构输出。
●[x,fval,exitflag,output,grad]=fminunc(…):将解 x 处 fun 函数的梯度值返
回到 grad 参数中。
●[x,fval,exitflag,output,grad,hessian]=fminunc(…):将解 x 处目标函数的
Hessian 矩阵信息返回到 hessian 参数中。