ESC算法/逃生:一种基于人群疏散行为的优化方法

文章介绍了一种有用的算法,称为逃生或逃生算法(ESC),受人群疏散行为的启发,用于解决现实世界的案例和基准问题。ESC算法模拟了疏散过程中人群的行为,其中人群在探索阶段被分为平静、羊群和恐慌组,反映了不同级别的决策和情绪状态。

冷静的个体引导人群走向安全,放牧的个体在不太安全的区域模仿他人,恐慌的个体在最危险的区域做出不稳定的决定。随着算法过渡到利用阶段,人群趋向最优解决方案,类似于找到最安全的出口。该算法于2024年11月最新发表在JCR1区,中科院2区Top SCI期刊 Artificial Intelligence Review。

NO.1|ESC算法模型

ESC算法的有效性在CEC 2017和CEC 2022两个可调节问题大小测试套件上得到验证。ESC在CEC 2017的10维、30维测试以及CEC 2022的10维和20维测试中排名第一,在CEC 2017的50维和100维测试中排名第二。

(1)灵感来源

ESC的灵感来自人们在紧急疏散期间的行为。本节解释了人群疏散系统的背景,以及这些行为如何启发了ESC算法的设计。通过对人群中个体的不同反应------平静、羊群和恐慌------进行建模,ESC算法有效地平衡了解决复杂优化问题的探索和利用。

ESC的发展从紧急疏散期间人类行为的微妙动态中汲取了深刻的灵感(周等人2019年)。在紧急情景的混乱背景下------从自然灾害到人为威胁------个体表现出一系列受恐慌、环境条件和人群集体运动影响的行为。这些行为显著影响疏散过程的效率,凸显了适应性和战略规划的重要性。我们的算法通过计算镜头封装了这种复杂性,将观察到的人类行为转化为解决优化问题的元启发式框架。

ESC算法特别受到在人群中观察到的"领导者-追随者"系统的启发,在这个系统中,个人自然承担指导集体运动的角色。在这个系统中,领导者(静态和动态)出现影响疏散的方向和速度,而追随者构成了人群的主体,他们的运动受到周围人的影响。这一现象反映在我们的算法中,通过在算法的探索阶段将代理划分为平静、羊群和恐慌的人群,每个人都表现出不同的行为,共同推动搜索过程走向最佳解决方案。

冷静人群:人群中冷静的个体,他们以清晰的头脑评估情况并做出理性的决定。这些代理人有条不紊地搜索问题空间,类似于冷静的个体在疏散中找到有效的路径,引导他人通过他们稳定的影响。

羊群行为:个体在没有明确个人方向的情况下跟随人群的羊群行为反映在我们算法的一致性代理中。这种行为增强了利用阶段,因为代理聚集在搜索空间的有希望的区域,类似于人群中的个体如何跟随其他人到达感知的出口或安全区域。

恐慌人群:惊慌失措的个体,其不可预测和不稳定的动作既会阻碍也会出人意料地帮助寻找逃生路线,激发了我们算法中的多样化机制。他们的行为在恐慌代理中被复制,引入随机性并防止过早收敛到局部最优,类似于人群中的恐慌如何导致发现非常规出口。

通过ESC算法,我们利用紧急情况下人群行为的内在智慧,将平静、羊群和恐慌的相互作用转化为计算模型。这种方法不仅为算法设计提供了一个有用的视角,还强调了自然和人类现象作为开发高级问题解决策略灵感来源的潜力。

(2)初始化

x i , j = r a n d ⋅ ( U B j − L B j ) + L B j , i = 1 , 2 , ... ... , N , j = 1 , 2 , ... , n \begin{aligned}&x_{i,j} = rand \cdot(UB_j - LB_j) +LB_j, i = 1, 2,\ldots\ldots, N,j= 1, 2,\ldots, n\end{aligned} xi,j=rand⋅(UBj−LBj)+LBj,i=1,2,......,N,j=1,2,...,n

LB为下届,UB为上届,rand为0到1之间的随机数,xij为种群位置。初始化总体后,使用适应度函数f评估每个个体的适应度 。然后根据适应度按升序对群体进行排序,将最优秀的个体存储在精英池E中,该参数表示群体发现的潜在安全出口的数量。
E = { x ( 1 ) , x ( 2 ) , ... , x ( exist) } {{E}}=\{{{{x}}}{(1)},{{{x}}}{(2)},\dots ,{{{x}}}_{(\text{exist)}}\} E={x(1),x(2),...,x(exist)}

(3)恐慌指数和迭代过程

ESC算法对迭代过程进行建模,以反映人群在疏散过程中不断变化的行为。该算法根据个人运动的分类调整其平静、一致或恐慌群体,对应疏散过程中的不同行为反应在每次迭代t开始时,恐慌指数P(t)计算如下:
P ( t ) = c o s ( π t 6T ) P(t)=\mathit{cos}\left(\frac{\pi t}{\text{6T}}\right) P(t)=cos(6Tπt)

恐慌指数反映了人群中恐慌的总体水平,数值越高表明行为越混乱。随着时间的推移,该指数会下降从0到迭代次数T,模拟人群对疏散环境的适应。

(4)冷静组更新

冷静群体中的个体行为理性,走向中心位置Cj,代表小组的集体决定:
x i , j new = x i , j + m 1 × ( w 1 × ( C j − x i , j ) + v c , j ) × P ( t ) {x}{i,j}^{\text{new}}={x}{i,j}+{m}{1}\times \left({w}{1}\times ({C}{j}-{x}{i,j})+{v}{c,j}\right)\times P(t) xi,jnew=xi,j+m1×(w1×(Cj−xi,j)+vc,j)×P(t)
v c , j = R c , j − x i , j + ϵ j {v}
{c,j}={R}{c,j}-{x}{i,j}+{\epsilon }{j} vc,j=Rc,j−xi,j+ϵj
R c , j = r m i n , j c + r i , j × ( r m a x , j c − r m i n , j c ) {R}
{c,j}={r}{min,j}^{c}+{r}{i,j}\times ({r}{max,j}^{c}-{r}{min,j}^{c}) Rc,j=rmin,jc+ri,j×(rmax,jc−rmin,jc)

