平凡无所谓,
平淡无所谓,
但求每天早晨能望见你,
这已经足够满足。
身边的一切如风,
而你让我有了根,
就让我爱你多些,
再多些,甚至满泻,
与你一生一世。
——畅宝宝的傻逼哥哥
过去使用最广泛的共轭方向法是由Powell提出来的,这个方法与共轭梯度法一样,开始也是来自凸二次问题,但是它也成功应用于非二次问题。
Powell法最显著的特征就是通过一系列线搜索生成共轭方向,所用的技术基于下面的定理:
定理1:
如果凸二次问题
在直线
与
上分别对 α 最小化,得到的最小点分别为 x∗a,x∗b ,如图1所示。
如果 db=da ,那么向量 x∗b−x∗a 与 da (或者 db )共轭。
证明:
如果
f(xa+αda),f(xb+αdb)
对
α
最小化,那么
因为
因为
db=da
,所以由等式1与2可得
因此,向量 x∗b−x∗a 与方向 da (或者 db )共轭,证毕。 ||
在Powell算法中,假设初始点为
x00
,
n
个线性无关方向为
图1
第一次迭代的时候, f(x) 从初始点 x00 开始,在方向 d01,d02,…,d0n 上最小化分别得到点 x01,x02,…,x0n ,如图2所示,新的方向 d0(n+1) 为
且 f(x) 在这个方向上最小化得到新的点 x0(n+1) ,然后更新方向集为
第一次迭代的效果就是 f(x) 减少了 Δf=f(x00)−f(x0(n+1)) 并且同时删除了 d01 加入了 d0(n+1) 。
第二次得带执行同样的过程,从点
开始,
f(x)
在方向
d11,d12,…,d1n
上最小化分别得到点
x11,x12,…,x1n
,如图3所示,然后生成新的方向
d1(n+1)
f(x)
在方向
d1(n+1)
上最小化得到点
x1(n+1)
。因为
所以 d1(n+1) 与 dn 共轭,因此我们令
新的方向解将包含一对共轭方向,即 d2(n−1),d2n 。
用同样的方式执行上面的过程,每次迭代都会增加一个共轭方向。Powell法需要
n(n+1)
次线搜索,因为每次迭代包含
(n+1)
次线搜索,共需要
n
次迭代,Powell算法实现如下:
图2
图3