先更新第二、三部分
II. 系统建模
信号交叉口的建模是开发背压控制算法的必要基础。在本节中,我们将介绍用于模拟交叉口的排队网络。交叉口就像一个服务器,由一组链路组成,使交通流成为可能。车辆根据泊松分布从网络外部到达,从网络内的其他交叉口到达。每个控制阶段都会打开所有链接的一个子集,允许车辆向特定方向转移。
A. 队列网络
我们将信号化十字路口建模为一个有向图,节点数为 N = { N i ∣ i ∈ N } N=\left\{N_{i} \mid i \in \mathcal{N}\right\} N={Ni∣i∈N},其中每个节点代表一条道路和排队的车辆。进入道路的集合用 N I = { N i ∣ i ∈ N I } N I=\left\{N_{i} \mid i \in \mathcal{N} \mathcal{I}\right\} NI={Ni∣i∈NI}表示,出口道路的集合用 N O = { N i ∣ i ∈ N O } N O=\left\{N_{i} \mid i \in \mathcal{N O}\right\} NO={Ni∣i∈NO}表示,并且 N = N I ∪ N O N=N I \cup N O N=NI∪NO。十字路口由链 L = { L i i ′ ∣ i ∈ N I , i ′ ∈ N O } L=\left\{L_{i}^{i^{\prime}} \mid i \in \mathcal{N} \mathcal{I}, i^{\prime} \in \mathcal{N O}\right\} L={Lii′∣i∈NI,i′∈NO}组成。打开 L i i ′ L_{i}^{i^{\prime}} Lii′可以使排队在 N i N_{i} Ni的车辆到达 N i ′ N_{i^{\prime}} Ni′。这与常见的队列网络控制相同,时间是离散的,用t_{k}表示,其中k是自然数。假设在t_{k}时刻,从进入道路 N i ( i ∈ N I ) N_{i}(i \in \mathcal{N} \mathcal{I}) Ni(i∈NI)出发驶向 N i ′ ( i ′ ∈ N O ) N_{i^{\prime}}(i^{\prime} \in \mathcal{N O}) Ni′(i′∈NO)的车辆数量为 q i i ′ ( k ) q_{i}^{i^{\prime}}(k) qii′(k)。在节点 N i N_{i} Ni在时间点 t k t_{k} tk时刻的队列长度就是
q i ( k ) = ∑ i ′ ∈ N O q i i ′ ( k ) . \begin{align} q_{i}(k)=\sum_{i^{\prime} \in \mathcal{N} \mathcal{O}} q_{i}^{i^{\prime}}(k) . \end{align} qi(k)=i′∈NO∑qii′(k).
N i N_{i} Ni 的容量表示为 W i W_{i} Wi,即道路 N i N_{i} Ni 能容纳的最大车辆数。当达到 W i W_{i} Wi 时,不能再有车辆进入 N i N_{i} Ni。如图1所示,示例交叉口有八个节点,分别代表四条进口道和四条出口道。在交叉口有十二个连接。例如,打开连接 L 1 6 L_{1}^{6} L16 允许道路 N 1 N_{1} N1 上的车辆左转,到达道路 N 6 N_{6} N6。
B. 抵达车辆
对于交通网络边界上的交叉口,车辆从网络外部外生地到达,并从网络的其他交叉口内生地到达。只与网络内交叉口相连的交叉口没有来自外部的到达车辆。外生过程由离散随机变量 X \mathcal{X} X 建模,其具有参数 λ > 0 \lambda>0 λ>0 的泊松分布。 X X X 的概率质量函数为
Prob ( X = k ) = λ k e − λ k ! , \begin{align} \operatorname{Prob}(\mathcal{X}=k)=\frac{\lambda^{k} e^{-\lambda}}{k !}, \end{align} Prob(X=k)=k!λke−λ,
计算车辆在时刻 t k t_{k} tk 到达的概率,从时刻 0 开始计数。 X \mathcal{X} X 的期望值为 λ \lambda λ。我们使用转向概率 p l p_{l} pl 和 p r p_{r} pr 来区分将要到达不同节点的车辆。当车辆到达时,它将左转的概率是 p l p_{l} pl,右转的概率是 p r p_{r} pr,直行的概率则为 1 − p l − p r 1-p_{l}-p_{r} 1−pl−pr。以图1中的节点 N 3 N_{3} N3 为例,
q 3 8 = p 3 , l q 3 , q 3 6 = p 3 , r q 3 , q 3 5 = ( 1 − p 3 , l − p 3 , r ) q 3 . \begin{align} q_{3}^{8}=p_{3, l} q_{3}, \quad q_{3}^{6}=p_{3, r} q_{3}, \quad q_{3}^{5}=\left(1-p_{3, l}-p_{3, r}\right) q_{3} . \end{align} q38=p3,lq3,q36=p3,rq3,q35=(1−p3,l−p3,r)q3.
将 A i i ′ ( k ) A_{i}^{i^{\prime}}(k) Aii′(k) 表示为在 t k t_{k} tk 时由外因和内因到达节点 N i N_{i} Ni 并自时间 0 开始驶往 N i ′ N_{i^{\prime}} Ni′ 的车辆总数,则排队动态为
q i i ′ ( k + 1 ) = q i i ′ ( k ) + A i i ′ ( k + 1 ) − A i i ′ ( k ) − S i i ′ ( k , k + 1 ) , \begin{align} q_{i}^{i^{\prime}}(k+1)=q_{i}^{i^{\prime}}(k)+A_{i}^{i^{\prime}}(k+1)-A_{i}^{i^{\prime}}(k)-S_{i}^{i^{\prime}}(k, k+1), \end{align} qii′(k+1)=qii′(k)+Aii′(k+1)−Aii′(k)−Sii′(k,k+1),
其中, S i i ′ ( k , k + 1 ) S_{i}^{i^{\prime}}(k, k+1) Sii′(k,k+1) 是在 t k t_{k} tk 和 t k + 1 t_{k+1} tk+1 之间离开 N i N_{i} Ni 并到达 N i ′ N_{i^{\prime}} Ni′ 的车辆数。
C. 控制阶段
交叉点上控制相位的集合用 C = { c j } C=\left\{c_{j}\right\} C={cj} 表示。与 c j c_{j} cj 的子集 L L L 相对应,换句话说,与每个阶段 c j c_{j} cj 相对应, L L L 的一个子集被打开。在图 1 所示的例子中,总共有四个控制阶段。例如,当应用 c 2 c_{2} c2 时,链接 L 1 8 L_{1}^{8} L18 和 L 3 6 L_{3}^{6} L36 被打开,允许在 N 1 N_{1} N1 和 N 3 N_{3} N3 处排队的车辆右转。需要注意的是,过渡阶段(即黄灯亮起疏导路口车辆的时间段)表示为 c 0 = ∅ c_{0}=\emptyset c0=∅。也就是说,在过渡阶段没有任何链接打开。需要做出的控制决策是应用哪个阶段。假设从 N i N_{i} Ni 到 N i ′ N_{i^{\prime}} Ni′ 的车辆的满载服务率为 μ i i ′ \mu_{i}^{i^{\prime}} μii′,那么当 c j c_{j} cj 在 Δ t \Delta t Δt 期间应用时,从 N i N_{i} Ni 到 N i ′ N_{i^{\prime}} Ni′ 的最大转移车辆数为 μ i i ′ \mu_{i}^{i^{\prime}} μii′。决定能否达到这个最大值的因素有三个。首先,控制阶段必须打开 N i N_{i} Ni 到 N i ′ N_{i^{\prime}} Ni′ 的链接,即 L i i ′ L_{i}^{i^{\prime}} Lii′ 是 c j c_{j} cj 的子集。其次,在 N i N_{i} Ni 必须有足够的排队车辆离开 N i ′ N_{i^{\prime}} Ni′。第三, N i ′ N_{i^{\prime}} Ni′ 的队列不能超过其容量 W i ′ W_{i^{\prime}} Wi′。因此,从 t k t_{k} tk 到 t k + 1 t_{k+1} tk+1 期间,从 N i N_{i} Ni 转移到 N i ′ N_{i^{\prime}} Ni′ 的车辆数计算公式为 (5)。
S i i ′ ( k , k + Δ k ) = { min ( μ i i ′ ( t k + 1 − t k ) , q i i ′ ( k ) + A i i ′ ( k + 1 ) − A i i ′ ( k ) , W i ′ − q i ′ ( k ) ) : if c j ⊃ L i i ′ 0 : otherwise \begin{align} S_{i}^{i^{\prime}}(k, k+\Delta k)=\left\{\begin{array}{cc} \min \left(\mu_{i}^{i^{\prime}}\left(t_{k+1}-t_{k}\right), q_{i}^{i^{\prime}}(k)+A_{i}^{i^{\prime}}(k+1)-A_{i}^{i^{\prime}}(k), W_{i^{\prime}}-q_{i^{\prime}}(k)\right): & \text { if } c_{j} \supset L_{i}^{i^{\prime}} \\ 0 & : \text { otherwise } \end{array}\right. \end{align} Sii′(k,k+Δk)={min(μii′(tk+1−tk),qii′(k)+Aii′(k+1)−Aii′(k),Wi′−qi′(k)):0 if cj⊃Lii′: otherwise
III. 利用率感知自适应交通控制
背压控制本质上是实现一种状态反馈控制法,它根据系统状态(即交叉口队列的长度)决定在每个时间瞬时应用的相位:
c ( k ) = ϕ ( Q ( k ) ) . \begin{align} c(k)=\phi(Q(k)) . \end{align} c(k)=ϕ(Q(k)).
控制法则为 ϕ \phi ϕ, c ( k ) ∈ C c(k) \in C c(k)∈C 是选定的控制阶段。所有队列长度的集合为 Q ( k ) = { q i ∈ N } Q(k)=\left\{q_{i} \in \mathcal{N}\right\} Q(k)={qi∈N}
函数 b=f(q) 用于将队列长度映射为压力值。对于每个链路 L i i ′ L_{i}^{i^{\prime}} Lii′,我们可以构建链路的增益为
g ( L i i ′ , k ) = ( b i i ′ ( k ) − b i ′ ( k ) ) μ i i ′ , \begin{align} g\left(L_{i}^{i^{\prime}}, k\right)=\left(b_{i}^{i^{\prime}}(k)-b_{i^{\prime}}(k)\right) \mu_{i}^{i^{\prime}}, \end{align} g(Lii′,k)=(bii′(k)−bi′(k))μii′,
即链路的满服务速率 L i i ′ L_{i}^{i^{\prime}} Lii′ 乘以以 N i N_{i} Ni 为目标的入站节点 N i N_{i} Ni 的队列与出站节点 N i ′ N_{i^{\prime}} Ni′ 的队列之间的压力差。值得注意的是,增益既可以是正值,也可以是负值。
g ( L i i ′ , k ) = { β G min : if q i ′ ( k ) = W i ′ ; α G min : if q i ′ ( k ) < W i ′ ∧ q i i ′ ( k ) = 0 ; ( b i i ′ ( k ) − b i ′ ( k ) ) μ i i ′ : otherwise. \begin{align} g\left(L_{i}^{i^{\prime}}, k\right)=\left\{\begin{array}{cl} \beta G_{\min } & : \text { if } q_{i^{\prime}}(k)=W_{i^{\prime}} ; \\ \alpha G_{\min } & : \text { if } q_{i^{\prime}}(k)<W_{i^{\prime}} \wedge q_{i}^{i^{\prime}}(k)=0 ; \\ \left(b_{i}^{i^{\prime}}(k)-b_{i^{\prime}}(k)\right) \mu_{i}^{i^{\prime}} & : \text { otherwise. } \end{array}\right. \end{align} g(Lii′,k)=⎩ ⎨ ⎧βGminαGmin(bii′(k)−bi′(k))μii′: if qi′(k)=Wi′;: if qi′(k)<Wi′∧qii′(k)=0;: otherwise.
原则上,具有更高增益的链路(表示迫切需要服务的不平衡更大,以及如果提供服务效率更高的出入节点队列之间的不平衡更大)应该优先开放。有两种特殊情况需要考虑。首先,当出口节点 N i ′ N_{i^{\prime}} Ni′ 达到其容量时,即 q i ′ = W i ′ q_{i^{\prime}}=W_{i^{\prime}} qi′=Wi′ 时,不能有车辆进入 N i ′ N_{i^{\prime}} Ni′,因此不应该开放 L i i ′ L_{i}^{i^{\prime}} Lii′。其次,当入口节点 N i N_{i} Ni 到 N i ′ N_{i^{\prime}} Ni′ 的车辆排队数量为零,即 q i i ′ = 0 q_{i}^{i^{\prime}}=0 qii′=0 时,如果开放 L i i ′ L_{i}^{i^{\prime}} Lii′,则有效服务速率小于 μ i i ′ \mu_{i}^{i^{\prime}} μii′,表示交叉口利用率低,因为只有新到达的车辆将被服务。考虑到这两种情况,我们使用 (8) 更新 (7),其中 G min G_{\min } Gmin 小于 (7) 可以取的最小值。参数 β \beta β 和 α \alpha α 是正整数,而
β > α > 1 , \begin{align} \beta>\alpha>1, \end{align} β>α>1,
以便将这两种特殊情况与链路具有全服务速率的正常情况区分开来,同时也将它们相互区分开来。在这项工作中,映射函数为
b = f ( q ) = q . \begin{align} b=f(q)=q . \end{align} b=f(q)=q.
因此
G min < min i ∈ N I , i ′ ∈ N O − W i ′ μ i i ′ \begin{align} G_{\min }<\min _{i \in \mathcal{N} \mathcal{I}, i^{\prime} \in \mathcal{N} \mathcal{O}}-W_{i^{\prime}} \mu_{i}^{i^{\prime}} \end{align} Gmin<i∈NI,i′∈NOmin−Wi′μii′
为负数。(8) 中的三种情况是相互排斥的,给定的链路增益对应于唯一的一种情况。对于每个控制阶段 c j c_{j} cj
g ( c j , k ) = ∑ L i i ′ ∈ c j g ( L i i ′ , k ) , \begin{align} g\left(c_{j}, k\right)=\sum_{L_{i}^{i^{\prime}} \in c_{j}} g\left(L_{i}^{i^{\prime}}, k\right), \end{align} g(cj,k)=Lii′∈cj∑g(Lii′,k),
是所有链路增益的总和,而
g max ( c j , k ) = max L i i ′ ∈ c j g ( L i i ′ , k ) , \begin{align} g_{\max }\left(c_{j}, k\right)=\max _{L_{i}^{i^{\prime}} \in c_{j}} g\left(L_{i}^{i^{\prime}}, k\right), \end{align} gmax(cj,k)=Lii′∈cjmaxg(Lii′,k),
为最大链路增益。
提出的利用率感知自适应背压交通信号控制算法在每个时间点决定当前控制阶段是否应继续(即, c ( k + 1 ) = c ( k ) c(k+1)=c(k) c(k+1)=c(k)),还是应开始过渡阶段(即, c ( k + 1 ) = c 0 ) \left.c(k+1)=c_{0}\right) c(k+1)=c0),在后一种情况下,过渡阶段后应该应用哪个控制阶段。该算法总结如算法1,并详细说明如下。平局情况下会随机打破。
- 在输入中, Q ( k ) Q(k) Q(k) 是当前时间点 t k t_{k} tk 所有节点排队长度的集合, P P P 是所有入口节点的转向概率集合, W W W 是道路容量的集合, c ( k ) c(k) c(k) 是当前的控制阶段, Δ k \Delta k Δk 是过渡阶段的时长。可以看出,所有的输入都是局部的,与交叉口相关,不需要考虑交通需求。
- 在输出中, c ( k + 1 ) c(k+1) c(k+1) 是下一个时间点要决定的控制阶段。如果过渡阶段 c 0 c_{0} c0 返回给 c ( k + 1 ) c(k+1) c(k+1),那么过渡后的控制阶段 c ( k + Δ k ) c(k+\Delta k) c(k+Δk) 也将被返回。
- 当应用某个控制阶段时,我们希望将属于该阶段的所有链路的增益减小到0。也就是说,我们努力实现入口和出口节点的排队长度之间的平衡,这是背压控制的本质,以实现高系统稳定性。因此,只要仍然存在一个增益大于0的链路,当前的控制阶段 c ( k ) c(k) c(k) 将保持不变。 (第1-2行)
- 一旦属于当前控制阶段的所有链路的增益等于或小于0,就可以考虑可能的变化。一般来说,有三个优先级水平。最后的优先级给予具有完全出口节点的链路,因为打开它们是对交叉口的完全浪费。第二优先级给予入口节点没有排队的链路。这是在推导(8)时讨论过的两种特殊情况。第一优先级给予不属于前两类并且能够实现完全服务速率的链路(交叉口的高利用率)。在那些至少包含一个具有第一优先级链路的控制阶段中,选择具有最大链路增益总和的那个。 (第4-6行)
- 如果没有控制阶段包含至少一个第一优先级链路,则可选择任何一个包含至少一个第二优先级链路的控制阶段。(第 8 行)
- 如果所选控制相位与当前相位相同,则保持当前控制相位 c(k)。(第 11 行)
- 如果所选的控制阶段与当前阶段不同,则应用过渡阶段,然后再次执行第 4-9 行,计算随后应用的控制阶段。(第 13-15 行)
- 在没有电流控制阶段的起始时间 0 时,通过执行第 4-9 行,设置 k=0 来决定 c(0)。
由于交叉路口的道路数量是固定的,因此算法 1 的计算复杂度为 O ( 1 ) \mathcal{O}(1) O(1)。