一种面向大规模纯电动公交车辆调度问题的自适应大型邻域搜索方法与流程

文档序号:23702043发布日期:2021-01-23 11:51阅读:257来源:国知局
一种面向大规模纯电动公交车辆调度问题的自适应大型邻域搜索方法与流程

[0001]
本发明涉及一种面向大规模纯电动公交车辆调度问题的自适应大型邻域搜索方法,属于公交车辆调度技术领域。


背景技术:

[0002]
公交车辆调度问题是一种典型的车辆调度问题,一般定义为:在给定的停车场,给定的行程时间表和给定的车型下,找到在所有行程都能够被执行的条件下,使得总运营成本最低时每辆车的任务链。对于纯电动公交车辆的调度问题,还需要考虑车辆续航里程限制以及补充电量的约束。同时,考虑到目前公交系统的规模较大,以及纯电动公交车型的多样化,往往涉及多个车场、多个车型情况下的车辆调度问题。另外,为了更贴近实际的公交调度过程,在给出纯电动公交车辆调度问题的解决方案时,还需要考虑各条线路之间的车辆是否共用,以及在运营过程中允许车辆部分补充电量的行为。这些因素不仅增加了问题的复杂程度,更为问题的求解造成了相当大的困难。
[0003]
本发明面向的大规模纯电动公交车辆调度问题可定义为:在给定的数个公交停车场、给定的数个纯电动公交车型以及数条给定的公交线路下,决定公交车队的车辆配置方案,并求出在所有公交线路的行程都能够被执行的条件下,使得总运营成本(包括车辆购买成本与调度成本)最低时每辆车的调度和充电计划,车辆在每次充电过程中,须返回所属的停车场充电,充电时的电量是任意的。
[0004]
纯电动公交车辆调度问题的数学模型如下所示:对于一个有向图g=(v,a),v代表有向图中所有的节点,a代表有向图中所有的连接。定义s为所有行车任务的集合,对于每个行车任务i∈s,其开始时间为z
i
,持续时间为t
i
。用表示k车型执行任务i的耗电量,在执行i任务之前的电量定义为对于每一个公交线路组合g,g∈g,都包含一条或几条公交线路的行车任务,定义n为公交线路组合的数量,则s={s
1
,s
2
,

,s
n
}。定义d为停车场的集合,对于每一个停车场β∈d,有o
β
和d
β
两个节点分别表示起始点和终点,q
β
为停车场的最大停车数。最后,定义f∈f为所有充电事件的集合,对于每一个充电事件f,其开始时间记为z
f
,充电电量记为为了保证在运营过程中充电设备不出现拥挤的情况,规定车辆只能返回其所属的停车场充电。定义k为车辆类型的集合,对于每一个车型k∈k,都有其最大电池电量e
k
,耗电速度τ
k
,充电速度u
k
和购买成本c
k
。令σ代表安全电量水平占最大电池电量的百分比。对于调度计划中的成本计算,c
t
代表执行行程任务和空驶行程的单位时间成本,代表车辆的单位电量成本。
[0005]
定义为0-1变量来表示有向图中的连接,其中a=(i,j)是图中任意两个节点的连接弧,当时,表示属于β车场的k型车辆经过了图中a弧上的i,j两点。为了简化描述,定义δ
+
(i)/δ-(i)代表从节点i出发/到达的连接弧。
[0006][0007][0008][0009][0010][0011][0012][0013][0014][0015][0016][0017][0018][0019][0020][0021][0022][0023]
目标函数(1)对车辆的购买及调度成本最小化,由三项成本构成,依次是所有车辆的购买成本、调度计划中车辆的耗电量成本、调度计划中的时间成本;约束条件(2)保证每个行车任务只被一辆车执行一次;约束条件(3)保证每个可能的充电任务只能最多被执行
一次;约束条件(4)和(5)保证从每个停车场出发和返回的车辆数一致;约束条件(6)为有向图中的节点流量限制;约束条件(7)和(8)保证同一车辆只能执行一个线路组合中的行车任务;约束条件(9)和(10)表示车辆在完成上一节点后有足够的时间到达下一个节点的开始地点,式中m为一个足够大的正数;类似的,约束条件(11)和(12)对车辆任务链的电量进行约束,保证车辆在完成任务链时不会出现电量不足的情况;约束条件(13)保证车辆充电后的电量不能超过电池的最大电量;约束条件(14)对车辆的电量水平进行限制,保证其在整个运营过程中电量水平高于安全电量并低于电池最大电量;约束条件(15)保证车辆出发前是满电量;约束条件(16)规定了每个停车场的停车数量不能超过其限制;约束条件(17)定义了0-1变量。
[0024]
对于车辆调度问题及其衍生问题,主要有精确求解算法和启发式算法两大类求解方法。对于较小规模的车辆调度问题,分支定界算法、动态规划算法或一些使用较广泛的求解软件就可以成功求解,但一方面车辆调度问题的求解时间会随着问题规模的增大呈指数增长;另一方面对多车场多车型的公交调度场景和电动车辆续航里程限制和充电约束的考虑使得问题更加复杂,这使得精确算法很难求解大规模的车辆调度问题,甚至对于一些较复杂的小规模算例进行求解也要耗费大量的时间。近些年,启发式算法快速发展,遗传算法、模拟退火算法、禁忌搜索算法以及大型邻域搜索方法等现代优化算法均被应用到复杂车辆调度问题的求解中。
[0025]
自适应大型邻域搜索方法是邻域搜索方法的延伸。其主要步骤是反复地从一系列的删除和插入算法中选择一对算法来进行操作,如果一对删除和插入算法使得当前解得到了优化,那么这对算法将会有更高的概率在后续的迭代中被选中。然后根据接受准则来判断是否接受该新解,并保存当前最优解,迭代循环直到满足迭代终止条件后输出最优解。相比于普通的邻域搜索方法,自适应大型邻域搜索方法能够通过改变删除和插入算法的权重来获取更大的搜索空间,从而使得算法陷入局部最优的可能性更小,增加了得到全局最优解的可能性,所以被称为自适应的大型邻域搜索算法。


技术实现要素:

[0026]
本发明是针对多车场、多车型条件下,允许部分补充电量行为的纯电动车辆调度问题提供一种自适应大型邻域搜索方法(adaptive large neighborhood search,alns),通过改良删除和插入算法,并增加局部搜索步骤来加强算法的搜索性能,使其能够解决公交企业在制定多条线路的车辆调度方案时无法采用精确求解算法在短时间内提供一个高质量可行解的问题。
[0027]
为了实现上述技术目的,本发明的技术方案是,一种面向大规模纯电动公交车辆调度问题的自适应大型邻域搜索方法,包括以下步骤:
[0028]
步骤1:通过启发式构造方法生成初始解s
0
,并将初始解作为当前的最优解s*;初始化所有删除和插入算法的权重,将所有的删除和插入算法权重均设置为ω
0
;初始化模拟退火的初始温度t
0

[0029]
步骤2:从所有删除算法中按照轮盘法选择一个,对当前解s执行删除操作,并记录所有删除的行程;
[0030]
步骤3:从所有插入算法中按照轮盘法选择一个,将步骤2)中所有删除的行程重新
插入至当前解s中,生成新解s';
[0031]
步骤4:通过局部搜索算法对新解s'的局部邻域进行搜索,若实现了优化则保留优化后的解;
[0032]
步骤5:根据式(1)判断新解s'是否优于当前最优解s*,若是则将当前最优解替换为新解s*

s',并记录此次迭代的序号i
lastimprove

[0033]
步骤6:根据接受准则判断是否接受新解s',若满足接受条件则将当前解替换为新解s

