运筹学课程实验报告
姓名:学号:班级:日期:20121217
Word资料
f
一、实验目的1、掌握求解无约束最优化问题的FR共轭梯度法,以及约
束最优化问题Wolfe简约梯度法。2、学会用MATLAB编程求解问题,并对以上方法的计算过程
和结果进行分析。
二、实验原理与步骤
1、FR共轭梯度法
基本步骤是在点Xk处选取搜索方向dk使其与前一次
的搜索方向dk1关于A共轭,即
dk1dkAdk10
然后从点Xk出发,沿方向dk求得fX的极小值点Xk1
即
fXk1mi
fXkdk0
如此下去得到序列Xk。不难求得dkAdk10的解为
X
k1
X
k
bAXkdkdk1Adk1
dk
注意到dk的选取不唯一,我们可取
dkfXkk1dk1
由共轭的定义dkAdk10可得:
k1
rkAdk1dk1Adk1
共轭梯度法的计算过程如下:
Word资料
f
第一步:取初始向量X0计算
d0r0fX0bAX0
0
r0Ad0d0Ad0
X1X00d0
第k1步:计算
rkfXkbAXk
k1
rkAdk1dk1Adk1
dk
rk
dk1k1
k
rkAdkdkAdk
Xk1Xk0dk
2、Wolfe简约梯度法
Wolfe基本计算步骤:
第一步:取初始可行点令k0;
给定终止误差
,
第二步:设
是的m个最大分量的下标集,对
Word资料
f
矩阵A进行相应分解第三步:计算
然后计算简约梯度
;
第四步:构造可行下降方向进行第五步。
若
_D_Dd。否则
第五步:进行有效一维搜索,求解解令kk1转入第二步。
得到最优
三、实验内容:1、(运筹学P153页第20题)用FR法求解
选取初始点
Word资料
f
2、(运筹学P154页第25题)用Wolfe法求解以下问题:
选取初始可行点
四、问题求解:
问题1求解:(FR法)
程序代码如下:
(1)主函数
symsx1x2rf1x122x2x122xx1x2dfjacobia
fxdfdferror0000001x000g1subsdfxx0k0while
ormg1error
ifk0dg1
elsebtag1g1g0g0dg1btad0
e
dysubsfxx0rdresultji
tuifayrresult2golde
yrresultstepresult2x0x0stepdg0g1g1subsdfxx0d0dkk1e
dkx0
(2)子函数
Word资料
f
进退法确定一维搜索区间:
fu
ctio
resultji
tuifayrt00str