BWO白鲸优化算法
白鲸算法
白鲸算法(BWO)是一种新的元启发式算法,是一种基于群体的算法,其灵感来自于白鲸的行为,包括游泳,猎物和鲸落。在BWO的数学模型中构建了勘探,开发和鲸落阶段,并在开发阶段利用Levy飞行函数来提高BWO的收敛能力。

勘探阶段
由于BWO基于种群的机制,将白鲸作为搜索代理,每条白鲸都是一个候选解,在优化过程中不断个更新。搜索代理位置的矩阵建模为:

n代表白鲸种群大小,d是变量的维度。对于所有的白鲸,它们的适应度如下:

BWO算法可以根据平衡因子Bf从勘探过渡到开采,其建模为:

T代表当前迭代次数,Tmax是最大迭代次数,而B0是每一代(0,1)的随机数。当Bf>0.5时,白鲸进入勘探阶段,否则白鲸进入开发阶段。随着迭代次数的增加,Bf的波动幅度逐渐显著,从(0,1)到(0,0.5)。
BWO的勘探阶段是从白鲸游泳行为获得的灵感。白鲸可以在不同的姿势下进行社会性行为,如两只白鲸以同步或镜像的方式紧密地游在一起。因此,搜索代理的位置由白鲸的配对游动决定,白鲸的位置更新如下:

Xi,j(T+1)是第 i 个白鲸在第 j 维度的新位置,pj是d维度的一个随机数,Xi,PjT是第i个白鲸在 pj 维度上的位置,Xi,PjT 和 Xr,P1T是第i个和第r个白鲸的当前位置,r 是随机选择的一个白鲸,r1 和 r2 分别是(0,1)的两个随机数,sin(2πr2)和cos(2πr2)表示镜像白鲸的鳍朝向水面。
开发阶段
开发阶段是模范白鲸捕猎行为,白鲸可以根据附近白鲸的位置合作觅食和移动。因此,白鲸可以根据彼此共享的信息进行捕猎,Levy飞行函数可以提高BWO的收敛性,建模如下:

XbestT是白鲸当前最好最好的位置,C1 = 2r4(1 - T /Tmax)是随机跳跃强度,测试Levy飞行函数的强度,LF是Levy飞行函数,计算公式如下:

u和v是正态分布的随机数,beta是一个默认的常数1.5。
鲸落阶段
一鲸落,万物生。为了在每一代中模仿鲸落,随机在种群中选择一个个体进行鲸落行为。这个数学模型为:

Xstep是鲸落的步长,建模为:

C2是步长系数,与鲸落的概率和种群大小有关,C2=2Wf * n,ub 和 lb分别是上下边界变量。
Wf = 0.1 - 0.05T / Tmax当鲸落的概率从最初迭代的0.1下降到最后迭代的0.05,说明在优化过程中,当白鲸离食物源越近,白鲸的危险就越小。
BWO流程

- 初始化:初始化种群大小和最大迭代书
- 更新勘探和开发阶段:当Bf > 0.5 时,白鲸进入勘探阶段,反之,白鲸进入开发阶段,然后计算白鲸的新的位置适应度值并且进行排序找到优化结果。
- 更新鲸落阶段:根据Wf的值来选择个体
- 终止条件:达到最大迭代数
BWO和WOA的区别
- WOA的捕猎行为是模仿座头鲸螺旋运动,而BWO是模仿白鲸,没有螺旋运动的情况下,根据自己的位置,食物解和其他白鲸更新位置。
- WOA没有鲸落阶段,BWO有鲸落阶段避免局部最优。
- WOA没有Levy飞行函数机制,而在BWO中引入了Levy飞行函数。
BWO的伪代码如下,完整代码可联系我(免费):

