【智能算法】蜣螂优化算法(DBO)原理及实现

news2024/11/26 15:42:59

在这里插入图片描述

目录

    • 1.背景
    • 2.算法原理
      • 2.1算法思想
      • 2.2算法过程
    • 3.结果展示
    • 4.参考文献


1.背景

2022年,Xue等人受到自然界中蜣螂生存行为启发,提出了蜣螂优化算法(Dung beetle optimizer, DBO)。

2.算法原理

2.1算法思想

DBO模拟了自然界蜣螂种群行为,构建了基于滚动-产卵-觅食-偷窃模型的搜索框架。
在这里插入图片描述

2.2算法过程

滚球行为

在没有障碍物的情况下,蜣螂利用太阳导航以保持粪球在直线上滚动,其中光照的强度会影响蜣螂的路径,滚球的位置更新方式:
x i ( t + 1 ) = x i ( t ) + α × k × x i ( t − 1 ) + b × Δ x Δ x = ∣ x i ( t ) − X w ∣ (1) \begin{aligned}x_i\left(t+1\right)&=x_i\left(t\right)+\alpha\times k\times x_i\left(t-1\right)+b\times\Delta x\\\Delta x&=\left|x_i\left(t\right)-X^\mathrm{w}\right|\end{aligned}\tag{1} xi(t+1)Δx=xi(t)+α×k×xi(t1)+b×Δx=xi(t)Xw(1)
a为自然系数,a=1 表示没有偏离,a=-1 表示偏离原来方向;Xw表示全局最差位置;Δx 模拟光强的变化,越大表示光照越弱。
在这里插入图片描述

跳舞行为:

在遇到障碍物的情况下,蜣螂利用跳舞来重新定向自己,以获得新的路线,跳舞行为的位置更新方式:
x i ( t + 1 ) = x i ( t ) + tan ⁡ ( θ ) ∣ x i ( t ) − x i ( t − 1 ) ∣ (2) x_i\left(t+1\right)=x_i\left(t\right)+\tan(\theta)\big|x_i(t)-x_i(t-1)\big|\tag{2} xi(t+1)=xi(t)+tan(θ) xi(t)xi(t1) (2)
在这里插入图片描述
繁殖行为:

雌性蜣螂将粪球滚到适合产卵的安全地方藏起来,以此为后代提供合适的栖息地:
L b ∗ = m a x ( X ∗ × ( 1 − R ) , L b ) U b ∗ = m i n ( X ∗ × ( 1 + R ) , U b ) (3) \begin{aligned}Lb^*&=max\Big(X^*\times\big(1-R\big),Lb\Big)\\Ub^*&=min\Big(X^*\times\big(1+R\big),Ub\Big)\end{aligned}\tag{3} LbUb=max(X×(1R),Lb)=min(X×(1+R),Ub)(3)
其中,Lb*,Ub表示产卵的区域的下界和上界;X表示当前局部最优解;R=1-t/Tmax,Tmax 表示最大迭代次数;Lb,Ub 表示优化问题的下界和上界。
产卵发生的区域随迭代次数动态调整:
B i ( t + 1 ) = X ∗ + b 1 × ( B i ( t ) − L b ∗ ) + b 2 × ( B i ( t ) − U b ∗ ) (4) B_{i}\left(t+1\right)=X^{*}+b_{1}\times\left(B_{i}\left(t\right)-Lb^{*}\right)+b_{2}\times\left(B_{i}\left(t\right)-Ub^{*}\right)\tag{4} Bi(t+1)=X+b1×(Bi(t)Lb)+b2×(Bi(t)Ub)(4)
其中,Bi(t)表示第 t 次迭代时第 i 个卵球的位置信息。

觅食行为

一些成熟的蜣螂从地里钻出来寻找食物,小蜣螂的最佳觅食区域是动态更新:
L b b = m a x ( X b × ( 1 − R ) , L b ) U b b = m i n ( X b × ( 1 + R ) , U b ) (5) \begin{aligned}Lb^\mathrm{b}&=max\Big(X^\mathrm{b}\times\big(1-R\big),Lb\Big)\\Ub^\mathrm{b}&=min\Big(X^\mathrm{b}\times\big(1+R\big),Ub\Big)\end{aligned}\tag{5} LbbUbb=max(Xb×(1R),Lb)=min(Xb×(1+R),Ub)(5)
其中,Xb 表示全局最优位置,Lbb,Ubb 分别表示最佳觅食区域的下界和上界。
小蜣螂的位置更新:
x i ( t + 1 ) = x i ( t ) + C 1 × ( x i ( t ) − L b ♭ ) + C 2 × ( x i ( t ) − U b ♭ ) (6) x_{i}\left(t+1\right)=x_{i}\left(t\right)+C_{1}\times\left(x_{i}\left(t\right)-Lb^{\flat}\right)+C_{2}\times\left(x_{i}\left(t\right)-Ub^{\flat}\right)\tag{6} xi(t+1)=xi(t)+C1×(xi(t)Lb)+C2×(xi(t)Ub)(6)

