Balancing bike sharing systems with constraint programming

关键词:Applications · Constraint programming · Hybrid meta-heuristics · Large
neighborhood search · Optimization · V ehicle routing

摘要

自行车共享系统需要进行适当的重新平衡,以满足用户的需求并成功运行。然而,平衡自行车共享系统Balancing Bike Sharing Systems (BBSS)的问题是一项艰巨的任务:它需要设计最佳路线和操作说明,以便在车站之间重新安置自行车,以最大限度地满足预期的未来自行车需求。本文采用约束规划Constraint Programming(CP)的方法解决BBSS问题。首先,我们为BBSS问题引入了两种不同的CP模型,包括两种针对最有前途的路由的定制分支策略。其次,我们将这两个模型合并到适合于各自CP模型的大邻域搜索Large Neighborhood Search(LNS)方法中。第三,我们对我们的方法在三个不同的基准实例集上进行了实验评估,这些实例来自现实世界的自行车共享系统。我们展示了我们的CP模型可以很容易地适应不同的基准问题设置,展示了使用约束编程解决BBSS问题的好处。此外,在我们的实验评估中,我们发现在大型实例中,纯CP(分支和边界)方法优于最先进的MILP,并且LNS方法与其他现有方法具有竞争力。

1. Introduction

自行车共享系统是一种非常流行的解决方案,可以以简单、廉价的方式向市民提供自行车。这个想法是在城市的各个地点安装自行车站,注册用户可以通过将自行车从专门的架子上拆下来,轻松地从那里借出自行车。骑行结束后,用户可以在任意站点归还自行车(前提是有免费的行李架)。这项服务主要是公共或半公共的,通常是为了增加非机动交通工具的吸引力而发起的,通常对用户几乎免费。除其他原因外,这就是为什么共享单车系统在世界各地的许多大城市变得特别流行和必不可少的服务。

自行车站在空车或满载时有特定的模式。例如,在大多数工作岗位位于市中心附近的城市,通勤者可能会在早上造成特定的高峰:中心的自行车站被挤满,而郊区的自行车站则被清空。此外,位于丘陵地区顶部的站点更可能是空的,因为用户不太喜欢骑自行车上山,因此也不太喜欢将自行车返回该站点。这些流量的差异是许多车站随着时间推移自行车负荷极高或极低的几个原因之一,这通常会造成困难:一方面,如果车站是空的,用户无法从中借出自行车,因此车站无法满足需求。另一方面,如果站点已满,用户无法归还自行车,必须找到尚未满的替代站点。这些问题可能导致用户严重不满,最终可能导致用户放弃服务。这就是为什么现在大多数共享单车系统供应商采取措施重新平衡它们。

平衡共享单车系统通常是通过使用卡车车队在不平衡的站点之间移动单车来完成的,通常是在一夜之间。更具体地说,每辆卡车从一个停车场出发,在一次旅行中从一个车站到另一个车站,在每一站执行装载指令(添加或移除自行车)。维修完最后一站后,卡车返回停车场。

寻找最佳的旅游路线和装载指示是一项具有挑战性的任务:该问题包括路线问题和分配单一商品(自行车)以满足需求的问题。此外,由于大多数共享单车系统通常有大量站点(≥ 100),但是卡车车队很小,卡车只能在合理的时间内服务于车站的子集,因此也有必要决定哪些车站应该平衡。

请注意,许多共享单车提供商,包括我们的项目合作伙伴Citybike Wien,还没有应用决策支持系统来优化其网络平衡,而是让车辆驾驶员临时决定下一站访问哪个站点。

在这项工作中,我们通过使用约束编程 Constraint Programming(CP)来解决共享单车系统的平衡问题。☀️ 首先,我们将问题表述为两个不同的CP模型:一个基于经典车辆路由问题V ehicle Routing Problem(VRP)表述的路由模型,以及一个从规划角度考虑问题的步骤模型。我们详细讨论了这两种模型,并在实验评估中比较了它们的性能。☀️ 其次,我们使用两个CP 模型作为 大型邻居搜索( LNS )搜索策略的基础,该策略被定制为利用各自CP模型的特征[8]。

