[tt,ff]=opt_step_quad(xk1',dirk, th,epsx,epsf,maxiter); xk1=xk1+tt*dirk'; end xk0=xk1; xn=xk1; fn=ffx(xn); aa=norm(dir); if(aa<1e-30) aa=1e-30; end end
xn ]T
使目标函数 f ( x) min
min f ( x) x Rn
目前已研究出很多种无约束优化方法,它们的 主要不同点在于构造搜索方向上的差别。
(1)间接法(导数法)——确定搜索方向时用到一 阶或(和)二阶导数的方法。如梯度法、(阻尼) 牛顿法、变尺度法、共轭梯度法等。
(2)直接法——其搜索方向直接取定或由计算目标 函数值所得的信息来确定;即不使用导数信息,如 坐标轮换法、鲍威尔法等。
2020/9/23
5
无约束优化直接解法
坐标轮换法 鲍维尔(Powell)法 鲍维尔(Powell)修正算法
2020/9/23
6
§4-2 坐标轮换法(无约束优化直接解法)
一)搜索方向
依次沿n个正交坐标轴的方向搜索:
ee12
[1 [0
0 1
... ...
0]T 0]T
...
en [0 0 ... 1]T
坐标轮换法的Matlab程序由三部分组成。第一部分为坐标 轮换法计算函数coordinat(xk0,th,epsx, epsf,maxiter),函数引用 变量说明见程序注释。最优步长采用二次插值法计算,函数名 为opt_step_quad(xk0,dir0, th,TolX, TolFun,maxiter),该函数调 用区间搜索函数opt_range_serach(xk0,dir0,th)得出二次差值需 要的三个坐标点,区间搜索函数采用进退法。 第二部分为用户应用程序; 第三部分为定义目标函数,调用方式为fn=ffx(x)。 下面是坐标轮换法的Matlab计算程序: