鲸鱼优化算法(WOA)

1.前言:

一种元启发式优化算法,模拟座头鲸狩猎行为的元启发式优化算法。目前的工作与其他群优化算法相比的主要区别在于,采用随机或最佳搜索代理来模拟捕猎行为,并使用螺旋来模拟座头鲸的泡泡网攻击机制。该算法具有机制简单、参数少、寻优能力强等优点,在经济调度、最优控制、光伏系统、图像分割等方面得到广泛的应用。

2.算法基本原理:

座头鲸有特殊的捕猎方法,这种觅食行为被称为泡泡网觅食法;标准 WOA 模拟了座头鲸特有的搜索方法和围捕机制,主要包括:围捕猎物、气泡网捕食、搜索猎物三个重要阶段。WOA 中每个座头鲸的位置代表一个潜在解,通过在解空间中不断更新鲸鱼的位置,最终获得全局最优解。

(1)围猎物(Encircling prey)

鲸鱼的搜索范围是全局解空间,需要先确定猎物的位置以便包围。由于最优设计在搜索速度中的位置不是先验已知的,因此WOA算法假定当前的最佳候选解是目标猎物或接近最优解。在定义了最佳搜索代理之后,其他搜索代理将尝试向最佳搜索代理更新它们的位置。这一行为由以下方程

表示:

t表示当前迭代次数

A和C是系数向量

X*(t)是目前得到的最佳解的位置向量

X(t)向量是位置向量,||是绝对值,·是逐元素相乘

如果存在更好的解决方案,那么应该在每次迭代中更新X*(t)

其中向量A和C的计算方式如下

在整个迭代过程中 a 由2线性降到0; r1 和 r2 是 [0,1] 中的随机向量。

(2)气泡网捕食:

座头鲸捕食主要有两个机制:包围捕食和气泡网捕食。采用气泡网捕食时,座头鲸与猎物间的位置更新用对数螺旋方程表达,如式(2-1)。

(2-1)式中:

D' ——当前搜索个体与当前最优解的距离;

B  ——螺旋形状参数;

l  ——值域为[-1,1]均匀分布的随机数。

由于靠近猎物过程中有两种捕食行为,因此 WOA 根据概率 p 来选择气泡网捕食或者收缩包围,位置更新公式如(2-2)。

(2-2)式中:

p ——捕食机制概率,值域为[0,1]的随机数。

随着迭代次数 t 的增加,参数 A 和收敛因子 a 逐渐减小,若|A| < 1,则各鲸鱼逐渐包围当前最优解,在 WOA 中属于局部寻优阶段。

(3)搜索猎物

为保证所有鲸鱼能在解空间中充分搜索,WOA 根据鲸鱼彼此之间的距离来更新位置,达到随机搜索的目的。因此,当|A| ≥ 1|时,搜索个体会游向随机鲸。式(3-1)

(3-1)式中: 

D''——当前搜索个体与随机个体的距离。

Xrand(t)——当前随机个体的位置

3.算法基本流程

标准 WOA 主要依靠系数向量 A 选择搜索猎物的路径,并利用概率 p 决定最终捕食机制。标准 WOA 的计算流程如图 1-2,具体如下:

步骤 1:设置鲸鱼数量 N 和算法的最大迭代次数 tmax,初始化位置信息;

步骤 2:计算每条鲸鱼的适应度,找到当前最优鲸鱼的位置并保留,即  ;

步骤 3:计算参数 a、p 和系数向量 A、C。判断概率 p 是否小于 50%,是则直接转入步骤 4,否则采用气泡网捕食机制:利用式(2-1)进行位置更新;

步骤 4:判断系数向量 A 的绝对值是否小于 1,是则包围猎物:按式(1-2)更新位置;否则全局随机搜索猎物:按式(3-1)更新位置;

步骤 5:位置更新结束,计算每条鲸鱼的适应度,并与先前保留的最优鲸鱼的位置比较,若优于,则利用新的最优解替换;

 步骤 6:判断当前计算是否达到最大迭代次数,如果是,则获得最优解,计算结束,否则进入下一次迭代,并返回步骤 3。

WOA算法首先随机初始化一组解,在每次迭代中,搜索代理根据随机选择的搜索代理或到目前为止获得的最优解更新它们的位置。将 a  参数由 2 随迭代次数降为 0,从而由探索逐步到利用。当 |A|>1 时选择随机搜索代理,|A|< 1时选择最优解更新搜索代理位置。根据 p 的值,WOA可以在螺旋运动和圆环运动之间进行切换。最后,通过满足终止准则来终止WOA算法。

3.代码

main函数:

%参数初始化,初始时主要设置代理数量和最大迭代次数即可,其他算法相关的参数因为和当前迭代次数相关,需要在迭代中设置。
clc;clear;
dim=2;%变量的维数
SearchAgents_no=30; % 搜索代理数量,种群中个体个数
Max_iteration=500; % 最大迭代次数
ub=15;%上限
lb=-15;%下限
%种群初始化。随机初始化所有代理各个维度上的位置值,需要保证在取值范围内。
Positions=rand(SearchAgents_no,dim).*(ub-lb)+lb;
Leader_score = fobj(Positions(1,:));
for t=1:Max_iterationfit(t)=Leader_score;%(评估种群中每个代理的目标值,如有某个代理由于当前最优解,则将其设为最优解。)for i=1:size(Positions,1)% 计算每个代理的目标值fitness=fobj(Positions(i,:));% 更新最优解if fitness < Leader_score % 如果是最大化问题,这里就是">"Leader_score=fitness; Leader_pos=Positions(i,:);endend%(设置和迭代次数相关的算法参数。)a=2-t*((2)/Max_iteration); % 等式(3)中a随迭代次数从2线性下降至0 %a2从-1线性下降至-2,计算l时会用到a2=-1+t*((-1)/Max_iteration);% Update the Position of search agents(对每个代理的每一维度进行位置更新)for i=1:size(Positions,1)r1=rand(); % r1为[0,1]之间的随机数r2=rand(); % r2为[0,1]之间的随机数A=2*a*r1-a;  % 等式(3)C=2*r2;      % 等式(4)b=1;               %  等式(5)中的常数bl=(a2-1)*rand+1;   %  等式(5)中的随机数lp = rand();        %  等式(6)中的概率pfor j=1:size(Positions,2)if p<0.5   if abs(A)>=1rand_leader_index = floor(SearchAgents_no*rand()+1);X_rand = Positions(rand_leader_index, :);D_X_rand=abs(C*X_rand(j)-Positions(i,j)); % 等式(7)Positions(i,j)=X_rand(j)-A*D_X_rand;      % 等式(8)elseif abs(A)<1D_Leader=abs(C*Leader_pos(j)-Positions(i,j)); % 等式(1)Positions(i,j)=Leader_pos(j)-A*D_Leader;      % 等式(2)endelseif p>=0.5distance2Leader=abs(Leader_pos(j)-Positions(i,j));% 等式(5)Positions(i,j)=distance2Leader*exp(b.*l).*cos(l.*2*pi)+Leader_pos(j);endendendend
k=1:1:500;
plot(k,fit,'r');

目标函数:

function y=fobj(x)y=2*x(1)^2+x(2)^2-x(1)*x(2)-10*x(1)-4*x(2)+60;end

参考文献与博客(代码参考松间沙路hba博主的,写得十分好,谢谢大佬!):

基于改进鲸鱼算法的风-光-重力储能系统优化配置研究_柴源       群体智能优化算法之鲸鱼优化算法(Whale Optimization Algorithm,WOA)_松间沙路的博客-CSDN博客_鲸鱼优化

