① 《生產與運作管理》:如何用約翰森法則(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 問題的最優解
得到最優順序後再利用最長流程時間演算法進行計算