偷窃行为

有些蜣螂会偷其他蜣螂的粪球,位置更新:
x i ( t + 1 ) = X ♭ + S × g × { ∣ x i ( t ) − X ∗ ∣ + ∣ x i ( t ) − X ♭ ∣ } (7) x_{i}\left(t+1\right)=X^{\flat}+S\times g\times\left\{\left|x_{i}\left(t\right)-X^{\ast}\right|+\left|x_{i}\left(t\right)-X^{\flat}\right|\right\}\tag{7} xi(t+1)=X+S×g×{xi(t)X+ xi(t)X }(7)
其中,g 是大小为 1×d 服从正态分布的随机向量,S 是常量。

伪代码
在这里插入图片描述

3.结果展示

在这里插入图片描述

4.参考文献

[1] Xue J, Shen B. Dung beetle optimizer: A new meta-heuristic algorithm for global optimization[J]. The Journal of Supercomputing, 2023, 79(7): 7305-7336.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1563178.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

泛域名站群,泛域名程序

泛域名站群是一种利用大量类似的泛域名来建立多个网站,并通过这些网站链接到主网站,以提升主网站的排名和流量的策略。泛域名站群通常包含大量的子域名,这些子域名指向不同的页面,但它们的内容大部分是重复或相似的,目…

机器学习KNN最邻近分类算法

文章目录 1、KNN算法简介2、KNN算法实现3、调用scikit-learn库中KNN算法4、使用scikit-learn库生成数据集5、自定义函数划分数据集6、使用scikit-learn库划分数据集7、使用scikit-learn库对鸢尾花数据集进行分类 1、KNN算法简介 KNN (K-Nearest Neighbor) 最邻近分类算法&#…

4款在线网页原型图设计软件推荐

与桌面端相比,在线网页原型设计软件的使用具有优势,因为在线网页原型设计软件在整个使用过程中不需要安装,在线网页原型设计软件在任何地方都没有限制。更重要的是,无论是现在使用的 Linux,在线网页原型设计软件在操作…

【THM】Burp Suite:Other Modules(其他模块)-初级渗透测试

介绍 除了广泛认可的Repeater和Intruder房间之外,Burp Suite 还包含几个鲜为人知的模块。这些将成为这个房间探索的重点。 重点将放在解码器、比较器、排序器和组织器工具上。它们促进了编码文本的操作,支持数据集的比较,允许分析捕获的令牌内的随机性,并帮助您存储和注释…

北京WordPress建站公司

北京wordpress建站,就找北京wordpress建站公司 http://wordpress.zhanyes.com/beijing

深入解析大数据体系中的ETL工作原理及常见组件

** 引言 关联阅读博客文章:探讨在大数据体系中API的通信机制与工作原理 关联阅读博客文章:深入理解HDFS工作原理:大数据存储和容错性机制解析 ** 在当今数字化时代,大数据处理已经成为了企业成功的重要组成部分。而在大数据处…

C#学习笔记 面试提要

