4、每次迭代都要计算函数的二阶导数矩阵,并对该矩阵求逆,计算工作量大。
在遇到一些问题,例如有大量变量的复杂的目标函数时,该方法就变的不实用了。
6.14 马夸特法
当设计向量 远离最佳点 时,最速下降法的作用就有所下降,另一方面,牛顿法在设计向量 接近最佳点 时收敛的非常快,然而[6.15]中的马夸特法结合了最速下降法和牛顿法的两优点。该方法修改了海森矩阵 的对角线元素,如下所示:
[ ]= + (6.100)
当 不正定时,矩阵 和正数ɑi可以确保[ ]正定,值得注意是的当ɑi 比较大(例如104 )时,在ɑi 支配下的 和[ ]的关系变成了:
[ ]= ≈ (6.101)
因此,如果搜索方向Si计算为:
Si=- [ ]-1 fi (6.102)
为了实现ɑi 的最大值Si 成为一个最速下降方向,在马夸特法中,ɑi 的值起初变大,然后逐渐减小为零就像整个迭代过程。因此,当ɑi 从一个较大值下降到零时,搜索的特点就从最速下降法的转变为牛顿法的。修改过后的马夸特法的迭代过程如下所示:
1、设定初始值,一个任意初始点X1和常数 (一般为104 ),c1 (0 < c1 < 1), c2 (c2 > 1), (一般为10-2 ),迭代次数i=1。
2、计算函数的梯度, fi = f(Xi)。
3、检验下Xi 是不是最优点,如果|| fi ||=|| f(Xi)|| ,Xi 是最优点,停止迭代,否则,进行第四步。
4、寻找新的载体Xi+1 如:
Xi+1 = Xi +Si =Xi - fi (6.103)
5、比较fi+1和fi的大小,如果fi+1<fi ,转到第六步,否则转到第七步。
6、设定 ,然后转到第二步。
7、设定 ,然后转到第四步。
这种方法有个优点就是沿着搜索方向Si ,不需要考虑步长λi。事实上,上述算法可以进行修改,通过引入方程(6.103)的最佳步长得:
Xi+1=Xi+λi*Si=Xi-λi*[[Ji]+ [I]] -1 fi (6.104)
其中λi*是第五章中一维搜索法中的。
例 6.13 利用马夸特法求函数 的最小值,初始点X1= , =104, =1/4, =2, = 。
解决方案:
第一次迭代(i=1) , f 1=f (X1)=0
f 1 = = =
由于|| f1 ||=1.4142> ,计算得:
[J1]= =
X2 =X1 -[[ J1 ]+ɑ1 [I]] -1 f1
= - = ×10-4
又因为f 2=f (X2)=-1.9997×10-4 < f 1 ,设定 =2500,i= 2 ,进行第二次迭代。
第二次迭代 (i=2)
X2对应的梯度向量 f2 = ,|| f2 ||=1.4141>Ɛ,计算得:
X3 =X2 -[[ J2 ]+ [I]] -1 f2