Powell算法、Powell修正算法_matlab仿真
来源:互联网 发布:mh370调查终结篇 知乎 编辑:程序博客网 时间:2024/04/27 16:50
1.鲍威尔基本算法的运算流程
1.采用坐标轮转法顺次沿n个坐标轴方向[e1,e2,...,en]进行一维搜索。然后以初始点X(0)和终点Xn(1)构成一个新的方向S(1),并以此方向为搜索方向在做一维搜索得到极小值点X(n+1)(1)。2.去初始点X0(2)=X(n+1)(1),并去掉元搜索方向组中的第一个方向S1(1)=e1,而将第一轮构成的新搜索方向S(1)作为最末一个方向[e2,e3,...,en,S(1)],以此组成第二轮迭代的n个方向。3.依此进行下去,直到获得满足迭代收敛精度要求的近似最小点为止。评价:Powell基本算法仅仅具有理论的意义,不要说对于多维的复杂函数,就是对于二次函数,他也可能失效。因为基本算法中,没有衡量过n个搜索方向是否会变成线性相关?一旦搜索方向存在相关关系,就不能形成共轭方向,从而长不成n维空间。导致随后的迭代搜索在降维空间(退化空间)中进行,求不到极值点。
2.鲍威尔修订算法
1.核心:
在每一轮产生新的搜索方向S(k)后,首先判断原搜索方向组是否可以直接用于下一轮迭代的搜索方向组,如果可以,就仍然用它,否则进一步判断原搜索方向组中哪个方向上函数值下降量最大,或者贡献最大,然后再用新搜索方向替换这个贡献最大的搜索方向,以保证逐次生成共轭方向,确保n维搜索方向始终线性无关。
对于第K轮迭代:搜索方向组[S1(k),S2(k),...,Sm(k),...,Sn(k)]记:f(0)=f(X0(k)) ,f(1)=f(Xn(k))。映射点:f(2)=f(2*Xn(k)-X0(k))△m(k)={f( X(i)(k) )- f( X(i-1)(k) ),i=1,2,...,n} 记:Sm(k)为与△m(k)相对应的搜索方向.S(k)=Xn(k)-X0(k)(???我们要判断这个新方向是否值得一用???)
2.Powell条件:
1.f2<f0;2.(f0-2f1+f2)(f0-f1-△m(k))<0.5△m(k)(f0-f3)^2若两个条件可以同时成立,则用S(k)代替Sm(k);否则仍用原来的方向组。3.Powell修订算法流程设计
注:Xm(k)代表第k轮搜索第m个方向后得值。(m<n)1.任选初始点X(0)=X0(1),给定迭代收敛精度Err1,Err2。取初始基本方向组为单位坐标向量系,即S(m)(1)=e(m).(i=1,2,...,n),并置迭代轮次k=1。2.从X0(k)出发,依次沿S(m)(k)(m=1,2,...,n)做一维搜索,得n个极小点X(m)(k);构造新的搜索方向S(k)=X(n(k))-X(0)(k)。并沿此方向进行一维搜索的极小点X(n+1)(k)。3.判断迭代终止条件。A:||X(n+1)(k)-X0(k)||≤Err1??? 或B:|f(X(n+1)(k))-f(X0(k))|≤Err2|f(X(n+1)(k))|。若满足两者其中的一个,则终止迭代并输出最优解:X* = X(n+1)(k) 和 最优值 f* = f(X*)。否则,继续下面的迭代工作。4.计算f(X(m)(k)),m=1,2,3,...,n,并求沿各个搜索方向上的下降的差值,选择下降最大者。△m(k) = max{X(m-1)(k) - X(m)(k),m=1,2,...,n}=f(m-1)-f(m),及与之对应的两个点X(m-1)(k)、X(m)(k),那么第k轮迭代中贡献最大的方向为:S(m)(k)=X(m)(k)-X(m-1)(k)。5.确定用映射点X(k)=2*X(n)(k)-X(0)(k),并计算f(X(k))。记f(0) = f(X(0)(k));f(1) = f(X(n)(k))及f(2) = f(X(k))。验证Powell条件,1.f2<f0; 2.(f0-2f1+f2)(f0-f1-△m(k))<0.5△m(k)(f0-f2)^2。若满足转到第(6),若不满足,转到(7)步。6.设置第k+1轮迭代的出发点和搜索方向组。初始点:X(0)(k+1) = X(n+1)(k)搜索方向:[S(1)(k),...,S(m-1)(k),S(k),S(m+1)(k),...,S(n)(k)]设置k=k+1,返回(2).7.设置第k+1轮迭代的出发点和搜索方向组。若f1<f2,X(0)(k+1)=X(n)(k);否则 X(0)(k+1) = X(K);搜索方向:S(m)(k+1)=S(m)(k);设置k=k+1,返回(2).
3.Powell算法流程图
1 0
- Powell算法、Powell修正算法_matlab仿真
- 基于黄金分割的修正Powell算法
- Powell优化算法
- 深度理解Powell优化算法
- DFP算法 - Davidon Fletcher Powell formula
- Powell算法的原理与实现
- scipy.optimize.minimize 的优化算法(2): Powell
- welsh-powell
- scipy.optimize.minimize 的优化算法(2): Powell中的line search算法
- 拟牛顿法/Quasi-Newton,DFP算法/Davidon-Fletcher-Powell,及BFGS算法/Broyden-Fletcher-Goldfarb-Shanno
- 拟牛顿法/Quasi-Newton,DFP算法/Davidon-Fletcher-Powell,及BFGS算法/Broyden-Fletcher-Goldfarb-Shanno
- 拟牛顿法/Quasi-Newton,DFP算法/Davidon-Fletcher-Powell,及BFGS算法/Broyden-Fletcher-Goldfarb-Shanno
- 拟牛顿法/Quasi-Newton,DFP算法/Davidon-Fletcher-Powell,及BFGS算法/Broyden-Fletcher-Goldfarb-Shanno
- 拟牛顿法/Quasi-Newton,DFP算法/Davidon-Fletcher-Powell,及BFGS算法/Broyden-Fletcher-Goldfarb-Shanno
- 拟牛顿法/Quasi-Newton,DFP算法/Davidon-Fletcher-Powell,及BFGS算法/Broyden-Fletcher-Goldfarb-Shanno
- 拟牛顿法/Quasi-Newton,DFP算法/Davidon-Fletcher-Powell,及BFGS算法/Broyden-Fletcher-Goldfarb-Shanno
- 拟牛顿法/Quasi-Newton,DFP算法/Davidon-Fletcher-Powell,及BFGS算法/Broyden-Fletcher-Goldfarb-Shanno
- Powell法优化子程序
- 把数组排成最小的数
- Centos 6.5 编译安装Nginx-1.5.13+php-5.5.10+Mysql-5.5.37
- ViewPager+Fragment+游标滑动
- 【bzoj1901】【Dynamic Rankings】【动态主席树】
- iOS-将UIImage转为NSData
- Powell算法、Powell修正算法_matlab仿真
- Android中图片的三级缓存策略
- shiro身份认证
- 在进程崩溃的时候自动抓取一个DUMP文件
- 下拉刷新与ViewPager冲突的处理,android-Ultra-Pull-To-Refresh下拉刷新嵌套ViewPager手势冲突
- android imageview拖拽
- 数据库操作(使用FMDB)
- php 前端获取数据
- 记一次看DUMP的实战