第五章无约束优化的间接搜索法
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(X)的极小点应满足: (X)=0
即
f (X (k))+ 2 f (X (k)) (X - X (k)) =0
2 f (X (k)) (X - X (k)) = - f (X (k))
当 2 f (X (k)) 正定且有逆阵时,上式两边 同时左乘 [2 f (X (k)) ]-1, 得
X = X (k) - [2 f (X (k)) ]-1 f (X (k))
作为原目标函数的极小点的近似值,若不满 足收敛精度要求,则将该近似极小点作为下 一次迭代的初始点。如此反复迭代,直到所 求的近似极小点满足收敛精度要求为止。
f (X) f (X (k)) + T f (X (k)) (X - X (k))
+ 0.5 (X -百度文库X (k)) T 2 f (X (k)) (X - X (k))= (X)
那么, g(1)与S(0) 有什么关系呢?
-g(0)
二者正交,即
X(1)
[g(1)]TS(0)=0 或 [S(0)]Tg(1) =0 g(1)
X(0)
因此,S(0)与g(1)构成平面正交系。
2 ) 在 S(0) 与 g(1) 构 成 的 平 面 正 交 系 中 求 S(0) 的 共轭方向S(1),以此作为下一步迭代计算的搜索 方向。取S(1)为S(0)与g(1)的线性组合,即
再沿S(2) 进行一维搜索,得 X(3) = X(2) + (2) S(2),
如此继续下去,可以求得共轭方向的递推公式 为
S(k+1) = -g(k+1) + ||g(k+1)||2 / ||g(k)||2 S(k)
(k = 0, 1, 2, …, n-1)
沿着这些共轭搜索方向一直搜索下去,直 到最后迭代点处梯度的模小于给定的允许值为 止。若目标函数为非二次函数,经n次搜索还未 达到最优点时,则以最后得到的点作为初始点, 重新计算共轭方向,一直到满足精度要求为止。
所以
- [g(1)]Tg(1) - (0)[S(0)]Tg(0) = 0
所以
(0) = - [g(1)]Tg(1) / [S(0)]Tg(0)
= [g(1)]Tg(1) / [g(0)]Tg(0)
= ||g(1)||2 / ||g(0)||2
S(1) = -g(1) + ||g(1)||2 / ||g(0)||2 S(0)
若满足,则输出最优解:X * = X (k), f * = f (X *) ,并终止迭代计算 ;
否则,继续下一步迭代计算;
4)计算X (k)点的海赛矩阵2 f (X (k))及其逆 矩阵[2 f (X (k))] -1
5)沿牛顿方向S(k) = - [2 f (X (k)) ]-1 f (X (k)) 进行一维搜索,求最佳步长(k);
• 关于共轭梯度法的说明
1)尽管理论上可以证明目标函数为n维正定 二次函数时,共轭梯度法只需要n次迭代就可以 达到最优点,但由于计算机的舍入误差,实际 计算往往要多进行若干次才能得到满足精度要 求的结果;而对于一般的目标函数,迭代次数 将更多。
2)由于n维设计空间中最多只能有n个 线性无关的向量,所以n维优化问题的共轭 方向最多只有n个。因此,共轭梯度法进行 n步搜索后,若仍不满足精度要求,继续产 生共轭方向S(n+1)进行迭代搜索是没有意义 的(效果很差),而应令X(0) = X(n) ,重新 开始新一轮的共轭梯度法迭代搜索。实践
机械优化设计
太原科技大学 张学良
举例: 用梯度法求目标函数 f (X) = x12 + 4x22 的无约束最优解。初始
点X1(0)= [ 0 0 ]T , X2(0)= [ 2 2 ]T。
§5.2 牛顿法
• 基本思想和基本算法
在点X(k)的邻域内,用一个二次函数(X) 来近似代替原目标函数,并以 (X ) 的极小点
因为
[S(0) ]T g(1) = 0
所以
[S(0) ]T g(2) = 0
即
g(2) 与g(0)正交。
所以
[S(0) ]T g(2) = 0
由式(6)得 [g(1) ]T g(2) = 0
可见, g(0)、g(1) 、g(2)构成一个空间正交系。
3)在g(0)、g(1)、g(2)构成的空间正交系中求与 S(0)及S(1)均共轭的方向S(2),以此作为下一步迭代 计算的搜索方向。仍取S(2)为g(0)、g(1)、g(2) 的线 性组合,即
方向S(j)与正交。共轭梯度法就是利用这个性质 做到不必计算矩阵H就能求得共轭方向的。
1)设初始点X(0) ,第一个搜索方向S(0)取X(0) 点的负梯度方向 -g(0)。即 S(0) = -g(0)
沿S(0)进行一维搜索,得 X(1) = X(0) + (0) S(0), 并计算X(1)点的梯度 g(1) 。
0 0.125
X2(1)= X2(0) - [2f (X2(0))]-1 f (X2(0) )
0.5 0
= [ 2 2 ]T -
[ 4 16 ]= [ 0 0 ]T
0 0.125
可见,X2(1)= X1(0) = [ 0 0 ]T 就是目标 函数的理论极小点,仅仅迭代了一次,与初
始点的选择无关。
由于一般函数在极小点附近呈现出较强
若S(j)和S(k)关于H共轭,则有
[S(j) ]T H S(k) = 0 (4)式两边同时左乘[S(j) ]T,有
[S(j) ]T[g(k+1) - g(k) ]= (k) [S(j) ]TH S(k) = 0
即
[S(j) ]T[ g(k+1) - g(k) ] = 0
(5)
式(5)就是共轭方向与梯度之间的关系。 它表明沿方向S(k) 进行一维搜索,其终点X(k+1) 与始点X(k)梯度之差(g(k+1)-g(k))与 S(k) 的共轭
的二次性,所以牛顿法在极小点附近收敛速 度较快。但无论是牛顿法还是修正牛顿法在 每次迭代计算时都要计算目标函数的海赛
矩阵及其逆阵,因此计算工作量很大,特别 是矩阵求逆,当维数高时工作量更大,且当 海赛矩阵为奇异阵时,其逆阵不存在,无法 使用牛顿法,所以在实际使用中受到一定限 制。另外,从计算机存储方面考虑,牛顿法 所需要的存储量是很大的。
6)令X (k+1)=X (k) + (k) S(k) ,并令k k+1, 转2),重复上述迭代计算过程。
举例: 用牛顿法求目标函数
f (X) = x12 + 4x22 的无约束最优解。初始 点X1(0)= [ 0 0 ]T , X2(0)= [ 2 2 ]T。
解: f (X) = [ 2x1 8x2 ]T
X (k+1) = X (k) - (k) [2 f (X (k)) ]-1 f (X (k)) 阻尼因子: (k)
• 计算步骤及算法框图
1) 任选初始点 X (0) ,给定收敛精度>0, k=0;
2) 计算X (k)点的梯度f (X (k))及其模; 3) 检验终止条件: || f (X (k)) ||≤ ?
沿S(1)进行一维搜索,得 X(2) = X(1) + (1) S(1), 并计算X(2)点的梯度 g(2) ,则有
[S(1)]Tg(2) =0
故有 [ -g(1) + (0)S(0) ]T g(2) = 0
(6)
因为S(0)和S(1)共轭,所以有
[S(0) ]T[ g(2) - g(1) ] = 0
X(k+1) - X(k) = (k) S(k)
(1)
将f (X)在 X(k) 和 X(k+1)两点处的梯度表示并记作
g(k) = ▽f (X(k) ) = H X(k) + B (2)
g(k+1) = ▽f (X(k+1) ) = H X(k+1) + B (3)
(3)-(2)得 g(k+1) - g(k) = H ( X(k+1) - X(k) )= (k) H S(k) (4)
= - (1) (0)
因此 S(2) = -g(2) + (1) g(1) + (0) g(0)
= -g(2) - (1) g(1) - (1) (0) g(0)
= -g(2) + (1) [- g(1) - (0) g(0) ]
= -g(2) + (1) S(1)
故
S(2) = -g(2) + ||g(2)||2 / ||g(1)||2 S(1)
共轭梯度法搜索的第一步沿负梯度方向, 以后各步沿与上次搜索方向相共轭的方向进 行搜索。共轭梯度法的关键是如何在迭代过 程中不断生成共轭搜索方向
• 共轭梯度法共轭搜索方向的生成 考虑二次函数
f (X) = 0.5 XT H X + BT X + C
从 X(k) 出发,沿H的某一共轭方向S(k)作一维 搜索得到 X(k+1),即
牛顿法的迭代公式为
X (k+1) = X (k) - [2 f (X (k)) ]-1 f (X (k))
X (k+1)=X (k) + (k) S(k) 牛顿方向:S(k) = - [2 f (X (k)) ]-1 f (X (k)) 迭代步长:(k) =1
修正牛顿法(又称阻尼牛顿法)的迭代 公式为
S(2) = -g(2) + (1) g(1) + (0) g(0)
其中, (1) 、 (0) 为待定常数,可以利用共轭方 向与梯度之间的关系求得。
[S(2) ]T[ g(1) - g(0) ] = 0
[S(2) ]T[ g(2) - g(1) ] = 0
即 [-g(2) + (1) g(1) + (0) g(0) ]T [ g(1) - g(0) ] = 0 [-g(2) + (1) g(1) + (0) g(0) ]T [ g(2) - g(1) ] = 0
5) 判断 k+1=n ? 若 k+1=n ,令X(0) = X(k+1) ,转 2); 若 k+1<n ,则计算
(k) = || ▽f (X(k+1) ) ||2 / || ▽f (X(k) ) ||2
S(k+1) = - ▽f (X(k+1) ) + (k) S(k)
并令 k k+1,转3)。
S(1) = -g(1) + (0)S(0)
其中,(0)为待定常数,可以利用共轭方向与梯 度之间的关系求得。
由
[S(1) ]T[ g(1) - g(0) ] = 0
有 展开,得
[ -g(1) + (0)S(0) ]T[ g(1) - g(0) ] = 0
- [g(1)]Tg(1) +[g(1)]Tg(0)+(0)[S(0)]Tg(1) - (0)[S(0)]Tg(0) = 0
20 2 f (X)=
30
0.5 0 [2 f (X)] -1 =
0 0.125
f (X1(0) ) = [ 08
f (X2(0) ) = [ 4 16 ]T
0 ]T X1(1)= X1(0) - [2f (X1(0))]-1 f (X1(0) )
0.5 0
= [ 0 0 ]T -
[ 0 0 ]= [ 0 0 ]T
若能设法构造一个矩阵来逼近海赛矩阵 的逆阵而避免计算海赛矩阵及其逆阵,这样 的方法统称为拟牛顿法。如只用梯度信息但 比梯度法快的共轭梯度法,以及针对牛顿法 提出的变尺度法等。
§5.3 共轭梯度法
• 基本思想
共轭梯度法属于共轭方向法中的一种方
法。它是利用目标函数在迭代点X(k)的梯度来
构造共轭搜索方向的,具有二次收敛性。
所以
令 得
(1)[g(1)]Tg(1) - (0) [ g(0)]T g(0) ] = 0 -[g(2)]T g(2) - (1)[g(1)]Tg(1) = 0
(1) = - (1) (1) = - (1) = [g(2)]T g(2)/ [g(1)]Tg(1)
= ||g(2)||2 / ||g(1)||2 (0) = (1) [g(1)]T g(1)/ [g(0)]Tg(0)
证明,这样处理一般都可以取得较好的效 果。
举例: 用共轭梯度法求目标函数
f (X) = x12 + 4x22 的无约束最优解。初始 点X(0)= [ 2 2 ]T, =0.01 。 解: f (X) = [ 2x1 8x2 ]T
• 共轭梯度法的计算步骤及算法框图
1)给定初始点X(0)及收敛精度>0,k=0;
2)取 S(0) = -▽f (X(0) );
3) X(k+1) = X(k) + (k) S(k) ( k = 0, 1, 2, …, n) (k) 为一维搜索所得的最佳步长。
4) 判断 || ▽f (X(k+1) ) || ≤ ? 若满足,则输出 X * = X(k+1) 和 f * = f (X * ) 否则,转下一步;