针对柔性作业车间调度的改进遗传算法的制作方法

文档序号:11063177阅读:432来源:国知局
针对柔性作业车间调度的改进遗传算法的制造方法与工艺

本发明涉及作业车间调度技术领域,具体地涉及一种实用性强的柔性作业车间调度技术领域。



背景技术:

作业车间调度问题(Job Shop Scheduling Problem,JSP)作为典型的组合优化问题之一,其研究起始于20世纪50年代,最早要追溯到1954年科学家对两台机床的流水车间调度问题的提出和解决。近几十年来,由于实际生产的需要和相关技术尤其是智能优化算法的不断提出,越来越多的学者致力于JSP研究。从单资源约束到多资源约束、确定性到不确定性、单目标到多目标、小规模到大规模,各类JSP都得到了广泛的研究。且已有部分智能调度方法的研究成果成功应用于实际生产过程中。

柔性作业车间调度问题(Flexible Job Shop Scheduling Problem,FJSP)更接近生产实际,是经典作业车间调度问题的延伸,最早是在1990年提出的,FJSP是指建立FJSP的模型,通过某种算法为每项作业的每道工序分配适当的机器,并确定各机器上工序的加工顺序,以在满足各种约束条件的前提下,实现作业的完工时间最短、拖期最小、各机器的负载均衡等优化目标。由于FJSP需要非常大的组合搜索空间,且问题的复杂性更高,因此属于NP-hard问题。

从FJSP的提出到现在,国内外有很多专家学者提出了多种算法。主要集中在改进粒子群算法、改进遗传算法、混合算法等进化算法。遗传算法(Genetic Algorithm,GA)作为一种启发性搜索方法,是基于“适者生存”机制设计的算法,其思想来源于达尔文的进化论和孟德尔的遗传学说。GA主要是通过从改进交叉操作和变异操作的角度以适应于具体问题的求解。但现有的遗传面临编码复杂,解码困难,算法容易早熟,且产生不可行的解(调度方案)等问题。



技术实现要素:

针对上述不足之处,本发明要解决的问题是提供改进的遗传算法求解柔性作业车间调度问题。

本发明的目标是:第一.解决现有遗传算法编码方式复杂,解码困难问题;第二.解决遗传算法搜索开发能力较弱,容易早熟问题;第三.解决进化过程中遗传算子操作出现不可行解的问题。

本发明针对上述目的所采用的技术方案是:第一.直接采用(i,j,k)的形式表示工序Oj,j,k编码染色体,不需要复杂的编码和解码过程;第二.根据两种不同的规则采用定位的方法为工序选择设备,采用三种已知的有效调度规则为工序排序;第三.交叉和变异操作都采用基于工序优先级保护的遗传算子;第四.通过公式计算个体和基因进行变异的概率。

本发明为实现上述目的所采用的技术方案是:采用一种改进遗传算法求解柔性作业车间调度问题,该算法包括以下步骤:

步骤1:初始化种群S;

步骤1.1:编码在一条染色体进行,编码染色体基因由一个三元数组(i,j,k)组成,表示工序Oi,j在设备Mk上加工,染色体的长度是所有工件的工序数量

步骤1.2:生成一个初始解需要两步,第一:将每一道工序分配到合适的设备;第二:在满足每个工件工序优先约束的情况下确定工序的加工顺序;

步骤1.2.1:采用定位的方法初始化设备部分;

步骤1.2.2:采用优先规则的方法初始化工序排序部分;

步骤2:计算个体适应度,记录最好适应度个体;

步骤3:判断是否达到最大迭代次数,是则返回最优解结束此程序,否则执行下一步骤;

步骤4:采用轮盘赌轮法选择个体进行进化;

步骤5:对选择的个体采用基于工序优先顺序保护的交叉(POX交叉);

步骤6:计算个体和基因的变异概率,采用基于工序优先级保护的移位变异(PPS变异);

步骤7:返回步骤2,重复此程序;

本发明的有益效果是:第一:采用(i,j,k)的形式表示染色体的基因,染色体长度等于所有工件的工序数量,不会随着进化过程变化,且不需要专门的编码解码过程;第二.采用现有规则的混合来产生初始解,不仅保证初始解的质量不会过低,还增加了种群的多样性,增大了解的搜索空间;第三.基于工序优先级保护的遗传算子避免了不可行解的产生;第四.计算动态变异概率,能够控制搜索方向,提高遗传算法性能。

附图说明

图1表示本算法的流程图

图2表示本算法的编码方式实例

图3表示本算法初始解得到的调度甘特图

图4表示两条染色体的POX交叉实例

图5表示一条染色体的PPS变异实例

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图和实施例对本发明进一步详细说明。应当理解此处所描述的具体实施例仅仅用于解释本发明并不用于限定本发明。

本发明采用新的编码方式,简洁方便不需要专门的解码,采用基于工序优先级保护的遗传算子避免不可行解的产生,计算动态变异概率更符合自然法则且能够控制搜索方向,提高算法性能。

柔性作业车间调度问题可以表述如下:n个独立工件的集合J={J1,J2,…,Jn},m台设备的集合M={M1,M2,…,Mm},每一个工件包含的工序Oi,j表示工件Ji的第几道工序,这些工序根据给定的序列一个接一个的加工,必须从给定的一个子集Mi,j∈M中选择一台设备加工。如果Oi,j能在机器Mk上加工,加工时间为Ti,j,k(Ti,j,k>0),否则Ti,j,k=0。

