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

社会力模型:Social force model for pedestrian dynamics

Social Force Model——社会力模型-CSDN博客

简介:

时间:1995

期刊:《Physical Review E》

作者:Dirk Helbing and P´eter Moln´ar

摘要:

提出一种描述行人运动的“社会力模型”。认为行人的运动可看作是受到一系列“社会力”的驱动,这些力反映了行人内在的动机,而非直接由外部物理接触产生。

模型主要包括以下几个方面:

加速项:行人以一定的期望速度前进,当实际速度偏离目标速度时,会有一个加速/减速过程使其趋向期望速度。

相互排斥力:行人与其他行人或障碍物之间保持一定距离,这种排斥作用通过一个随距离呈指数衰减的势能函数来描述。

吸引力:在某些情境下,行人会受到其他个体或物体的吸引,例如朋友、街头表演者或橱窗展示。

该模型将上述各项“力”相加,构成非线性耦合的 Langevin 方程,从而模拟行人群体的自组织现象,如动态车道形成以及通过狭窄通道时的往复交替现象。

创新点:

①首次将“社会力”这一概念引入行人运动的建模中

②多项力的综合考虑

③非线性耦合 Langevin 方程模拟随机性带来的个体差异和突发现象

④扩展性与普适性

相关工作:

加速项:

他/她想要尽可能舒适地到达某个目的地

 \overrightarrow{r_{\alpha }}(t):行人实际位置

\overrightarrow{r}_{\alpha }^{k}:行人的目标位置

如果行人的运动不受干扰,他/她将以一定的期望速度v_{\alpha }^{0}向期望方向\overrightarrow{e_{\alpha }}(t)行走

 \overrightarrow{v_{\alpha }}(t):实际速度偏差

\overrightarrow{v_{\alpha }^{0}}(t):期望速度

\tau _{\alpha }:松弛时间

相互排斥力:

行人与行人距离:

他/她与其他行人保持一定的距离

V_{\alpha \beta }(b):行人\alpha和行人\beta之间由于距离b产生的排斥势能

\overrightarrow{r_{\alpha \beta }}:行人\alpha和行人\beta相对位置 

原因:行人需要空间来进行下一步,而其他行人会考虑到这一点

行人与建筑距离: 

行人还与建筑物、墙壁、街道、障碍物等的边界保持一定的距离。 

U_{\alpha B }(\left \| \overrightarrow{r}_{\alpha B} \right \|): 行人\alpha和障碍物 B 之间由于距离\left \| \overrightarrow{r}_{\alpha B} \right \|而产生的排斥势能

\overrightarrow{r_{\alpha B }}:行人\alpha和障碍物 B 相对位置 

吸引力:

行人有时会被其他人(朋友、街头艺术家等)或物品(如橱窗展示)吸引。

 (W_{\alpha i}(\left \| \overrightarrow{r_{\alpha i}} \right \|),t):函数,表示行人\alpha对目标 i 的吸引力势能,这个势能随时间 t 和行人与目标之间的距离\left \| \overrightarrow{r}_{\alpha i} \right \|变化

(f_{\alpha i}(\left \| \overrightarrow{r_{\alpha i}} \right \|),t):行人\alpha由于目标 i 存在而感受到的吸引力

\overrightarrow{r_{\alpha i }}:行人\alpha和目标 i 之间的相对位置向量

与排斥力不同,吸引力\left \| \overrightarrow{f_{\alpha i}} \right \|通常随着时间 t 递减,因为行人对目标兴趣会随着时间推移而减少。

总效应:

综上所述,排斥和吸引对行人行为的影响由式给出

社会力模型定义: 

图示: 

 增加了一个波动项,它考虑了行为的随机变化。

相关代码: 

参考代码:

