1.前言
流水作业法在目前的施工组织设计应用较广,但在实际应用中常常遇到如何确定施工段合理次序的问题。因为一个任务施工分成若干个施工段后,每个施工段都要经过相同的若干道工序,最然由施工工艺决定的工序顺序是不可以改变的,但是每道工序在各个施工段上的流水顺序确实可以改变的,不同的流水顺序总工期不同。这就要求我们要找出一个总工期最短的流水次序,实践证明,约翰逊-贝尔曼法则能够较好地解决这个问题。
2. 基本原理
先行工序施工工期短的要排在前面施工后续工序施工工期短的应安排在后面施工。亦即,首先列出m项任务的“工序工期表,然后在表中依次选取最小数,而且每列只选一次,若此数属于先行工序,则从前排,反之,则从后排。
3.推导与应用
有n个机器零件的集合记为:S={J1,J2,J3…,Jn},设最优加工方案第一个加工的零件是i,当第一台机器加工零件i时,第二台机器需要t时间空闲下来。该加工方案第一个零件开始在第一台机器上加工到最后一个零件在第二台机器上结束所需要的总时间是T(S,t),如图所示:
t有两种情况,可能比t1i小,也可能比t1i大。
接下来当第一台机器加工余下集合S-{ i }的零件时,第二台机器需要 t' 时间空闲下来,如图所示:
这个空闲的时间 t' 等于 t2i (第一种情况),或者等于 t - t1i + t2i (第二种情况)。
即:t' = t2i + max { t-t1i,0 }。
那么总加工时间为:T(S,t)= t1i + T( S - { i } ,t' )= t1i + T(S - { i },t2i + max{ t - t1i,0} )
因为不知道第一个加工零件i是多少,因此i可以是S中任何一个零件编号,那么最优解(最少的加工时间)的递归式是:
T(S,t)= min { t1i + T(S - { i },t2i + max{ t - t1i,0} ) }
集合S有n!种加工顺序,但对于其中的两个零件编号i、j来说,只有两种方案:
(1)先加工i,然后加工j。
(2)先加工j,然后加工i。
哪种方案是最优的呢?
详细推论不在下面给出,下面直接给出结论:
方案1的加工时间是:t(ij)=t2j+t2i+max{ t - t(1i) - t(1j) ,-t(1j),-t(2i) }
方案2的加工时间是:t(ji)=t2j+t2i+max{ t - t(1i) - t(1j) ,-t(1i),-t(2j) }
可以看出方案1和方案2的区别仅仅在于 tij 和 tji 中的max的最后两项。
如果方案1比方案2优,则:
max{ -t1j,-t2i } ≤ max{ -t1i,-t2j }。
两边同乘以-1
max{ t1j,t2i } ≥ max{ t1i,t2j }。
因此,方案1比方案2优的充分必要条件是:
max{ t1j,t2i } ≥ max{ t1i,t2j } !!!!!
记住这个结论!!!