目录

智能交通信号灯仿真系统

一个基于Python + Web的交互式交通信号灯仿真系统,能够实时模拟十字路口的红绿灯切换、车辆移动、交通流量和车辆排队情况。

功能特性

核心功能

  • 🚦 红绿灯仿真:模拟东西、南北方向红绿灯的定时切换(绿灯、黄灯、红灯)
  • 🚗 车辆模拟:生成随机车辆,模拟车辆在直线道路上的移动、加速、减速和停车
  • 📊 交通流量控制:可调整车辆生成频率,模拟不同交通流量场景(低/中/高)
  • 📏 车辆排队检测:检测红灯时车辆排队长度,统计平均等待时间
  • 🎨 可视化展示:使用Canvas绘制十字路口、道路、车辆和红绿灯
  • 🎛️ 交互控制面板:提供开始/暂停/重置按钮,可调整红绿灯时长、车流量等参数
  • 📈 实时数据展示:显示当前通过车辆数、平均等待时间、排队长度等统计数据

技术栈

后端

  • Python 3.8+
  • Flask:轻量级Web框架
  • Flask-SocketIO:WebSocket通信
  • 事件驱动仿真:Python模拟交通信号灯切换和车辆移动逻辑

前端

  • HTML5 + CSS3:页面结构和样式(深色主题、现代化UI)
  • **JavaScript (ES6+)**:前端交互逻辑
  • HTML5 Canvas:2D图形绘制
  • Socket.IO Client:接收后端实时数据

安装说明

1. 克隆项目

cd e:/code/artistic-1

2. 创建虚拟环境(可选但推荐)

python -m venv venv
# Windows
venv\Scripts\activate
# Linux/Mac
source venv/bin/activate

3. 安装依赖

cd backend
pip install -r requirements.txt

4. 启动应用

python run.py

5. 访问应用

打开浏览器,访问 http://localhost:5000

使用说明

控制面板功能

  1. 仿真控制

    • 开始:启动仿真
    • 暂停:暂停仿真(按钮变为”恢复”)
    • 重置:重置仿真到初始状态
  2. 信号灯设置

    • 绿灯时长:调整绿灯持续时间(5-60秒)
    • 黄灯时长:调整黄灯持续时间(2-5秒)
  3. 交通流量

    • 低流量:车辆生成频率低
    • 中流量:车辆生成频率中等
    • 高流量:车辆生成频率高
  4. 实时数据

    • 已通过车辆:显示已通过路口的车辆总数
    • 当前排队:显示当前等待红灯的车辆数
    • 平均等待:显示车辆平均等待时间
    • 最大排队:显示历史最大排队长度
  5. 信号灯状态

    • 实时显示南北方向和东西方向信号灯状态
    • 显示当前状态的剩余时间

项目结构

e:/code/artistic-1/
├── backend/                    # 后端代码
│   ├── app.py                 # Flask应用入口,WebSocket事件处理
│   ├── simulation.py          # 仿真引擎核心逻辑
│   ├── models/                # 模型类
│   │   ├── __init__.py
│   │   ├── traffic_light.py   # 红绿灯模型
│   │   ├── vehicle.py         # 车辆模型
│   │   └── intersection.py    # 十字路口模型
│   ├── requirements.txt       # Python依赖
│   └── run.py                # 启动脚本
├── frontend/                  # 前端代码
│   ├── index.html             # 主页面
│   ├── css/
│   │   └── style.css         # 样式文件
│   └── js/
│       ├── app.js             # 主逻辑
│       ├── canvas_renderer.js # Canvas绘图
│       ├── control_panel.js   # 控制面板
│       ├── data_display.js    # 数据展示
│       └── websocket_client.js # WebSocket客户端
└── README.md                 # 项目说明

仿真逻辑

红绿灯周期

  • 默认绿灯:30秒
  • 默认黄灯:3秒
  • 红灯时长 = 对面方向绿灯时长 + 黄灯时长

车辆行为

  • 绿灯时:车辆正常通行,速度逐渐加速到最大速度
  • 黄灯时:接近路口的车辆减速停车
  • 红灯时:车辆在停止线前停车等待
  • 车辆会根据前车距离自动调整速度,避免碰撞

数据统计

  • 实时统计通过路口的车辆数
  • 计算车辆平均等待时间
  • 记录最大排队长度

开发者

如有问题或建议,请提交Issue。

许可证

MIT License

关于

既是文艺的项目,又是文艺的项目

114.0 KB
邀请码