本章討論過去學者對RCPSP 的整理分類,以及曾針對 RCPSP 發表過的求解 方法,接著回顧本研究比較的標竿演算法與求解方法的文獻,最後介紹本研究所 使用的RCPSP 測試集(test dataset)。
2.1 專案排程問題
專案排程問題(project scheduling problem)的種類相當廣泛,從廣義的分類法 來看,過去Herroelen (2005),從專案規劃方法的變異程度(variability)和相依程度 (dependency)做分類,RCPSP 是屬於低變異程度(deterministic)和低相依桯度 (single project)的專案問題。
也有其他學者針對RCPSP 的相關議題做討論。Herroelen et al. (1998b)在文 中首先對RCPSP 做了回顧性的探討,接著分別對 PRCPSP(preemption RCPSP)、
考慮淨現值的RCPSP、…等延伸議題做求解方法和實驗結果上的討論;Brucker et al. (1999)同樣的針對 RCPSP、MRCPSP(multi-mode RCPSP)等各種不同的有限資 源專案問題,對問題做分類、定義,並且分析求解方法和實驗結果。
2.2 RCPSP 求解方法
近十年來,已有相當多的文獻研究RCPSP 的求解方法,像是早期以數學模 型 來 求 解 的 方 法 有 整 數 規 劃(Integer Programming) 、 動 態 規 劃 (Dynamic Programming)以及分支界線法(Branch-and-Bound procedure)。過去以分支界線法 來求解的文獻有Demeulemeester & Herroelen (1992, 1997)、Brucker et al. (1998)、
Mingozzi et al. (1998)和 Sprecher (2000),雖然分支界線法能在中小問題求得最佳 解(exact solution approaches),但隨著專案問題的複雜度增加,求解空間也以指數
5
所以便開始有學者發展啟發式解法(meta-heuristic),期望能在較短時間內求 得近似最佳解。Cho & Kim (1997)提出模擬退火法求解 RCPSP,Zhang et al. (2006) 則是將粒子群最佳化(particle swarm optimization)應用在 RCPSP 上,並且自行建 立一個簡單的專案問題,跟傳統的基因演算法比較求解績效。
從回顧性文獻來看,Hartmann & Kolisch (2000)將當時各種啟發式解法加以 整理分類,並且列出各個方法在 PSPLIB 測試集的求解績效,而最好的方法是 Boulimen & Lecocoq (1998)以模擬退火法和 Hartmann (1998)使用基因演算法來 求解。接著在Kolisch & Hartmann (2006)提出的文獻中,同樣將近年來新的求解 方法做整理,並且指出各類方法的特性,以及過去有哪些文獻是使用這些方法 的,最後在實驗結果的部分,有6 個新的方法的求解績效優於 Boulimen & Lecocoq (1998)和 Hartmann (1998),包括:Hartmann (2002)提出新型的基因演算法;
Kochetov & Stolyar (2003)結合基因演算法和禁忌搜尋法;Valls et al. (2003a)提出 新型的基因演算法;Alcaraz et al. (2004)將 Alcaraz & Maroto (2001)的基因演算法 改良;Valls et al. (2005)提出新的技術來改良過去的方法;Debels et al. (2006)結合 分散搜尋法及模擬電磁演算法來求解。其中以Kochetov & Stolyar (2003)、Valls et al. (2003a)、Alcaraz et al. (2004)和 Debels et al. (2006) 4 種方法績效最好。而 Debels et al. (2006)提出的分散搜尋法結合模擬電磁演算法的架構,能有效在短時間內得 到好的求解品質,並且跟該文獻的其他方法比較也有很好的績效。
2.3 PSPLIB 測試集
為了驗證演算法是否有足夠的能力求解RCPSP,會使用各種測試集(test data set)來試驗。像是 Cho & Kim (1997)以 Patterson 所建構的 110 個專案問題做為測 試集,最後有105 個問題都能求得最佳解。
本研究使用的測試集PSPLIB,全名為 project scheduling library,是由 Kolisch
& Sprecher (1996)建置而成,其建置的方式使用 Kolisch et al. (1995)所提出的
“ProGen”產生器,可以藉由參數的調整來產生出複雜度相異的專案問題。
PSPLIB 只適用於測試 RCPSP 和 MRCPSP 兩種專案問題。測試集共有 4 種 主要情境,以任務(job)數目做劃分,分別有 J30、J60、J90 和 J120。其中前 3 種 情境內各有480 個例子, J120 的情境中有 600 個例子,而本研究只比較 J30、
J60 和 J120 情境(Kolisch & Hartmann, 2006)。
其中每一個例子裡都包含有任務相依關係及資源需求限制等資訊。由於每篇 文獻的演算法是在不同的電腦上測試,為了有一致的比較基準,PSPLIB 提供了 3 種停止條件,分別是演化過程產生 1,000、5,000 或 50,000 個解就停止,並且在 相同的停止條件下比較求解品質。
跟其他演算法比較求解品質時,本研究以3 種情境在 3 種不同的停止條件下 合計所有例子的總完工時間 (sum of makespan)來比較,並且在附錄附上各種求 解組合跟PSPLIB (http://129.187.106.231/psplib/main.html)提供的最佳解的比較結 果:J30 是以最佳解(best solutions)為比較基準,J60 和 J120 因為還沒有真正的最 佳解,所以同樣用PSPLIB 提供目前能找到的最佳解(currently best solutions)來比 較。最佳解的公佈時間分別是:J30 為 1997 年 8 月 4 日公佈,J60 是 2007 年 6 月9 日更新,J120 則是 2007 年 6 月 8 日更新。
7