前面講到計劃評審技術(shù)PERT中三點估計項目完成概率的計算,這里我們應(yīng)用模擬仿真來近似計算這個概率。
在三點估計中使用了每首工序中的三種估計值——最可能估計、樂觀估計和悲觀估計,這些數(shù)據(jù)分別用來估計最可能時長、最小時長和最大時長。在計劃評審技術(shù)中,還假設(shè)每道工序持續(xù)時間的概率分布為β-分布。通過三個簡化的近似假設(shè),獲得按時完成任務(wù)的粗略估計概率。
而在模擬仿真中,則不需要計劃評審技術(shù)中的三個簡化假設(shè),同時也不局限于哪一種概率分布,相反,可以靈活運用各種概率分布。
仿真通過隨機生成符合某種概率分布的不同事件來模擬一個隨機系統(tǒng)的運行。它可以用來預測復雜以至不易應(yīng)用數(shù)學模型進行分析的系統(tǒng)表現(xiàn)。使用計算機模擬仿真可采用四種軟件:一是電子表格軟件;二是通用程序語方來編寫仿真程序;三是通用仿真語言來設(shè)計仿真模型;四是面向應(yīng)用的仿真器。下面介紹使用Crystal Ball對項目完成概率進行模擬估算。
Crystal Ball是基于Excel的一個插件,可用來建模、預測、模擬和優(yōu)化。對比Excel規(guī)劃求解工具,Crystall Ball可以處理變量較多,較復雜的,不易使用Excel規(guī)劃求解工具來求解的問題。
Crystal Ball的下載:https://www.oracle.com/applications/crystalball/.
下載安裝后,在Excel加載項中激活Crystall Ball:
在“選項”對話框中切換到“加載項”選項卡,從“管理”下拉列表選擇加載項類型(如COM加載項),點擊“轉(zhuǎn)到”按鈕;
在彈出窗口中勾選目標加載項并確認啟用。
使用Crystal Ball 執(zhí)行仿真有幾個步驟:
1.定義隨機的輸入單元格;
2.定義預測的輸出單元格;
3.設(shè)定運行參數(shù);
4.運行仿真;
(1)定義隨機的輸入單元格
一個隨機的輸入單元格是一個用來輸入隨機數(shù)的單元格。Crystal Ball將每一個這樣的隨機輸入單元格都作為一個假設(shè)單元格(assumption cell)。
定義假設(shè)單元格的步驟:
? ? ? ? ?1)點擊選擇一個單元格;
? ? ? ? ?2)如果這個單元格沒有包含有一個數(shù)值,那么任意輸入一個數(shù)值;
? ? ? ? ?3)點擊Crystal Ball 工具條的第一個按鈕(定義假設(shè)/Define Assumption);
? ? ? ? ?4)點擊選擇分布圖例(Distribution Gallery)中相應(yīng)的分布曲線,選擇一個合適的概率分布函數(shù)輸入到這個單元格中;
? ? ? ? ?5)點擊確定按鈕,生成了一個選定分布函數(shù)的對話框;
? ? ? ? ?6)在對話框中輸入此分布函數(shù)的參數(shù)(可關(guān)聯(lián)到電子表格中包含有這些參數(shù)數(shù)值的單元格);如果需要的話,可在假設(shè)單元格中輸入一個名字標簽;
? ? ? ? ?7)點擊確定。
(2)定義預測的輸出單元格
定義預測單元格的步驟:
? ? ? ? ?1)通過點擊選中一個單元格;
? ? ? ? ?2)點擊 Crystal Ball 工具條的第三個按鈕(定義預測/Define Forecast),彈出定義預測對話框(Forecast Dialogue);
? ? ? ? ?3)在對話框中輸入一個名字標簽,并且定義預測單元格的單位;
? ? ? ? ?4)點擊確定。
(3)設(shè)定運行參數(shù)
設(shè)定運行參數(shù)由試驗次數(shù)和決定如何執(zhí)行仿真的選項組成。點擊 Crystal Ball 工具條的運行參數(shù)按鈕(Run Preferences),在對話框中,輸入或修改參數(shù)設(shè)定值。
(4)運行仿真
點擊開始仿真(Start Simulation)按鈕。如果之前已經(jīng)運行過仿真,那么應(yīng)該在本此運行前首先點擊重置仿真(Reset Simulation)按鈕來重置仿真。
用仿真技術(shù)來估計項目在要求工期內(nèi)完成的概率,首先需要了解項目中,每個工序的工時具有一定的不確定性,要估算整個計劃的完成時間在要求工期內(nèi)的概率,首先要知道這個項目時間的概率分布。通常,在處理工序持續(xù)時間時長時常使用三角分布,如下圖:最小值,最可能值,最大值分別代表樂觀估計、最有可能估計和悲觀估計。
我們將每道工序的工時估計列入表中,如下圖:
樂觀估計、最可能估計、悲觀估計 數(shù)值列入E、F、G列中,H列和J列給出了每道工序的開始時間和結(jié)束時間。公式如下:
由于工序時間主要是可變的,所以單元格 I5: I26 作為假設(shè)單元格,對于仿真的每次試驗,完成時間的最大值是工序最后工序給出的項目持續(xù)時間,這個值輸入到預測單元格J26 中。假設(shè)單元格中的工時分布采用三角分布,樂觀估計、最可能估計、悲觀估計 數(shù)值 輸入三角分布的最小值、最可能值、最大值中。如下圖:
從I6:I26的輸入采用復制粘貼方式來完成:其中,單元格I19輸入固定值8,這是因為這道工序的o=p=m=8,說明這道工序時間實際上是固定值。設(shè)置后如下圖:
設(shè)置完后,這個模型總結(jié)如下:
輸入單元格(假設(shè)單元格):單元格I5 :I18 和 I20 :I26
輸出單元格(預測單元格):單元格 J28
現(xiàn)在我們已經(jīng)準備好了執(zhí)行模型仿真。在運行選項對話框中默認設(shè)定 1000 次作為仿真次數(shù),運行后我們來看頻率圖統(tǒng)計表和百分比圖的結(jié)果。
如果仿真運行再重復 1000 次,這個百分數(shù)將會稍微地變動一點。由此看出,仿真估計在決定項目計劃是否應(yīng)該改善以提高能滿足截止期的可能性方面提供了一個良好的管理向?qū)А?/p>
使用敏感性圖進一步提供關(guān)鍵分析
Crystal Ball的敏感性圖很清楚地指出了項目計劃的什么環(huán)節(jié)應(yīng)該被修改。點擊 CrystalBall 工具條上的敏感性圖(Sensitivity Chart)打開它,如下圖所示:
在兩個變量之間的相互關(guān)聯(lián)系數(shù)衡量了這些變量之間的依存關(guān)系的強度。每個相互關(guān)聯(lián)系數(shù)都衡量了工序時間在多大程度上影響了項目的完成時間。相互關(guān)聯(lián)系數(shù)越高,則這個時間的影響程度就越大。所以,那些對應(yīng)相互關(guān)聯(lián)系數(shù)最高的工序,就是應(yīng)該盡最大努力來縮短時間的工序。
圖中 說明工序C1(I7)的時間比其他的任何一個工序的時間都有相對較高的相互關(guān)聯(lián)系數(shù)。工序C1在關(guān)鍵路徑上,,完成工序C1 上的任何延遲都會推遲處于它之后的所有工序的開始時間。從單元格E7:G7 說明了工序C1的時間是最容易變化的,它的最可能時間和最悲觀時間相差高達6天,而最可能可能與最大時間相等,所以超過最可能時間的較長延遲也會經(jīng)常發(fā)生。
由于工序C1的相當高的相互關(guān)聯(lián)系數(shù),縮減項目完成時間的最好方法是關(guān)注于縮減這一工序的時間(和它的變動范圍)。這樣就可以通過修改項目計劃以指派更多的人力、更好的設(shè)備、更強的監(jiān)督管理等實現(xiàn)項目的按時完成。