淺聊 | 離散事件模擬(DES)是什麼?
Part 1 什麼是模擬?
先說模擬,模擬就是模擬,是應用模型對現實事物的再認識。模擬的目的是為了認清事物。模擬分兩種:
1、一種是認識事物的外在表現,比如售樓處的微縮沙盤,汽車設計時電腦中的3D模型,展示微觀世界的短片等等。這些模擬手法解決了觀察事物外觀的種種困難,帶我們看清了「廬山真面目」。
2、另外一種模擬是為了認識事物的內在規律,這一類模擬的範圍其實更加寬泛。比如細胞實驗模擬了細胞中的環境,能夠幫助認識藥物代謝的規律。飛機模擬駕駛,讓操作人員在安全的虛擬環境中認識系統操作的方法。宏觀經濟學模型,研究國民生產總值、利率、失業率等市場指標的相互作用。這些模擬手法,讓我們能夠預見事物的發展方向,得以「一葉而知秋」。
Part 2 什麼是離散事件模擬?
那離散事件模擬(Discrete Event Simulation,縮寫為DES)是什麼呢?它首先關注的是事物的內在規律。我們把這些字拆開來看下:
「Discrete」是離散,在一個離散的系統中,我們總是能夠找到一個時間點來標註系統的變化,比如研究對象進入系統和離開系統的時間點,進入隊列和離開隊列的時間點,開始加工和完成加工的時間點等等。這些時間點在時間軸上是離散而非連續的,而系統狀態僅在離散的時間點上發生變化。
「Event」是抽象的事件,就是我們在時間軸上標記的一系列事件。這些事件所發生的時間或是我們提前制定好的,或是受到其他事件的影響而發生,或是在某些條件到達的時刻發生。總之,一定能根據規律找到事件發生的那個時時間點,而這些時間點,就是我們預測系統變化的依據。
「Simulation」就是屬於前文提到的第二種模擬,就是實現預測的方法。
離散事件模擬就是根據事件在離散的時間點上變化的規律,來預測系統變化的方法。
Part 3 手工模擬
認識了離散事件模擬的概念,再來看一類典型的問題:隊列。在系統存在一定隨機性的情況下,隊列的狀態是會隨著時間而不斷變化的,為了尋找它的規律,我們就可以應用離散事件模擬的方法。比如,得知了每一個研究對象到達隊列的時間和它的排隊方式,我們就可以記錄它們進入隊列和離開隊列的時間,然後就可以總結出隊列的平均等待時間,隊列的平均長度等信息,以便我們做出決策。
隊列的問題非常實際,比如在在銀行排隊多久才能輪到我?生產線上會有多少等待加工的零件?紅綠燈路口隊列會有多長?想想看,你會怎麼解決這些問題。
先拋開離散事件模擬的方法,我們先試試看用研究「動態隨機過程」的方法解決,這個方法就是將現實的問題歸納成為典型的數學問題,如M/M/1問題,再套用相應的公式。
最典型的M/M/1模型就是:研究對象的到達是泊松過程/工序的操作時長服從指數分布/工序的資源個數是1。這時,研究對象在隊列中的平均等待時間就可以套用公式:
(: 工序操作的平均時長,:研究對象的平均到達時間間隔)
這種典型問題用套路解決,省時省力。但是如果我想要問更具體的問題,隊列中等待時間超過5分鐘的人有多少?那些很幸運,不用排隊就直接接受服務的人有多少?這對數學功底的要求就比較高了。
所以我們回到離散事件模擬:我們會記錄系統的每一次變化在時間點上的位置,這樣忠實的記錄將會給我們一份有力的依據,任何統計上的問題都可以迎刃而解。實現它的最原始方法,是手工編製一份事件發生表,在每一次系統變動的時間點,記錄系統狀態的各項指標,最後統計這些指標,找出問題的答案。
現在就假設我們建立了這樣一個簡單的M/M/1模型:
我們根據泊松分布隨機生成了研究對象的到達時間:0.00, 1.73, 3.80, 3.79, 4.41, 18.69, 19.39
同時根據指數分布隨機生成了這一道工序的操作時長:2.90, 1.76, 3.39, 4.52, 4.46, 4.36, 2.07
並且設定資源的個數只有1個。
下面大家感受一下手工模擬的過程:
大家可以感覺得出來,僅僅是針對M/M/1這樣簡單的規則,手工記錄離散事件的工作就已經如此繁瑣,那麼手工研究一個複雜系統,幾乎是不可能的。Part 4 計算機模擬
感謝科技的發展,計算機的登場改變了整個格局,記錄每一次系統的動態信息,不再是一項繁瑣的工作,而且永遠不怕出錯:離散事件模擬軟體可以根據流程建模,進行模擬實驗並記錄數據,最終統計出結果。
現在的模擬軟體已經可以做到在同一個系統內同時運行多達幾千萬個對象,且時間長度無限。這是在沒有計算機的情況下很難想像的一件事情。
一部分離散事件模擬軟體還發展出了動畫效果,在研究系統內在規律的同時還能幫助我們認識事物的外在表現。通過2D或3D動畫,軟體可以模擬出現場場景,讓我們更直觀地感受到系統的變化。由於模擬動畫是建立在邏輯模型基礎之上的,所以動態變化會更加真實。
最後,祝離散事件模擬在中國有一個光明的前途。
推薦閱讀:
※論FPGA模擬重要性
※珍貴文獻掃描實現模擬複製的應用
※【知乎Live】金融市場模擬:Agent-based model入門
※胰島素注射微泵的模擬設計
※國產單機遊戲波西亞時光名列Steam榜單第四,僅次於GTA5,國產單機遊戲的希望?