Skip to content

lychsh/smart_city_final

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

智能应急疏散模拟系统

项目概述

智能应急疏散模拟系统是一个基于优化算法和机器学习的应急疏散分配与路径规划平台。系统结合了多目标优化(遗传算法)、AI分配预测、图神经网络风险预测以及LLM智能体模拟等多种技术,为城市应急疏散提供科学决策支持。

🌟 核心特性

  • 多策略路径规划: 支持单路径、多路径分流、多目标优化(GA)、AI预测分配等多种疏散策略
  • 智能分配优化: 使用遗传算法(GA)进行多目标优化,平衡路径长度、拥堵程度、安置效率
  • AI预测分配: 基于GA生成的teacher数据进行训练,实现快速分配预测
  • 图神经网络风险预测: 预测路径瓶颈和拥堵风险
  • LLM智能体模拟: 基于通义千问模型的智能体行为模拟,考虑年龄、恐慌、从众心理等因素
  • 实时可视化: 交互式地图展示疏散路径、智能体移动、拥堵状况
  • 多灾难点支持: 支持多个灾难点同时疏散,共享避难点容量
  • 详细数据分析: 提供完整的分配详情表和性能指标对比

🏗️ 项目结构

City_new/
├── app.py                     # 主应用程序入口
├── config.py                  # 配置参数文件
├── planning/                  # 路径规划与资源分配核心模块
│   ├── ai_allocator.py        # AI分配器(基于GNN)
│   ├── allocation_predictor.py # 分配预测器(线性模型)
│   ├── edge_risk_gnn.py       # 图神经网络风险预测
│   ├── multi_objective.py     # 多目标优化(遗传算法)
│   ├── multi_path.py          # 多路径规划
│   ├── single_path.py         # 单路径规划
│
├── simulation/                # 仿真模块
│   ├── llm_agent.py           # LLM智能体模拟
│
├── utils/                     # 工具函数模块
│   ├── data_loader.py         # 数据加载器
│   ├── distance_cache.py      # 距离预计算
│   ├── geo_utils.py           # 地理工具函数
│   ├── metrics.py             # 评估指标计算
│   ├── visualization.py       # 可视化功能
│
└── web/                       # Web界面模块
    ├── components.py          # 前端组件
    ├── layout.py              # 页面布局

🚀 快速开始

环境要求

  • Python 3.8+
  • 通义千问API密钥(可选,用于LLM智能体功能)

安装步骤

  1. 克隆项目
git clone <repository-url>
cd City_new
  1. 创建虚拟环境(推荐)
python -m venv venv
source venv/bin/activate  # Linux/Mac
#
venv\Scripts\activate     # Windows
  1. 安装依赖
pip install -r requirements.txt

如果缺少requirements.txt,手动安装主要依赖:

pip install streamlit networkx numpy pandas folium plotly torch
pip install osmnx dashscope  # 可选:地图数据和LLM功能
  1. 设置API密钥(可选)
# Linux/Mac
export QIANWEN_API_KEY="your-api-key"

# Windows
set QIANWEN_API_KEY=your-api-key
  1. 预计算距离数据库
cd utils
python distance_cache.py
  1. 运行应用 在根目录运行
streamlit run app.py

应用将在 http://localhost:8501 启动。

📖 使用指南

基本操作流程

  1. 设置灾难点

    • 在侧边栏选择"选择灾难点(可多个)"
    • 在地图上点击添加灾难点
    • 设置每个灾难点的人数
  2. 设置避难点

    • 切换为"添加/设置避难点"模式
    • 在地图上点击添加避难点
    • 设置每个避难点的容量
  3. 选择疏散策略

    • 单一路径:最短路径到最近避难点
    • 多路径分流:平均分配到多个避难点
    • 多目标优化(GA):使用遗传算法优化分配
    • AI预测分配:使用训练好的AI模型快速分配
    • LLM智能体模拟:基于大模型的智能体行为模拟
  4. 配置参数

    • GA策略:设置种群大小、迭代代数
    • AI策略:设置训练参数
    • 智能体模拟:设置智能体数量、模拟步数
  5. 运行并查看结果

    • 点击"运行"按钮开始模拟
    • 查看地图上的疏散路径
    • 分析详细的分配表格和性能指标

功能模块详解

1. 路径规划模块

  • 单一路径: Dijkstra最短路径算法
  • 多路径分流: 平均分配,支持容量约束
  • 多目标优化: 遗传算法平衡多个目标函数
  • 路径修复: 自动处理不可达路径和容量超限

2. AI分配预测

  • Teacher数据生成: 使用GA生成训练数据
  • 模型训练: 线性回归模型预测分配比例
  • 特征工程: 路径长度、重叠率、容量等特征
  • 实时预测: 快速生成分配方案

3. LLM智能体模拟

  • 智能体生成: 随机生成具有不同属性的智能体
  • 决策制定: 使用LLM或启发式算法决定移动方向
  • 心理因素: 考虑恐慌程度、从众心理、年龄影响
  • 实时模拟: 逐步模拟智能体移动过程

4. 可视化系统

  • 交互地图: Folium地图显示节点和路径
  • 实时更新: 动态显示智能体位置和拥堵情况
  • 数据图表: Plotly图表展示性能指标
  • 结果导出: 支持CSV格式数据导出

🔧 配置说明

主要配置文件 config.py

# 地图参数
DEFAULT_ZOOM = 16
DEFAULT_TILES = "openstreetmap"
RUC_LAT = 39.968056  # 中国人民大学经纬度
RUC_LON = 116.305833

# 模拟参数
DEFAULT_TOTAL_PEOPLE = 1000
DEFAULT_SHELTER_CAPACITY = 200

# LLM配置
LLM_CONFIG = {
    "api_key": os.getenv("QIANWEN_API_KEY"),
    "model": "qwen-flash",
    "max_tokens": 32000,
    "temperature": 0.7,
}

# 智能体生成配置
AGENT_GENERATION_CONFIG = {
    "age_distribution": {"child": 0.2, "adult": 0.6, "elderly": 0.2},
    "panic_distribution": {"calm": 0.4, "nervous": 0.4, "panicked": 0.2},
}

数据文件

  • data/ruc_walk_5000m.graphml: 中国人民大学周边5000米步行路网数据
  • data/distances.db: 预计算的节点间距离数据库

📊 性能指标

系统评估多个关键指标:

  1. 疏散效率指标

    • 最长路径长度 (makespan)
    • 总行驶距离 (total_distance)
    • 最大拥堵指数 (max_congestion)
    • 未安置人数 (unassigned_people)
  2. 算法性能指标

    • 训练时间
    • 预测时间
    • 收敛速度
    • 分配准确率
  3. 智能体模拟指标

    • 到达率
    • 平均步数
    • 总行驶距离
    • 决策质量

🔮 未来扩展

计划功能

  1. 更多AI算法

    • 强化学习优化
    • 深度学习预测
    • 多智能体协作
  2. 扩展应用场景

    • 火灾疏散
    • 洪水撤离
    • 地震应急

About

25秋智慧城市大作业

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages