clc;
clear;
close all;
warning off;
addpath(genpath(pwd));
format long
%% Initial Parameter Setting
NR = 10; % Number if Runs
NK = 25; % Number if Krills
MI = 200; % Maximum Iteration
C_flag = 1; % Crossover flag [Yes=1]
% Bounds (Normalize search space in case of highly imbalanced search space)
UB = 10*ones(1,10);
LB = -10*ones(1,10);
NP = length(LB); % Number if Parameter(s)
Dt = mean(abs(UB-LB))/2; % Scale Factor
F = zeros(NP,NK);D = zeros(1,NK);N = zeros(NP,NK); %R = zeros(NP,NK);
Vf = 0.02; Dmax = 0.005; Nmax = 0.01; Sr = 0;
%% Optimization & Simulation
for nr = 1:NR
%Initial Krills positions
for z1 = 1:NP
X(z1,:) = LB(z1) + (UB(z1) - LB(z1)).*rand(1,NK);
end
for z2 = 1:NK
K(z2)=cost(X(:,z2));
end
Kib=K;
Xib=X;
[Kgb(1,nr), A] = min(K);
Xgb(:,1,nr) = X(:,A);
for j = 1:MI
% Virtual Food
for ll = 1:NP;
Sf(ll) = (sum(X(ll,:)./K));
end
Xf(:,j) = Sf./(sum(1./K)); %Food Location
Xf(:,j) =findlimits(Xf(:,j)',LB,UB,Xgb(:,j,nr)');% Bounds Checking
Kf(j) = cost(Xf(:,j));
if 2<=j
if Kf(j-1)<Kf(j)
Xf(:,j) = Xf(:,j-1);
Kf(j) = Kf(j-1);
end
end
Kw_Kgb = max(K)-Kgb(j,nr);
w = (0.1+0.8*(1-j/MI));
for i = 1:NK
% Calculation of distances
Rf = Xf(:,j)-X(:,i);
Rgb = Xgb(:,j,nr)-X(:,i);
for ii = 1:NK
RR(:,ii) = X(:,ii)-X(:,i);
end
R = sqrt(sum(RR.*RR));
% % % % % % % % % % % % % Movement Induced % % % % % % % % % %
% Calculation of BEST KRILL effect
if Kgb(j,nr) < K(i)
alpha_b = -2*(1+rand*(j/MI))*(Kgb(j,nr) - K(i)) /Kw_Kgb/ sqrt(sum(Rgb.*Rgb)) * Rgb;
else
alpha_b=0;
end
% Calculation of NEIGHBORS KRILL effect
nn=0;
ds = mean(R)/5;
alpha_n = 0;
for n=1:NK
if and(R<ds,n~=i)
nn=nn+1;
if and(nn<=4,K(i)~=K(n))
alpha_n = alpha_n-(K(n) - K(i)) /Kw_Kgb/ R(n) * RR(:,n);
end
end
end
% Movement Induced
N(:,i) = w*N(:,i)+Nmax*(alpha_b+alpha_n);
% % % % % % % % % % % % % Foraging Motion % % % % % % % % % %
% Calculation of FOOD attraction
if Kf(j) < K(i)
Beta_f=-2*(1-j/MI)*(Kf(j) - K(i)) /Kw_Kgb/ sqrt(sum(Rf.*Rf)) * Rf;
else
Beta_f=0;
end
% Calculation of BEST psition attraction
Rib = Xib(:,i)-X(:,i);
if Kib(i) < K(i)
Beta_b=-(Kib(i) - K(i)) /Kw_Kgb/ sqrt(sum(Rib.*Rib)) *Rib;
else
Beta_b=0;
end
% Foraging Motion
F(:,i) = w*F(:,i)+Vf*(Beta_b+Beta_f);
% % % % % % % % % % % % % Physical Diffusion % % % % % % % % %
D = Dmax*(1-j/MI)*floor(rand+(K(i)-Kgb(j,nr))/Kw_Kgb)*(2*rand(NP,1)-ones(NP,1));
% % % % % % % % % % % % % Motion Process % % % % % % % % % % %
DX = Dt*(N(:,i)+F(:,i));
% % % % % % % % % % % % % Crossover % % % % % % % % % % % % %
if C_flag ==1
C_rate = 0.8 + 0.2*(K(i)-Kgb(j,nr))/Kw_Kgb;
Cr = rand(NP,1) < C_rate ;
% Random selection of Krill No. for Crossover
NK4Cr = round(NK*rand+.5);
% Crossover scheme
X(:,i)=X(:,NK4Cr).*(1-Cr)+X(:,i).*Cr;
end
% Update the position
X(:,i)=X(:,i)+DX;
X(:,i)=findlimits(X(:,i)',LB,UB,Xgb(:,j,nr)'); % Bounds Checking
K(i)=cost(X(:,i));
if K(i)<Kib(i)
Kib(i)=K(i);
Xib(:,i)=X(:,i);
end
end
% Update the current best
[Kgb(j+1,nr), A] = min(K);
if Kgb(j+1,nr)<Kgb(j,nr)
Xgb(:,j+1,nr) = X(:,A);
else
Kgb(j+1,nr) = Kgb(j,nr);
Xgb(:,j+1,nr) = Xgb(:,j,nr);
end
end
end
%% Post-Processing
[Best, Ron_No] = min(Kgb(end,:))
Xgb(:,end,Ron_No)
Mean = mean(Kgb(end,:))
Worst = max(Kgb(end,:))
Standard_Deviation = std(Kgb(end,:))
% Convergence plot of the best run
semilogy(1:MI+1,Kgb(:,Ron_No),1:MI+1,mean(Kgb'))
xlabel('{\itNo. of Iterations}')
ylabel('{\itf}({\bfx_{best}})')
legend('Best run values','Average run values')
KH磷虾群优化算法的MATLAB的仿真-源码
版权申诉
125 浏览量
2021-10-01
23:56:34
上传
评论
收藏 5KB ZIP 举报
mYlEaVeiSmVp
- 粉丝: 1886
- 资源: 19万+
最新资源
- 基于matlab实现用有限元法计算电磁场的Matlab工具 .rar
- 基于matlab实现有限元算法 计算电磁场问题 边界条件包括第一类边界和第二类边界.rar
- 基于matlab实现用于计算不同车重下的电动汽车动力性和经济性.rar
- 基于matlab实现遗传算法求解多车场车辆路径问题 有多组算例可以用.rar
- 浏览器.apk
- 基于matlab实现是一个matlab中的power system 中搭建的一个模型
- 基于JSP毕业设计-教学管理系统(源代码+论文).zip
- 基于JSP毕业设计-家政管理系统-毕业设计.zip
- 基于Python实现淘宝商品评论采集(含逆向)源代码
- 基于matlab实现多目标进化算法NSGAⅡ&Matlab讲解.rar
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