预览加载中,请您耐心等待几秒...
1/7
2/7
3/7
4/7
5/7
6/7
7/7

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

用MATLAB实现共轭梯度法求解实例 康福201103710031 1.无约束优化方法 1.1无约束优化方法的必要性 一般机械优化设计问题,都是在一定的限制条件下追求某一指标为最小,它 们都属于约束优化问题。但是为什么要研究无约束优化问题? (1)有些实际问题,其数学模型本身就是一个无约束优化问题。 (2)通过熟悉它的解法可以为研究约束优化问题打下良好的基础。 (3)约束优化问题的求解可以通过一系列无约束优化方法来达到。所以无约束 优化问题的解法是优化设计方法的基本组成部分,也是优化方法的基础。 (4)对于多维无约束问题来说,古典极值理论中令一阶导数为零,但要求二阶 可微,且要判断海赛矩阵为正定才能求得极小点,这种方法有理论意义, 但无实用价值。和一维问题一样,若多元函数F(X)不可微,亦无法求解。 但古典极值理论是无约束优化方法发展的基础。 1.2共轭梯度法 目前已研究出很多种无约束优化方法,它们的主要不同点在于构造搜索方向 上的差别。 (1)间接法——要使用导数,如梯度法、(阻尼)牛顿法、变尺度法、共轭梯度 法等。 (2)直接法——不使用导数信息,如坐标轮换法、鲍威尔法单纯形法等。 用直接法寻找极小点时,不必求函数的导数,只要计算目标函数值。这类方 法较适用于解决变量个数较少的(n≤20)问题,一般情况下比间接法效率低。 间接法除要计算目标函数值外,还要计算目标函数的梯度,有的还要计算其海赛 矩阵。 k1kk xxks(k0,1,2,L) 搜索方向的构成问题乃是无约束优化方法的关键。 共轭梯度法是沿着共轭方向进行搜索,属于共轭方向法中的一种,该方法中 每一个共轭向量都是依赖于迭代点处的负梯度而构造出来。共轭梯度法作为一种 实用的迭代法,它主要有下面的优点: (1)算法中,系数矩阵A的作用仅仅是用来由已知向量P产生向量W=AP,这不仅 可充分利用A的稀疏性,而且对某些提供矩阵A较为困难而由已知向量P产 生向量W=AP又十分方便的应用问题是很有益的。 (2)不需要预先估计任何参数就可以计算,这一点不像SOR等; (3)每次迭代所需的计算,主要是向量之间的运算,便于并行化。 共轭梯度法原理的知识较多,请详见《机械优化设计》第四章的第四、五节。 图1为共轭梯度法的程度框图 图1为共轭梯度法的程度框图 2.设计题目及要求 2.1设计题目 用共轭梯度法求二次函数 22 f(x1,x2)x12x24x12x1x2 的极小点及极小值。 2.2设计要求 (1)使用matlab编写程序,熟练撑握matlab编程方法。 (2)学习并撑握共轭梯度法的原理、方法及应用,并了解不同无约束优化方法的 区别、优缺点及特殊要求。 (3)编写程序,计算出二次函数的极小点及极小值,并适当选取不同的初始点及 迭代精度精度,分析比较结果。 三.计算步骤 3.1计算求解 解:已知初始点[1,1]T迭代精度0.001 1)第一次沿负梯度方向搜寻 计算初始点处的梯度: 2x2x44 f(x0)12 4x2x 21x02 10014140 xx0d0 12120 为一维搜索最佳步长,应满足 f(x1)minf(x0d0)min(402203)  得: 21 0.2511 0xf(x) 0.52  2)第二次迭代2 f(x1)5 020.25 f(x0)20 1102 df(x)0d 1.5 2112222 xxd 0.51.50.51.5 代入目标函数 f(x)(22)22(0.51.5)2 2(22)(0.51.5)4(22)() 由()0得1 从而有: 24220 x,f(x)8,f(x) 20 因 f(x2)0 收敛。 3.2运行与程序 运行:打开matlab,确定conjugate_grad_2d.m文件夹为当前目录。 在命令窗中输入:f=conjugate_grad_2d([1,1],0.001) 选择不同的初始点坐标[0,0],[0,1],[1,0],和迭代精度0.01,0.0001,进 行运行时,需要多次调用conjugate_grad_2d函数。 程序及说明: functionf=conjugate_grad_2d(x0,t) %用共轭梯度法求已知函数f(x1,x2)=x1^2+2*x2^2-4*x1-2*x1*x2的极值点 %已知初始点坐标:x0 %已知收