一种生产排产调度优化方法与流程

文档序号:12469318阅读:951来源:国知局
一种生产排产调度优化方法与流程

本发明涉及一种生成排产、智能优化、计算机应用领域,尤其涉及的是,一种生产排产调度优化方法。



背景技术:

在过去的几十年中,生产制造业及相关产业发生了显著的改变,主要的变化体现在生产规模的巨大化和生产过程的连续化。如何在原料供应和生产需求发生改变的情况下,充分利用现有资源以合理组织生产和经营,是研究调度问题的主要目的。生产调度问题就是按照时间分配资源来完成任务的问题,在理论研究中通常被看作是排序问题或资源分配问题,是一个决策过程。具体而言,生产排产是把有限的资源定义为车间里的机器,其求解目标可以定义为在满足工艺约束的条件下,将每个工序按顺序安排到指定的机器上进行加工,使得整个生产过程能够达到事先定义好的目标方案。

生产排产是一个复杂的问题,其具有随机性、离散性、复杂性、多目标性和多约束性等特点。传统方法只进行简单常规的计划和仅凭经验的排产,不仅耗费时间长而且很难达到最优的调度效果,浪费生产资源,增加企业成本,而且无法全程监控和跟踪整个生产过程,以及实时地查看车间工作状况,当出现异常情况时不能及时准确地修正作业计划。因此在当前规模巨大、环境复杂的生产制造系统中,以人为经验决定调度和计划策略的方法会逐渐退出企业的发展模式,取而代之的是对更多智能算法的深入研究,以求使其能更加快速、准确地应用到实际复杂的生产排产问题中。

目前已有的排产算法大致可以分为精确算法和启发式算法。精确算法主要是指数学规划方法,包含分枝定界法和动态规划法等方法,其主要优点是能在理论上得到精确的最优解,但其计算量将随着问题规模的增大而急剧增大,因此一般适用于规模较小的排产问题,难以在实际的企业生产中得到广泛的应用。启发式算法则能在可接受的时间内,求得问题的次优解,且这些次优解的质量能较好的满足实际排产问题的要求。差分进化算法(DE)这种基于种群智能的优化算法,通过模拟生态自然机制,采用了种群个体间的差分信息生成适应性更好的新种群,以此寻求全局最优解,其具有控制参数少、原理相对简单、易于理解和实现的特点,以及可靠性高、鲁棒性强、优化性能良好等优点,在生产排产问题的优化上,DE算法具有较大的应用潜力。

虽然近年来越来越多的启发式算法被应用于生产排产的调度问题中,但由于排产调度问题的控制变量较多、规模巨大、变化较灵活,导致理论研究和实践问题存在较大差异,无法简单地把理论模型应用到实践问题中。同样,DE算法主要解决的是连续优化问题,而实际生产中的排产则是离散问题,无法直接求解。

因此,通过对DE算法的理论和生产排产模型的研究分析,发现对于排产调度问题,目前的DE算法在编码、解码方面存在缺陷,需要改进。



技术实现要素:

为了克服现有的生产排产控制方式的效率较差、有效性较低的不足,为了将DE算法应用于实际的排产调度问题中,需要对DE算法进行相应的改造以适应离散的生产排产问题,本发明提供一种生产排产调度优化方法,针对生产排产问题,根据排产模型与DE算法的特点,设计一套相适应的编解码方案,使得DE算法能够快速有效地求解出最佳排产方案,并绘制甘特图以方便生产人员的作业。

本发明解决其技术问题所采用的技术方案是:

一种生产排产调度优化方法,所述优化方法包括以下步骤:

1)模型建立:生产排产问题的求解是在满足工艺约束的条件下,确定每台机器上工序的加工顺序以及加工起终时间,以最大完成时间最小为目标建立目标函数:

约束条件:

i、j表示工件号,k、r表示机器号,Fir和Wir分别表示第i个工件在r台机器上的完成时间和加工时间;M>0足够大;aikr约束机器的加工顺序,表明若机器k在机器r之前对工件i进行加工,则aikr取1,反之取0;bijr约束工序的加工顺序,表明若工件i在工件j之前在机器r上进行加工,则bijr取1,反之取0;

