NSDBO|基于非支配排序的蜣螂优化算法原理及其实现(Matlab)

文章来源于我的个人公众号:KAU的云实验台,主要更新智能优化算法的原理、应用、改进在这里插入图片描述

蜣螂优化算法(Dung Beetle Optimizer,DBO)是JiankaXue和Bo Shen在2022 年提出的一种新型群体智能优化算法[1],其灵感来自于蜣螂的滚球、跳舞、觅食、偷窃和繁殖行为。该算法同时考虑了全局探索和局部开发,从而具有收敛速度快和准确率高的特点,可以有效地解决复杂的寻优问题。

而多目标蜣螂优化算法(Non-dominated Sorting Dung Beetle Optimizer, NSDBO)于2023年开发[2],其与多目标鲸鱼优化算法[3]类似,将非支配排序的思想引入蜣螂优化算法中实现多目标优化。本文将介绍多目标蜣螂优化算法的原理及代码实现。

00 文章目录

1 多目标蜣螂优化算法原理

2 代码目录

3 算法性能

4 源码获取

01 多目标蜣螂优化算法原理

1.1 蜣螂优化算法DBO

算法中蜣螂种群分为四个部分,分别为滚球蜣螂、育雏球、小蜣螂和小偷蜣螂。滚球蜣螂受各种自然环境影响决更新其运行方向,初步寻找可以安全觅食的位置,育雏球会被产在已知的安全区域内,成长为成虫的蜣螂被称为小蜣螂,小蜣螂会在最佳觅食区觅食,小偷蜣螂也会根据其他蜣螂的位置和最佳觅食区寻找食物。

四种蜣螂位置更新方式如下:

(1)滚球蜣螂

滚球蜣螂以太阳为导航以保证粪球在直线路径上滚动,光源强度、风等自然因素会影响滚球蜣螂的行进路线,

在这里插入图片描述

滚球蜣螂位置更新方式如下:

在这里插入图片描述

式中,𝑡代表当前迭代次数,𝑥𝑖 (𝑡)表示第𝑡次迭代时第𝑖只蜣螂的位置信息,α 是一个自然系数,表示是否偏离原来方向,根据概率法分配为−1或1,𝑘 ∈ (0,0.2)表示偏转系数,𝑏 ∈ (0,1)表示常数,𝑘和𝑏分别设定为0.1和0.3,𝑋𝑤表示全局最差位置,Δ𝑥用于模拟光强变化。

在这里插入图片描述

当蜣螂遇到障碍物而不能前进时,它需要通过跳舞来调整自己的方向,滚球蜣螂跳舞更新位置的公式定义如下:

在这里插入图片描述

式中θ ∈ [0, 𝜋]表示偏转角,在θ等于0、𝜋/2或𝜋时,蜣螂的位置不会更新。

(2)育雏球

育雏球采用边界选择策略模拟雌性蜣螂产卵区域,产卵区域的定义为:
在这里插入图片描述

式中,𝑋∗表示当前的局部最佳位置,𝐿𝑏∗和𝑈𝑏∗分别表示产卵区的下限和上限, 𝑅 = 1 −𝑡/𝑇𝑚𝑎𝑥,𝑇𝑚𝑎𝑥表示最大迭代数,𝐿𝑏和𝑈𝑏分别代表优化问题的下限和上限。

在迭代过程中,育雏球位置是动态变化的,其定义为:

在这里插入图片描述

式中,𝐵𝑖 (𝑡)是第𝑡次迭代时第𝑖个育雏球的位置信息,𝑏1和𝑏2代表两个大小为1×D 的独立随机向量,D 表示优化问题的维度。

(3)小蜣螂

需要建立一个最优觅食区域,指导幼体蜣螂寻找食物并模拟其觅食行为,其中最优觅食区域定义为:
在这里插入图片描述

式中,𝑋b表示当前的局部最佳位置,𝐿𝑏b和𝑈𝑏b分别表示最佳觅食区的下限和上限

小蜣螂的位置更新如下:
在这里插入图片描述

式中,𝑥𝑖 (𝑡)是第𝑡次迭代时第𝑖只小蜣螂的位置信息,𝐶1表示遵循正态分布的随机数,𝐶2 ∈(0,1)表示随机向量。

(4)小偷蜣螂

Xb是食物竞争的最佳位置,因此小偷蜣螂位置更新方式如下:
在这里插入图片描述

