案例 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\) 的通行时间由长度与当段速度决定:

\[t_k(\tau)=\frac{60\,d_k}{v_k(\tau)}=\frac{60\,d_k\,f_k(\tau)}{v_k^{0}}\tag{1} \]

时段 \(\tau\) 的最优选择是:

\[\min\ Z(\tau)=\sum_{k\in K}t_k(\tau)\,x_k\tag{2} \]

2.3 约束条件

一次过江只走一条通道,且禁行通道取 0:

\[\sum_{k\in K}x_k=1\tag{3} \]

\[x_k=0,\qquad \forall k\in K_0\tag{4} \]

把三个时段的速度先平均掉,就得到"静态"版本——一条桥走全天,这也是不看时段时唯一能做的决策:

\[\bar t_k=\frac{1}{|T|}\sum_{\tau\in T}t_k(\tau),\qquad \min\ \bar Z=\sum_{k\in K_0^{c}}\bar t_k\,x_k\tag{5}\]

式 (5) 与式 (2) 的差就是时变信息的价值。切换的临界拥塞度由两条时间曲线相交解出,令海珠桥的早高峰耗时不高于人民桥:

\[f_h^{*}=\frac{t_p(\text{早高峰})}{60\,d_h/v_h^{0}}=\frac{6.825}{4.400}=1.5511\tag{6} \]

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 结论

  1. 早高峰海珠桥确实更慢,且慢得不少。 8.580 对 6.825 min,差 1.755 min(25.7%);原因是它的拥堵系数 1.95 比人民桥的 1.40 高出 0.55。题目里"海珠桥可能更慢"的说法,在给定速度表下成立。
  2. 时变最优一天换两次桥,单次平均 5.795 min。 平峰与晚高峰走海珠桥,早高峰走人民桥。
  3. 平均速度会骗人。 静态模型下两桥日均只差 0.043 min(0.7%),几乎随机地选了人民桥;而按时段切换每次省 0.543 min,日省 13.02 min、月省 339 min(186 元)。压缩掉时段这一维,就压缩掉了 9.4% 的效率。
  4. 临界拥塞度 1.551(+55.1%)。 海珠桥早高峰系数低于它就继续走海珠桥;"拥堵 +40%"时仍该走海珠桥,"+60%"时必须换人民桥。对称地,人民桥自己的临界值是 1.760。
  5. 禁行才是大头。 隧道可用时每次 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/

posted @ 2026-11-13 18:06  小青蛙电气  阅读(2)  评论(0)    收藏  举报