【单目标优化算法】蜣螂优化算法(Dung beetle optimizer,DBO)(Matlab代码实现)

article/2025/9/28 0:07:28
👨‍🎓 个人主页: 研学社的博客
💥 💥 💞 💞 欢迎来到本博客 ❤️ ❤️ 💥 💥


🏆 博主优势: 🌞 🌞 🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。


座右铭:行百里者,半于九十。

📋 📋 📋 本文目录如下: 🎁 🎁 🎁
目录
💥1 概述
📚2 运行结果
🎉3 文献来源
🌈4 Matlab代码实现

💥1 概述

编辑

本文提出了一种新的基于种群的技术,称为粪甲虫优化器(DBO)算法,其灵感来自于粪甲虫的滚球、跳舞、觅食、偷窃和繁殖行为。新提出的DBO算法同时考虑了全局探索和局部开发,从而具有快速收敛速度和令人满意的解精度的特点。使用一系列众所周知的数学测试函数(包括23个基准函数和29个CEC-BC-2017测试函数)来评估DBO算法的搜索能力。从仿真结果中可以观察到,DBO算法在收敛速度、解的精度和稳定性方面与最先进的优化方法相比具有实质上的竞争性能。

详细文章讲解见第四部分。

📚2 运行结果

部分代码:

function [fMin , bestX, Convergence_curve ] = DBO(pop, M,c,d,dim,fobj )

P_percent = 0.2; % The population size of producers accounts for "P_percent" percent of the total population size

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

pNum = round( pop * P_percent ); % The population size of the producers

lb= c.*ones( 1,dim ); % Lower limit/bounds/ a vector

ub= d.*ones( 1,dim ); % Upper limit/bounds/ a vector

%Initialization

for i = 1 : pop

x( i, : ) = lb + (ub - lb) .* rand( 1, dim );

fit( i ) = fobj( x( i, : ) ) ;

end

pFit = fit;

pX = x;

XX=pX;

[ fMin, bestI ] = min( fit ); % fMin denotes the global optimum fitness value

bestX = x( bestI, : ); % bestX denotes the global optimum position corresponding to fMin

% Start updating the solutions.

for t = 1 : M

[fmax,B]=max(fit);

worse= x(B,:);

r2=rand(1);

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

for i = 1 : pNum

if(r2<0.9)

r1=rand(1);

a=rand(1,1);

if (a>0.1)

a=1;

else

a=-1;

end

x( i , : ) = pX( i , :)+0.3*abs(pX(i , : )-worse)+a*0.1*(XX( i , :)); % Equation (1)

else

aaa= randperm(180,1);

if ( aaa==0 ||aaa==90 ||aaa==180 )

x( i , : ) = pX( i , :);

end

theta= aaa*pi/180;

x( i , : ) = pX( i , :)+tan(theta).*abs(pX(i , : )-XX( i , :)); % Equation (2)

end

x( i , : ) = Bounds( x(i , : ), lb, ub );

fit( i ) = fobj( x(i , : ) );

end

[ fMMin, bestII ] = min( fit ); % fMin denotes the current optimum fitness value

bestXX = x( bestII, : ); % bestXX denotes the current optimum position

R=1-t/M; %

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

Xnew1 = bestXX.*(1-R);

Xnew2 =bestXX.*(1+R); %%% Equation (3)

Xnew1= Bounds( Xnew1, lb, ub );

Xnew2 = Bounds( Xnew2, lb, ub );

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

Xnew11 = bestX.*(1-R);

Xnew22 =bestX.*(1+R); %%% Equation (5)

Xnew11= Bounds( Xnew11, lb, ub );

Xnew22 = Bounds( Xnew22, lb, ub );

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

for i = ( pNum + 1 ) :12 % Equation (4)

x( i, : )=bestXX+((rand(1,dim)).*(pX( i , : )-Xnew1)+(rand(1,dim)).*(pX( i , : )-Xnew2));

x(i, : ) = Bounds( x(i, : ), Xnew1, Xnew2 );

fit(i ) = fobj( x(i,:) ) ;

end

for i = 13: 19 % Equation (6)

x( i, : )=pX( i , : )+((randn(1)).*(pX( i , : )-Xnew11)+((rand(1,dim)).*(pX( i , : )-Xnew22)));

x(i, : ) = Bounds( x(i, : ),lb, ub);

fit(i ) = fobj( x(i,:) ) ;

end

for j = 20 : pop % Equation (7)

x( j,: )=bestX+randn(1,dim).*((abs(( pX(j,: )-bestXX)))+(abs(( pX(j,: )-bestX))))./2;

x(j, : ) = Bounds( x(j, : ), lb, ub );

fit(j ) = fobj( x(j,:) ) ;

end

% Update the individual's best fitness vlaue and the global best fitness value

XX=pX;