这项工作以三种方式扩展了我们之前关于BBSS的工作[8,9]。首先,这两款车型在原有版本的基础上进行了全面的修改和改进。特别是,这两种模型现在都能够处理重访,即允许车辆多次访问同一站点,一些约束已转化为更高效的基于DF的和调度的传播器,并且路由模型现在配备了一个自定义传播器,该传播器通过一个基于车辆工作时间的预测方案来修剪后续变量的域。此外,这两种模型现在都与两种定制的分支策略相结合,将搜索集中在最有前途的路线上,分别是成本和可行性。在我们的计算评估中,我们观察到,使用改进的模型,纯 CP(分支和边界)方法优于现有的MILP[13],尤其是在硬实例上。此外,这些模型现在能够找到可行的解决方案,即使对于那些我们以前的模型无法实现的情况。

其次,我们对步骤和路由模型进行了更彻底的比较,以更好地理解[8]中观察到的两种模型性能差异的来源。第三,除了我们在之前的贡献[8,9]中考虑的CityBike Wien实例外,我们还处理了具有不同侧面约束的大量其他现实问题实例[7,21]。我们的两个约束模型都可以很容易地适应这些不同的问题设置,证明了在特定于问题的方法上使用CP的可移植性和灵活性,例如当前最先进的求解器中使用的可变邻域搜索V ariable Neighborhood Search(VNS)[13]。此外,我们的实验评估表明,我们的方法与现有方法具有很强的竞争力,即使在很短的时间内也能提供很好的解决方案。

所有采用的问题实例[7,12,21]和我们所有方法的代码都可以从作者的网页上在线公开。

本文的结构如下:第2节描述了BBSS问题,包括我们的符号,而第3节介绍了BBSS的两个CP公式:路由模型(第3.1节)和步长模型(第3.2节)。在第4节中,我们讨论了 LNS 方法,并在第5节中介绍了本研究中使用的实际问题实例。我们在第6节报告了计算评估的结果,第7节总结了论文。

1.1 Related work

2 Balancing bike sharing systems

平衡共享自行车系统(BBSS)的问题涉及寻找车队的路线以及每个站点的相应装载指令,以便在车辆完成其路线后共享自行车系统最大限度地平衡。请注意,我们考虑的是BBSS问题的静态情况,其中我们假设在平衡操作期间没有自行车在站点之间独立移动(换句话说,我们假设没有客户在平衡期间使用该服务,这可能是夜间平衡系统的有效近似值)。

根据每个共享单车提供商的要求,BBSS问题可能有不同的侧面约束。在本节中,我们只介绍了CityBike Wien共享自行车提供商的问题设置,我们将其与基准设置的结果进行比较[13]。在第5节中,我们将强调在处理其他基准集时所需的这一公式方面的差异

自行车共享系统由分布在城市各地的自行车站点集合S={1,⋯,S}S=\{1,\cdots,S\}S={1,⋯,S}组成。每个站s∈Ss∈ Ss∈S的自行车最大容量为CsC_sCs​,(当前)可容纳bsb_sbs​自行车,其中0≤bs≤Cs0≤ b_s≤ C_s0≤bs​≤Cs​。站点sss的目标值tst_sts​表示站点理想情况下应容纳多少辆自行车以满足客户需求tst_sts​的值预先从用户需求模型[16],且0≤ts≤Cs0≤ t_s≤ C_s0≤ts​≤Cs​。为了便于说明,图1描绘了我们基准中两个城市的自行车站地图:维也纳和纽约Vienna and New York City。

CityBike Wien自行车共享供应商的一项重要要求是确保自行车的单调装载,即仅在必要时添加或从站点移除自行车(无中间存储)。因此,我们介绍了两种不同的站点类型:自行车“汇”和自行车“源”。自行车只能添加到接收站,自行车只能从源站移除。根据其相对需求(如果站点中的自行车数量大于需求,则站点是源,否则站点是汇),站点要么是源。

车队V={1,⋯,V}\mathcal{V}=\{1,\cdots,V\}V={1,⋯,V},其每辆车v∈Vv∈\mathcal{V}v∈V的容量cv>0c_v>0cv​>0和初始负载b^v≥0\hat{b}_v≥ 0b^v​≥0 , 在站点之间移动自行车以达到其目标值。每个车辆vechilevvv的起点和终点都在仓库depotdv∈Dd_v∈ Ddv​∈D。因此,行程中的一组停靠stop可以表示为Sd=S∪DS_d=\mathcal{S} \cup \mathcal{D}Sd​=S∪D.我们的时间预算有t^v>0\hat{t}_v>0t^v​>0个时间单位去完成再平衡操作(在车辆vvv必须到达车库之前)。行程时间内的所有可能的stops由矩阵travelTimeu,vtravelTime_{u,v}travelTimeu,v​来确定,其中u,v∈Sdu,v \in S_du,v∈Sd​. 一般来说,还提供了另一个processingTimesprocessingTime_sprocessingTimes​组件,该组件说明了为站点服务的操作所需的时间。通常,该组件是一个函数,它线性地取决于转移自行车的数量(从车辆或转移到车辆)。然而,在我们之前的工作[8,9]中处理的Wien CityBike原始公式中,travelTime 数据中包含了为站点服务所需的处理时间的估计值。

目标是找到每辆车的路线,包括每个到访车站的装载说明。装载说明说明了必须分别从车站移除或添加多少辆自行车。当然,装载指令必须考虑车辆和车站的最大容量和当前负载。此外,每辆车只能在其时间预算t^v\hat{t}_vt^v​内运行,并且必须在返回车辆段之前分发所有装载的自行车(即,返回车辆段时卡车必须是空的)。

每辆vehicle必须返回deopt, 每个站点s∈Ss\in Ss∈S有一个新的负载量(即bikes的数目),记作bs′b'_sbs′​. 显然越接近目标值tst_sts​,则解决方案越好。因此,我们的目标是找到操纵车站状态的路线,使其尽可能接近目标值。此外,我们很有兴趣为每辆车v∈Vv\in \mathcal{V}v∈V找到一条低成本的路线low-cost route rvr_vrv​, 所以我们也最小化了总旅行时间travel time(这相当于最小化总旅行成本)。

因此,我们引入了一个包含两个分量的目标函数fff:第一,对所有站点s∈Ss\in Ss∈S的bs′b'_sbs′​和目标值tst_sts​的偏差; 第二,每辆vehicle的行程时间和每个站点的服务(装载指示):

注意,(1)定义了自然多目标问题的标度化。因此,构造忽略了帕累托最优集中的一些点。我们选择这种方法的主要原因是需要与当前的最佳方法[13]进行比较,即采用等效标量化employ an equivalent scalarization。此外,据我们所知,多目标传播技术仍然是一个相对未开发的研究领域。

3 Constraint models for the BBSS

在本节中,我们为 BBSS 问题提供了两个约束模型,我们称之为路由模型routing model和步骤模型 step model。然后,我们描述了两种为两种模型实现的定制分支策略(以相同的方式)。第一种是“成本明智cost-wise”的分支策略,它寻求在每一步优化目标函数;第二种是“可行性明智feasibility-wise”的分枝策略,它试图通过坚持一个简单的不变量,快速构建一个可行的解决方案,而不管获得的成本如何。

3.1 Routing model

路由模型是[11]中描述的经典车辆路由问题(VRP)的CP模型的改编。VRP模型使用后续变量对每辆车的路径进行建模。除此之外,我们还添加了表示每个站点必须执行的操作的服务变量。

