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; 开发工具&…...
挑战杯推荐项目
“人工智能”创意赛 - 智能艺术创作助手:借助大模型技术,开发能根据用户输入的主题、风格等要求,生成绘画、音乐、文学作品等多种形式艺术创作灵感或初稿的应用,帮助艺术家和创意爱好者激发创意、提高创作效率。 - 个性化梦境…...
XCTF-web-easyupload
试了试php,php7,pht,phtml等,都没有用 尝试.user.ini 抓包修改将.user.ini修改为jpg图片 在上传一个123.jpg 用蚁剑连接,得到flag...
mongodb源码分析session执行handleRequest命令find过程
mongo/transport/service_state_machine.cpp已经分析startSession创建ASIOSession过程,并且验证connection是否超过限制ASIOSession和connection是循环接受客户端命令,把数据流转换成Message,状态转变流程是:State::Created 》 St…...
Java - Mysql数据类型对应
Mysql数据类型java数据类型备注整型INT/INTEGERint / java.lang.Integer–BIGINTlong/java.lang.Long–––浮点型FLOATfloat/java.lang.FloatDOUBLEdouble/java.lang.Double–DECIMAL/NUMERICjava.math.BigDecimal字符串型CHARjava.lang.String固定长度字符串VARCHARjava.lang…...
Axios请求超时重发机制
Axios 超时重新请求实现方案 在 Axios 中实现超时重新请求可以通过以下几种方式: 1. 使用拦截器实现自动重试 import axios from axios;// 创建axios实例 const instance axios.create();// 设置超时时间 instance.defaults.timeout 5000;// 最大重试次数 cons…...
rnn判断string中第一次出现a的下标
# coding:utf8 import torch import torch.nn as nn import numpy as np import random import json""" 基于pytorch的网络编写 实现一个RNN网络完成多分类任务 判断字符 a 第一次出现在字符串中的位置 """class TorchModel(nn.Module):def __in…...
深入浅出深度学习基础:从感知机到全连接神经网络的核心原理与应用
文章目录 前言一、感知机 (Perceptron)1.1 基础介绍1.1.1 感知机是什么?1.1.2 感知机的工作原理 1.2 感知机的简单应用:基本逻辑门1.2.1 逻辑与 (Logic AND)1.2.2 逻辑或 (Logic OR)1.2.3 逻辑与非 (Logic NAND) 1.3 感知机的实现1.3.1 简单实现 (基于阈…...
STM32---外部32.768K晶振(LSE)无法起振问题
晶振是否起振主要就检查两个1、晶振与MCU是否兼容;2、晶振的负载电容是否匹配 目录 一、判断晶振与MCU是否兼容 二、判断负载电容是否匹配 1. 晶振负载电容(CL)与匹配电容(CL1、CL2)的关系 2. 如何选择 CL1 和 CL…...
Web后端基础(基础知识)
BS架构:Browser/Server,浏览器/服务器架构模式。客户端只需要浏览器,应用程序的逻辑和数据都存储在服务端。 优点:维护方便缺点:体验一般 CS架构:Client/Server,客户端/服务器架构模式。需要单独…...
【从零开始学习JVM | 第四篇】类加载器和双亲委派机制(高频面试题)
前言: 双亲委派机制对于面试这块来说非常重要,在实际开发中也是经常遇见需要打破双亲委派的需求,今天我们一起来探索一下什么是双亲委派机制,在此之前我们先介绍一下类的加载器。 目录 编辑 前言: 类加载器 1. …...