该算法的目的是分配每一个工序到合适的机器上加工,最小化完工时间即总加工时间。为了解决调度问题,约束条件如下:

(1)不允许工件抢占

(2)每台机器同一时间只能加工一道工序。

(3)所有工件在零时刻是可用的

(4)忽略传送时间,即一个工序在一台机器加工后,它立即运往下位机。机器上所有工序的安装时间也将被忽略。

针对给定的条件以及要解决的问题,结合图1本算法的详细步骤如下:

步骤1:初始化种群S;

步骤1.1:编码在一条染色体进行,编码染色体基因由一个三元数组(i,j,k)组成,表示工序Oi,j在设备Mk上加工,染色体的长度是所有工件的工序数量

步骤1.2:生成一个初始解需要两步,第一:将每一道工序分配到合适的设备;第二:在满足每个工件工序优先约束的情况下确定工序的加工顺序;

步骤1.2.1:采用定位的方法初始化设备部分;

步骤1.2.2:采用优先规则的方法初始化工序排序部分;

步骤2:计算个体适应度,记录最好适应度个体;

步骤3:判断是否达到最大迭代次数n,是则返回最优解结束此程序,否则执行下一步骤;

步骤4:采用轮盘赌轮法选择个体进行进化,个体Ri被选择的概率计算如下:

其中,fmin是种群中最小的适应度值,fmax是最大的适应度值,是个体Ri的适应度值,Rj是种群中的个体。

步骤5:对选择的个体采用基于工序优先顺序保护的交叉(POX交叉)

步骤6:计算个体和基因的变异概率,采用基于工序优先级保护的移位变异(PPS变异)

步骤7:返回步骤2,重复此程序

所述步骤1.1结合图2可以看出该编码仅在一条染色体进行,编码染色体基因由三元数组(i,j,k)组成,编码方式简洁方便。

所述步骤1.2.1为工序分配设备,本发明采用定位的方法,既考虑加工时间又考虑设备的总负荷(每一台设备上的工序的加工时间之和),依次为每一道工序寻找最小加工时间设备,选择这个设备,然后把这个时间加入到每一个随后进入到该设备上加工工序的加工时间内(设备负荷更新)。本发明采用两种规则来产生设备选择部分的初始种群:(1)按加工时间表中全局最小为每一道工序选择设备;(2)随机置换加工时间表的工件和设备,然后从上到下为每一道工序选择设备。不同的运行会找到不同的初始解,更好的探索搜索空间。本发明设备选择部分10%的初始个体由(1)产生,90%的初始个体由(2)产生。如表1和表2分别表示根据规则(1)和(2)获得每道工序的设备的过程,表中黑体字的部分表示设备负荷更新,方框表示该工序所选择的设备,表1、表2内的最后一个表表示最终的设备选择。

表1

表2

所述步骤1.2.2为工序排序,本发明采用三种已知的调度规则混合产生工序排序的初始种群,调度规则如下:

(1)随机选择一个工件(Random)

(2)剩余工作最多的工件(MWR)

(3)剩余工序数最多的工件(MOR)

本发明工序排序部分20%的初始个体由(1)产生,40%的初始个体由(2)产生,余下的40%初始个体由(3)产生。如规则(2)MWR应用到表1所示的设备分配得到初始解为:(O11,M3),(O12,M1),(O21,M3),(O22,M4),(O31,M3),(O13,M2),(O32,M1),(O23,M4)。得到的调度甘特图如图3,总完工时间为13。

所述步骤2,适应度是用来评估一个个体的质量,每一个个体代表一个解,本发明使用一个解的总完工时间:Cmax=max{Ci|i=1,2,…,n}作为个体的适应度。适应度值越低表示个体越优秀。每一代,所有的个体都要被评估,并记录最好的个体。

所述步骤5本算法采用基于工序优先顺序保护的交叉策略(POX)。假设第一个父代解为P1,第二个父代解为P2,第一个子代解为O1,第二个子代解为O2,POX交叉过程描述如下:

(1)选择一个工序Oi,j,属于工件Ji

(2)复制P1中工件Ji的所有工序到子代O1中;

(3)子代O1剩余的工序按照他们在父代P2中的顺序完成。

两条染色体POX交叉的过程如图4所示。假设选择基因(2,2,2),工序O22属于工件J2,因此,P1中工件J2所有的工序都复制到O1,O1剩余的工序由P2中除工件J2所有的工序按照原来的顺序补充完成。

所述步骤7变异,首先计算个体、基因变异概率:

个体Ri的变异概率:

fmin、fmax、favg分别表示种群中最小适应度、最大适应度、平均适应度,表示Ri的适应度,p_individual表示预定义个体变异参数。

基因Gi的变异概率:

loadavg表示设备平均负荷,假设基因Gi分配到设备Mk上加工,表示设备Mk的负荷,P_gene表示预定义的基因变异参数。

所述两种变异算子针对工序排序和设备分配两个部分有以下两个步骤:(1)分配算子表示改变工序所分配的设备,本算法随机选择一个工序,再随机重新安排一台可行的设备给这道工序。(2)排序算子表示改变工序的排列顺序,本算法采用保护工序优先级的移位突变策略(PPS)如图5,从一个父代解中选择一个工序,在考虑工序优先级约束的条件下将选择的工序移动到另外的位置。

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