for i = 1 : pop

if ( fit( i ) < pFit( i ) )

pFit( i ) = fit( i );

pX( i, : ) = x( i, : );

end

if( pFit( i ) < fMin )

% fMin= pFit( i );

fMin= pFit( i );

bestX = pX( i, : );

% a(i)=fMin;

end

end

Convergence_curve(t)=fMin;

end

% Application of simple limits/bounds

function s = Bounds( s, Lb, Ub)

% Apply the lower bound vector

temp = s;

I = temp < Lb;

temp(I) = Lb(I);

% Apply the upper bound vector

J = temp > Ub;

temp(J) = Ub(J);

% Update this new move

s = temp;

function S = Boundss( SS, LLb, UUb)

% Apply the lower bound vector

temp = SS;

I = temp < LLb;

temp(I) = LLb(I);

% Apply the upper bound vector

J = temp > UUb;

temp(J) = UUb(J);

% Update this new move

S = temp;

%---------------------------------------------------------------------------------------------------------------------------

🎉3 文献来源

部分理论来源于网络,如有侵权请联系删除。

🌈4 Matlab代码实现


http://chatgpt.dhexx.cn/article/DJgUyjma.shtml

相关文章

算法应用:基于蜣螂优化(DBO)算法的工程优化设计(含MATLAB代码)

先做一个声明&#xff1a;文章是由我的个人公众号中的推送直接复制粘贴而来&#xff0c;因此对智能优化算法感兴趣的朋友&#xff0c;可关注我的个人公众号&#xff1a;启发式算法讨论。 这一期是利用蜣螂优化(DBO)算法去求解工程领域中的实际问题。文献[1]设计的DBO算法是202…

智能优化算法(源码)—蜣螂优化算法(Dung beetle optimizer,DBO)

获取更多资讯&#xff0c;赶快关注上面的公众号吧&#xff01; 文章目录 启发数学模型滚球跳舞繁殖觅食偷窃伪代码 2022年11月27日&#xff0c;东华大学沈波教授团队&#xff0c;继麻雀搜索算法之后&#xff0c;又提出了一种全新的群体智能优化算法——蜣螂优化&#xff08;Du…

ODB简介

官方参考文档 本文档内容是自己学习的一个记录&#xff0c;内容来自官方文档 https://www.oschina.net/p/odb-orm?hmsraladdin1e1 https://www.codesynthesis.com/products/odb/doc/manual.xhtml#1 ODB是什么&#xff1f; ODB可以直接把C的类对象映像成关系型数据库对象。 …

数据库(DB)

数据库系统概述 数据库&#xff1a;是长期储存在计算机内、有组织的、可共享的大量数据的集合。数据库的基本特征&#xff1a;  数据按一定的数据模型组织、描述和储存  可为各种用户共享、冗余度较小、易扩展  数据独立性较高 数据库管理系统&#xff08;DBMS&#xff…

SQL server 中的dbo、guest

最近新项目中接触SQL sever 数据库&#xff0c;可视化连接的过程中发现在数据库下存在两个特殊的类似数据库的层级 dbo、guest 查了一下资料这两者的具体含义&#xff1a; dbo database owner 数据库的创建者,创建该对象的用户 DBO是每个数据库的默认用户&#xff0c;具有所有…

SQLServer 对象创建注意事项之dbo

最近&#xff0c;一客户遇到一个奇怪的问题&#xff0c;sqlserver数据库&#xff0c;使用备份恢复到目标机器。之后&#xff0c;在目标服务器创建了测试函数对象&#xff0c;但是执行查询的时候却提示对象不存在&#xff0c;再次尝试重新创建该函数及其依赖的对象时能正常执行。…

单目标优化:蜣螂优化算法(Dung beetle optimizer,DBO)

蜣螂优化算法&#xff08;Dung beetle optimizer&#xff0c;DBO&#xff09;由Jiankai Xue和Bo Shen于2022年提出&#xff0c;该算法主要受蜣螂的滚球、跳舞、觅食、偷窃和繁殖行为的启发所得。 一、蜣螂优化算法 1.1蜣螂滚球 &#xff08;1&#xff09;当蜣螂前行无障碍时…

蜣螂优化(DBO)算法(含MATLAB代码)

先做一个声明&#xff1a;文章是由我的个人公众号中的推送直接复制粘贴而来&#xff0c;因此对智能优化算法感兴趣的朋友&#xff0c;可关注我的个人公众号&#xff1a;启发式算法讨论。我会不定期在公众号里分享不同的智能优化算法&#xff0c;经典的&#xff0c;或者是近几年…

智能优化算法 — 蜣螂优化算法(Dung beetle optimizer,DBO)