foreach(Agent agent in Agents){if (agent.IsActivity == true){Vector2 self_Force = Get_Self_Force(agent);Vector2 other_Force = Get_OtherAgents_Force(agent);Vector2 obstacle_Force = Get_Obstacle_Force(agent);Vector2 Sum = self_Force + other_Force + obstacle_Force;Vector2 Dex_speed = Sum / agent.Mass * Paramaters._ε;agent.Real_speed += Dex_speed * Paramaters._Scale;agent.Real_speed = GetRealSpeed(agent);agent.Position = new PointF(agent.Position.X + (agent.Real_speed.X * Paramaters.TimeStep),agent.Position.Y + (agent.Real_speed.Y * Paramaters.TimeStep));agent.Self = new RectangleF((agent.Position.X - agent.Radius), (agent.Position.Y - agent.Radius), agent.Radius * 2f, agent.Radius * 2f);}}

示例实现:

缺少吸引力部分

import numpy as np
import matplotlib.pyplot as plt# 定义行人类
class Pedestrian:def __init__(self, pos, vel, desired_direction, v0, tau):self.pos = np.array(pos, dtype=float)         # 当前位置 (二维向量)self.vel = np.array(vel, dtype=float)         # 当前速度 (二维向量)self.desired_direction = np.array(desired_direction, dtype=float)  # 期望运动方向(单位向量)self.v0 = v0                                  # 期望速度self.tau = tau                                # 调整时间常数# 驱动力:行人向其期望速度加速
def driving_force(ped):desired_velocity = ped.v0 * ped.desired_directionreturn (desired_velocity - ped.vel) / ped.tau# 排斥力函数:简单采用指数衰减模型
def repulsive_force(ped_i, ped_j, A=2.0, B=0.3):r_ij = ped_i.pos - ped_j.posdistance = np.linalg.norm(r_ij)if distance == 0:return np.array([0.0, 0.0])# 指向 ped_i 的单位向量direction = r_ij / distance# 排斥力大小force_magnitude = A * np.exp(-distance / B)return force_magnitude * direction# 更新单个行人状态:合成所有作用力并更新速度与位置
def update_pedestrian(ped, pedestrians, dt):F_drive = driving_force(ped)F_rep_total = np.array([0.0, 0.0])# 计算来自其他行人的排斥力for other in pedestrians:if other is not ped:F_rep_total += repulsive_force(ped, other)# 总作用力F_total = F_drive + F_rep_total# 更新速度(简单欧拉积分)ped.vel += F_total * dt# 更新位置ped.pos += ped.vel * dt# 主函数:初始化行人并进行简单模拟
def simulate(num_pedestrians=20, steps=500, dt=0.1):pedestrians = []# 随机生成行人初始状态for _ in range(num_pedestrians):pos = np.random.rand(2) * 10            # 在 10x10 区域内随机位置vel = np.zeros(2)# 设定所有行人均朝右运动desired_direction = np.array([1.0, 0.0])v0 = 1.3                              # 期望速度tau = 0.5                             # 调整时间常数pedestrians.append(Pedestrian(pos, vel, desired_direction, v0, tau))# 用于存储轨迹便于后续绘图trajectories = [ [ped.pos.copy()] for ped in pedestrians ]for _ in range(steps):# 更新每个行人的状态for ped in pedestrians:update_pedestrian(ped, pedestrians, dt)# 保存轨迹数据for i, ped in enumerate(pedestrians):trajectories[i].append(ped.pos.copy())# 绘制所有行人的轨迹plt.figure(figsize=(8, 8))for traj in trajectories:traj = np.array(traj)plt.plot(traj[:, 0], traj[:, 1])plt.scatter(traj[0, 0], traj[0, 1], c='green', marker='o')   # 起点plt.scatter(traj[-1, 0], traj[-1, 1], c='red', marker='x')     # 终点plt.title("社会力模型下行人运动轨迹")plt.xlabel("X 位置")plt.ylabel("Y 位置")plt.grid(True)plt.show()if __name__ == "__main__":simulate()

相关文章:

社会力模型:Social force model for pedestrian dynamics