2)编码:

2.1)采用基于工序的编码方法,将排产编码为所有工序的一个排序序列;

2.2)由于生产排产问题的离散性,在采用DE算法进行求解时需要进行如下操作:在基于工序的编码基础上,记录DE个体向量中各工序的位置,赋予同一工件的工序,即使用相同的数字,升序排列的m个的数字,其中这m个数字的起始数字由工件号的升序排列决定,各工件对应的数字升序排列代表其工序的先后顺序,故每个数字均只出现一次,从而将DE个体向量由基于工序的离散编码转化为记录工序位置的连续编码;

3)初始化:初始种群P={x1,g,x2,g,...,xNp,g}通过对编码后的工序随机排列产生,其中,g为进化代数,xi,g,i=1,2,…,Np表示第g代种群中的第i个个体,若g=0,则表示初始种群,设置种群规模NP,交叉概率CR,缩放因子F,输入加工机器表M和工时表T;

4)变异操作:

4.1),采用如下DE/rand/1策略生成变异个体:

其中j=1,2,…,n*m,,r1,r2,r3∈{1,2,...,Np},r1≠r2≠r3≠i,为第g代种群中第i个变异个体的第j维元素,分别为第g代种群中第r1、r2、r3个个体的第j维元素,F是缩放因子;

4.2)根据编码的设计规则,如果产生的变异个体编码规则,则重新生成,直至生成符合编码规则的变异个体为止;

5)交叉操作:

5.1)采用二项式交叉生成试验个体:

其中,j=1,2,…,N,表示第g代种群中第i个目标个体对应的试验个体的第j维元素,randb(0,1)表示随机产生0到1之间的小数,rnbr(j)表示随机产生1到N之间的整数,CR为交叉概率;

5.2)如果试验个体不符合编码规则及范围限制,则循环步骤4)和5),直至产生可行的试验个体;

6)解码:

6.1)将试验个体转化为基于工序的加工序列O[r]=[Oij],r∈[1,n*m],i为工件号,j为工序号,初始r置为0,将机器号矩阵M和工时矩阵T转化为对应工序顺序的一维向量;设置一维向量t,其中元素t[k],k∈m记录第k个机器的当前允许加工时间,初始置零;另外设置一维向量ts和tf记录每个工序的开始和结束时间,初始置零;

6.2)如果j=1,则继续6.3),否则,转至6.4);

6.3)令工序O[r]的开始时间ts[r]=t[k],进而求解工序O[r]的结束时间tf[r]=ts[r]+T[r];

6.4)以工序O[r]为起点,向前搜索该工序O[r]所属工件的前一道工序,记录其结束时间;另外,记录该工序O[r]所属机器的当前允许加工时间;取二者的较大者置为该工序O[r]的开始时间ts[r],进而求解工序O[r]的结束时间tf[r]=ts[r]+T[r];

6.5)r=r+1,返回6.2);

7)选择操作:如果试验个体优于目标个体,则试验个体替换目标个体,否则保持目标个体不变;

8)判断是否满足终止条件,如果满足则终止,并输出全局最优解。

进一步,所述步骤8)中,终止条件为函数评价次数达到预设最大次数。

再进一步,所述步骤2.1)中,赋予同一工件的工序相同的符号用以区分不同工件的工序,根据工件号在DE个体向量中出现的顺序对同一工件的工序加以区分,对于n个工件、m台机器的生产排产问题,每个DE个体是一个n*m维的向量,向量中的每一维是指具有先后依赖关系的一道工序,而且根据该DE个体的解码得到一个可行的排产方案。例如:DE个体向量为[1 2 2 3 3 2 1 1 3],数字代表工件号,均只出现m次,通过Oij表示第i个工件的第j道工序,则DE个体的有序工序表对应为[O11 O21 O22 O31 O32 O22 O12 O13 O33]。本发明的技术构思为:采用DE算法这种启发式算法,实现对实际生产中排产问题的求解。通常传统DE算法处理的是连续域内无约束的优化问题,而排产问题一般是高度离散性的,因此无法直接用于求解。针对这一问题,设计一套新的相适应的编解码方案,在满足约束条件的前提下,将离散的可行解转化为方便DE算法处理的连续解,利用DE算法快速有效的搜索特性实现最佳排产方案的快速求解,并绘制甘特图以方便生产人员对照作业。

