一种基于离散萤火虫算法的多目标柔性作业车间调度方法与流程

文档序号:12062838阅读:445来源:国知局
一种基于离散萤火虫算法的多目标柔性作业车间调度方法与流程

本发明设计调度问题领域,更具体地,涉及一种基于离散萤火虫算法的多目标柔性作业车间调度方法。



背景技术:

生产调度是指针对一项可分解的工作,在尽可能满足工艺路线、资源情况、交货期等约束条件的前提下,通过下达生产指令,安排其组成部分所使用的资源、加工时间及加工的先后顺序,已获得产品制造时间或成本最优化的一项工作。柔性作业车间调度问题是车间调度问题的一种,是指在加工系统中有一组功能不同的机床,待加工的工件包含多道工序,每道工序在一台机床上加工,工件的加工路线互不相同,每个工件工序之间有先后顺序约束。柔性作业车间调度问题在数学上是一个NP-hard组合优化问题,随着加工工序和可选机器的增加,车间调度方案的求解空间也会迅速复杂起来。在实际生产中,不但要考虑工件最大完工时间,平均流经实践、总拖期时间、机器总负荷和瓶颈机器负荷等调度性能指标优化,还要考虑生产成本等费用指标,因此必须兼顾多种调度指标,进行多目标优化。多目标柔性作业车间调度问题和单目标柔性作业车间调度问题相比,存在目标之间具有不可公度性和矛盾性的问题。柔性作业车间调度问题的解空间是离散的,但是标准萤火虫算法用来解决连续问题的,因此标准萤火虫算法的编码规则、距离定义、位置更新等规律不适用于求解柔性作业车间调度问题。

综上所述,为了提高车间的生产效率,达到各项生产指标最优,寻找一种高效的人工智能算法来求解柔性作业车间调度问题并且进行多目标的优化十分必要。



技术实现要素:

为了解决上述问题,本发明旨在公开一种基于离散萤火虫算法的多目标柔性作业车间调度方法,尤指一种基于离散萤火虫算法的以最大完工时间、瓶颈机器负荷、机器负荷总量为优化目标的柔性作业车间调度问题的解决方法。

为了实现上述目的,本发明所采用的技术方案主要包括以下过程:

针对多目标柔性作业车间调度问题建立数学模型;

采用分段编码方式对萤火虫进行编码,包括机器选择部分和工序排序部分;

使用离散萤火虫算法,优化上述模型得到Pareto最优解集;

从Pareto最优解集里选择符合实际需求的解,并进行解码输出机器选择位置信息、工序排序位置信息。

所述模型为:n个工件{J1,J2,…,Jn}在m台机器{M1,M2,…,Mm}上进行加工,每个工件包含一道或多道工序,每个工件的工序顺序以及在不同机器的加工时间确定,在加工过程中满足各项约束条件,其中:

hj为j号工件的总工序数;Ojh表示工件j的第h道工序;Cj表示工件j的加工完成时间;Mijh表示工件j的第h道工序在机器i上加工,当Xijh=1时表示工序Ojh选择机器i,否则不选择在机器i上加工;Pijh表示工件j的第h道工序在机器i上加工所需的时间;Yijhkl表示工序Ojh和工序Okl的加工选后顺序,当Yijhkl=1时,表示工序Ojh先于工序Okl在机器i上加工。

所述模型的优化的目标有三个:

最大完工时间:

瓶颈机器负荷量:

机器负荷总量:

基于离散萤火虫算法,对比传统萤火虫算法,解决多目标柔性作业车间问题需要对萤火虫位置、机器选择序列的位置矢量更新规则和工序排序序列的位置矢量更新规则进行重新定义:

定义1)萤火虫的位置:每个萤火虫的位置对应一个柔性作业车间调度问题的可行解,第i个萤火虫的位置表示为Xi=[JMi,Si]T,表示萤火虫的位置由机器选择部分JMi和工序排序部分Si两组位置矢量组成,其中JMi=[Jmi,1,Jmi,2,…,Jmi,j,Jmi,n],Jmi,j表示第j个工件的机器选择序列;Si=[Si,1,Si,2,…,Si,j,Si,H]T,H表示全部工件的工序总和,H=

定义2)机器选择序列的位置矢量更新:

式中的减法操作按以下规则取值:令算法过程中,每个k的机器序列和的各维分量,对于的第h(1≤h≤hj)维分量如果与不相等,则即矢量继承了矢量上的有效元素,如果则

式中的乘法操作按以下规则取值:令用和α|rand-0.5|联合控制位置矢量从位置矢量中继承的元素个数:

式中的加法操作按以下规则取值:令工件k的机器选择序列的位置更新可以表示为t时刻位置矢量和t+1时刻位移方向矢量之和,如果中的为零,则不改变矢量第h道工序对应的机器选择序号,即 如果不为零,则机器选则序列的位置矢量 第h道工序选择的机器号是与交换后的值。

定义3)工序排序序列的位置矢量更新:

当萤火虫i支配萤火虫j时,随机挑选萤火虫i的L个工件进行标记,并对被选取的工件的所有工序进行位置标记,同时标记j中相同工序的所有标记;标记完成后,让萤火虫j继承萤火虫i的被选择工件的所有被标记工序序列;萤火虫j支配萤火虫i时同理;

对支配的萤火虫工序序列作小范围随机移动:生成一个很小的正偶数2R(2R/H≤1/20),再生成2R个不同的随机整数(范围1~H),将2R个整数分为R组,将每组随机数对应的工序序号进行对换;H为总工序数。

所述萤火虫算法的编码规则:工序排序部分:序号代表工件号,数字出现的次数代表对应工件的工序数,数字的第几次出现代表工件的第几道工序;机器选择部分:对应编码长度与工序排序部分相等,从左到右按顺序排列工件的工序,出现的序号代表所选机器号。

所述离散萤火虫算法的具体过程为:

1)适用于离散问题的离散萤火虫算法参数初始化:萤火虫总数N,最大迭代次数Iter,随机步长因子,萤火虫之间吸引力,光照吸收率,每个萤火虫的位置信息;

2)采用快速非支配排序方法将种群分层,记萤火虫i在第ifloor层,对其进行机器选择序列的位置矢量更新和工序排序序列的位置矢量更新,以相同概率向三个方向移动;

3)分别寻找最大完工时间、瓶颈机器负荷、机器负荷总量最优的萤火虫ibest_f、ibest_zf、ibest_zdf,并更新萤火虫位置信息;

4)对ifloor≠1且任一子目标最优的萤火虫,不向其他支配它的萤火虫移动并作小范围移动,更新ibest_f、ibest_zf、ibest_zdf

5)重复步骤2)到步骤4),进行下一次萤火虫的移动,寻找全局最优和迭代最优的萤火虫,直到满足终止条件;

6)输出ifloor=1层中所有萤火虫序列的最大完工时间、瓶颈机器负荷、机器负荷总量,并输出萤火虫的机器信息、工序信息。

所述步骤2)中位置矢量更新按下式进行:

所述萤火虫算法解码规则如下:

1)获取工序排序序列中的一个元素,转换为工序信息Ojh,获取Ojh的g号机器为Mg=JMi(j,h),所用时间为Ti(j,h);

2)如果工序Ojh是机器Mg上的第一道加工工序,则Ojh可以直接从Oj(h-1)加工完成时开始加工;如果Ojh是j号工件的第一道工序,则Ojh可以在机器Mg的零时刻开始加工;如果不满足上面两种情况,找到机器Mg上的所有空闲时段[TSg,TEg],TSg为机器Mg位置空闲时段开始时刻,TEg为机器Mg空闲时段结束时刻;判断是否将工序插入当前空闲时间段方法如下:

ta+Ti(j,h)≤TEg

其中ta=max(cj(h-1),TSg);

如果不满足上式,则在tb时刻开始加工,LMg表示机器Mg上当前最后一道工序的结束时刻,其中:

tb=max(cj(h-1),LMg)。

附图说明

附图1为萤火虫算法的实现流程图。

附图2、3、4为mk01问题的解的甘特图。

具体实施方式

下面结合附图详细说明本发明的具体实施方式:

本发明通过对萤火虫算法解码方式和迭代规律的改进,提高了萤火虫全局寻优能力,针对多目标柔性作业车间调度问题,提出了一种萤火虫的移动策略,保证种群的多样性。从而得出多目标柔性作业车间调度问题的Pareto占优解。

其具体实现过程为:

针对多目标柔性作业车间调度问题建立数学模型;

采用分段编码方式对萤火虫进行编码,包括机器选择部分和工序排序部分;

使用离散萤火虫算法,优化上述模型得到Pareto最优解集;

从Pareto最优解集里选择符合实际需求的解,并进行解码输出机器选择位置信息、工序排序位置信息。

所述模型为:n个工件{J1,J2,…,Jn}在m台机器{M1,M2,…,Mm}上进行加工,每个工件包含一道或多道工序,每个工件的工序顺序以及在不同机器的加工时间确定,在加工过程中满足各项约束条件,其中:

hj为j号工件的总工序数;Ojh表示工件j的第h道工序;Cj表示工件j的加工完成时间;Mijh表示工件j的第h道工序在机器i上加工,当Xijh=1时表示工序Ojh选择机器i,否则不选择在机器i上加工;Pijh表示工件j的第h道工序在机器i上加工所需的时间;Yijhkl表示工序Ojh和工序Okl的加工选后顺序,当Yijhkl=1时,表示工序Ojh先于工序Okl在机器i上加工。

所述模型的优化目标有三个:

最大完工时间:

瓶颈机器负荷量:

机器负荷总量:

所述萤火虫算法的编码规则:工序排序部分:序号代表工件号,数字出现的次数代表对应工件的工序数,数字的第几次出现代表工件的第几道工序;机器选择部分:对应编码长度与工序排序部分相等,从左到右按顺序排列工件的工序,出现的序号代表所选机器号。

离散萤火虫算法是根据多目标柔性作业车间调度问题的解空间是离散的特点在标准萤火虫算法的基础上进行改进一种算法。萤火虫的亮度由适应度值决定,每个萤火虫的位置信息代表一种可行解,移动规则是所有可行解不断向当前最优解靠近,多次迭代后,所有可行解都集结在最优解附近。

所述离散萤火虫算法的具体过程为:

1)适用于离散问题的离散萤火虫算法参数初始化:萤火虫总数N,最大迭代次数Iter,随机步长因子,萤火虫之间吸引力,光照吸收率,每个萤火虫的位置信息;

2)采用快速非支配排序方法将种群分层,记萤火虫i在第ifloor层,对其进行机器选择序列的位置矢量更新和工序排序序列的位置矢量更新,以相同概率向三个方向移动;

3)分别寻找最大完工时间、瓶颈机器负荷、机器负荷总量最优的萤火虫ibest_f、ibest_zf、ibest_zdf,并更新萤火虫位置信息;

4)对ifloor≠1且任一子目标最优的萤火虫,不向其他支配它的萤火虫移动并作小范围移动,更新ibest_f、ibest_zf、ibest_zdf

5)重复步骤2)到步骤4),进行下一次萤火虫的移动,寻找全局最优和迭代最优的萤火虫,直到满足终止条件;

6)输出ifloor=1层中所有萤火虫序列的最大完工时间、瓶颈机器负荷、机器负荷总量,并输出萤火虫的机器信息、工序信息。

所述步骤2)中位置矢量更新按下式进行:

所述萤火虫算法解码规则如下:

1)获取工序排序序列中的一个元素,转换为工序信息Ojh,获取Ojh的g号加工机器为Mg=JMi(j,h),所用时间为Ti(j,h);

2)如果工序Ojh是机器Mg上的第一道加工工序,则Ojh可以直接从Oj(h-1)加工完成时开始加工;如果Ojh是j号工件的第一道工序,则Ojh可以在机器Mg的零时刻开始加工;如果不满足上面两种情况,找到机器Mg上的所有空闲时段[TSg,TEg],TSg为机器Mg位置空闲时段开始时刻,TEg为机器Mg空闲时段结束时刻;通过下式判断是否将工序插入当前空闲时间段:

ta+Ti(j,h)≤TEg

其中ta=max(cj(h-1),TSg);

如果不满足上式,则在tb时刻开始加工,LMg表示机器Mg上当前最后一道工序的结束时刻,其中:

tb=max(cj(h-1),LMg)。

实施例:

以mk01问题为例,进行柔性作业车间调度多目标优化。该问题包含10个工件,6个可选加工机器,总工序数为55个,工件元素相互间的加工工序不存在优先约束关系,工件元素本身的加工工序之间具有明确优先关系。详细数据如下表1:

相关参数设置:α=1.2,β0=1,γ=0.06,最大迭代次数150,萤火虫总数100。对mk01问题以最大完工时间f1、瓶颈机器负荷量f2和机器符合总量f3最小为优化目标,采用离散萤火虫算法进行多目标优化。

下表2为Pareto前沿解集:

3个解分别有各自的优势,可以根据不同的需求选择三种不同的加工方案,第2个解最大完工时间f1达到最优,瓶颈机器负荷量f2最小,解的质量是最高的;第3个解机器负荷总量f3最小,但是最大完工时间f1和瓶颈机器负荷量f2都是最大的,在3个对应的调度方案中,生产效率是最低的,而且设备的利用率也是最低的。第1个解、第2个解、第3个解的机器选择信息JM、加工时间矩阵T和工序排序信息S分别如下表3、4、5所示,3个解的甘特图如附图2所示。

下表3为第1个解:

下表4为第2个解:

下表5为第3个解:

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1