🚦 基于差分进化的城市路口红绿灯时长动态配时仿真系统

Differential Evolution Traffic Signal Timing Simulator
优化前 · 固定配时 140s 优化后 · 差分进化 (DE)
图例 绿灯 黄灯 红灯 停止线 排队车辆 🧭 南北=主干道 · 东西=次干道

📋 算法概要(差分进化 · 单目标最小延误)

核心:固定配时 → 差分进化(DE)自动寻优

优化前(固定配时):信号周期固定 140s,绿灯不随车流调整,长周期带来额外红灯等待。

优化后(差分进化 DE):把当前车流量作为已知量,用 DE 自动搜索周期公式参数 R、S, 在不越饱和度红线的前提下,使全路口加权平均延误最小(单目标,非多目标)。

①
决策变量:周期公式参数 R、S
R ∈ [20,40]、S ∈ [0.95,1.45]
周期 T = min(FIXED_P, max(FIXED_Q, R + S·√(FLOW_A + FLOW_B)))
其中 FIXED_P=140(最大周期)、FIXED_Q=45(最小周期)
②
绿灯分配(主干道偏置)
有效绿灯 Geff = T − LOST_TIME(LOST_TIME=8s)
g_a = Geff·FLOW_A/(FLOW_A+FLOW_B)、g_b = Geff·FLOW_B/(FLOW_A+FLOW_B)
南北(主干道)按 split_bias(默认1.67)加权,绿信比 λ_a=g_a/T
③
目标函数(单目标)
min f(R,S) = (d_A·FLOW_A + d_B·FLOW_B)/(FLOW_A+FLOW_B)
相位延误 = Webster 均匀延误 d₁ + 随机延误 d₂
④
约束(防憋死)
任一相位饱和度 x ≤ 0.98;越线则罚 1,000,000 + 100,000×(超出红线部分) + 平均延误,方案被自动淘汰

差分进化流程
种群 = 32 组 (R, S)(含 1 个推导种子 R=28.3,S=1.21 + 31 个随机个体)
每代:变异 v = R_a + F·(R_b − R_c) → 交叉 → 贪婪选择(更优者保留)→ 迭代 50 代收敛

⚙ 参数调节

早高峰
平峰
晚高峰
🚗 交通流量 (pcu/h)
南北向流量(主干道)1150
东西向流量(次干道)900
🧭 配时约束
主干道偏置 split_bias 1.67
饱和流量 / 车道 1650
周期范围 45–140 s
固定基准周期(优化前)140 s
损失时间固定 8s(两次相位切换)· 每相位 2 车道 · 饱和度红线 0.98
█ 调节参数后点击"运行差分进化"

优化前 — 固定配时 140s

周期固定 140s,绿灯不随车流调整,长周期造成额外红灯等待。
--
平均延误 (s)
加权平均延误 D
均匀延误d₁ = T(1−λ)²/(2(1−y))
随机延误d₂ = x²/(2·q_sec·(1−x))
相位延误d = d₁ + d₂
加权平均f(R,S) = Σ(FLOWᵢ·dᵢ)/ΣFLOWᵢ
λ=g/T · y=q/SAT_FLOWq_sec=q/3600
--
南北饱和度
南北向(主干道)饱和度 x
x = y / λ = (q/S)/(g/T)
红线x ≤ 0.98
越线视为路口接近瘫痪
--
东西饱和度
东西向(次干道)饱和度 x
x = y / λ = (q/S)/(g/T)
红线x ≤ 0.98
主干道偏置越大,此值越高

优化后 — 差分进化 (DE)

DE 自动搜索周期公式参数 R、S,使平均延误最小且不越饱和度红线 0.98。
--
平均延误 (s)
加权平均延误 D
均匀延误d₁ = T(1−λ)²/(2(1−y))
随机延误d₂ = x²/(2·q_sec·(1−x))
相位延误d = d₁ + d₂
加权平均f(R,S) = Σ(FLOWᵢ·dᵢ)/ΣFLOWᵢ
λ=g/T · y=q/SAT_FLOWq_sec=q/3600
--
南北饱和度
南北向(主干道)饱和度 x
x = y / λ
红线x ≤ 0.98
--
东西饱和度
东西向(次干道)饱和度 x
x = y / λ
红线x ≤ 0.98
DE 会让此值贴近红线以压缩周期

📊 优化结果

⏱
--
平均延误降低
🔄
--
最优周期 T
🟢
--
绿灯 南北 / 东西

平均延误对比 (s)

固定 140s
--
DE 优化
--

DE 收敛曲线(延误越低越好)

点击"运行差分进化"查看方案对比