单变量函数一维寻优搜索方法.docxVIP

  • 52
  • 0
  • 约2.28千字
  • 约 9页
  • 2019-09-27 发布于广东
  • 举报
设计任务:单变量函数一维寻优搜索方法 课题1:单变量函数的-维寻优捜索方法 课题内容:对于给定的鞍量函数伽=8忖3? 2*xA2-7*x+3,在区间[0,1]上进行寻优。利 用全局搜索法、二分空、Fabonacci法、黄金 分割法进彳亍区间搜索,对比最优解的逼近程 度利寻优速度。 最终施:得到制歳数的最优解,并在同-步长 下进行以上方法的误差分析和速度对匕以 图形显示。 设计要求:1)自己独立完成程序 设计良好的GUI界面 自己设计单变量函数,进彳亍寻优。 第一部分(20%) 第一?部分(20%) 第三部分(30%) 第四部分(30%) 报告成绩: 指导教师: 预习报告(20%): 平时成绩(10%): 验收答辩成绩(50%): 设计报告成绩(20%): 总评成绩: 源代码: 1. GUI模块 screen=get(O,Screensize); w=screen(3);h=screen(4); figure(!color,[ 1,1,1 ]/position\[0.2*h,0.2*h,0.5*w,0.3*h]/Name\,单变量 函数 7NumberTitle,,,off/MenuBar/none,); hcount=uimenu(gcf,label1,count*); hmenu 1 =uimenu(hcount, label* / 全局搜索 *,fallback*,six1); hmenu2=uimenu(hcount,label,二分法,Callback,five); hmenu3=uimenu(hcount, label *,1 黄金分割 VCallbackVgolden1); hmenu4=uimenu(hcount,,label7FABONONACI7Callbackl/four); hplot=uimenu(gcf,label*, plot*); hmenu l=uimenu(hplot,label;误差); hmenu 1 =uimenu(hplot,label,时间); uimenu(gcf,label1/quit,caHTck)se(gcf)); 2 ?黄金分割函数模块 tic; a=0;b=l;e=le-10; al=b-0.618*(b-a); a2=a+0.618*(b-a); while b-ae yl=8*alA3-2*alA2-7*al+3; y2=8*a2A3-2*a2A2-7*a2+3; if yly2 a=al; al=a2; yl=y2; a2二a+0.618*(b?a); plot(a2,yl,,bh,) axis([0.6 0.65 ?0.25 0.18]); title(潢金分割法); else b=a2; a2=al; y2二yl; al=b-0.618*(b-a); plot(al,y2,bh‘) axis([0.6 0.65 -0.25 0.18]); title(潢金分割法); end (sunjv(u)unj 七 二 J+f 二 J+qHI 一 Qu 二殳 JOJ -(口+0「小* 右CAV 子9OKU 二 ununj puu 二+UHU e+OJJLy 上 JeHOJ 0.2 △二 3 三M 二 HqoHECNHU e+QW 二丄三h£ 0二 摊坦 EuuoqES 86z9o、(86z9otuIX)H.IUd o)p 」(?上)tp OOE E+WIUXZVWUI0ZCAVU€£HWUIA Zxq+Elruyulx puu b=t2; else a=tl; end f=fl;fl=fO;fO=f?fl; end if fun(tl)fun(t2) t=tl,y=fun(tl) else t=t2,y=fun(t2) end plot(t,y,T*J axis([0.6 0.65 -0.25 0.18]); titleCfabonnaci j去); t=toc; dispC用时 t=,); disp(t); per=(t-0.6298)/0.6298 4 ?二分法 tic; a=0;b=l;e=le-10; x0=(a+b)/2; fun=inlineC8*xA3-2*xA2-7*x4-3\,x,); f=[?2,?7,3]; y=polyval(polyder(f),xO); while b-ae ify0 b=xO; x0=(a+b)/2; y=polyval(polyder(f),xO); elseif y0 a=xO; xO 二(a+b)/2; y=poly val (polyder(f) ,x0); else x0=(a+b)/2 end end xO y=fun(xO) plot(xO,y,g**) axis([0.6 0.65 -0.25 0.18]);

文档评论(0)

1亿VIP精品文档

相关文档