案例 151 珠江隧道过不去:时变速度下的过江通道选择
案例 151 珠江隧道过不去:时变速度下的过江通道选择
摘要:从海珠到荔湾,4 条过江通道里珠江隧道(1.9 km)与洲头咀隧道(2.4 km)禁行,只剩人民桥(2.6 km)和海珠桥(2.2 km)。给 4 条通道配 3 个时段(平峰、早高峰、晚高峰)的速度表,高峰拥堵按通道给系数:海珠桥早高峰达 1.95 倍,人民桥 1.40 倍。0-1 选择模型的解按时段自己变:平峰与晚高峰走海珠桥,早高峰切到人民桥,单次平均 5.795 min。早高峰海珠桥比人民桥慢 1.755 min(25.7%)这一说法经实算成立。核心增量是"时变 vs 平均速度"的对比:用全日平均速度的静态模型两桥只差 0.043 min(0.7%),几乎挑不出胜负,只能选一条走全天,日均多花 13.02 min,月累计 339 min,折 186 元。切换的临界拥塞度是海珠桥早高峰 1.551 倍(+55.1%)。
关键词:时变速度;0-1 通道选择;平均速度谬误;临界拥塞度;过江通道
1 问题提出
1.1 问题是什么
海珠到荔湾隔着珠江,能过车的口子只有四个。珠江隧道 1.9 km、洲头咀隧道 2.4 km 因施工与限行禁行(外卖骑手不得通行),实际可选的是人民桥 2.6 km 与海珠桥 2.2 km。三条硬事实必须同时进模型:一是禁行(两条隧道 \(x=0\));二是只能选一条(\(\sum x=1\),一次过江不会分两半走);三是速度随时段变(同一条桥,早上 8 点和下午 3 点完全不是一个速度)。
表 1 4 条过江通道与 3 个时段的速度表
| 通道 | 长度 / km | 平峰速度 | 早高峰速度 | 晚高峰速度 | 早高峰耗时 / min | 是否可走 |
|---|---|---|---|---|---|---|
| 珠江隧道 | 1.90 | 40.0 | 28.6 | 29.6 | 3.99 | 禁 |
| 洲头咀隧道 | 2.40 | 34.0 | 23.4 | 24.3 | 6.14 | 禁 |
| 人民桥 | 2.60 | 32.0 | 22.9 | 21.3 | 6.82 | 可 |
| 海珠桥 | 2.20 | 30.0 | 15.4 | 21.4 | 8.58 | 可 |
1.2 为什么这值得建模
第一,时变速度让"最近的桥"和"最快的桥"不是同一座。平峰时海珠桥 2.2 km 只要 4.40 min,比人民桥快 0.47 min;到了早高峰,海珠桥是老桥、单侧两车道,非机动车与公交抢道,耗时涨到 8.58 min,反而比人民桥慢 1.76 min。"哪座桥快"是一个随时段翻转的答案,用一次平均速度算不出来。
第二,平均速度是有损统计量。把三个时段的速度平均,6.82 与 8.58 被压成 6.34 与 6.38,两桥只差 0.043 min(0.7%),模型几乎是在噪声里挑一条。这个"差不多"的结论,代价是每天多跑 13.02 min。第三,"该不该换桥"需要一个可操作的阈值,不是"感觉堵了就换"。把海珠桥的早高峰拥堵系数连续拉大,最优通道翻转的那个点就是临界拥塞度:1.551 倍,超过它才值得换。
1.3 Gurobi 如何求解
每个时段建一个 0-1 模型:4 个变量 \(x_k\)、1 条"和多等于 1"的约束、2 条"禁行取 0"的约束,目标是把所选通道的时间加权求和最小化。约束矩阵是单位行向量,LP 松弛天然给整数解,分支定界在根节点收敛,单次求解亚毫秒级。三个时段各解一次;再用"全日平均时间"当系数解一次,得到静态方案;最后对拥堵系数、距离上限做扫描,每个扫描点都重新建模求解,不套用解析式。
2 数学模型
2.1 符号说明
| 符号 | 含义 | 本案取值 |
|---|---|---|
| \(K\), \(K_0\) | 过江通道集合、禁行子集 | 4 条 / 2 条 |
| \(T\) | 时段集合 | 平峰 / 早高峰 / 晚高峰 |
| \(d_k\) | 通道长度 / km | 1.90—2.60 |
| \(v_k(\tau)\) | 通道 \(k\) 在时段 \(\tau\) 的速度 / (km/h) | 15.4—40.0 |
| \(f_k(\tau)\) | 拥堵系数,\(v_k(\tau)=v_k^{0}/f_k(\tau)\) | 1.00—1.95 |
| \(x_k\) | 是否走通道 \(k\),0-1 | — |
2.2 目标函数
单条通道在时段 \(\tau\) 的通行时间由长度与当段速度决定:
时段 \(\tau\) 的最优选择是:
2.3 约束条件
一次过江只走一条通道,且禁行通道取 0:
把三个时段的速度先平均掉,就得到"静态"版本——一条桥走全天,这也是不看时段时唯一能做的决策:
式 (5) 与式 (2) 的差就是时变信息的价值。切换的临界拥塞度由两条时间曲线相交解出,令海珠桥的早高峰耗时不高于人民桥:
2.4 规模与性质
4 个 0-1 变量、3 条约束,可行域只有 2 个整数点。这个模型小到不需要求解器——但它演示的东西和大型网络完全一样:参数随"时段"这一维变化时,最优解会跳变,而平均参数会把跳变抹平。真正的工作量不在求解,在把三张速度表、两次禁行、一次平均,都摆到同一张表上对比。
3 Gurobi 求解实现
3.1 建模要点
x = m.addVars(NK, vtype=GRB.BINARY, name="x")
m.addConstr(gp.quicksum(x[k] for k in range(NK)) == 1) # (3) 只选一条
for k in [k for k in range(NK) if BAN[k]]:
m.addConstr(x[k] == 0) # (4) 禁行
m.setObjective(gp.quicksum(tt[k] * x[k] for k in range(NK)), GRB.MINIMIZE)
实现细节:时间系数按"时段"整体传入,不要在模型里写 \(v\)。solve() 只接收一个长度 4 的时间向量 tt,三个时段、静态平均、拥堵扫描全部复用同一个函数——这样"换一个参数就变一个模型",也不会出现三处速度表互相打架的情况。
3.2 求解结果
表 2 三个时段的最优通道与静态/动态方案对比
| 时段 | 人民桥 / min | 海珠桥 / min | 最优通道 | 最优时间 / min |
|---|---|---|---|---|
| 平峰 | 4.875 | 4.400 | 海珠桥 | 4.400 |
| 早高峰 | 6.825 | 8.580 | 人民桥 | 6.825 |
| 晚高峰 | 7.312 | 6.160 | 海珠桥 | 6.160 |
| 三时段合计 | 19.012 | 19.140 | 逐段切换 | 17.385 |
| 静态(一条桥全天) | 19.012 | 19.140 | 人民桥 | 19.012 |
静态模型解出来的是 人民桥(日均 6.337 min),和全走人民桥重合;动态方案比它少 1.628 min/组。允许隧道时最优永远是珠江隧道(三时段合计 10.688 min),禁行让每次过江多花 2.232 min。
4 结果分析
4.1 结构:四个口子,两个封死

