一种新的解决作业车间调度问题的排产算法的制作方法

文档序号:11063795阅读:1687来源:国知局
一种新的解决作业车间调度问题的排产算法的制造方法与工艺

本发明涉及作业车间调度技术领域。



背景技术:

作业车间调度问题(Job-shop Scheduling Problem)是许多实际生产调度问题的简化模型,具有广泛的应用背景,譬如生产制造、交通规则、邮电通信、大规模集成电路设计等问题。作为一类满足任务配置和顺序约束要求的分配问题,JSP已被证明是一个典型的NP_hard问题,它的求解难度远远大于流水线调度问题。针对解决作业车间调度问题的算法一直是学术界和工程界共同关注的重要课题。

制造业的竞争日趋激烈,企业正朝着有不同完工时间和产品要求的多类型、小批量、大批量的生产模式。如何利用现有资源,满足加工任务所需各种约束,使所有任务能尽量按时完成,即如何有效地解决JSP问题,成为一个十分现实和紧迫的问题。高效的调度算法不可以大大提高生产效率和资源利用率,从而增强企业的竞争能力,因此对JSP的研究有非常重要的理论和现实意义。

现有的一些算法仅仅是解决最底层的作业调度问题,而且没有考虑到生产过程中存在的复杂的工件组合的问题,即多个部件组合而成新的部件,这个新的部件1又可能还会跟其他工件组合成新的部件2,新的部件2又可能需要加工,再跟新的部件3组装成一个工件,如此循环的问题。



技术实现要素:

针对现有技术存在的上述不足,本发明要解决的技术问题是采用一种新的解决作业车间调度问题的排产算法。

本发明的目的是克服现有技术中存在的:复杂的工件组合的调度问题。

本发明为实现上述目的所采用的技术方案是:一种新的解决作业车间调度问题的排产算法,该算法的步骤如下:

步骤1:编码:采用基于工序的编码规则编码。

步骤2:设置工件优先级阶数La。

步骤3:设置工件优先级序列P(哪个工件属于哪个优先级)。

步骤4:若某一优先级的工件数量不为空,则执行同级排产算法。否则优先 级+1。

本发明的有益效果是:

1、解决了资源合理利用调度问题。

2、解决了实际生产过程需考虑到工件试装以及试装拆分的问题。

3、解决了在生产过程中,存在的复杂的工件组合问题,即多个部件组合而成新的部件,这个新的部件1又可能还会跟其他工件组合成新的部件2,新的部件2又可能需要加工,再跟新的部件3组装成一个工件,如此循环的问题。

附图说明

图1表示本算法的流程图

图2表示同级排产算法流程图

图3表示复杂的工件组合问题

图4一种改进布谷鸟搜索算法的基本流程图

具体实施方式:

本发明提出的算法解决了实际生产过程中存在的复杂的工件组合问题如图3所示,即多个部件组合而成新的部件,这个新的部件1又可能还会跟其他工件组合成新的部件2,新的部件2又可能需要加工,再跟新的部件3组装成一个工件,如此循环的问题。

本发明解决上述问题,采用一种新的解决作业车间调度问题的排产算法,结合图1到图3,算法具体实施过程如下所述:

步骤1:编码,采用基于工序的编码规则编码,即染色体由w×n×m个基因组成,他们表示一个工序的排列,在这个工序排列中每个工件号最多出现m次,其染色体是由一个二维空间点(x,y)表示,即第x个订单的第y个工件,例如,3×4×3(订单(或阶数)×工件×机器)的实例,染色体序列为(1,1)(1,2)(2,1)(1,1)(3,1)(3,1)(3,3)(3,2)(1,2)(1,2)(1,1)(1,4),那么,它对应的工件加工序列为:

(J1,1,1,J1,2,1,J2,1,1,J1,1,2,J3,1,1,J3,1,2,J3,3,1,J3,2,1,J1,2,1,J1,2,2,J1,1,3,J1,4,1)

其中,Jti,j表示第t个订单的第i个工件的第j道工序,j表示工件i出现的次数,因此,上面例子的染色体序列表达的意思是先加工顺序为:第1个订单的第 1个工件的第1道工序,加工第1个订单第2个工件的第1道工序,在加工第2个订单第1个工件的第1道工序,加工第1个订单第1个工件的第2道工序,以此类推,最后加工第1个订单第4个工件的第1道工序,因此在解码时就可以按照工件的出现顺序转化为一个调度方案。

