Wolfe非精确搜索+BFGS探索.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
PAGE  PAGE 8 数学与计算科学学院 实 验 报 告 实验项目名称 Wolfe非精确搜索+BFGS 所属课程名称 最优化方法 实 验 类 型 算法编程 实 验 日 期 2015.11.13 班 级 信计1201班 学 号 姓 名 成 绩 一、实验概述:【实验目的】 通过上机实验掌握最优化的实用算法的结构及性能,并用这些算法解决实际的最优化问题,掌握一些实用的编程技巧。 了解Wolfe非精确搜索+BFGS的原理及时间效率等优点。 【实验原理】 1. 拟牛顿法(BFGS) BFGS( HYPERLINK /wiki/BFGS_method \o BFGS method Broyden–Fletcher–Goldfarb–Shanno)的算法流程如下: 初始化:初始点x0以及近似逆Hessian矩阵B?10。通常,B0=I,既为单位矩阵。 计算线搜索方向:pk=?B?1k?f(xk) 用” HYPERLINK /richqian/p/4534356.html Backtracking line search“算法沿搜索方向找到下一个迭代点:xk+1=xk+αkpk 根据Armijo–Goldstein?准则,判断是否停止。 计算xk+1=xk+αkpk; 以及?yk=?f(xk+1)??f(xk) 迭代近似逆Hessian矩阵: B?1k+1=(I?skyTkyTksk)B?1k(I?yksTkyTksk)+sksTkyTksk 上式5中的推到方法比较复杂,有兴趣的可以搜一下相关文献。 2.非精确线搜索wolfe算法 【实验环境】 Winows7.0,matalb二、实验内容:【实验方案】 for i=1:nn %%%1-nn函数依次进入运算 (1)初值准备 nprob=numer(i); [n,m,xk,filename]=initf(nprob);%%%%%%%% 读初始数据 xk=factor*xk; bk=eye(n); k=0; tic; %计时开始 fk=objfcn(n,m,xk,nprob); fnum=1; gk=grdfcn(n,m,xk,nprob); gnum=1; delta=norm(gk,2); (2)迭代开始 while k1000 %%%%%%%%%迭代上限1000 if delta=teminate %% break; Else (3)确定下降方向 dk=-linsolve(bk+muk*eye(n),gk);%%%%求解下降方向 gk1=gk;fk1=fk;gkdk=gk*dk; if gk*dk=-1.0e-14%当dk不是充分下降时采用负梯度为搜索方向 dk=-gk; end (4)确定步长 %%%%%%%%%%%%%%%%%%%%%%%%%%%%利用Wolfe-Powell搜索计算步长 [alphak,fk,gk,wfnum,wgnum]=wolfe2(n,m,xk,dk,fk1,gk1,nprob); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%利用Wolfe-Powell搜索计算步长 (5)计算 fnum=fnum+wfnum; gnum=gnum+wgnum; xk1=xk;xk=xk1+alphak*dk; fk=objfcn(n,m,xk,nprob); gk=grdfcn(n,m,xk,nprob); if norm(gk,2)=teminate k=k+1; break; end (6)由BFGS修正公式得 %%%%%%%%%%%%%%%%% Bk update sk=xk-xk1;bks2=sk*bk*sk;yk=gk-gk1; yksk=yk*sk; if yksk0 bks1=bk*sk*sk*bk; yks=yk*yk/yksk;bk1=bk; bk=bk1-bk1*sk*sk*bk1/(sk*bk1*

您可能关注的文档

文档评论(0)

1112111 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档