地铁站人流仿真系统是一个基于Python和PyQt5开发的仿真系统,用于模拟地铁站内人群流动情况。系统采用有向图模型构建地铁站拓扑结构,通过智能体模拟乘客行为,实现实时流动仿真、数据分析和可视化展示。
-
F1 地铁站拓扑建模
- 基于有向图构建地铁站拓扑结构
- 支持多楼层、多出口、多线路
- 节点包含位置、容量、面积、基础速度等属性
- 边包含距离、宽度、容量、基础通行时间等属性
-
F2 人群生成与行为模拟
- 节点密度计算 :在 simulation_engine.py 的 _update_densities 方法中实现,计算公式为 density = count / area
- 速度衰减 :在 passenger.py 的 _get_speed_factor 方法中实现,使用了分段函数
- 完整的状态机:进站→购票→安检→闸机→候车→乘车→出站
- 基于密度的速度调整
- 路径重新规划功能
-
F3 实时流动仿真
- 离散时间步推进
- 队列管理和服务模型
- 冲突检测和解决
- 动态密度和拥堵系数计算
-
F4 数据分析与统计
- 实时数据收集和分析
- 瓶颈识别和拥堵点分析
- 热力图生成
- 详细的分析报告
-
F5 路径规划与优化
- 多种路径规划模式:最短时间、最短距离、多目标优化、最少区域切换
- 路径缓存机制提高性能
- 多目标优化算法
main.py是一个 批处理模式 的脚本,它的运行流程是:
-
快速执行仿真 :
- 运行100个时间步的仿真( run_simulation 方法)
- 每10步打印一次进度,但没有任何可视化
- 所有计算在后台快速完成
-
生成静态结果 :
- 仿真结束后,一次性生成各种静态图像( generate_visualizations 方法)
- 包括地铁站拓扑图、乘客分布图和密度热力图
-
打印分析报告 :
- 生成并打印分析报告( generate_analytics 方法)
- 包括乘客统计、密度统计和瓶颈节点
-
没有实时仪表板 :
- run_dashboard 方法被注释掉了
- 即使未被注释,它也只是在仿真结束后运行
-
实时可视化 :
- 仿真过程中实时显示拓扑图和热力图
- 实时更新乘客数量和密度数据
-
交互式控制 :
- 提供开始、暂停、停止、重置按钮
- 允许用户调整仿真参数
-
动态数据更新 :
- 每10步更新一次界面
- 提供实时数据图表
- 拓扑图:显示地铁站拓扑结构和乘客分布
- 热力图:显示密度分布
- 实时数据:显示乘客数量随时间的变化
- 分析报告:显示仿真结果的详细分析
- 核心语言:Python 3.13
- GUI框架:PyQt5
- 数据可视化:Matplotlib
- 图论库:NetworkX
- 数据处理:Pandas, NumPy
pip install -r requirements.txt或者手动安装需要的包:
pip install PyQt5 matplotlib networkx pandas numpypython subway_simulation/gui_qt.pypython subway_simulation/main.py地铁站人流仿真系统/
├── subway_simulation/
│ ├── core/ # 核心模块
│ │ ├── station_graph.py # 地铁站拓扑图模型
│ │ ├── passenger.py # 乘客对象和行为模拟
│ │ ├── simulation_engine.py # 仿真引擎
│ │ ├── path_planner.py # 路径规划器
│ │ └── analytics.py # 数据分析模块
│ ├── utils/ # 工具模块
│ │ ├── priority_queue.py # 优先队列
│ │ ├── spatial_hash.py # 空间哈希
│ │ └── stats_collector.py # 统计数据收集
│ ├── visualization/ # 可视化模块
│ │ ├── graph_visualizer.py # 图可视化
│ │ ├── heatmap.py # 热力图
│ │ └── dashboard.py # 仪表盘
│ ├── gui.py # Tkinter GUI(旧版本)
│ ├── gui_qt.py # PyQt5 GUI(推荐)
│ ├── main.py # 命令行入口
│ └── requirements.txt # 依赖配置
├── .trae/ # 项目文档
└── README.md # 项目说明
实现了地铁站的拓扑结构,使用NetworkX构建有向图。每个节点代表地铁站内的一个位置(如入口、售票区、安检区、闸机、站台等),每条边代表位置之间的连接通道。
实现了乘客对象和行为模拟,包括状态机、移动逻辑和路径规划。乘客根据不同状态执行不同的行为,如购票、安检、候车等。
实现了仿真的核心逻辑,包括乘客生成、时间步进、队列管理、冲突检测和密度更新等。
实现了多种路径规划算法,包括最短时间、最短距离、多目标优化和最少区域切换等模式。
实现了数据收集、分析和可视化功能,包括实时数据统计、瓶颈识别和热力图生成。
- 启动系统:运行
python subway_simulation/gui_qt.py - 设置参数:在左侧控制面板设置仿真步数、乘客生成速率和路径规划模式
- 开始仿真:点击"开始仿真"按钮启动仿真过程
- 观察结果:在不同选项卡中查看拓扑图、热力图、实时数据和分析报告
- 控制仿真:使用"暂停"、"停止"和"重置"按钮控制仿真过程
- 仿真步数:仿真运行的时间步数
- 高峰期乘客生成速率:高峰期(7-9点,17-19点)的乘客生成速率
- 平峰期乘客生成速率:平峰期的乘客生成速率
- 路径规划模式:选择不同的路径规划算法
- heatmap.png:热力图
- station_graph.png:地铁站拓扑图
- station_with_passengers.png:带乘客的地铁站拓扑图
- passenger_flow.png:乘客流量图
- density_trend.png:密度趋势图
- state_distribution.png:状态分布图
- 路径缓存:缓存已计算的路径,减少重复计算
- 空间哈希:使用空间哈希加速碰撞检测
- 环形缓冲区:使用环形缓冲区存储时间序列数据,避免内存无限增长