图 1 4 条过江通道的长度与禁行状态
四条通道里两条隧道更短(1.9 与 2.4 km)也更快(平峰 40 与 34 km/h),但它们被规则封死了。剩下两座桥长度只差 0.4 km,平峰耗时差 0.47 min——这个差距小到任何一点拥堵都能把它抹掉,所以后面所有的讨论都围绕"这 0.4 km 值不值"。
4.2 数据全景:同一座桥,三个速度

图 2 通道长度与三时段通行时间(气泡为拥堵系数)
同一列上的三个点(同一条通道、三个时段)纵向拉开,拉开的幅度就是拥堵系数:海珠桥从 4.40 涨到 8.58(1.95 倍),人民桥从 4.88 涨到 6.82(1.40 倍)。平峰时"距离决定一切"(海珠桥赢),早高峰时"拥堵决定一切"(人民桥赢)——同一条通道两个时段的点被竖线连起来,连线越长,拥堵的代价越大。
4.3 方案对比:动态省 0.54 分钟,一天 13 分钟

图 3 固定一条桥、静态平均最优、三时段动态与允许隧道的对比
全走人民桥 6.337 min、全走海珠桥 6.380 min,两者只差 0.043 min;三时段动态 5.795 min,比静态最优省 0.543 min/次(8.6%)。按每天 24 次过江、每月 26 天算,日损失 13.02 min、月损失 339 min,折 186 元(时间价值 0.55 元/min)。对照柱是隧道可用时的 3.562 min——禁行本身的价格是每次 2.23 min,比"选错桥"贵 4 倍。
4.4 时序:一天换两次桥

图 4 三时段两座桥的通行时间与最优切换点
平峰海珠桥快 0.47 min,早高峰人民桥快 1.76 min,晚高峰海珠桥又快 1.15 min。最优方案一天换两次桥,而任何"固定一座桥"的方案都至少要在两个时段里吃亏:全走海珠桥亏在早高峰,全走人民桥亏在平峰和晚高峰。这就是时变网络最朴素的一课——不是选"最好的桥",是选"这个时刻最好的桥"。
4.5 主灵敏度:临界拥塞度 1.551

图 5 海珠桥早高峰拥堵系数对最优时间与最优通道的影响
把海珠桥的早高峰系数从 1.00 拉到 2.00:\(f_h<1.551\) 时海珠桥一直赢(靠 0.4 km 的距离优势);越过 1.551 后最优通道翻到人民桥,最优时间曲线由"上升"改"走平"——因为换桥把继续恶化的那部分切掉了。三档实测:系数 1.20 时最优 5.280(海珠桥)、1.40 时 6.160(海珠桥)、1.60 时 6.825(人民桥)。"拥堵 +40% 还能忍,+60% 必须换",这个判断现在有了数字。
4.6 二维矩阵:三个时段里谁最快

