目录
0 引言
水母搜索算法(Jellyfish Search,JS)是由Jui-Sheng Chou在2020年基于水母搜索行为提出的群智能算法。该算法模拟水母搜索行为的包括它们的洋流跟随,它们在水母群中的运动(主动运动和被动运动),以及在这些运动之间切换的时间控制机制和群聚过程。
1 数学模型
JS算法模拟水母跟随洋流进行漂流及在漂流过程进行主动和被动的群体运动。
1)洋流位置更新:海洋中蕴含着大量的营养物质,这些物质会吸引水母。从而进行水母的位置更新。其数学模型如下:
洋流的方向是通过对每个水母到处于最佳位置的水母(适应度度量)所有向量进行平均:X*为目前位置适应度最佳位置,ec为决定吸引力的因素;μ是所有水母的平均位置
变形 设置 df = ecμ,同时假设水母在所有的维度都是符合正态分布,故数学模型变化为:df是目前水母的最佳位置与所有水母的平均位置之差。β为分布系数,基于数值实验中的灵敏度分析结果(得到β = 3。水母随洋流位置更新:X为水母位置
2)群体运动:在水母漂流群中,水母主要进行被动A型和主动B型进行全局搜索和局部开发问题寻优,更具时间控制机制来模拟,其数学模型如下:
式中t为当前迭代,Maxiter为最大迭代次数。
被动运动A型:A型运动是水母围绕其自身位置的运动进行全局搜索:
式中γ为水母灵敏度分析参数为0.1,ub和lb为问题维度边界
主动运动B型:B型可以看作水母个体根据食物数量(适应度)进行互相迁移,当水母i处食物数量大于水母j处,则水母j向水母i移动,反之亦然。该阶段为局部开发阶段。
2 优化方式
前篇对BP神经网络原理讲解(BP神经网络原理及matlab代码-CSDN博客),从BP神经网络原理讲解中可以发现预测值主要受权值和阈值调整修正完成。因此结合上述JS原理介绍,可以将BP神经网络权值和阈值作为水母种群位置,每一个种群位置对应BP神经网络的预测值,将这个预测值作为食物量适应度评估指标进行上述水母运动,从而更新更优的水母位置。
3 Matlab代码
3.1 伪代码
3.2 JS主函数代码
%% JS参数
% MaxIt 最大迭代
% popi 种群位置
% popCost 种群位置对应适应度
% nPop 种群大小
% VarMin,VarMax 问题维度边界范围
% SYD 适应度函数
% simplebounds 边界检测函数
%JS主函数代码
for it=1:MaxIt
Meanvl=mean(popi,1);
[value,index]=sort(popCost);
BestSol=popi(index(1),:);
BestCost=popCost(index(1));
for i=1:nPop
Ar=(1-it*((1)/MaxIt))*(2*rand-1);% 时间控制机制
if abs(Ar)>=0.5
beta = 3;
% 洋流运动水母位置更新
newsol = popi(i,:)+ rand(VarSize).*(BestSol - beta*rand*Meanvl);%Eq(11)
newsol = simplebounds(newsol,VarMin,VarMax);
newsolCost = SYD(newsol,net);
net.trainParam.showWindow = 0;
if newsolCost<popCost(i)
popi(i,:) = newsol;
popCost(i)=newsolCost;
if popCost(i) < BestCost
BestCost=popCost(i);
BestSol = popi(i,:);
end
end
else
% 在水母群内部移动
if rand<=(1-Ar)
% 水母的方向
j=i;
while j==i
j=randperm(nPop,1);
end
Step = popi(i,:) - popi(j,:);%Eq(15)
if popCost(j) < popCost(i)
Step = -Step; %Eq(15)
end
% 主动运动(B 型)的位置
newsol = popi(i,:) + rand(VarSize).*Step;%Eq(16)
else
% 被动运动(A 型)的位置
newsol = popi(i,:) + 0.1*(VarMax-VarMin)*rand; %Eq(12)
end
newsol = simplebounds(newsol, VarMin,VarMax);
newsolCost = SYD(newsol,net);
net.trainParam.showWindow = 0;
if newsolCost<popCost(i)
popi(i,:) = newsol;
popCost(i)=newsolCost;
if popCost(i) < BestCost
BestCost=popCost(i);
BestSol = popi(i,:);
end
end
end
end
fbestvl(it)=BestCost;
end
u=BestSol;
fval=fbestvl(it);
end
3.2 JS-BP
1)单输出回归预测模型:单输出回归模型:水母搜索算法优化BP神经网络模型(JS-BP)
2)多输出回归预测模型:私信
3)分类模型:私信
4)时间序列:私信
4 视频讲解
B站搜索:‘ 不想学习的陈成 ’
标签:位置,搜索算法,JS,神经网络,水母,BP,适应度 From: https://blog.csdn.net/m0_74389201/article/details/142083880