① 《生产与运作管理》:如何用约翰森法则(Johnson)求出最优解(最短加工时间)
Johnson算法是一种专门针对n/2/F/Fmax问题的优化算法。其核心步骤如下:
1. 首先在加工时间矩阵中找出最短的加工时间。
2. 若最短时间在M1上,则对应工序尽可能往前排;若在M2上,则尽可能往后排。随后划去已排序工件的加工时间。若最短时间有多个,则随机选取一个。
3. 若所有工序已排序,则算法结束。
以ai表示工件Ji在M1上的加工时间,bi表示在M2上的加工时间。
接下来,通过一个实例来解释Johnson算法的操作流程。考虑图1中所示的6/2/F/Fmax问题。
首先,找到最短加工时间为1的工序,由于它位于M1上,因此将工件2排在第一位,图1变为图2。之后,将工件2的加工时间划掉,得到图3。
在图3中,下一个最短加工时间2出现在M2上,对应工件3,所以将工件3排在最后,即第6位,得到图4。工件3的加工时间被划掉后,得到图5。
图5中,最短的3个加工时间中最小者为3,它位于M1上,因此将工件5排在第2位,得到图6。工件5的加工时间被划掉,得到图7。
接着,在图7中寻找最短加工时间,这里选择为4的工件6,排在第3位,得到图8。工件6的加工时间被划掉,得到图9。
图9中,最短加工时间4再次出现在M2上,将工件4排在第5位,得到图10。工件4的加工时间被划掉,得到图11。
最后,仅剩工件1,排在第4位,得到图12。因此,最优加工顺序为S=(2,5,6,1,4,3),对应的最短加工时间为28。这一结果在图13中进一步说明。
本算法仅为一种通用解决方案,不同场景可能需灵活调整,具体情况请参考实际应用。
② 用(Johnson)算法求以下8\2\F\Fmax 问题的最优解
得到最优顺序后再利用最长流程时间算法进行计算