人工智慧遇上敏捷性:動手做之蒙特卡羅模擬

點擊上方關注,All in AI中國

作者:Ramesh Manickavel

在我的文章"數據科學中項目經理的角色"( https://dzone.com/articles/role-of-project-manager-in-data-science)發佈之後,一些項目經理建議我詳細說明滿足目標交付承諾的用例。我們將採用模擬技術探索,這是人工智能中令人驚歎的概念之一。定量分析技術(例如蒙特卡羅模擬)可以通過潛在結果的概率分佈幫助項目經理做出決策。

蒙特卡洛模擬技術在很大程度上依賴關鍵變量的隨機性來解決問題。除了關鍵參數,我們還需要了解它們之間的關係以及足夠的數據以進一步分析。

要想深入瞭解程序管理中的蒙特卡羅模擬,此鏈接可能會有所幫助。(https://www.academia.edu/8939341/Monte-Carlo_Simulation_in_Agile_Project_Estimation_Forecasting_Schedule_and_Required_Velocity)讓我們用大多數人熟悉的案例研究使用MS Excel進行一個實驗。

案例研究

Shubham是XYZ公司的首席執行官。在發佈計劃之後,他的團隊致力於為客戶提供關鍵功能。Mohit是該公司的項目經理,根據他一直跟蹤的風險和工作進度總結,已經確定了在達到目標交付日期方面的挑戰:

人工智能遇上敏捷性:動手做之蒙特卡羅模擬

Mohit:老闆,我們可能無法按照我們最初的計劃交付所有承諾的項目。

Shubham:這可不是一個好消息。Mohit,你能詳細說明一下嗎?

Mohit:由於團隊正在處理優先需求,我們正在按計劃交付高優先級項目,但是基於我們迄今為止消耗的速度和對計劃範圍的更改,我們在完成剩餘的工作方面存在挑戰。

Shubham:好的,你有什麼建議?

Mohit:讓我們將可交付成果分為兩個階段。客戶的交易展示所需的所有高優先級項目將按計劃交付。我們需要重新規劃剩餘的工作。

Shubham:這聽起來像一個很好的計劃。我和項目管理團隊還有我們的客戶討論下這個問題。雖然其餘項目的優先級相對較低,但我們仍需要提供一個可以交付的日期。你能給你的建議提供一個可靠的計劃嗎,以確保計劃不會影響我們的團隊。

Mohit:好的。

可靠的計劃意味著更有可能履行對剩餘工作的承諾。讓我們一起幫助Mohit實施蒙特卡羅模擬的分步指導。Mohit的目標是根據歷史速度和相關的隨機性尋找樂觀和悲觀的選擇。這個電子表格包含以下步驟的摘要。

步驟1:確定隨機數種子

在我們的場景中,因為我們知道最低的速度(Velocity)和最高速度(Velocity),我們可以得出:MIN (最後3次衝刺的實際速度)+RAND()*(MAX(最後3次衝刺的實際速度)-MIN (最後3次衝刺的實際速度))

我們可以選擇任何函數(例如添加風險或範圍參數),但為了簡單起見,選擇這個函數作為通常考慮調整大小時涉及的工作、複雜性和不確定性的速度。

步驟2:設置試驗

行業標準表明,蒙特卡羅模擬至少有10000次運行。由於我們無論如何都在Excel中進行,因此我們可以進行15000次運行(或更多)。設置一個1至15000的試驗列。

步驟3:隨機運行

為第一次運行作為種子函數設置速度(Velocity)的另一列(如步驟1中所述)。我們現在有兩個15000列,採用運行值填充第一列,第二列填充第一次運行的值。為了隨機化所有運行,我們需要遵循以下內容:

•選擇值為"1"的單元格(在"Trial"列下)和種子值(在"Velocity"列下)

•按Ctrl + Shift +向下箭頭鍵(我們現在選擇了2行×15000列)

•選擇數據->假設分析->數據表

•點擊"列輸入單元格"條目,然後從電子表格中選擇任何不包含任何值的單元格

"Velocity"列下的15000個單元格保持隨機運行

•如果要頻繁刷新數據,請單擊文件->選項->公式->工作簿計算->"自動"。

步驟4:繪製直方圖

•要繪製頻率分佈圖,我們首先需要bin(bucketizing)

•讓bin速度從400到625開始,增量為25

•單擊數據->分析->數據分析

•如果沒有找到這個,需要通過文件->選項->加載項->管理-> Excel加載項->'Go ' - >啟用"分析工具庫"來添加它

•單擊直方圖 ->輸入範圍(列1至列15000,其中包含"Velocity"的隨機值),Bin的範圍(Col 1至Col n,其保持bin值為425,... 625)。可以選中其他複選框,將獲得bin摘要和直方圖,如下所示:

人工智能遇上敏捷性:動手做之蒙特卡羅模擬

人工智能遇上敏捷性:動手做之蒙特卡羅模擬

現在,Mohit可以為其首席執行官提供各種選擇:樂觀的選擇(可能有500個故事點(Story Point),Velocity為33%)或悲觀的選擇(可能是575個故事點(Story Point),Velocity為83%)。然後,基於剩餘的努力,Mohit可以計算出需要多少額外的sprints。

雖然這個問題聽起來很簡單,但是為了根據歷史速度計算所需的sprints次數,蒙特卡洛模擬構建提供了更好的可能的結果範圍和相關概率,特別是當種子函數如上所述正確設置時。

總而言之,蒙特卡羅模擬與行業領域知識結合,識別影響決策的參數,收集相關數據,以及通過大量試驗建立適當的實驗時是有效的。與任何其他模型一樣,這需要恆定的反饋機制來提高預測準確性。

人工智能遇上敏捷性:動手做之蒙特卡羅模擬


分享到:


相關文章: