如何进行手工JSP排产?
给出视频中的一个例子,手工排产数据表见下:
要想获得3项作业在4台机器上的加工最大完工时间,必须知道每个作业在每台机器上什么时候开工,什么时候完工。
我们排的就是在各个机器上加工不同工件的顺序
下表为各个机器加工不同工件的顺序(也叫各个工件加工的机器顺序)
我们可以根据原始数据获得前三列数据
首先要假设机器初始阶段都为空闲,原材料都准备齐全可以随时开工,即0时刻作业和机器都可以开工。
先看作业1的第1道工序,需要在机器3上操作,而机器3首先加工工件3,所以对于作业1的第1道工序是没办法排的。
再看作业2的第1道工序,需要在机器2上操作,而机器2首先加工工件2,正好可以开工,加工开始时间是0,完工时间是8。
再看作业3的第1道工序,需要在机器3上操作,而机器3首先加工工件3,正好可以开工,加工开始时间是0,完工时间是5。——那么之后作业1的第1道工序就可以开工了,加工开始时间是5,完工时间是6。
由此,三个作业的第一道工序就排完了,然后开始排第二道序。
先看作业的第2道工序,需要在机器1上操作,而机器1首先加工工件1,正好可以开工,加工开始时间是6,完工时间是9。
再看作业2的第2道工序,需要在机器3上操作,而此时机器3已经加工了工件3、1,此时需要比较机器3完成上一个工件的完工时间(机器3完工工件1时间为6)以及工件2上一道工序的完工时间(工件2的第1道工序完工时间为8),取二者间的大值作为本道工序的开工时间即8,完工时间是13。
再看作业3的第2倒工序,需要在机器4上操作,而机器4首先加工工件3,正好可以开工,此时机器4正好空闲(只要机器空闲,那么本道工序的开工时间就取决于本道工序的上一道工序的完工时间;如果机器上一阶段在加工其他工件,就需要考虑机器什么时候加工完上一个工件与本道工序上一道工序完工时间作比较),加工开始时间是5,完工时间是9。
由此,三个作业的第二道工序就排完了,然后开始排第三道序。
先看作业1的第3道工序在机器2上操作,而此时机器2已经加工了工件2,所以需要比较机器2在作业2的第一道工序的完工时间(8)和作业1的第2道工序完工时间(9)大小,所以加工开始时间是9,完工时间是15。
再看作业2的第3道工序在机器1上操作,而此时机器1已经加工了工件1,所以需要比较机器1在作业1的第二道工序的完工时间(9)和作业2的第2道工序完工时间(13)大小,所以加工开始时间是13,完工时间是23。
再看作业3的第3道工序在机器2上操作,而此时机器2已经加工了工件2、1,所以需要比较机器2在作业1的第三道工序的完工时间(15)和作业3的第2道工序完工时间(9)大小,所以加工开始时间是15,完工时间是23。
由此,三个作业的第三道工序就排完了,然后开始排第四道工序。
先看作业1的第4道工序在机器4上操作,而此时机器4已经加工了工件3,而前面还有作业2没有安排,没办法排,所以要先把作业2安排掉,见下。作业2排完后,此时机器4已经加工了工件3、2,所以需要比较机器4在作业2的第3道工序的完工时间33)和作业1的第3道工序完工时间(15)大小,所以加工开始时间是33,完工时间是40。
作业2的第4道工序在机器4上操作,而此时机器4已经加工了工件3,所以需要比较机器4在作业3的第一道工序的完工时间(9)和作业2的第3道工序完工时间(23)大小,所以加工开始时间是23,完工时间是33。
最后再看作业3的第4道工序在机器1上,而此时机器1已经加工了工件1、2,所以需要比较机器1在作业2的第四道工序的完工时间(23)和作业3的第3道工序完工时间(23)大小,所以加工开始时间是23,完工时间是32。
所以可以看到最大完工时间是40。
当然画框的排产方式只是其中的一种可行解(并非最优解) 。
用遗传算法解得的最优解甘特图表示如图:
可以看到最优解应该为33,本节仅是用来理解排产的思路是什么,不同的排法,最大完工时间也有区别,所以我们要研究的就是怎么排使得最大完工时间最小,这就是作业车间调度问题(JSP)的核心,未来会学到如何通过遗传算法获得最优解。