步骤2:设置工件优先级阶数La;

步骤3:工件初始优先级序列P(哪个工件属于哪个优先级);

步骤4:若某一优先级的工件数量不为空,则执行同级排产算法,否则优先级+1,伪代码表示为:

一、所述同级排产算法步骤如下:

步骤4.1:选择最初最优解:按照改进布谷鸟搜索算法(下面有描述)选择最初最优解;

步骤4.2:判断当前最优解是否满足试装条件,若满足,则执行试装操作;否则转步骤4.3;

步骤4.3:判断当前所选工件(当前最优解)即将执行的工序是否满足资源充足的条件,若满足,转步骤4.4,否则转步骤4.1。

步骤4.4:确定最优解,输出最优解,执行加工操作。

步骤4.5:循环,直到满足终止条件。

(1)所述工件所需资源是否充足算法(步骤4.3的判定规则):

设置资源库存池:

判定规则:

If(库存池存在所需设备&&库存该设备数量>=所需该设备数量&&库存池存在所需工具&&库存该工具数量>=所需该工具数量&&库存池存在所需工种工人&&库存该工人数量>=所需该工人数量)满足资源充足条件;

Else不满足资源充足条件。

(2)所述步骤4.1改进布谷鸟搜索算法:

步骤1:初始化算法基本参数:设置鸟窝个数(工件数量)n,宿主发现外来鸟蛋的概率Pa(作业抢占概率),以及最大迭代次数MaxT或搜索精度ε。

步骤2:初始化鸟窝位置(工件加工完成时间):根据加工时间长短呈上升趋势排列。

步骤3:计算目标函数值:按照编码规则将鸟窝位置(完成时间)转换为工序排列,计算各鸟窝位置对应的目标函数值,并获得当前最优鸟窝位置。具体实现为:

目标函数:

f(C)=min max1≤o≤w{max1≤k≤m{max1≤i≤nCoik}} (1)

约束条件:

Coik-poik+M(1-aoihk)≥Coih

(o=1,2,...,w;i=1,2,...,n;h,k=1,2,...,m)

(2)

Cojk-Coik+M(1-xoijk)≥poik

(i,j=1,2,...,n;o=1,2,...,w;k=1,2,…,m)

(3)

Coik≥0(o=1,2,...,w;i=1,2,…,n;k=1,2,...,m)

(4)

xoijk=0或1(i,j=1,2,...,n;o=1,2,...,w;k=1,2,...,m)

(5)

其中,式(1)表示目标函数,即完成时间(Makespan);式(2) 表示工艺约束条件决定的每个工件的操作的先后顺序;式(3)表示加工每个工件的每台机器的先后顺序;式(4)表示完工时间变量约束条件;式(5)表示变量可能的取值大小。上述公式中所涉及的符号定义含义如下:Coik和poik分别为第o个订单(或阶数)中的第i个工件在机器k上的完成时间点和加工时间长度;M是一个足够大的整数;aoihk和xoijk分别为指示系数和指示变量,其含义为:

步骤4:更新鸟窝位置:开始迭代,保留上代最优鸟窝位置不变,更新鸟窝位置(即全局搜索),从而随机产生下一代鸟窝,并评估位置更新后每个鸟窝的目标函数值,记录当前最优鸟窝位置。具体实施方案如下数学公式所示:

其中,表示第i只布谷鸟在第t代的鸟窝位置(在车间调度问题中用Coik表示),α是步长大小参数,一般取α=0.1。参数S是随机游动的步长,计算公式如下:

S=u+α·σ

(9)

其中,

在局部搜索时对每一鸟窝位置按条件进行更新:用一个随机数Ra作为鸟窝主人发现外来鸟蛋的概率并与Pa进行比较,若Ra>Pa,则随机改变鸟窝位置,否则保持原来位置不变,并计算位置移动后每个鸟窝的目标函数值,记录当前最优鸟窝位置。用如下0-1规划模型表示:

步骤5:更新最优函数值:比较本次迭代和上一次迭代鸟窝位置的最优值,如果新的最优值小于原最优值,则把新的最优值赋予当前最优鸟窝位置的目标函数值。

步骤6:当到达最大搜索次数或满足搜索精度时转入步骤7,否则,转3进行下一次搜索。

步骤7:输出最优调度值和对应的调度方案(染色体序列)。

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