💥💥💞💞欢迎来到本博客❤️❤️💥💥
🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。
⛳️座右铭:行百里者,半于九十。
📋📋📋本文目录如下:🎁🎁🎁
目录
💥1 概述
提出了一种新的混合二进制变体灰狼优化器(GWO)和裸鼹鼠算法(NMRA)的算法,称为HbGNMR,旨在克服基本NMRA的探索不足和局部最优停滞问题,以及GWO的开发不足。HbGNMR将GWO的全局搜索策略融入到工作阶段中以增强探索能力,并在繁殖阶段添加了基于模拟退火惯性权重的交配因子,以改善开发能力。此外,分析了两个家族的十四个新的时变二进制传输函数:七个S形函数和七个V形函数。在这些传输函数中,$TV_{V5}$ 被确定为最有效的,能够将解从连续搜索空间转换为二进制搜索空间,并在探索和开发阶段之间保持平衡。
📚2 运行结果
部分代码:
%_____________________________________________________________________________________%
% Hybrid Binary Grey Wolf Naked Mole Rat Algorithm (HbGNMR) source code with TVTF %
% By "Gurdeep Singh" Dated: 28-08-2022 %
%_____________________________________________________________________________________%
function [binbest,Alpha_pos,Alpha_score,bb]=HbGNMR(Lb,Ub,n,maxiter,BTF,CostFunction,d)
rand('state',sum(100*clock));
bp=0.05; % breeding parameter
breeders=round(n/5); % breeder population
iter=1;
bb(1:iter)=inf;
NMRfitness(1:n)=inf;
Alpha_pos=zeros(1,d);
Alpha_score=inf; %change this to -inf for maximization problems
Beta_pos=zeros(1,d);
Beta_score=inf; %change this to -inf for maximization problems
Delta_pos=zeros(1,d);
Delta_score=inf; %change this to -inf for maximization problems
% Population Initialization
for i=1:n,
NMRsolution(i,:)=Lb+(Ub-Lb).*rand(1,d);
binsol(i,:)=randi([0 1],1,d);
NMRfitness(i)=CostFunction(binsol(i,:));
end
% Find the current NMRbest
[~,I]=min(NMRfitness);
% NMRbest=NMRsolution(I,:);
binbest=binsol(I,:);
H=NMRsolution;
while (iter<=maxiter) % Loop over worker and breeders
%For workers
for i=(breeders+1):n,
Flag4Ub=H(i,:)>Ub;
Flag4Lb=H(i,:)<Lb;
H(i,:)=(H(i,:).*(~(Flag4Ub+Flag4Lb)))+Ub.*Flag4Ub+Lb.*Flag4Lb;
% ############ Binary Conversion using Sigmoidal TF ############
Snew=BTF_selection(H(i,:),binsol(i,:),iter,maxiter,BTF,d);
% Evaluate new NMRsolutions
Fnew=CostFunction(Snew);
% Update Alpha, Beta, and Delta
if Fnew<Alpha_score
Alpha_score=Fnew; % Update alpha
Alpha_pos=H(i,:);
NMRfitness(i)=Fnew;
NMRsolution(i,:)=H(i,:);
binsol(i,:)=Snew;
end
if Fnew>Alpha_score && Fnew<Beta_score
Beta_score=Fnew; % Update beta
Beta_pos=H(i,:);
end
if Fnew>Alpha_score && Fnew>Beta_score && Fnew<Delta_score
Delta_score=Fnew; % Update delta
Delta_pos=H(i,:);
end
end
a=2-iter*((2)/maxiter); % a decreases linearly fron 2 to 0
for i=(breeders+1):n,
for j=1:d,
r1=rand(); % r1 is a random number in [0,1]
r2=rand(); % r2 is a random number in [0,1]
A1=2*a*r1-a; % Equation (7)
C1=2*r2; % Equation (8)
D_alpha=abs(C1*Alpha_pos(j)-NMRsolution(i,j)); % Equation (10)-part 1
X1=Alpha_pos(j)-A1*D_alpha; % Equation (13)-part 1
r1=rand();
r2=rand();
A2=2*a*r1-a; % Equation (7)
C2=2*r2; % Equation (8)
D_beta=abs(C2*Beta_pos(j)-NMRsolution(i,j)); % Equation (11)-part 2
X2=Beta_pos(j)-A2*D_beta; % Equation (13)-part 2
r1=rand();
r2=rand();
A3=2*a*r1-a; % Equation (7)
C3=2*r2; % Equation (8)
D_delta=abs(C3*Delta_pos(j)-NMRsolution(i,j)); % Equation (12)-part 3
X3=Delta_pos(j)-A3*D_delta; % Equation (13)-part 3
H(i,:)=(X1+X2+X3)/3;% Equation (14)
end
end
%For Breeders
for z=1:breeders;
if rand>bp,
Flag4Ub=H(z,:)>Ub;
Flag4Lb=H(z,:)<Lb;
H(z,:)=(H(z,:).*(~(Flag4Ub+Flag4Lb)))+Ub.*Flag4Ub+Lb.*Flag4Lb;
% ############ Binary Conversion using Sigmoidal TF ############
Snew=BTF_selection(H(z,:),binsol(z,:),iter,maxiter,BTF,d);
% Evaluate new NMRsolutions
Fnew=CostFunction(Snew);
% If NMRfitness improves (better NMRsolutions found), update then
if (Fnew<=Alpha_score),
Alpha_score=Fnew;
Alpha_pos=H(z,:);
NMRfitness(z)=Fnew;
NMRsolution(z,:)=H(z,:);
binsol(z,:)=Snew;
end
% lambda=rand;
NMRneighbours=randperm(breeders);
% weight-6 **** Simulated Annealing Inertia weight *******
v_min=0.5;%0.25;
v_max=0.9; k=rand; p=0.95;
lambda=v_min+((v_max-v_min)*p^(k-1));
H(z,:)=(1-lambda).*(H(z,:))+(lambda*(Alpha_pos-NMRsolution(NMRneighbours(1),:)));
end
end
[fmin,I]=min(NMRfitness);
% NMRbest=NMRsolution(I,:);
binbest=binsol(I,:);
bb(iter)=fmin;
iter=iter+1;
end
end
🎉3 参考文献
文章中一些内容引自网络,会注明出处或引用为参考文献,难免有未尽之处,如有不妥,请随时联系删除。