Social Force Model——社会力模型-CSDN博客 简介: 时间:1995 期刊:《Physical Review E》 作者:Dirk Helbing and Peter Molnar 摘要: 提出一种描述行人运动的“社会力模型”。认为行人的运动可看作是受到一系列…...

机器学习数学通关指南

✨ 写在前面 💡 在代码的世界里沉浸了十余载,我一直自诩逻辑思维敏捷,编程能力不俗。然而,当我初次接触 DeepSeek-R1 并领略其清晰、系统的思考过程时,我不禁为之震撼。那一刻,我深刻意识到:在A…...

【Mac】2025-MacOS系统下常用的开发环境配置

早期版本的一个环境搭建参考 1、brew Mac自带终端运行: /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" Installation successful!成功后运行三行命令后更新环境(xxx是mac的username&a…...

# C# 中堆(Heap)与栈(Stack)的区别

在 C# 中,堆和栈是两种不同的内存分配机制,它们在存储位置、生命周期、性能和用途上存在显著差异。理解堆和栈的区别对于优化代码性能和内存管理至关重要。 1. 栈(Stack) 1.1 定义 栈是一种后进先出(LIFO&#xff0…...

ubuntu离线安装nvidia-container-runtime

参考文章 ubuntu系统docker20.4版本安装nvidia-container-runtime3.11.0-1版本(离线安装nvidia-docker) - jokerMM - 博客园 https://zhuanlan.zhihu.com/p/15194336245 一、软件地址 Index of /nvidia-docker/libnvidia-container/stable/ 从上述地地址——进入对应系统—…...

用Python+Flask打造可视化武侠人物关系图生成器:从零到一的实战全记录

用PythonFlask打造可视化武侠人物关系图生成器:从零到一的实战全记录 一、缘起:一个程序小白的奇妙探索之旅 作为一个接触Python仅13天的编程萌新,我曾以为开发一个完整的应用是遥不可及的事情。但在DeepSeek的帮助下,我竟用短短…...

学习笔记-DeepSeek在开源第四天发布DualPipe和EPLB两项技术

在AI模型训练的进程中,优化并行策略对于提升训练效率和资源利用率至关重要。DeepSeek在开源周第四天发布的DualPipe和EPLB两项技术,为V3/R1训练场景下的并行优化提供了创新解决方案。 DualPipe:双向管道并行算法 技术原理: Dua…...

C++入门基础知识1

今天,我们正式来学习C,由于C是在C的基础之上,容纳进去了面向对象编程思想,并增加了许多有用的库,以及编程范式等。熟悉C语言之后,对C学习有一定的帮助。 现在我们这篇主要是: 1. 补充C语言语法…...

神经网络AI原理回顾

长期记忆存储在大模型的参数权重中,不经过推理和编码无法读取,且必须依赖输入的提示,因为大模型不会无缘无故的自言自语,毕竟输入层是它唯一 与外界交互的窗口。 目前个性化大模型的局限就是训练成本过高,除非使用RAG&…...

PPT 小黑第38套

对应大猫40 幻灯片母板-最后一页-重命名为奇数页 奇偶页-点中标题-形状格式-形状填充-青色 最后一页页码左对齐 更换幻灯片背景:设计-设置背景格式-图片填充 【开始】-段落居中,对齐文本-中部对齐,排列-对齐-底端,-再水平居中…...

主时钟与虚拟时钟约束

1、主时钟约束 1.1、主时钟约束语法&#xff1a; create_clock -name< clock_name > -period <period> -waveform{ <rise_time> <fall_time> } [get_ports< port_name >] 说明&#xff1a; name 之后的<clock_name> 是clk 的name&a…...

K8S学习之基础六:k8s中pod亲和性

Pod节点亲和性和反亲和性 podaffinity&#xff1a;pod节点亲和性指的是pod会被调度到更趋近与哪个pod或哪类pod。 podunaffinity&#xff1a;pod节点反亲和性指的是pod会被调度到远离哪个pod或哪类pod 1. Pod节点亲和性 requiredDuringSchedulingIgnoredDuringExecution&am…...

