多目标优化算法:基于非支配排序的蜣螂优化算法(Non-Dominated Sorting Dung beetle optimizer,NSDBO)

news2024/11/21 0:28:42

蜣螂优化算法(Dung beetle optimizer,DBO)由Jiankai Xue和Bo Shen于2022年提出,该算法主要受蜣螂的滚球、跳舞、觅食、偷窃和繁殖行为的启发所得。
在这里插入图片描述

一、蜣螂优化算法

1.1蜣螂滚球

(1)当蜣螂前行无障碍时,蜣螂在滚粪球过程中会利用太阳进行导航,下图中红色箭头表示滚动方向
在这里插入图片描述
本文假设光源的强度会影响蜣螂的位置,蜣螂在滚粪球过程中位置更新如下:

x i ( t + 1 ) = x i ( t ) + α × k × x i ( t − 1 ) + b × Δ x , Δ x = ∣ x i ( t ) − X w ∣ \begin{aligned} x_{i}(t+1) &=x_{i}(t)+\alpha \times k \times x_{i}(t-1)+b \times \Delta x, \\ \Delta x &=\left|x_{i}(t)-X^{w}\right| \end{aligned} xi(t+1)Δx=xi(t)+α×k×xi(t1)+b×Δx,=xi(t)Xw
其中, t t t表示当前迭代次数, x i ( t ) x_{i}(t) xi(t)表示第 i i i次蜣螂在第t次迭代中的位置信息, k ∈ ( 0 , 0.2 ] k∈(0,0.2] k(0,0.2]为扰动系数, b b b ( 0 , 1 ) (0,1) (0,1) 之间的随机数, α \alpha α取 -1 或 1 , X w X^{w} Xw表示全局最差位置, Δ x \Delta x Δx用于模拟光的强度变化。
其中, α \alpha α的取值采用算法1:
在这里插入图片描述

(2)当蜣螂遇到障碍物无法前进时,它需要通过跳舞来重新调整自己,以获得新的路线。本文使用切线函数来模仿跳舞行为,以此获得新的滚动方向,滚动方向仅考虑为 [ 0 , π ] [0,π] [0,π]之间。
在这里插入图片描述
蜣螂一旦成功确定新的方向,它应该继续向后滚动球。蜣螂的位置更新如下:
x i ( t + 1 ) = x i ( t ) + tan ⁡ ( θ ) ∣ x i ( t ) − x i ( t − 1 ) ∣ x_{i}(t+1)=x_{i}(t)+\tan (\theta)\left|x_{i}(t)-x_{i}(t-1)\right| xi(t+1)=xi(t)+tan(θ)xi(t)xi(t1)
其中, θ \theta θ为偏转角,其取值为 [ 0 , π ] [0,π] [0,π],采用算法2:
在这里插入图片描述

1.2蜣螂繁殖

在这里插入图片描述

在自然界中,雌性蜣螂将粪球被滚到适合产卵的安全地方并将其隐藏起来,以此为后代提供一个安全的环境。受此启发,因而提出了一种边界选择策略以此模拟雌性蜣螂产卵的区域:
L b ∗ = max ⁡ ( X ∗ × ( 1 − R ) , L b ) U b ∗ = min ⁡ ( X ∗ × ( 1 + R ) , U b ) \begin{array}{l} L b^{*}=\max \left(X^{*} \times(1-R), L b\right) \\ U b^{*}=\min \left(X^{*} \times(1+R), U b\right) \end{array} Lb=max(X×(1R),Lb)Ub=min(X×(1+R),Ub)
其中, X ∗ X^{*} X表示当前最优位置, L b ∗ L b^{*} Lb U b ∗ U b^{*} Ub分别表示产卵区的下限和上限, R = 1 − t / T m a x R=1−t/T_{max} R=1t/Tmax T m a x T_{max} Tmax表示最大迭代次数, L b Lb Lb U b Ub Ub分别表示优化问题的下限和上限。
雌性蜣螂一旦确定了产卵区,就会选择在该区域育雏球产卵。每只雌性蜣螂在每次迭代中只产生一个卵,可以看出,产卵区的边界范围是动态变化的,主要由R值决定。因此,育雏球的位置在迭代过程中也是动态的,其定义如下:
B i ( t + 1 ) = X ∗ + b 1 × ( B i ( t ) − L b ∗ ) + b 2 × ( B i ( t ) − U b ∗ ) B_{i}(t+1)=X^{*}+b_{1} \times\left(B_{i}(t)-L b^{*}\right)+b_{2} \times\left(B_{i}(t)-U b^{*}\right) Bi(t+1)=X+b1×(Bi(t)Lb)+b2×(Bi(t)Ub)
其中, B i ( t ) B_{i}(t) Bi(t)表示第t次迭代中第 i个育雏球的位置信息, b 1 b_{1} b1 b 2 b_{2} b2均为1×D的随机向量,D表示优化问题的维度。
产卵区的选择如算法3所示:
在这里插入图片描述

