最优化方法编程

最优化方法编程

ID:39044108

大小:104.50 KB

页数:6页

时间:2019-06-24

最优化方法编程_第1页
最优化方法编程_第2页
最优化方法编程_第3页
最优化方法编程_第4页
最优化方法编程_第5页
资源描述:

《最优化方法编程》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、最优化方法编程通过matlab编程,对老师上课讲的几种方法进行程序实现,并对算法的原理进行简要的描述。(一)0.618法与Fibonacci法0.618法和Fibonacci法都是分割方法,其基本思想是通过取试探点和进行函数值的比较,使包含极小值点的搜索区间不断缩短,当区间长度缩短到一定程度时,区间上各点的函数值均接近极小值,从而各点可以看做是极小值点的近似.这类方法只需计算函数值,不涉及导数,又称直接法.它们用途很广,尤其适用于非光滑及导数表达式复杂或写不出的种种情形.注意,这些方法要求所考虑区间上的目

2、标函数是单峰函数,如果这个条件不满足,我们可以把所考虑的区间分成若干个小区间,在每个小区间是单峰的.这样,我们在每个小区间上期求小值点,然后选其中最小点.0.618法0.618法计算步骤:步1:选取初始数据.确定初始搜索区间[a1,b1]和精度要求e>0.计算最初两个试探点m(1)=a(1)+0.382*(b(1)-a(1));n(1)=a(1)+0.618*(b(1)-a(1));计算f(m(1))和f(n(1)),令k=1.步2:比较函数值.若f(n(k))>f(m(k)),转步3,否则转步4.步3:

3、若b(k)-m(k)<=e,停止计算,输出m(k);否则令a(k+1)=m(k);b(k+1)=b(k);m(k+1)=n(k);n(k+1)=a(k+1)+0.618*(b(k+1)-a(k+1));计算f(n(k+1)),转步2.步4:若m(k)-a(k)<=e,则停止计算输出n(k);否则令a(k+1)=a(k);b(k+1)=n(k);n(k+1)=m(k);m(k+1)=a(k+1)+0.382*(b(k+1)-a(k+1));计算f(m(k)),转步2.例1:求函数的最小值,初始区间为[-1,

4、1],精度为0.16()0.618法的matlab程序:function[w,ans]=fa(f_1,a,b,j)a(1)=a;b(1)=b;k=j;n=1;t(1)=a(1)+0.382*(b(1)-a(1));u(1)=a(1)+0.618*(b(1)-a(1));while((b(n)-a(n))>k)B(n)=b(n)-a(n);m(n)=feval(f_1,t(n));g(n)=feval(f_1,u(n));ifm(n)>g(n)a(n+1)=t(n);b(n+1)=b(n);t(n+1)=u

5、(n);u(n+1)=a(n+1)+0.618*(b(n+1)-a(n+1));elsea(n+1)=a(n);b(n+1)=u(n);u(n+1)=t(n);t(n+1)=a(n+1)+0.382*(b(n+1)-a(n+1));endn=n+1;endans=(b(n)+a(n))/2;t(n)=0;u(n)=0;m(n)=0;g(n)=0;B(n)=b(n)-a(n);n=n-1;disp('akbkrkukf(rk)f(uk)bk-ak')w=[a',b',t',u',m',g',B'];func

6、tiony=f1(x)y=2*x^2-x-1;运行语句为:[w,ans]=fa('f1',-1,1,0.16)运行结果为:可见当运算到第七次时满足精度要求取最小值为=0.2229,我们可以通过求导算得函数的最小值应该为0.25,可见用程序算得的0.2229与0.25已经是非常接近了。Fibonacci法Fibonacci法计算步骤:步1:给定[,]和了l,计算n使得设置一个辨别常数,计算,,置k=1。步2:f()>f(),则转步3,否则转到步4步3:令,若k=n-2,则转步6否则转步5步5:令k=k+1,

7、转步2.步6:令,计算若,令若,令例2:用Fibonacci法解的最小值,区间为[-1,1],=0.01,l=0.16.Fibonacci法的matlab程序:functionFi=Fib(n)i=1;Fib(2)=2;Fib(1)=1;ifn==0Fi=1;elsefori=3:1:nFib(i)=Fib(i-1)+Fib(i-2);endi=n;endFi=Fib(i);function[T,x,j]=Fibonacci(F_1,a1,b1,l,e)n=1;j=1;a(n)=a1;b(n)=b1;wh

8、ile(Fib(j)*l<(b1-a1))j=j+1;endr(1)=a(1)+(1-Fib(j-1)/Fib(j))*(b(1)-a(1));u(1)=a(1)+Fib(j-1)/Fib(j)*(b(1)-a(1));forn=1:1:j-2R(n)=feval(F_1,r(n));U(n)=feval(F_1,u(n));Z(n)=b(n)-a(n);ifR(n)>U(n)a(n+1)=r(n);b(n+1)=b(n);r

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。