BES算法优化LM算法确定模型参数(参考:Novelmeta-heuristic bald eagle search optimisation algorithm)存在陷入局部最优问题

%% 系统建模
clc;clear;
ma = [0.2 0.2 0.2 0.2 0.4 0.4 0.4 0.4 0.2 0.2 0.2 0.2 0.4 0.4 0.4 0.4];
Tai = [23 23 23 23 23 23 23 23 30 30 30 30 30 30 30 30];
Tao = [18.285 18.07 17.731 17.512 20.598 20.492 20.303 20.204 25.032 24.829 24.418 24.254 27.471 27.369 27.148 27.074];
mr = [0.0067687 0.0068901 0.0079628 0.0079636 0.0067752 0.0068934 0.0079722 0.0079591 0.0067847 0.0068982 0.0079827 0.0079519 0.0067894 0.0069008 0.0079875 0.0079469];
Tsat= [5.4627 -1.4785 8.7135 1.374 5.8217 -1.1601 9.2078 1.7237 6.5043 -0.62698 9.9056 2.2528 6.8474 -0.31984 10.37 2.5914];
Pe = [355.57 277.64 397.35 307.88 360.01 280.9 404.03 311.76 368.57 286.42 413.59 317.69 372.93 289.63 420.05 321.53];
Hg = [253.6 249.59 255.44 251.25 253.81 249.77 255.72 251.45 254.2 250.08 256.11 251.76 254.39 250.26 256.37 251.96];
Tri= [33.901 33.583 36.045 35.144 33.781 33.506 35.77 35.047 33.599 33.395 35.473 34.933 33.499 33.33 35.334 34.861];
Cp=1.1626075418552;
Qcat = Cp.ma.(Tai-Tao);
%%
ma1 = [0.2 0.2 0.2 0.2 0.4 0.4 0.4 0.4 0.2 0.2 0.2 0.2 0.4 0.4 0.4 0.4];
Tai1 = [23 23 23 23 23 23 23 23 30 30 30 30 30 30 30 30];
Tao1 = [18.285 18.07 17.731 17.512 20.598 20.492 20.303 20.204 25.032 24.829 24.418 24.254 27.471 27.369 27.148 27.074];
mr1 = [0.0067687 0.0068901 0.0079628 0.0079636 0.0067752 0.0068934 0.0079722 0.0079591 0.0067847 0.0068982 0.0079827 0.0079519 0.0067894 0.0069008 0.0079875 0.0079469];
Tsat1= [5.4627 -1.4785 8.7135 1.374 5.8217 -1.1601 9.2078 1.7237 6.5043 -0.62698 9.9056 2.2528 6.8474 -0.31984 10.37 2.5914];
Pe1 = [355.57 277.64 397.35 307.88 360.01 280.9 404.03 311.76 368.57 286.42 413.59 317.69 372.93 289.63 420.05 321.53];
Hg1 = [253.6 249.59 255.44 251.25 253.81 249.77 255.72 251.45 254.2 250.08 256.11 251.76 254.39 250.26 256.37 251.96];
Tri1= [33.901 33.583 36.045 35.144 33.781 33.506 35.77 35.047 33.599 33.395 35.473 34.933 33.499 33.33 35.334 34.861];
Qcat1 = Cp.ma.(Tai-Tao);
%% 秃鹰搜索算法辨识参数
Maxepochs = 100;
pmin = [0,0,0,0];
pmax = [10,10,10,10];
D=size(pmin,2);
N = 500;
pm = (pmin+pmax)./2;
p0(1:N./2,:) = pmin+(pm-pmin).*rand(N./2,D);
p01(N./2+1:N,:) = pmin+(pmax-pm).*rand(N./2,D);
p = [p0 ;p01];
%% 初始适应度评估
for i = 1:N
fitness(i,:) = fun(p(i,:));
end
pbest = p(fitness==min(fitness)😅;
epochs = 1;

%%
%

while epochs for i = 1:N
a2(i,:) = 0 +(5-0).*rand(1,D);
R1(i,:) = 0.5 +(2-0.5).*rand(1,D);
theta1(i,:) = a2(i,:).*pi.*rand(1,D);
r2(i,:) = theta1(i,:)+R1(i,:).*rand(1,D);
xr1(i,:) = r2(i,:).*sin(theta1(i,:));
yr1(i,:) = r2(i,:).*cos(theta1(i,:));
end
x1 = xr1./max(abs(xr1));
y1 = yr1./max(abs(yr1));
for i = 1:N
a3(i,:) = 0 +(5-0).*rand(1,D);
theta2(i,:) = a3(i,:).*pi.*rand(1,D);
r2(i,:) = theta2(i,:);
xr2(i,:) = r2(i,:).*sinh(theta2(i,:));
yr2(i,:) = r2(i,:).*cosh(theta2(i,:));
end
%% 选择搜索空间
pmean = median§;
a1 = 1.5 +(2-1.5).*rand(1,1);
r1 = rand(1,1);
for i =1:N
pnew(i,:) = pbest(1,:)+a1.r1.(pmean-p(i,:));
fitness_new(i,:) = fun(pnew(i,:));
if fitness_new(i,:) p(i,:) = pnew(i,:);
fitness(i,:) = fitness_new(i,:);
else
p(i,:) = p(i,:);
fitness(i,:) = fitness(i,:);
end
end
pbest_new = p(fitness==min(fitness)😅;
if fun(pbest_new) pbest = pbest_new(1,:);
else
pbest = pbest(1,:);
end

%%

%%
% 搜索空间猎物 (探索)

% pmean = mean§;
for i =1:N

    if i<=2pnew(i,:) = pbest(1,:)+xr1(i,:).*(p(i,:)-pmean)+yr1(i,:).*(p(i,:)-pmax);elseif i>2 && i

% pmean = mean§;
%%
% 俯冲捕获猎物 (利用)
for i =1:N
c1(i,:) = 1+(2-1).*rand(1,D);
c2(i,:) = 1+(2-1).rand(1,D);
x2(i,:) = xr2(i,:)./max(abs(xr2));
y2(i,:) = yr2(i,:)./max(abs(yr2));
deltx(i,:) = x2(i,:).
(p(i,:)-c1(i,:).pmean);
delty(i,:) = y2(i,:).
(p(i,:)-c2(i,:).*pbest(1,:));
end
for i = 1:N
pnew(i,:) = rand(1,D).*pbest(1,:)+deltx(i,:)+delty(i,:);
if fitness_new(i,:) p(i,:) = pnew(i,:);
fitness(i,:) = fitness_new(i,:);
end
for j = 1:D
if p(i,j)>pmax(1,j)
p(i,j) = pmax(1,j);
elseif p(i,j) p(i,j) = pmin(1,j);
else
p(i,j) = p(i,j);
end
end
pbest_new = p(fitness==min(fitness)😅;
if fun(pbest_new) pbest = pbest_new;
end
end
f(epochs) = fun(pbest);
epochs = epochs+1;
end

for i = 1:N
fitness(i,:) = fun(p(i,:));
end
gbest = p(fitness==min(fitness)😅;
gbest = gbest(1,:);
%% 最小二乘法辨识参数
LB=[0 0 0 0];
UB=[];
x0 = gbest ;
fun1 = @(x)(mr.*(Hg-x(1).*Tri)+x(2).*mr.x(4).*(Tai-Tsat))./(1+x(3).*(mr/ma).x(4))-Qcat;

%x0 = [ 0.5345 1.3163 0.9321 0.8];
%x0 = [ 1.1848 70 0.2544 0.5384 0.8]; % Starting guess
%[x,resnorm] = lsqcurvefit(@myfun,x0,ma,Tao,mr,Tri,Tsat,Qcat,LB,UB) % Invoke optimizer
options = optimoptions(@lsqnonlin,‘Algorithm’,‘levenberg-marquardt’);
% [x,resnorm] = lsqnonlin(@myfun,x0,LB,UB,options,ma,Tai,mr,Tsat,Qcat,Hg,Tri); % Invoke optimizer
[xlm,resnorm] = lsqnonlin(fun1,x0,LB,UB,options);

fun(xlm)
fun(gbest)
%% 绘制结果图
% for i=1:16
%
% Qcal(i) = (mr(i)(Hg(i)-xlm(1)Tri(i))+xlm(2)mr(i)xlm(4)*(Tai(i)-Tsat(i)))/(1+xlm(3)*(mr(i)/ma(i))xlm(4));
%
% end
% for i=1:16
%
% Qcalp(i) = (mr(i)
(Hg(i)-gbest(1)Tri(i))+gbest(2)mr(i)gbest(4)*(Tai(i)-Tsat(i)))/(1+gbest(3)*(mr(i)/ma(i))gbest(4));
%
% end
% %%
% Qcal1 = (mr1.
(Hg1-xlm(1).Tri1)+xlm(2).mr1.xlm(4).*(Tai1-Tsat1))./(1+xlm(3).*(mr1./ma1).xlm(4));
% Qcalp1 = (mr1.
(Hg1-gbest(1).Tri1)+gbest(2).mr1.gbest(4).*(Tai1-Tsat1))./(1+gbest(3).*(mr1./ma1).gbest(4));
% x11=1:0.05:1.4;
% y11=x11;
% y21=1.01
x11;
% y31=0.99
x11;
% hold on
% figure(1);
% plot(Qcat1,Qcal1,‘k+’,x11,y11,‘k-’,x11,y21,‘k-’,x11,y31,‘k-’);
% hold on
% plot(Qcat1,Qcalp1,'k
’);
% legend(‘LM最小二乘法’,‘100%’,‘+1%’,‘-1%’,‘PSO优化算法’,‘location’,‘northwest’);
% xlabel(‘实际值 [kw]’),
% ylabel(‘模型输出值[kw]’);
% %% 相对误差
% for i=1:16
%
% deltaQ(i)=abs(Qcat(i)-Qcal(i));
% deltaQp(i)=abs(Qcat(i)-Qcalp(i));
% re_error(i)=100
deltaQ(i)/Qcat(i);
% re_errorp(i)=100
deltaQp(i)/Qcat(i);
% end
% figure(2),plot(re_error,‘k-o’);
% hold on
% plot(re_errorp,'k-
'),ylabel(‘相对误差[%]’), xlabel(‘数据点’);
% axis([0 16.5,-0.1,1.4])
% aveage(1) = sum(re_error)./16;
% aveage(2) = sum(re_errorp)./16;
% legend(‘LM最小二乘法’,‘PSO优化算法’,‘location’,‘best’);
% disp(aveage);
% %%
% r = sum(re_error)./16;
% rp = sum(re_errorp)./16;


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部