Shoamirg/Tashkent-Traffic

GitHub: Shoamirg/Tashkent-Traffic

塔什干城市交通数字孪生平台,集成离线3D地图、智能体交通仿真与多种AI信号优化算法,用于城市交通管理和基础设施规划。

Stars: 1 | Forks: 0

# 塔什干离线地图 这是一份乌兹别克斯坦塔什干市中心的完全离线交互式地图。在运行时不需要网络连接或外部服务——所有切片、字体和库均存储在本地。 ## 运行 ``` python serve.py # serves on http://localhost:8017/app/ python serve.py 9000 # or pick another port ``` 然后在浏览器中打开 http://localhost:8017/app/。 ## 包含内容 ``` offline/ # the data bundle (source: OpenStreetMap / OpenFreeMap) tiles/{z}/{x}/{y}.pbf # vector tiles (OpenMapTiles schema), zoom 0-14 fonts/ # MapLibre glyph PBFs (Noto Sans Regular/Bold) osm.json # raw extract: 42,711 buildings + 21,263 roads with tags metadata.json # bundle bounds and stats app/ index.html # viewer: map, search, popups style.json # MapLibre style (local tiles + glyphs, no sprite) vendor/ # MapLibre GL JS 4.7.1 (vendored for offline use) serve.py # static file server with / -> /app/ redirect ``` - **切片覆盖范围:** 69.11–69.44 E, 41.2–41.39 N(塔什干市中心);矢量切片会在 z14 以上自动进行过度放大。 - **3D 建筑:** 从缩放级别 ~14.5 开始,根据切片的 `render_height` / `render_min_height` 属性进行拉伸;地图默认以倾斜的 3D 视图打开。使用右上角的 **2D/3D** 按钮进行切换,或者通过右键拖拽 / Ctrl + 拖拽来自由旋转和倾斜视角。 - **自由飞行 (WASD):** 按住 **W/S** 向前/向后飞行,**A/D** 平移,**Q/E** 转向,**R/F** 爬升/下降,**Shift** 加速。速度基于屏幕相对计算,因此在任何高度下的感觉都是一致的。 - **自动导览:** 右上角的 ✈ 按钮将启动电影般的飞行俯瞰,游览 Amir Temur 广场、Mustaqillik 广场、TsUM、Milliy bog' 和 Chorsu,在每个地点环绕飞行后再滑行至下一站。任何鼠标/触摸操作或按下 Esc 键都会停止导览。 - **视角限制:** 视角被限制在离线包的数据覆盖范围内(69.11–69.44 E, 41.2–41.39 N,最小缩放级别 11),因此您永远无法平移或缩放到离线包未包含的区域。 - **搜索:** 搜索框对来自 `offline/osm.json` 的建筑和街道名称(及地址)进行了索引;选择搜索结果即可飞至该处并高亮显示其几何形状。 - **弹窗:** 点击建筑或 POI 标签以查看其名称和类型。 ## 注意事项 - 样式中的切片 URL 必须是绝对路径,以便 MapLibre 的 web worker 能够加载,因此 `index.html` 会获取 `style.json` 并在加载时添加 `location.origin` 前缀。 - `offline/fonts` 中的字形范围涵盖了数据中存在的每一个字符(拉丁字母、扩展拉丁字母、西里尔字母、标点符号、类字母符号)。 ## 交通模拟与信号优化 `traffic/` 包含一个交通数字孪生和 AI 优化系统,该系统基于从离线包中提取的 3 个道路地图(市中心、老城、南部)以及一个全市路网构建: ``` traffic/ extract_networks.py # osm.json -> 3 district road graphs + intersections networks/*.json # nodes, directed edges, signalized crossroads sim.py # vectorized IDM simulator (types, lanes, turns, lights) train.py # genetic-algorithm optimization over light timings results// # best_config.json, history.csv, charts.png, report.md app/traffic.html # live animated simulation on the 3D map ``` - **全面的道路覆盖**:每条可通行的道路(从主干道到服务车道)均包含每条边的车道、方向、限速、容量(辆/小时)、路权优先级以及允许的车辆类型(卡车会避开生活/服务街道)。城市路网包含:1.8万个节点,4万条有向边,629个有信号灯的交叉路口。 - **基于真实土地利用的出行需求建模**:将4.2万栋建筑分类为住宅 / 办公 / 学校 / 商业 / 工业(根据占地面积 × 楼层数进行加权),以此驱动不同时段的起讫点流量——早晚高峰为 住宅→工作/学校,晚高峰反之,中午以购物为主,夜间稀疏。每个周期内的车辆数量从 2.5k(夜间)到 30k+(全市拥堵)不等。 - 每个真实的交叉路口都有一个独立的交通信号灯控制器,包含 5 个可优化参数:两个绿灯时长(20–90秒)、黄灯(3–6秒)、周期偏移(0–120秒)以及相位顺序。无信号灯的次要路口采用让行路权规则。 - 评分 = 完成率 − 等待惩罚 − 排队惩罚 − 拥堵惩罚;遗传算法 (GA) 在数千个世代中跨越各种场景优化配时,且每一代都会生成全新场景,因此最佳基因组必须具备泛化能力。 - `python traffic/train.py` 会训练所有 3 张地图(使用所有 CPU 核心;会自动检测并使用 CUDA torch 安装来执行 IDM 内部循环)。 - **信号控制策略**(使用 `python traffic/benchmark.py` 进行对比):固定 35 秒、GA 优化的固定周期、自适应触发(gap-out)以及自适应最大压力。总体而言,自适应触发是最强的——它会根据实时排队情况做出反应,而不是死板地遵循时钟。 - **弹性与韧性 (V4):** 动态重新路由——联网车辆 (70%) 根据实时成本(拥堵抑制的行程时间 + 按车道缩放的事故惩罚)重新规划路线,每次事件发生时都会进行事件驱动的重新计算;紧急绿色通道(沿途信号灯根据预计到达时间 [ETA] 抢先变绿灯,形成移动的绿波);感知事故的监控(热点和控制器卡片会显示原因:⚠ 上游发生事故 / 🚑 紧急通道);训练场景遵循 40/25/20/10/5 的 正常/高峰/事故/多重事故/极端 混合比例;自适应控制器在安全包络线内运行(行人清空最小绿灯时间,受限的最大绿灯时间)。`python traffic/benchmark.py --incidents` 可对此进行量化。 - **学习与数据 (V5):** `traffic/collect_data.py` 记录了一个 1400 万行的数据集(包含每个交叉路口的排队/相位/吞吐量/奖励 + 每条边的速度下降、密度、刹车暴露情况,用于未来的风险模型);`traffic/rl.py` 训练了一个 MPLight 风格的参数共享 DQN(状态包括下游阻塞 = 协作信号;动作在安全包络线内执行)——在一个区域训练的策略可以迁移到其他区域,并且在 3 个区域中的 2 个匹配了自适应触发基准;`traffic/corridors.py` 构建了绿波通道配置(实测结果:在这种双向网格上没有收益——自适应控制胜出)。 - **预测与合作 (V6):** `traffic/predict.py` 在数据集上训练了一个排队预测器(在预留的测试周期上,比持续性基准在 +60s/+300s 领先 10%/8%);`traffic/rl_ppo.py` 是带有轻量级 GNN 邻居编码的 MAPPO;`traffic/eval_conditions.py` 运行基于条件分层的基准测试——自适应在正常交通下胜出,而学习型 DQN 策略在高峰、多重事故和极端条件下胜出(完全印证了“越难越强”的 AI 假说)。记录的数据集包含完整的 (s,a,r,s'),已准备好用于离线 RL (CQL/IQL)。 - **环境与编排 (V7):** 完整的天气系统(雨、雪、雾、沙尘暴、伴有闪电的雷暴),在模拟和数字孪生中均会改变驾驶物理特性和事故风险;自动昼夜循环(1 个模拟秒 = 1 个时钟分钟),具有移动的季节性太阳、夜间变暗,以及约 9000 盏在黄昏后自动开启的程序化路灯;四季驾驶日照时间和天气概率。`HybridController` (traffic/rl.py) 是 V7.3 元控制器——一种情境分类器,在交通平稳时运行自适应规则,在负载/事故下运行学习策略;它在分层基准测试的所有类别中均胜出。 - **离线 RL 与预测闭环 (V7.1/7.2):** `traffic/iql.py` 纯粹从记录的数据集中训练 Implicit Q-Learning(无需新的模拟;动作由相位变化推导得出)——**IQL 席卷了分层基准测试的所有类别**,击败了自适应触发、DQN 和混合模式,在极端条件下吞吐量提升了 10%。预测控制器(traffic/rl.py 中的 `PredictiveActuated`/`PredictiveHybrid`)将排队预测器接入决策;实测结果在当前的按组共享启发式算法下呈中性到负面的影响(已记录的负面结果)。 - **天空与边界分析:** 云层场在整个地图上方固定,并根据特定天气的风力漂移(沙尘暴时为 48 m/s,晴朗日子里缓慢的 7 m/s);除了日历日总计外,控制面板还包含滚动 24 小时的边界平衡(交通规划师风格)。 - **城市操作系统 (V11):** 经过训练的 IQL 策略在数字孪生中实时运行(导出为 JSON,在 JS 中执行前向传播),表现为 "AI: IQL" 模式,外加 "AI: Hybrid" 模式(在负载下启用该策略)——见证“学习大脑”接管后排队的队伍瞬间缩短;门口的拥堵定价机制(费用选择器,弹性:延后出发 / 改乘公交 / 放弃行程,价格排斥计数器,公交客流吸收转移量;`traffic/pricing_study.py` 对需求曲线进行了量化);`traffic/invest_optimizer.py` 通过模拟网络收益对路口升级进行排名——将数字孪生作为施工规划工具。 - **街道真实感 (V10):** 真正的基于车道的交通(车辆在各自的车道内靠右行驶,具有车道内的前车以及自主变道——不再有模型互相穿透的情况,对向车流在各自的车道上);复合 3D 车辆模型(带驾驶室的汽车、带车顶标志的出租车、驾驶室+拖车的卡车、骑两轮车的人、紧急爆闪灯);快递踏板车和自行车作为新类别(贴近路缘,可被超车);随机施工路段(⚒,慢速通行,重新路线规划);交叉路口和主干道上的让行三角标志和限速标志;更明亮的夜间路灯辉光。人口规模按压缩了 60 倍的一天进行设定,其中 62% 为小汽车出行方式划分(其余乘坐公共交通)。 - **天气与交通耦合:** 天气不仅影响物理特性,还会改变交通本身——恶劣天气会抑制非必要出行(降雨 −15%,降雪 −35%,沙尘暴 −45%;通勤车辆仍会出行),减慢公交车上车速度,并因积雪和结冰增加事故风险倍数。实时的“天气影响”读数会显示当前的效应;`traffic/weather_study.py` 对此进行了量化(在相同高峰需求下的沙尘暴:吞吐量 −19%,事故率约 3 倍;随着需求被抑制,路网会进行部分自我调节)。 - **规划层 (V9):** 合成人口(2500–5000 个具有住宅、工作地点和日常时间表的持久个体——通勤潮汐是由行为涌现的);公交网络(12 条合成的跨城路线,每约 420 m 设一站并带有停站时间,发车间隔调度,晚点公交车绿灯延长,实时公交统计数据);`traffic/scenario_report.py`(基准对比道路封闭:网络指标 + 哪些具名道路吸收了分流交通);`traffic/calibrate.py`(走廊行程时间校验工具——将占位目标替换为真实的 Yandex/2GIS 测量数据)。 - **出行模型 (V8):** 出行具有目的性和返程特性——完成的行程会安排返程(居民在晚高峰返回家中,门口进入的车辆在 4-11 小时后通过原入口离开),因此边界在一整天内基本保持平衡,晚间的出城流量自然产生。需求默认跟随模拟时钟(自动时段)。控制面板显示按方位划分的实时起讫点流量比例 + 过境交通份额。场景测试:按住 Shift 并点击任何交叉路口以关闭/重新开放其道路(红色虚线)——整个路网都会围绕封闭路段重新规划路线。 - **城市出入口:** 每个网络的外环被检测为其出入口;约 20% 的需求通过它们进出(通勤车流)。面板显示了每个模拟日的进入/离开计数(边界模式:被阻挡的门口进入计为排队需求)、昨日的总计,以及全天估计值(包含模拟车辆和实际等效车辆)。校准:孪生系统运行 1:14 的交通样本,时钟快 60 倍,因此每日总计会缩放至 ×840——在正常音量下的全城规模 ≈ 每天 100 万辆真实车辆进入。 - **事故与检查:** 随机事故会导致车辆在路中抛锚(危险闪光灯 + ⚠ 标记)直到被拖走,配有 关闭/罕见/频繁 控制选项;点击任何车辆可弹出实时跟随窗口(类型、速度与限速对比、状态、道路、累计等待时间);平均速度和活跃事故状态磁贴。 - 打开 `/app/traffic.html` 查看数字孪生:3D 交通信号灯(灯杆、灯具、面向各个方向的红/黄/绿灯、行人步行指示灯)、包含闪烁紧急车辆并具备信号优先权的 3D 车辆、根据步行过马路的行人、人行横道 + 停止线 + 车道标线、实时最差排队面板(点击飞行至该处)、可点击查看的每个交叉路口的控制器卡片,以及 固定 / GA / 自适应 控制选择器——所有这些都叠加在 3D 建筑地图上。 地图数据 © OpenStreetMap 贡献者。
标签:3D地图, Python, Vectored Exception Handling, 交通仿真, 凭据扫描, 强化学习, 数字孪生, 数据可视化, 无后门, 智慧城市, 智能交通控制, 逆向工具