一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

基于两段算法的电动汽车灾后电力配送方案生成方法

2022-07-02 02:43:46 来源:中国专利 TAG:


1.本发明属于灾害应急救援技术领域,具体地是设计了一种基于两段算法的电动汽车灾后电力配送方案生成方法。


背景技术:

2.在一些沿海国家,飓风、海啸等自然灾害经常发生。这些灾害会导致道路损坏、电力系统损坏等严重后果。当重大灾害发生时,人们会集中到城市中的学校或者医院等大型场所进行避难,但避难所的电池容量有限需要及时通过外部电源的供给来满足居民的电力需求。如何为灾后避难所正常运行提供可靠的电力保障成为一个需要考虑的问题。传统采用的方式主要有采用车辆为避难所分配生活用品食物等,保证短时间的物资供给,但是此种方式对于避难所的电力需求从未考虑过。现今,电动汽车的普及率大大提高,电动汽车的车载电池可以作为各个避难所的电源补给来源,那么通过电动汽车进行电力配送救援方案则备受重视。


技术实现要素:

3.本发明主要提出了一种以电动汽车自身电能作为配送对象,为受灾的避难所配送电能的方法。与已有的成果相比,本发明以带时间窗的车辆路径问题为基础提出了改进的两阶段算法,第一阶段使用改进的floyd算法求解避难所和避难所之间以及避难所和配送中心之间的最短路径;第二阶段将避难所的soc消耗以及电动汽车行驶消耗的soc同时结合到遗传算法当中,提出了使用电动汽车车载电能为避难所分配电能的配送方案。
4.本发明的技术方案:
5.基于两段算法的电动汽车灾后电力配送方案生成方法,包括如下步骤:
6.利用改进的floyd算法获得配送中心与避难所之间以及任意两避难所之间最短距离矩阵;进而获得电动汽车在配送中心与避难所之间以及任意两避难所之间运行最短时间;
7.在确保每个避难所都接受一次配送的基础上,利用遗传算法,获得所有参与配送的电动汽车从离开配送中心到回到配送中心时间和最短的配送方案。
8.其中,灾后电力配送救援方案的模型参数如下:
9.n1={0}:分配中心;
10.n2={1,...,s}:需要电力配送的避难所节点;
11.n3={s 1,...,n-1}:路径上的节点,实际路线中的岔路口等不需要电力配送的节点;
12.n=n1∪n2∪n3:受灾后整个需要配送电能的灾区上的所有节点,即n1,n2,n3三个节点集合的并集;
13.e:边的集合;
14.k={1,...,k}:配送电力的电动汽车集合,配送中心最多发出k辆电动汽车;
15.k
max
:配送中心的电动汽车储备量,求解的配送方案所使用的车辆数最大为k
max

16.车辆k在避难所i的到达时间;
17.在避难所i,车辆k需要消耗的电量;
18.在避难所i,车辆k对避难所进行充电的时间;
19.cs:电动汽车的充电速度;
20.qi:避难所i的电力容量;
21.soci:避难所i电池的当前荷电状态;
22.soc
con
:soc可接受充电值,高于此值,避难所电量足够,还不需要电动汽车为避难所充电;
23.soc
max
:soc充电的最大值,电动汽车对避难所进行充电达到此值之后,充电停止,电动汽车前往下一个避难所进行充电,如果所有避难所都被配送完毕则电动汽车会返回配送中心;
24.soc
min
:避难所正常运行的soc最低值,低于此值,避难所电量不能保障避难所人们的基本生存生活;
25.[ei,li]:每个避难所i的时间窗约束;
[0026]
q:每辆电动汽车的电池电量值;
[0027]
v:电动汽车的行驶速度;
[0028]
d=[d
ij
]:受灾后整个需要配送电能的灾区上的所有节点组成的路径矩阵(以下简称:路径矩阵),d大小为n
×
n维的矩阵,n为灾区的节点总数;i,j∈n1∪n2∪n3如果两个节点i,j相邻,d
ij
值为i到j的距离,如果两节点i,j不相邻,d
ij
值为无穷大;
[0029]
车辆k在i点的充电时间;
[0030]
决策变量,等于1时表示车辆k从i走到过j;等于0时表示车辆k没有从i到j;
[0031]
一个从集合e
×r
映射到r