1.3蜣螂觅食

在这里插入图片描述
雌性蜣螂所产的卵会逐渐长大,一些已经成熟的小蜣螂会从地下出来寻找食物,小蜣螂的最佳觅食区建模如下:
L b b = max ⁡ ( X b × ( 1 − R ) , L b ) U b b = min ⁡ ( X b × ( 1 + R ) , U b ) \begin{array}{l} L b^{b}=\max \left(X^{b} \times(1-R), L b\right) \\ U b^{b}=\min \left(X^{b} \times(1+R), U b\right) \end{array} Lbb=max(Xb×(1R),Lb)Ubb=min(Xb×(1+R),Ub)
其中, X b X^{b} Xb表示全局最优位置, L b b L b^{b} Lbb U b b U b^{b} Ubb分别表示最佳觅食区的下限和上限。
在这里插入图片描述

小蜣螂的位置更新如下:
x i ( t + 1 ) = x i ( t ) + C 1 × ( x i ( t ) − L b b ) + C 2 × ( x i ( t ) − U b b ) x_{i}(t+1)=x_{i}(t)+C_{1} \times\left(x_{i}(t)-L b^{b}\right)+C_{2} \times\left(x_{i}(t)-U b^{b}\right) xi(t+1)=xi(t)+C1×(xi(t)Lbb)+C2×(xi(t)Ubb)
其中, x i ( t ) x_{i}(t) xi(t)表示第t次迭代中第i只小蜣螂在的位置, C 1 C_{1} C1是服从正态分布的随机数, C 2 C_{2} C2为(0,1)的随机向量。

1.4蜣螂偷窃

在这里插入图片描述

另一方面,一些蜣螂从其他蜣螂那里偷粪球,盗贼蜣螂的位置更新如下:

x i ( t + 1 ) = X b + S × g × ( ∣ x i ( t ) − X ∗ ∣ + ∣ x i ( t ) − X b ∣ ) x_{i}(t+1)=X^{b}+S \times g \times\left(\left|x_{i}(t)-X^{*}\right|+\left|x_{i}(t)-X^{b}\right|\right) xi(t+1)=Xb+S×g×(xi(t)X+xi(t)Xb)
其中, x i ( t ) x_{i}(t) xi(t)表示在第t次迭代中第i个盗贼蜣螂的位置,g为服从正态分布的1×D随机向量,S为常数。

1.5 DBO算法流程

滚球蜣螂、繁殖蜣螂、觅食蜣螂和偷窃蜣螂的比例分布如下:
在这里插入图片描述
DBO算法描述如下:
在这里插入图片描述
参考文献:Xue, J., Shen, B. Dung beetle optimizer: a new meta-heuristic algorithm for global optimization. J Supercomput (2022). https://doi.org/10.1007/s11227-022-04959-6

二、非支配排序的蜣螂优化算法

基于非支配排序的蜣螂优化算法(Non-Dominated Sorting Dung beetle optimizer,NSDBO)由蜣螂优化算法与非支配排序策略结合而成。将NSDBO用于求解46个多目标测试函数(ZDT1、ZDT2、ZDT3、ZDT4、ZDT6、DTLZ1-DTLZ7、WFG1-WFG10、UF1-UF10、CF1-CF10、Kursawe、Poloni、Viennet2、Viennet3)以及1个工程应用(盘式制动器设计),并采用IGD、GD、HV、SP进行评价。

close all;
clear ; 
clc;

代码链接:https://mbd.pub/o/liang/work
代码链接: https://mbd.pub/o/bread/Y52Tl5hv

