基于博弈论的出租车系统效率优化

Jiarui Gan and Bo An, Nanyang Technological University

将博弈论的解决方案概念与现有的出租车市场模型相结合,可以将模型驾驶员的策略制定过程转化为博弈,将优化出租车系统效率的问题转化为寻找市场政策,以达到期望的均衡。
北京有6万多辆有牌照的出租车,这些出租车为近百万市民提供服务。然而,尽管高峰时段的顾客需求不断增长,大多数出租车司机的行为却与直觉相悖,他们故意避免在高峰时段工作。因此,乘客在叫车上花费了大量不合理的时间。一些人甚至改乘无证出租车,这类出租车的收费通常更高,且对道路安全构成了巨大威胁。结果表明,不合理的基于距离的定价方案是造成这种情况的主要原因,也被称为高峰时段困境。由于交通繁忙,出租车司机在高峰时间的行车速度较慢,导致收入减少,甚至出现负增长,因此他们只能追求唯一能让他们赚钱的选择:在高峰时间不工作。
我们提出了一个解决方案:在高峰期提高票价,以激励出租车司机工作,具体来说,使用动态时间相关的票价结构,区分高峰期和非高峰期。关键是计算出使出租车系统效率最大化的最优票价。我们把这个问题称为出租车系统效率最优化(TASEO)问题。

人工智能和博弈论

有关出租车市场经济的研究可以追溯到1969年,奥尔指出了传统成本-需求理论应用的不足。1972年,乔治·道格拉斯引入了一个总需求和总供给模型,该模型假设客户对出租车服务的需求取决于预期的货币和时间成本,而预期的顾客等待时间则取决于总的空闲出租车小时数。基于该模型,杨海和同事从服务强度方面研究了交通拥堵的外部关系和时间变化。其他研究调查了纽约等不同地方的出租车票价。Kim Young-Joo and Hark Hwang 研究了以最大化平均利润为目标的出租车价格增量折扣政策。杨海和他的同事研究了一种非线性的票价结构,并展示了它相对于香港现有选择的优势。然而,这些工作都没有调查出租车司机的战略行为的影响。为了解决我们的问题,我们需要知道出租车司机对票价变化的反应。
幸运的是,人工智能领域为研究人类行为提供了许多技术,将人工智能技术应用于交通领域的问题,如交通控制、交叉口管理和交通系统仿真,是一个日益增长的趋势。最近,我们看到博弈论在中国的成功应用AI社区,如在安全资源分配。博弈论为研究理性决策者之间的冲突与合作提供了丰富的数学基础和概念。现有的应用已经证明了博弈论在解决复杂的现实世界问题方面的潜力,激励我们沿着这个方向寻找解决方案。

出租车系统效率最优化

通过票价调整来提高系统效率,首先要了解票价对系统效率的影响。现有的研究表明,出租车市场是由两个关键因素决定的,即票价价格和出租车供应(即正常运营的出租车的数量)。由于出租车系统的分散管理,出租车的供应是由司机的经营策略决定的,而不是由市场监管者直接控制的。因此,我们有一个间接的依赖关系:对于给定的票价,出租车司机用最好的策略 化。如图1所示,我们可以将博弈论的行为模型与现有的出租车市场模型相结合。

现有的出租车市场模型

