网约车调度实时仿真平台:单页 Web 界面,在同一张地图上实时模拟不同尺寸路网(默认50×50 网格)与四种调度算法下的车辆与订单动态,支持车辆/乘客密度调节、时间分流与热区实验、拼车指标展示、实时统计与倍速播放。
内置四种调度算法,页面可直接切换:
| 算法 | 核心原理 |
|---|---|
| 最近邻优先 | 逐单撮合,订单派给最近的空车,先到先得,不可撤回 |
| 分区匈牙利 | 订单按等待时长排序,以订单为圆心动态半径圈定就近空车批量指派,长等待触发扩区 |
| 匈牙利匹配 | 每个派单周期对全部待派订单与全部空车做全局最优一对一指派 |
| 拼车插入 | 新订单插入在途车辆的停靠序列,一车最多串联 3 名乘客;以接驾时限与送达承诺、绕行上限和每乘客接驾上限约束乘客体验 |
四种算法在相同条件(grid50、200 辆车、20 单/分钟、60 分钟、20 种子)下的对比:
| 指标 | 最近邻 | 分区匈牙利 | 全局匈牙利 | 拼车插入 |
|---|---|---|---|---|
| 完成率 | 43.7% | 59.7% | 61.9% | 69.2% |
| 平均接驾 | 413 s | 90 s | 170 s | 70 s |
| P90 接驾 | 997 s | 147 s | 314 s | 108 s |
| 平均乘车 | 626 s | 621 s | 619 s | 691 s |
拼车以每位乘客约 +70 秒的在车时间和更高的计算开销,换来完成率、接驾速度与司机平台收入的全面领先。实验设计、统计检验与成因分析详见 四算法对比报告,历史迭代数据见 算法基准文档。
要求 Python 3.12+、uv 和 Node.js/npm。在 macOS、Linux、WSL 或 Git Bash 中执行:
./scripts/taxisim.sh setup
./scripts/taxisim.sh serve打开 http://127.0.0.1:8018/ 进入实时仿真页面。setup 负责安装 Python/前端依赖并构建网页。
所有组合命令统一由 scripts/taxisim.sh 执行:
| 目标 | 命令 |
|---|---|
| 安装依赖、构建前端 | ./scripts/taxisim.sh setup |
| 执行代码检查和测试 | ./scripts/taxisim.sh check |
| 启动实时仿真服务 | ./scripts/taxisim.sh serve |
服务默认使用端口 8018,可通过 SIMVIZ_PORT=8020 覆盖;端口被旧进程占用时 serve 会先清理再启动。
前端通过 HTTP 轮询驱动仿真:
POST /api/live/start:以指定地图、算法、车辆数和乘客到达率重建仿真;GET /api/live/snapshot?advance_s=<秒>:推进仿真并返回车辆、乘客与统计快照;GET /api/live/roadnet/POST /api/live/reset/GET /api/health。
接口字段、高级参数(取消等待、计价、时间分流、热区实验)与轮询/抽帧策略详见 Web 文档。
算法继承 BaseAlgorithm 实现 on_dispatch_tick 即可接入,决策在独立子进程中执行,带超时、回退与熔断。接口规范见 派单算法接口规范。