«上一篇 下一篇»
  计算机工程  2019, Vol. 45 Issue (10): 308-313  DOI: 10.19678/j.issn.1000-3428.0054037
0

引用本文  

刘喜梅, 潘立军. 一种求解共享单车再平衡问题的遗传算法[J]. 计算机工程, 2019, 45(10), 308-313. DOI: 10.19678/j.issn.1000-3428.0054037.
LIU Ximei, PAN Lijun. A Genetic Algorithm for Solving Bike-sharing Rebalancing Problem[J]. Computer Engineering, 2019, 45(10), 308-313. DOI: 10.19678/j.issn.1000-3428.0054037.

基金项目

湖南省自然科学基金(2019JJ60038);湖南省双一流应用特色学科工商管理资助项目(湘教通[2018]469号)

作者简介

刘喜梅(1978-), 女, 讲师、硕士, 主研方向为物流系统优化;
潘立军, 副教授、博士

文章历史

收稿日期:2019-02-27
修回日期:2019-04-03
一种求解共享单车再平衡问题的遗传算法
刘喜梅 , 潘立军     
湖南工程学院 管理学院, 湖南 湘潭 411104
摘要:共享单车再平衡问题(BRP)是单一商品旅行商问题(1-PDTSP)的扩展,是一类NP难问题。针对已有算法求解速度慢,不利于实现实时调度优化的缺点,提出一种求解BRP的非代际遗传算法。基于个体搜索机制保留优异个体,设计线路交叉算子和k点破坏修复变异算子,引入破坏修复机制,当算法收敛变慢时自动生成新个体进入种群以避免陷入局部最优解。应用BRP标准算例测试表明:在小规模算例上该算法均能找到最优解,平均CPU消耗为3.8 s;在中等规模与大规模算例上,该算法找到9个算例的最优解,并且其运算速度相较于分支定界算法和线路破坏与修复启发式算法提升77%以上。
关键词车辆路径问题    共享单车再平衡问题    遗传算法    线路交叉    破坏修复变异    
A Genetic Algorithm for Solving Bike-sharing Rebalancing Problem
LIU Ximei , PAN Lijun     
School of Management, Hunan Institute of Engineering, Xiangtan, Hunan 411104, China
Abstract: The Bike-sharing Rebalancing Problem (BRP) is an extension of the Single Commodity Traveler Problem (1-PDTSP) and a type of NP-hard problem.To address the slow solution speed of the existing algorithms, which is not conducive to real-time scheduling optimization, a non-intergenerational genetic algorithm for solving BRP is proposed.The excellent individuals are retained based on the individual search mechanism, and the line crossover operator and k-point destroy and repair mutation operator are designed.The destroy and repair mechanism is introduced, and when the convergence speed of the algorithm slows down, new individuals are automatically generated into the crowd to avoid falling into the local optimal solution.Computational results on the benchmark problems show that the algorithm can find the optimal solution for the small-scale benchmark problems with an average CPU consumption of 3.8 s.For the medium-scale and large-scale benchmark problems, the algorithm finds the best solutions for 9 benchmark problems, and the speed is improved by over 77% than those of B&C and D&R algorithms.
Key words: Vehicle Route Problem(VRP)    Bike-sharing Rebalancing Problem(BRP)    genetic algorithm    line cross    destroy and repair mutation    
0 概述

城市共享单车在方便居民短距离出行、缓解城市交通拥堵等方面发挥着重要作用。由于单车用户用车具有随机性、单向性等特点, 导致各停放点单车数量分布不均, 需定期组织货车回收、再投放单车, 平衡各停放点单车数量。随着我国各城市共享单车系统规模的扩大, 单车再平衡工作量与日俱增, 设计开发共享单车再平衡智能调度软件以实现高效的共享单车再平衡, 已成为共享单车运营主体降本增效、提升服务质量的关键。