出租车市场是一个动态的时变系统。为了对其方差进行建模,我们对优化范围进行了离散化
(如一整天)分成一组n个等长的时间段,这样当每个时间段的持续时间足够短时,市场就可以在每个时间段内被视为均匀。在一个时间段 i i i中,整个出租车系统服务的乘客数量取决于一次旅行的平均货币和时间成本,即,
D i ( F i , L i , W i ) = D i e − β ( F i γ + φ 1 L i + φ 2 W i ) (1) D^i(F^i,L^i,W^i)=D^ie^{-\beta(\frac{F^i}{\gamma}+\varphi_1L^i+\varphi_2W^i)} \tag{1} Di(Fi,Li,Wi)=Dieβ(γFi+φ1Li+φ2Wi)(1)
其中, e e e是自然数; F i F^i Fi是平均票价; L i L^i Li是平均乘车时间; W i W^i Wi是顾客平均等待时间; β \beta β>0,是一个敏感性参数; φ 1 \varphi_1 φ1 φ 2 \varphi_2 φ2是用于将时间成本转换为货币成本的参数; γ \gamma γ是平均每次载客人数; D i D^i Di是潜在顾客数量,当总成本为零时,达到理想值。等待时间 W i W^i Wi取决于 D i D^i Di,即
W i ( D i , L i , p i ) = ω p i ⋅ N T − D i L i / ( γ ⋅ τ ) (2) W^i(D^i,L^i,p^i)=\frac{\omega}{p^i \cdot N_T-D^iL^i/(\gamma \cdot \tau)}\tag{2} Wi(Di,Li,pi)=piNTDiLi/(γτ)ω(2)
其中, ω \omega ω >0,是取决于出租车停靠站密度的参数; p i p^i pi是正在运营的出租车数量占出租车总数的比例( P o W PoW PoW); N T N_T NT是出租车总数; p i ⋅ N T − D i L i / ( γ ⋅ τ ) p^i \cdot N_T-D^iL^i/(\gamma \cdot \tau) piNTDiLi/(γτ)代表在时段 i i i的空车。可以证明,当 F i F^i Fi L i L^i Li p i p^i pi固定时, D i D^i Di W i W^i Wi由方程 ( 1 ) (1) (1)和方程 ( 2 ) (2) (2)唯一确定。事实上, D i D^i Di W i W^i Wi F i F^i Fi L i L^i Li p i p^i pi的隐函数。我们把他们表示为 D i = D i ( F i , L i , p i ) D^i=D^i(F^i,L^i,p^i) Di=Di(Fi,Li,pi) W i = W i ( F i , L i , p i ) W^i=W^i(F^i,L^i,p^i) Wi=Wi(Fi,Li,pi)
考虑到平均行程距离 d i d^i di,行程时间可以由行程速度 V i V^i Vi表示为 L i = d i / V i L^i=d^i/V^i Li=di/Vi。路网中的行驶速度可以近似为道路车辆数的线性函数,该函数与 p i ( P o W ) p^i(PoW) pi(PoW)是线性的,因为我们假设网络中非出租车车辆 N v i N^i_v Nvi的数目是一个基于特定时期的常数。因此, V i V^i Vi p i p^i pi的线性函数,即:
V i ( p i ) = μ ( p i ⋅ N T + N v i ) + λ V^i(p^i)=\mu(p^i \cdot N_T +N^i_v)+\lambda Vi(pi)=μ(piNT+Nvi)+λ
其中, μ \mu μ λ \lambda λ是取决于道路状态的参数。我们把 L i L^i Li D i D^i Di W i W^i Wi分别记为 L i ( p i ) L^i(p^i) Li(pi) D i ( F i , p i ) D^i(F^i,p^i) Di(Fi,pi) W i ( F i , p i ) W^i(F^i,p^i) Wi(Fi,pi)
接下来,我们采用基于距离的票价结构
F i = f 0 + f i ⋅ ( d i − d 0 ) F^i=f_0+f^i\cdot(d^i-d_0) Fi=f0+fi(did0)
其中, f 0 f_0 f0是起步价, d 0 d_0 d0是起步里程数; f i f^i fi i i i时段的每公里单价,也就是单位距离的收费。我们通过调整每公里单价 f i f^i fi,进而将 F i F^i Fi看作函数 F i ( f i ) F^i(f^i) Fi(fi),从而优化票价结构。因此,所有的市场因素,尤其是被服务的客户数量 D i D^i Di,现在取决于 f i f^i fi p i p^i pi,也就是 D i = D i ( f i , p i ) D^i=D^i(f^i,p^i) Di=Di(fi,pi)。为了便于理解,我们将所有时期的市场因素表示为列向量,其中每个成分对应一个时期。例如,我们把每公里单价表示为 f = ( f i ) f =(f^i) f=(fi)。图 2 2 2总结了这些因素之间的相互依赖关系。

出租车司机的策略

