智能优化算法:被囊群算法-附代码

智能优化算法:2020被囊群算法-附代码


摘要:被囊群优化(Tunicate Swarm Algorithm,TSA)是Satnam Kaur 等[1]提出的一种新的优化算法,它的灵感来自以在深海中成功生存被膜的成群行为,其优点在于操作简单,调整的参数少以及跳出局部最优的能力强。

1.算法原理

被膜动物是明亮的生物发光体,发出浅蓝色-绿色的光,可以在数米之外看到。被膜动物呈圆柱形,一端开口,另一端闭合。每个被膜动物的大小都有几毫米。在每个被膜组织中都有一个共同的胶状被膜,它有助于连接所有个体。然而,每一个被膜动物各自从周围的海水中取水,并通过心房虹吸管产生喷气推进。被膜动物是唯一一种能以这种流体喷射式推进力在海洋中移动的动物。这种推进力强大,可以使被膜动物在海洋中垂直迁移。被膜动物通常出现在500-800米深处,并在夜间向上迁移到地表水的上层。被膜动物的大小从几厘米到超过4米不等。被囊动物的喷气推进和群体行为(见图1)。
在这里插入图片描述

图1.被囊动物的群体行为

Tunicate具有在海洋中找到食物来源的能力。然而,在给定的搜索空间中,我们不知道食物的来源。被膜动物是利用其自身的两种行为来寻找食物来源,即寻找最佳。行为包括喷气推进和群体智能。为了对喷气推进行为进行数学建模,被膜应满足三个条件,即避免搜索种群之间的冲突、向最佳搜索个体的位置移动以及保持与最佳搜索个体的距离。然后,群体会根据个体的最优解更新位置。

1.1避免搜索冲突

<>x在这里插入图片描述

图2 避免搜索冲突

为了避免个体之间的搜索冲突, A ⃗ \vec{A} A 表示计算新的个体位置,如图2所示:
A ⃗ = G ⃗ M ⃗ G ⃗ = c 2 + c 3 − F ⃗ F ⃗ = 2 c 1 \vec{A} = \frac {\vec{G}}{\vec{M}}\\ \vec{G} = c_{2}+c_{3}-\vec{F}\\ \vec{F}=2c_{1} A =M G G =c2+c3F F =2c1
其中 G ⃗ \vec{G} G 代表重力作用, F ⃗ \vec{F} F 代表深海中的水流平流。 c 1 , c 2 , c 3 c_{1},c_{2},c_{3} c1,c2,c3是[0,1]之间的随机数。 M ⃗ \vec{M} M 代表个体间的互相作用力,其计算如下式:
M ⃗ = ∣ P m i n + c 1 . P m a x − P m i n ∣ \vec{M}=|P_{min} + c_{1}.P_{max}-P_{min}| M =Pmin+c1.PmaxPmin
其中 P m i n , P m a x P_{min},P_{max} Pmin,Pmax代表初始的相互作用速度范围,一般设定为[1,4]。

1.2 向最优邻居移动

在这里插入图片描述

图3 向最优邻居移动

避免搜索冲突后,个体向最优邻居移动如图3所示:
P D ⃗ = ∣ F S ⃗ − r a n d . P p ( x ) ⃗ ∣ \vec{PD}=|\vec{FS}-r_{and}.\vec{P_{p}(x)}| PD =FS rand.Pp(x)
其中, P D ⃗ \vec{PD} PD 代表食物与搜索个体之间的距离。 x x x代表当前迭代次数。 F S ⃗ \vec{FS} FS 代表食物的位置, P p ( x ) ⃗ \vec{P_{p}(x)} Pp(x) 代表个体的位置, r a n d r_{and} rand代表[0,1]之间的随机数。

1.3 向最优位置收敛

在这里插入图片描述

图4 向最有位置收敛

每个个体向最优位置靠近,如图4所示:
P p ( x ) ⃗ = { F S ⃗ + A ⃗ . P D ⃗ , r a n d > = 0.5 F S ⃗ − A ⃗ . P D ⃗ , r a n d < 0.5 \vec{P_{p}(x)} = \begin{cases} \vec{FS}+\vec{A}.\vec{PD},r_{and}>=0.5\\ \vec{FS}-\vec{A}.\vec{PD},r_{and}<0.5 \end{cases} Pp(x) ={FS +A .PD ,rand>=0.5FS A .PD ,rand<0.5
其中 P p ( x ’ ) ⃗ \vec{P_{p}(x^{’})} Pp(x) 代表更新后的位置。

1.4 种群行为

在这里插入图片描述

图5 种群位置更新

为了从数学上模拟被囊动物的群体行为,保存前两个最优解,并根据最佳搜索个体的位置更新其他搜索个体的位置。被膜动物的群体行为如下所示:
P p ( x + 1 ) ⃗ = P p ( x ) ⃗ + P p ( x + 1 ) ⃗ 2 + c 1 \vec{P_{p}(x+1)} = \frac {\vec{P_{p}(x)} + \vec{P_{p}(x+1)}}{2+c_{1}} Pp(x+1) =2+c1Pp(x) +Pp(x+1)
图5,显示了个体怎么根据 P p ( x ) ⃗ \vec{P_{p}(x)} Pp(x) 更新自身的位置。

1.5 算法流程

(1)初始化种群 P p ⃗ \vec{P_{p}} Pp
(2)初始化种群参数,边界条件;
(3)计算每个个体的适应度值;
(4)搜索最佳个体的位置;
(5)根据群体行为更新每个个体位置;
(6)调整超出给定搜索空间边界的个体位置。

(7)计算更新后的群体每个个体的适应度值,如果适应度由于之前,则更新 P p ⃗ \vec{P_{p}} Pp
(8)如果满足停止条件,则停止算法,否则重复步骤(5) - (8)。

(9)返回最优值

迭代过程如图6所示
在这里插入图片描述

图6 迭代过程

2. 算法结果:

在这里插入图片描述

参考文献:

[1]Satnam Kaur,Lalit K. Awasthi,A.L. Sangal,Gaurav Dhiman. Tunicate Swarm Algorithm: A new bio-inspired based metaheuristic paradigm for global optimization[J]. Engineering Applications of Artificial Intelligence,2020,90.

Matlab 代码地址:

改进算法

名称说明或者参考文献
信息共享的记忆被囊群算法(ITSA)[1]屈迟文,彭小宁.信息共享的记忆被囊群算法[J].模式识别与人工智能,2021,34(07):605-618.

Python 代码地址:

个人资料介绍

  • 2
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

智能算法研学社(Jack旭)

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

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

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

打赏作者

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

抵扣说明:

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

余额充值