> 文章列表 > 【群智能算法】一种改进的白鲸优化算法IBWO【Matlab代码#17】

【群智能算法】一种改进的白鲸优化算法IBWO【Matlab代码#17】

【群智能算法】一种改进的白鲸优化算法IBWO【Matlab代码#17】

文章目录

    • 1. 原始BWO算法
        • 1.1 勘探阶段
        • 1.2 开发阶段
        • 1.3 鲸落阶段
    • 2. 改进白鲸优化算法
        • 2.1 Tent映射种群初始化
        • 2.2 反向学习策略
    • 3. 部分代码展示
    • 4. 仿真结果展示
    • 5. 资源获取

1. 原始BWO算法

BWO算法的种群初始化和大多数智能算法相同,即随机产生搜索空间中的若干候选解,此处不再赘述。

1.1 勘探阶段

作者考虑白鲸的游动行为,将其设计为BWO算法的勘探阶段。白鲸可以在不同的姿势下进行社会性行为,例如两只白鲸可以以同步或者镜像的方式紧密地游泳。白鲸的位置更新公式为:
在这里插入图片描述

1.2 开发阶段

BWO算法开发阶段模拟的是白鲸的捕食行为。白鲸通过分享彼此的位置信息来捕食,因此考虑最佳个体和其他个体对位置更新的影响。在BWO的开发阶段,引入了Levy飞行策略来增强收敛性。此阶段的数学模型为:
在这里插入图片描述

1.3 鲸落阶段

白鲸要么迁徙到其他地方,要么发生鲸落坠入深海。为了保证种群大小不变,使用白鲸的当前位置和鲸落下坠的步长来建立位置更新公式:
在这里插入图片描述

2. 改进白鲸优化算法

2.1 Tent映射种群初始化

此为常用策略,此处不再赘述。

2.2 反向学习策略

反向学习是智能计算领域一种新技术,它同时评估原始解决方案和基于反向的解决方案,并选择更好的解决方案。
x ∈ [ a , b ] x\\in [a,b] x[a,b]之间的任意实数,则 x x x的基于反向学习的数如下:
在这里插入图片描述
可见,正向解和反向解是位于搜索空间的两侧,因此,引入此策略,可以扩大搜索区域,增强全局搜索能力。

3. 部分代码展示

%% 反向学习
% 输入
% X:种群个体 
% VarMin:下限  
% VarMax:上限
% 输出
% newpop: 变异后的种群个体function newpop=reverse_learning(X,lowerbound,upperbound,fobj)%边界处理
upperbound=upperbound.*ones(size(X,1),size(X,2));
lowerbound=lowerbound.*ones(size(X,1),size(X,2));%%  反向学习主代码
X_new=rand(size(X,1),size(X,2)).*(upperbound+lowerbound)-X;%处理超越边界方法为游离,并非顶值
for i=1:size(X_new,1)for j=1:size(X_new,2)if X_new(i,j)>upperbound(i,j)X_new(i,j)=(upperbound(i,j)-lowerbound(i,j))*rand()+lowerbound(i,j);elseif X_new(i,j)<lowerbound(i,j)X_new(i,j)=(upperbound(i,j)-lowerbound(i,j))*rand()+lowerbound(i,j);endend
endX_new=[X;X_new];
for i=1:size(X_new,1)   fitness(i)=fobj(X_new(i,:));
end
%按适应度从小到大排序
[~,index]=sort(fitness);
newpop=X_new(index(1:size(X,1)),:);end

4. 仿真结果展示

【群智能算法】一种改进的白鲸优化算法IBWO【Matlab代码#17】
【群智能算法】一种改进的白鲸优化算法IBWO【Matlab代码#17】
【群智能算法】一种改进的白鲸优化算法IBWO【Matlab代码#17】

5. 资源获取

A资源获取说明

免费资源