漫步最优化四十一——Powell法(下)
对于步骤1,
Powell算法的主要优点是不需要海森矩阵,更进一步,通过使用基于线搜索的一维算法,梯度也不需要。
但是Powell算法有时候不一定线性无关,这样的话生成的方向集无法生成
即新生成的方向不包含
上面的问题可以被避免到,那就是如果出现线性相关,那么下次迭代的话我们不改变方向集,然后得到新的共轭方向。因为下次迭代的时候我们是从新的点
图4
原则上如果至少有一个
如果方向向量
那么矩阵的行列式
要想为最大值,那么当且仅当方向
有个非常相似的技术也是用来消除线性相关,该方法由Zangwill提出。从计算上看,该方法比Powell修正更加经济有效,因此很值得详细的介绍一下。
Zangwill的方法是在Powell算法上进行了如下修正。
- 步骤1中的初始方向选为单位坐标向量集
D0=[d01 d02 ⋯ d0n]=⎡⎣⎢⎢⎢⎢10⋮001⋮0⋯⋯⋯00⋮1⎤⎦⎥⎥⎥⎥ D0 的行列式Δ0 为单位1。 - 步骤2中确定
αki,i=1,2,…,n 的方法跟以前一样,然后选出最大的αki 即αkm=max{αk1,αk2,…,αkn} - 步骤3中跟以前一样生成新的方向,然后归一化,
dk(n+1)=1λk(xkn−xk0)
其中
- 步骤4不变,步骤5中,用上面得到的新方向代替方向
dkm ,当然前提是这个替换能够保证Dk=[dk1 dk2 ⋯ kn]
的行列式有限且比常数
否则的话,我们用最近的方向集用于下次迭代。因为
且
代替了
注意这里补充两个知识点
- 如果常数乘以一列并加到另一列,那么行列式不变。
- 如果某列乘以常数,那么行列式同样乘以该常数。
根据第一个知识点可知Δ′k 相加的效果可以消除掉,根据第二个知识点可知需要乘以αkm/λk 。如果αkmλkΔk>ε1
那么我们令
其中
其中
上面修正得到的结果就是方向矩阵的行列式一直有限且为正,这就表明方向一直是线性无关的。第二项的策略能够确保行列式的值
修正的算法称为Zangwill算法,对于凸二次问题来说,该算法能够收敛。