式中,𝑥𝑖 (𝑡)第𝑖只小偷蜣螂在第𝑡次迭代的位置信息,g 表示一个遵循正态分布的大小为1×D的随机向量,S表示一个常数值。
在这里插入图片描述

在一次迭代之后,滚球蜣螂、育雏球、小蜣螂和小偷蜣螂的位置被更新。上述四个智能体构成了优化算法的种群。DBO算法可以利用不同时期的信息对搜索空间进行彻底的探索,避免陷入局部最优,具有很强的搜索能力。

1.2 基于非支配排序的多目标蜣螂优化算法

非支配排序是多目标优化算法中十分有效的技术。它根据Pareto最优解的优势程度对其进行排序。其中,不被任何解支配的解被分配为序1,只有一个解占优势的解被赋予为序2,只有两个解占优势的解被赋予为序3,依此类推。然后,根据它们的序选择解,以提高种群的质量。NSDBO算法的流程图如下:

在这里插入图片描述

02 代码目录

在这里插入图片描述

文件包含蜣螂算法源文献以及NSDBO的Matlab代码,代码注释完整,其中部分Main_NSDBO程序如下:
在这里插入图片描述

代码获取方式见文末

03 算法性能

使用ZDT系列测试函数对NSDBO进行测试:

在这里插入图片描述

04 源码获取

GZH(KAU的云实验台)后台回复:NSDBO

参考文献

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

[2] Zhu, X.; Ni, C.; Chen, G.; Guo, J. Optimization of Tungsten Heavy Alloy Cutting Parameters Based on RSM and Reinforcement Dung Beetle Algorithm. Sensors 2023, 23, 5616. https://doi.org/10.3390/s23125616

另:如果有伙伴有待解决的优化问题(各种领域都可),可以发我,我会选择性的更新利用优化算法解决这些问题的文章。

如果这篇文章对你有帮助或启发,可以点击右下角的赞/在看 (ง•̀_•́)ง(不点也行)

  • 14
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
蜣螂优化算法(Cockroach Swarm Optimization,CSO)是一种基于仿生学的优化算法,灵感来源于蜣螂的觅食行为。它模拟了蜣螂在觅食过程中的个体行为和群体协作,通过迭代搜索来寻找最优解。 以下是蜣螂优化算法Matlab实现示例: ```matlab function [bestSolution, bestFitness] = CSO(numParticles, numIterations, lb, ub, fitnessFunc) % 初始化种群 particles = lb + (ub - lb) * rand(numParticles, numel(lb)); velocities = zeros(numParticles, numel(lb)); fitness = zeros(numParticles, 1); % 计算初始适应度 for i = 1:numParticles fitness(i) = fitnessFunc(particles(i, :)); end % 寻找最优解 [bestFitness, bestIndex] = min(fitness); bestSolution = particles(bestIndex, :); % 迭代搜索 for iter = 1:numIterations for i = 1:numParticles % 更新速度 velocities(i, :) = velocities(i, :) + rand(1, numel(lb)) .* (bestSolution - particles(i, :)); % 更新位置 particles(i, :) = particles(i, :) + velocities(i, :); % 边界处理 particles(i, :) = max(particles(i, :), lb); particles(i, :) = min(particles(i, :), ub); % 计算适应度 fitness(i) = fitnessFunc(particles(i, :)); end % 更新最优解 [currentBestFitness, currentBestIndex] = min(fitness); if currentBestFitness < bestFitness bestFitness = currentBestFitness; bestSolution = particles(currentBestIndex, :); end end end ``` 使用示例: ```matlab % 定义适应度函数 fitnessFunc = @(x) sum(x.^2); % 设置参数 numParticles = 50; numIterations = 100; lb = -10 * ones(1, 10); % 变量下界 ub = 10 * ones(1, 10); % 变量上界 % 调用CSO算法 [bestSolution, bestFitness] = CSO(numParticles, numIterations, lb, ub, fitnessFunc); % 输出结果 disp('最优解:'); disp(bestSolution); disp('最优适应度:'); disp(bestFitness); ``` 这段代码实现蜣螂优化算法的基本框架,其中`numParticles`表示种群大小,`numIterations`表示迭代次数,`lb`和`ub`分别表示变量的下界和上界,`fitnessFunc`是用户自定义的适应度函数。 请注意,这只是一个简单的示例,实际应用中可能需要根据具体问题进行一些调整和改进。另外,蜣螂优化算法的性能也会受到参数设置的影响,需要根据实际情况进行调优。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值