鲸鱼优化算法(WOA)(学习)相关推荐

  1. 鲸鱼优化算法WOA求解旅行商TSP优化问题(2022.6.2)

    鲸鱼优化算法WOA求解旅行商TSP优化问题(2022.6.2) 引言 1.鲸鱼优化算法WOA 1.1 WOA算法原理介绍 1.1.1 包围猎物 1.1.2 气泡网式攻击猎物(开发阶段) 1.1.3 寻 ...

  2. 鲸鱼优化算法(WOA)及其优秀变体(含MATLAB代码)

    先做一个声明:文章是由我的个人公众号中的推送直接复制粘贴而来,因此对智能优化算法感兴趣的朋友,可关注我的个人公众号:启发式算法讨论.我会不定期在公众号里分享不同的智能优化算法,经典的,或者是近几年提出 ...

  3. 鲸鱼优化算法(WOA)

    鲸鱼优化算法是Mirjalili在2016年提出的一种优化算法,现已经得到了广泛应用. 以文献中的F8为例 部分代码 代码获取 https://mianbaoduo.com/o/bread/YpeXk ...

  4. 群体智能优化算法之鲸鱼优化算法(Whale Optimization Algorithm,WOA)

    获取更多资讯,赶快关注上面的公众号吧! 文章目录 鲸鱼优化算法(Whale Optimization Algorithm,WOA) 1.1 灵感 1.2 数学建模和优化算法 1.2.1 包围捕食(En ...

  5. 耦合中心游移和双权重因子的鲸鱼优化算法

    文章目录 一.理论基础 1.鲸鱼优化算法(WOA) 2.耦合中心游移和双权重因子的鲸鱼优化算法(C-A-WWOA) 2.1 耦合中心游移初始化及边界邻域更新策略(C-WOA) 2.1.1 耦合中心游移 ...

  6. 鲸鱼优化算法优化BP神经网络回归预测的算法设计-附代码

    鲸鱼优化算法WOA优化BP神经网络回归预测模型以及MATLAB代码实现 文章目录 鲸鱼优化算法WOA优化BP神经网络回归预测模型以及MATLAB代码实现 1. 算法描述 2. 鲸鱼优化算法优化BP神经 ...

  7. 基于鲸鱼优化算法的Simulink仿真模型参数优化

    目录 1.鲸鱼优化算法(WOA) 1.1算法原理 1.1.1 包围猎物 1.1.2 狩猎行为 1.1.3 搜索猎物 1.4 算法流程 2.如何用matlab .m文件脚本调用simulink模型并传入 ...

  8. 基于自适应权重和Levy飞行的改进鲸鱼优化算法

    文章目录 一.理论基础 1.基本鲸鱼优化算法 2.改进的鲸鱼优化算法 (1)自适应权重方法 (2)Levy飞行策略 (3)改进WOA的算法流程图 二.实验测试及分析 三.参考文献 一.理论基础 1.基 ...

  9. 基于混沌的正余弦鲸鱼优化算法-附代码

    基于混沌的正余弦鲸鱼优化算法 文章目录 基于混沌的正余弦鲸鱼优化算法 1.鲸鱼优化算法 2. 改进鲸鱼优化算法 2.1 混沌初始化种群和参数优化 2.2 正余弦鲸鱼优化算法 2.3 混沌自适应的惯性权 ...

  10. 基于自适应调整权重和搜索策略的鲸鱼优化算法-附代码

    基于自适应调整权重和搜索策略的鲸鱼优化算法 文章目录 基于自适应调整权重和搜索策略的鲸鱼优化算法 1.鲸鱼优化算法 2. 改进鲸鱼优化算法 2.1 自适应调整权重 2.2 自适应调整搜索策略 3.实验 ...

最新文章

  1. java 编辑我的世界_Editing Java版1.13 (section)
  2. kali安装步骤失败 选择并安装软件_Pycharm2019.3.3软件安装步骤
  3. OAF_开发系列17_实现OAF数组应用Vector / Hashmap / Hashtable / Arraylist(案例)
  4. C# 窗体间传值(使用委托与自定义事件)
  5. Windows之在终端打开当前目录的命令
  6. java map集合 事务控制_对象回收过程?线程池执行过程? map原理?集合类关系?synchronized 和 volatile ? 同一个类的方法事务传播控制还有作用吗?java 锁...
  7. 第二十七篇、使用MVVM布局页面
  8. java输入方法有哪些内容_java 键盘输入多种方法
  9. CAD手机看图:CAD图纸中添加的批注发送给别人后批注却消失了?
  10. 智慧校园家校综合信息化管理系统平台
  11. Win10系统更新完之后,电脑短时间内自动睡眠问题:解决.
  12. 植物研究最新进展(2021年11月)
  13. Java基础——对象和类1(面向对象基本概念)
  14. 朴素贝叶斯凉鞋问题推导
  15. linux下微生物软件,微生物多样性专题 | 扩增子测序分析实战(三)软件安装
  16. 嵌入式开发工具集合及资料(转载)
  17. 京东2019校园招聘笔试+面试(算法工程师岗位)
  18. Android 学习第10课,Android的布局
  19. 1135 Is It A Red-Black Tree (30分)
  20. 玩转软路由 篇五:ROS和OpenWRT的软路由方案中IPTV融合教程

热门文章

  1. powerdesigner pdm导出sql操作
  2. 使用分光光度计有哪些注意事项?简易型仪器和中档型仪器的区别看这里
  3. 苹果OFFICE 2011MAC打开WORD字体乱码解决方法
  4. 你还不知道怎么学习软件测试吗?看完这篇文章,你就明白了!
  5. 魔鬼在细节,理解Java并发底层之AQS实现
  6. ViewPager引导页,Xlv网络获取,频道管理
  7. Java操作长方形图片补全不失真成正方形图片
  8. Win10右下角图标间距突然变大怎么办
  9. APP注册发送验证码
  10. 闫燕飞:Kafka的高性能揭秘及优化