白鲸优化算法学习笔记
白鲸优化算法学习笔记
1. 引言
白鲸优化算法(Whale Optimization Algorithm,简称WOA)是一种基于自然界中的白鲸行为而发展起来的启发式优化算法。该算法模拟了白鲸群体的寻食行为,可以用于解决各种优化问题。本篇博客将详细介绍白鲸优化算法的原理、步骤和应用,并提供相关的代码示例。
2. 算法原理
白鲸优化算法受到了白鲸群体的行为启发。在自然界中,白鲸通过合作猎捕策略来获取食物。这种策略包括三个关键行为:搜寻(Search),聚集(Encircle),攻击(Strike)。算法通过模拟这三个行为来进行优化。
2.1 搜寻行为
搜寻行为是白鲸在寻找食物时的行为。在算法中,每个个体代表一个潜在的解,并根据目标函数的评估结果进行排序。搜寻行为通过调整个体的位置来改善解的质量。
2.2 聚集行为
聚集行为是白鲸在寻找食物时形成群体的行为。算法中,通过选择一部分个体形成新的聚集群体,并通过白鲸的迁徙行为来更新解。
2.3 攻击行为
攻击行为是白鲸在聚集后选择最优解进行攻击的行为。算法中,将根据一定的概率选择最优解,并通过随机变异操作来生成新的个体。
3. 算法步骤
白鲸优化算法包括以下步骤:
- 初始化种群:随机生成一定数量的个体作为初始解。
- 计算适应度:根据目标函数计算每个个体的适应度值。
- 更新最优解:记录当前最优解及其适应度值。
- 更新位置:根据白鲸的行为模拟更新个体的位置。
- 更新适应度:根据位置更新各个个体的适应度值。
- 判断终止条件:如果达到设定的终止条件,则跳出循环;否则,返回步骤4。
- 输出结果:输出最优解及其适应度值。
4. 算法应用
白鲸优化算法可以应用于多个优化问题,如函数优化、参数优化、组合优化等。下面以函数优化为例进行说明。
4.1 函数优化
对于给定的目标函数,白鲸优化算法可以寻找到全局最优解或接近最优解的解。通过迭代更新位置和适应度,算法可以逐步收敛到最优解。
4.2 参数优化
白鲸优化算法还可以用于参数优化问题。例如,在神经网络训练过程中,可以使用该算法来优化超参数的选择,如学习率、正则化参数等。
4.3 组合优化
白鲸优化算法在组合优化问题中也有广泛的应用。例如,在旅行商问题中,可以利用该算法求解最短路径。
5. 代码示例
以下是Python实现的简单白鲸优化算法的代码示例:
import random
import math# 定义适应度函数,根据具体问题定义
def fitness_func(x):return pow(x, 2)def WOA(max_iter, pop_size, dim, lb, ub):# 初始化种群pop = []for i in range(pop_size):x = []for j in range(dim):x.append(random.uniform(lb, ub))pop.append(x)# 遍历迭代次数for t in range(max_iter):# 计算a,线性递减a = 2 - t * (2 / max_iter)# 遍历每个个体for i in range(pop_size):# 计算A、C、lA = 2 * a * random.random() - aC = 2 * random.random()l = random.uniform(-1, 1)# 找到三个不同的个体r1 = random.randint(0, pop_size - 1)r2 = random.randint(0, pop_size - 1)r3 = random.randint(0, pop_size - 1)while r1 == i or r2 == i or r3 == i or r1 == r2 or r1 == r3 or r2 == r3:r1 = random.randint(0, pop_size - 1)r2 = random.randint(0, pop_size - 1)r3 = random.randint(0, pop_size - 1)# 更新个体位置for j in range(dim):if random.random() < 0.5:if abs(A) >= 1:rand_leader_index = math.floor(pop_size * random.random())x_rand = pop[rand_leader_index]D_X_rand = [l * abs(x_rand[j] - pop[rand_leader_index_2][j]) for rand_leader_index_2 in range(pop_size)]X1 = pop[i][j]X2 = x_rand[j]X3 = pop[r1][j]X4 = pop[r2][j]X5 = pop[r3][j]pop[i][j] = X1 + A * D_X_rand[rand_leader_index] - C * abs(X2 - X3) + C * abs(X4 - X5)else:X1 = pop[i][j]X2 = pop[r1][j]X3 = pop[r2][j]X4 = pop[r3][j]pop[i][j] = X1 + A * abs(X2 - X1) - C * abs(X3 - X4)else:X1 = pop[i][j]X2 = pop[r1][j]pop[i][j] = X1 + random.random() * (X2 - X1)# 限制个体位置不越界pop[i] = [min(max(x, lb), ub) for x in pop[i]]# 计算种群适应度与最优个体fitness = [fitness_func(x) for x in pop]best_idx = fitness.index(min(fitness))best_sol = pop[best_idx]# 输出迭代信息print("Iteration {}: Best fitness: {:.3f}".format(t + 1, fitness_func(best_sol)))return best_sol# 测试
best_sol = WOA(max_iter=50, pop_size=10, dim=1, lb=-10, ub=10)
print("Best solution: ", best_sol)
print("Best fitness: {:.3f}".format(fitness_func(best_sol)))
代码实现中的适应度函数为 x 2 x^2 x2,算法中的参数 a a a、 A A A、 C C C、 l l l分别是根据原文中的公式定义的。代码输出每次迭代的最优适应度值,最后输出求得的最优解和最优适应度值。
结论
本篇博客介绍了白鲸优化算法的原理、步骤和应用。通过模拟白鲸寻食行为,该算法可以用于解决各种优化问题。希望这篇学习笔记对你理解和应用白鲸优化算法有所帮助!
白鲸优化算法学习笔记相关推荐
- 单目标应用:白鲸优化算法(Beluga whale optimization,BWO)优化双向长短时记忆BiLSTM的权值和阈值(提供MATLAB代码)
一.算法简介 白鲸优化算法(Beluga whale optimization,BWO)由Changting Zhong等人于2022年提出,该算法模拟了白鲸游泳,觅食和"鲸鱼坠落" ...
- 智能优化算法:白鲸优化算法-附代码
智能优化算法:白鲸优化算法 摘要:白鲸优化算法([Beluga whale optimization,BWO)是由是由 Changting Zhong 等于2022 年提出的一种群体智能优化算法.其灵 ...
- 基于白鲸优化算法的函数寻优算法
文章目录 一.理论基础 1.白鲸优化算法 (1)探索阶段 (2)开发阶段 (3)鲸落 2.BWO算法流程图 二.仿真实验与结果分析 三.参考文献 一.理论基础 1.白鲸优化算法 文献[1]从白鲸的行为 ...
- 【智能优化算法-白鲸优化算法】基于白鲸优化算法求解单目标优化问题附matlab代码
1 内容介绍 白鲸优化算法(Beluga whale optimization,BWO)由Changting Zhong等人于2022年提出,该算法模拟了白鲸游泳,觅食和"鲸鱼坠落" ...
- 白鲸优化算法(Beluga whale optimization,BWO)Python实现
白鲸优化算法Python实现 Python实现BWO Python实现BWO import numpy as np import math from copy import deepcopy impo ...
- 白鲸优化算法(Beluga whale optimization,BWO)
白鲸优化算法(Beluga whale optimization,BWO) 一.算法灵感 二.算法介绍 2.1 初始化 2.2 探索阶段 2.3 开发阶段 2.4 鲸落阶段 2.5 算法伪代码 三.实 ...
- 【智能优化算法-白鲸算法】基于白鲸优化算法求解多目标优化问题附matlab代码
1 内容介绍 在本文中,一种新的基于群体的元启发式算法灵感来自白鲸的行为鲸鱼,称为白鲸优化(BWO),是为了解决优化问题而提出的.三在 BWO 中建立了探索.开发和鲸落的阶段,对应于成对游泳.猎物和鲸 ...
- RMSProp优化算法--学习笔记
RMSProp优化算法是AdaGrad算法的一种改进. AdaGrad算法: 要求的超参数:r(全局学习率),θ(初始参数),σ(小常数,为数值稳定大约设为10^-7)初始化梯度累计变量d=0wher ...
- 哈里斯鹰优化算法学习笔记2
哈里斯鹰是一种著名的猛禽,其独特之处在于它与生活在同一稳定群体中的其他家庭成员一起进行独特的合作觅食活动,而其他猛禽通常独自攻击,发现和捕获猎物.哈里斯鹰捕捉猎物的主要策略是"突袭" ...
最新文章
- CVPR 2021评审出炉,得分惨不忍睹,面对奇葩评审该如何反击?
- Django安装使用基础
- 看译飞的由浅入深漫谈margin属性
- 银行IT迎“高景气”时代,宇信科技如何领跑行业?
- hdu3694(四边形的费马点)
- svn java注释_svn 强制用户添加注释 和 允许用户修改注释
- 飞鸽传书确保服务数据的安全可靠
- 设置Markdown中展示Liquid(Jekyll)但不解析的方式
- 接触线叉环插座行业调研报告 - 市场现状分析与发展前景预测
- 万创帮逆向解析,让你也能体验技术变现【Python爬虫实战系列之万创帮闲置资源整合逆向】
- rox + openbox + fbpanel + conky打造又快又稳的桌面[转]
- (转载)AS3中的mouseEnabled与mouseChildren
- 5-热力学第二、三定律
- 用户分层之RFM模型
- 快过年了,用五种不同的JS特效带你看烟花(包邮送元宇宙图书)
- JDBC基础操作汇总
- [七夕节]——一款基于canvas绘制五颜六色线条合成一个爱心发光动画特效
- 雷军:相信自己,一往无前(MI10周年演讲精彩语录)
- matlab中停止调试快捷键,matlab软件中各种快捷键的用法,还有和断点有关的用法...
- zookeeper为什么是CP原则
热门文章
- 君のPOS tagging本当上手 | SpaCy 使用指南
- 曼陀罗思考法的种类(转)
- Matlab.图像处理设计-曼陀罗图片绘制
- ubuntu退出python_python ubuntu 命令
- 关于idea利用wsdl文件调用相关接口的问题
- keil5在点击debug时,全速运行按钮不能按的情况
- 【北交所周报】近九成个股下跌,凯大催化上市当天涨39%;北交所发行节奏放缓,上周仅瑞星股份一家企业过会;...
- Oracle数据库•笔记
- Autodesk 3ds Max 2021
- 微信小程序正确引入Vant Weapp