引言 小时候&#xff0c;蜣螂还是比较多见的&#xff0c;还顽皮地将粪球给它弄走&#xff0c;或者给它来点障碍。现在放牛的几乎看不到了&#xff0c;蜣螂没东西可推了&#xff0c;也慢慢从我们的视线中消失了。 DBO介绍 2022年11月27日&#xff0c;东华大学沈波教授团队&…

什么是 HTTP?

什么是 HTTP&#xff1f; 超文本传输协议 (HTTP) 是万维网的基础&#xff0c;用于通过超文本链接加载网页。HTTP 是应用程序层协议&#xff0c;旨在在联网设备之间传输信息&#xff0c;并在网络协议栈的其他层之上运行。HTTP 上的典型流涉及客户端计算机向服务器发出请求&…

什么是HTTP? HTTP和HTTPS的区别?

目录 1、什么是HTTP? 2、HTTP的特点 ① 支持客户/服务器模式 ② 简单快速 ③ 灵活 ④ 无连接 ⑤ 无状态 3、HTTPS 4、HTTP和HTTPS的区别 ① 安全性不同 ② 默认端口不同 ③ 响应速度和资源消耗不同 ④ 网站申请流程不同 ⑤ 对搜索排名的提升不同 1、什么是H…

什么是HTTPS,与HTTP的区别?

1. 什么是HTTPS HTTPS &#xff08;Hyper Text Transfer Protocol over SecureSocket Layer&#xff09;&#xff0c;基于安全套接字协议 SSL&#xff0c;是以安全为目标的 HTTP 通道&#xff0c;在 HTTP 的基础上通过传输加密和身份认证保证了传输过程的安全性。 HTTP2.0和H…

什么是 HTTP? HTTP 和 HTTPS 的区别?

简版 http 是无状态的超文本传输协议&#xff0c;连接简单&#xff0c;信息是明文传输&#xff0c;端口为 80。 https 协议是由 httpss 协议构建的可进行加密传输、身份认证的具有安全性网络协议,端口是 443。 优缺点&#xff1a; https 有加密认证相对于 http 安全一些 htt…

什么是https(详细),http和https

文章目录 1&#xff1a;什么是https2&#xff1a;使用http协议的问题2.1&#xff1a;http是明文传输。2.2&#xff1a;http不会验证对方身份。2.3&#xff1a;http无法验证报文的完整性。 3&#xff1a;密钥的问题4&#xff1a;SSL 四次握手4.1&#xff1a;第一次握手4.2&#…

[HTTP] HTTP是什么

HTTP是什么 HTTP是什么 HTTP全称为HyperText Transfer Protocol,被译为超文本传输协议&#xff0c;是互联网上应用最为广泛的一种网络协议。 HTTP协议是在Web上进行数据交换的基础&#xff0c;是一种“客户端–服务器端”协议。也就是说&#xff0c;请求通常是由像浏览器这样…

HTTP 请求是什么?

文章目录 HTTP请求一&#xff0c;请求行二&#xff0c;请求头三&#xff0c;空行四&#xff0c;请求体五&#xff0c;HTTP请求示例 HTTP请求 请求是由客户端向服务器发送的&#xff0c;一般可以分为请求行、请求头、空行和请求体四个部分&#xff0c;如下图所示&#xff1a; …

HTTP 与 HTTPS 的理解

区别&#xff1a;HTTP 是明文传输的&#xff0c;容易泄漏信息&#xff0c;所以大多数应用都会升级为 HTTPS HTTP 底层是用 TCP 传输的&#xff0c;HTTPS 就是在 TCP 和 HTTP 之间加了一层加密和认证的协议&#xff0c;这一层叫做 SSL/TLS。 为什么叫这个名字呢&#xff1f; 因…

什么是HTTP协议、与HTTPS的区别?

一.HTTP协议的定义&#xff1a; http(Hypertext transfer protocol)超文本传输协议&#xff0c;通过浏览器和服务器进行数据交互&#xff0c;进行超文本&#xff08;文本、图片、视频等&#xff09;传输的规定。也就是说&#xff0c;http协议规定了超文本传输所要遵守的规则。…

HTTP和HTTPS

1. 前言 近几年&#xff0c;互联网发生着翻天覆地的变化&#xff0c;尤其是我们一直习以为常的HTTP协议&#xff0c;在逐渐的被HTTPS协议所取代&#xff0c;在浏览器、搜索引擎、CA机构、大型互联网企业的共同促进下&#xff0c;互联网迎来了“HTTPS加密时代”&#xff0c;HTT…

HTTP到底是什么?

HTTP简介 HTTP 协议是 Hyper Text Transfer Protocol&#xff08;超文本传输协议&#xff09;的缩写&#xff0c;是用于从万维网&#xff08; WWW:World Wide Web &#xff09;服务器传输超文本到本地浏览器的传送协议&#xff0c;基于 TCP/IP 通信协议来传递数据。 HTTP原理…