的函数,表示在时间t车辆离开,从节点vi到节点vj的旅行时间,
[0032]
避难所soc放电过程的演化方程:
[0033][0034][0035][0036]
式中,soci(0)为第i个避难所处电池soc的初始值,qi为第i个避难所处电池的容量,η为电池的库仑系数,φ(t)为第t时刻的放电/充电速率,因此,
[0037]
根据公式(1),以及soc
con
和soc
min
,可以分别得出公式(2)和公式(3),从而求解出
避难所i的左时间窗ei和右时间窗li。
[0038]
电池的soc表示电池的荷电状态,一般用一个百分比来表示。由于避难所中的电池为人们的日常生活提供电力能源,避难所电池的soc随着时间的推移逐渐降低。由于每个避难所的电池容量qi和电池初始soci(0)不同,可以换算为不同避难所的时间窗,以保证电动汽车在避难所的时间窗范围内能够为避难所配送足够的电能来满足人们在避难所的日常生活。每个避难所i的左时间窗口ei表示车辆最早到达避难所i并可以开始充电的时间。当车辆比ei更早到达避难所i时,必须等待到ei之后才能为避难所服务,充电过早也会影响到电动汽车在此避难所之后的后续配送任务的变化。每个避难所的右时间窗li表示每个避难所i的最晚充电时间,超过这个时间后,避难所电池电量过低,避难所居民的生存无法得到保障。
[0039]
进一步地,上述改进的floyd算法具体为:
[0040]
首先,定义一个邻接表e_list,邻接表是一个包含n个元素的列表,每个元素都是不定长度的一维向量;对任意的i∈n1∪n2∪n3,e_list{i}表示与节点i相邻的节点所组成的一维向量;其中,n1={0}表示分配中心;n2={1,...,s}表示需要电力配送的避难所节点;n3={s 1,...,n-1}表示实际路线中不需要电力配送的节点;
[0041]
其次,遍历路径矩阵d=[d
ij
],如果两个节点i,j相邻,将节点j存入到e_list{i}中去,如果两节点i,j不相邻则不做处理;遍历路径矩阵完毕之后,邻接表存储完毕;
[0042]
之后,进行三层for循环遍历,最外层for循环h∈n1∪n2∪n3,中间层for循环i∈n1∪n2∪n3,最里层for循环是j∈e_list{h},e_list{h}是与节点h相邻的节点所组成的一维向量,h是作为插入节点i和节点j之间的节点,用于检查电动汽车从节点i到节点j行驶的路程是否比电动汽车从结点i先经过节点h再到达节点j行驶的路程更长,如果更长则替换节点i到节点j电动汽车行驶的路程为电动汽车从结点i先经过节点h再到达节点j行驶的路程;遍历满足公式(4)要求,到达节点h的车辆k必须从h离开
[0043][0044]
其中,k={1,...,k}为配送电力的电动汽车集合,配送中心最多发出k辆电动汽车;n=n1∪n2∪n3,受灾后整个需要配送电能的灾区上的所有节点,即n1,n2,n3三个节点集合的并集;
[0045]
三层for循环遍历之后,得到配送中心与避难所之间以及任意两避难所之间最短距离矩阵。
[0046]
在解决本发明的问题时,这种改进能够比原来的floyd算法有效地降低计算复杂度。具体如下所示:
[0047]
改进的floyd算法的计算复杂度可分为两部分考虑。第一部分是将距离矩阵转换为邻接表,这部分的两个n次循环,计算复杂度为ο(n2)。另一部分是利用邻接表执行floyd算法,其中包含三个循环。前面有两层for循环,每此循环的次数都是n次。在灾害电力配送问题中这是一个道路破坏严重的不完全连接图,n个节点的灾后路网会在邻接表e_list中存入n个元素,并且每个元素的长度会远远小于n。因此,假设邻接表e_list中最长元素的长度为ε,那么ε远小n。所以第三个循环的最大长度是ε,第二部分的计算复杂度是ο(εn2)。综合来看,整体算法的计算复杂度为ο(εn2)。未改进之前的算法的计算复杂度为ο(n3)。因
此,对于此问题,改进的floyd算法可以有效地降低计算复杂度。
[0048]
遗传算法(genetic algorithm,ga)是模拟达尔文生物进化论的自然选择和遗传学机理的生物进化过程的计算模型,是一种通过模拟自然进化过程搜索最优解的方法。其主要特点是直接对结构对象进行操作,不存在求导和函数连续性的限定;具有内在的隐并行性和更好的全局寻优能力;采用概率化的寻优方法,不需要确定的规则就能自动获取和指导优化的搜索空间,自适应地调整搜索方向。遗传算法以一种群体中的所有个体为对象,并利用随机化技术指导对一个被编码的参数空间进行高效搜索。
[0049]
进一步地,上述的遗传算法主要包括:构造配送方案初始解、构造初始种群、建立适应度函数、配送方案种群选择操作、扩展配送方案种群数量、根据适应度函数得到最优配送方案;其中扩展种群数量为交叉、变异或局部搜索操作中的一种或多种。
[0050]
进一步地,所述的构造初始解,具体为:
[0051]
传统遗传算法在求解问题时仅仅考虑的是对问题进行直接编码求解,本发明采用的遗传算法中提出先进行构造初始解,所构造的初始解并不一定能够完全满足载重量约束和时间窗约束,但是相比于传统随机生成初始解的遗传算法,能够提高算法搜索解的效率。
[0052]
首先,建立约束条件公式(5)~(9);
[0053][0054][0055][0056][0057][0058]
其次,设有s个避难所,s∈n1;
[0059]
从所有避难所中随机选择一个避难所j∈{1,...,s};
[0060]
初始化车辆使用数目k=1;
[0061]
根据公式(5),每个避难所只能有被服务一次,生成一个避难所的序列seq=[j,j 1,...,s,1,...,j-1];
[0062]
进行一层for循环遍历避难所的序列seq,seq(i)表示避难所序列的第i个数字,将避难所seq(i)添加到第k条路径中,然后分两种情况:
[0063]
情况1:首先根据公式(8),计算避难所所需要的电能需求,当第k条路径根据公式(7)满足车辆的容量约束,那么此时分三种情况:
[0064]
a.如果当前配送路线为空,根据公式(6),电动汽车从配送中心出发,直接将避难所seq(i)添加到配送路线中;
[0065]
b.如果当前配送路线中只有一个避难所,在添加新避难所seq(i)时,根据seq(i)的左时间窗大小与当前配送路线上的避难所的左时间窗进行比较,若seq(i)左时间窗更小
则seq(i)插入到当前配送路线上的避难所的前面;
[0066]
c.如果当前配送路线访问的避难所数目大于1,则需要遍历这条配送路线上任意两个避难所的中间插入位置,然后确认避难所seq(i)的左时间窗是否在某两个避难所左时间窗的中间插入位置;如果存在这样的中间插入位置,则将避难所seq(i)插入到该位置;如果不存在这样的中间插入位置,则将避难所seq(i)插入到当前配送路线的末尾;
[0067]
情况2:当第k条配送路线在添加避难所seq(i)之后不满足载重量约束,不添加此避难所seq(i),保存此配送路线,然后更新k=k 1再次检测载重量约束;
[0068]
当所有避难所seq(i)已被添加到配送路线中,会存储k条配送路线。
[0069]
进一步地,所述的构造初始种群,具体为:
[0070]
当避难所数目为s且最大车辆使用数目为k时,配送方案的长度为s k-1,表达形式为1到s k-1的序列;初始解所存储的k条从配送中心0开始,中间为避难所,结尾为配送中心0的路线;将此k条配送路线首尾相连结合成一维向量,最后将此一维向量中的任意两条配送路线的中间插入s 1,...,s k-1中的一个数字,已经插入的数字不会再进行第二次插入,插入处理之后,此一维向量的长度是s k-1;此一维向量就是初始配送方案,再将改初始配送方案复制多次,形成初始种群。
[0071]
在条件编码过程中生成了多个配送方案的种群,这些配送方案会在后续交叉、变异以及局部搜索操作中发生不同的变化,为了比较不同配送方案的优劣,本发明设计了适应度函数公式(10),每个配送方案都可以被计算出一个适应度函数值,适应度函数公式(10)中,f1(x)表示所有参与配送的电动汽车从离开配送中心到回到配送中心的时间和,适应度函数值越高说明f1(x)越小,配送方案所用的时间越短;由于构造初始解的方式并不能保证各条配送路径都满足时间窗约束,所以为了能够改善配送方案,本发明设置了惩罚项f2(x),它表示电动汽车到达避难所的等待时间,即为电动汽车未达到避难所的左时间窗时,左时间窗与电动汽车到达避难所的时间差值,α为f2(x)的惩罚系数,设为10,公式(13)即为避难所i的等待时间,如果电动汽车到达避难所i时已经超过避难所的左时间窗,则公式(13)值为0。
[0072]
所述的适应度函数,具体为:
[0073]
maxf(x)=-(f1(x) αf2(x))
ꢀꢀꢀ
(10)
[0074][0075][0076][0077][0078][0079]
[0080]
公式(14)计算避难所充电时间;公式(15)计算到达每个避难所的时间,此公式表明本发明计算电动汽车到达避难所的时间与避难所的充电时间有关,如果车辆在之前的避难所的充电时间变化,随之影响的是后续整个配送路线的变化,这是我们与传统遗传算法计算所不同的。公式(16)保证了每辆车返回配送中心的时间不会超过分配中心的右时间窗l0;通过公式(14)~(16),计算电动汽车到达每个避难所的时间。
[0081]
进一步地,上述的选择操作采用metropolis抽样准则,具体为:
[0082]
metropolis是一种有效的重点抽样法,f1表示上一次迭代过程中遗传算法所选择的配送方案的适应度函数值,f2表示本次迭代过程中多个种群中产生的适应度函数值最高的配送方案,t用来控制选择的概率的参数,初始t0设置为100,每迭代一次t
i 1
=0.99ti,i∈[0,99]p表示选择f2所对应的配送方案的概率,如果f2大于f1则本次迭代选择f2作为选中的配送方案用于下一代迭代比较,如果f2小于f1,说明f1优于f2,以p的概率选择f2所对应的配送方案;
[0083][0084]
由公式(10)可知,目标函数为适应度值越高的个体越好,通过使用metropolis准则,在算法迭代初期按照公式(17),以一定的概率选择适应度函数值较差的配送方案,保持了种群的多样性,避免了算法陷入局部最优解中,而经过多次迭代后,t逐渐减小,系统会逐渐趋于一个稳定的分布状态,配送方案会稳定到最优配送方案附近,后期搜索速度增快。
[0085]
进一步地,上述的交叉操作采用ox交叉操作,具体为:
[0086]
首先从种群中随机选择两个父代配送方案,随机选择两个交叉位置a和b,将第一个父代配送方案的a到b之间的片段复制连接到第二个父代配送方案的最前面,并将第二个父代配送方案的a到b之间的片段复制连接到第一个父代配送方案最前面;然后把两个父代配送方案中重复出现的数字删除掉,形成两个子代配送方案。
[0087]
进一步地,上述的变异操作,具体为:
[0088]
对于从种群中随机选择的父代配送方案个体,先随机生成两个不同的位置a和b,然后将这两个位置上的数字进行交换。
[0089]
进一步地,上述的局部搜索操作,具体为:
[0090]
局部搜索操作虽然会在一定程度上增加算法运行的时间,但是加入局部搜索之后求解质量会大大提高,可以在大大减少迭代的次数。局部搜索就是将种群中每个配送方案根据相似性计算生成一个破坏算子,破坏算子代表对配送方案中的避难所破坏的个数,从当前配送方案中移除若干个避难所,然后在满足载重量约束和时间窗约束的前提下,尽可能将移除的避难所插回到使电动汽车行驶消耗总时间最少的插入位置。
[0091]
(1)算法首先破坏原有的配送方案,以随机概率的形式从生成的配送方案中选择数量为s/5的避难所,将这些选择的避难所点从配送方案中去掉。
[0092]
(2)对破坏的配送方案进行修复,对每一个被删除的避难所计算它插入原有配送方案中任意两点之间以及配送方案的第一个或者最后一个位置的适应度函数值并保存该避难所插入之后的适应度函数值最大的一个插入点,比较保存的s/5个避难所适应度函数值,选择适应度函数值最大的那个避难所以及该避难所的插入点插入到配送方案中。
[0093]
(3)根据步骤(2),被删除的避难所节点已经有一个被插入回配送方案中,重复步骤(2)中的操作直到所有被删除的避难所节点都被插入回配送方案中。
[0094]
进一步地,保存最优配送方案;
[0095]
多次遗传算法迭代完成之后,将从种群中选择适应度函数值最高的配送方案,此配送方案即为该两阶段算法求解的最优配送方案。
[0096]
本发明的有益效果为:应用改进的floyd算法求解第一阶段避难所和避难所之间的最短路径以及避难所和分配中心的最短路径在处理几万个数量级的结点问题中,与原有的floyd算法相比,能够在几分钟时间内处理任意两个节点之间的数据,缩短了处理的时间;第二阶段的算法结合了电池soc方程,求解了一个未提出过的问题,综合两阶段算法,算法能够在20分钟时间左右提供一个合理的配送方案,时间上也能够满足灾害的应急响应。
附图说明
[0097]
图1为本发明方法的流程图。
[0098]
图2为本发明实施例中应用的灾区地图。
[0099]
图3为本发明实施例图2中小矩形所框选的区域放大图。
[0100]
图4为本发明实施例求解得到的最优配送方案。
具体实施方式
[0101]
下面将结合具体实施例和附图对本发明的技术方案进行进一步的说明,本发明技术方案的流程图如图1所示。
[0102]
在图2应用的灾区地图中,圆圈代表避难所,正方形代表配送中心,共有78个避难所和一个配送中心,小的矩形所框选的区域为图3所示的区域;图3为放大的避难所50-51之间的灾区地图,图中两个大的点分别是避难所50和避难所51,小的点为实际路线中的岔路口等不需要电力配送的节点。
[0103]
第一步,生成floyd邻接表;
[0104]
定义一个邻接表e_list,邻接表是一个包含n个元素的列表,每个元素都是不定长度的一维向量;对任意的i∈n1∪n2∪n3,e_list{i}表示与节点i相邻的节点所组成的一维向量;其中,n1={0}表示分配中心;n2={1,...,s}表示需要电力配送的避难所节点;n3={s 1,...,n-1}表示实际路线中不需要电力配送的节点;
[0105]
其次,遍历路径矩阵d=[d
i,j
],如果两个节点i,j相邻,将节点j存入到e_list{i}中去,如果两节点i,j不相邻则不做处理;
[0106]
遍历路径矩阵完毕之后,邻接表存储完毕,根据图3可以看到邻接表中,e_list{50}=[80,81],e_list{80}=[79,81,87];
[0107]
第二步,floyd求解所需最短路径;
[0108]
进行三层for循环遍历,最外层for循环h∈n1∪n2∪n3,中间层for循环i∈n1∪n2∪n3,最里层for循环是j∈e_list{h},e_list{h}是与节点h相邻的节点所组成的一维向量,h是作为插入节点i和节点j之间的节点,用于检查电动汽车从节点i到节点j行驶的路程是否比电动汽车从结点i先经过节点h再到达节点j行驶的路程更长,如果更长则替换节点i到节点j电动汽车行驶的路程为电动汽车从结点i先经过节点h再到达节点j行驶的路程;遍历满
足公式(4)要求,到达节点h的车辆k必须从h离开。在图3中,d
50,87
不相邻所以数值为无穷大,数值大于d
50,81
d
81,87
,所以节点87应该先经过节点81再到节点50。
[0109][0110]
其中,k={1,...,k}为配送电力的电动汽车集合,配送中心最多发出k辆电动汽车;n=n1∪n2∪n3,受灾后整个需要配送电能的灾区上的所有节点,即n1,n2,n3三个节点集合的并集;
[0111]
三层for循环遍历之后,得到配送中心与避难所之间以及任意两避难所之间最短距离矩阵。
[0112]
第三步,构造初始解;
[0113]
首先,建立约束条件公式(5)~(9);
[0114][0115][0116][0117][0118][0119]
其次,设有s个避难所,s∈n1;
[0120]
从所有避难所中随机选择一个避难所j∈{1,...,s};
[0121]
初始化车辆使用数目k=1;
[0122]
根据公式(5),每个避难所只能有被服务一次,生成一个避难所的序列seq=[j,j 1,...,s,1,...,j-1];
[0123]
进行一层for循环遍历避难所的序列seq,seq(i)表示避难所序列的第i个数字,将避难所seq(i)添加到第k条路径中,然后分两种情况:
[0124]
情况1:首先根据公式(8),计算避难所所需要的电能需求,当第k条路径根据公式(7)满足车辆的容量约束,那么此时分三种情况:
[0125]
a.如果当前配送路线为空,根据公式(6),电动汽车从配送中心出发,直接将避难所seq(i)添加到配送路线中;
[0126]
b.如果当前配送路线中只有一个避难所,在添加新避难所seq(i)时,根据seq(i)的左时间窗大小与当前配送路线上的避难所的左时间窗进行比较,若seq(i)左时间窗更小则seq(i)插入到当前配送路线上的避难所的前面;
[0127]
c.如果当前配送路线访问的避难所数目大于1,则需要遍历这条配送路线上任意两个避难所的中间插入位置,然后确认避难所seq(i)的左时间窗是否在某两个避难所左时间窗的中间插入位置;如果存在这样的中间插入位置,则将避难所seq(i)插入到该位置;如
果不存在这样的中间插入位置,则将避难所seq(i)插入到当前配送路线的末尾;
[0128]
情况2:当第k条配送路线在添加避难所seq(i)之后不满足载重量约束,不添加此避难所seq(i),保存此配送路线,然后更新k=k 1再次检测载重量约束;
[0129]
当所有避难所seq(i)已被添加到配送路线中,会存储k条配送路线。例如,在图2应用的灾区地图中,共有78个避难所和一个配送中心。设置配送中心存储的车辆数为15辆,即k
max
=15,可以生成如下配送路线:
[0130]
配送路线1:0-》41-》40-》53-》16-》9-》14-》12-》23-》52-》0
[0131]
配送路线2:0-》42-》24-》7-》15-》10-》11-》30-》36-》34-》0
[0132]
配送路线3:0-》20-》32-》33-》31-》54-》76-》46-》77-》39-》0
[0133]
配送路线4:0-》5-》3-》67-》71-》70-》37-》6-》68-》0
[0134]
配送路线5:0-》57-》65-》63-》62-》61-》60-》47-》0
[0135]
配送路线6:0-》17-》18-》8-》27-》58-》59-》64-》66-》0
[0136]
配送路线7:0-》43-》25-》35-》38-》22-》21-》75-》0
[0137]
配送路线8:0-》56-》44-》45-》51-》50-》49-》0
[0138]
配送路线9:0-》19-》29-》28-》26-》4-》2-》1-》69-》0
[0139]
配送路线10:0-》55-》13-》78-》74-》72-》73-》48-》0
[0140]
由以上例子可以看出,生成的初始解共使用了10辆电动汽车。
[0141]
第四步,构造初始种群;
[0142]
当避难所数目为s且最大车辆使用数目为k时,配送方案的长度为s k
max-1,表达形式为1到s k
max-1的序列;初始解所存储的k条从配送中心0开始,中间为避难所,结尾为配送中心0的路线;将此k条配送路线首尾相连结合成一维向量,最后将此一维向量中的任意两条配送路线的中间插入s 1,...,s k
max-1中的一个数字,已经插入的数字不会再进行第二次插入,插入处理之后,此一维向量的长度是s k
max-1;此一维向量就是初始配送方案,再将该初始配送方案复制多次,形成初始种群。
[0143]
使用第三步构造配送方案初始解中的例子,最后生成的配送方案为:使用第三步构造配送方案初始解中的例子,最后生成的配送方案为:
[0144]
第五步,建立适应度函数;
[0145]
根据公式(10),每个配送方案计算出一个适应度函数值,f1(x)表示所有参与配送的电动汽车从离开配送中心到回到配送中心的时间和,适应度函数值越高说明f1(x)越小,配送方案所用的时间越短;并根据惩罚项f2(x),它表示电动汽车到达避难所的等待时间,即为电动汽车未达到避难所的左时间窗时,左时间窗与电动汽车到达避难所的时间差值,α
为f2(x)的惩罚系数,设为10,公式(13)即为避难所i的等待时间,如果电动汽车到达避难所i时已经超过避难所的左时间窗,则公式(13)值为0。
[0146]
maxf(x)=-(f1(x) αf2(x))
ꢀꢀꢀ
(10)
[0147][0148][0149][0150][0151][0152]
公式(14)计算避难所充电时间;公式(15)计算到达每个避难所的时间,此公式表明本发明计算电动汽车到达避难所的时间与避难所的充电时间有关,如果车辆在之前的避难所的充电时间变化,随之影响的是后续整个配送路线的变化。
[0153]
第六步,配送方案选择操作;
[0154]
采用metropolis抽样准则,具体为:
[0155]
f1表示上一次迭代过程中遗传算法所选择的配送方案的适应度函数值,f2表示本次迭代过程中多个种群中产生的适应度函数值最高的配送方案,t用来控制选择的概率的参数,初始t0设置为100,每迭代一次t
i 1
=0.99ti,i∈[0,99]p表示选择f2所对应的配送方案的概率,如果f2大于f1则本次迭代选择f2作为选中的配送方案用于下一代迭代比较,如果f2小于f1,说明f1优于f2,以p的概率选择f2所对应的配送方案。
[0156][0157]
由公式(10)可知,目标函数为适应度值越高的个体越好,通过使用metropolis准则,在算法迭代初期按照公式(17),以一定的概率选择适应度函数值较差的配送方案,保持了种群的多样性,避免了算法陷入局部最优解中,而经过多次迭代后,t逐渐减小,系统会逐渐趋于一个稳定的分布状态,配送方案会稳定到最优配送方案附近,后期搜索速度增快。
[0158]
第七步,ox交叉操作;
[0159]
首先从种群中随机选择两个父代配送方案,随机选择两个交叉位置a和b,将第一个父代配送方案的a到b之间的片段复制连接到第二个父代配送方案的最前面,并将第二个父代配送方案的a到b之间的片段复制连接到第一个父代配送方案最前面;然后把两个父代配送方案中重复出现的数字删除掉,形成两个子代配送方案。
[0160]
现使用如下两个父代配送方案说明ox交叉操作:
[0161]
父代配送方案1:[41,40,53,16,9,14,12,23,52,79,80,42,24,7,15,10,11,30,36,34,81,82,20,32,33,31,54,76,46,77,39,83,5,3,67,71,70,37,6,68,84,85,57,65,63,62,61,60,47,86,87,17,18,8,27,58,59,64,66,88,43,25,35,38,22,21,75,89,56,44,
45,51,50,49,90,91,19,29,28,26,4,2,1,69,92,55,13,78,74,72,73,48]
[0162]
父代配送方案2:[32,33,31,54,76,46,77,39,83,5,3,67,71,70,37,6,68,84,85,57,65,63,62,61,60,47,86,87,17,18,8,27,58,59,64,66,88,43,25,35,38,22,21,75,89,56,44,45,51,50,49,90,91,19,29,28,26,4,2,1,69,92,55,13,78,74,72,73,48,41,40,53,16,9,14,12,23,52,79,80,42,24,7,15,10,11,30,36,34,81,82,20]
[0163]
这时随机选择两个交叉的位置a和b,比如说a=3,b=6,那么交叉的片段为加粗部分:
[0164]
父代1:父代1:
[0165]
父代2:父代2:
[0166]
然后将父代2的交叉片段移动到父代1的前面,将父代1的交叉片段移动到父代2的前面,则这两个父代配送方案变为:
[0167]
父代1:父代1:
[0168]
父代2:
[0169][0170]
然后从前到后把第2个重复的基因位删除掉,就形成了两个子代配送方案。
[0171]
子代1:[31,54,76,46,41,40,53,16,9,14,12,23,52,79,80,42,24,7,15,10,11,30,36,34,81,82,20,32,33,77,39,83,5,3,67,71,70,37,6,68,84,85,57,65,63,62,61,60,47,86,87,17,18,8,27,58,59,64,66,88,43,25,35,38,22,21,75,89,56,44,45,51,50,49,90,91,19,29,28,26,4,2,1,69,92,55,13,78,74,72,73,48]
[0172]
子代2:[53,16,9,14,32,33,31,54,76,46,77,39,83,5,3,67,71,70,37,6,68,84,85,57,65,63,62,61,60,47,86,87,17,18,8,27,58,59,64,66,88,43,25,35,38,22,21,75,89,56,44,45,51,50,49,90,91,19,29,28,26,4,2,1,69,92,55,13,78,74,72,73,48,41,40,12,23,52,79,80,42,24,7,15,10,11,30,36,34,81,82,20]
[0173]
第八步,变异操作;
[0174]
变异操作比较便于操作,对于从种群中随机选择的父代配送方案,先随机生成两个不同的位置a和b,然后将这两个位置上的数字进行交换。
[0175]
对于如下给定的父代配送方案,随机选择两个变异位置a和b,比如说a=3,b=6,那么交换后的子代配送方案为:
[0176]
父代:[31,54,76,46,41,40,53,16,9,14,12,23,52,79,80,42,24,7,15,10,11,30,36,34,81,82,20,32,33,77,39,83,5,3,67,71,70,37,6,68,84,85,57,65,63,62,61,60,47,86,87,17,18,8,27,58,59,64,66,88,43,25,35,38,22,21,75,89,56,44,45,51,50,49,90,91,19,29,28,26,4,2,1,69,92,55,13,78,74,72,73,48]
[0177]
子代:[31,54,40,46,41,76,53,16,9,14,12,23,52,79,80,42,24,7,15,10,11,30,36,34,81,82,20,32,33,77,39,83,5,3,67,71,70,37,6,68,84,85,57,65,63,62,61,60,47,86,87,17,18,8,27,58,59,64,66,88,43,25,35,38,22,21,75,89,56,44,45,51,50,49,90,91,19,29,28,26,4,2,1,69,92,55,13,78,74,72,73,48]
[0178]
第九步,局部搜索操作;
[0179]
给定如下父代配送方案:
[0180]
父代配送方案:[31,54,40,46,41,76,53,16,9,14,12,23,52,79,80,42,24,7,15,10,11,30,36,34,81,82,20,32,33,77,39,83,5,3,67,71,70,37,6,68,84,85,57,65,63,62,61,60,47,86,87,17,18,8,27,58,59,64,66,88,43,25,35,38,22,21,75,89,56,44,45,51,50,49,90,91,19,29,28,26,4,2,1,69,92,55,13,78,74,72,73,48]
[0181]
有78个避难所,则需要删除掉15个避难所的位置(s/5的结果不为整数时对其进行取整),随机删除的避难所为如下加粗数字:
[0182]
父代配送方案:
[0183]
删除之后配送方案为:[31,54,46,41,53,16,9,14,12,52,79,80,24,7,10,11,30,36,34,81,82,32,33,77,39,83,5,3,67,71,37,6,68,84,85,57,63,62,61,47,86,87,17,8,27,58,59,66,88,43,35,38,22,21,75,89,56,44,45,50,49,90,91,19,29,28,4,2,1,69,92,55,13,74,72,73,48]
[0184]
将删除的避难所节点计算适应度函数值,并根据选择适应度函数值更高的避难所节点和位置再插入进去生成的完整的配送方案:
[0185]
[31,54,42,46,41,26,53,16,9,14,12,18,52,79,80,40,24,7,25,10,11,30,36,34,81,82,60,32,33,77,39,83,5,3,67,71,70,37,6,68,84,85,57,65,63,62,61,20,47,86,87,17,23,8,27,58,59,78,66,88,43,15,35,38,22,21,75,89,56,44,45,51,50,49,90,91,19,29,28,76,4,2,1,69,92,55,13,64,74,72,73,48]
[0186]
第十步,保存最优配送方案;
[0187]
100次遗传算法迭代完成之后,将从种群中选择适应度函数值最高的配送方案,此配送方案即为该两阶段算法求解的最优配送方案。
[0188]
综合两阶段算法,综合以上的举例,本实施例运行算法计算最终耗时310秒,最后求解最优配送方案如图4所示,具体配送路线为:
[0189]
配送路线1:0-》35-》27-》29-》28-》26-》34-》0
[0190]
配送路线2:0-》20-》32-》25-》31-》19-》15-》11-》9-》39-》0
[0191]
配送路线3:0-》24-》33-》8-》10-》72-》23-》36-》22-》2-》69-》0
[0192]
配送路线4:0-》13-》55-》17-》18-》54-》53-》46-》45-》0
[0193]
配送路线5:0-》42-》41-》40-》77-》51-》50-》49-》47-》0
[0194]
配送路线6:0-》57-》56-》58-》60-》61-》59-》0
[0195]
配送路线7:0-》65-》63-》62-》64-》66-》0
[0196]
配送路线8:0-》43-》78-》7-》76-》74-》73-》48-》75-》0
[0197]
配送路线9:0-》44-》30-》16-》14-》12-》52-》21-》0
[0198]
配送路线10:0-》5-》3-》37-》38-》6-》0
[0199]
配送路线11:0-》67-》71-》70-》68-》4-》1-》0
[0200]
可以看到算法计算得出需要11辆电动汽车配送电能,满足配送中心的要求。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献