路由模型routing model的图形编码的本质以及可能的解决方案的元素如图2所示。与[11]中提出的 VRP 公式一样,原始问题的图结构G(下层)被编码为扩展图GRG_RGR​(上层),该扩展图考虑了每辆车的起点depot的一个副本replica,以便将每辆车路线识别为从该节点开始的图中的子路径。给定车辆的终点仓库段的后续successor被设置为接下来车辆的起点仓库(以车辆数量为模),因此问题简化为在扩展图中找到哈密顿回路Hamiltonian circuit 。此外,服务可选性由额外的“虚拟dummy”车辆vdummyv_{dummy}vdummy​ 建模,其子路径包括所有未服务的站点。

由底图G变为拓展图GRG_RGR​的猜测分析

  1. 用于再平衡的vehicle的车辆数目为VVV,Fig.2中假设V=2V=2V=2
  2. 底图中节点6为start depot,节点7为end depot,(本质为1个)。站点集合{1,2,3,4,5}\{1,2,3,4,5\}{1,2,3,4,5}构成全脸截图。depot与任意一个station可连接;
  3. 对于每一个vehicle的路线,以创建的start depot副本为起点,以创建的end depot副本为终点。
  4. 每个站点只能visited一次
  5. 剩余的unvisited站点可以油“虚拟vehicle”建模
  6. 在"虚拟vehicle"建立的路线:2→7→102 \to 7 \to 102→7→10中,有succ2=7,succ7=10,succ10=0succ_2=7, succ_7=10, succ_{10}=0succ2​=7,succ7​=10,succ10​=0

我们表示一个有序集合U中的节点集合GRG_RGR​,我们用它来索引决策变量:

  • 通过对U\mathcal{U}U的定义可以看到,vehicles的车辆数目=实际数目V+虚拟数目1=V+1.
  • 分裂为start depot为:0,⋯,V0,\cdots, V0,⋯,V和end depot: V+S+1,⋯,2V+S+2V+S+1, \cdots, 2V+S+2V+S+1,⋯,2V+S+2
  • Station的数目为SSS

值得注意的是,VRP 模型对 BBSS 的这种适应依赖于站点最多访问一次的假设。然而,BBSS问题声明并不阻止一个车站被多次访问(由相同或不同的车辆访问)。为了处理每个站点的多次访问,我们通过考虑对每一次可允许的访问的每个站点的复本来拓展图GRG_RGR​. 也就是说,如果允许同一站点的最多M次访问,则该站点将被映射到节点集{V+M(s−1)+1,⋯,V+Ms}\{V+M(s− 1) +1,\cdots,V+Ms\}{V+M(s−1)+1,⋯,V+Ms}.我们用w(i)w(i)w(i)表示一个节点i∈GRi\in G_Ri∈GR​到原始副本GGG的逆映射,用F\mathcal{F}F表示一个站点的第一个副本集,即F={V+1,V+M+1,...,V+(S−1)M+1}\mathcal{F} = \{V + 1, V + M + 1, . . . , V + (S − 1)M + 1\}F={V+1,V+M+1,...,V+(S−1)M+1}.

  • w(i)w(i)w(i)表示从G←GRG \leftarrow G_RG←GR​逆映射
  • F\mathcal{F}F表示Staion1∈SStaion 1 \in SStaion1∈S在GRG_RGR​的映射结果

3.1.1 Variables

路由模型routing model的变量总结在表1中。首先,有后继变量successor variables,其中succisucc_isucci​表示节点iii的后继变量。我们还引入(冗余redundant)前导变量predecessor variables以改进传播[11]。车辆变量vehicle variables将车辆与图中的每个节点相关联(将为节点提供服务的车辆,如果节点未提供服务,则为虚拟车辆)。服务变量service variables表示在各个节点加载或卸载的自行车数量。与这些变量相关,activity 是指示变量,用于说明给定节点上的服务service是否不同于零。负载变量loadiload_iloadi​包含车辆(服务于节点iii)在服务节点iii后保持的负载(自行车数量)。时间变量timeitime_itimei​,表示处理变量processing variables表示在站点iii的服务操作的持续时间。最后,当允许多次访问时,需要nbBikes变量。事实上,他们会在车辆服务之前记录某个站点的自行车数量。对于代表第一次访问站点的节点,该值是预先已知的(并设置为bsb_sbs​),但对于后续访问,该值取决于该站点上的先前服务。

