发明内容
本发明解决的一个技术问题是,在调度集合之间存在一一映射关系的前提下,如何快速高效的求得符合预设条件的调度组合,从而提高调度效率,节省调度成本。
根据本发明实施例的一个方面,提供了一种基于遗传算法的调度方法,其特征在于,包括:随机产生种群,种群中的个体代表各个调度集合之间的一一映射关系,个体的基因为调度集合中的元素;用二维数组对个体进行编码,二维数组的第二维度表示调度集合,二维数组的第一维度表示调度集合中的元素;计算种群中每个个体的适应度;选取种群中满足预设适应度条件的个体作为父本和母本进行交叉运算,在交叉运算过程中,将父本和母本第一维度相同且第二维度相邻的基因作为子代个体的部分基因,并由每个调度集合中除第一维度相同且第二维度相邻的基因之外的元素随机组成子代个体中该调度集合的其余基因;迭代地进行交叉运算以产生子代个体,直至种群满足预设条件。
在一些实施例中,该方法还包括:选取种群中的部分个体进行变异,在变异过程中,将变异个体属于同一调度集合的多个元素所对应的基因进行随机交换;迭代地进行变异运算以产生新的个体,直至种群满足预设条件。
在一些实施例中,选取种群中0.5%至1%的个体进行变异,在变异过程中,将变异个体30%至60%的基因进行随机交换。
在一些实施例中,计算种群中每个个体的适应度包括:根据个体所代表各个调度集合之间的一一映射关系中,各个调度集合的元素之间是否存在匹配关系,以及各个调度集合的元素之间的匹配成本,计算种群中每个个体的调度成本;根据种群中每个个体的调度成本的倒数计算种群中每个个体的适应度。
在一些实施例中,选取种群中满足预设适应度条件的个体作为父本和母本进行交叉运算包括:选取种群中适应度高于预设值的个体,并计算适应度高于预设值的个体所对应的总适应度;以适应度高于预设值的个体的适应度与总适应度的比值为概率,选择适应度高于预设值的个体作为父本和母本进行交叉运算。
在一些实施例中,种群满足预设条件包括以下条件中的至少一种:
(1)交叉运算的迭代次数高于预设值;
(2)变异的迭代次数高于预设值;
(3)种群中存在适应度函数值大于预设值的个体。
根据本发明实施例的另一个方面,提供了一种基于遗传算法的调度装置,其特征在于,包括:种群产生模块,用于随机产生种群,种群中的个体代表各个调度集合之间的一一映射关系,个体的基因为调度集合中的元素;个体编码模块,用于用二维数组对个体进行编码,二维数组的第二维度表示调度集合,二维数组的第一维度表示调度集合中的元素;适应度计算模块,用于计算种群中每个个体的适应度;交叉运算模块,用于选取种群中满足预设适应度条件的个体作为父本和母本进行交叉运算,在交叉运算过程中,将父本和母本第一维度相同且第二维度相邻的基因作为子代个体的部分基因,并由每个调度集合中除第一维度相同且第二维度相邻的基因之外的元素随机组成子代个体中该调度集合的其余基因;第一迭代运算模块,用于迭代地进行交叉运算以产生子代个体,直至种群满足预设条件。
在一些实施例中,该装置还包括:变异模块,用于选取种群中的部分个体进行变异,在变异过程中,将变异个体属于同一调度集合的多个元素所对应的基因进行随机交换;第二迭代运算模块,用于迭代地进行变异运算以产生新的个体,直至种群满足预设条件。
在一些实施例中,变异模块用于选取种群中0.5%至1%的个体进行变异,在变异过程中,将变异个体30%至60%的基因进行随机交换。
在一些实施例中,适应度计算模块包括:调度成本计算单元,用于根据个体所代表各个调度集合之间的一一映射关系中,各个调度集合的元素之间是否存在匹配关系,以及各个调度集合的元素之间的匹配成本,计算种群中每个个体的调度成本;适应度计算单元,用于根据种群中每个个体的调度成本的倒数计算种群中每个个体的适应度。
在一些实施例中,交叉运算模块包括:个体选取单元,用于选取种群中适应度高于预设值的个体;适应度计算单元,用于计算适应度高于预设值的个体所对应的总适应度;交叉运算单元,用于以适应度高于预设值的个体的适应度与总适应度的比值为概率,选择适应度高于预设值的个体作为父本和母本进行交叉运算。
在一些实施例中,种群满足预设条件包括以下条件中的至少一种:
(1)交叉运算的迭代次数高于预设值;
(2)变异的迭代次数高于预设值;
(3)种群中存在适应度函数值大于预设值的个体。
根据本发明实施例的又一个方面,提供了一种基于遗传算法的调度装置,包括:存储器;以及耦接至存储器的处理器,处理器被配置为基于存储在存储器中的指令,执行前述的基于遗传算法的调度方法。
根据本发明实施例的再一个方面,提供了一种计算机可读存储介质,计算机可读存储介质上存储有计算机指令,指令被处理器执行时实现前述的基于遗传算法的调度方法。
本发明在调度集合之间存在一一映射关系的前提下,采用二维数组的形式对个体进行编码,并基于编码二维数组对父本和母本进行交叉运算,能够快速高效的求得符合预设条件的调度组合,从而提高调度效率,节省调度成本。
通过以下参照附图对本发明的示例性实施例的详细描述,本发明的其它特征及其优点将会变得清楚。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本发明及其应用或使用的任何限制。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
本发明涉及的技术方案所基于的场景,是各个调度集合之间存在一一映射关系。例如,调度集合包括小车集合、托盘集合以及工位集合。存在以下约束条件:
(1)每个托盘至多被指派一辆小车;
(2)每辆车在调度组合中必须被指派一个托盘;
(3)保证托盘被指派车辆和托盘的同步性;
(4)每个工作台至多被指派一个托盘。
例如,小车集合、托盘集合以及工位集合中各存在3个元素。其中,由小车1将托盘1运送至工位1,由小车2将托盘2运送至工位2,由小车3将托盘3运送至工位。本领域普通技术人员应理解,在小车集合、托盘集合以及工位集合之间存在一一映射关系时,小车、托盘、工位的调度组合可以不局限于上述情况。
发明人对现有技术中遗传算法应用于该场景时调度效率较低的原因进行了深入分析。传统的遗传算法采用一维数组来表示一种调度组合,即个体{X11,X12,X13,X21,X22,X23,X31,X32,X33,Y11,Y12,Y13,Y21,Y22,Y23,Y31,Y32,Y33},一维数组中的每个元素都是该个体的基因。其中,基因Xij表示编号为i的小车搬运编号为j的托盘的关系是否存在,Xij取值0或1,0表示不存在1表示存在;基因Yjk表示编号为j的托盘到编号为k的工位的关系是否存在,Yjk取值0或1,0表示不存在1表示存在。那么,个体a={100010001100010001}表示由小车1将托盘1运送至工位1,由小车2将托盘2运送至工位2,由小车3将托盘3运送至工位。个体b={010100001010100001}表示由小车1将托盘2运送至工位1,由小车2将托盘1运送至工位2,由小车3将托盘3运送至工位。在选择个体a作为母本、个体b作为父本进行交叉运算时,如果将第4至第9号基因进行交叉互换,可能会随机产生子代个体c={010010001010100001}。子代个体中X12=1,X22=1,X33=1,Y12=1,Y21=1,Y33=1,表示由小车1将托盘2运送至工位1,由小车2将托盘2,没有小车将托盘1运送至工位2,由小车3将托盘3运送至工位3。这样的调度组合不满足业务一一映射的约束条件,属于遗传算法产生的无效解。因此,传统的遗传算法应用于本发明讨论的技术场景时产生无效解的概率极大,去掉这些无效解的过程会占用大量的时间成本,降低了调度效率。
基于以上技术分析,发明人对遗传算法进行了改进,应用于一一映射调度集合场景,以提高调度效率。下面结合图1描述本发明提供的基于遗传算法的调度方法的一个实施例。
图1示出本发明基于遗传算法的调度方法的一个实施例的流程示意图。如图1所示,该实施例的基于遗传算法的调度方法包括:
步骤S102,随机产生种群,种群中的个体代表各个调度集合之间的一一映射关系,个体的基因为调度集合中的元素。
例如,调度集合包括小车集合、托盘集合以及工位集合。其中,小车集合中存在4个小车元素,分别为小车1、小车2、小车3以及小车4;托盘集合中存在4个托盘元素,分别为托盘1、托盘2、托盘3以及托盘4;工位集合中存在4个小车元素,分别为工位1、工位2、工位3以及工位4。
表1
表1示出了种群中的个体A及个体B。其中,个体A表示的调度组合为:小车1将托盘1运送至工位1,小车2将托盘2运送至工位2,小车3将托盘3运送至工位3,小车4将托盘4运送至工位4。个体B表示的调度组合为:小车1将托盘2运送至工位1,小车2将托盘1运送至工位3,小车3将托盘3运送至工位2,小车4将托盘4运送至工位4。
步骤S104,用二维数组对个体进行编码,二维数组的第二维度表示调度集合,二维数组的第一维度表示调度集合中的元素。
例如,对个体A进行编码得到二维数组A={{1,1,1},{2,2,2},{3,3,3},{4,4,4}},即
A={{1,1,1},
{2,2,2},
{3,3,3},
{4,4,4}}
对个体进行编码得到二维数组B={{1,2,1},{2,1,3},{3,3,2},{4,4,4}},即
B={{1,2,1},
{2,1,3},
{3,3,2},
{4,4,4}}
步骤S106,计算种群中每个个体的适应度。
首先根据个体所代表各个调度集合之间的一一映射关系中,各个调度集合的元素之间是否存在匹配关系,以及各个调度集合的元素之间的匹配成本,计算种群中每个个体的调度成本;然后根据种群中每个个体的调度成本的倒数计算种群中每个个体的适应度。
例如,可以通过计算种群中每个个体的调度成本。其中,i表示小车集合中的小车编号,j表示托盘集合中的托盘编号,k表示工位集合中的工位编号,n表示小车集合、托盘集合以及工位集合中所含元素的数量,xij表示编号为i的小车搬运编号为j的托盘的关系是否存在,yjk表示编号为j的托盘到编号为k的工位的关系是否存在,Cij表示编号为i的小车搬运编号为j的托盘的成本,Fjk表示编号为j的托盘到编号为k的工位的成本。然后,通过调度成本的倒数作为适应度函数计算种群中每个个体的适应度:
步骤S108,选取种群中满足预设适应度条件的个体作为父本和母本进行交叉运算,在交叉运算过程中,将父本和母本第一维度相同且第二维度相邻的基因作为子代个体的部分基因,并由每个调度集合中除第一维度相同且第二维度相邻的基因之外的元素随机组成子代个体中该调度集合的其余基因。
仍以表1为例,参考其二维数组的编码形式,在选取个体A和个体B分别作为父本和母本进行交叉运算时,将第一维度相同且第二维度相邻的基因{{*,*,*},{*,*,*},{3,3,*},{4,4,4}},即
{{*,*,*},
{*,*,*},
{3,3,*},
{4,4,4}}
作为子代个体C的部分基因。个体C的其余基因通过如下方式组成:对于小车S集合,除小车3和小车4之外的元素是小车1和小车2,那么子代个体C位于小车集合的基因只能由1或者2随机组成;同理可以依次得到其它调度集合的基因。例如,子代个体C={{1,2,1},{2,1,2},{3,3,3},{4,4,4}},即
C={{1,2,1},
{2,1,2},
{3,3,3},
{4,4,4}}
所表示的调度组合为:小车1将S托盘2运送至工位1,小车2将托盘1运送至工位2,小车3将托盘3运送至工位3,小车4将托盘4运送至工位4。
步骤S110,迭代地进行交叉运算以产生子代个体,直至种群满足预设条件。
例如,当种群中存在适应度函数值大于预设值(例如1/100)的个体,或者交叉运算的迭代次数高于预设值(例如100次)时,停止迭代交叉运算。
上述实施例中,采用二维数组的形式对个体进行编码,能够更加直接地反映个体所代表的业务含义。更为重要的是,二维数组的编码形式配合本实施例特有的交叉运算,能够确保产生的子代个体所代表的调度组合满足调度集合之间的一一映射关系,从而提高了调度效率。在种群满足一定条件时结束迭代交叉运算,能够获得调度成本较低的调度组合,节省了调度成本。
优选的,在步骤S108中,可以采用轮盘赌算法选择父本和母本进行交叉运算。
在计算得到种群中所有个体的适应度之后,选取种群中适应度较高的5个个体,并计算这5个个体所对应的总适应度。然后,分别计算这5个个体的适应度与总适应度的比值,并以每个个体各自的比值为概率从这5个个体中选出父本和母本进行交叉运算。
从种群中选择适应度较高的父本和母本进行交叉运算,并保留父本和母本中第一维度相同且第二维度相邻的基因,可以进一步加快遗传算法的收敛速度,提高调度效率。原因是,适应度较高的父本和母本具有较高的概率拥有使得个体适应度较高的基因,直接将使得个体适应度较高的基因保留至子代个体,可以提高新产生的子代个体具有较高适应度的可能性,从而加快遗传算法的收敛速度。
下面结合图2描述本发明提供的基于遗传算法的调度方法的另一个实施例。
图2示出本发明基于遗传算法的调度方法的另一个实施例的流程示意图。如图2所示,本实施例的基于遗传算法的调度方法包括:
步骤S202,随机产生种群。具体实现过程可以参照步骤S102。
步骤S204,用二维数组对个体进行编码。具体实现过程可以参照步骤S104。
步骤S206,计算种群中每个个体的适应度。具体实现过程可以参照步骤S106。
步骤S212,选取种群中的部分个体进行变异,在变异过程中,将变异个体属于同一调度集合的多个元素所对应的基因进行随机交换。
其中,可以选取种群中0.5%至1%的个体进行变异,在变异过程中,将变异个体30%至60%的基因进行随机交换。个体的变异过程可以例如图3所示。将个体A={{1,1,1},{2,2,2},{3,3,3},{4,4,4}},即
A={{1,1,1},
{2,2,2},
{3,3,3},
{4,4,4}}
属于托盘集合的三个基因进行随机交换,产生新的个体D={{1,3,1},{2,1,2},{3,2,3},{4,4,4}},即
D={{1,3,1},
{2,1,2},
{3,2,3},
{4,4,4}}
步骤S214,迭代地进行变异运算以产生新的个体,直至种群满足预设条件。
例如,当种群中存在适应度函数值大于预设值(例如1/100)的个体,或者变异的迭代次数高于预设值(例如100次)时,停止迭代变异运算。
上述实施例中,二维数组的编码形式配合本实施例特有的变异运算,能够确保变异产生的个体所代表的调度组合满足调度集合之间的一一映射关系,避免了传统遗传算法变异过程会产生不符合业务场景的无效解的情况,从而进一步提高了调度效率。另一方面,传统遗传算法的变异过程采用单点变异,种群中个体基因趋同会使得遗传算法得到的解陷入局部极值,而很难获得适应度最大值,这种现象被称为“早熟”现象。上述实施例采用了多元变异策略,完全随机的选择多个基因进行互换,可以提高种群中个体基因的多样性,有效缓解了“早熟”现象,使得调度过程更加快速有效。
此外,从图1和图2所示的实施例中可以看出,交叉和变异可以是相对独立的运算过程。本发明所作出的改进,在交叉和变异中均有体现。本领域普通技术人员应理解,图1和图2所示实施例中的交叉和变异过程还可以结合进行,从而更进一步的提高调度效率,节省调度成本。
下面结合图4描述本发明一个实施例的基于遗传算法的调度装置。
图4示出本发明基于遗传算法的调度装置的一个实施例的结构示意图。如图4所示,该实施例的基于遗传算法的调度装置40包括:
种群产生模块402,用于随机产生种群,所述种群中的个体代表各个调度集合之间的一一映射关系,所述个体的基因为调度集合中的元素。
个体编码模块404,用于用二维数组对所述个体进行编码,二维数组的第二维度表示调度集合,二维数组的第一维度表示调度集合中的元素。
适应度计算模块406,用于计算种群中每个个体的适应度。
在一个实施例中,适应度计算模块406包括:
调度成本计算单元4062,用于根据个体所代表各个调度集合之间的一一映射关系中,各个调度集合的元素之间是否存在匹配关系,以及各个调度集合的元素之间的匹配成本,计算种群中每个个体的调度成本。
适应度计算单元4064,用于根据种群中每个个体的调度成本的倒数计算种群中每个个体的适应度。
交叉运算模块408,用于选取种群中满足预设适应度条件的个体作为父本和母本进行交叉运算,在所述交叉运算过程中,将父本和母本第一维度相同且第二维度相邻的基因作为子代个体的部分基因,并由每个调度集合中除所述第一维度相同且第二维度相邻的基因之外的元素随机组成子代个体中该调度集合的其余基因。
第一迭代运算模块410,用于迭代地进行交叉运算以产生子代个体,直至种群满足预设条件。
在一个实施例中,交叉运算模块408包括:
个体选取单元4082,用于选取种群中适应度高于预设值的个体;
适应度计算单元4084,用于计算所述适应度高于预设值的个体所对应的总适应度;
交叉运算单元4086,用于以所述适应度高于预设值的个体的适应度与所述总适应度的比值为概率,选择所述适应度高于预设值的个体作为父本和母本进行交叉运算。
在一个实施例中,基于遗传算法的调度装置40还包括:
变异模块412,用于选取种群中的部分个体进行变异,在所述变异过程中,将变异个体属于同一调度集合的多个元素所对应的基因进行随机交换。其中,变异模块412可以用于选取种群中0.5%至1%的个体进行变异,在所述变异过程中,将变异个体30%至60%的基因进行随机交换。
第二迭代运算模块414,用于迭代地进行变异运算以产生新的个体,直至种群满足预设条件。
图5示出了本发明基于遗传算法的调度装置的另一个实施例的结构图。如图5所示,该实施例的基于遗传算法的调度装置50包括:存储器510以及耦接至该存储器510的处理器520,处理器520被配置为基于存储在存储器510中的指令,执行前述任意一个实施例中的基于遗传算法的调度方法。
其中,存储器510例如可以包括***存储器、固定非易失性存储介质等。***存储器例如存储有操作***、应用程序、引导装载程序(Boot Loader)以及其他程序等。
图6示出了本发明基于遗传算法的调度装置的又一个实施例的结构图。如图6所示,该实施例的装置60包括:存储器510以及处理器520,还可以包括输入输出接口630、网络接口640、存储接口650等。这些接口630,640,650以及存储器510和处理器520之间例如可以通过总线650连接。其中,输入输出接口630为显示器、鼠标、键盘、触摸屏等输入输出设备提供连接接口。网络接口640为各种联网设备提供连接接口。存储接口650为SD卡、U盘等外置存储设备提供连接接口。
本发明还包括一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行时实现前述任意一个实施例中的基于遗传算法的调度方法。
本领域内的技术人员应明白,本发明的实施例可提供为方法、***、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用非瞬时性存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。