1.本发明属于车间作业调度领域,特别是一种基于矩阵编码遗传算法的作业调度方法。
背景技术:2.车间作业调度是企业实现资源合理分配、降低生产成本、提高生产效率和提升客户满意度的主要途径,它对企业的生产管理和控制系统有着重要的影响。车间作业调度负责根据订单生产信息,在有限资源的前提下,为产品的生产制造制定计划并分配必要的资源。随着先进制造技术的普及和信息技术的发展,企业的生产正朝着多品种、变批量、有着不同完工时间和产品要求的方向发展,从而使得企业的生产作业计划安排难度加大。因此选择合理、高效的调度算法来进行作业计划的制定,成为车间作业调度研究中的重要环节。
3.车间作业调度算法有很多,目前使用的比较多的有遗传算法、蚁群算法和模拟退火算法等等。蚁群算法局部搜索能力强、搜寻结果稳定,但是全局寻优能力差、计算过程复杂。模拟退火算法局部寻优能力强、收敛速度快,但是依赖参数设置、计算时间长。与上述两种算法相比,遗传算法具有明显的优势。一方面,遗传算法总体寻优能力较强,解决车间调度问题时它可以从一种调度方案跳到另一种调度方案,从而可以解决其他算法易于陷入局部最优的问题。另一方面,遗传算法计算速度快且易与其他算法结合,这对于解决车间动态调度问题是十分有利的。但是目前遗传算法的编码方式、选择操作、交叉操作和变异操作都较为复杂,这导致它实施起来很不方便。
技术实现要素:4.本发明的目的在于提供一种基于矩阵编码遗传算法的作业调度方法,以帮助企业方便、高效地进行车间作业调度。
5.实现本发明目的的技术解决方案为:
6.一种基于矩阵编码遗传算法的作业调度方法,包括以下步骤:
7.步骤1、编码:使用矩阵编码,用一个n
×
m的矩阵来对种群p中的个体进行编码。
8.步骤2、种群初始化:设定种群规模p
s
,并在一定约束条件下给种群中每个个体的元素随机赋一个实数值。
9.步骤3、计算适应度:适应度函数为使产品的最大装配完成时间最小。分别计算当前种群中个体的适应度值。
10.步骤4、设置终止条件:终止条件为迭代次数t。当超过一定的迭代次数后,算法终止并输出最小的适应度值和对应的个体矩阵编码;否则,进行步骤6。
11.步骤5、解码:根据矩阵编码规则对适应度值最小的个体编码矩阵进行解码,输出产品装配方案。
12.步骤6、进行遗传操作:设定交叉概率p
c
和变异概率p
m
。首先,根据当前种群中个体的适应度值来进行选择操作,得到父代种群和母代种群。然后,在交叉概率p
c
下将父代种群
个体的编码矩阵和母代种群个体的编码矩阵进行交叉,来生成新种群。最后,在变异概率p
m
下将新种群个体的编码矩阵中的元素进行变异,得到变异后的新种群。以变异后的新种群来进行步骤3。
13.本发明与现有技术相比,其显著优点是:
14.(1)本发明的基于矩阵编码遗传算法的作业调度方法,相较于其他编码复杂的遗传算法,只需要通过一个矩阵即可进行编码,大大降低了编码和解码过程的难度。
15.(2)本发明的基于矩阵编码遗传算法的作业调度方法,实施简便且可以快速、高效地给出合理、可靠的作业调度方案。
附图说明
16.图1为本发明的实施流程示意图。
17.图2为编码矩阵进行交叉操作的示意图。
具体实施方式
18.下面结合附图对本发明的具体实施方案进行进一步的说明。
19.附图1是本发明的实施流程示意图,本发明包括以下步骤:
20.步骤1、编码:使用矩阵编码,用一个n
×
m的矩阵来对种群p中的个体进行编码,n为待装配产品数量,m为待装配产品的工序数量。
[0021][0022]
式(1)的编码矩阵中:每一行表示一个产品的所有工序,且工序是按照产品的工艺路线顺序排列的;每一列表示每个产品的每道相同类型的工序;每个元素x
ij
表示的是第i个产品在第j道工序选择的工作台编号和在工作台等待装配的序号,1≤i≤n,1≤j≤m。每个元素x
ij
的值为一个随机生成的实数,实数的整数部分a表示工作台编号,实数的第一位小数b表示在该工作台等待装配的序号,c≤a≤d,0≤b≤9,且每个工作台的b值不能重复,c表示每道工序第一个工作台的编号,d表示每道工序最后一个工作台的编号,需要说明的是每道工序的工作台总数相等,每个产品在每个工作台进行装配的时间是固定的。
[0023]
步骤2、种群初始化:设定种群规模p
s
,即设定种群中个体的数量。如当p
s
=50时,则需要构造一个50n
×
m的矩阵,矩阵中每个n
×
m的矩阵为种群中的一个个体。接着在c≤a≤d,0≤b≤9的约束下,随机给每个个体编码矩阵的元素赋一个实数值。
[0024]
步骤3、计算适应度:适应度函数要计算出在最后一道工序所有产品的装配完成时间中最大的一个,并使之最小。计算公式如下:
[0025]
f=max{n
ij
},i=1,2,...,n,j=m
ꢀꢀ
(2)
[0026]
式(2)中n
ij
表示第i个产品在第j道工序的完工时间。其计算过程为:首先,计算每个产品第一道工序的装配完成时间n
i1
,按照n
i1
的大小将产品进行升序排列,依次按照x
i2
的值进入第二道工序进行装配。然后,计算每个产品第二道工序的装配完成时间n
i2
,此时分为3种情况:
[0027]
情况1、此道工序每个工作台上第一个进行装配的产品:其计算公式为:
[0028]
n
ij
=n
i(j
‑
1)
+o
ija
,i=1,2,...,n,j=2,c≤a≤d
ꢀꢀ
(3)
[0029]
式(3)中,o
ija
表示第i个产品在第j道工序选择工作台a进行装配的装配时间。p
ijab
表示第i个产品在第j道工序选择工作台a进行装配的等待序列号b。
[0030]
情况2、上道工序装配完成时间小于此道工序等待序列中上一个产品在此道工序的装配完成时间的产品:其计算公式为:
[0031]
n
ij
=n
xj
+o
ija
,p
ijab
>p
xjab
,n
i(j
‑
1)
<n
xj
[0032]
i,x=1,2,...,n,i≠x,j=2,c≤a≤d,0≤b≤9
ꢀꢀ
(4)
[0033]
式(4)中,p
ijab
表示第i个产品在第j道工序选择工作台a进行装配的等待序列号b。
[0034]
情况3、上道工序装配完成时间大于等于此道工序等待序列中上一个产品在此道工序的装配完成时间的产品:其计算公式为:
[0035]
n
ij
=n
i(j
‑
1)
+o
ija
,p
ijab
>p
xjab
,n
i(j
‑
1)
≥n
xj
[0036]
i,x=1,2,...,n,i≠x,j=2,c≤a≤d,0≤b≤9
ꢀꢀꢀꢀ
(5)
[0037]
按照n
i2
的大小将产品进行升序排列,依次按照x
i3
的值进入第三道工序进行装配。接着,按照第二道工序的计算方法依次对后续工序的完工时间进行计算。最后,在最后一道工序,计算完全部产品的装配完成时间后,将所有产品中最大的装配完成时间作为该个体的适应度值保留。
[0038]
步骤4、设置终止条件:设置迭代次数t,当迭代次数超过t就输出当前最小的最大装配完成时间和相应的个体编码矩阵;否则,进行步骤6。
[0039]
步骤5、解码:将个体编码矩阵转换为产品装配方案,其转换规则如下:
[0040]
转换1、第一道工序:在第一道工序下,编码矩阵第一列元素值的整数部分即表示每个产品在第一道工序中选择进行装配的工作台编号。当元素值整数部分相同时即表示产品选择了同一个工作台进行装配,这时就需要看元素值的第一位小数。在同一个工作台进行装配的产品,按照元素值第一位小数进行升序排列装配,即第一位小数值越小,进行装配的顺序越靠前,其他产品依次按照顺序等待进行装配。
[0041]
转换2、其余工序:非第一道工序时,元素值的整数部分依然表示每个产品在每一道工序中选择进行装配的工作台编号。但工作台编号相同的产品其装配顺序由上一道工序的装配完成时间来决定,装配完成时间小的最先进行装配,其余产品按装配完成时间依次排队进行装配。
[0042]
步骤6、进行遗传操作:针对遗传操作的3个组成部分选择、交叉和变异,分别做如下设计:
[0043]
设计1、选择:在种群中随机选出4个个体,比较其适应度值,将值最小的个体作为父代种群的一个个体保存,在种群中随机选出1个个体作为母代种群的一个个体保存,循环上述过程p
s
次,让父代种群和母代种群的规模都为p
s
。
[0044]
设计2、交叉:图2为编码矩阵进行交叉操作的示意图,下面结合图2来进行说明。首先,设置交叉概率p
c
。然后,随机从父代种群和母代种群中分别取出一个个体,保证每次取出的个体不重复,在满足交叉概率p
c
的情况下将父代个体n
×
m编码矩阵的后s行(s<n,且s的值是随机的)与母代个体n
×
m编码矩阵的前s行进行交换,并将交换后的父代个体作为新种群的个体进行保存;当不满足交叉概率p
c
的情况下,直接将随机选出的父代个体作为新
种群的个体进行保存。
[0045]
设计3、变异:首先,设置变异概率p
m
。然后,针对新种群中的每个个体,在满足变异概率p
m
的情况下,随机对新种群中个体的某个元素值进行改变,其整数部分a的取值范围为c≤a≤d,其小数部分b的取值范围为0≤b≤9,且每个工作台的b值不能重复。在不满足变异概率p
m
的情况下,则不对新种群中的个体进行变异,保持原样即可。
[0046]
将经过上述过程得到的新种群用于步骤3。