一种改进的关键工序算法刘智勇 徐昕江苏科技大学经济管理学院,江苏 镇江 212003摘要:针对max ///n m p F 问题,改进了关键工序法法,该算法同时注重关键工件与关键工序,通过对关键工件与非关键工件在关键工序前后的加工时间计算、比较来获得各工件加工的先后顺序,缩短最长流程时间。
并将该启发式算法与关键工序法进行了对比分析,最后利用仿真的方法来验证所提出的方法的可行性。
关键词:Flow-shop 关键工件 关键工序 启发式算法 最长流程时间 0引言Flow-shop 调度问题(flow shop scheduling problem,FSP )是许多实际流水线生产调度问题的简化模型,它无论是在离散制造工业还是在流程工业中都具有广泛的应用,因此其研究具有重要的理论意义和工程价值。
n/m/p/F max 问题是Flow-shop调度问题中的一种特殊情况,即所有工件在各台机器上的加工顺序都相同,也称流水作业排列排序问题或同顺序排序问题。
其求解方法有精确方法[1](分支定界法、穷举法等)、智能搜索法[2,3,4](神经网络法、遗传算法、蚁群算法等)、启发式算法[4,5,6,7](Palmer 算法、C-D-S 法、关键工序法、最小排序系数法等)等等。
由于Flow-shop 调度问题一般都属于NP 难题(nondeterministic polynomial)。
精确方法只能求解小规模问题,对于大规模问题几乎被认为是无效算法,智能搜索法在求解上虽比启发式算法更接近最有解,但由于设计针对具体问题的智能搜索法对于许多人来说比较困难,特别是对于实际工程人员更是如此。
所以启发式算法仍是用的很多的方法。
主要的启发式算法有Palmer 算法、关键工序法和最小排序系数法等。
其中,关键工序法贯穿着当前先进的管理思想,能够很好的对现实情况进行解释和分析。
然而关键工序法所求的可行解很可能与最优解相差甚远,鉴于此,本文对其进行了改进。
1 max ///n m p F 问题描述max///n m p F 问题可以描述为:有n 个工件在m 台机器上加工,各工件有完全相同的工艺路线,每一台机器上加工工件的先后顺序也完全相同;一个工件不能同时在不同的机器上加工;每台机器同时只能加工一个工件;各工件在加工完后立即送下一道工序;工件在机器上开始加工,必须一直进行到该工序完工,中途不允许停下来插入其它工件;所有工件在0时刻已准备就绪,机器调整时间包括在加工时间内;允许工件在工序之间等待,允许机器在任务未到达时闲置;优化目标是求出这n 个任务的一个全排列,使其最长流程时间(也称加工周期)max F 最短,则max F 的计算方法如下:,00,,11,1,1,,11,,max,00max(,)(1,2,,1,2,,i j i i i i ji j i j i j n m C C C C t C C C t F C i n j m ---==⎧⎪=+⎪⎨=+⎪⎪==⋅⋅⋅=⋅⋅⋅⎩;其中;) 上式中,i j C 代表工件i 在机器j 上的完工时间,,i j t 代表工件i 在机器j 上的加工时间。
2改进的关键工序法改进的关键工序法要求抓住关键工序和关键工件,定义关键工序为各道工序上加工各个工件总时间最长的工序;定义关键工件为各个工件在各道工序加工总时间最长的工件。
若关键工件都多个,则按照各关键工件首道工序加工时间与尾道工序加工时间的大小分组,首道工序加工时间小于尾道的工件为第一组,首道工序加工时间等于尾道的工件第二组,首道工序加工时间大于尾道的工件为第三组,优先顺序为{第一组,第二组,第三组},对于第一组中的各关键工件之间的排序则按关键工序前各道工序总加工时间从小到大排序,对于第三组的各关键工件之间的排序则按关键工序后各道工序总加工时间从大到小排序,第二组的各关键工件的排序时需先比较第一组与第三组内的工件个数,当第一组的工件个数少于或等于第三组时,第二组内工件按第一组规则排,否则按第三组的规则排。
对关键工件以外的所有工件同样比较首道工序加工时间与尾道工序加工时间,按小于、等于、大于分为三组,其组内排序规则与关键工件个组内排序规则相同。
最后按{非关键工件第一组,非关键工件第二组,关键工件第一组,关键工件第二组,关键工件第三组,非关键共建第三组}的顺序进行总排序,即可获得满意的max F 。
对于关键工序为首道工序的情形,就把次关键工序看成是上述的关键工序,排序步骤不变。
用数学语言表示如下:Step1: 对i ∀,计算,*,1m i i j j t t ==∑,对j ∀,计算*,,1nj i j i t t ==∑,定义{}",*1,*2,*,*|max(,,,)i n i A i t t t t ∈==⋅⋅⋅为关键工件,定义{}"*,*,1*,2*,|max(,,,)j m j B j t t t t ∈==⋅⋅⋅ 为关键工序。
Step2::若()1Card A >(其中()Card 表示括号中集合包含元素的个数),则⑴{}"""1,1,|i i m A i t t =<≠∅,则计算""1,1j i j j t -=∑的值,按该值从小到大排列获得"i 一个排序优先1C 。
⑵{}"""2,1,|i i m A i t t =>≠∅,则计算"",1m i j j j t =+∑的值,按该值从大到小排列获得"i 一个排序优先序列2C 。
⑶{}"""3,1,|i i m A i t t ==≠∅,则①当12()()Card A Card A ≤时,那么按⑴的规则获得3A 中元素的排序;②当12()()Card A Card A >时,那么按⑵的规则获得3A 中元素的排序;设3A 中元素的排序优先序列为3C 。
将Step2:中的各种排序优先序列一起排序,得到1C →3C →2C 。
Step3::若i A ∉,则⑴{}4,1,|i i m A i t t =<≠∅,则计算"1,1j i j j t -=∑的值,按该值从小到大排列获得i 一个排序优先4C 。
⑵{}5,1,|i i m A i t t =>≠∅,则计算",1m i j j j t =+∑的值,按该值从大到小排列获得i 一个排序优先序列5C 。
⑶{}6,1,|i i m A i t t ==≠∅,则①当45()()Card A Card A ≤时,那么按Step3中⑴的规则获得6A 中元素的排序;②当45()()Card A Card A >时,那么按Step3中⑵的规则获得6A 中元素的排序;设6A 中元素的排序优先序列为6C 。
Step4::将上述结果进行总排序优先级:4C →5C →1C →3C →2C →6C 。
经过上述四步,获得的结果就是满意解。
3算法示例设有8个零件A 、B 、C 、D 、E 、F 、G 、H 在8台机器M1、M2、M3、M4、M5、M6、M7、M8上同顺序加工,其工艺过程及工时定额见表1,试求出最长流程时间F max .现利用改进的关键工序法求解:⑴计算每个工件的总加工时间以及每个工序总加工时间,见表,可知关键工件有两个A、B,关键工序有一个M4。
⑵针对A工件,首道工序加工时间大于尾道工序加工时间,B工件,首道工序加工时间小于尾道工序加工时间,自然A排B的前面,即A→B。
⑶对剩余工件,按首道工序加工时间大于、等于、小于尾道工序加工时间分成三类,可得首道工序加工时间大于尾道工序加工时间的工件有C、D、F;首道工序加工时间等于尾道工序加工时间的工件E;首道工序加工时间小于尾道工序加工时间的工件有G、H。
①对C、D、E、F按关键工序前的各道工序时间相加(M1+M2+M3),得到T C=6+2+10=18,T D=9+4+9=22,T F=2+5+0=4,则C、D、F的排序按T值从小到大为F→C→D;②对G、H按按关键工序后的各道工序时间相加(M5+M6+M7),得到T G=5+3+2+6=16,T H=5+2+3+4=14,则G、H的排序按T值从大到小为G→H。
⑷按{首道工序加工时间大于尾道工序加工时间的工件,首道工序加工时间等于尾道工序加工时间的工件,关键工件,首道工序加工时间小于尾道工序加工时间的工件}的顺序进行全排,获得F→C→D→E→A→B→G→H。
H4算法测试与比较通过MATLAB 程序对max ///n m p F 问题进行100次仿真,将关键工序法和文中提出的改进方法进行了对比。
结果如图1所示:图1 不同规模Flow-shop 求解结果比较a) m=50,n=50b)m=100,n=100c)m=150,n=150d)m=200, n=200可见,本文所提出的改进方法普遍优于原本的关键工序方法。
当所要求解的Flow-shop问题规模较小时,如图1中 a)所示,改进方法不略于关键工序法。
但两条曲线几乎重合,优势比较小。
这说明在规模较小的Flow-shop问题中,关键工序法依然十分有效。
然而,当问题规模较大时,如图1中b)所示,本文中的改进方法明显优于关键工序法。
这说明关键工序法在大规模问题中,相对于最优解将产生明显偏差,并且这种偏差是随着问题规模的扩大而增大的。
而本文所提出的改进算法,恰恰弥补了关键工序法在大规模Flow-shop问题中表现较差这一问题。
5参考文献[1] Liu Lili Tang Guochun. A Branch and Bound Approach and Heuristic Algorithms for Scheduling a Batching Machine[J].2004,8(3):39-44.[2]REEVES C R. A genetic algorithm for flowshop sequencing[J].Computer and Operations Research,1995,22(1):5-23.[3]RAJENDRAN C,ZIEGLER H. Ant-colony algorithms for permutation flowshop scheduling to minimize makespan/total flowtime jobs[J]. European Journal of Operational Research,2004,155(2):426-438[4]叶春明生产计划与控制[M],北京:高等教育出版社,2005:391-400。