本发明的有益效果表现在:DE算法不依赖于问题的特征信息,所特有的记忆功能使得个体之间协同进化,使得DE算法具有强大的寻优能力和快速的收敛能力,对于生产排产这类规模大、复杂度高的离散问题,也有着较好的解决能力;为DE算法设计一套与排产问题相适应的编解码方案,使得DE算法能够快速有效的进行全局搜索,最终得到最佳排产方案。

附图说明

图1是生产排产调度优化方法的基本流程图。

图2是生产排产调度优化方法对Fisher和Thompson设计的FT6-6问题进行优化求解时的平均收敛曲线图。

图3是生产排产调度优化方法对Fisher和Thompson设计的FT6-6问题进行优化求解时的甘特图。

具体实施方式

下面结合附图对本发明作进一步描述。

参照图1~图3,一种生产排产调度优化方法,包括以下步骤:

1)模型建立:生产排产问题的求解是在满足工艺约束的条件下,确定每台机器上工序的加工顺序以及加工起终时间,以最大完成时间最小为目标建立目标函数:

约束条件:

i、j表示工件号,k、r表示机器号,Fir和Wir分别表示第i个工件在r台机器上的完成时间和加工时间;M>0足够大;aikr约束机器的加工顺序,表明若机器k在机器r之前对工件i进行加工,则aikr取1,反之取0;bijr约束工序的加工顺序,表明若工件i在工件j之前在机器r上进行加工,则bijr取1,反之取0;

2)编码:

2.1)采用基于工序的编码方法,将排产编码为所有工序的一个排序序列,具体而言,赋予同一工件的工序相同的符号用以区分不同工件的工序,根据工件号在DE个体向量中出现的顺序对同一工件的工序加以区分,对于n个工件、m台机器的生产排产问题,每个DE个体是一个n*m维的向量,向量中的每一维是指具有先后依赖关系的一道工序,而且根据该DE个体的解码得到一个可行的排产方案,例如:DE个体向量为[1 2 2 3 3 2 1 1 3],数字代表工件号,均只出现m次,通过Oij表示第i个工件的第j道工序,则DE个体的有序工序表对应为[O11 O21 O22 O31 O32 O22 O12 O13 O33];

2.2)由于生产排产问题的离散性,在采用DE算法进行求解时需要进行如下操作:在基于工序的编码基础上,记录DE个体向量中各工序的位置,赋予同一工件的工序,即使用相同的数字,升序排列的m个的数字,其中这m个数字的起始数字由工件号的升序排列决定,例如:如果工序的编码为[1 2 2 3 3 2 1 1 3],则记录位置后的编码为[1 4 5 7 8 6 2 3 9],其中数字1~3代表第一个工件的工序,数字4~6代表第二个工件的工序,数字7~9代表第三个工件的工序,各工件对应的数字升序排列代表其工序的先后顺序,故每个数字均只出现一次,从而将DE个体向量由基于工序的离散编码转化为记录工序位置的连续编码,可以采用DE算法进行优化求解;

3)初始化:由于在编码设计时已经保证了随机产生的DE个体满足所有的约束条件,因此初始种群P={x1,g,x2,g,...,xNp,g}可直接通过对编码后的工序随机排列产生,而且不需要再验证每个个体的可行性,其中,g为进化代数,xi,g,i=1,2,…,Np表示第g代种群中的第i个个体,若g=0,则表示初始种群,设置种群规模NP,交叉概率CR,缩放因子F,输入加工机器表M和工时表T;

