- 1、本文档共7页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
用Powell法优化设计程序及一维搜索黄金分割法组合
用Powell法优化设计程序与一维搜索黄金分割法组合
编程求解函数
ε=0.001。
解:已知,初始点x0=[1,1]T,迭代精度ε=0.001。
在该优化设计过程中,黄金分割搜索法作为POWELL算法主程序中的一部分。在POWELL算法运行过程中会多次调用黄金分割搜索算法程序。这样可以缩短优化设计计算时间。
1. MATLAB源程序代码
1.1 关于α的目标函数源代码
function m = y(x1,x2,d1,d2,alpha)%建立关于α的一元函数y(α)
m = (x1+alpha*d1)^2+2*(x2+alpha*d2)^2-4*(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;
if y2y1
h = -h;alpha3 = alpha1;y3 = y1;t = 1;
end
while(1)
if t == 1
alpha1 = alpha2;y1 = y2;
alpha2 = alpha3;y2 = y3;
else t = 1;
end
alpha3 = alpha2+h;y3 = y(x11,x22,d11,d22,alpha3);
if y3y2
h = 2*h;
else
break;
end
end
if alpha1alpha3
tem = alpha1;alpha1 = alpha3;alpha3 = tem;
a = alpha1;b = alpha3;
else a=alpha1;b = alpha3;
end 1.3黄金分割搜索法函数源代码
function alpha = ALPHA(x1,x2,d1,d2,A,B)%利用黄金分割法求解关于α的函数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)
if y1=y2
a = alpha1;alpha1 = alpha2;
y1 = y2;
alpha2 = a+r*(b-a);
y2 = y(x11,x22,d11,d22,alpha2);
else
b = alpha2;alpha2 = alpha1;
y2 = y1;
alpha1 = b-r*(b-a);
y1 = y(x11,x22,d11,d22,alpha1);
end
if abs(b-a)ep abs(y2-y1)ep
break;
end
end
alpha = 0.5*(a+b); 1.4 POWELL算法程序源代码
function [z,fmin] = powell(f) %根据无约束优化方法POWELL算法,在二维空间中求解f(x1,x2)的最小值点,求解结果返回变量坐标(x1,x2)和极小值fmin
k = 0;n = 2;
x = [0;0;];
ff(1) = f(x(1),x(2));
ep = 0.001;
d = [1;0;0;1];
while(1)
x00 = [x(1);x(2);];
for i = 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);
文档评论(0)