至于成本,偏差变量说明在平衡操作后,站点s的负载与目标需求的差异有多大。最后,成本变量包含我们希望最小化的解决方案的总成本(包括差旅成本).

我们仅使用第3.3节中描述的分支策略搜索成功变量和服务变量。

3.1.2 Constraints

为简洁起见,我们在表2中总结了约束,其中我们用相应的问题实例集注释了边约束,即维也纳(V)、混合(M)和纽约(N)。
首先,我们初始化车辆的初始负载 loadv=0load_v=0loadv​=0,并将depot的服务 servicei=0service_i=0servicei​=0和初始时间单位 timev=0time_v=0timev​=0设置为零。此外,processing 时间变量被设置为零,无论是仅针对仓库(M,N个实例)还是针对所有节点(V个实例)。此外,(站点s∈Ss \in Ss∈S的未服务前的bikes的数目设置为bsb_sbs​), 每个站点sss的 first replicas 设置为bsb_sbs​.

Fig.2 初始化 然后,我们发布符合经典 VRP 模型公式约束的 路由约束routing constraints。特别地,我们 通过circuit全局约束,施加succ和pred变量以形成哈密顿回路。此外,最后两个 路由约束routing constraints分别确保第一个被访问站点不是汇点,以及最后一个访问站点不是源。

根据Fig.2中succ2=7succ_2=7succ2​=7等栗子, 推测根据添加的 前导变量和后继变量,从而形成回路。

  • 猜测:2→7→102 \to 7 \to 102→7→10,是哈密顿路,而succ10=0succ_{10}=0succ10​=0, 从而有2→7→10→02 \to 7 \to 10 \to 02→7→10→0, 因为2和0都是start depot的副本,则构成回路。
  • 哈密顿路:指定的起点前往指定的终点,途中经过所有其他节点且只经过一次。

Fig.2 路线约束

VRP 模型 : 车辆路径问题(VRP)最早是由 Dantzig 和 Ramser 于1959年首次提出,它是指一定数量的客户,各自有不同数量的货物需求,配送中心向客户提供货物,由一个车队负责分送货物,组织适当的行车路线,目标是使得客户的需求得到满足,并能在一定的约束下,达到诸如路程最短、成本最小、耗费时间最少等目的。

我们继续处理在每个到访站点装载和卸载自行车的平衡约束balancing constraints。
首先,我们在服务节点iii后保持车辆的当前负载。
其次,我们确保车辆永远不会超过其容量。
第三,除虚拟车辆以外的车辆访问的站点iii必须进行服务。
接下来的两个限制条件☀️确保自行车站不得超过其容量(CsC_sCs​),或有一个负的负荷;然后我们陈述单调性约束monotonicity constraints(V个实例)。该组的最后两个约束处理模型扩展到多次访问。在这种情况下,为了打破 对称性symmetry, 应按索引的递增顺序访问站点的副本,即,如果使用节点的第jjj个副本,则所有前面的副本{1,2,…,j−11,2,…,j− 11,2,…,j−1} 也必须使用。这是通过对活动变量activity variables值的基于 DFA 的正则表达式约束regular expression constraint来说明的。

Fig.2 平衡约束

基于DFA的正则表达式: 参考《如何根据DFA生成正则表达式》 ,《正则表达式(regular expression)和非正则语言(non-regular languages)》

  • 约束公式中的,其他的暂时没看懂

下一组的constraints与time有关。

