目录
0 引言
狐狸算法(Fox optimizer,FOX)是由Hardi Mohammed在2023年提出群智能算法,该算法模拟了自然界中狐狸在捕猎时的觅食。FOX基于测量狐狸和猎物之间的距离来执行有效的跳跃,狐狸模仿跳跃技术潜入雪中狩猎,同时估算与猎物的距离,基于跳跃技术实现捕食。
1 数学模型
FOX算法数学模型主要包括俩个方面:开发和探索。开发阶段是狐狸通过声音感知和猎物距离进行调整位置,探索阶段是狐狸进行随机行走搜索猎物。其数学模型如下:
1)开发阶段:该阶段主要分为俩个部分,随机定义p变量在0到1区间,该变量大于0.18时,则需要狐狸找到新的猎物位置。为了确定这个位置,FOX算法计算狐狸了猎物之间距离和跳跃度,具体数学模型见下式:
、
式(1)为声音距离的传播,Sp_S为声音传播速度,见式(2),Time_S_Tit为所有传播时间,为随机生成向量;BestPosition为狐狸最好位置向量;式(3)为模拟物理学中传感器和物体之间距离,本文表示狐狸和猎物之间距离;式(4)为狐狸确定与猎物之间距离后,跳跃捕食的跳跃度,t为传播时间的总和tt的一半,dimension为问题维度;式(5)为狐狸捕猎后位置更新,c1为方向向量,为0.18。
当p小于0.18时,表示狐狸在上述基础,往相反方向(即东北方向)跳跃捕食,从而更新自身位置,其式如下
式中c2为0.82,为东北方向向量。
2)探索阶段:该阶段狐狸没有跳跃能力,其采用随机行走策略来实现对区域内猎物进行搜索,跳出局部收敛,该阶段使用最小时间变量MinT和变量a来控制其向最佳位置进行随机行走,其数学模型见下式:
式中(7)最小时间变量,it为当前迭代,MAXit为最大迭代,BestXit为迄今为止被发现最好位置狐狸位置向量。
2 优化方式
前篇对支持向量机(支持向量机原理及matlab代码讲解(分类SVM和回归SVR)-CSDN博客)原理讲解,从支持向量机模型运算过程中,可以了解到模型高维映射核函数参数g和处罚因子c对模型预测结果影响最为重要。因此结合上述FOX原理介绍,可以将支持向量机参数c和g作为狐狸种群位置,每一个种群位置对应支持向量机的预测值,将这个预测值作为适应度狐狸算法的开发和勘探策略,进行寻优出最佳位置向量。
3 Maltab代码
3.1 伪代码
3.2 FOX主函数代码
%% 参数
% Max_iter 最大迭代次数
% X 狐狸种群向量
% dim 问题维度
% ub,lb 问题维度边界
% SYD 适应度函数
% fitness 狐狸种群对应适应度
% Best_score 最佳狐狸种群位置
% c1 与c2方向相反
% c2 东北方向
%
%% FOX主函数
while l<Max_iter
for i=1:size(X,1)
% 返回超出空间边界的种群位置
Flag4ub=X(i,:)>ub;
Flag4lb=X(i,:)<lb;
X(i,:)=(X(i,:).*(~(Flag4ub+Flag4lb)))+ub.*Flag4ub+lb.*Flag4lb;
fitness=SYD(X(i,:),net);
net.trainParam.showWindow = 0;
if fitness<Best_score
Best_score=fitness;
Best_pos=X(i,:);
end
end
a=2*(1-(l/Max_iter)); %Eq(8)
Jump=0;
dir=rand;
for i=1:size(X,1)
r=rand;
p=rand;
if r>=0.5
if p>0.18
Time(i,:)=rand(1,dim);
sps=Best_pos/Time(i,:);%声音的速度 Eq(2)
Distance_S_Travel(i,:)=sps* Time(i,:);%声音与红狐的距离 Eq(1)
Distance_Fox_Rat(i,:)=0.5* Distance_S_Travel(i,:);% %传 感器和物体之间的距离 Eq(3)
tt=sum(Time(i,:))/dim;%时间转移Eq(7)
t=tt/2;%平均时间
Jump=0.5*9.81* t^2;%跳跃高度Eq(4)
X(i,:)=Distance_Fox_Rat(i,:).*Jump * c1;%新位置Eq(5)
elseif p<=0.18
Time(i,:)=rand(1,dim);
sps=Best_pos/Time(i,:);
Distance_S_Travel(i,:)=sps* Time(i,:);
Distance_Fox_Rat(i,:)=0.5* Distance_S_Travel(i,:);
tt=sum(Time(i,:))/dim;
t=tt/2;
Jump=0.5*9.81* t^2;
X(i,:)=Distance_Fox_Rat(i,:).*Jump * c2; %Eq(6)
end
if MinT>tt
MinT=tt;
end
elseif r<0.5
%随机行走
ans(i,:)=Best_pos+randn(1,dim).*(MinT*a);% 新位置
X(i,:)=ans(i,:);
end
end
l=l+1;
Convergence_curve(l)=Best_score;
end
3.3 FOX-SVM
1)回归模型:私信
3)分类模型:分类模型:狐狸算法优化支持向量机模型(FOX-SVM)
4 视频讲解
B站搜索:‘ 不想学习的陈成 ’
标签:猎物,狐狸,位置,FOX,Matlab,跳跃,向量 From: https://blog.csdn.net/m0_74389201/article/details/141607400