图 6 4 条通道 × 3 个时段的通行时间矩阵(黑框为该时段最优)
矩阵把"时变"摊开成一张表:珠江隧道全时段最快(2.85/3.99/3.85)却全时段禁行;允许的两行里,海珠桥在平峰与晚高峰最优,人民桥只在早高峰那一格拿到黑框。颜色最深的第二列说明高峰把"距离优势"整个抹掉了:早高峰那一列,2.2 km 的海珠桥比 2.6 km 的人民桥深了两档。
4.7 第三维:反向临界 1.760

图 7 人民桥早高峰拥堵系数对通行时间与换桥收益的影响
上一节问"海珠桥多堵才该换",这一节问反过来的问题:人民桥自己也堵到什么程度,海珠桥又会赢回来?把人民桥的早高峰系数从 1.00 拉到 1.95,两条曲线在 1.760 处再次相交,此时换桥收益从 0 重新涨起。两个临界值 1.551 与 1.760 一起构成"该走哪座桥"的判据:谁的系数越过自己那条线,谁就出局。本案人民桥 1.40 远低于 1.760,海珠桥 1.95 远高于 1.551,早高峰的人民桥是稳的。
4.8 前沿:短 0.4 km 换 1.76 min

图 8 早高峰的距离—时间前沿与禁行后的不可达区间
把 4 条通道点进(距离,时间)平面:海珠桥 (2.20, 8.58)、人民桥 (2.60, 6.82) 谁都不支配谁——一个更短一个更快,两者都在前沿上。禁行把 1.9—2.4 km 这一整段挖空(阴影),只剩下"多跑 0.4 km 省 1.76 min"这一个交换比可用。这个交换比就是早高峰的决策全部内容:1.76 min 值不值 0.4 km 的油钱和体力。
4.9 分布:换桥不是省均值,是砍尾巴

图 9 拥堵随机波动下两种策略的通行时间分布与累计曲线
给两座桥的拥堵系数各加一个随机扰动(人民桥 \(\sigma=0.10\)、海珠桥 \(\sigma=0.20\)),模拟 6000 次:96% 的情形下人民桥更快,按时段选桥平均省 1.78 min;更要紧的是尾部——90 分位耗时从 9.73 min 降到 7.41 min,砍掉 2.32 min。骑手怕的从来不是均值,是那一单超时;而超时往往就发生在海珠桥堵死的那几个早晨。
4.10 分解:拥堵附加吃掉了距离优势

图 10 早高峰各通道耗时分解(自由流 + 拥堵附加)
海珠桥的自由流只要 4.40 min,比人民桥少 0.47 min;但它的拥堵附加是 4.18 min(95%),人民桥只有 1.95 min(40%)。附加项一加,0.47 min 的距离优势被 2.23 min 的拥堵劣势反超,净输 1.76 min。这就是"时变"两个字的全部算术。
5 结论
- 早高峰海珠桥确实更慢,且慢得不少。 8.580 对 6.825 min,差 1.755 min(25.7%);原因是它的拥堵系数 1.95 比人民桥的 1.40 高出 0.55。题目里"海珠桥可能更慢"的说法,在给定速度表下成立。
- 时变最优一天换两次桥,单次平均 5.795 min。 平峰与晚高峰走海珠桥,早高峰走人民桥。
- 平均速度会骗人。 静态模型下两桥日均只差 0.043 min(0.7%),几乎随机地选了人民桥;而按时段切换每次省 0.543 min,日省 13.02 min、月省 339 min(186 元)。压缩掉时段这一维,就压缩掉了 9.4% 的效率。
- 临界拥塞度 1.551(+55.1%)。 海珠桥早高峰系数低于它就继续走海珠桥;"拥堵 +40%"时仍该走海珠桥,"+60%"时必须换人民桥。对称地,人民桥自己的临界值是 1.760。
- 禁行才是大头。 隧道可用时每次 3.562 min,禁行后 5.795 min,规则的价格是 2.23 min/次,是"选错桥"代价(0.54 min)的 4.1 倍。能优化的只有那 0.54 min,但它是白捡的。
一句话口径:两座桥差 0.4 km,平峰走海珠、早高峰走人民,一天换两次能省 13.0 min;用平均速度算,这个"换"根本看不出来——时变模型的价值不在算得快,在于它看得见"什么时候"。
参考文献
[1] Gurobi Optimization LLC. Gurobi Optimizer Reference Manual[Z]. 2024.
[2] Ahuja R K, Magnanti T L, Orlin J B. Network Flows: Theory, Algorithms, and Applications[M]. Englewood Cliffs: Prentice Hall, 1993.
[3] 司守奎, 孙玺菁. 数学建模算法与应用[M]. 3 版. 北京: 国防工业出版社, 2021.
复现方式:python batch_151.py;数据与结果见同目录 data_151.csv / results_151.json,图见 figs/

浙公网安备 33010602011771号