1 / 7
文档名称:

运筹学实验共轭梯度法.docx

格式:docx   大小:96KB   页数:7
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

运筹学实验共轭梯度法.docx

上传人:薇薇安 2021/10/15 文件大小:96 KB

下载得到文件列表

运筹学实验共轭梯度法.docx

文档介绍

文档介绍:共轭梯度法
一、实验目的
(1).熟悉使用共轭梯度法求解无约束非线性规划问题的原理;
(2).在掌握原理的基础上熟练运用此方法解决问题;
(3).学会利用计算机语言编写程序来辅助解决数学问题;
(4).解决问题的同时分析问题,力求达到理论与实践的相统一;
(5).编写规范的实验报告.
二、问题描述
minfx=x12+x22-x1x2+2x1-4x2
自选初始点开始迭代
三、算法介绍
<算法原理>:
共轭梯度法为求解线性方程组而提出。后来,人们把这种方法用于求解无约束最优化问题,使之成为一种重要的最优化方法。
共轭梯度法的基本思想是把共轭性与最速下降方法相结合,利用已知点处的梯度构造一组共轭方向,并沿这组方向进行搜索,求出目标函数的极小点。根据共轭方向的基本性质,这种方法具有二次终止性。在各种优化算法中,共轭梯度法是非常重要的一种。其优点是所需存储量小,具有步收敛性,稳定性高,而且不需要任何外来参数。
共轭方向
,我们运用基于共轭方向的一种算法—共轭梯度法
<算法流程图>:
给定初始点(0,0),k=1,最大迭代次数n
确定搜索方向
进退法确定搜索区间
分割法确定最优步长
四、程序
%¾«È·ÏßËÑË÷,ÌݶÈÖÕÖ¹×¼Ôò
function [ m,k,d,a,X,g1,fv] = GETD( G,b,c,X,e,method)
if nargin<6
error('ÊäÈë²ÎÊý±ØÐëΪ6');
end
n=length(G);
if n==2
format   long e %rat
syms x1 x2
f=1/2*[x1,x2]*G*[x1;x2]+b'*[x1;x2]+c;
g=[diff(f,x1);diff(f,x2)];
g1=subs(subs(g,x1,X(1,1)),x2,X(2,1));
d=-g1;
a=-(d'*g1)/(d'*G*d);%      a=-((X(:,1)'*G*d+b'*d)/(d'*G*d));       a=g1(:,1)'*g1(:,1)/(d(:,1)'*G*d(:,1));
X(:,2)=X(:,1)+a*d;
g1=[g1 subs(subs(g,x1,X(1,2)),x2,X(2,2))];
m1=norm(g1(:,1));
m=norm(g1(:,2));
i=2;
k=zeros(1);
switch method
   case 'FR'
  while m>=e
   k(i-1)=(m/m1)^2;
       d(:,i)=-g1(:,i)+k(i-1)*d(:,i-1);
       a(i)=-(d(:,i)'*g1(:,i))/(d(:,i)'*G*d(:,i));
    %a1(i)=-((X(:,i)'*G*d(:,i)+b'*d(:,i))/(d(:,i)'*G*d(:,i)));a(i)=g1(:,i)'*g1(:,i)/(d(:,i)'*G*d(:,i));
      X(