600 likes | 888 Views
Southern Taiwan University Graduate Program of Industrial Management. 南台科技大學 工業管理研究所. 結合模擬與基因演算法 求解軟體開發之多專案排程問題 Using Simulation and Genetic Algorithm to Solve The Scheduling Problem of Multiple Software Development Projects. 研 究 生:黃逸帆 指導教授:葉榮懋 中華民國一百年三月. 報告大綱. 緒論 文獻探討 研究方法 案例驗證
E N D
Southern Taiwan University Graduate Program of Industrial Management 南台科技大學工業管理研究所 結合模擬與基因演算法求解軟體開發之多專案排程問題Using Simulation and Genetic Algorithm to Solve The Scheduling Problem of Multiple Software Development Projects 研 究 生:黃逸帆指導教授:葉榮懋中華民國一百年三月
報告大綱 • 緒論 • 文獻探討 • 研究方法 • 案例驗證 • 未來研究方向與預期成果
緒 論 • 研究動機 • 研究目的 • 研究架構 緒論 文獻探討 研究方法 案例驗證 預期成果
研究動機(1/2) • 因應全球資訊化的來臨以及全球性市場的競爭與大環境變動,不論是政府機關、企業組織或個人單位針對軟體開發專案排程的需求也日益增加。 • 如何對資源做出有效的管理以及對專案排程方面做出有效的規劃便成為各個企業最首要的努力方向與目標 。
研究動機(2/2) • 妥善的資源分配與恰當的專案排程不但可使企業本身的獲利有所提升,更能加強企業自身的競爭力,還能創造出企業本身與其他競爭者有所區別的價值,因此專案排程與其資源分配是極具探討的價值存在。
研究目的 • 以系統模擬解決軟體開發的多專案排程問題,並以試算表建構多專案管理的模擬模式,並對其進行求解。 • 利用基因演算法求解多專案排程的人力資源配置問題,藉此達到在完工期限內完成與降低成本的目標,最後將其結果提供決策者做參考之依據 。
決定研究方向 文獻回顧 專案管理 專案排程 系統模擬 基因演算 建立研究架構 執行模擬與基因演算的實例驗證 分析結果 結論與建議 研究架構
文獻探討 • 專案管理 • 排程策略 • 系統模擬 • 基因演算法 緒論 文獻探討 研究方法 案例驗證 預期成果
專案的定義及特性 • Newman et al(1987)對專案的定義及描述為:組織資源的整合,以創造前所未有的某項事務,而該項事務將在組織策略的設計與建制上提供性能的能力,專案有明顯的生命週期,它開始於一個想法,透過設計、工程、製造或建構,並經由專案所有的人使用而產生。 • Kerzner(1990)將專案定義為:有一定的開始日期及完成日期,並運用特定的經費與資源來完成明確目標的工作。
專案管理 • Cleland & King (1983)將專案管理界定為應用系統途徑以從事技術複雜而以時間、成本、績效明顯定義目標的工作。 • Lewis(1998)專案管理是一種具有效率及效益的將專案成功執行的一種程序與方法;而其所關切的是如何將一項任務能如期、如質及預算內達成並充分滿足需求目標。
專案排程 • 為了要決解排程問題,許多學者提出各種排程理論及方法,主要可分為以下幾種: • 常用派工法(Dispatching Rule) • 數學規劃法(Mathematical Programming) • 啟發法(Heuristic Rule) • 基因演算法(Genetic Algorithm) • 電腦模擬法(Simulation) • 人工智慧(Artificial Intelligence)
派工法則(1/2) • Putnum et al(1971)、Holthaus & Rajendran(1997),Petroni & Rizzi(2002),皆有關於優先派工法則之詳盡研究,其中提及了最短加工時間法、先到先服務法、後到先服務法與加權最短加工時間法等。
系統模擬(1/2) • Law & Kelton (2000)等學者認為系統是對設備及其運作程序的研究,通常會設定一連串的假設與限制以規範其運作。這些假設通常會以數學式與邏輯關係陳述,組成模型,而此模型即可用於瞭解系統的行為。 • 模型的邏輯關係簡單的話,則可以用數學模式求解。然而真實系統通常相當複雜,數學模式不容易分析,故常會選擇使用模擬的方式解決。
系統模擬(2/2) • Harrell et al(1992)認為是模擬是一個以擬真系統進行實驗的方法,來確定系統對於本體結構、環境或假設的改變會如何反應。 • 建立一個類似真實系統之邏輯模式,透過運作方式,瞭解系統運作之行為,根據各種系統決策參數,提供管理者決策參數,作為改善系統績效。
系統模擬的優缺點(1/2) • Law& Kelton(2000)所提出電腦模擬的優點如下: • 當問題太過於複雜、混亂時,建構出的數學模型會過於龐大以及計算時間過長,此時模擬便是適合應用的研究工具。 • 當需要對一個系統作各種不同參數變化的實驗時,利用模擬的方法可以很方便又快速的完成結果,比直接在實體系統上實驗容易控制實驗的各個變因。 • 碰到一個需要長時間研究的系統時,利用模擬可以壓縮觀察的時間,也可以用來預估長時間以後的系統狀況。
系統模擬的優缺點(2/2) • Law& Kelton(2000)所提出電腦模擬的缺點如下: • 單一模擬方法只能依照給定的參數對系統做出評估值,並不能達到最佳化的效果。 • 構建一個完整的模擬模型是非常費時。 • 若是在模擬過程中,模式不能很完全地代表實體的系統,則模擬產生出來的系統績效值將會誤導使用者,並且模擬的結果只能反映出實體系統的部份資訊而已。
模擬方法 • 目前有三種類型電腦程式語言可進行模擬。 • 一般目的型的模擬語言,包含Visual Basic 、C++及Java。 • 特殊目的型的模擬語言,包含GPSS/H、SLAM II及SIMSCRIPT 11.5。 • 介面化的模擬程式,包含AutoMod、Arena、em-plant 、 SLX、試算表軟體(增益集)及許多其他的模擬程式語言。
基因演算法(1/3) • Neumann(1960) 提出一個自我複製的理論而奠定了基因演算法的基礎。 • Holland(1975)延續了Neumann的觀念發展出基因演算法(Genetic Algorithms;簡稱GA),其理論主要是根據達爾文的進化論發展而來,亦即母群體隨著世代演化競爭-「物競天擇,適者生存」的原理及受控變化-「複製、交配、突變」保留適應力較佳的染色體。
基因演算法(2/3) • 曾毓文(2000)基因演算法把問題的解以基因構成染色體的型態來表示,從許多的解開始進行最佳解的搜尋,藉著這些解的互相競爭,好的解被複製,並且將其基因重新組合產生新的解,而差的解則會被淘汰。然後將選擇配對的父母染色體經過交配及突變產生新的候選解,此新的候選解即為繼承父母染色體部分特質的子女染色體。而新的下一代染色體會再次被評估並選來交配育種而產生更新的下一代。經由這種類似自然界演化的搜尋過程之後,通常可以找到近似最佳解,甚至求得最佳解。
基因演算法的特點 • 方曉嵐(1998)基因演算法主要是以操作染色體來進行演化過程,在反覆演化的過程中,可看成在問題的可行區域中做系統化的多維空間搜尋;而其特點為多點搜尋、只需適應值資訊、轉移規則是隨機性而非決定性。 • 汪玉柏(1999)基因演算法的搜尋技術是以隨機搜尋為架構,但是基因演算法絕非僅是一種單純的隨機搜尋方法;因為基因演算法保存了演化過程中所提供的資訊,所以能展現出比單純的隨機搜尋方式更好的求解能力。
基因演算法的優缺點 • Lawton(1992)基因演算法的優點在於它是一種穩健且有效的搜尋技術 ,使其在搜尋時不容易落入區域的局部最佳解而能夠求得比一般演算法更好的解 。 • Lawton(1992)基因演算法的缺點在於計算時間長,但是此缺點也由於電腦技術的進步而漸漸的被克服了。
基因演算法的演化流程 • Lawton(1992)、Srinivas(1994)都提出不同的方法來改良基因演算法,但其基本精神都是從簡單基因演算法(SGA ,Holland 在1975 年所提出的基因演算法)發展出來的,簡單基因演算法的運作過程可用下圖清楚的說明。
研究方法 • 模擬程序 • 基因演算法流程 • 專案網路的建構 • 數值例 緒論 文獻探討 研究方法 案例驗證 預期成果
定義問題 蒐集數據 模型建立 確認模型 執行模擬 檢驗結果 否 是 選擇最佳決策 模擬程序
編碼 產生初始解 設定適合度 排序 舊染色體 複製 交配 突變 排序 新染色體 取代 否 是 是否符合終止條件 輸出供決策者決策 基因演算流程
專案網路的建構(1/8) • 以作業先行關係表示專案網路 • 由於本研究是使用模擬法求解多專案排程的問題,並結合基因演算法求解最佳化的資源配置,因此先使用一個單專案的數值例進行求解。
專案網路的建構(2/8) • 某建設公司剛得標一個標案,其建案為替製造商建設新廠房。 • 其合約內容為限期47週期限內完成興建廠房的計畫,否則將會有高額的罰款。 • 這項建造專案包含14項主要作業,而專案作業的先行關係以及其作業時間估計值如下表。
專案網路的建構(5/8) • 由6條路徑發現路徑4為最長之工作週數,花費的時間為44週。因此在最長之路徑完成,為44週,也就是在限期前3週完成。 • 每一個作業時間都存在許多的不確定性,因此專案時間有可能大於44週,也很有可能在47週的期限後完成。 • 有鑑於此,我們使用三點估計法作為預測值數據,並計算出平均值做為模擬的依據。
專案網路的建構(7/8) • 試算表建立模式方法共分為四個主要步驟: • 計劃或定義問題 • 建構或輸入資料 • 測試 • 分析試算表模式
專案網路的建構(8/8) • 依照作業先行關係,以試算表建構專案作業網路
數值例(1/4) • Crystal Ball模擬 • Hillier & Hillier (2003)提及(Crystal Ball)軟體具有許多的因子變數可同步,並能進行隨機亂數的抽樣模擬,也可設定個別風險因子的機率分佈,使得目標變數的模擬不再受到限制,而目標變數的機率分配更能讓決策者可隨著自身的需求調整,將問題化繁為簡。 • Crystal Ball內建的許多機率分配,方便使用者執行模擬,諸如二項分配,幾何分配,常態分配等。除此之外,此軟體不但容易使用,更方便使用者上手,並能讓使用者輕易獲得各項統計數據的輸出值,而其輸出值也可以利用圖表的方式表示。
數值例(2/4) • 網路先行關係輸入在試算表上,並且輸入每個作業所需的作業時間。 • 定義輸入欄,使試算表預測各作業經過計算出專案結束的時間 。 • 設定模擬的次數,理論上模擬的次數越多,則模擬出的結果接近真實值的機率越大,在數值例中,模擬次數為1000次。
數值例(4/4) • 結果顯示 • 最大專案時間為79.37週,最小專案時間為11.40週。 • 頻率圖指出在1000次試驗中最常出現的期間約為46週(專案的期限為47週) 。 • 平均專案時間為46.22週,統計表中的平均標準誤差則為0.12週。 • 調整頻率圖顯示專案能在47週的期限內完成的機率有60%,而有40%是超過期限47週的。
案例驗證 • 範例問題 緒論 文獻探討 研究方法 案例驗證 預期成果
案例驗證 • 某遊戲軟體開發公司欲開發一套新型的網路角色扮演遊戲軟體,但由於一套遊戲軟體結構與形成是極其複雜的,其牽涉到的技術層面甚廣,因此須將此專案之作業項目細分為13項,並依照作業的性質對人力的職掌做配對,由於資源是有限的,因此須將其資源分配達到最佳,並成功使專案總成本降到最低。 • 此遊戲軟體開發的專案作業先行關係如下表,專案簽約的完成時間為45週,如超過時間則每週罰款10000元。
案例驗證 • 根據上表,描繪網路分析圖:
案例驗證 • 遊戲軟體開發專案要順利完成的前提下,需要6種人力資源,分別為 A、B、C、D、E、F,每個種人力都允許加班,而每種人力之工作能力以每天的寫碼行數來表示。6種人力的工作能力與每行的寫碼單位成本,如下表所示。
案例驗證 • 其程式碼估計數如下表:
案例驗證 • 決策目標的成本模式如下所示: PC = 專案總成本 CT = 專案的完成時間 DC = 專案延遲的罰款/天 DT = 專案完工最後期限 TLj = 在專案的資源j下的每行寫碼總行數 RCj = 在專案的資源j下的每行寫碼單位成本 m = 專業人力的種類
案例驗證 • 建立試算表模式
案例驗證 • L欄表示每個人力每天可寫碼的行數,根據B21可改變加班代碼,並參照另一個表的代碼做計算。 • 依據加班代碼使用VLOOKUP陣列搜尋的方式,從另外一張試算表64種不同的加班組合所造成的每天寫碼行數陣列搜尋,並傳回原本的試算表格中, 如下圖所示。
案例驗證 • 依據每項作業的先行關係建立在試算表上,並在具有先行作業的作業上,加上試算表Max的函數,如下圖所示。