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.
相关文章:
ESC算法/逃生:一种基于人群疏散行为的优化方法
文章介绍了一种有用的算法,称为逃生或逃生算法(ESC),受人群疏散行为的启发,用于解决现实世界的案例和基准问题。ESC算法模拟了疏散过程中人群的行为,其中人群在探索阶段被分为平静、羊群和恐慌组࿰…...
构建安全的数据库环境:群晖NAS安装MySQL和phpMyAdmin详细步骤
文章目录 前言1. 安装MySQL2. 安装phpMyAdmin3. 修改User表4. 本地测试连接MySQL5. 安装cpolar内网穿透6. 配置MySQL公网访问地址7. 配置MySQL固定公网地址8. 配置phpMyAdmin公网地址9. 配置phpmyadmin固定公网地址 前言 本文将详细讲解如何在群晖NAS上安装MySQL及其数据库管理…...
【人工智能】深入理解图神经网络(GNN):用Python实现社交网络节点分类与分子结构分析
解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界 《Python OpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门! 图神经网络(Graph Neural Network, GNN)是近年来在深度学习领域迅速发展的新兴方向,主要用于处理图结构数据。GNN在社交网络分析、化学分…...
Qt 日志文件的滚动写入
Qt 日志文件的滚动写入 flyfish 日志文件的滚动写入功能。在日志文件达到10MB时创建新的日志文件,并且在总日志文件大小达到10GB时开始覆盖最早的日志文件 以监控一个文件夹的写日志为例 日志文件创建与管理 初始化日志文件:在FileMonitor类的构造函…...
【c语言】数据包捕获和分析工具
请解释一下数据包捕获和分析工具(如Wireshark)的工作原理和用途。 数据包捕获和分析工具,如Wireshark(前身为Ethereal),是一种网络协议分析软件,它允许用户实时监控、抓取并分析计算机网络中的网…...
移情别恋c++ ദ്ദി˶ー̀֊ー́ ) ——14.哈希(2)(模拟实现)
1.概念介绍 1.1开散列 开散列(Open Hashing),也叫链地址法,是一种解决哈希冲突的方法。每个哈希表槽位保存一个链表,所有散列到同一位置的元素都存储在该链表中。当插入元素发生冲突时,将新元素添加到相应…...
请描述一下JVM(Java虚拟机)的生命周期及其对应用程序性能的影响
1、请描述一下JVM(Java虚拟机)的生命周期及其对应用程序性能的影响。 JVM(Java虚拟机)的生命周期主要涉及以下几个阶段:加载、验证、准备、解析、执行、卸载。每个阶段都有其特定的作用和影响。 加载:JVM…...
展会邀约|加速科技与您相约IC China 2024!
第二十一届中国国际半导体博览会( IC China 2024)将于 2024 年11月18日—11月20日在北京国家会议中心举行。加速科技将携高性能测试机ST2500EX、ST2500E、eATE及全系测试解决方案亮相E2馆B150展位。博览会期间,将同期举办"半导体产业前沿…...
鸿蒙中服务卡片数据的获取和渲染
1. 2.在卡片中使用LocalStorageProp接受传递的数据 LocalStorageProp("configNewsHead") configNewsHeadLocal: ConfigNewsHeadInfoItem[] [] 注意:LocalStorageProp括号中的为第一步图片2中的键 3.第一次在服务卡片的第一个卡片中可能会获取不到数据…...
运维篇-修复centos7无法下载docker问题
修复centos7无法下载docker问题 1、安装docker时报错2、docker无法下载镜像 1、安装docker时报错 linux的centos系统,安装docker时会报错 –> Finished Dependency Resolution Error: Package: glibc-2.17-307.el7.1.i686 (base) Requires: glibc-common 2.17…...
【论文阅读】WaDec: Decompiling WebAssembly Using Large Language Model
论文阅读笔记:WaDec: Decompiling WebAssembly Using Large Language Model 1. 来源出处 论文标题: WaDec: Decompiling WebAssembly Using Large Language Model作者: Xinyu She, Yanjie Zhao, Haoyu Wang会议: 39th IEEE/ACM International Conference on Automated Softwar…...
redis类型介绍
1. 字符串(String): • 简介:最基础的数据类型,可以存储任何形式的字符串,包括文本数据和数字数据。 • 常用操作:SET、GET、INCR、DECR等。 2. 列表(List): …...
kubernetes如何配置默认存储
如果不想每次都创建PV,希望k8s集群中能够配置号默认存储,然后根据你的PVC自动创建PV,就需要安装一个默认存储,也就是storageclass 什么是storageclass Kubernetes提供了一套可以自动创建PV的机制,即:Dyna…...
【微服务】Spring AI 使用详解
目录 一、前言 二、Spring AI 概述 2.1 什么是Spring AI 2.2 Spring AI 特点 2.3 Spring AI 带来的便利 2.4 Spring AI 应用领域 2.4.1 聊天模型 2.4.2 文本到图像模型 2.4.3 音频转文本 2.4.4 嵌入大模型使用 2.4.5 矢量数据库支持 2.4.6 数据工程ETL框架 三、Sp…...
DataGrip 连接 dm
参考链接 使用DataGrip链接达梦数据库_datagrip连接达梦数据库-CSDN博客 下载 jdbc 驱动包 第一种 通过链接下载:下载 第二种【特指 window 安装包】 在达梦安装包 iso 文件里面 source/drivers/jdbc 将驱动添加进 DataGrip 选中 jdbc 驱动包,然后选…...
数据库监控工具DBdoctor v3.2.4.3版本发布,新增对openGauss、Vastbase G100的支持!
新引擎扩展 新增对openGauss数据库的支持:支持对openGauss数据库的SQL审核、实例巡检、性能洞察、锁透视、根因诊断、基础监控、索引推荐、存储分析; 新增对Vastbase G100数据库的支持:支持对Vastbase G100数据库的SQL审核、实例巡检、性能洞…...
Git 常用命令大全与详解
Git 是一种广泛使用的分布式版本控制系统。无论是管理个人项目还是进行团队协作,掌握 Git 的常用命令都是开发者必备的技能之一。本文将介绍一些常用的 Git 命令,并对其进行详细说明。 1. 基础命令 初始化仓库 git init:在当前目录下初始化…...
执行flink sql连接clickhouse库
手把手教学,flink connector打通clickhouse大数据库,通过下发flink sql,来使用ck。 组件版本jdk1.8flink1.17.2clickhouse23.12.2.59 1.背景 flink官方不支持clickhouse连接器,工作中难免会用到。 2.方案 利用GitHub大佬提供…...
什么是C++中的友元函数和友元类?
友元函数(Friend Function)和 友元类(Friend Class)是用于控制类的访问权限的机制。这允许特定的函数或类访问另一个类的私有成员和保护成员,打破了 C 的封装性规则。 友元函数 定义 友元提供了不同类的成员函数之间…...
基于Spring Boot+Vue的多媒体素材管理系统的设计与实现
一.系统开发工具与环境搭建 1.系统设计开发工具 后端使用Java编程语言的Spring boot框架 项目架构:B/S架构 运行环境:win10/win11、jdk17 前端: 技术:框架Vue.js;UI库:ElementUI; 开发工具&…...
在鸿蒙HarmonyOS 5中实现抖音风格的点赞功能
下面我将详细介绍如何使用HarmonyOS SDK在HarmonyOS 5中实现类似抖音的点赞功能,包括动画效果、数据同步和交互优化。 1. 基础点赞功能实现 1.1 创建数据模型 // VideoModel.ets export class VideoModel {id: string "";title: string ""…...
MVC 数据库
MVC 数据库 引言 在软件开发领域,Model-View-Controller(MVC)是一种流行的软件架构模式,它将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。这种模式有助于提高代码的可维护性和可扩展性。本文将深入探讨MVC架构与数据库之间的关系,以…...
Map相关知识
数据结构 二叉树 二叉树,顾名思义,每个节点最多有两个“叉”,也就是两个子节点,分别是左子 节点和右子节点。不过,二叉树并不要求每个节点都有两个子节点,有的节点只 有左子节点,有的节点只有…...
C#中的CLR属性、依赖属性与附加属性
CLR属性的主要特征 封装性: 隐藏字段的实现细节 提供对字段的受控访问 访问控制: 可单独设置get/set访问器的可见性 可创建只读或只写属性 计算属性: 可以在getter中执行计算逻辑 不需要直接对应一个字段 验证逻辑: 可以…...
push [特殊字符] present
push 🆚 present 前言present和dismiss特点代码演示 push和pop特点代码演示 前言 在 iOS 开发中,push 和 present 是两种不同的视图控制器切换方式,它们有着显著的区别。 present和dismiss 特点 在当前控制器上方新建视图层级需要手动调用…...
NPOI操作EXCEL文件 ——CAD C# 二次开发
缺点:dll.版本容易加载错误。CAD加载插件时,没有加载所有类库。插件运行过程中用到某个类库,会从CAD的安装目录找,找不到就报错了。 【方案2】让CAD在加载过程中把类库加载到内存 【方案3】是发现缺少了哪个库,就用插件程序加载进…...
关于uniapp展示PDF的解决方案
在 UniApp 的 H5 环境中使用 pdf-vue3 组件可以实现完整的 PDF 预览功能。以下是详细实现步骤和注意事项: 一、安装依赖 安装 pdf-vue3 和 PDF.js 核心库: npm install pdf-vue3 pdfjs-dist二、基本使用示例 <template><view class"con…...
k8s从入门到放弃之HPA控制器
k8s从入门到放弃之HPA控制器 Kubernetes中的Horizontal Pod Autoscaler (HPA)控制器是一种用于自动扩展部署、副本集或复制控制器中Pod数量的机制。它可以根据观察到的CPU利用率(或其他自定义指标)来调整这些对象的规模,从而帮助应用程序在负…...
【Kafka】Kafka从入门到实战:构建高吞吐量分布式消息系统
Kafka从入门到实战:构建高吞吐量分布式消息系统 一、Kafka概述 Apache Kafka是一个分布式流处理平台,最初由LinkedIn开发,后成为Apache顶级项目。它被设计用于高吞吐量、低延迟的消息处理,能够处理来自多个生产者的海量数据,并将这些数据实时传递给消费者。 Kafka核心特…...
RLHF vs RLVR:对齐学习中的两种强化方式详解
在语言模型对齐(alignment)中,强化学习(RL)是一种重要的策略。而其中两种典型形式——RLHF(Reinforcement Learning with Human Feedback) 与 RLVR(Reinforcement Learning with Ver…...
