车辆订单分配方法、装置、电子设备和存储介质与流程
未命名
09-23
阅读:57
评论:0
1.本公开涉及车辆数据处理技术领域,尤其涉及一种车辆订单分配方法、装置、电子设备和存储介质。
背景技术:
2.随着启发式算法的发展,目前对车辆使用的大批量需求订单,可以通过系统智能分配的方式实现对这些非即时订单的分配。
3.现有技术中,通常直接查看数据库中某车是否有插入订单的时间空隙,通过贪心算法在检查数据库后直接返回结果。然而,返回的结果可能只是当前的贪心结果,导致后续订单失败。
4.并且,现有技术通常需要人工检查车辆是否有足够电量完成订单,若不能满足,人工添加充电任务,然而,这种方式会大幅度增加调度员的工作,且人工添加的充电任务不是优化结果。
技术实现要素:
5.为了解决上述技术问题或者至少部分地解决上述技术问题,本公开实施例提供了一种车辆订单分配方法、装置、电子设备和存储介质,解决现有技术中订单失败率高、调度员工作量大以及最终返回非优化结果的问题。
6.第一方面,本公开实施例提供了一种车辆订单分配方法,该方法包括:
7.获取订单列表以及车辆列表,基于所述订单列表以及所述车辆列表生成包含多个初始个体的初始种群,其中,所述初始个体中的每一行描述所述车辆列表中一个车辆初始分配的各订单以及初始插入的各充电任务;
8.基于第一优化目标、第二优化目标、电量约束以及时间窗约束,对所述初始种群迭代进行交叉、变异、修复和选择,得到包含多个末代个体的末代种群,其中,所述第一优化目标以最小化分配失败订单数量为目标,所述第二优化目标以最小化充电任务数量为目标;
9.根据各所述末代个体的分配失败订单数量在各所述末代个体中确定最终决策个体,得到所述车辆列表中每个车辆最终分配的各订单以及最终插入的各充电任务。
10.第二方面,本公开实施例还提供了一种车辆订单分配装置,该装置包括:
11.获取模块,用于获取订单列表以及车辆列表,基于所述订单列表以及所述车辆列表生成包含多个初始个体的初始种群,其中,所述初始个体中的每一行描述所述车辆列表中一个车辆初始分配的各订单以及初始插入的各充电任务;
12.迭代模块,用于基于第一优化目标、第二优化目标、电量约束以及时间窗约束,对所述初始种群迭代进行交叉、变异、修复和选择,得到包含多个末代个体的末代种群,其中,所述第一优化目标以最小化分配失败订单数量为目标,所述第二优化目标以最小化充电任务数量为目标;
13.决策模块,用于根据各所述末代个体的分配失败订单数量在各所述末代个体中确
定最终决策个体,得到所述车辆列表中每个车辆最终分配的各订单以及最终插入的各充电任务。
14.第三方面,本公开实施例还提供了一种电子设备,所述电子设备包括:一个或多个处理器;存储装置,用于存储一个或多个程序;当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如上所述的车辆订单分配方法。
15.第四方面,本公开实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上所述的车辆订单分配方法。
16.本公开实施例提供的一种车辆订单分配方法,通过获取到的订单列表以及车辆列表,生成包含多个初始个体的初始种群,进而通过以最小化分配失败订单数量为目标的第一优化目标、以最小化充电任务数量为目标的第二优化目标以及电量约束和时间窗约束,对初始种群迭代进行交叉、变异、修复和选择,得到包含多个末代个体的末代种群,从而根据各末代个体的分配失败订单数量从中确定最终决策个体,得到车辆列表中每个车辆最终分配的各订单以及最终插入的各充电任务,实现了对各车辆的订单分配,该方法通过两个优化目标、电量约束以及时间窗约束进行迭代,可以实现结合车辆电量动态安排充电任务,并实现订单的合理分配,充分利用有限的车辆资源,节省人力,使得订单安排率高,解决现有技术中订单失败率高、调度员工作量大以及最终返回非优化结果的问题。
附图说明
17.结合附图并参考以下具体实施方式,本公开各实施例的上述和其他特征、优点及方面将变得更加明显。贯穿附图中,相同或相似的附图标记表示相同或相似的元素。应当理解附图是示意性的,原件和元素不一定按照比例绘制。
18.图1为本公开实施例中的一种车辆订单分配方法的流程图;
19.图2为本公开实施例提供的一种分配示意图;
20.图3为本公开实施例提供的一种初始化订单的过程示意图;
21.图4为本公开实施例提供的一种初始化充电任务的过程示意图;
22.图5为本公开实施例提供的一种双体列交叉示意图;
23.图6为本公开实施例提供的一种双体行交叉示意图;
24.图7为本公开实施例提供的一种单体交叉示意图;
25.图8为本公开实施例提供的一种时间窗约束的修复示意图;
26.图9为本公开实施例提供的一种电量约束的修复示意图;
27.图10为本公开实施例提供的一种多个充电任务的插入示意图;
28.图11为本公开实施例提供的一种非支配排序结果示意图;
29.图12为本公开实施例提供的一种车辆订单分配的过程示意图;
30.图13为本公开实施例中的一种车辆订单分配装置的结构示意图;
31.图14为本公开实施例中的一种电子设备的结构示意图。
具体实施方式
32.下面将参照附图更详细地描述本公开的实施例。虽然附图中显示了本公开的某些实施例,然而应当理解的是,本公开可以通过各种形式来实现,而且不应该被解释为限于这
里阐述的实施例,相反提供这些实施例是为了更加透彻和完整地理解本公开。应当理解的是,本公开的附图及实施例仅用于示例性作用,并非用于限制本公开的保护范围。
33.需要注意,本公开中提及的“第一”、“第二”等概念仅用于对不同的装置、模块或单元进行区分,并非用于限定这些装置、模块或单元所执行的功能的顺序或者相互依存关系。
34.本公开实施方式中的多个装置之间所交互的消息或者信息的名称仅用于说明性的目的,而并不是用于对这些消息或信息的范围进行限制。
35.图1为本公开实施例中的一种车辆订单分配方法的流程图。本公开实施例提供的方法可以适用于为多个车辆使用订单或车辆送货订单预分配车辆的情况。该方法可以由车辆订单分配装置执行,该装置可以采用软件和/或硬件的方式实现,该装置可配置于电子设备中。
36.如图1所示,该方法具体可以包括如下步骤:
37.s110、获取订单列表以及车辆列表,基于订单列表以及车辆列表生成包含多个初始个体的初始种群,其中,初始个体中的每一行描述车辆列表中一个车辆初始分配的各订单以及初始插入的各充电任务。
38.其中,订单列表可以由多个待分配的订单组成,如,车辆使用订单、车辆送货订单等。车辆列表可以由多个待分配的车辆组成,如,自动导向车、铰接式车辆、新能源车辆等。示例性的,可以获取订单开始时间位于当前时刻之后的各个订单,或订单时间范围包括当前时刻的各个订单,得到订单列表;并且,可以获取当前时刻实际电量大于预设电量下限的各个车辆,得到车辆列表。
39.在本实施例中,可以间隔设定周期获取订单列表以及车辆列表,以实现周期性的订单分配;或者,可以在检测到有新订单生成、旧订单撤销或旧订单修改时,获取订单列表以及车辆列表。
40.示例性的,表1展示了一种车辆列表中的车辆的属性,表2展示了一种订单列表中订单的属性。如表1所示,在本实施例提供的车辆订单分配方法中,可以使用到的车辆属性包括车辆唯一标识、车辆的初始电量、预设电量下限以及车辆的不可用时间段,其中,每个车可以具备一个或多个不可用时间段。如表2所示,可以使用到的订单属性包括订单开始时间、订单结束时间、订单状态、算法附加参数(分配状态、耗电量)。
41.表1一种车辆列表中的车辆的属性
[0042][0043]
表2一种订单列表中订单的属性
[0044][0045]
具体的,在得到订单列表以及车辆列表之后,可以根据订单列表以及车辆列表生成多个初始个体,构成初始种群。
[0046]
示例性的,订单列表可以表示为:
[0047]
tasklist={ti|i∈{1,2,
…
,m}};
[0048]
其中,ti表示第i个订单,m为订单列表中订单的数量。车辆列表可以表示为:
[0049]
vehiclelist={vj|j∈{1,2,
…
,n}};
[0050]
其中,vj表示第j个车辆,n为车辆列表中车辆的数量。进一步的,在初始个体中,一个车辆可以以编码的形式表示,如下式所示:
[0051]
v=《c,t,c,t,
…
c,t》;
[0052]
其中,c为充电任务,若在两个订单之间不需要插入充电任务,则可以用空充电任务(时长为0,充电量为0)替代占位。示例性的,一个初始个体的编码可以参见如下形式:
[0053][0054]
其中,初始个体并非矩阵,每一行代表一个车辆的分配情况,即一个车辆初始分配的各订单以及初始插入的各充电任务。充电任务c包括非空白充电任务和空充电任务(占位任务)。在每一行si=[c,t,c,t,
…
,c,t]中,订单之间是按照订单开始时间升序排列的,若一行包括两个任务《s
i,j
,s
i,k
》,j《k,则有s
i,j
.start
time
≤s
i,k
.start_time,即在一行中,前面订单的订单开始时间先于后面订单的订单开始时间。需要说明的是,每个车辆所分配的订单的数量可以不同,因此,初始个体中每一行的长度可以不同。
[0055]
示例性的,如图2所示,图2为本公开实施例提供的一种分配示意图,其中,每一个车辆所分配的订单按照时间先后顺序排列,且订单与订单之间、订单与充电任务之间、订单与不可用时间段、充电任务与不可用时间段不重叠。
[0056]
在一种具体的实施方式中,基于订单列表以及车辆列表生成包含多个初始个体的初始种群,包括如下步骤:
[0057]
步骤1、迭代执行以下操作,直至生成的初始个体的数量达到预设数量:
[0058]
步骤2、按照时间升序的顺序对订单列表中的各订单进行排序,针对排序后的订单列表中的每一个订单,将订单随机分配给车辆列表中的车辆,并判断订单分配后是否满足时间窗约束,若否,则取消将订单分配给车辆,返回将订单随机分配给车辆列表中的车辆的操作,直至订单分配后满足时间窗约束或分配到所有车辆后均不满足时间窗约束,得到车辆列表中每个车辆初始分配的各订单;
[0059]
步骤3、针对每一个车辆的初始分配的各订单,依次判断每个订单是否满足电量约束,若否,则检查在不满足电量约束的订单之前插入充电任务是否满足时间窗约束,若满足,则插入充电任务并更新车辆的电量,若不满足,则将订单标记为分配失败订单,得到车辆列表中每个车辆初始插入的各充电任务;
[0060]
步骤4、基于每个车辆初始分配的各订单以及每个车辆初始插入的各充电任务确定初始个体。
[0061]
在本实施例中,可以重复执行上述步骤2-步骤4,每一次执行均可生成一个初始个体。其中,步骤2可以理解为订单初始化过程,具体的,可以先按照时间升序的顺序订单列表中所有订单进行排序,进而将排序后的订单依次随机分配给各车辆,进而检查订单分配后是否满足时间窗约束,如果不满足,则取消该订单的分配并将该订单重新分配给其它车辆,直至满足时间窗约束,或者,直至分配到最后一个车辆时仍然不满足时间窗约束,则将该订单分配给最后一个车辆。
[0062]
示例性的,如图3所示,图3为本公开实施例提供的一种初始化订单的过程示意图。由图3可以看出,在将各个订单按照时间先后顺序排列后,可以依次分配给各个车辆。
[0063]
进一步的,可以进行初始化充电任务,即上述步骤3。具体的,可以针对每一个车辆的初始分配的各订单,一次判断是否满足电量约束,如果不满足,则判断是否能够在不满足电量约束的订单之前插入充电任务,即插入充电任务是否满足时间窗约束,如果插入充电任务满足时间窗约束,则插入充电任务并更新车辆的电量,否则,将该订单标记为分配失败订单。
[0064]
示例性的,如图4所示,图4为本公开实施例提供的一种初始化充电任务的过程示意图。由图4可以看出,其中,为车辆v2分配的订单t5不满足电量约束,可以从t5开始回溯,判断t5之前是否有足够的时间窗插入充电任务,若可以插入充电任务,则更新v2的电量,继续判断下一个订单是否满足电量约束,直至所有车辆的所有订单检查完成。
[0065]
在一种示例中,时间窗约束为相邻的两个订单之间或相邻的订单与充电任务之间的时间窗不重叠,且,各订单或各充电任务的时间窗与对应的车辆的不可用时间段不重叠;电量约束为车辆执行订单后的电量大于预设电量下限。
[0066]
其中,时间窗约束可以用于约束同一车辆的相邻的两个订单、或相邻的订单与充电任务之间的时间窗不重叠,并且,还可以用于约束订单或充电任务的时间窗不占用车辆的不可用时间段。示例性的,时间窗约束可以用如下公式表示:
[0067][0068][0069]sv,i.
assign=true;
[0070][0071]
式中,s
v,i.
start_time、s
v,i.
end_time为第v个车辆分配的第i个订单的订单开始时间、订单结束时间,s
v,j.
start
time
、s
v,j.
end
time
为第v个车辆分配的第j个订单的订单开始时间、订单结束时间,not_work_timev为第v个车辆的不可用时间段,s
v,i.
assign为车辆的分配状态,|sv|表示第v个车辆分配的所有订单。
[0072]
电量约束可以用于约束车辆电量减去订单的耗电量大于预设电量下限。示例性
的,电量约束可以用如下公式表示:
[0073]
v.soc-s
v,i.
soc≥low_soc,v;
[0074]
v,soc-=s
v,i-1.
soc;
[0075]sv,i-1.
assign=true;
[0076]
式中,v.soc为车辆电量,s
v,i.
soc为第i个订单的耗电量,low_soc,v为第v个车辆的预设电量下限,如0.1。通过上述时间窗约束和电量约束,可以避免为同一车辆分配的订单之间相互重叠,也可以避免订单占用车辆的不可用时间段,并且,还可以保证车辆有足够的电量执行各个订单。
[0077]
进一步的,在完成初始化订单以及初始化充电任务后,根据上述步骤4,可以直接得到初始个体,或者,可以先构建初始个体,再对初始个体进行修复,以进一步保证初始个体可以满足电量约束和时间窗约束。
[0078]
在一种示例中,基于每个车辆初始分配的各订单以及每个车辆初始插入的各充电任务确定初始个体,包括:针对每一个车辆,将车辆初始分配的各订单以及每个车辆初始插入的各充电任务作为一行,构建初始个体;基于电量约束以及时间窗约束对初始个体进行修复,以更新初始个体。
[0079]
即,对于每一个车辆,可以将车辆初始分配的各订单以及初始插入的各充电任务,作为该车辆对应的行,进而将所有车辆对应的行作为初始个体;进一步的,可以通过电量约束以及时间窗约束修复初始个体,以使初始个体中各个订单尽量满足电量约束以及时间窗约束,其中对初始个体的修复过程可参考下述交叉变异后的修复步骤。
[0080]
在上述示例中,通过修复初始个体,可以进一步使初始个体尽量满足电量约束以及时间窗约束,减少分配失败订单的数量,达到合理化分配订单的目的。
[0081]
通过上述步骤1-步骤4,可以实现对初始种群的生成,并使得初始种群中各初始个体尽量满足电量约束以及时间窗约束,实现结合车辆电量动态安排充电任务,并实现订单的合理分配。
[0082]
s120、基于第一优化目标、第二优化目标、电量约束以及时间窗约束,对初始种群迭代进行交叉、变异、修复和选择,得到包含多个末代个体的末代种群,其中,第一优化目标以最小化分配失败订单数量为目标,第二优化目标以最小化充电任务数量为目标。
[0083]
在本实施例中,第一优化目标可以用如下公式表示:
[0084][0085]
式中,s
v,i.assign
为第v个车辆的第i个订单的分配状态,当该订单为分配失败订单时,s
v,i.assign
=false,值为0,n为车辆列表中车辆的数量,tasklist为订单列表。
[0086]
第二优化目标可以用如下公式表示:
[0087][0088]
式中,s
v,i
为第v个车辆的第i个任务(订单或充电任务),chargingtask表示充电任务,上述公式的含义为:若判断出s
v,i
为充电任务,则上述公式加一,目标为使最后累加后的数值最小。
[0089]
需要说明的是,本实施例提供的车辆订单分配方法可以不局限于上述第一优化目标和第二优化目标,还可以根据实际需求设置其它优化目标,如订单对应的接单位置与车
辆之间的距离最小化等。
[0090]
在本实施例中,可以通过两个优化目标以及两个约束,对初始种群进行交叉、变异、修复和选择,得到新的初始种群,进而再对新的初始种群进行交叉、变异、修复和选择,重复上述步骤直到满足迭代停止条件,将最后一次生成的新的初始种群作为末代种群。
[0091]
在一种具体的实施方式中,基于第一优化目标、第二优化目标、电量约束以及时间窗约束,对初始种群迭代进行交叉、变异、修复和选择,得到包含多个末代个体的末代种群,包括:
[0092]
对初始种群中的各初始个体进行交叉和变异,得到各当前个体,基于电量约束以及时间窗约束对各当前个体进行修复,以更新各当前个体;基于第一优化目标和第二优化目标对各当前个体进行选择,将选择的各当前个体作为新的初始个体,构建新的初始种群,并返回执行对初始种群中的各初始个体进行交叉和变异的操作,直至满足迭代停止条件,得到末代种群。
[0093]
其中,迭代停止条件可以是迭代次数达到设定次数,或者,迭代时间达到设定时间,示例性的,可以根据车辆列表中车辆的数量或订单列表中订单的数量确定初始个体的数量,进而根据初始个体的数量确定设定次数或设定时间。
[0094]
具体的,可以随机从初始种群中选择初始个体进行交叉和变异,得到当前个体,进而通过电量约束以及时间窗约束对当前个体进行修复,以使当前个体中各车辆的订单尽量满足电量约束以及时间窗约束,进一步的,通过第一优化目标和第二优化目标在当前个体中选择新的初始个体构建新的初始种群,进而重复上述操作直至满足迭代停止条件。通过上述方式,可以不断迭代直至生成末代种群,避免了陷入局部最优解的情况,进一步保证了订单分配的合理性。
[0095]
针对其中对初始个体的交叉过程,可选的,对初始种群中的各初始个体进行交叉,包括下述中的至少一种:
[0096]
针对初始种群中的任意两个初始个体,在订单列表中随机确定交换订单范围,并在两个初始个体中定位出位于交换订单范围内的所有列,将两个初始个体中定位出的所有列进行交换;
[0097]
针对初始种群中的任意两个初始个体,将其中一个初始个体中的至少一行与另一个初始个体中的至少一行进行交换;
[0098]
针对初始种群中的任意一个初始个体,对初始个体中的任意两行进行交换;
[0099]
针对初始种群中的任意一个初始个体,在初始个体中随机选择任意两行,对任意两行中的至少一个随机片段进行交换。
[0100]
具体的,对各初始个体进行交叉可以包括双体列交叉、双体行交叉、混合交叉、单体行交叉、单体片段交叉以及单体点交叉中的至少一种。
[0101]
其中,双体列交叉可以是交换两个初始个体中的至少一列。具体的,可以先在订单列表中随机确定交换订单范围,即待交换的至少一列,进而在两个初始个体中查找到处于交换订单范围内的所有列,将两个初始个体中查找出的列进行交换,得到两个新的初始个体。示例性的,图5为本公开实施例提供的一种双体列交叉示意图,如图5所示,交换订单范围为t2~t3,因此,可以将两个初始个体中位于t2~t3内的所有列互换。
[0102]
其中,双体行交叉可以是交换两个初始个体中的至少一行,即交换两个初始个体
中整车的订单和充电任务。具体的,可以将一个初始个体中的至少一行与另一个初始个体中的(相同行号的)至少一行进行交换。示例性的,图6为本公开实施例提供的一种双体行交叉示意图,如图6所示,将一个初始个体中的v1与另一个初始个体中的v1的订单和充电任务交换。考虑到在进行双体行交叉后可能存在多个车辆被分配相同订单的情况,或存在未被分配的订单的情况,因此,还可以在进行双体行交叉后,对交换后的新的初始个体进行检查,若其中存在重复的订单,则可以进行去重处理,若其中存在未分配的订单,则可以随机对该订单进行分配。
[0103]
其中,混合交叉可以理解为双体行交叉和双体列交叉的扩展交叉方式,具体的,混合交叉可以是交换两个初始个体中的部分行和部分列组成的片段,例如,可以将一个初始个体中部分片段与另一个初始个体中的(行号列号相同的)部分片段交换。
[0104]
其中,单体行交叉可以是交换一个初始个体中不同车辆的订单和充电任务。具体的,可以对初始个体中的任意两行进行交换。示例性的,图7为本公开实施例提供的一种单体交叉示意图,如图7所示,图7左边展示了将初始个体中的v1与v2的订单和充电任务进行交换。
[0105]
其中,单体片段交叉可以是交换一个初始个体中两个车辆的至少一列。具体的,可以对初始个体的其中一行中的至少一个随机片段与另外一行中的(相同位置处的)至少一个随机片段进行交换。示例性的,参见图7,图7右边展示了v1的t1与v2交换,v2的t3与v1交换。单体点交叉可以理解为单体片段交叉的特殊情况,即交换一个初始个体中任意两行中一个订单的情况。
[0106]
通过上述交叉方式,实现了对新个体的构建,尽可能扩大新的个体与前代个体之间的差异,进而避免了陷入局部最优解的情况。
[0107]
针对其中对初始个体的变异过程,可选的,对初始种群中的各初始个体进行变异,包括下述中的至少一种:
[0108]
在初始个体中随机选择一个车辆的一个订单,重新为订单随机分配其它车辆;
[0109]
在初始个体中随机选择一个车辆的一个充电任务,重新将充电任务随机插入至其它车辆;
[0110]
在初始个体中随机选择一个车辆的一个订单以及相邻的充电任务,重新为订单以及相邻的充电任务随机分配其它车辆。
[0111]
其中,对各初始个体进行变异可以包括变异订单、变异充电任务、变异订单及充电任务中的至少一种。具体的,变异订单可以是随机将一个车辆的一个订单重新随机分配给一个车辆,变异充电任务可以是随机将一个车辆的一个充电任务随机插入至其它车辆,变异订单及充电任务可以是随机选择一个车辆的一个订单以及相邻的充电任务,将其随机给其它车辆。通过上述变异方式,可以实现对新个体的构建,尽可能扩大新生成的个体与前代个体之间的差异,进而避免了陷入局部最优解的情况。
[0112]
在通过交叉和变异得到各个当前个体后,考虑到交叉和变异操作可能使新生成的当前个体不符合电量约束和时间窗约束,因此,还可以在交叉和变异之后,对新生成的当前个体进行修复。
[0113]
在一种示例中,基于电量约束以及时间窗约束对各当前个体进行修复,包括:针对各当前个体中的每一行,依次判断其中各订单或充电任务是否满足时间窗约束,若不满足,
则对不满足时间窗约束的订单或充电任务进行重新分配,以修复当前个体;针对当前个体中的每一行,依次判断其中各订单是否满足电量约束,若不满足,则在不满足电量约束的订单之前插入充电任务或将订单标记为分配失败订单,以修复当前个体。
[0114]
具体的,对当前个体进行修复可以分为:先修复时间窗约束,再修复电量约束。其中,对时间窗约束进行修复可以是:将不满足时间窗约束的订单或充电任务重新进行分配。示例性的,图8为本公开实施例提供的一种时间窗约束的修复示意图,如图8所示,v1中t1与t2不符合时间窗约束,v2中的t3、t4、t5不符合时间窗约束,因此,可以将t2重新分配给v2,可以将t4重新分配给v1。
[0115]
其中,对电量约束进行修复可以是:在不满足电量约束的订单之前插入充电任务,或将不满足电量约束的订单标记为分配失败订单。
[0116]
可选的,在不满足电量约束的订单之前插入充电任务或将订单标记为分配失败订单,包括:判断在不满足电量约束的订单之前插入至少一个充电任务,订单以及订单之前的所有订单和充电任务是否满足时间窗约束,以及,订单是否满足电量约束,若均满足,则在订单之前插入至少一个充电任务,并更新车辆的电量,否则,将订单标记为分配失败订单。
[0117]
具体的,针对不满足电量约束的订单,可以判断在订单之前插入至少一个充电任务该订单以及之前的订单、充电任务是否满足时间窗约束,即是否有足够的时间窗插入至少一个充电任务,并且,判断插入充电任务该订单是否满足电量约束,即插入充电任务是否能使车辆执行该订单的电量大于预设电量下限。
[0118]
如果插入至少一个充电任务可以满足时间窗约束以及电量约束,则可以插入至少一个充电任务,并更新车辆的电量,如果插入至少一个充电任务不满足时间窗约束或电量约束,则将该订单标记为分配失败订单。通过该方式,可以实现对不满足电量约束的订单的电量约束的修复,使得当前个体尽量满足电量约束,达到结合车辆电量合理分配订单的目的。
[0119]
在一种可选的实施方式中,在将订单标记为分配失败订单之后,还包括:判断在分配失败订单之后是否存在不满足电量约束的订单,若是,则在分配失败订单对应的时间窗上插入充电任务,并更新车辆的电量。
[0120]
即,如果将不满足电量约束的订单标记为分配失败订单,则可以在检查到该分配失败订单之后存在不满足电量约束的订单时,在该分配失败订单对应的时间窗上插入充电任务,即用充电任务替代该分配失败订单。通过该方式,可以合理利用分配失败订单的时间窗,减少分配失败订单的数量。
[0121]
示例性的,图9为本公开实施例提供的一种电量约束的修复示意图。如图9所示,其中第一行表示检测到t4不符合电量约束,在t4前插入充电任务成功;其中第二行表示检测到t4不符合电量约束,向前回溯插入充电任务失败,t4标记为分配失败订单;其中第三行表示检测到t4不符合电量约束,向前回溯,在t2之前插入充电任务满足时间窗约束,然而插入充电任务无法使t4满足电量约束,因此,将t4标记为分配失败订单,检测到t5不符合电量约束,可以在t4对应的时间窗上插入充电任务使t5满足电量约束。
[0122]
在一种示例中,判断在不满足电量约束的订单之前插入至少一个充电任务,订单以及订单之前的所有订单和充电任务是否满足时间窗约束,包括:
[0123]
基于不满足电量约束的订单的预计消耗电量、车辆执行订单之前的当前电量以及
预设电量下限,确定单个充电任务的充电时长,判断在订单之前是否存在不小于充电时长的空闲时间窗;若否,则基于预计消耗电量、当前电量以及预设电量下限,确定多个充电任务分别对应的充电时长,判断在订单之前是否存在不小于各充电时长的各空闲时间窗,若否,则确定在订单之前插入至少一个充电任务不满足时间窗约束。
[0124]
具体的,针对不满足电量约束的订单,可以根据该订单的预计消耗电量、车辆执行订单之前的当前电量以及预设电量下限,确定车辆的预计充电量,进而根据预计充电量确定单个充电任务的充电时长,如果在订单之前存在大于该充电时长的空闲时间窗,则可以插入单个充电任务,否则,则根据预计充电量确定多个充电任务的充电时长,如果在该订单之前不存在大于各充电时长的各空闲时间窗,则确定插入至少一个充电任务不满足时间窗约束。通过该方式,可以实现单个充电任务或多个充电任务的插入,进一步减少分配失败订单的数量。
[0125]
示例性的,图10为本公开实施例提供的一种多个充电任务的插入示意图。如图10所示,v1的初始电量为0.8,v1分配的订单有t2、t3、t4,预设电量下限为0.1,t2、t3、t4的预计消耗电量为0.3、0.3、0.4,t4为不满足电量约束的订单,计算得到t4的预计充电量为(0.4+0.1)-(0.8-0.3-0.3)=0.3,因此,可以将0.3的预计充电量分为2个充电任务,如0.1和0.2,进而将0.1的充电任务插入至t2之前,将0.2的充电任务插入至t3与t4之间。
[0126]
进一步的,在对当前个体进行电量约束以及时间窗约束的修复后,可以在各个当前个体中选择部分当前个体作为新的初始个体,以构建新的初始种群,进而返回执行交叉、变异、修复和选择的步骤。
[0127]
示例性的,可以基于第一优化目标,在所有当前个体中选择分配失败订单数量最少的k个当前个体,作为新的初始个体,或者,可以基于第二优化目标,在所有当前个体选择充电任务数量最少的k个当前个体,作为新的初始个体。其中,k为初始种群中的初始个体的数量。
[0128]
在一种具体的实施方式中,基于第一优化目标和第二优化目标对各当前个体进行选择,包括:根据各当前个体的分配失败订单数量以及充电任务数量,对各当前个体进行非支配排序,得到非支配排序结果,其中,非支配排序结果包括与多个层级分别对应的非支配解集,每个非支配解集由互不支配的多个当前个体组成;优先从非支配排序结果中前层对应的非支配解集内选择多个当前个体,直至选择的当前个体的数量与初始个体的数量相同。
[0129]
具体的,可以根据每一个当前个体的分配失败订单数量以及充电任务数量,对所有当前个体进行非支配排序得到非支配排序结果,以通过多个层级描述各个当前个体,每个层级分别对应一个非支配解集,在同一层级对应的非支配解集中各个当前个体互不支配,前面层级对应的非支配解集支配后面层级对应的非支配解集,即前面层级对应的非支配解集中的当前个体由于后面层级对应的非支配解集中的当前个体。
[0130]
示例性的,图11为本公开实施例提供的一种非支配排序结果示意图。其中,f1和f2可以分别表示分配失败订单数量和充电任务数量,第一层为圆形的各个当前个体组成的非支配解集,第二层为三角形的各个当前个体组成的非支配解集,第三层为星形的各个当前个体组成的非支配解集,第二层被第一层支配,第三层被第二层支配。层级越接近坐标轴中心,表示其中当前个体的分配失败订单数量和充电任务数量越少,进而当前个体的质量越
优。
[0131]
具体的,可以先从第一层对应的非支配解集内选择多个当前个体,若选择的数量未达到初始个体的数量,则可以继续从第二层对应的非支配解集内选择多个当前个体,若选择的数量未达到初始个体的数量,则可以继续从第三层对应的非支配解集内选择多个当前个体,重复该过程直到选择的数量达到初始个体的数量。
[0132]
通过上述方式,可以实现基于第一优化目标和第二优化目标的个体选择,使得选择的个体的分配失败订单数量和充电任务数量尽量小,进而保证最终得到的末代种群的配失败订单数量和充电任务数量尽量小,实现订单的合理化分配以及充电任务的合理安排。
[0133]
s130、根据各末代个体的分配失败订单数量在各末代个体中确定最终决策个体,得到车辆列表中每个车辆最终分配的各订单以及最终插入的各充电任务。
[0134]
具体的,在得到末代种群后,可以以分配失败订单数量最少为目标,在末代个体中选择出最终决策个体,进而通过该最终决策个体实现对各订单的分配以及各车辆的充电任务的安排。
[0135]
或者,考虑到末代种群中包含了多个非支配层的末代个体,因此,可以从末代种群中选择第一层的末代个体构建决策解集,进而再从决策解集中选择一个个体作为最终决策个体。
[0136]
考虑到本实施例提供的方法实现的是对订单的预分配,在订单开始执行之前,可能存在订单被修改、被撤销或新增其它订单的情况,因此,为了尽可能避免在两次预匹配过程中为同一订单分配到不同车辆的情况,即尽量避免对未变动的订单的分配进行修改,还可以基于前一次预匹配的最终决策个体确定本次预匹配的最终决策个体。
[0137]
在一种示例中,本实施例提供的方法还包括:从数据库中获取最近一次更新的最终决策个体;
[0138]
相应的,根据各末代个体的分配失败订单数量在各末代个体中确定最终决策个体,包括:
[0139]
在末代种群中选择分配失败订单数量最少的n个末代个体,构成末代解集;确定末代解集中的各末代个体与最近一次更新的最终决策个体之间的相似度,在末代解集中选择与最近一次更新的最终决策个体之间相似度最高的m个末代个体,构成决策候选解集;从决策候选解集中随机选择一个末代个体作为最终决策个体,并基于选择的最终决策个体更新数据库中最近一次更新的最终决策个体。
[0140]
其中,数据库中最近一次更新的最终决策个体可以是前一次预匹配的最终决策个体。具体的,可以先从末代种群中选择分配失败订单数量最少的n个末代个体,得到末代解集,进而计算末代解集中各个体与最近一次更新的最终决策个体之间的相似度,选择其中相似度最高的m个末代个体,构成决策候选解集。
[0141]
进一步的,随机从决策候选解集中选择一个末代个体作为最终决策个体,并使用该最终决策个体写入数据库中,以更新数据库中最近一次更新的最终决策个体。
[0142]
通过上述方式,可以实现对避免在两次预匹配过程中为同一订单分配到不同车辆的情况,进而避免车辆更换订单以及在用户端更改展示的订单分配信息的情况。
[0143]
在上述实施方式中,对最终决策个体的选择策略包括基于分配失败订单数量的选择以及基于相似度的选择,需要说明的是,本实施例不对各选择策略的优先级进行限定,除
了上述先基于分配失败订单数量构建末代解集,再基于相似度选择最终决策个体的方式之外,还可以先基于相似度构建末代解集,再基于分配失败订单数量选择最终决策个体。并且,除了上述两个选择策略之外,还可以根据实际需求额外设置其它选择策略,如,订单对应的接单位置与车辆之间的距离等。
[0144]
示例性的,图12为本公开实施例提供的一种车辆订单分配的过程示意图。首先,可以先从数据库(如mysql)中获取最近一次更新的最终决策个体、车辆、车辆的不可用时间段、车辆的电量、处于预匹配时间范围内的订单,并获取外部输入订单,其中,外部输入订单可以是新增订单、删除的订单或修改的订单。
[0145]
进一步的,可以检查是否有订单跨越预匹配时间范围,若有,则设置车辆的不可用时间段截止到该订单的结束时间。进一步的,通过初始化订单以及初始化充电任务得到预设种群大小个初始个体,并对初始个体进行修复,构建初始种群。如果初始种群不是末代种群,即未满足迭代停止条件,则可以通过遗传算子或其它搜索算子对初始种群进行优化,得到新的初始种群,否则,则从中确定最终决策个体,进而将其写入至数据库中。
[0146]
本实施例提供的车辆订单分配方法,通过获取到的订单列表以及车辆列表,生成包含多个初始个体的初始种群,进而通过以最小化分配失败订单数量为目标的第一优化目标、以最小化充电任务数量为目标的第二优化目标以及电量约束和时间窗约束,对初始种群迭代进行交叉、变异、修复和选择,得到包含多个末代个体的末代种群,从而根据各末代个体的分配失败订单数量从中确定最终决策个体,得到车辆列表中每个车辆最终分配的各订单以及最终插入的各充电任务,实现了对各车辆的订单分配,该方法通过两个优化目标、电量约束以及时间窗约束进行迭代,可以实现结合车辆电量动态安排充电任务,并实现订单的合理分配,充分利用有限的车辆资源,节省人力,使得订单安排率高,解决现有技术中订单失败率高、调度员工作量大以及最终返回非优化结果的问题。
[0147]
图13为本公开实施例中的一种车辆订单分配装置的结构示意图。如图13所示:该装置包括:获取模块1310、迭代模块1320以及决策模块1330。
[0148]
获取模块1310,用于获取订单列表以及车辆列表,基于所述订单列表以及所述车辆列表生成包含多个初始个体的初始种群,其中,所述初始个体中的每一行描述所述车辆列表中一个车辆初始分配的各订单以及初始插入的各充电任务;
[0149]
迭代模块1320,用于基于第一优化目标、第二优化目标、电量约束以及时间窗约束,对所述初始种群迭代进行交叉、变异、修复和选择,得到包含多个末代个体的末代种群,其中,所述第一优化目标以最小化分配失败订单数量为目标,所述第二优化目标以最小化充电任务数量为目标;
[0150]
决策模块1330,用于根据各所述末代个体的分配失败订单数量在各所述末代个体中确定最终决策个体,得到所述车辆列表中每个车辆最终分配的各订单以及最终插入的各充电任务。
[0151]
可选的,所述时间窗约束为相邻的两个订单之间或相邻的订单与充电任务之间的时间窗不重叠,且,各订单或各充电任务的时间窗与对应的车辆的不可用时间段不重叠;所述电量约束为车辆执行订单后的电量大于预设电量下限。
[0152]
可选的,所述获取模块1310,还用于迭代执行以下操作,直至生成的初始个体的数量达到预设数量:
[0153]
按照时间升序的顺序对所述订单列表中的各订单进行排序,针对排序后的订单列表中的每一个订单,将所述订单随机分配给所述车辆列表中的车辆,并判断所述订单分配后是否满足所述时间窗约束,若否,则取消将所述订单分配给所述车辆,返回将所述订单随机分配给所述车辆列表中的车辆的操作,直至所述订单分配后满足所述时间窗约束或分配到所有车辆后均不满足所述时间窗约束,得到所述车辆列表中每个车辆初始分配的各订单;
[0154]
针对每一个车辆的初始分配的各订单,依次判断每个订单是否满足所述电量约束,若否,则检查在不满足所述电量约束的订单之前插入充电任务是否满足所述时间窗约束,若满足,则插入充电任务并更新车辆的电量,若不满足,则将所述订单标记为分配失败订单,得到所述车辆列表中每个车辆初始插入的各充电任务;
[0155]
基于每个车辆初始分配的各订单以及每个车辆初始插入的各充电任务确定初始个体。
[0156]
可选的,所述获取模块1310,还用于针对每一个车辆,将车辆初始分配的各订单以及每个车辆初始插入的各充电任务作为一行,构建初始个体;基于所述电量约束以及所述时间窗约束对所述初始个体进行修复,以更新所述初始个体。
[0157]
可选的,所述迭代模块1320包括修复单元以及迭代单元,其中:
[0158]
所述修复单元,用于对所述初始种群中的各初始个体进行交叉和变异,得到各当前个体,基于所述电量约束以及所述时间窗约束对各所述当前个体进行修复,以更新各所述当前个体;
[0159]
所述迭代单元,用于基于所述第一优化目标和所述第二优化目标对各所述当前个体进行选择,将选择的各当前个体作为新的初始个体,构建新的初始种群,并返回执行对所述初始种群中的各初始个体进行交叉和变异的操作,直至满足迭代停止条件,得到末代种群。
[0160]
可选的,所述修复单元,还用于执行下述操作中的至少一种:
[0161]
针对所述初始种群中的任意两个初始个体,在所述订单列表中随机确定交换订单范围,并在两个初始个体中定位出位于所述交换订单范围内的所有列,将两个初始个体中定位出的所有列进行交换;
[0162]
针对所述初始种群中的任意两个初始个体,将其中一个初始个体中的至少一行与另一个初始个体中的至少一行进行交换;
[0163]
针对所述初始种群中的任意一个初始个体,对所述初始个体中的任意两行进行交换;
[0164]
针对所述初始种群中的任意一个初始个体,在所述初始个体中随机选择任意两行,对任意两行中的至少一个随机片段进行交换。
[0165]
可选的,所述修复单元,还用于执行下述操作中的至少一种:
[0166]
在所述初始个体中随机选择一个车辆的一个订单,重新为所述订单随机分配其它车辆;
[0167]
在所述初始个体中随机选择一个车辆的一个充电任务,重新将所述充电任务随机插入至其它车辆;
[0168]
在所述初始个体中随机选择一个车辆的一个订单以及相邻的充电任务,重新为所
述订单以及相邻的充电任务随机分配其它车辆。
[0169]
可选的,所述修复单元,还用于针对各所述当前个体中的每一行,依次判断其中各订单或充电任务是否满足所述时间窗约束,若不满足,则对不满足所述时间窗约束的订单或充电任务进行重新分配,以修复所述当前个体;针对所述当前个体中的每一行,依次判断其中各订单是否满足所述电量约束,若不满足,则在不满足所述电量约束的订单之前插入充电任务或将所述订单标记为分配失败订单,以修复所述当前个体。
[0170]
可选的,所述修复单元,还用于判断在不满足所述电量约束的订单之前插入至少一个充电任务,所述订单以及所述订单之前的所有订单和充电任务是否满足所述时间窗约束,以及,所述订单是否满足所述电量约束,若均满足,则在所述订单之前插入至少一个充电任务,并更新所述车辆的电量,否则,将所述订单标记为分配失败订单。
[0171]
可选的,所述修复单元,还用于判断在所述分配失败订单之后是否存在不满足所述电量约束的订单,若是,则在所述分配失败订单对应的时间窗上插入充电任务,并更新所述车辆的电量。
[0172]
可选的,所述修复单元,还用于基于不满足所述电量约束的订单的预计消耗电量、车辆执行所述订单之前的当前电量以及所述预设电量下限,确定单个充电任务的充电时长,判断在所述订单之前是否存在不小于所述充电时长的空闲时间窗;若否,则基于所述预计消耗电量、所述当前电量以及所述预设电量下限,确定多个充电任务分别对应的充电时长,判断在所述订单之前是否存在不小于各所述充电时长的各空闲时间窗,若否,则确定在所述订单之前插入至少一个充电任务不满足所述时间窗约束。
[0173]
可选的,所述迭代单元,还用于根据各所述当前个体的分配失败订单数量以及充电任务数量,对各所述当前个体进行非支配排序,得到非支配排序结果,其中,所述非支配排序结果包括与多个层级分别对应的非支配解集,每个非支配解集由互不支配的多个当前个体组成;优先从非支配排序结果中前层对应的非支配解集内选择多个当前个体,直至选择的当前个体的数量与初始个体的数量相同。
[0174]
可选的,所述装置还包括读取模块,所述读取模块用于从数据库中获取最近一次更新的最终决策个体;相应的,所述决策模块1330,还用于在所述末代种群中选择分配失败订单数量最少的n个末代个体,构成末代解集;确定所述末代解集中的各末代个体与最近一次更新的最终决策个体之间的相似度,在所述末代解集中选择与最近一次更新的最终决策个体之间相似度最高的m个末代个体,构成决策候选解集;从所述决策候选解集中随机选择一个末代个体作为最终决策个体,并基于选择的最终决策个体更新数据库中最近一次更新的最终决策个体。
[0175]
本公开实施例提供的车辆订单分配装置,可执行本公开方法实施例所提供的车辆订单分配方法中的步骤,具备执行步骤和有益效果此处不再赘述。
[0176]
图14为本公开实施例中的一种电子设备的结构示意图。下面具体参考图14,其示出了适于用来实现本公开实施例中的电子设备500的结构示意图。图14示出的电子设备仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
[0177]
如图14所示,电子设备500可以包括处理装置(例如中央处理器、图形处理器等)501,其可以根据存储在只读存储器(rom)502中的程序或者从存储装置508加载到随机访问存储器(ram)503中的程序而执行各种适当的动作和处理以实现如本公开所述的实施例的
方法。在ram 503中,还存储有电子设备500操作所需的各种程序和数据。处理装置501、rom 502以及ram 503通过总线504彼此相连。输入/输出(i/o)接口505也连接至总线504。
[0178]
特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在非暂态计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码,从而实现如上所述的车辆订单分配方法。在这样的实施例中,该计算机程序可以通过通信装置509从网络上被下载和安装,或者从存储装置508被安装,或者从rom 502被安装。在该计算机程序被处理装置501执行时,执行本公开实施例的方法中限定的上述功能。
[0179]
需要说明的是,本公开上述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读信号介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:电线、光缆、rf(射频)等等,或者上述的任意合适的组合。
[0180]
上述计算机可读介质可以是上述电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该电子设备执行时,使得该电子设备执行本公开任一实施例提供的车辆订单分配方法。可选的,当上述一个或者多个程序被该电子设备执行时,该电子设备还可以执行上述实施例所述的其他步骤。
[0181]
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom或快闪存储器)、光纤、便捷式紧凑盘只读存储器(cd-rom)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
[0182]
以上描述仅为本公开的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本公开中所涉及的公开范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离上述公开构思的情况下,由上述技术特征或其等同特征进行
任意组合而形成的其它技术方案。例如上述特征与本公开中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。
技术特征:
1.一种车辆订单分配方法,其特征在于,所述方法包括:获取订单列表以及车辆列表,基于所述订单列表以及所述车辆列表生成包含多个初始个体的初始种群,其中,所述初始个体中的每一行描述所述车辆列表中一个车辆初始分配的各订单以及初始插入的各充电任务;基于第一优化目标、第二优化目标、电量约束以及时间窗约束,对所述初始种群迭代进行交叉、变异、修复和选择,得到包含多个末代个体的末代种群,其中,所述第一优化目标以最小化分配失败订单数量为目标,所述第二优化目标以最小化充电任务数量为目标;根据各所述末代个体的分配失败订单数量在各所述末代个体中确定最终决策个体,得到所述车辆列表中每个车辆最终分配的各订单以及最终插入的各充电任务。2.根据权利要求1所述的方法,其特征在于,所述时间窗约束为相邻的两个订单之间或相邻的订单与充电任务之间的时间窗不重叠,且,各订单或各充电任务的时间窗与对应的车辆的不可用时间段不重叠;所述电量约束为车辆执行订单后的电量大于预设电量下限。3.根据权利要求2所述的方法,其特征在于,所述基于所述订单列表以及所述车辆列表生成包含多个初始个体的初始种群,包括:迭代执行以下操作,直至生成的初始个体的数量达到预设数量:按照时间升序的顺序对所述订单列表中的各订单进行排序,针对排序后的订单列表中的每一个订单,将所述订单随机分配给所述车辆列表中的车辆,并判断所述订单分配后是否满足所述时间窗约束,若否,则取消将所述订单分配给所述车辆,返回将所述订单随机分配给所述车辆列表中的车辆的操作,直至所述订单分配后满足所述时间窗约束或分配到所有车辆后均不满足所述时间窗约束,得到所述车辆列表中每个车辆初始分配的各订单;针对每一个车辆的初始分配的各订单,依次判断每个订单是否满足所述电量约束,若否,则检查在不满足所述电量约束的订单之前插入充电任务是否满足所述时间窗约束,若满足,则插入充电任务并更新车辆的电量,若不满足,则将所述订单标记为分配失败订单,得到所述车辆列表中每个车辆初始插入的各充电任务;基于每个车辆初始分配的各订单以及每个车辆初始插入的各充电任务确定初始个体。4.根据权利要求3所述的方法,其特征在于,所述基于每个车辆初始分配的各订单以及每个车辆初始插入的各充电任务确定初始个体,包括:针对每一个车辆,将车辆初始分配的各订单以及每个车辆初始插入的各充电任务作为一行,构建初始个体;基于所述电量约束以及所述时间窗约束对所述初始个体进行修复,以更新所述初始个体。5.根据权利要求2所述的方法,其特征在于,所述基于第一优化目标、第二优化目标、电量约束以及时间窗约束,对所述初始种群迭代进行交叉、变异、修复和选择,得到包含多个末代个体的末代种群,包括:对所述初始种群中的各初始个体进行交叉和变异,得到各当前个体,基于所述电量约束以及所述时间窗约束对各所述当前个体进行修复,以更新各所述当前个体;基于所述第一优化目标和所述第二优化目标对各所述当前个体进行选择,将选择的各当前个体作为新的初始个体,构建新的初始种群,并返回执行对所述初始种群中的各初始个体进行交叉和变异的操作,直至满足迭代停止条件,得到末代种群。
6.根据权利要求5所述的方法,其特征在于,对所述初始种群中的各初始个体进行交叉,包括下述中的至少一种:针对所述初始种群中的任意两个初始个体,在所述订单列表中随机确定交换订单范围,并在两个初始个体中定位出位于所述交换订单范围内的所有列,将两个初始个体中定位出的所有列进行交换;针对所述初始种群中的任意两个初始个体,将其中一个初始个体中的至少一行与另一个初始个体中的至少一行进行交换;针对所述初始种群中的任意一个初始个体,对所述初始个体中的任意两行进行交换;针对所述初始种群中的任意一个初始个体,在所述初始个体中随机选择任意两行,对任意两行中的至少一个随机片段进行交换。7.根据权利要求5所述的方法,其特征在于,对所述初始种群中的各初始个体进行变异,包括下述中的至少一种:在所述初始个体中随机选择一个车辆的一个订单,重新为所述订单随机分配其它车辆;在所述初始个体中随机选择一个车辆的一个充电任务,重新将所述充电任务随机插入至其它车辆;在所述初始个体中随机选择一个车辆的一个订单以及相邻的充电任务,重新为所述订单以及相邻的充电任务随机分配其它车辆。8.一种车辆订单分配装置,其特征在于,包括:获取模块,用于获取订单列表以及车辆列表,基于所述订单列表以及所述车辆列表生成包含多个初始个体的初始种群,其中,所述初始个体中的每一行描述所述车辆列表中一个车辆初始分配的各订单以及初始插入的各充电任务;迭代模块,用于基于第一优化目标、第二优化目标、电量约束以及时间窗约束,对所述初始种群迭代进行交叉、变异、修复和选择,得到包含多个末代个体的末代种群,其中,所述第一优化目标以最小化分配失败订单数量为目标,所述第二优化目标以最小化充电任务数量为目标;决策模块,用于根据各所述末代个体的分配失败订单数量在各所述末代个体中确定最终决策个体,得到所述车辆列表中每个车辆最终分配的各订单以及最终插入的各充电任务。9.一种电子设备,其特征在于,所述电子设备包括:一个或多个处理器;存储装置,用于存储一个或多个程序;当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-7中任一项所述的方法。10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-7中任一项所述的方法。
技术总结
本公开实施例公开了一种车辆订单分配方法、装置、电子设备和存储介质,该方法通过获取到的订单列表以及车辆列表,生成包含多个初始个体的初始种群,进而通过以最小化分配失败订单数量为目标的第一优化目标、以最小化充电任务数量为目标的第二优化目标以及电量约束和时间窗约束,对初始种群迭代进行交叉、变异、修复和选择,得到包含多个末代个体的末代种群,从而根据各末代个体的分配失败订单数量从中确定最终决策个体,得到车辆列表中每个车辆最终分配的各订单以及最终插入的各充电任务,实现结合车辆电量动态安排充电任务,并实现订单的合理分配,充分利用有限的车辆资源,节省人力,使得订单安排率高。使得订单安排率高。使得订单安排率高。
技术研发人员:王康
受保护的技术使用者:驭势(上海)汽车科技有限公司
技术研发日:2023.06.30
技术公布日:2023/9/22
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
航空商城 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/
上一篇:一种自动售书机的制作方法 下一篇:一种安培力教学演示系统及装置