先更新第二、三部分
信号交叉口的建模是开发背压控制算法的必要基础。在本节中,我们将介绍用于模拟交叉口的排队网络。交叉口就像一个服务器,由一组链路组成,使交通流成为可能。车辆根据泊松分布从网络外部到达,从网络内的其他交叉口到达。每个控制阶段都会打开所有链接的一个子集,允许车辆向特定方向转移。
我们将信号化十字路口建模为一个有向图,节点数为 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。
对于交通网络边界上的交叉口,车辆从网络外部外生地到达,并从网络的其他交叉口内生地到达。只与网络内交叉口相连的交叉口没有来自外部的到达车辆。外生过程由离散随机变量 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 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
背压控制本质上是实现一种状态反馈控制法,它根据系统状态(即交叉口队列的长度)决定在每个时间瞬时应用的相位:
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)
原则上,具有更高增益的链路(表示迫切需要服务的不平衡更大,以及如果提供服务效率更高的出入节点队列之间的不平衡更大)应该优先开放。有两种特殊情况需要考虑。首先,当出口节点 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,并详细说明如下。平局情况下会随机打破。
由于交叉路口的道路数量是固定的,因此算法 1 的计算复杂度为 O ( 1 ) \mathcal{O}(1) O(1)。