出租车司机通过考虑潜在的利润来决定什么时间工作。换句话说,出租车司机的策略是制定一个时间表,明确规定(一天中的)几个工作时间段。我们把随机因素考虑到策略中,让司机制定一个混合的策略,这是一个罗列可能出现的时间表的任务。我们用向量 s ∈ { 0 , 1 } n s\in\{0,1\}^n s{0,1}n表示单一策略,其中, s i = 1 ( 否 则 , s i = 0 ) s^i=1(否则,s^i=0 ) si=1(si=0)表示在 i i i时段正在营业(否则,不营业)。设单一策略集合为 S S S,即出租车司机可选择的单一策略集合。然后,我们把混合策略表示为 x ∈ R x\in R xR。考虑到出租车司机在实际情况下的能力,我们对纯策略集中的每个调度施加以下条件:

  • 条件1(C1):出租车司机工作时间不会超过 n w n_w nw小时。
  • 条件2(C2):出租车司机连续工作时间不会超过 n c n_c nc小时。

也就是, S = { s ∈ { 0 , 1 } n ∣ s 满 足 C 1 和 C 2 } S=\{s\in\{0,1\}^n | s 满足C1和C2 \} S={s{0,1}nsC1C2}
我们的框架适用于出租车司机行为的不同模型。我们用两个模型来说明:对称策略,即假设所有出租车司机都是相同的,每个出租车司机都假设所有其他司机都采用相同的策略(同车型、运营成本、充电方案);利己主义战略,其中经典的解决概念——纳什均衡(NE)被采用,我们假设司机偏离了他或她的策略 (而其他人则不会)除非他或她无法从中受益。

对称战略。 这个假设与焦点理论是一致的,这个战略指出,人们倾向于根据简单的社会信念来使用解决方案(其他司机也采用相同的策略),尤其是在缺乏沟通的情况下。给定对称策略 x x x,则 P o W PoW PoW
p ( x ) = ∑ s ∈ S x s ⋅ s (3) p(x)= \sum_{s\in S} x_s \cdot s\tag{3} p(x)=sSxss(3)
这与出租车司机在每个时段工作的概率相同,可以看作是出租车司机策略的一个有代表性意义的表示。出租车司机是利益驱动的,他们总是选择最好的策略去最优化他们效用,也就是
x ∗ ∈ a r g m a x x : x ≥ 0 , 1 T x = 1 U ( f , p ( x ) ) (4) x^* \in argmax_{x:x \geq 0,1^Tx=1}U(f,p(x))\tag{4} xargmaxx:x0,1Tx=1U(f,p(x))(4)
在定义效用函数 U ( f , p ) U(f,p) U(f,p)之前,注意上述优化,虽然定义在单一策略上,但在假设所有驱动都相同的情况下,捕获所有司机的行为(正如我们所看到的,在一个时间段工作的利润也取决于有多少其他出租车在同一时间段工作)。在这种情况下,每个玩司机都要解决相同的优化问题,即司机的效用取决于使用相同混合策略的其他玩家的策略。
U ( f , p ) U(f,p) U(f,p)被定义为在所有时间段的效用的总和,也就是
U ( f , p ) = ∑ i = 1 n p i ⋅ G i ( f i , p i ) , U(f,p)=\sum_{i=1}^n p^i \cdot G^i (f^i ,p^i), U(f,p)=i=1npiGi(fi,pi)
其中 G i ( f i , p i ) G^i (f^i ,p^i) Gi(fi,pi)是在时间段 i i i内的工作利润定义为
G i ( f i , p i ) = D i ( p i ) γ ⋅ N T ⋅ p i ⋅ F i ( f i ) − c i ⋅ τ , (5) G^i (f^i ,p^i)=\frac{D^i(p^i)}{\gamma \cdot N_T \cdot p^i} \cdot F ^i(f^i)-c^i \cdot \tau\tag{5}, Gi(fi,pi)=γNTpiDi(pi)Fi(fi)ciτ(5)
其中, D i / γ ⋅ N T D^i/ \gamma \cdot N_T Di/γNT代表每辆的士的平均行程次数, c g c_g cg是单位时间内汽油消耗的成本。
由式 ( 4 ) (4) (4)可知,车费价格通过优化决定出租车司机的策略,而策略又通过公式 ( 3 ) (3) (3)决定 P o W PoW PoW U ( f , p ) U(f,p) U(f,p)对于 p p p是严格凹的,所以只有一个 p p p最大化 U U U,已知 p p p的可行集是凸的。这意味着即使方程 4 4 4有不止一个解,所有的解都必须产生相同 P o W PoW PoW,并且保证 f f f p p p是一一对应的。