【论】Balancing bike sharing systems with constraint programming相关推荐

  1. [索引]引用Balancing bike sharing systems with constraint programming的文章

    文章目录 1. Dynamic container drayage with uncertain request arrival times and service time windows 2. P ...

  2. 【未】Optimizing Rebalance Scheme for Dock-less Bike Sharing Systems with Adaptive User Incentive

    论Optimizing Rebalance Scheme for Dock-less Bike Sharing Systems with Adaptive User Incentive 作者: Yub ...

  3. 【论】A Deep Reinforcement Learning Framework for Rebalancing Dockless Bike Sharing Systems

    A Deep Reinforcement Learning Framework for Rebalancing Dockless Bike Sharing Systems 摘要 自行车共享为旅行提供了 ...

  4. Kaggle Bike Sharing Demand Prediction – How I got in top 5 percentile of participants?

    Kaggle Bike Sharing Demand Prediction – How I got in top 5 percentile of participants? Introduction ...

  5. kaggle入门-Bike Sharing Demand自行车需求预测

    接触机器学习断断续续有一年了,一直没有真正做点什么事,今天终于开始想刷刷kaggle的问题了,慢慢熟悉和理解机器学习以及深度学习. 今天第一题是一个比较基础的Bike Sharing Demand题, ...

  6. 【论】Bike sharing rebalancing problem with variable demand

    Bike sharing rebalancing problem with variable demand 摘要 本文研究了一个扩展的自行车共享再平衡问题,称为可变需求的自行车共享重新平衡问题bike ...

  7. 【论】Towards Smart Transportation System: A Case Study on the Rebalancing Problem of Bike Sharing Sys

    Towards Smart Transportation System:A Case Study on the Rebalancing Problem of Bike Sharing System B ...

  8. Chapter 10 Symmetry in Constraint Programming 10.1 Symmetries and Group Theory

    约束中的对称性一直很重要,但近年来已成为一个主要的研究领域. 约束编程中的一个关键问题早已被认识到:搜索可以一遍又一遍地重新审视等效状态. 原则上,已经通过许多不同的技术解决了该问题. 在我们写作时, ...

  9. [转载] Handbook of Constraint Programming——Chapter1 Introduction

    转载于:https://www.cnblogs.com/6DAN_HUST/archive/2012/07/13/2590716.html

最新文章

  1. 搜索引擎广告过滤Chrome插件
  2. 在WPF中将图片转换成3D图像并可以旋转
  3. CSU OJ1960
  4. 与动态执行的C# 代码进行通讯
  5. php 数据中心,数据层 · Thinkphp 独立数据中心使用手册 · 看云
  6. jQuery EasyUI API 中文文档 - 进度条
  7. Java技术中的三大特性
  8. jquery中的ajax方法参数——$.ajax()方法详解
  9. IntelliJ IDEA安装后需要必须做的一件事
  10. Excel导入SQL datetime的处理
  11. 检测运行程序,强制电脑关机代码
  12. TensorFlow镜像安装(Anaconda)
  13. Network Trimming: 数据指导的神经剪枝方法
  14. 漫谈程序员系列 薪资,你是我不能言说的伤
  15. 驭势内参 | 请用一个周末的时间,来扫盲“无人驾驶”
  16. Kafka的版本号说明
  17. hi3516v300gpio驱动编译遇到的问题
  18. 计算机病毒及其防治技术期末复习
  19. M5stack StickCplus ESP32物联网开发板初体验
  20. Word表格中的孤行控制?

热门文章

  1. vue中使用html5的drag实现任意位置拖动
  2. TrustZone 基本信息介绍大全
  3. (摘)消除眼睛疲劳的方法
  4. 基本的html文档组成三要素是哪些,三大构成 复习资料
  5. 【动态规划】引例--多起点,多终点的最短路径问题
  6. 5个免费PPT素材网站,进来自取
  7. 传奇手游单职业服务器外网搭建架设一键端-2023
  8. [Extjs6]浅谈Ext.data.Store的使用.
  9. 群晖download station使用sftp下载文件
  10. linux下根据关键字批量杀掉进程