%%
% TestProblem测试问题说明:
%一共46个多目标测试函数,详情如下:
%1-5:ZDT1、ZDT2、ZDT3、ZDT4、ZDT6
%6-12:DZDT1-DZDT7
%13-22:wfg1-wfg10
%23-32:uf1-uf10
%33-42:cf1-cf10
%43-46:Kursawe、Poloni、Viennet2、Viennet3
%47 盘式制动器设计 温泽宇,谢珺,谢刚,续欣莹.基于新型拥挤度距离的多目标麻雀搜索算法[J].计算机工程与应用,2021,57(22):102-109.
%%
TestProblem=1;%1-47
MultiObj = GetFunInfo(TestProblem);
MultiObjFnc=MultiObj.name;%问题名
% Parameters
params.Np = 200;        % Population size
params.Nr = 200;        % Repository size
params.maxgen =300;    % Maximum number of generations
numOfObj=MultiObj.numOfObj;%目标函数个数
D=MultiObj.nVar;%维度
f = NSDBO(params,MultiObj);
X=f(:,1:D);%PS
Obtained_Pareto=f(:,D+1:D+numOfObj);%PF

部分结果如下:

ZDT1:

在这里插入图片描述

ZDT2:

在这里插入图片描述

ZDT3:

在这里插入图片描述

ZDT4:

在这里插入图片描述

ZDT6:

在这里插入图片描述

DTLZ6:

在这里插入图片描述

Viennet2:

在这里插入图片描述

盘式制动器设计:

在这里插入图片描述

三、参考代码

文件夹内包含NSDBO求解46个多目标测试函数(ZDT1、ZDT2、ZDT3、ZDT4、ZDT6、DTLZ1-DTLZ7、WFG1-WFG10、UF1-UF10、CF1-CF10、Kursawe、Poloni、Viennet2、Viennet3)以及1个工程应用(盘式制动器设计)的全部MATLAB代码,同时提供评价指标IGD、GD、HV和SP的完整程序,点击Main.m即可运行。
在这里插入图片描述

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

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

相关文章

第7节:CSS概述,选择器,标签分类,CSS三大特性

1、什么是 CSS?CSS 全称为 Cascading Style Sheets,中文翻译为“层叠样式表”,简称 CSS。在网页制作时采用 CSS 技术,可以有效地对页面的布局、字体、颜色、背景和其它效果实现更加精确的控制。只要对相应的代码做一些简单的修改&…

Word处理控件Aspose.Words功能演示:在 Python 中将 PDF 转换为 JPG

PDF文件以文档、发票、收据、文章等形式随处可见。它是打印和共享文档最方便的格式之一。在某些情况下,您必须将 PDF 文件转换为JPG图像以生成缩略图或嵌入到您的前端应用程序中。为此,本文介绍了如何在 Python 中以编程方式将 PDF 中的页面转换为 JPG 图…

有来实验室|第一篇:Seata1.5.2版本部署和开源全栈商城订单支付业务实战

在线体验:Seata实验室 一. 前言 相信 youlai-mall 的实验室大家有曾在项目中见到过,但应该都还处于陌生的阶段,毕竟在此之前实验室多是以概念般的形式存在,所以我想借着此次的机会,对其进行一个详细的说明。 实验室模…

[附源码]JAVA毕业设计课程在线反馈系统(系统+LW)

[附源码]JAVA毕业设计课程在线反馈系统(系统LW) 目运行 环境项配置: Jdk1.8 Tomcat8.5 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术…

OPNET Modeler 软件的简单介绍与使用

文章目录前言一、OPNET 中的重要概念二、OPNET 编辑器简介三、用 OPNET 建立网络拓扑结构四、收集统计量五、仿真及结果1、运行仿真2、查看仿真结果①查看服务器 Ethernet load 结果②查看服务器 Ethernet Delay 结果六、复制场景并扩展网络1、复制场景2、运行仿真及结果总结前…

[附源码]计算机毕业设计基于SpringBoot的实验填报管理系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

宏鑫科技在创业板过会:前三季度收入约7亿元,王文志为实控人

近日,深圳证券交易所创业板披露的信息显示,浙江宏鑫科技股份有限公司(下称“宏鑫科技”)获得创业板上市委会议通过。本次冲刺上市,宏鑫科技计划募资7.48亿元,用于年产100万件高端锻造汽车铝合金车轮智造工厂…

Spring Boot 热部署与日志

Spring Boot 热部署与日志 1.springboot中devtools热部署 1.1 引言 为了进一步提高开发效率,springboot为我们提供了全局项目热部署,日后在开发过程中修改了部分代码以及相关配置文件后,不需要每次重启使修 改生效,在项目中开启了springboot全局热部署之后只需要在修改之后等待…