共享单车再平衡过程可描述为:利用具有相同载重的车辆从单车维护与补给中心出发, 完成一定区域内各停放点单车的再分配, 使各停放点达到预先设置的容量后回到中心。在此过程中, 运输车辆可以在各停放点调配运送单车, 也可以在出发前从维护与补给中心载入一部分单车调配到各停放点, 或将各停放点多余的单车运回维护与补给中心。而共享单车再平衡问题(Bike-sharing Rebalancing Problem, BRP)即为在共享单车再平衡过程中, 对所有的车辆求解最短的行驶距离或最少的行驶时间。

共享单车在世界各地的普及, 使BRP问题受到广泛关注。在国外的研究主要将BRP模型分为静态和动态2类进行求解。

静态BRP模型基于假设:在车辆开始服务各停放点后, 各停放点单车的平衡数量不发生变化。文献[1]提出该类模型并对其求解; 文献[2]设计分枝定界法求解该模型; 文献[3]研究目标函数为用户不满意度、车辆行驶时间最少的BRP模型, 并利用分阶段启发式算法及CPLEX求解包含200个停靠点的BRP; 文献[4-5]对BRP进行深入研究, 不仅构建了4种BRP数学模型、标准测试算例, 还运用破坏修复启发式算法求解包含500个停靠点的BRP; 文献[6]研究只有一辆运输车辆且允许对停靠点进行多次访问的BRP, 利用可变邻域搜索技术设计启发式算法, 并对包含500个停靠点的BRP求解。

由于在共享单车再平衡过程中, 用户仍然在使用单车, 各停靠点单车平衡数量具有动态性, 因此需要建立动态BRP模型。文献[7]运用时间序列化方法, 以时长T为周期将动态BRP模型划分为若干个静态BRP模型来求解, 根据用户服务的分布函数确定每一个周期各停靠点的单车平衡数量, 并将优化目标设置为最小化各点单车平衡数量的不匹配度; 文献[8-9]应用在线处理方法求解动态BRP模型, 在运输车辆服务完某一停靠点后, 实时更新其他停靠点的取送量信息进行下一步决策。

目前, 国内对BRP尚缺少系统研究, 已报道的多为案例研究, 如文献[10]构建基于用户满意度的多目标共享单车调度模型并采用遗传算法对其求解, 同时以南京市江宁区的实际算例进行验证; 文献[11]通过预测各停靠点的取送车需求量, 运用动态调度优化策略建立系统的动态调度模型, 设计模拟退火遗传算法对其求解, 并以西安市雁塔区的数据进行验证; 文献[12]引入停靠点取送车的时间窗约束、多调度中心约束条件, 建立BRP模型并运用混合粒子群算法对其求解。此外, 文献[13-15]也对BRP问题进行了研究。

国外学者较系统地研究了BRP问题的特点及经典启发式算法, 但求解速度与质量有待进一步提升, 而国内研究多为案例研究, 研究成果难以推广应用。考虑到遗传算法对车辆路径问题(Vehicle Route Problem, VRP)具有较好的求解效果, 例如:文献[16-18]分别使用遗传算法求解了周期性、开放式和多目标VRP, 取得了较好的效果, 本文采用遗传算法并结合破坏修复启发式算法的启发规则来求解BRP。

1 BRP数学模型

根据图论的定义, 将BRP表示为一个完备图G=(V, E), 其中, V={1, 2, …, n}表示顶点集, 且1表示单车维护与补给中心, V′={2, 3, …, n}表示单车停放点集, E={(i, j)|i, jV, ij}表示弧集或边集。本文符号定义如下:M表示实施再平衡运输的车辆数, Q表示运输车辆的最大载重量, di表示车辆在第i个单车停放点取送量(取值范围为[-Q, Q], di < 0表示该停放点需补充单车, di>0表示该停放点要回收单车), cij表示车辆访问弧(i, j)产生的运输成本或时间, θj表示车辆访问第j个停放点后的载重量(即车辆线路载重量)。定义决策变量xij=1表示车辆访问了弧(i, j), 否则, xij=0。BRP的数学模型如下:

$ \begin{array}{l} \min F(x) = \sum\limits_{i = 1}^n {\sum\limits_{j = 1}^n {{c_{ij}}} } {x_{ij}}\\ {\rm{s}}{\rm{.t}}{\rm{.}} \end{array} $ (1)
$ \sum\limits_{i = 1}^n {{x_{ij}}} = 1, j \in {V^\prime } $ (2)
$ \sum\limits_{i = 1}^n {{x_{ji}}} = 1, j \in {V^\prime } $ (3)
$ \sum\limits_{j = 1}^n {{x_{1j}}} \le M $ (4)
$ \sum\limits_{j = 2}^n {{x_{1j}}} = \sum\limits_{j = 2}^n {{x_{j1}}} $ (5)
$ \sum\limits_{i = 1}^n {\sum\limits_{j = 1}^n {{x_{ij}}} } \le |S| - 1, S \subseteq {V^\prime }, S \ne \emptyset $ (6)
$ {\theta _j} \ge \left( {{\theta _i} + {d_j}} \right){x_{ij}}, i \in V, j \in {V^\prime } $ (7)
$ {\theta _i} \ge ({\theta _j} - {d_j}){x_{ij}}, i \in {V^\prime }, j \in V $ (8)
$ {\text{max}} (0, {d_j}) \le {\theta _j} \le {\text{min}} (Q, Q + {d_j}), j \in V $ (9)

式(1)为目标函数, 最小化运输总成本或时间; 式(2)和式(3)确保除维护与补给中心点外其余单车停放点均被访问且只访问一次; 式(4)和式(5)确保所有的运输车辆在完成任务后均回到维护与补给中心; 式(6)为消除子回路约束; 式(7)~式(9)为BRP车辆载重约束, 确保各运输车辆在实施单车回收与投放过程中, 车辆线路载重量不超过额定载重量, 其假设在某一停放点回收的单车可被投放到任意其他需要的停放点, 且在车辆出发或者回到补给中心时, 载重可不为0(因为可以事先装入部分单车, 或者带回部分单车)。

2 求解BRP的遗传算法 2.1 算法基本框架

基本的遗传算法是基于种群的并行搜索机制, 本文采用基于个体搜索机制的非代际遗传算法[19], 该机制能在进化的过程中更好保留优异个体的同时兼顾种群的多样性, 算法描述如下:

1) 初始化种群Pop

2) 若终止条件不符合:

3) 按染色体的适应度选择2个染色体xy

4) 依交叉概率Pcrossxy实施交叉算子, 生成2个新个体x′、y′。

5) 依变异概率Pmutx′、y′实施变异算子, 生成2个新个体x″、y″。

6) 更新种群, 将x″、y″替换Pop中2个适当度最差的染色体。

7) 算法结束, 返回种群中适应度值最大的染色体。

2.2 算法的编码与初始解生成

本文算法采用多维整数编码方法, 1, 2, …, n代表单车停放点位置编号, 其中编号1代表单车维护与补给中心。每一基因位除包含单车停放点位置编号外, 还包含以下信息:对应的线路编号信息, 该基因位在线路中的排列顺序, 当前线路中该停放点之后位置再插入点时对应单车容量的上限(Ui)与下限(Di)。染色体编码示意图如图 1所示。

Download:
图 1 染色体编码示意图

BRP模型具有以下性质[20]:

性质1  设Route为一条可行线路, Position(P1, P2, …, Pi-1, Pi, Pi+1, …Pn)为在构造线路时可插入待访问取送点的位置(如图 2所示), 设Pi位置可插入车数范围为[Di, Ui], 若要保持插入后Route仍可行, 则有:

$ \begin{array}{*{20}{l}} {{U_i} = Q + min \{ {\theta _1}, {\theta _2}, \cdots , {\theta _i}\} - max \{ {\theta _i}, {\theta _{i + 1}}, \cdots , {\theta _n}\} }\\ {{D_i} = - Q - min \{ {\theta _i}, {\theta _{i + 1}}, \cdots , {\theta _n}\} + max \left\{ {{\theta _1}, {\theta _2}, \cdots , {\theta _i}} \right\}} \end{array} $
Download:
图 2 线路可插入位置示意图

根据性质1, 本文算法可实时计算对应插入位置单车容量的上限与下限, 该容量区间表示确保插入停靠点后的新路径仍然可行的回收与投放单车数量区间。

本文算法初始解生成采用随机选择停靠点作为插入位置, 通过容量区间实时检测并判断每次插入操作是否可行。如果插入操作可行, 则允许实施, 否则, 选择其他停靠点检测并判断。如果对所有停靠点插入操作均不可行, 则重新生成一条新路径, 直到所有的停靠点均插入到当前解。

2.3 交叉算子

为了不在交叉过程中过度破坏染色体片断, 交叉算子采用线路交叉方法, 即在参与交叉的2个染色体中随机各选取一条线路作为交换片段进行交换。在交叉过程中涉及大量的停靠点插入操作, 可通过采用容量区间实时检测, 确保当前插入操作可行, 具体过程如下:

1) 对参与交叉的2个父染色体xy随机各选取一条参与交叉的线路, 将从x(y)染色体上选取的线路中的点形成待插入y(x)染色体的位置集合Insert_to_y(Insert_to_x)。

2)在染色体x(y)中将与集合Insert_to_x(Insert_to_y)重复的点删除。在此过程中可能会造成被删除点的线路变为不可行, 本文采用2种策略进行处理。

策略1  一旦线路变为不可行, 则将该线路所有的点放入Insert_to_x集或Insert_to_y集。

策略2  采用分裂策略, 即删除重合点, 将重合点前后两部分点按原有排列顺序各形成一条子线路放在原染色体中。

策略1有助于提升解的多样性, 而策略2有助于保留原染色体的优质基因片段。本文在运用交叉算子时混合使用二种策略。

3) 利用节约算法将Insert_to_x(Insert_to_y)插入x(y)。

2.4 变异算子

本文算法共使用了3种变异算子:

1) Swap变异算子, 随机从参与变异的染色体x′或y′中选取2个点进行交换, 形成新的染色体x″、y″。

2) Merge变异算子, 在参与变异的染色体x′或y′中随机选择2条线路, 将第1条线路的尾点与第2条线路的首点相连。

3) Destroy & Repair变异算子, 从参与变异的染色体x′或y′中随机选取3个点, 将其从当前解中移出, 并保证移出3个点后x′或y′仍可行, 再插入到x′或y′中形成新的染色体x″或y″。

在运算过程中等概率随机采用上述3种变异算子, 而再插入过程均采取最优插入方法, 即选择最优节约值最大的插入位置插入, 且采用保优策略, 保证变异后的新染色体x″、y″的适应度优于原染色体x′、y′。

2.5 算法的终止条件与多样性保持策略

当算法运行到指定搜索的最大循环次数Search_Max时, 算法停止搜索, 输出结果。当算法运行Not_Improve次循环, 种群中的当前最优解未出现改进时, 引入破坏修复机制来扰动原有种群, 增强种群多样性, 提升算法寻优能力。具体方法为从种群中选出30%的染色体, 对每染色体采用类似于Destroy & Repair变异算子的方法进行破坏修复, 按10%~30%比例随机选择染色体中的点进行删除, 并保持原染色体可行, 再根据最优插入方法进行插入, 形成新的染色体。为了保证算法收敛, 在种群引入破坏修复机制时, 采取种群保优策略, 即原种群中的最优染色体始终被保留。

