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

在这里插入图片描述

目录

    • 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.mzph.cn/news/787329.shtml

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

相关文章

基于8086温度监控报警系统设计

**单片机设计介绍,基于8086温度监控报警系统设计 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于8086的温度监控报警系统设计概要主要涵盖了该系统的基本组成、工作原理、设计特点以及应用前景等方面。以下是对该…

HarmonyOS 应用开发之RelationalStore开发

场景介绍 RelationalStore提供了一套完整的对本地数据库进行管理的机制,对外提供了一系列的增、删、改、查等接口,也可以直接运行用户输入的SQL语句来满足复杂的场景需要。 基本概念 谓词:数据库中用来代表数据实体的性质、特征或者数据实体…

HTTP响应头和请求头信息对照

HTTP请求头提供了关于请求,响应或者其他的发送实体的信息。HTTP的头信息包括通用头、请求头、响应头和实体头四个部分。每个头域由一个域名,冒号(:)和域值三部分组成。 通用头标:即可用于请求,也可用于响应…

字典树基础(Java实现)

字典树也叫Trie,是一种树形结构,其中每个节点可以存储一些变量表示该字符串出现的数量。每条边表示一个字符,如节点9存储一个变量cnt,说明存在三个字符串为“cbc” 例题:前缀判定 import java.math.BigInteger; impor…

set/ multiset 容器(二)

一、set查找和统计 函数原型&#xff1a; find(key); //查找key是否存在,若存在&#xff0c;返回该键的元素的迭代器&#xff1b;若不存在&#xff0c;返回 set.end(); count(key); //统计key的元素个数代码示例&#xff1a; #include<iostream> using namespace std;…

【Java入门教程】第十八讲:String类的常见操作及其应用

Java是一种广泛使用的编程语言&#xff0c;它的标准库中包含了大量的类和方法&#xff0c;以支持各种编程任务。在这些类中&#xff0c;String类无疑是最常用、最重要的类之一。 String类在Java中用于表示和操作字符串&#xff0c;即字符序列。本文将详细介绍String类的基本概…

算法刷题记录 Day34

算法刷题记录 Day34 Date: 2024.03.30 lc 63. 不同路径II class Solution { public:int uniquePathsWithObstacles(vector<vector<int>>& G) {// dp[i][j]表示从&#xff08;0&#xff0c;0&#xff09;到&#xff08;i,j&#xff09;的路径数&#xff1b;/…

Kubernetes(k8s):网络插件之Calico安装与详解

Kubernetes&#xff08;k8s&#xff09;&#xff1a;网络插件之Calico安装与详解 1、什么是Calico&#xff1f;2、安装和配置Calico&#xff08;控制节点-master执行&#xff09;3、配置网络策略4、 Calico 的 yaml 文件部分详解1、ConfigMap配置2、DaemonSet 配置 5、calico-k…

Vue自定义组件中使用CSS变量设置样式?

在 Vue 自定义组件中使用 CSS 变量来设置样式&#xff0c;你可以通过在组件的样式中使用 var(–variable-name) 来引用 CSS 变量。然后&#xff0c;在组件的根元素或具体的元素上&#xff0c;使用 :style 绑定来动态设置 CSS 变量的值。以下是一个示例代码。 子组件 (CustomCo…

基于mqtt的物联网控制移动应用程序开发

具体实现问题 MQTT模型、特点、服务质量、报文、消息类型表 java实现mqtt两种方式&#xff1a;Paho Java原生库、spring boot MQTT与HTTP&#xff1a;哪一个最适合物联网&#xff1f; mqtt协议和http协议区别 应用是如何实现mqtt协议 通过调用安卓的MQTT库来实现MQTT协议&…

【智能算法】蜜獾算法(HBA)原理及实现

目录 1.背景2.算法原理2.1算法思想2.2算法过程 3.结果展示4.参考文献 1.背景 2021年&#xff0c;FA Hashim等人受到自然界中蜜獾狩猎行为启发&#xff0c;提出了蜜獾算法&#xff08;(Honey Badger Algorithm&#xff0c;HBA&#xff09;。 2.算法原理 2.1算法思想 蜜獾以其…

【力扣】80.删除有序数组中的重复项Ⅱ

80.删除有序数组中的重复项Ⅱ 题目描述 给你一个有序数组 nums &#xff0c;请你 原地 删除重复出现的元素&#xff0c;使得出现次数超过两次的元素只出现两次&#xff0c;返回删除后数组的新长度。 不要使用额外的数组空间&#xff0c;你必须在 原地 修改输入数组 并在使用…

Mysql 常用SQL语句

1、查看mysql中所有的数据库&#xff0c; show databases; 2、创建库 create database 库名;&#xff08;也可以用 create database if not exists 库名; 表示如果库不存在再创建&#xff09; 例&#xff1a;create database if not exists ecology; 3、删除库 …

负载均衡:实现高效稳定的网络服务

随着互联网技术的快速发展&#xff0c;网络应用服务的规模和复杂性日益增加。为了满足日益增长的用户需求&#xff0c;确保服务的高可用性和稳定性&#xff0c;负载均衡技术应运而生。本文将详细介绍负载均衡的概念、原理、分类以及应用场景&#xff0c;帮助读者深入了解这一关…

[网鼎杯 2020 朱雀组]Nmap1

打开题目 在源代码中看到了提示 先随便输入127.0.0.1 那我们试试输入 127.0.0.1 | ls 可以看到 | 被转义符号\所转义 那我们输入 127.0.0.1 /| ls 得到三条反斜线 我们猜测&#xff0c;我们输入的东西是被escapeshellarg和escapeshellcmd处理过后的结果 我们输入的东西必须…

element-ui tag 组件源码分享

今日简单分享一下 tag 组件的源码实现&#xff0c;主要从以下三个方面来分享&#xff1a; 1、tag 组件页面结构 2、tag 组件属性 3、tag 组件方法 一、tag 组件页面结构 vue2 中使用 jsx 语法小结&#xff1a; 1.1 需要安装 babel-plugin-transform-vue-jsx 和 vue/babel-…

echarts仪表盘特殊样式

const drawChartOption function (value, max) {const colorConfig {name: 测试,colorList: {text: #fff,line2: {type: linear,x: 0, // 右y: 0, // 下x2: 1, // 左y2: 0, // 上colorStops: [// {// offset: 0,// color: transparent// },{offset: 0.1,color: #031e…

Permission Denial: package=android does not belong to uid=2000

02-01 03:14:17.230 1685 2701 W ContextImpl: Calling a method in the system process without a qualified user: xxxxxxxxx 02-01 03:14:17.231 1685 2701 W ActivityTaskManager: Permission Denial: packageandroid does not belong to uid2000 这类问题往往是调用端…

服务器托管让服务器管理更轻松高效

在信息化飞速发展的今天&#xff0c;服务器作为企业数据处理和信息存储的核心设备&#xff0c;其管理的重要性日益凸显。服务器托管&#xff0c;作为一种高效、专业的服务器管理方式&#xff0c;正逐渐成为众多企业的首选。那么&#xff0c;服务器托管究竟是如何让服务器管理更…

AI版青花瓷

3月22日&#xff0c;Suno正式上线V3版本&#xff0c;很多人都称之为AI音乐的"ChatGPT"时刻&#xff0c;从此人人都可以是作曲家&#xff0c;先来听下最近霸榜的只因你太美baby来感受下它的厉害之处&#xff08;我已经被洗脑了哈哈&#xff09; 1. Suno 介绍 根据Sun…