当前位置: 首页 > news >正文

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(UBjLBj)+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×(Cjxi,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,jxi,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,jcrmin,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×(Cjxi,j)+m2×w2×(xp,jxi,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,jxi,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,jhrmin,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×(Ejxi,j)+m2×w2×(xrand,jxi,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,jxi,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,jprmin,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+m1w1(Ejxi,j)+m2w2(xrand,jxi,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算法模拟了疏散过程中人群的行为,其中人群在探索阶段被分为平静、羊群和恐慌组&#xff0…...

构建安全的数据库环境:群晖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; 开发工具&…...

MPNet:旋转机械轻量化故障诊断模型详解python代码复现

目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...

R语言AI模型部署方案:精准离线运行详解

R语言AI模型部署方案:精准离线运行详解 一、项目概述 本文将构建一个完整的R语言AI部署解决方案,实现鸢尾花分类模型的训练、保存、离线部署和预测功能。核心特点: 100%离线运行能力自包含环境依赖生产级错误处理跨平台兼容性模型版本管理# 文件结构说明 Iris_AI_Deployme…...

Spring Boot 实现流式响应(兼容 2.7.x)

在实际开发中,我们可能会遇到一些流式数据处理的场景,比如接收来自上游接口的 Server-Sent Events(SSE) 或 流式 JSON 内容,并将其原样中转给前端页面或客户端。这种情况下,传统的 RestTemplate 缓存机制会…...

Opencv中的addweighted函数

一.addweighted函数作用 addweighted()是OpenCV库中用于图像处理的函数,主要功能是将两个输入图像(尺寸和类型相同)按照指定的权重进行加权叠加(图像融合),并添加一个标量值&#x…...

Leetcode 3577. Count the Number of Computer Unlocking Permutations

Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接:3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯,要想要能够将所有的电脑解锁&#x…...

Swagger和OpenApi的前世今生

Swagger与OpenAPI的关系演进是API标准化进程中的重要篇章,二者共同塑造了现代RESTful API的开发范式。 本期就扒一扒其技术演进的关键节点与核心逻辑: 🔄 一、起源与初创期:Swagger的诞生(2010-2014) 核心…...

Java编程之桥接模式

定义 桥接模式(Bridge Pattern)属于结构型设计模式,它的核心意图是将抽象部分与实现部分分离,使它们可以独立地变化。这种模式通过组合关系来替代继承关系,从而降低了抽象和实现这两个可变维度之间的耦合度。 用例子…...

JavaScript基础-API 和 Web API

在学习JavaScript的过程中,理解API(应用程序接口)和Web API的概念及其应用是非常重要的。这些工具极大地扩展了JavaScript的功能,使得开发者能够创建出功能丰富、交互性强的Web应用程序。本文将深入探讨JavaScript中的API与Web AP…...

嵌入式学习之系统编程(九)OSI模型、TCP/IP模型、UDP协议网络相关编程(6.3)

目录 一、网络编程--OSI模型 二、网络编程--TCP/IP模型 三、网络接口 四、UDP网络相关编程及主要函数 ​编辑​编辑 UDP的特征 socke函数 bind函数 recvfrom函数(接收函数) sendto函数(发送函数) 五、网络编程之 UDP 用…...

在RK3588上搭建ROS1环境:创建节点与数据可视化实战指南

在RK3588上搭建ROS1环境:创建节点与数据可视化实战指南 背景介绍完整操作步骤1. 创建Docker容器环境2. 验证GUI显示功能3. 安装ROS Noetic4. 配置环境变量5. 创建ROS节点(小球运动模拟)6. 配置RVIZ默认视图7. 创建启动脚本8. 运行可视化系统效果展示与交互技术解析ROS节点通…...