基于野狗优化算法的函数寻优算法
文章目录
- 一、理论基础
- 1、策略一:集体攻击
- 2、策略二:迫害
- 3、策略三:食腐
- 4、策略四:野狗的存活率
- 5、DOA伪代码
- 二、实验仿真与分析
- 三、参考文献
一、理论基础
野狗优化算法(Dingo Optimization Algorithm, DOA)模仿澳大利亚野狗的社交行为。DOA算法的灵感来源于野狗的狩猎策略,即迫害攻击、分组策略和食腐行为。为了提高该方法的整体效率和性能,在DOA中制定了三种与四条规则相关联的搜索策略,这些策略和规则在搜索空间的强化(开发)和多样化(探索)之间提供了一种精确的平衡。
野狗种群随机初始化如式(1)所示: x → i = l b i + r a n d i ( u b i − l b i ) (1) \overrightarrow x_i=lb_i+rand_i(ub_i-lb_i)\tag{1} x i=lbi+randi(ubi−lbi)(1)其中, l b i lb_i lbi和 u b i ub_i ubi分别表示个体 x → i \overrightarrow x_i x i的下界和上界, r a n d i rand_i randi是 [ 0 , 1 ] [0,1] [0,1]之间均匀生成的随机数。
1、策略一:集体攻击
捕食者通常使用高度智能的狩猎技术,野狗通常单独捕食小猎物,如兔子,但当捕食大猎物,如袋鼠时,它们会成群结队。野狗能找到猎物的位置并将其包围,其行为如式(1)所示: x → i ( t + 1 ) = β 1 ∑ k = 1 n a [ φ k ( t ) → − x → i ( t ) ] n a − x ∗ → ( t ) (2) \overrightarrow x_i(t+1)=\beta_1\sum_{k=1}^{na}\frac{[\overrightarrow{\varphi_k(t)}-\overrightarrow x_i(t)]}{na}-\overrightarrow{x_*}(t)\tag{2} x i(t+1)=β1k=1∑nana[φk(t) −x i(t)]−x∗ (t)(2)其中, x → i ( t + 1 ) \overrightarrow x_i(t+1) x i(t+1)是搜索代理的新位置(表示野狗的移动); n a na na是在 [ 2 , SizePop / 2 ] [2,\text{SizePop}/2] [2,SizePop/2]的逆序中生成的随机整数,其中 SizePop \text{SizePop} SizePop是野狗种群的规模; φ k ( t ) → \overrightarrow{\varphi_k(t)} φk(t) 是搜索代理(将攻击的野狗)的子集,其中 φ ⊂ X \varphi\subset X φ⊂X, X X X是随机生成的野狗种群; x → i ( t ) \overrightarrow x_i(t) x i(t)是当前搜索代理; x ∗ → ( t ) \overrightarrow{x_*}(t) x∗ (t)是上一次迭代中发现的最佳搜索代理; β 1 \beta_1 β1是在 [ − 2 , 2 ] [-2,2] [−2,2]内均匀生成的随机数,它是一个比例因子,可改变野狗轨迹的大小。野狗集体攻击行为伪代码如算法1所示。
算法1 集体攻击行为
2、策略二:迫害
野狗通常捕猎小猎物,直到单独捕获为止。式(2)模拟了这种行为: x → i ( t + 1 ) = x → ∗ ( t ) + β 1 ∗ e β 2 ∗ ( x → r 1 ( t ) − x → i ( t ) ) (3) \overrightarrow x_i(t+1)=\overrightarrow x_*(t)+\beta_1*e^{\beta_2}*\left(\overrightarrow x_{r_1}(t)-\overrightarrow x_i(t)\right)\tag{3} x i(t+1)=x ∗(t)+β1∗eβ2∗(x r1(t)−x i(t))(3)其中, x → t + 1 \overrightarrow x_{t+1} x t+1表示野狗的运动, x → i ( t ) \overrightarrow x_i(t) x i(t)是当前搜索代理, x → ∗ ( t ) \overrightarrow x_*(t) x ∗(t)是上一次迭代中找到的最佳搜索代理, β 1 \beta_1 β1的值与式(2)中的值相同, β 2 \beta_2 β2是在 [ − 1 , 1 ] [−1,1] [−1,1]区间内均匀生成的随机数, r 1 r_1 r1是在从1到最大搜索代理(野狗)大小的区间内生成的随机数, x → r 1 ( t ) \overrightarrow x_{r_1}(t) x r1(t)是随机选择的第 r 1 r_1 r1个搜索代理,其中 i ≠ r 1 i\neq r1 i=r1。
式(3)用于表示野狗在捕猎猎物时的轨迹。
3、策略三:食腐
食腐动物的行为被定义为当野狗在它们的栖息地随意行走时找到腐肉吃的行为。式(4)用于模拟这种行为: x → i ( t + 1 ) = 1 2 [ e β 2 ∗ x → r 1 ( t ) − ( − 1 ) σ ∗ x → i ( t ) ] (4) \overrightarrow x_i(t+1)=\frac12\left[e^{\beta_2}*\overrightarrow x_{r_1}(t)-(-1)^\sigma*\overrightarrow x_i(t)\right]\tag{4} x i(t+1)=21[eβ2∗x r1(t)−(−1)σ∗x i(t)](4)其中, x → t + 1 \overrightarrow x_{t+1} x t+1表示野狗的移动, β 2 \beta_2 β2的值与式(3)中的值相同, r 1 r_1 r1是在1到最大搜索代理(野狗种群)大小的间隔内生成的随机数, x → r 1 ( t ) \overrightarrow x_{r_1}(t) x r1(t)是随机选择的第 r 1 r_1 r1个搜索代理, x → i ( t ) \overrightarrow x_i(t) x i(t)是当前搜索代理,其中 i ≠ r 1 i≠r_1 i=r1, σ \sigma σ是算法2随机生成的二进制数, σ ∈ { 0 , 1 } \sigma\in\{0,1\} σ∈{0,1}。
算法2 σ \sigma σ计算过程
4、策略四:野狗的存活率
澳大利亚野狗面临灭绝的危险,主要是因为非法狩猎。在DOA中,野狗的存活率值由式(5)给出: survival ( i ) = fitness max − fitness ( i ) fitness max − fitness min (5) \text{survival}(i)=\frac{\text{fitness}_{\max}-\text{fitness}(i)}{\text{fitness}_{\max}-\text{fitness}_{\min}}\tag{5} survival(i)=fitnessmax−fitnessminfitnessmax−fitness(i)(5)其中, fitness max \text{fitness}_{\max} fitnessmax和 fitness min \text{fitness}_{\min} fitnessmin分别是当前一代中最差和最佳的适应度值,而 fitness ( i ) \text{fitness}(i) fitness(i)是第 i i i个搜索代理的当前适应度值。式(5)中的生存向量包含 [ 0 , 1 ] [0,1] [0,1]区间内的归一化适应度。式(6)通过算法3应用于低生存率,例如,生存率值等于或小于0.3。 x → i ( t ) = x → ∗ ( t ) + 1 2 [ x → r 1 ( t ) − ( − 1 ) σ ∗ x → r 2 ( t ) ] (6) \overrightarrow x_i(t)=\overrightarrow x_*(t)+\frac12\left[\overrightarrow x_{r_1}(t)-(-1)^\sigma*\overrightarrow x_{r_2}(t)\right]\tag{6} x i(t)=x ∗(t)+21[x r1(t)−(−1)σ∗x r2(t)](6)其中, x → i ( t ) \overrightarrow x_i(t) x i(t)是将被更新的生存率较低的搜索代理, r 1 r_1 r1和 r 2 r_2 r2是在从1到搜索代理(野狗种群)的最大大小的区间内生成的随机数, r 1 ≠ r 2 r_1≠r_2 r1=r2, x → r 1 ( t ) \overrightarrow x_{r_1}(t) x r1(t)和 x → r 2 ( t ) \overrightarrow x_{r_2}(t) x r2(t)是随机选择的第 r 1 r_1 r1、 r 2 r_2 r2个搜索代理, x → ∗ ( t ) \overrightarrow x_{*}(t) x ∗(t)是上一次迭代中找到的最佳搜索代理, σ \sigma σ是算法2中随机生成的二进制数, σ ∈ { 0 , 1 } \sigma\in\{0,1\} σ∈{0,1}。注意,式(6)是向量的加法或减法,由 σ \sigma σ的随机值定义。
算法3 存活过程
5、DOA伪代码
DOA的伪代码在算法4中给出,而整体流程如图1所示。
算法4 DOA伪代码
图1 DOA流程图
二、实验仿真与分析
将DOA与DE、WOA、GSA和GWO进行对比,设置种群规模为30,最大迭代次数为500,每个算法独立运行30次,以文献[1]中F4、F7(单峰函数/30维)、F10、F11(多峰函数/30维)、F22、F23(固定维度多峰函数/4维、4维)为例,结果显示如下:
函数:F4
DE:最差值: 14.808, 最优值: 8.9991, 平均值: 11.235, 标准差: 1.3666, 秩和检验: 3.0199e-11
WOA:最差值: 87.1303, 最优值: 0.0053179, 平均值: 50.5426, 标准差: 28.3815, 秩和检验: 3.0199e-11
GSA:最差值: 10.3283, 最优值: 3.357, 平均值: 6.6449, 标准差: 1.6678, 秩和检验: 3.0199e-11
GWO:最差值: 2.6592e-06, 最优值: 5.9891e-08, 平均值: 7.0639e-07, 标准差: 6.8762e-07, 秩和检验: 3.0199e-11
DOA:最差值: 8.1677e-35, 最优值: 1.9639e-250, 平均值: 2.7226e-36, 标准差: 1.4912e-35, 秩和检验: 1
函数:F7
DE:最差值: 0.16163, 最优值: 0.069493, 平均值: 0.12353, 标准差: 0.026683, 秩和检验: 3.0199e-11
WOA:最差值: 0.0069934, 最优值: 7.6901e-05, 平均值: 0.0020844, 标准差: 0.0018921, 秩和检验: 2.3768e-07
GSA:最差值: 9.084, 最优值: 0.046226, 平均值: 0.87199, 标准差: 1.796, 秩和检验: 3.0199e-11
GWO:最差值: 0.0038269, 最优值: 0.00053595, 平均值: 0.0022598, 标准差: 0.00090528, 秩和检验: 8.891e-10
DOA:最差值: 0.0062926, 最优值: 5.1544e-06, 平均值: 0.00040989, 标准差: 0.0011297, 秩和检验: 1
函数:F10
DE:最差值: 0.0074158, 最优值: 0.0032897, 平均值: 0.0045297, 标准差: 0.001097, 秩和检验: 3.1507e-12
WOA:最差值: 7.9936e-15, 最优值: 8.8818e-16, 平均值: 4.0856e-15, 标准差: 2.5294e-15, 秩和检验: 2.1919e-06
GSA:最差值: 1.1551, 最优值: 7.4163e-09, 平均值: 0.038505, 标准差: 0.2109, 秩和检验: 3.1507e-12
GWO:最差值: 1.3234e-13, 最优值: 7.5495e-14, 平均值: 1.0261e-13, 标准差: 1.3791e-14, 秩和检验: 2.8541e-12
DOA:最差值: 4.4409e-15, 最优值: 8.8818e-16, 平均值: 1.2434e-15, 标准差: 1.084e-15, 秩和检验: 1
函数:F11
DE:最差值: 0.033245, 最优值: 0.00051667, 平均值: 0.0045107, 标准差: 0.0072221, 秩和检验: 1.2118e-12
WOA:最差值: 0, 最优值: 0, 平均值: 0, 标准差: 0, 秩和检验: NaN
GSA:最差值: 48.7711, 最优值: 16.3188, 平均值: 29.3579, 标准差: 8.1948, 秩和检验: 1.2118e-12
GWO:最差值: 0.025852, 最优值: 0, 平均值: 0.0036119, 标准差: 0.007229, 秩和检验: 0.0055843
DOA:最差值: 0, 最优值: 0, 平均值: 0, 标准差: 0, 秩和检验: NaN
函数:F22
DE:最差值: -9.9787, 最优值: -10.4029, 平均值: -10.3877, 标准差: 0.077343, 秩和检验: 0.017624
WOA:最差值: -1.8326, 最优值: -10.4016, 平均值: -6.7664, 标准差: 3.3648, 秩和检验: 0.092936
GSA:最差值: -2.7519, 最优值: -10.4029, 平均值: -7.8446, 标准差: 2.8129, 秩和检验: 0.21341
GWO:最差值: -10.3991, 最优值: -10.4025, 平均值: -10.4013, 标准差: 0.00084789, 秩和检验: 0.076906
DOA:最差值: -2.6881, 最优值: -10.4029, 平均值: -7.1985, 标准差: 3.0894, 秩和检验: 1
函数:F23
DE:最差值: -10.5327, 最优值: -10.5364, 平均值: -10.5363, 标准差: 0.00067011, 秩和检验: 0.97561
WOA:最差值: -1.6706, 最优值: -10.5352, 平均值: -7.3224, 标准差: 3.3841, 秩和检验: 0.00018236
GSA:最差值: -5.1285, 最优值: -10.5364, 平均值: -8.0127, 标准差: 2.7441, 秩和检验: 0.12518
GWO:最差值: -10.5327, 最优值: -10.5364, 平均值: -10.5346, 标准差: 0.0010471, 秩和检验: 0.026113
DOA:最差值: -2.4217, 最优值: -10.5364, 平均值: -8.7653, 标准差: 3.0498, 秩和检验: 1
结果表明,DOA与其余4种算法相比,具有更快的收敛速度、更高的收敛精度以及更强的稳定性。
三、参考文献
[1] Hernán Peraza-Vázquez, Adrián F. Peña-Delgado, Gustavo Echavarría-Castillo, et al. A Bio-Inspired Method for Engineering Design Optimization Inspired by Dingoes Hunting Strategies[J]. Mathematical Problems in Engineering, 2021, 2021: 9107547.
基于野狗优化算法的函数寻优算法相关推荐
- 《MATLAB智能算法30个案例》:第2章 基于遗传算法和非线性规划的函数寻优算法
<MATLAB智能算法30个案例>:第2章 基于遗传算法和非线性规划的函数寻优算法 1. 前言 2. MATLAB 仿真示例一 3. MATLAB 仿真示例二 4. MATLAB 仿真示例 ...
- 基于蚁群算法的函数寻优算法
文章目录 一.理论基础 二.案例背景 1.问题描述 2.解题思路及步骤 三.MATLAB程序实现 1.清空环境变量 2.初始化参数 3.构建解空间和目标函数 4.迭代寻优 5.结果显示 6.绘图 四. ...
- 基于沙猫群优化算法的函数寻优算法
文章目录 一.理论基础 1.沙猫群优化算法 (1)初始化种群 (2)搜索猎物(探索) (3)攻击猎物(开发) (4)探索和开发 2.SCSO算法伪代码 二.仿真实验与结果分析 三.参考文献 一.理论基 ...
- 基于蜉蝣优化算法的函数寻优算法
文章目录 一.理论基础 1.蜉蝣优化算法 (1)雄性蜉蝣的更新 (2)雌性蜉蝣的更新 (3)蜉蝣的交配过程 2.MA算法伪代码 二.仿真实验与结果分析 1.函数测试与数值分析 2.WSN三维覆盖优化 ...
- 基于金豺优化算法的函数寻优算法
文章目录 一.理论基础 1.金豺优化算法 (1)搜索空间公式 (2)探索阶段或搜索猎物 (3)开发阶段或围捕和突袭猎物 (4)从探索转向开发 2.GJO伪代码 二.仿真实验与结果分析 三.参考文献 一 ...
- 基于果蝇优化算法的函数寻优算法
文章目录 一.理论基础 二.算法步骤 1.启发 2.方向和距离 3.气味浓度判断值 4.适应度评估 5.寻找最优个体 6.飞行 7.迭代优化 三.案例背景 问题描述 四.MATLAB程序实现 1.清空 ...
- 基于蜂鸟优化算法的函数寻优算法
文章目录 一.理论基础 1.自搜索阶段 2.引导搜索阶段 3.HOA伪代码 二.仿真实验与分析 三.参考文献 一.理论基础 蜂鸟优化算法(Hummingbirds optimization algor ...
- 基于藤壶交配优化算法的函数寻优算法
文章目录 一.理论基础 1.藤壶交配优化算法 1.1 哈迪-温伯格(Hardy-Weinberg)法则 1.2 BMO 1.2.1 初始化 1.2.2 选择过程 1.2.3 繁殖 2.BMO算法伪代码 ...
- 基于阿基米德优化算法的函数寻优算法
文章目录 一.理论基础 1.算法步骤 (1)初始化 (2)更新密度和体积 (3)转移算子与密度算子 (4)勘探阶段 <1> 物体之间发生碰撞 <2> 物体之间无碰撞 <3 ...
最新文章
- Warning: React.createElement: type is invalid -- expected a string (for built-in components) or a cl
- 应用vb编程_用VB编程来解决实际生活问题
- 4个提高深度学习模型性能的技巧
- 【 karle 专栏 】Android 初探底层知识系列
- SppNet 多尺度训练
- rtp h264打包和解包
- 这些Windows 10隐藏秘技,你知道几个?
- App中如何实现消息推送
- HDU-6341 Problem J. Let Sudoku Rotate(dfs 剪枝)
- ADRC自抗扰控制学习
- 企业为何需要办公电话系统
- Windows备份文件夹脚本.bat
- 算法(Java)——双指针
- python 实现简单画板_Python图像处理之简单画板实现方法
- 考研逻辑-逻辑4主讲人:王超-2020-08-15
- 哪款蓝牙耳机音质好?2022音质好的蓝牙耳机盘点
- 【身份鉴别-身份标识】Linux系统用户及用户组管理
- Tms320F28335中PWM触发ADC16路级联顺序采样
- linux基础:shell中的sh与bash区别与常用命令
- 从Excel导入数据到数据库