《目标函数的几种极值求解方法23887.docx》由会员分享,可在线阅读,更多相关《目标函数的几种极值求解方法23887.docx(8页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 目标函数极值求解的几种方法 题目目:,取初始点点,分别用用最速下降降法,牛顿顿法,共轭轭梯度法编编程实现。一维搜索法法:迭代下降算算法大都具具有一个共共同点,这这就是得到到点后需要要按某种规规则确定一一个方向,再再从出发,沿沿方向在直直线(或射射线)上求求目标函数数的极小点点,从而得得到的后继继点,重复复以上做法法,直至求求得问题的的解,这里里所谓求目目标函数在在直线上的的极小点,称称为一维搜搜索。一维搜索的的方法很多多,归纳起起来大体可可以分为两两类,一类类是试探法法:采用这这类方法,需需要按某种种方式找试试探点,通通过一系列列的试探点点来确定极极小点。另另一类是函函数逼近法法或插值法法:
2、这类方方法是用某某种较简单单的曲线逼逼近本来的的函数曲线线,通过求求逼近函数数的极小点点来估计目目标函数的的极小点。本本文采用的的是第一类类试探法中中的黄金分分割法。原原理书上有有详细叙述述,在这里里介绍一下下实现过程程: 置初始始区间及精度要要求L00,计算试试探点和,计算函函数值和,计算公公式是:,。令k=1。 若则停止止计算。否否则,当时,转步步骤;当时,转转步骤 。 置,计算函函数值,转转。 置,计算函函数值,转转。 置k=k+1返返回步骤 。1. 最速下降法法 实现现原理描述述:在求目目标函数极极小值问题题时,总希希望从一点点出发,选选择一个目目标函数值值下降最快快的方向,以利于尽尽
3、快达到极极小点,正正是基于这这样一种愿愿望提出的的最速下降降法,并且且经过一系系列理论推推导研究可可知,负梯梯度方向为为最速下降降方向。最速下降法法的迭代公公式是,其其中是从出发的的搜索方向向,这里取取在点处最最速下降方方向,即。是从出发沿沿方向进行行的一维搜搜索步长,满满足。实现步骤如如下: 给定定初点 ,允允许误差,置置k=1。 计算算搜索方向向。 若,则则停止计算算;否则,从从出发,沿沿方向进行行的一维搜搜索,求,使使。 ,置kk=k+11返回步骤骤 。2. 拟牛顿法 基本本思想是用用不包括二二阶导数的的矩阵近似似牛顿法中中的Hessse矩阵阵的逆矩阵阵,因构造造近似矩阵阵的方法不不同,
4、因而而出现了不不同的拟牛牛顿法。 牛顿顿法迭代公公式:,是在点处的的牛顿方向向,是从出发沿沿牛顿方向向进行搜索索的最优步步长。用不包括二二阶导数的的矩阵近似似取代牛顿顿法中的HHessee矩阵的逆逆矩阵,需满足拟拟牛顿条件件。实现步骤: 给定定初点 ,允允许误差。 置(单单位矩阵),计算出在处的梯度,置k=1。 令。 从出发发沿方向搜搜索,求步步长,使它它满足,令令。 检验验是否满足足收敛标准准,若,则则停止迭代代,得到点点,否则进进行步骤。 若kk=n,令令,返回;否则进进行步骤。令,置k=kk+1 。返返回。3. 共轭梯度法法若是中k个个方向,它它们两两关关于A共轭轭,即满足足 ,称这这组
5、方向为为A的k个个共轭方向向。共轭梯梯度法的基基本思想是是把共轭性性与最速下下降法相结结合,利用用已知点处处的梯度构构造一组共共轭方向,并并沿这组方方向进行搜搜索,求出出目标函数数的极小点点,根据共共轭方向的的基本性质质这种方法法具有二次次终止性。实现步骤如如下: 给定定初点 ,允允许误差,置置 ,k=jj=1。 若,则则停止计算算;否则,作作一维搜索索,求,满满足 ,令令。 若,则则进行步骤骤,否则进进行步骤 令,其其中,置jj=j+11,转。 令,置j=1,k=k+1,转转 。4. 实验结果 用以上三三种方法通通过Mattlab编编程得到实实验数据。初初始值 。迭迭代精度ssum(aabs
6、(xx1-x).2)n iif abbs(laanmdaa-b)1e-44 aalfa=mu; reeturnn eelse aa=lannmda; laanmdaa=mu; m=n; mmu=a+tao*(b-aa); alffa=muu; nn=(xx(1)+alfaa*d(11)-22)2+2*(xx(2)+alfaa*d(22)-1)2; eend eelse iif abbs(muu-a)1e-44 aalfa=lanmmda; rreturrn eelse bb=mu; muu=lannmda; n=mm; llanmdda=a+(1-ttao)*(b-aa); alffa=laa
7、nmdaa; mm=(xx(1)+alfaa*d(11)-22)2+2*(xx(2)+alfaa*d(22)-1)2; eend eendend%梯度子函函数,tiidu.mm,输入的的变量为二二维的向量量,返回梯梯度在x处处的数值向向量functtion g=tiidu(xx) %待求解解的函数 f=(xx(1)-2)22+2*(x(2)-1)2; %求函数数的梯度表表达式 g=22*(x(1)-22) 4*(x(22)-1); x1=xx(1); x2=x(2);%最速下降降法极小化化函数的通通用子函数数zuissu.m%输入变量量为初始的的迭代点,输输出变量为为极小值点点functtio
8、n x0=zzuisuu(x)%判断梯度度范数是否否满足计算算精度1ee-4的要要求.是,标志变量量设为1,输输出结果; %否,标志志变量设为为0if suum(abbs(tiidu(xx).2)11e-4 fflag=1; xx0=x;else fflag=0;end%循环求解解函数的极极小点whilee flaag=00 dd=-tiidu(xx); a=goldd(x,dd); x=x+a*d %判断梯梯度范数是是否满足计计算精度的的要求.是是,标志变变量设为11,输出结结果; %否,标标志变量设设为0,继继续迭代 iif suum(abbs(tiidu(xx).2)11e-4 ffla
9、g=1; x0=xx; eelse fflag=0; eendEnd%拟牛顿法法极小化函函数的通用用子函数,ggongee.m%输入变量量为初始的的迭代点,输输出变量为为极小值点点functtion x0=nninewwton(x)%判断梯度度范数是否否满足计算算精度的要要求.是,标志变量量设为1,输输出结果;%否,标志志变量设为为0,继续续迭代if suum(abbs(tiidu(xx).2)11e-4 fflag=1; x00=x;else fflag=0;end%初始的HH矩阵为单单位矩阵h0=eyye(2);%循环求解解函数的极极小点whilee flaag=00 %计算新的的迭代方向
10、向 dd=-h00*tiddu(x); a=goldd(x,dd); xx1=(xx+a*h0*dd); ss=x1-x; yy=tiddu(x11)-tiidu(xx); v=s*y; %校正H矩矩阵 hh0=(eeye(22)-s*y./v)*hh0*(eeye(22)-y*s./v)+ss*s./v; %判断下一一次和上一一次迭代点点之差是否否满足计算算精度的要要求.是,标志变量量设为1,输输出结果;否,标志志变量设为为0,继续续迭代 iif suum(abbs(x-x1).2)1e-44 fllag=11; xx0=x; eelse fllag=00; eend xx=x1end %共
11、轭剃度度法极小化化函数的通通用子函数数,gonnge.mm%输入变量量为初始的的迭代点,输输出变量为为极小值点点functtion x0=ggongee(x)%判断梯度度范数是否否满足计算算精度的要要求.是,标志变量量设为1,输输出结果;%否,标志志变量设为为0,继续续迭代if suum(abbs(tiidu(xx).2)11e-4 fflag=1; x00=x;else fflag=0;end%第一次的的迭代方法法为负梯度度方向d1=-ttidu(x);aa=golld(x,d1);x1=xx+a*dd1;%循环求解解函数的极极小点whilee flaag=00 gg1=tiidu(xx); g22=tiddu(x11); %利用FRR公式求解解系数baata bbata=(g2*g2)/(g11*g1); dd2=-gg2+baata*dd1; aa=golld(x11,d2); xx=x1; xx1=x+a*d22 %判断下一一次和上一一次迭代点点之差是否否满足计算算精度的要要求.是,标志变量量设为1,输输出结果;否,标志志变量设为为0,继续续迭代 iif suum(abbs(x11-x).2)1e-44 fllag=11; x0=xx1; eelse fllag=00; eendend