BWO白鲸优化算法的更多相关文章
- [Algorithm] 群体智能优化算法之粒子群优化算法
同进化算法(见博客<[Evolutionary Algorithm] 进化算法简介>,进化算法是受生物进化机制启发而产生的一系列算法)和人工神经网络算法(Neural Networks,简 ...
- 基于网格的分割线优化算法(Level Set)
本文介绍一种网格分割线的优化算法,该方法能够找到网格上更精确.更光滑的分割位置,并且分割线能够自由地合并和分裂,下面介绍算法的具体原理和过程. 曲面上的曲线可以由水平集(level set)形式表示, ...
- paper 8:支持向量机系列五:Numerical Optimization —— 简要介绍求解求解 SVM 的数值优化算法。
作为支持向量机系列的基本篇的最后一篇文章,我在这里打算简单地介绍一下用于优化 dual 问题的 Sequential Minimal Optimization (SMO) 方法.确确实实只是简单介绍一 ...
- MOPSO 多目标例子群优化算法
近年来,基于启发式的多目标优化技术得到了很大的发展,研究表明该技术比经典方法更实用和高效.有代表性的多目标优化算法主要有NSGA.NSGA-II.SPEA.SPEA2.PAES和PESA等.粒子群优化 ...
- SMO优化算法(Sequential minimal optimization)
原文:http://www.cnblogs.com/jerrylead/archive/2011/03/18/1988419.html SMO算法由Microsoft Research的John C. ...
- 优化算法-BFGS
优化算法-BFGS BGFS是一种准牛顿算法, 所谓的"准"是指牛顿算法会使用Hessian矩阵来进行优化, 但是直接计算Hessian矩阵比较麻烦, 所以很多算法会使用近似的He ...
- NYOJ-63 小猴子下落(二叉树及优化算法详解)
小猴子下落 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 有一颗二叉树,最大深度为D,且所有叶子的深度都相同.所有结点从左到右从上到下的编号为1,2,3,··· ...
- DeepLearning.ai学习笔记(二)改善深层神经网络:超参数调试、正则化以及优化--Week2优化算法
1. Mini-batch梯度下降法 介绍 假设我们的数据量非常多,达到了500万以上,那么此时如果按照传统的梯度下降算法,那么训练模型所花费的时间将非常巨大,所以我们对数据做如下处理: 如图所示,我 ...
- 常见优化算法统一框架下的实现:最速下降法,partan加速的最速下降法,共轭梯度法,牛顿法,拟牛顿法,黄金分割法,二次插值法
常见优化算法实现 这里实现的主要算法有: 一维搜索方法: 黄金分割法 二次差值法 多维搜索算法 最速下降法 partan加速的最速下降法 共轭梯度法 牛顿法 拟牛顿法 使用函数表示一个用于优化的目标, ...
- deeplearning.ai 改善深层神经网络 week2 优化算法 听课笔记
这一周的主题是优化算法. 1. Mini-batch: 上一门课讨论的向量化的目的是去掉for循环加速优化计算,X = [x(1) x(2) x(3) ... x(m)],X的每一个列向量x(i)是 ...
随机推荐
- JS Leetcode 80. 删除有序数组中的重复项 II题解,常规解法与快慢双指针做法
壹 ❀ 引 今天的题目来自LeetCode80. 删除有序数组中的重复项 II,是一道难度中等,但实际挺简单的一道题,题目描述如下: 给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使每 ...
- win32 - 按文件的创建日期排序
因项目中使用文件的创建日期来命名文件,所以不用额外查找文件的创建日期再进行排序,记录一下 bool AscendingSortByCreationTime(const std::wstring& ...
- win32-WH_KEYBOARD的使用
我们使用WH_KEYBOARD来禁用记事本的ALT的按键 .cpp #include <Windows.h> #include <stdio.h> #include <t ...
- pikachu sql inject delete 注入
留言板输入几条信息 出现删除按钮,点他 通过burpsuite拦截请求,请求报文如下 GET /vul/sqli/sqli_del.php?id=57 HTTP/1.1 Host: 192.168.1 ...
- WSL2镜像文件压缩
WSL2的镜像文件(*.vhdx)支持自动扩容,但是一般不会自动缩容.一旦某次存放过大文件以后,即使后续删除,镜像文件体积仍然不会缩小,导致大量磁盘空间浪费.因此,可以定期对镜像文件进行手动压缩. 镜 ...
- django学习第三天---django模板渲染,过滤器,反向循环 reversed,自定义标签和过滤器,模板继承
django模板渲染 模板渲染,模板指的就是html文件,渲染指的就是字符串替换,将模板中的特殊符号替换成相关数据 基本语法 {{ 变量 }} {% 逻辑 %} 变量使用 示例 Views.py文件 ...
- virtualenvwrapper管理虚拟环境
安装 pip install virtualenvwrapper-win 基本使用 1.创建虚拟环境 mkvirtualenv my_env 使用这个命令,就会在你c盘的当前用户下创建一个Env的文件 ...
- 【Azure 应用服务】在Azure App Service for Windows 中部署Java/NodeJS/Python项目时,web.config的配置模板内容
问题描述 在Azure App Service for Windows 中部署web项目时候,需要在wwwroot下设置web.config,对于不同语言的项目,web.config文件中的httpP ...
- 手把手教你python数据处理项目——探索ebay汽车销售数据
探索Ebay汽车销售数据 一.实验目的 1. 熟悉清理数据的流程: 2. 分析Ebay二手车销售数据: 3. 了解jupyter notebook为pandas提供的一些独特特性. 二.实验开发环 ...
- NebulaGraph v3.3.0 发布:支持子图过滤、和大量性能优化
NebulaGraph 3.3.0 支持了 GET SUBGRAPH 和 GetNeighbors 的点过滤.引入了大量性能优化,同时,开始对无 tag 顶点的支持默认关闭. 优化 优化了 k-hop ...