项目管理工具dhtmlxGantt入门教程(二):如何初始化dhtmlxGantt(上)

dhtmlxGantt 是用于跨浏览器和跨平台应用程序的功能齐全的Gantt图表,可满足项目管理控件应用程序的所有需求,有很完善的甘特图图表库。当您使用 dhtmlxGantt 开发应用程序时,您需要做的第一件事就是初始化,或者简单地说&#xff0…

浅谈 volatile

1.简介 volatile 在Java日常开发中,尤其是并发编程中,是一个高频使用的关键字,它提供了一种轻量级的同步机制(常用于和synchronized比较),用来修饰成员变量。volatile 具有如下两大特性: 1. 保证内存可见性2. 禁止指令重排序 volatile 无法保证原子性。 2.内存可见性 我们先…

HTTP 长连接和 TCP 长连接有什么区别

目录 一、HTTP 的 Keep-Alive 二、TCP 的 Keepalive 三、总结 事实上,这两个完全是两样不同东西,实现的层面也不同: HTTP 的 Keep-Alive,是由应用层(用户态) 实现的,称为 HTTP 长连接&#x…

简约的博客网页制作 大学生个人博客网页设计模板 学生个人网页成品 DIV简单个人网站作品下载 静态HTML CSS个人网页作业源代码

🎉精彩专栏推荐👇🏻👇🏻👇🏻 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业…

【翻译】Domain Enhanced Arbitrary Image Style Transfer via Contrastive Learning

文章目录ABSTRACT1 INTRODUCTION2 RELATED WORK3 METHOD3.1 Multi-layer Style Projector3.2 Contrastive Style Learning3.3 Domain Enhancement3.4 Network Training4 EXPERIMENTS4.1 Qualitative Evaluation4.2 Quantitative Evaluation4.3 Ablation Study5 CONCLUSION AND …

装饰模式Decorator

1.意图:动态地给一个对象添加一些额外的职责。就增加功能而言,Decorator模式比生成子类更加灵活。 2.结构 Component定义一个对象接口,可以给这些对象动态地添加职责; ConcreteComponent定义一个对象,可以给这个对象…

[附源码]JAVA毕业设计六如文学网站(系统+LW)

[附源码]JAVA毕业设计六如文学网站(系统LW) 环境项配置: Jdk1.8 Tomcat8.5 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术:…

康力源在创业板提交注册:预计全年收入同比下滑,衡墩建持股98%

12月4日,江苏康力源体育科技股份有限公司(下称“康力源”)在深圳证券交易所创业板提交招股书(注册稿)。据贝多财经了解,康力源于2021年11月12日在创业板递交招股书,2022年8月11日获得上市委会议…

螺旋矩阵||真的很有趣!(蓝桥杯宝贝们看过来)

献丑了&#xff0c;画了个图&#xff0c;如果图看不同&#xff0c;没关系&#xff0c;我们还有注释 class Solution { public:vector<vector<int> > generateMatrix(int n) {vector<vector<int> >num(n,vector<int>(n,0)); int startX0,startY0;…

向黑客精神致敬!

不是第一次想在一个特殊的时间写点什么&#xff0c;但是每次都是刚写了几个字就又停下来&#xff0c;有什么好说的呢&#xff1f;既然整个行业都是说的多&#xff0c;做的少&#xff0c;我们不如更多的踏实做点事情比较好&#xff0c;所以又把编辑器关掉。 但这次还是希望能和大…

Java 最常见的800道面试题,老话说:临阵磨枪,不快也光,涨薪指日可待

前言 春招&#xff0c;秋招&#xff0c;社招&#xff0c;我们 Java 程序员的面试之路&#xff0c;是挺难的&#xff0c;过了 HR&#xff0c;还得被技术面&#xff0c;鄙人在去各个厂面试的时候&#xff0c;经常是通宵睡不着觉&#xff0c;头发都脱了一大把&#xff0c;还好最终…

kubernetespod控制器详解2与service详解1

kubernetespod控制器详解2与service详解1 Horizontal Pod Autoscaler(HPA) Kubernetes期望可以实现通过监测Pod的使用情况&#xff0c;实现pod数量的自动调整&#xff0c;于是就产生了Horizontal Pod Autoscaler&#xff08;HPA&#xff09;这种控制器。 HPA可以获取每个Pod利…