4)变异操作:

4.1),采用如下DE/rand/1策略生成变异个体:

其中j=1,2,…,n*m,,r1,r2,r3∈{1,2,...,Np},r1≠r2≠r3≠i,为第g代种群中第i个变异个体的第j维元素,分别为第g代种群中第r1、r2、r3个个体的第j维元素,F是缩放因子;

4.2)根据编码的设计规则,如果产生的变异个体编码规则,则重新生成,直至生成符合编码规则的变异个体为止;

5)交叉操作:

5.1)采用二项式交叉生成试验个体:

其中,j=1,2,…,N,表示第g代种群中第i个目标个体对应的试验个体的第j维元素,randb(0,1)表示随机产生0到1之间的小数,rnbr(j)表示随机产生1到N之间的整数,CR为交叉概率;

5.2)如果试验个体不符合编码规则及范围限制,则循环步骤4)和5),直至产生可行的试验个体;

6)解码:

6.1)将试验个体转化为基于工序的加工序列O[r]=[Oij],r∈[1,n*m],i为工件号,j为工序号,初始r置为0,将机器号矩阵M和工时矩阵T转化为对应工序顺序的一维向量;设置一维向量t,其中元素t[k],k∈m记录第k个机器的当前允许加工时间,初始置零;另外设置一维向量ts和tf记录每个工序的开始和结束时间,初始置零;

6.2)如果j=1,则继续6.3),否则,转至6.4);

6.3)令工序O[r]的开始时间ts[r]=t[k],进而求解工序O[r]的结束时间tf[r]=ts[r]+T[r];

6.4)以工序O[r]为起点,向前搜索该工序O[r]所属工件的前一道工序,记录其结束时间;另外,记录该工序O[r]所属机器的当前允许加工时间;取二者的较大者置为该工序O[r]的开始时间ts[r],进而求解工序O[r]的结束时间tf[r]=ts[r]+T[r];

6.5)r=r+1,返回6.2);

7)选择操作:如果试验个体优于目标个体,则试验个体替换目标个体,否则保持目标个体不变;

8)判断是否满足终止条件,如果满足则终止,并输出全局最优解。

进一步,所述步骤8)中,终止条件为函数评价次数达到预设最大次数。

本实施例以Fisher和Thompson设计的FT6-6生成排产调度问题为实施例,一种生产排产调度优化方法,其中包含以下步骤:

1)模型建立:生产排产问题的求解是在满足工艺约束的条件下,确定每台机器上工序的加工顺序以及加工起终时间,以最大完成时间最小为目标建立目标函数:

约束条件:

i、j表示工件号,k、r表示机器号,Fir和Wir分别表示第i个工件在r台机器上的完成时间和加工时间;M>0足够大;aikr约束机器的加工顺序,表明若机器k在机器r之前对工件i进行加工,则aikr取1,反之取0;bijr约束工序的加工顺序,表明若工件i在工件j之前在机器r上进行加工,则bijr取1,反之取0;

2)编码:

2.1)采用基于工序的编码方法,将排产编码为所有工序的一个排序序列,具体而言,赋予同一工件的工序相同的符号用以区分不同工件的工序,根据工件号在DE个体向量中出现的顺序对同一工件的工序加以区分,对于n=6个工件、m=6机器的生产排产问题,每个DE个体是一个n*m=36维的向量,向量中的每一维是指具有先后依赖关系的一道工序,而且可以根据该DE个体的解码得到一个可行的排产方案,例如:DE个体向量为[1 2 2 3 3 2 1 1 3],数字代表工件号,均只出现m=6次,通过Oij表示第i个工件的第j道工序,则DE个体的有序工序表对应为[O11 O21 O22 O31 O32 O22 O12 O13 O33];