如何通过rust实现自己的web登录图片验证码

在进行web系统开发时&#xff0c;为保障系统登录安全&#xff0c;登录页面中的验证码必不可少。在java中&#xff0c;我们可以利用相应的2D图像库快速生成图形验证码&#xff0c;而对于rust&#xff0c;我们没有合适的标准库进行图像验证码的生成。今天&#xff0c;我们通过使用…...

盛京开源社区加入 GitCode,书写东北开源生态新篇章

在数字化转型与开源技术蓬勃发展的浪潮下&#xff0c;开源社区已成为推动技术创新的核心力量。盛京开源社区&#xff08;SJOSC&#xff09;作为沈阳地区的开源交流平台&#xff0c;始终致力于连接开发者、企业及高校&#xff0c;构建区域技术生态圈。 现在&#xff0c;盛京开源…...

QKV 注意力机制在Transformer架构中的作用,和卷积在卷积神经网络中的地位,有哪些相似之处?

QKV 注意力机制在Transformer架构中的作用&#xff0c;和卷积在卷积神经网络中的地位&#xff0c;有哪些相似之处&#xff1f; QKV&#xff08;Query-Key-Value&#xff09;注意力机制在Transformer架构和卷积在卷积神经网络&#xff08;CNN&#xff09;中都起着核心作用&…...

高效与高并发API开发:使用FastAPI与Redis实现请求限制与速率控制

高效与高并发API开发&#xff1a;使用FastAPI与Redis实现请求限制与速率控制 &#x1f4da; 目录 API速率限制的基本概念Redis实现分布式速率限制防止DDoS攻击的常见策略基于IP或用户身份的访问频率控制 1. API速率限制的基本概念 API速率限制&#xff08;Rate Limiting&…...

Centos7源码编译安装Sqlite最新版本

下载源码 https://www.sqlite.org/download.html 复制下载链接&#xff0c;然后用 wget 下载 wget https://www.sqlite.org/2025/sqlite-autoconf-3490100.tar.gz 解压缩编译安装 tar -zxf sqlite-autoconf-3490100.tar.gz cd sqlite-autoconf-3490100 ./configure --prefi…...

mybatis热点面试题第五弹

1. MyBatis与Hibernate的区别 答案&#xff1a; MyBatis&#xff1a; 不完全是一个ORM框架&#xff0c;需要手动编写SQL语句&#xff0c;灵活性高&#xff0c;适合对数据库操作有高性能要求的场景。缺点是无法做到数据库无关性&#xff0c;如果需要支持多种数据库&#xff0c…...

KTransformers部署 使671B DeepSeek R1成「办公桌标配」

671B DeepSeek R1成「办公桌标配」 1. 什么是KTransformersDeepSeek 版本技术破局密钥&#xff1a;强稀疏化MoE模型需要全新的私有化架构设计趋境AI大模型推理软硬一体工作站——让大模型推理门槛降低10倍 2. 准备环境3 环境准备与资源下载4 安装过程1. linux环境搭建2. window…...

sql-labs less5-8

Less-5 双注入 基于单引号的字符型注入&#xff0c;涉及二次查询注入 Less-6 双注入 基于双引号的字符型注入&#xff0c;涉及二次查询注入 Less-7 字符型注入 基于单引号变形注入之导入文件 Less-8 布尔盲注 不返回任何错误信息&#xff0c;通过布尔逻辑判断 以下…...

告别MainTest!用XML+CAPL在CANoe里做可视化勾选测试(附.can文件避坑指南)

告别MainTest&#xff01;用XMLCAPL在CANoe里构建可视化勾选测试系统 在车载电子测试领域&#xff0c;CAPL脚本一直是工程师们的得力工具&#xff0c;但传统基于MainTest的测试架构存在明显局限——每次修改测试用例组合都需要重新编译脚本&#xff0c;这在快速迭代的开发环境中…...

5分钟快速上手Py-ART:气象雷达数据分析的终极Python工具包