3 算法测试 3.1 测试环境与测试方法

本文运用BRP问题标准测试算例进行算法测试, 该算例可在网站http://www.or.unimore.it/resources/BRP/home.html下载。将测试算例按单车停靠点数量分为小规模算例(n≤50)、中等规模算例(50 < n≤100)以及大规模算例(n>100), 采用Matlab2014编程实现算法, 硬件条件为CPU(core i3, 3.1 GHz)、Rom(4 GB)。参数设置为:变异概率取0.6, 交叉概率取0.3, 种群规模为100, 最大循环次数Search_Max分别为5 000(小规模)、10 000(中规模)和20 000(大规模), Not_Improve分别为500(小规模)、1 000(中规模)和2 000(大规模), 每个算例运行10次, 取最好的解进行比较。

3.2 测试结果

在已有的BRP求解算法中, 文献[2]运用了分支定界法(B & C)、文献[4]运用了线路破坏与修复启发式算法(D & R)分别求解了该问题的标准算例, 且其测试硬件环境与本文基本相同。因此, 本文选择上述2种算法作为对比算法。表 1~表 3为3种算法计算结果与计算时间比较。其中, N/C分别代表算例的停靠点数量与运送单车的卡车额定载重量, Si代表各算法的求解结果, CPUi表示各算法的求解CPU消耗时间, g_B & C=(S2-S1)/S2g_D & R=(S3-S1)/S3, 分别表示本文算法相较于B & C、D & R在求解质量上的提升比例, g_t_B & C=(CPU2-CPU1)/CPU2g_t_D & R=(CPU2-CPU1)/CPU2, 分别为本文算法相较于B & C、D & R算法在求解时间上的节约比例。在表 1中, 对于B & C、D & R 2种算法计算时间小于2 s的情况未进行比较。

下载CSV 表 1 小规模算例测试结果对比
下载CSV 表 2 中等规模算例测试结果对比
下载CSV 表 3 大规模算例测试结果对比

由小规模算例测试结果可以看出, 本文算法与B & C、D & R一样, 均能找到算例的最优解。本文算法的求解的平均CPU消耗为3.8 s, 比B & C的17.3 s快, 但仍慢于D & R的0.7 s。

由中等规模算例测试结果可以看出, 本文算法找到9个算例的最优解, 并且其平均求解质量虽然比B & C、D & R低8.5%与6.4%, 但求解的平均CPU消耗为36.5 s, 相较于B & C的2 309.5 s、D & R的222.4 s分别提升98.4%与83.6%。

由大规模算例测试结果可以看出, 本文算法的求解速度优势更明显, 虽然求解质量分别比B & C、D & R低69.7%与25.9%, 但求解的平均CPU消耗为217.1 s, 分别比B & C、D & R提升94.0%与77.8%。

4 结束语

BRP是共享设施再平衡调度中重要的实际应用问题, 在共享经济快速发展的背景下具有较高的研究价值。本文提出一种求解BRP的遗传算法。通过应用非代际遗传算法框架, 采用多维整数编码方法, 设计路线交叉算子和k点破坏修复变异算子, 并引入破坏修复机制来保持种群多样性。实验结果表明, 该算法对小规模算例具有良好的求解质量, 所有算例均能在4 s内找到最优解, 对于中等规模和大规模算例, 本文算法求解质量有待进一步提升, 但其运算速度相较于B & C和D & R算法具有显著优势。下一步将考虑停靠点规划布置、用户取用车习惯以及管理机构再平衡管理目标(成本或用户满意度最优)等实际需求, 设计相应的高效算法求解BRP问题。