冒泡 for (int m 0; m < arr.Length; m) { for (int n 0; n < arr.Length - 1 - m; n) { if (arr[n] > arr[n1]) { int temp arr[n]; arr[n] arr[n 1]; arr[n1] temp; } } } 选择 for (int m 0; m < arr.Length; m) { int index 0; for (int n 1; n < …

每日面经分享(pytest测试案例,接口断言,多并发断言)

pytest对用户登录接口进行自动化脚本设计 a. 创建一个名为"test_login.py"的测试文件&#xff0c;编写以下测试脚本 import pytest import requests# 测试用例1&#xff1a;验证登录成功的情况 # 第一个测试用例验证登录成功的情况&#xff0c;发送有效的用户名和密…

【实例分割】用自己的数据复现yolact网络-含python源码

yolact不算是很新的实例分割方法&#xff0c;但好在易上手&#xff0c;且像YOLO系列一样&#xff0c;在持续更新中&#xff0c; 所以作为示例分割的开篇&#xff0c;就以yolact作为第一篇开始学习吧! 目录 &#x1f438;&#x1f438;1.YOLACT是什么&#xff1f; &#x1f64…

MegaSeg Pro for Mac v6.3.1 注册激活版 音视频DJ混音工具

MegaSeg Pro for Mac是一款专业的DJ和广播自动化软件&#xff0c;旨在为音乐专业人士提供强大的音乐播放和演播功能。这款软件具有多种功能&#xff0c;包括强大的音乐库管理&#xff0c;支持导入和组织大量音乐文件&#xff0c;可以轻松管理你的音乐收藏。它支持广泛的音频格式…

篮球竞赛预约平台的设计与实现|Springboot+ Mysql+Java+ B/S结构(可运行源码+数据库+设计文档)

本项目包含可运行源码数据库LW&#xff0c;文末可获取本项目的所有资料。 推荐阅读300套最新项目持续更新中..... 最新ssmjava项目文档视频演示可运行源码分享 最新jspjava项目文档视频演示可运行源码分享 最新Spring Boot项目文档视频演示可运行源码分享 2024年56套包含ja…

SQLBolt,一个练习SQL的宝藏网站

知乎上有人问学SQL有什么好的网站&#xff0c;这可太多了。 我之前学习SQL买了本SQL学习指南&#xff0c;把语法从头到尾看了个遍&#xff0c;但仅仅是心里有数的程度&#xff0c;后来进公司大量的写代码跑数&#xff0c;才算真真摸透了SQL&#xff0c;知道怎么调优才能最大化…

工艺品wordpress外贸主题

工艺品wordpress外贸主题 简约大气的wordpress外贸主题&#xff0c;适合做工艺品进出品外贸的公司官网使用。 https://www.jianzhanpress.com/?p5377

【JavaWeb】Day25.Web入门——HTTP协议(一)

HTTP协议——概述 1.介绍 HTTP&#xff1a;Hyper Text Transfer Protocol(超文本传输协议)&#xff0c;规定了浏览器与服务器之间数据传输的规则。 http是互联网上应用最为广泛的一种网络协议http协议要求&#xff1a;浏览器在向服务器发送请求数据时&#xff0c;或是服务器在…

《深入Linux内核架构》第3章 内存管理(6)

目录 3.5.7 内核中不连续页的分配 3.5.8 内核映射 本节讲解vmalloc, vmap&#xff0c;kmap原理。 3.5.7 内核中不连续页的分配 kmalloc函数&#xff1a;分配物理地址和虚拟地址都连续的内存。 kmalloc基于slab&#xff0c;而slab基于伙伴系统。 void *vmalloc(unsigned lon…

大模型之路2:继续趟一条小路

继续趟一条小路&#xff0c;可谓是充满了曲折&#xff0c;当然&#xff0c;必不可少的还是坑。 吐槽 看过的喷友&#xff0c;其实你看完以后&#xff0c;大概率也就是和我一起骂骂街&#xff0c;因为....我也的确没理清楚。 我也不知道做错了什么&#xff0c;就是运行不过去…

WPF学习笔记-FlowDocument流文档基础知识和基本操作

文章目录 概述一、块元素和内联元素1.1 块元素&#xff08;Block类&#xff09;1.2 内联元素&#xff08;Inline类&#xff09;二、Paragraph元素2.1 基本属性设置2.2 将内联元素Inline添加到Inlines中2.3 设置中西文字体不一样 三、Table元素3.1 添加新的Table3.2 添加列3.3 添…

深入了解C语言中的结构体类型与内存对齐

引言&#xff1a; 在C语言中&#xff0c;结构体是一种自定义的数据类型&#xff0c;它允许我们将不同类型的数据组合在一起&#xff0c;形成一个新的数据类型。结构体的使用为我们解决了一些复杂数据的表示和处理问题&#xff0c;不仅限于单单的整型或者字符。本文将深入探讨结…

C++ vector 动态 向量/数组

文章目录 【 1. vector 的声明与初始化 】1.1 vector 的声明1.2 vector 的初始化1.2.1 构造一个空的 vector1.2.2 指定数量初值的方式初始化 vector1.2.3 迭代器的方式初始化1.2.4 构造一个相同的 vector 【 2. vector 的相关操作 】2.1 插入元素2.1.1 在vector的末尾插入新元素…

【ESP32 ECO V3】使用 Flash 下载工具完成 Secure Boot V2 功能

ESP32 ECO3 及以上版本 的芯片支持 Secure Boot V1 和 Secure Boot V2。使用 ESP32 ECO3 版本的芯片推荐使用 Secure Boot V2, 此篇文档记录基于 ESP32 ECO3 芯片通过 Flash 下载工具开启 Secure Boot V2 的实现。 支持 Secure Boot V2 的产品如下&#xff1a; 芯片型号Secur…