方向加速法框图与程序[行业文书]_第1页
方向加速法框图与程序[行业文书]_第2页
方向加速法框图与程序[行业文书]_第3页
方向加速法框图与程序[行业文书]_第4页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、是否f2=f3否是否是开始给定由x0出发,以步长t进行x方向探测移动得x1,f1=f(x1);再以x1出发,以步长t进行y方向探测移动得x2,f2=f(x2)|x2-x0|输出最优解x2,f2结束x3=2x2-x0或P=x2-x0方向加速法程序框图以x2为基点,沿P方向求极小,所得点记为x0e(1,:)=e(2,:) e(2,:)=p! 主程序:方向加速法 program main implicit none real,parameter:eps=0.01,lamda=0.61803399 real x0(2),x1(2),x(2),x3(2),p(2),x2(2),e(2,2) real f

2、0,y2,ff,drta,s1,s2,t1,t2,tp,a,b,c,d,q1,q2,f2,f1,f3 e(1,:)=(/1,0/) e(2,:)=(/0,1/) x0=(/0,0/) a=-20 b=20!确定步长t ! 探测移动 100 call fg(x0,f0) call k(a,b,x0,e,t1) x1=x0+t1*e(1,:) call fg(x1,f1) call l(x1,e,t2) x2=x1+t2*e(2,:) call fg(x2,f2) s1=sqrt(x2(1)-x0(1)*2+(x2(2)-x0(2)*2) if(s1f0.or.ff=drta)then if(f2

3、=f3)then x0=x2 goto 100 else x0=x3 goto 100 end if else p=x2-x0 call m(x2,p,tp) x0=x2+tp*p e(1,:)=e(2,:) e(2,:)=p s2=sqrt(x2(1)-x0(1)*2+(x2(2)-x0(2)*2) if(s2=eps) then goto 300 else goto 100 end if end if300 write(*,*)最优解x= write(*,*)x2 write(*,*)极小值f= write(*,*)f2 end ! 子程序:计算函数值subroutine fg(x,y)

4、real x(2),y,e(2,2) y=10*(x(1)+x(2)-5)*2+(x(1)-x(2)*2 endsubroutine y1(x0,e,t,y) real y,t real,dimension(2):x0 real,dimension(2,2):e y=10*(x0(1)+t*e(1,1)+x0(2)+t*e(1,2)-5)*2+(x0(1)+t*e(1,1)-(x0(2)+t*e(1,2)*2 endsubroutine y2(x1,e,t,y) real t,y real,dimension(2):x1 real,dimension(2,2):e y=10*(x1(1)+t*

5、e(2,1)+x1(2)+t*e(2,2)-5)*2+(x1(1)+t*e(2,1)-(x1(2)+t*e(2,2)*2 end subroutine pp(x2,p,tp,y) real tp,y real,dimension(2):x2,p(2) y=10*(x2(1)+tp*p(1)+x2(2)+tp*p(2)-5)*2+(x2(1)+tp*p(1)-(x2(2)+tp*p(2)*2 end subroutine k(a,b,x0,e,t1) real,parameter:eps=0.01,lamda=0.618 real a,b,c,d,q1,q2,t1 real,dimension(

6、2):x0 a=-10 b=10400 c=a+(1-lamda)*(b-a) d=a+lamda*(b-a) call y1(x0,e,c,q1) call y1(x0,e,d,q2) if(q1q2)then a=c c=d q1=q2 else a=c b=d end if if(b-a)eps)then t1=(a+b)/2 else goto 400 end if end subroutine l(x1,e,t2) real,parameter:eps=0.01,lamda=0.618 real a,b,c,d,q1,q2,t2 a=-10 b=10600 c=a+(1-lamda)

7、*(b-a) d=a+lamda*(b-a) call y2(x1,e,c,q1) call y2(x1,e,d,q2) if(q1q2)then a=c c=d q1=q2 else a=c b=d end if if(b-a)eps)then t2=(a+b)/2 else goto 600 end if end subroutine m(x2,p,tp) real,parameter:eps=0.05,lamda=0.618 real a,b,c,d,q1,q2,tp a=-10 b=10200 c=a+(1-lamda)*(b-a) d=a+lamda*(b-a) call pp(x2,p,c,q1) call pp(x2,p

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论