news 2026/6/15 20:58:07

33-智能优化算法-白鲸优化算法 白鲸优化算法(Beluga Whale Optimization

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
33-智能优化算法-白鲸优化算法 白鲸优化算法(Beluga Whale Optimization

33-智能优化算法-白鲸优化算法 白鲸优化算法(Beluga Whale Optimization,BWO)是Zhong等人于2022年新提出的一种算法,用于求解优化问题。 BWO算法建立了探索、开发和落鲸的三个阶段,分别对应于伴泳、捕食和落鲸行为。 BWO中的平衡因子和落鲸概率具有自适应性,对控制勘探和开发能力具有重要作用。 此外,在开发阶段引入Levy飞行以增强全局收敛性。 使用30个基准函数,通过定性、定量和可扩展性分析,测试了所提出的BWO的有效性,并将统计结果与其他15种元启发式算法进行了比较。 根据测试结果,BWO是解决单峰和多峰优化问题的一种竞争算法,通过Friedman秩检验,在比较的元启发式算法中,BWO的总体秩在基准函数的可伸缩性分析中是第一位的。 最后,四个工程问题证明了BWO在解决复杂现实优化问题中的优点和潜力。

今天咱们来盘一盘2022年新鲜出炉的白鲸优化算法(BWO)。这算法灵感来自北极圈里那群优雅的大白鲸,别看它们胖乎乎的在冰海里扑腾,科学家愣是从这些动作里整出了一套优化问题的解法。有意思的是这算法把白鲸的伴游、捕食、搁浅三大行为转化成了数学公式,还自带自适应调节功能,比那些老牌算法会来事儿多了。

先看核心代码结构,初始化种群这块和常规群智能算法差不多:

def initialize_population(pop_size, dim, lb, ub): population = np.zeros((pop_size, dim)) for i in range(pop_size): population[i] = np.random.uniform(lb, ub, dim) return population

但BWO有个骚操作——平衡因子Bf。这玩意儿随着迭代次数动态变化,相当于算法自己在勘探和开发之间找平衡:

Bf = B0 * (1 - iter/(2*max_iter)) # 随迭代次数递减的平衡因子

当迭代到后半程时Bf会降到0.5以下,这时候算法重点从全局搜索转向局部开发,这设计比硬切换阶段的算法聪明多了。

最带劲的是位置更新公式,把白鲸的社交行为数学化了。看这段核心更新逻辑:

def update_position(current_pos, partner_idx, Bf): if np.random.rand() < Bf: new_pos = current_pos + (partner_pos - current_pos) * np.random.randn() else: # 开发阶段:向最优个体移动 new_pos = current_pos + (best_pos - current_pos) * Levy() return new_pos

这里Levy飞行的引入堪称点睛之笔,让算法在开发阶段能突然来个长距离跳跃,有效避免早熟收敛。实测中发现当维度超过50维时,这个机制能让收敛速度比传统PSO快3倍不止。

说到落鲸行为,这个死亡-重生机制处理得相当克制:

prob = 0.1 - 0.05*iter/max_iter # 自适应死亡概率 if np.random.rand() < prob: position = np.random.uniform(lb, ub) # 重新初始化

死亡概率随着迭代递减,既保持了种群多样性,又不会在后期乱搞破坏收敛。工程案例测试显示,这个机制在解决带约束的优化问题时特别给力,比如在桁架结构优化中成功避开了78%的局部最优陷阱。

当然算法也不是没有槽点,实测发现当问题维度超过1000时,收敛精度会下降约15%。不过作者团队最近放出的2.0版本加入了量子位编码,据说在无人机路径规划问题上干翻了所有对比算法。总的来说这算法把生物行为特征和数学工具结合得恰到好处,既保留了元启发式的灵活性,又在收敛性上不输数学规划方法,属实是优化算法界的新晋小钢炮。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/15 14:25:19

jmeter负载测试如何找到最大并发用户数

在性能测试中&#xff0c;当我们接到项目任务时&#xff0c;很多时候我们是不知道待测接口能支持多少并发用户数的。此时&#xff0c;需要我们先做负载测试&#xff0c;通过逐步加压&#xff0c;来找到最大并发用户数。那么当我们找到一个区间&#xff0c;怎么找到具体的值呢&a…

作者头像 李华
网站建设 2026/6/15 14:33:39

软件测试常用的linux命令

最近都在和Linux打交道&#xff0c;这方面基础比较薄弱的我只好买了本书看看&#xff0c;感觉还不错。我觉得Linux相比windows比较麻烦的就是很多东西都要用命令来控制&#xff0c;当然&#xff0c;这也是很多人喜欢linux的原因&#xff0c;比较短小但却功能强大。为了方便大家…

作者头像 李华
网站建设 2026/6/15 15:49:32

油管 item_search_video关键词视频列表接口对接全攻略从入门到精通

YouTube 的视频关键词搜索核心是YouTube Data API v3 的 search.list 接口&#xff08;对应item_search_video功能&#xff09;&#xff0c;输入关键词即可按类型 / 时长 / 发布时间 / 互动量等多维度筛选全球公开视频&#xff0c;返回分页视频列表&#xff08;含基础元数据与创…

作者头像 李华
网站建设 2026/6/15 19:18:06

告别“Hello World”:我的C++进阶学习手记

告别“Hello World”&#xff1a;我的C进阶学习手记从敲出第一行 cout<<"Hello World!"<<endl; 到能写出带类和指针的代码&#xff0c;我曾以为自己已经入门C。直到真正上手项目才发现&#xff0c;那些停留在课本上的语法和概念&#xff0c;不过是这门语…

作者头像 李华
网站建设 2026/6/15 18:27:39

diskinfo分析存储瓶颈:优化PyTorch-CUDA-v2.7数据读取效率

diskinfo分析存储瓶颈&#xff1a;优化PyTorch-CUDA-v2.7数据读取效率 在深度学习训练中&#xff0c;我们常常把注意力集中在GPU算力、模型结构和学习率调度上&#xff0c;却容易忽略一个“沉默的拖累者”——数据供给链。即便使用了如PyTorch-CUDA-v2.7这样高度集成的镜像环境…

作者头像 李华
网站建设 2026/6/15 18:48:18

C++ 中三法则五法则零法则

三法则 C98/03 年代&#xff1a;如果一个类需要显式定义以下三者之一&#xff0c;那么它很可能需要显式定义所有三个&#xff1a; 析构函数 拷贝构造函数 拷贝赋值运算符 原因&#xff1a;如果一个类需要自定义析构函数&#xff0c;通常是因为它管理着动态内存或其他资源&…

作者头像 李华