(5)牧群更新(随大流组)

放牧个体遵循冷静和恐慌群体的行为。他们的位置会根据两者的影响进行更新:
x i , j new = x i , j + m 1 × ( w 1 × ( C j − x i , j ) + m 2 × w 2 × ( x p , j − x i , j ) + v h , j × P ( t ) ) {x}{i,j}^{\text{new}}={x}{i,j}+{m}{1}\times \left({w}{1}\times ({C}{j}-{x}{i,j})+{m}{2}\times {w}{2}\times ({x}{p,j}-{x}{i,j})+{v}{h,j}\times P(t)\right) xi,jnew=xi,j+m1×(w1×(Cj−xi,j)+m2×w2×(xp,j−xi,j)+vh,j×P(t))
v h , j = R h , j − x i , j + ϵ j {v}
{h,j}={R}{h,j}-{x}{i,j}+{\epsilon }{j} vh,j=Rh,j−xi,j+ϵj
R h , j = r m i n , j h + r i , j × ( r m a x , j h − r m i n , j h ) {R}
{h,j}={r}{min,j}^{h}+{r}{i,j}\times ({r}{max,j}^{h}-{r}{min,j}^{h}) Rh,j=rmin,jh+ri,j×(rmax,jh−rmin,jh)

(6)恐慌群更新

恐慌驱动的个体更不稳定地探索解决方案空间,受到潜在出口(精英池)和其他个体随机方向的影响:
x i , j new = x i , j + m 1 × ( w 1 × ( E j − x i , j ) + m 2 × w 2 × ( x rand, j − x i , j ) + v p , j × P ( t ) ) {x}{i,j}^{\text{new}}={x}{i,j}+{m}{1}\times \left({w}{1}\times ({E}{j}-{x}{i,j})+{m}{2}\times {w}{2}\times ({x}{\text{rand,}j}-{x}{i,j})+{v}{p,j}\times P(t)\right) xi,jnew=xi,j+m1×(w1×(Ej−xi,j)+m2×w2×(xrand,j−xi,j)+vp,j×P(t))
v p , j = R p , j − x i , j + ϵ j {v}
{p,j}={R}{p,j}-{x}{i,j}+{\epsilon }{j} vp,j=Rp,j−xi,j+ϵj
R p , j = r m i n , j p + r i , j × ( r m a x , j p − r m i n , j p ) {R}
{p,j}={r}{min,j}^{p}+{r}{i,j}\times ({r}{max,j}^{p}-{r}{min,j}^{p}) Rp,j=rmin,jp+ri,j×(rmax,jp−rmin,jp)

开发阶段

随着迭代的进行,超出T/2,算法将过渡到开发阶段,在该阶段,所有个体都被视为 Calm。重点转移到根据迄今为止确定的最佳解决方案进行微调。在此阶段,个体通过更接近 Elite Pool 的成员来完善自己的位置,Elite Pool 代表可能的安全出口和之前迭代中确定的最佳解决方案,以及从人群中随机选择的个体。这个过程模拟了人群逐渐向确定的最佳出口收敛。此阶段的位置更新由方程给出。
x i , j n e w = x i , j + m 1 ⋅ w 1 ⋅ ( E j − x i , j ) + m 2 ⋅ w 2 ⋅ ( x rand, j − x i , j ) {x}{i,j}^{new}={x}{i,j}+{m}{1}\cdot {w}{1}\cdot \left({E}{j}-{x}{i,j}\right)+{m}{2}\cdot {w}{2}\cdot \left({x}{\text{rand,}j}-{x}{i,j}\right) xi,jnew=xi,j+m1⋅w1⋅(Ej−xi,j)+m2⋅w2⋅(xrand,j−xi,j)

这允许个人通过更接近 Elite Pool 成员和随机选择的个人来优化他们的位置,模拟人群逐渐向确定的最佳出口汇聚。

Ref: Ouyang, K., Fu, S., Chen, Y. et al. Escape: an optimization method based on crowd evacuation behaviors. Artif Intell Rev 58, 19 (2025). https://doi.org/10.1007/s10462-024-11008-6.

相关推荐
香菜大丸32 分钟前
leetcode 面试150之 Z 字形变换
算法·leetcode
大保安DBA1 小时前
力扣2298. 周末任务计数
数据库·算法·leetcode
LuckyRich12 小时前
【贪心算法】贪心算法三
redis·算法·贪心算法
paopaokaka_luck2 小时前
基于Spring Boot+Unipp的博物馆预约小程序(协同过滤算法、二维码识别)【原创】
java·数据库·spring boot·后端·算法
Object~2 小时前
【第七课】Rust所有权系统(三)
算法
xxxxxmy2 小时前
移动零
java·算法·力扣
sweetheart7-72 小时前
LeetCode33. 搜索旋转排序数组(2024冬季每日一题 8)
c++·算法·二分查找·力扣·折半查找
九圣残炎3 小时前
【从零开始的LeetCode-算法】3239. 最少翻转次数使二进制矩阵回文 I
java·算法·leetcode
环境感知3 小时前
基于MATLAB的激光雷达与相机联合标定原理及实现方法——以标定板为例
开发语言·人工智能·数码相机·算法·matlab