5分钟快速上手Py-ART&#xff1a;气象雷达数据分析的终极Python工具包 【免费下载链接】pyart The Python-ARM Radar Toolkit. A data model driven interactive toolkit for working with weather radar data. 项目地址: https://gitcode.com/gh_mirrors/py/pyart Py-…...

边缘机器学习实战:模型量化、剪枝与TensorRT部署全解析

1. 项目概述&#xff1a;当机器学习遇见边缘“边缘计算”和“机器学习”这两个词&#xff0c;这几年在技术圈里都快被说烂了。但当你真正把一个训练好的模型&#xff0c;塞进一个算力有限、功耗敏感、网络时有时无的边缘设备里&#xff0c;让它去实时处理摄像头画面、分析传感器…...

学术论文翻译翻车重灾区!Perplexity翻译查询功能如何通过引用锚点保留+LaTeX公式智能隔离实现零失真输出(仅限Pro+订阅用户可见的隐藏模式)

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;学术论文翻译翻车重灾区的底层归因分析 学术论文翻译失准并非偶然现象&#xff0c;其背后存在系统性语言学、认知科学与工程实践三重张力。当非母语研究者依赖通用大模型或词典式工具进行技术文本转译时…...

嵌入式开发实战:基于RZ/G2L异构处理器与Linux的工业物联网平台深度体验

1. 项目概述&#xff1a;一次“零成本”的嵌入式开发深度体验最近在嵌入式开发圈里&#xff0c;一个消息引起了不小的讨论&#xff1a;米尔电子联合瑞萨&#xff0c;推出了基于RZ/G2L高性能处理器的开发板免费试用活动。简单来说&#xff0c;就是开发者可以申请免费借用这块开发…...

从零打造专属显示器:面板、驱动板与外壳的实战选型指南

1. 为什么选择DIY显示器&#xff1f; 最近两年&#xff0c;显示器市场出现了不少高性价比的产品&#xff0c;但作为一个喜欢折腾的极客&#xff0c;我总觉得市面上的显示器少了点什么。要么是接口不够用&#xff0c;要么是外观太普通&#xff0c;要么就是某些参数达不到我的要求…...

Vue3 + Element Plus 项目里,用ECharts 5.4.3做个动态数据大屏(附完整代码)

Vue3 Element Plus 与 ECharts 5.4.3 构建企业级动态数据大屏实战 数据可视化大屏已成为现代企业监控业务指标、分析趋势的核心工具。本文将深入探讨如何基于最新的 Vue3 和 Element Plus 技术栈&#xff0c;结合 ECharts 5.4.3 的强大可视化能力&#xff0c;构建一个高性能、…...

Gitee项目管理为什么成为中国团队首选:本土化、安全合规与DevOps全链路的三重优势

作者&#xff1a;DevOps效能研究团队 资料依据&#xff1a;Gitee官方数据&#xff08;2025年Q2&#xff09;、《2025中国开发者生态报告》、中国信息通信研究院DevOps能力成熟度评估报告 适读对象&#xff1a;技术负责人、项目经理、研发总监、企业CTO、数字化转型决策者 核心结…...

告别Minecraft模组英文界面:MASA全家桶汉化包完全指南

告别Minecraft模组英文界面&#xff1a;MASA全家桶汉化包完全指南 【免费下载链接】masa-mods-chinese 一个masa mods的汉化资源包 项目地址: https://gitcode.com/gh_mirrors/ma/masa-mods-chinese 你是否曾经在Minecraft中面对满屏的英文模组界面感到困惑&#xff1f;…...

深度解密Il2CppDumper:Unity逆向工程的高效实战指南

深度解密Il2CppDumper&#xff1a;Unity逆向工程的高效实战指南 【免费下载链接】Il2CppDumper Unity il2cpp reverse engineer 项目地址: https://gitcode.com/gh_mirrors/il/Il2CppDumper Il2CppDumper是一款专为Unity游戏逆向工程设计的强大工具&#xff0c;能够帮助…...