2.2)由于生产排产问题的离散性,在采用DE算法进行求解时需要进行如下操作:在基于工序的编码基础上,记录DE个体向量中各工序的位置,赋予同一工件的工序,即使用相同的数字,升序排列的m=6个的数字,其中这m个数字的起始数字由工件号的升序排列决定,例如:如果工序的编码为[1 2 2 3 3 2 1 1 3],则记录位置后的编码为[1 4 5 7 8 6 2 3 9],其中数字1~3代表第一个工件的工序,数字4~6代表第二个工件的工序,数字7~9代表第三个工件的工序,各工件对应的数字升序排列代表工序的先后顺序,故每个数字均只出现一次,从而将DE个体向量由基于工序的离散编码转化为记录工序位置的连续编码,可以采用DE算法进行优化求解;

3)初始化:由于在编码设计时已经保证了随机产生的DE个体满足所有的约束条件,因此初始种群P={x1,g,x2,g,...,xNp,g}可直接通过对编码后的工序随机排列产生,而且不需要再验证每个个体的可行性,其中,g为进化代数,xi,g,i=1,2,…,Np表示第g代种群中的第i个个体,若g=0,则表示初始种群,并设置种群规模NP=50,交叉概率CR=0.5,缩放因子F=0.5,输入加工机器表M和工时表T:

4)变异操作:

4.1),采用如下DE/rand/1策略生成变异个体:

其中j=1,2,…,n*m,,r1,r2,r3∈{1,2,...,Np},r1≠r2≠r3≠i,为第g代种群中第i个变异个体的第j维元素,分别为第g代种群中第r1、r2、r3个个体的第j维元素,F是缩放因子;

4.2)根据编码的设计规则,如果产生的变异个体编码规则,则重新生成,直至生成符合编码规则的变异个体为止;

5)交叉操作:

5.1)采用二项式交叉生成试验个体:

其中,j=1,2,…,N,表示第g代种群中第i个目标个体对应的试验个体的第j维元素,randb(0,1)表示随机产生0到1之间的小数,rnbr(j)表示随机产生1到N之间的整数,CR为交叉概率;

5.2)如果试验个体不符合编码规则及范围限制,则循环步骤4)和5),直至产生可行的试验个体;

6)解码:

6.1)将试验个体转化为基于工序的加工序列O[r]=[Oij],r∈[1,n*m],i为工件号,j为工序号,初始r置为0,将机器号矩阵M和工时矩阵T转化为对应工序顺序的一维向量;设置一维向量t,其中元素t[k],k∈m记录第k个机器的当前允许加工时间,初始置零;另外设置一维向量ts和tf记录每个工序的开始和结束时间,初始置零;

6.2)如果j=1,则继续6.3),否则,转至6.4);

6.3)令工序O[r]的开始时间ts[r]=t[k],进而求解工序O[r]的结束时间tf[r]=ts[r]+T[r];

6.4)以工序O[r]为起点,向前搜索该工序O[r]所属工件的前一道工序,记录其结束时间;另外,记录该工序O[r]所属机器的当前允许加工时间;取二者的较大者置为该工序O[r]的开始时间ts[r],进而求解工序O[r]的结束时间tf[r]=ts[r]+T[r];

6.5)r=r+1,返回6.2);

7)选择操作:如果试验个体优于目标个体,则试验个体替换目标个体,否则保持目标个体不变;

8)判断是否满足终止条件,如果满足则终止,并输出全局最优解。

进一步,所述步骤8)中,终止条件为函数评价次数,当然,也可以为其他终止条件。

以Fisher和Thompson设计的FT6-6问题为实施例,30次独立运行的平均成功率为100%(规定算法在100000次目标函数评价次数内找到的最优解的精确度为0.00001时为成功求解),60000次函数评价次数内所求得的解的平均值为55,能够求解出该问题的最优值55,图3是生产排产调度优化方法对Fisher和Thompson设计的FT6-6问题进行优化求解时的甘特图。

以上阐述的是本发明给出的一个实施例表现出来的优良优化效果,显然本发明不仅适合上述实施例,而且可以将其他启发式算法应用到实际的生产排产问题中,同时在不偏离本发明基本精神及不超出本发明实质内容所涉及内容的前提下可对其做种种变化加以实施。

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