参考文献
[1]
RAVIV T, TZUR M, FORMA I A. Static repositioning in a bike-sharing system:models and solution approaches[J]. EURO Journal on Transportation and Logistics, 2013, 2(3): 187-229. DOI:10.1007/s13676-012-0017-6 (0)
[2]
ERĎOGAN G, BATTARRA M, CALVO R W. An exact algorithm for the static rebalancing problem arising in bicycle sharing systems[J]. European Journal of Operational Research, 2015, 245(3): 667-679. DOI:10.1016/j.ejor.2015.03.043 (0)
[3]
FORMA I A, RAVIV T, TZUR M. A 3-step math heuristic for the static repositioning problem in bike-sharing systems[J]. Transportation Research Part B:Methodological, 2015, 71: 230-247. DOI:10.1016/j.trb.2014.10.003 (0)
[4]
DELL M, IORI M, NOVELLANI S, et al. A destroy and repair algorithm for the bike sharing rebalancing problem[J]. Computers and Operations Research, 2016, 71: 149-162. DOI:10.1016/j.cor.2016.01.011 (0)
[5]
DELL M, HADJICOSTANTINOU E, IORI M, et al. The bike sharing rebalancing problem:mathematical formulations and benchmark instances[J]. OMEGA, 2014, 45: 7-19. DOI:10.1016/j.omega.2013.12.001 (0)
[6]
CHEMLA D, MEUNIER F, CALVO R W. Bike sharing systems:solving the static rebalancing problem[J]. Discrete Optimization, 2013, 10(2): 120-146. DOI:10.1016/j.disopt.2012.11.005 (0)
[7]
CONTARDO C, MORENCY C, ROUSSEAU L M. Balancing a dynamic public bike-sharing system[M]. Montreal, Canada: Cirrelt, 2012. (0)
[8]
CAGGIANI L, OTTOMANELLI M. A modular soft computing based method for vehicles repositioning in bike-sharing systems[J]. Procedia-Social and Behavioral Sciences, 2012, 54: 675-684. DOI:10.1016/j.sbspro.2012.09.785 (0)
[9]
PFROMMER J, WARRINGTON J, SCHILDBACH G, et al. Dynamic vehicle redistribution and online price incentives in shared mobility systems[J]. IEEE Transactions on Intelligent Transportation Systems, 2014, 15(4): 1567-1578. DOI:10.1109/TITS.2014.2303986 (0)
[10]
叶丽霞.城市公共自行车调度系统研究[D].南京: 南京理工大学, 2013. (0)
[11]
乔晓.城市公共自行车多车场车辆调度问题研究[D].西安: 长安大学, 2017. (0)
[12]
蒋琳.城市公共自行车系统调度模型及算法研究[D].兰州: 兰州交通大学, 2017. (0)
[13]
卢琰.共享单车车辆调度问题研究[D].成都: 西南交通大学, 2018. (0)
[14]
靳迎新.城市公共自行车系统调度优化研究[D].兰州: 兰州交通大学, 2018. (0)
[15]
杨桥东, 李朋州, 李琮, 等. 多车场协同运输的公共自行车调度方法研究[J]. 交通科技与经济, 2016, 18(4): 8-12. (0)
[16]
赵宇橙. 基于PSO算法的秩序配送车辆路径问题的研究[J]. 现代经济信息, 2017(1): 30-32. DOI:10.3969/j.issn.1001-828X.2017.01.021 (0)
[17]
潘立军, 符卓, 刘喜梅. 带工作时间与时间窗的开放式车辆路径问题[J]. 计算机工程, 2012, 38(4): 17-19. (0)
[18]
金仙力, 李金刚. 基于遗传算法的多目标路径优化算法的研究[J]. 计算机技术与发展, 2018, 28(2): 55-58. (0)
[19]
潘立军, 符卓. 求解带时间窗取送货问题的遗传算法[J]. 系统工程理论与实践, 2012, 32(1): 120-126. DOI:10.3969/j.issn.1000-6788.2012.01.015 (0)
[20]
潘立军, 符卓, 刘喜梅. 共享单车再平衡问题及其容差插入启发式算法[J]. 运筹与管理, 2019, 21(8): 57-63. (0)