混沌精英黏菌算法-附代码

混沌精英黏菌算法


摘要:为进一步提高标准黏菌算法的收敛速度和求解精度,采用 Tent 混沌映射丰富种群多样性,同时引入精英反向学习策略扩大搜索范围。

1.黏菌算法

基础黏菌算法的具体原理参考,我的博客:https://blog.csdn.net/u011835903/article/details/113710762

2.改进黏菌算法

2.1 混沌初始化

采用 Tent 混沌映射在 SMA 算法迭代初期进行种群初始化,使得个体位置均匀分布在搜索空间内, 有助于提高算法求解 效率。Tent 混池映射的数学表达式为
X n + 1 = { 2 X n , 0 ⩽ X n < 1 2 2 ( 1 − X n ) , 1 2 ⩽ X n ⩽ 1 , n = 0 , 1 , 2 , ⋯   (10) X_{n+1}=\left\{\begin{array}{ll} 2 X_n, & 0 \leqslant X_n<\frac{1}{2} \\ 2\left(1-X_n\right), & \frac{1}{2} \leqslant X_n \leqslant 1 \end{array}, n=0,1,2, \cdots\right. \tag{10} Xn+1={2Xn,2(1Xn),0Xn<2121Xn1,n=0,1,2,(10)
式(10)中: n n n 表示映射次数; X n X_n Xn 表示第 n n n 次映射函 数值。

2.2 精英反向学习策略

反向学习策略(opposition-based learning, OBL) 是由 Tizhoosh [ 19 ] { }^{[19]} [19] 于 2005 年提出一种优化机制, 其主 要原理是针对当前可行解, 同时计算和评估其反向 解, 从中选取较优的解作为下一代个体 [ 20 ] { }^{[20]} [20] 。精英反 向学习 (elite opposition-based learning, EOBL) 在前 者基础上利用精英个体比一般个体包括更加丰富 的有效信息和反向种群来增加种群多样性 [ 21 ] { }^{[21]} [21], 扩大 搜索空间; 通讨引入 EOBL 策略能够有效增强算法 的全局搜索能力, 进一步提高算法的寻优性能。假 设当前黏窗种群中精英个体(即当前最优解)为 X i j = ( X i , 1 , X i , 2 , ⋯ X i , D ) X_{i j}=\left(X_{i, 1}, X_{i, 2}, \cdots X_{i, D}\right) Xij=(Xi,1,Xi,2,Xi,D), 其中 D D D 为优化问题的空间 维度, 则其精英反向解 X i j ∗ = ( X i , 1 ∗ , X i , 2 ∗ , ⋯   , X i , D ∗ ) X_{i j}^*=\left(X_{i, 1}^*, X_{i, 2}^*, \cdots, X_{i, D}^*\right) Xij=(Xi,1,Xi,2,,Xi,D) 可 以定义为
X i , j ∗ = α ( L B j + U B j ) − X i , j , j = 1 , 2 , ⋯   , D (11) X_{i, j}^*=\alpha\left(\mathrm{LB}_j+\mathrm{UB}_j\right)-X_{i, j}, \quad j=1,2, \cdots, D \tag{11} Xi,j=α(LBj+UBj)Xi,j,j=1,2,,D(11)
式 (11) 中: X i , j X_{i, j} Xi,j 为第 j j j 维个体的数值; α \alpha α 为区间 [ 0 , 1 ] [0,1] [0,1] 内服从正态分布的随机数; ( L B j , U B j ) \left(\mathrm{LB}_j, \mathrm{UB}_j\right) (LBj,UBj) 表示第 j j j 维搜 索空间的动态边界, 其定义为
L B j = min ⁡ ( X i , j ) ( 12 ) \mathrm{LB}_j=\min \left(X_{i, j}\right) (12) LBj=min(Xi,j)(12)
U B j = max ⁡ ( X i , j ) ( 13 ) \mathrm{UB}_j=\max \left(X_{i, j}\right) (13) UBj=max(Xi,j)(13)
式中: min ⁡ ( X i , j ) 、 max ⁡ ( X i , j ) \min \left(X_{i, j}\right) 、 \max \left(X_{i, j}\right) min(Xi,j)max(Xi,j) 分别为第 j j j 维个体的最小 值和最大值。
当生成的反向解超出 ( L B j , U B j ) \left(\mathrm{LB}_j, \mathrm{UB}_j\right) (LBj,UBj) 边界范眷时, 使用随机生成的方法进行越界重置, 具体描述为
X i , j ∗ = rand ⁡ ( L B j , U B j ) ( 14 ) X_{i, j}^*=\operatorname{rand}\left(\mathrm{LB}_j, \mathrm{UB}_j\right)(14) Xi,j=rand(LBj,UBj)(14)
综合上述, 改进的混池精英秥菌算法 (chaotic elite slime mould algorithm, CESMA) 可以利用伪代 码表述其执行流程,如表 1 所示。

请添加图片描述

3.实验结果

请添加图片描述

4.参考文献

[1]肖亚宁,孙雪,李三平,姚金言.基于混沌精英黏菌算法的无刷直流电机转速控制[J].科学技术与工程,2021,21(28):12130-12138.

5.Matlab代码

6.python代码

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
以下是黏菌算法SMA的伪代码: ``` Initialize the slime mold population Compute the initial fitness of each slime mold While stopping criterion is not met: For each slime mold i in the population: Compute the attractiveness of each neighbor j: a_i,j = exp(-d_i,j^2/(2*r^2)) where d_i,j is the distance between slime mold i and neighbor j, and r is the interaction radius Compute the aggregation force on slime mold i: F_i = 1/n_i * sum(a_i,j*(x_j - x_i)) where n_i is the number of neighbors of slime mold i, x_j is the position of neighbor j, and x_i is the position of slime mold i Update the position of slime mold i: x_i = x_i + delta_t*F_i + epsilon_i where delta_t is the time step, and epsilon_i is a vector of random values drawn from a normal distribution If the new position x_i is outside the search space, reposition it randomly within the search space Compute the fitness of the new position x_i If the fitness of the new position is better than the fitness of the old position, replace the old position with the new position If the fitness of the new position is better than the fitness of the best position in the population, update the best position End for End while ``` 其中,黏菌算法SMA通过模拟黏菌聚集的行为来进行优化。每个黏菌代表一个潜在解,其位置表示解的参数值。黏菌之间通过相互吸引的力量进行聚集,力量的强度由距离和一个交互半径决定。每个黏菌根据其邻居的吸引力和聚集力来更新其位置。在搜索过程中,每个黏菌还有一定概率进行随机游走以增加搜索多样性。最终,算法的输出结果是最优解。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

智能算法研学社(Jack旭)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值