策略战略。 为了分析在那什均衡概念下出租车司机的行为,我们定义策略组合为 ( x 1 , . . . , x N T ) (x_1,...,x_{N_T}) (x1,...,xNT)。然后通过
p i ( x 1 , . . . , x N T ) = 1 N T ∑ j = 1 N T ∑ s ∈ S x j , s ⋅ s i (6) p^i(x_1,...,x_{N_T})=\frac{1}{N_T}\sum_{j=1}^{N_T}\sum_{s\in S}x_{j,s}\cdot s^i \tag{6} pi(x1,...,xNT)=NT1j=1NTsSxj,ssi(6)
给出 P o W PoW PoW。每辆出租车的效用是
U j ( f , x 1 , . . . , x N T ) = ∑ i = 1 n p i ( x j ) ⋅ G i ( f i , p i ( x 1 , . . . , x N T ) ) (7) U_ j(f,x_1,...,x_{N_T})=\sum_{i=1}^np^i(x^j) \cdot G^i(f^i, p^i(x_1,...,x_{N_T}) ) \tag{7} Uj(f,x1,...,xNT)=i=1npi(xj)Gi(fi,pi(x1,...,xNT))(7)
在NE模式下,假设其他玩家坚持自己的策略,那么没有玩家能够从改变自己的策略中获益。即 ( x 1 , … , x N T ) (x_1,…,x_{N_T}) (x1xNT)在NE中,对于每辆出租车 j j j
U j ( f , x 1 , . . . , x N T ) ≥ U j ( f , x 1 , . . . , x j − 1 , x ′ , x j + 1 , . . . , x N T ) , ∀ x ′ ≥ 0 , x ′ = 1 (8) U_j(f,x_1,...,x_{N_T})\geq U_j(f,x1,...,x_{j-1},x',x_{j+1},...,x_{N_T}),\\ \forall x' \geq 0,x'=1 \tag{8} Uj(f,x1,...,xNT)Uj(f,x1,...,xj1,x,xj+1,...,xNT),x0,x=1(8)
因为有大量的出租车,所以游戏不是非原子的,这意味着一辆出租车的影响微乎其微。当一辆出租车偏离,它不会改变整体的 P o W PoW PoW,也就是
p ( f , x 1 , . . . , x N T ) = p ( f , x 1 , . . . , x j − 1 , x ′ , x j + 1 , . . . , x N T ) , ∀ x ′ ≥ 0 , x ′ = 1 p(f,x_1,...,x_{N_T})=p(f,x1,...,x_{j-1},x',x_{j+1},...,x_{N_T}),\\ \forall x' \geq 0 , x'=1 p(f,x1,...,xNT)=p(f,x1,...,xj1,x,xj+1,...,xNT),x0,x=1
将式 ( 8 ) (8) (8)中的判据改写为
∑ i = 1 n p i ( x j ) ⋅ G i ( f i , p i ( x 1 , . . . , x N T ) ) ≥ ∑ i = 1 n p i ( x ′ ) ⋅ G i ( f i , p i ( x 1 , . . . , x N T ) ) , ∀ x ′ (9) \sum_{i=1}^np^i(x_j)\cdot G^i(f^i,p^i(x_1,...,x_{N_T}))\geq \sum_{i=1}^np^i(x')\cdot G^i(f^i,p^i(x_1,...,x_{N_T})),\forall x'\tag{9} i=1npi(xj)Gi(fi,pi(x1,...,xNT))i=1npi(x)Gi(fi,pi(x1,...,xNT)),x(9)
另外,因为效用函数(方程 7 7 7)与所有出租车相同,所以博弈是对称的。对于对称博弈,总是存在一种对称均衡,在这种均衡下,所有参与者都采用相同的策略。在这种情况下,策略组合可以被简化为一个通用的策略,用 x x x表示。我们在方程 3 3 3 P o W PoW PoW写成 p ( x ) = ∑ s ∈ S x s ⋅ s p(x)= \sum_{s\in S} x_s \cdot s p(x)=sSxss,于是,式 9 9 9中的平衡判据变为
∑ i = 1 n p i ( x j ) ⋅ G i ( f i , p i ( x ) ) ≥ ∑ i = 1 n p i ( x ′ ) ⋅ G i ( f i , p i ( x ) ) , ∀ x ′ (10) \sum_{i=1}^np^i(x_j)\cdot G^i(f^i,p^i(x))\geq \sum_{i=1}^np^i(x')\cdot G^i(f^i,p^i(x)),\forall x'\tag{10} i=1npi(xj)Gi(fi,pi(x))i=1npi(x)Gi(fi,pi(x)),x(10)
为了分析均衡策略,我们构造如下函数:
G ( f , p ) = ∑ i = 1 n ∫ 0 p i G i ( f i , p i ) d p . (11) \mathcal{G}(\mathbf{f}, \mathbf{p})=\sum_{i=1}^n\int_0^{p^i}G^i(f^i,p^i)dp.\tag{11} G(f,p)=i=1n0piGi(fi,pi)dp.(11)
x ∗ x^* x进入平衡状态。我们认为,被推导出来的 P o W PoW PoW p ∗ = p ( x ∗ ) p^∗= p(x^∗) p=p(x)在给定的 f f f上使 g ( f , p ) g(f, p) g(f,p)最大化,这意味着,与方程 4 4 4一样,被如下优化所捕获:
x ∗ ∈ a r g m a x x : x ≥ 0 , x = 1 g ( f , p ( x ) ) . (12) x^* \in argmax_{x:x\geq 0,x=1}g(f,p(x)).\tag{12} xargmaxx:x0,x=1g(f,p(x)).(12)
注意,我们可以发现 m a x x : x ≥ 0 , x = 1 g ( f , p ( x ) ) max_{x:x\geq 0,x=1}g(f,p(x)) maxx:x0,x=1g(f,p(x))是一个凸优化: p p p的可行空间显然是凸的,而对于自变量 p p p来说 g ( f , p ) g(f,p) g(f,p)是凹的(接下来我们将会展示)。根据凸优化的最优性准则,对于所有可行的 p ′ p' p来说,当且仅当 ∇ g ( p ∗ ) ( p ∗ − p ′ ) ≥ 0 \nabla g(p^*)(p^*-p')\geq 0 g(p)(pp)0时, p ∗ p^* p是最优的。这与方程 10 10 10中的平衡判据完全相同。
正如别处指出的那样(从 U i U^i Ui的极简性看出),为了观察出 g ( F , G ) g(F,G) g(F,G)的凹度,我们注意到 D i ( f i , p i ) D^i(f^i,p^i) Di(fi,pi)对于 p i p^i pi是严格凹的。我们通过检验 g ( f , p ) g(f,p) g(f,p)海森矩阵来验证凹性:我们让 p i ⋅ ( ∂ D i ( f i , p i ) / ∂ p i ) − D i ( f i , p i ) < 0 p^i \cdot (\partial D^i(f^i,p^i)/\partial p^i)-D^i(f^i,p^i)<0 pi(Di(fi,pi)/pi)Di(fi,pi)<0,因为
l i m p i → 0 ( p i ∂ D i ( f i , p i ) ∂ p i − D i ( f i , p i ) ) = 0 lim_{p^i \rightarrow 0} (p^i \frac{\partial D^i(f^i,p^i)}{\partial p^i}-D^i(f^i,p^i))=0 limpi0(pipiDi(fi,pi)Di(fi,pi))=0

∂ D i ( f i , p i ) ∂ p i − D i ( f i , p i ) \frac{\partial D^i(f^i,p^i)}{\partial p^i}-D^i(f^i,p^i) piDi(fi,pi)Di(fi,pi)
p i p^i pi求偏导得
p i ⋅ ∂ 2 D i ( f i , p i ) ( ∂ p i ) 2 p^i \cdot \frac{\partial ^2D^i(f^i,p^i)}{(\partial p^i)^2} pi(pi)22Di(fi,pi)
其中,最后一个不等式成立,理由如下:由于 D i D^i Di的极简性, ∂ 2 D i ( f i , p i ) / ( ∂ p i ) 2 < 0 \partial ^2D^i(f^i,p^i)/(\partial p^i)^2<0 2Di(fi,pi)/(pi)2<0。因此,海森矩阵是正定的。这也意味着只有一个 p p p使 G ( f , p ) \mathcal{G}(\mathbf{f}, \mathbf{p}) G(f,p)最大化,这与 U ( f , p ) U(f, p) U(f,p)相似,保证了 f f f p p p的一对一对应。

求解算法

我们使用服务客户的总数 D ( f , p ) ∑ i D ( f i , p i ) D(f,p)\sum_iD(f^i,p^i) D(f,p)iD(fi,pi)去测量系统效率以及制定一个TASEO作为以下两层优化方案:
m a x f , x ∗ D ( f , p ( x ∗ ) ) (13) max_{f,x^*}D(f,p(x^*)) \tag{13} maxf,xD(f,p(x))(13)
使得
x ∗ ∈ a r g m a x x : x ≥ 0 , x = 1 U ( f , p ( x ) ) , (14) x^* \in argmax_{x:x \geq 0,x=1}U(f,p(x)),\tag{14} xargmaxx:x0,x=1U(f,p(x)),(14)

∂ 2 G ( f , p ) ∂ p i ∂ p j = { 0 ,  if  i ≠ j F i ( f i ) γ ⋅ N T ⋅ 1 ( p i ) 2 ⋅ ( p i ⋅ ∂ D i ( f i , p i ) ∂ p i − D i ( f i , p i ) ) ,  if  i = j \begin{aligned} &\frac{\partial^{2} \mathcal{G}(\mathbf{f}, \mathbf{p})}{\partial p^{i} \partial p^{j}}\\ &=\left\{\begin{array}{cc} {0,} & {\text { if } i \neq j} \\ {\frac{F^{i}\left(f^{i}\right)}{\gamma \cdot N_{T}} \cdot \frac{1}{\left(p^{i}\right)^{2}} \cdot\left(p^{i} \cdot \frac{\partial D^{i}\left(f^{i}, p^{i}\right)}{\partial p^{i}}-D^{i}\left(f^{i}, p^{i}\right)\right),} & {\text { if } i=j} \end{array}\right. \end{aligned} pipj2G(f,p)=0,γNTFi(fi)(pi)21(pipiDi(fi,pi)Di(fi,pi)), if i=j if i=j
通过这个例子中,我们在方程中 14 14 14 G ( f , p ) \mathcal{G}(\mathbf{f}, \mathbf{p}) G(f,p)代替 U ( f , p ) U(\mathbf{f}, \mathbf{p}) U(f,p)。只要优化目标是 f f f p p p的函数,该模型也可以用相同形式的优化程序处理其他系统效率的度量。
为了解决这个双层优化问题,我们可以将连续票价离散化为一个小的候选价格集合,比如说 { ¥ 1.00 , ¥ 1.20 , \{¥ 1.00, ¥ 1.20, {¥1.00,¥1.20, … , ¥ 5.00 } , \ldots, ¥ 5.00\}, ,¥5.00}, 并求解各候选价格下的下一级方案(方程 14 14 14),得到最优票价。因此,问题简化为较简单的程序。不幸的是,由于驱动程序的纯策略集的指数增长,底层程序遇到了可伸缩性问题。例如,当 n = 18 n = 18 n=18时,纯策略集包含大于 1.7 × 1 0 5 1.7×10^5 1.7×105的策略。因此,如何设计有效的算法来解决可伸缩性问题是我们的方法的关键。
简单地表示策略的一种方法是将司机的工作日程分成具有较少模式的部分。每一节都是出租车司机连续工作的连续时段(见图 1 1 1)。我们将这些工作部分称为atom调度(或简称atom),并将这种方法称为atom调度方法(ASM)。显然,给定一个 n n n周期模型,我们只需要 O ( n 2 ) O(n^2) O(n2)原子调度来表示任何原始调度(即通过指定起始和结束周期)。这与原始策略空间的指数大小形成了对比。


图1:atom调度方法

我们把原子表示为一个元组 o ( J , k ) o(J, k) o(J,k),其中 J J J K K K分别表示开始和结束阶段。为了重新制定较低层次的原子进度表,我们给每个原子 o o o分配一个加权 w 0 w _0 w0来表示使用该原子的出租车的百分比。因此, P o W PoW PoW 可以计算为
p i = ∑ o ∈ O w o ⋅ δ ( o , i ) , ∀ i = 1 , … , n p^{i}=\sum_{o \in \mathcal{O}} w_{o} \cdot \delta(o, i), \quad \forall i=1, \ldots, n pi=oOwoδ(o,i),i=1,,n
其中, δ ( o , i ) \delta(o,i) δ(o,i)表示原子 o o o是否在阶段 i i i工作,也就是,如果 j ≤ i ≤ k j\leq i \leq k jik δ ( o , ⟨ j , k ⟩ , i ) = 1 \delta(o,\langle j, k\rangle, i)=1 δ(o,j,k,i)=1,否则 δ ( o , ⟨ j , k ⟩ , i ) = 0 \delta(o,\langle j, k\rangle, i)=0 δ(o,j,k,i)=0 O O O是我们需要的所有原子的集合。显然,现在, p p p被定义为一个函数 p = p ( w ) p = p(w) p=p(w),因此较低级别的程序可以被重新表述为一个紧凑的程序,它接受 w w w(而不是 x x x)作为变量。特别地,当 C 2 C2 C2作用于 S \mathcal{S} S时,我们只需要在大多数 n c n_c nc周期内的原子,因此
O ⊆ { o ⟨ j , k ⟩ ∣ 1 ≤ j ≤ k ≤ n , 0 ≤ k − j < n c } O \subseteq\left\{o\langle j, k\rangle | 1 \leq j \leq k \leq n, 0 \leq k-j<n_{c}\right\} O{oj,k1jkn,0kj<nc}
并且在 O O O中原子数小于 n c × n n_c×n nc×n,许多变量在紧凑的公式。新公式的结构是这样的:
max ⁡ f , w ∗ D ( f , p ( w ∗ ) ) \max _{\mathbf{f}, \mathbf{w}^{*}} D\left(\mathbf{f}, \mathbf{p}\left(\mathbf{w}^{*}\right)\right) f,wmaxD(f,p(w))
使得
w ∗ ∈ a r g m a x w ∈ W U ( f , p ( w ) ) \mathbf{w}^{*} \in argmax_{\mathbf{w} \in \mathcal{W} }U (\mathbf{f,p(w))} wargmaxwWU(f,p(w))
其中
W = { w ∈ R ∣ O ∣ ∣ 0 ≤ w o ≤ 1 , ∀ o ∈ O p i ( w ) + q i ( w ) ≤ 1 , ∀ i = 1 , … , n ∑ i = 1 n p i ( w ) ≤ n w } \begin{aligned} &\mathcal{W}=\\ &\left\{\mathbf{w} \in \mathbb{R}^{|O|} | \begin{array}{rl} {0 \leq w_{o} \leq 1,} & {\forall o \in \mathcal{O}} \\ {p^{i}(\mathbf{w})+q^{i}(\mathbf{w}) \leq 1,} & {\forall i=1, \ldots, n} \\ {\sum_{i=1}^{n} p^{i}(\mathbf{w}) \leq n_{w}} \end{array}\right\} \end{aligned} W=wRO0wo1,pi(w)+qi(w)1,i=1npi(w)nwoOi=1,,n
P O W \mathrm{P}_{\mathrm{O}} \mathrm{W} POW q i ( w ) q^i(\mathbf{w}) qi(w)是在 i − 1 i-1 i1由工作状态转向休息状态的出租车百分比,也就是 q i ( w ) = ∑ o ∈ O w o ⋅ δ ′ ( o , i ) q^i(\mathbf{w})=\sum_{o\in \mathcal{O}}w_o \cdot \delta'(o,i) qi(w)=oOwoδ(o,i),其中,如果 k = i − 1 k=i-1 k=i1(假设 o o o在阶段 i − 1 i-1 i1结束)并且 δ ′ ( o , ⟨ j , k ⟩ , i ) = 0 \delta'(o,\langle j,k \rangle,i)=0 δ(o,j,k,i)=0,那么 δ ( o , ⟨ j , k ⟩ , i ) = 1 \delta(o,\langle j,k \rangle,i)=1 δ(o,j,k,i)=1,否则 δ ( o , ⟨ j , k ⟩ , i ) = 0 \delta(o,\langle j,k \rangle,i)=0 δ(o,j,k,i)=0。可以证明, W \mathcal{W} W保证了简化公式与原公式的等价性。若没有 W \mathcal{W} W,所得到的解可能找不到与之对应的简洁的混合策略。

实证评估

我们从北京交通研究中心获得真实数据进行了实证研究。我们计算出真实出租车市场的最优票价,检查调度约束的影响,并评估了 A S M \mathrm{ASM} ASM的性能。以对称策略为前提,建立了出租车司机行为模型。

最优票价

每隔¥0.20,我们检查了从¥1.00到¥5.00的价格。对于每个价格,我们计算了司机的最优运营策略,并根据现有的出租车市场模型,用计算出的司机策略检查了系统效率(流程在图2)。图 4 ( a ) 4(a) 4(a)显示了系统效率方差。由蓝色曲线可知,考虑约束 C 1 \mathrm{C}1 C1 C 2 \mathrm{C}2 C2时,系统效率峰值为¥2.60。


图2:出租车司机决策流程

图3:出租车司机决策流程

图4

调度约束的影响。 我们通过从模型中删除 C 1 \mathrm{C}1 C1 C 2 \mathrm{C}2 C2,从而评估影响驱动程序行为(进而影响系统效率)。正如图 4 a 4a 4a展示,当我们忽略约束时,系统效率仍然在提高,导致了一个不准确的结果:¥5.00(甚至更高)。使系统效率的提高额外增加实际上是不切实际的,因为司机的过度工作。这可以在图 4 b 4b 4b中看到, P o W \mathrm{PoW} PoW的方差表明由于调度约束,出租车司机在高峰阶段不愿意工作。在这种情况下,系统不会从更高的票价中受益,因为当更高的价格不能通过激励更多的出租车工作来提高服务质量时,它只会导致客户数量的减少和效率的降低。
A S M ASM ASM的性能。 最后,我们评估了解决方案算法 A S M ASM ASM的可伸缩性。首先,我们将时间范围离散成不同的周期数来扩展问题。与简单的公式(公式 13 13 13 14 14 14)相比,图 5 a 5a 5a 5 b 5b 5b描述了 A S M ASM ASM在不同规模问题上的运行和内存使用情况。简单的公式在第15个时期内存不足,但是 A S M ASM ASM可以很轻松地处理多大100个时期的问题。当数据可用时,扩展到更多周期的能力使得我们使用更细粒度的模型来实现更高的准确性。它也让我们考虑更长的市场周期(例如,在一周内,考虑周末和工作日客户需求的差异)。


图5:ASM的运行和内存使用情况

展望

尽管目前的模型和算法能够处理特定设置的 T A S E O s TASEOs TASEOs,但是它们仍然不能满足更广泛和复杂的现实场景。我们为今后的研究指明了以下方向:
具有更好可扩展性的算法。 在实践中,客户需求和路况在不同的日子可能不一样。出租车市场的周期更有可能是一周,而不是一天,因此要以相同的粒度覆盖整个星期,还需要投入更多的时间。类似地,当模型需要更细粒度以获得更高的准确性时,需要更短的时间段,如半小时甚至10分钟,并且周期的数量也相应增加。虽然在其他地方提出了一种基于多边形表示转换的可扩展算法,但是当考虑其他现实约束和不确定性时,该算法可能无法很好地扩展。
异构出租车和出租车司机。 我们目前的模型是建立在假设所有出租车和司机都是同质的基础上的。虽然这在许多城市的出租车系统中是普遍存在的,但是一些特殊的情况就需要特殊处理。例如,在一些城市,出租车可以由多个司机操作,以最大限度地提高使用率。在这种情况下,出租车可以运行更长的时间,实际上可能违反了约束 C 1 C1 C1 C 2 C2 C2。汽车类型和出租车公司的差异也值得我们考虑。
人类行为的不确定性。 不确定性一直是智能行为建模的问题。在出租车系统中,司机在实施策略时面临不确定性。他们不能决定下一位顾客什么时候会来,也不能决定服务下一位顾客需要多长时间。在实践中,出租车司机会根据他们所面临的市场情况来选择他们的行为。如何在不确定性下模拟他们的行为是另一个需要关注的问题。
基于应用程序的服务的影响。 近些年智能手机的快速发展提供了大量的新应用程序和服务。拼车应用和顾客对司机的打车应用正在重塑传统的出租车市场,如优步和滴滴打车将出租车司机与寻求搭车服务的顾客联系起来。值得注意的是,这些服务不仅仅是一个简单的调度系统——它们还提供了客户和司机之间的谈判,并为双方提供了更广泛的选择。 这些新服务的使用越来越多,表明在出租车系统研究中考虑这些服务的必要性。
空间差异 虽然我们的模型只考虑了出租车系统的时间方差,但空间方差是出租车系统的一个共同特征,尤其是在大城市中。不同地点的乘客需求密度和交通挤塞程度可能有所不同,对的士系统的表现有重大影响。我们将在今后的工作中加以考虑。

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值