s';
[0034]
步骤7:根据评分机制对此次迭代中选择的删除和插入算法进行评分。若此次迭代中生成的解s'优于当前最优解s*,则选择的删除和插入算法加ω
1
分;若此次迭代生成的解s'优于当前解s,则选择的删除和插入算法加ω
2
分;否则不对所选择的算法评分进行调整;
[0035]
步骤8:根据冷却率α对模拟退火温度进行调整,具体过程为:每一次迭代后t

=αt,其中t为当前的温度,t

为下一次迭代的温度;
[0036]
步骤9:判断是否满足算法的终止条件,若满足则转到步骤10);否则转到步骤2,算法的终止条件设为满足预设的最大迭代次数η
max
或经过η
maxnoimprove
次连续迭代后当前解s没有得到优化;
[0037]
步骤10:输出最优解s*。
[0038]
所述的一种面向大规模纯电动公交车辆调度问题的自适应大型邻域搜索方法,所述的步骤1中通过启发式构造方法生成初始解s
0
的具体过程为:
[0039]
1.1将所有的行车任务依据其发车时刻的先后排列以等待插入到调度计划中。对于每一个待插入的行程,优先考虑将其插入至已有车辆的任务链中;
[0040]
1.2找出该线路中的所有的车辆,根据每一辆车的调度计划计算任务的插入成本,并检查插入任务后车辆是否会因电量不足无法完成任务链,若是则尝试在车辆的任务链中插入充电行程。车辆的充电过程在其所属的停车场完成,每次充电的时间为两个行程之间的最大空闲时间。若插入充电行程后仍电量不足或无法插入充电行程,则改变当前车辆的车型以检查车辆是否会因电量不足无法完成任务链。若能够完成则保留此种方案,若不能完成则继续尝试插入充电行程。若插入充电行程后仍不能完成任务链,则舍弃此种方案。在此过程中,将会依次更换可用的车型直到全部车型都被检查一遍。待全部车型都被检查完毕后,对每一种方案计算行程的插入成本,令插入行程之前的解为s
1
,插入行程后的解为s
2
,插入成本c可通过以下式子计算:
[0041]
c=f(s
1
)-f(s
2
)
[0042]
式中f(s
1
)和f(s
2
)为将解代入目标函数(1)计算得到的值。选择入成本最小的一辆车将行程插入。若当前所有车辆都不能执行此任务,则生成新的车辆执行该任务。在添加新的车辆时,计算不同车型在不同车场执行此任务的车辆购买和调度成本(包括电量消耗成本与时间成本),选择成本最小的方案。
[0043]
1.3重复步骤1.1和1.2,直到所有行程都插入至调度计划中。
[0044]
所述的一种面向大规模纯电动公交车辆调度问题的自适应大型邻域搜索方法,所述的步骤2)中,所述的删除算法包括随机删除(randomremoval),时间相关删除(time-relatedremoval)以及邻居删除(neighborremoval)。每种删除算法会根据算例中公交线路的数量决定删除的行程数量。对于n条线路混合调度的情况,算法将会删除这些线路中n*q
个行程,q的取值范围为[ξ
min

max
]。删除算法执行完毕后,算法将搜索执行行程任务少于p个的车辆,并删除这些车辆执行的行程任务。
[0045]
所述的一种面向大规模纯电动公交车辆调度问题的自适应大型邻域搜索方法,所述的步骤3中,所述的插入算法为后悔插入算法(regret insertion)。其通过计算后悔值(regret-value)来决定行程插入的先后顺序。regret-value并非代表行程在当前迭代中的插入成本,而是代表在后面的迭代中插入它的预测成本。对于任意一个行程i的regret-value计算公式如下所示:
[0046][0047]
式中的k表示regret-value的计算参数,表示把行程i插入至所有车辆的插入成本从小到大排序后的第j个插入成本。算法将在每一次迭代中优先插入令regret-value最大的行程,算法将重复迭代至所有的行程都被插入到当前解中。
[0048]
所述的一种面向大规模纯电动公交车辆调度问题的自适应大型邻域搜索方法,所述的步骤2和步骤3中,根据轮盘法选择一个删除或插入算法,是通过以下表达式来决定各个算法被选择到的概率:
[0049][0050]
其中k为算法的个数,π
i
表示第i种算法当前的评分。
[0051]
所述的一种面向大规模纯电动公交车辆调度问题的自适应大型邻域搜索方法,所述的步骤4中,所述的局部搜索算法的具体过程如下:
[0052]
4.1令u∈k,v∈d,(u,v)表示车辆的车型和车场信息。算法将从所有的组合中依次地更换车辆的车型和车场,在这个过程中保持车辆原有的任务链不变;
[0053]
4.2记录每种车型-车场组合的车辆购买和调度成本,并将车辆的车型和出发的车场将更换为成本最小的组合;
[0054]
4.3所有车辆都计算完毕后,将多余的车辆需要从超出限制的车场移至还有空余的车场中。与regret insertion类似地,计算超出限制的车场中每辆车的regret-value以确定需要移动的车辆,计算完毕后将所有成本从小到大排序,令表示车辆i的第j个车辆购买和调度成本,其中车型为u,车场为v,车辆的regret-value可根据式3.3计算得到。regret-value较小的车辆将会优先移动至其他车场。
[0055][0056]
所述的一种面向大规模纯电动公交车辆调度问题的自适应大型邻域搜索方法,所述的步骤6中,所述的接受准则是指采用模拟退火算法的规则来决定每一次迭代中得到的解是否会被保留,对于每一次迭代生成的解,其保留的概率为e
(0-(f(s)-f(s'))/t)
,其中t为当前的模拟退火温度,f(s)与f(s')分别为上一次迭代中解的目标函数值和当前迭代中生成解的目标函数值。在算法初始化时生成初始温度t
0
,并在每一次迭代中以冷却率α进行冷却。
[0057]
相对于现有技术,本发明的优点如下:本发明提出了一种针对纯电动公交车辆调
度问题的自适应大型邻域搜索方法。通过此方法能够对考虑多个车场和多种车型下的复杂公交车辆调度问题进行求解,并考虑了在现实公交调度场景中更实用的分线路调度策略和允许车辆部分补充电的行为。该方法能够为公交线路的电动化提供最优的车辆购买方案和车辆调度计划,弥补了这一实际问题求解方法的空缺。同时算法的求解效率较高,能够在实际中运用于求解包含数百个行程的公交车辆调度问题。
附图说明
[0058]
图1是方法的实施流程图。
具体实施方式
[0059]
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
[0060]
实施例1:参见图1,一种面向大规模纯电动公交车辆调度问题的自适应大型邻域搜索方法,包括以下步骤:
[0061]
本发明包括以下步骤:
[0062]
步骤1:通过启发式构造方法生成初始解s
0
;初始化所有删除和插入算法的权重,将所有的删除和插入算法权重均设置为ω
0
,本实施例中设置为100分;初始化模拟退火的初始温度t
0
,本实施例中设置为50度;
[0063]
步骤2:从所有删除算法中按照轮盘法选择一个,对当前解s执行删除操作,并记录所有删除的行程;
[0064]
步骤3:从所有插入算法中按照轮盘法选择一个,将步骤2)中所有删除的行程重新插入至当前解s中,生成新解s';
[0065]
步骤4:通过局部搜索算法对新解s'的局部邻域进行搜索,若实现了优化则保留优化后的解;
[0066]
步骤5:判断新解s'是否优于当前最优解s*,若是则将当前最优解替换为新解s*

s',并记录此次迭代的序号i
lastimprove

[0067]
步骤6:根据接受准则判断是否接受新解s',若满足接受条件则将当前解替换为新解s

s';
[0068]
步骤7:根据评分机制对此次迭代中选择的删除和插入算法进行评分。若此次迭代中生成的解s'优于当前最优解s*,则选择的删除和插入算法加ω
1
分;若此次迭代生成的解s'优于当前解s,则选择的删除和插入算法加ω
2
分;否则不对所选择的算法评分进行调整;本实施例中ω
1
设置为30分,ω
2
设置为15分;
[0069]
步骤8:根据冷却率α对模拟退火温度进行调整,具体过程为:每一次迭代后t

=αt,其中t为当前的温度,t

为下一次迭代的温度。本实施例中α设置为0.99;
[0070]
步骤9:判断是否满足算法的终止条件,若满足则转到步骤10;否则转到步骤2,算法的终止条件设为满足预设的最大迭代次数η
max
或经过η
maxnoimprove
次连续迭代后当前解s没有得到优化,本实施例中η
max
设置为2000次,η
maxnoimprove
设置为500次;
[0071]
步骤10;输出最优解s*。
[0072]
下面对该方法实施的几个关键步骤的具体过程进行介绍:
[0073]
步骤1:生成初始解;
[0074]
1.1)将所有的行车任务依据其发车时刻的先后排列以等待插入到调度计划中;对于每一个待插入的行程,优先考虑将其插入至已有车辆的任务链中;
[0075]
1.2)找出该线路中的所有的车辆,根据每一辆车的调度计划计算任务的插入成本,当车辆因电量不足而无法完成该任务时,尝试在车辆的任务链中插入充电行程;车辆的充电过程在其所属的停车场完成,每次充电的时间为两个行程之间的最大空闲时间。如果当前车辆在插入充电行程后仍没有足够的电量完成该任务或该车辆无法插入充电行程,算法将会改变当前车辆的车型使其有更大的电池容量或更低的耗电量以尝试完成该任务。无论是插入充电行程或更换车型,所带来的成本增加都会计算在该任务的插入成本中。令插入行程之前的解为s
1
,插入行程后的解为s
2
,插入成本c可通过以下式子计算:
[0076]
c=f(s
1
)-f(s
2
)
[0077]
式中f(s
1
)和f(s
2
)为将解代入目标函数(1)计算得到的值。最终选择入成本最小的一辆车将行程插入。若当前所有车辆都不能执行此任务,将生成新的车辆执行该任务,在添加新的车辆时,计算不同车型在不同车场执行此任务的车辆购买和调度成本(包括电量消耗成本与时间成本),并选择成本最小的方案。
[0078]
1.3)重复步骤1.1)和1.2),直到所有行程都插入至调度计划中。
[0079]
步骤2中删除算法:
[0080]
本发明中使用的删除算法包括随机删除(randomremoval),时间相关删除(time-relatedremoval)以及邻居删除(neighborremoval)。每种删除算法会根据算例中公交线路的数量决定删除的行程数量。如背景技术中对本发明所适用的数学模型所描述的,本发明考虑在公交调度中某几条公交线路的车辆可以混合调度的情况。因此,对于n条线路混合调度的情况,算法将会删除这些线路中n*q个行程,q的取值范围为[ξ
min

max
]。其中,randomremoval是从当前解中随机选择一定数量的行程并从当前解中移除,每个行程被选择的概率是相同的。time-relatedremoval将删除出发时间最接近的一连串行程。neighborremoval将删除最有可能被同一辆车执行的一连串行程,算法首先随机删除一个行程,然后删除与它的结束时间最接近的邻居行程。与邻居行程的出发时间最接近的ξ
n
个行程也会被删除。在每一次上述任意一个删除算法执行完毕后,算法将搜索执行行程任务少于p的车辆,并删除这些车辆执行的行程任务。本实施例中,[ξ
min

max
]设置为[10,20],ξ
n
设置为2个,p设置为2个。
[0081]
在选择删除算法时,需要根据轮盘法来选择,即通过以下表达式来决定各个算法被选择到的概率:
[0082][0083]
其中k为算法的个数,π
i
表示第i种算法当前的评分。当某种删除算法在之前的迭代中对解进行了多次有效优化,其就有更大的概率在后续的迭代中被选中。利用这样的机制,就可以实现算法的自适应过程,使其更好的适应算例的特点,从而给出高质量的解。
[0084]
步骤3中插入算法:
[0085]
本发明中所用的插入算法为后悔插入算法(regret insertion)。其通过计算后悔
值(regret-value)来决定行程插入的先后顺序。对于任意一个行程i的regret-value计算方法如下所示:
[0086]
对于一个需要被插入的行程i,计算它在当前解中每一辆车的插入成本并记录它插入的位置。如果插入的行程违背了时间窗约束时,插入成本将被记为极大值m;若插入的行程在时间窗上可行但车辆没有足够电量完成,则搜索在当前行程之前所有空闲时间依次地插入充电行程。若插入充电节点后的任务链可行,其插入成本为行程本身的执行成本及新加入的充电行程的执行成本之和。若所有可用充电时间都插入了充电行程之后的任务链仍然不可行,则改变车辆的类型再检查能否满足电量约束。若所有的车型都无法满足电量约束,将插入成本记为m。将行程i插入至所有车辆的插入成本从小到大排列。令表示排序后的第j个插入成本,则行程i的regret-value可根据下式计算得到。
[0087][0088]
式中的k表示regret-value的计算参数。regret-k算法将在每一次迭代中优先插入令regret-value最大的行程,算法将重复迭代至所有的行程都被插入到当前解中。所述的步骤3)中,使用了regret-2、regret-3以及regret-4算法。
[0089]
选择插入算法的过程与步骤2)中选择删除算法相同,同样使用轮盘法进行选择,在此不再赘述。
[0090]
步骤4中局部搜索:
[0091]
本发明中的所使用局部搜索算法的具体过程如下:
[0092]
4.1)令u∈k,v∈d,(u,v)表示车辆的车型和车场信息。算法将从所有的组合中依次地更换车辆的车型和车场,在这个过程中保持车辆原有的任务链不变;
[0093]
4.2)记录每种车型-车场组合的车辆购买和调度成本,并将车辆的车型和出发的车场将更换为成本最小的组合;
[0094]
4.3)所有车辆都计算完毕后,将多余的车辆从超出限制的车场移至还有空余的车场中。与regret insertion类似地,计算超出限制的车场中每辆车的regret-value以确定需要移动的车辆。计算完毕后将所有成本从小到大排序,令表示车辆i的第j个车辆购买和调度成本,其中车型为u,车场为v,车辆的regret-value可根据式3.3计算得到。regret-value较小的车辆将会优先移动至其他车场。
[0095][0096]
步骤6中解的接受准则:
[0097]
本发明中解的接受准则是采用模拟退火算法的规则来决定每一次迭代中得到的解是否会被保留,对于每一次迭代生成的解,其保留的概率为e
(0-(f(s)-f(s'))/t)
,其中t为当前的模拟退火温度,f(s)与f(s')分别为上一次迭代中解的目标函数值和当前迭代中生成解的目标函数值。在算法初始化时生成初始温度t
0
,并在每一次迭代中以冷却率α进行冷却。
[0098]
在本实施例中,以四条城市常规公交线路的所有行程任务作为数据集,随机从中选择一定数量的行程作为调度任务,选择四种纯电动公交车型来完成调度任务。本实施例中共生成了8个随机算例,分别采用本发明的方法与cplex软件对其进行计算,本方法
(alns)以matlab(r2018b)进行编写并运行,cplex的运行版本为12.8.0。两种算法均在配置i7处理器以及4g容量ram的win10环境下运行,计算结果见下表1,表中标注了每个算例中包含的行程数量,以及两种方法求得的目标函数值(即车辆购置成本与调度成本之和)以及所用的计算时间,并在最后列出了alns的计算结果与cplex计算出的最优解之间目标函数值的百分比差距。
[0099]
表1 alns与cplex计算结果对比
[0100][0101]
可以看出,本方法除了在算例5的求解结果上与cplex有极小的差距,对其余算例都能求出最优解。在求解时间上,cplex虽然在大部分的算例求解上所用的时间都短于alns,但在对一些复杂算例的计算上却用了相当长的时间。alns的计算时间虽然随着算例中行程数量的增长而提升,但都保持在可接受的合理范围内。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1