资源描述:
《用powell法优化设计程序与一维搜索黄金分割法组合》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、用Powell法优化设计程序与一维搜索黄金分割法组合编程求解函数的极小点x,初始点x0=[1,1]T,迭代精度ε=0.001。解:已知,初始点x0=[1,1]T,迭代精度ε=0.001。在该优化设计过程中,黄金分割搜索法作为POWELL算法主程序中的一部分。在POWELL算法运行过程中会多次调用黄金分割搜索算法程序。这样可以缩短优化设计计算时间。1.MATLAB源程序代码1.1关于α的目标函数源代码functionm=y(x1,x2,d1,d2,alpha)%建立关于α的一元函数y(α)m=(x1+alpha*d1)^2+2*(x2+alpha*d2)^2-4
2、*(x1+alpha*d1)-2*(x1+alpha*d1)*(x2+alpha*d2);1.2一元函数最小值区间函数源代码function[a,b]=section(x1,x2,d1,d2)%采用外推法求解一元函数的最小值区间x11=x1;x22=x2;d11=d1;d22=d2;h0=1;h=h0;alpha1=0;y1=y(x11,x22,d11,d22,alpha1);alpha2=h;y2=y(x11,x22,d11,d22,alpha2);t=0;ify2>y1h=-h;alpha3=alpha1;y3=y1;t=1;endwhile(1)ift=
3、=1alpha1=alpha2;y1=y2;alpha2=alpha3;y2=y3;elset=1;endalpha3=alpha2+h;y3=y(x11,x22,d11,d22,alpha3);ify3alpha3tem=alpha1;alpha1=alpha3;alpha3=tem;a=alpha1;b=alpha3;elsea=alpha1;b=alpha3;end1.3黄金分割搜索法函数源代码functionalpha=ALPHA(x1,x2,d1,d2,A,B)%利用黄金分割法求解关
4、于α的函数y(α)的极小点α*x11=x1;x22=x2;d11=d1;d22=d2;a=A;b=B;ep=0.001;r=0.618;alpha1=b-r*(b-a);y1=y(x11,x22,d11,d22,alpha1);alpha2=a+r*(b-a);y2=y(x11,x22,d11,d22,alpha2);while(1)ify1>=y2a=alpha1;alpha1=alpha2;y1=y2;alpha2=a+r*(b-a);y2=y(x11,x22,d11,d22,alpha2);elseb=alpha2;alpha2=alpha1;y2=y1
5、;alpha1=b-r*(b-a);y1=y(x11,x22,d11,d22,alpha1);endifabs(b-a)6、[x(1);x(2);];fori=1:n[a(i),b(i)]=section(x(2*i-1),x(2*i),d(2*i-1),d(2*i));alpha(i)=ALPHA(x(2*i-1),x(2*i),d(2*i-1),d(2*i),a(i),b(i));x(2*i+1)=x(2*i-1)+alpha(i)*d(2*i-1);x(2*i+2)=x(2*i)+alpha(i)*d(2*i);ff(i+1)=f(x(2*i+1),x(2*i+2));endfori=1:nDelta(i)=ff(i)-ff(i+1);enddelta=max(Delta);
7、fori=1:nifdelta==Delta(i)m=i;break;endendd(2*n+1)=x(2*n+1)-x(1);d(2*n+2)=x(2*n+2)-x(2);x(2*n+3)=2*x(2*n+1)-x(1);x(2*n+4)=2*x(2*n+2)-x(2);ff(n+2)=f(x(2*n+3),x(2*n+4));f0=ff(1);f2=ff(n+1);f3=ff(n+2);k=k+1;R(k,:)=[k,x',d',ff];iff38、n+1),b(n+1)]=sectio