因為重回校園再進修的緣故,意外地接觸到「系統模擬」(Simulation)這門技術。先前的求學經驗當中,靜態的數量規劃與分析技術是接觸了不少,偏偏動態規劃與模擬這方面的課程就沒啥接觸。
系統模擬(Simulation),可以泛指根據一項或多項特定目的,透過電腦建構數學模型來描繪真實世界之情境,並以模擬結果的作為決策輔助參考的技術其亦為作業研究的一項重要分歧。這樣的描述可能還有點模糊,不妨參考以下簡單舉例:
- 以每半小時為時間切割單位,模擬一家速食店在一個月當中的來客數、餐點銷售數量、以及速食店對訂單的消化量,以作為最佳化人員排班及物料採購規劃的參考。
- 以每半小時為時間切割單位,模擬一條公車路線的各站牌的等候人數、上下車人數、班次數量、發車時間間隔等等。以作為最佳化發車班距與路線調整的參考依據。
透過上述的例子,讀者們應該可以發現,模擬的重點在於一定時間與空間狀態的條件下,系統內所發生的變化,這也是之所以為什麼說系統模擬是動態分析技術的原因。就實務上,靜態的分析技術、與動態的模擬技術,時常是互補的,都是使用者在進行決策時的一項支援工具。相關介紹我就不多提了,在這裡僅簡單聊聊這學期的修課心得:
#目的
其實這該是一個通用性的法則:你總得先清楚明白你是為了什麼目的而要來建一個模擬專案。從瞭解目的,到進一步拆解問題架構,然後才是轉化成你所使用的模擬工具的樣子。
#成本
對於愈龐大、愈複雜的系統而言,要建構出夠全面、詳細的模擬系統,是很花時間且很累人的一件事。如果用傳統靜態的數量方法再搭配專家建議,就能夠達成所要的目的,那何必大費周章去刻一個模擬系統出來?又或者,你原本就擅長某項程式語言或其他模擬工具,在不影響目標達成的情況下,又何必從頭再去學另一套模擬工具?
#工具
瞭解目的與成本之後,再來就可以來思考,有哪些模擬工具或技術可以使用。現行所能找得到的系統模擬專門軟體非常多,光是 Open Source 的模擬軟體,就能用來建構非常強大的模擬專案了,更別提商用的套裝模擬軟體。此外,使用者也該根據模擬的目、專業性、成本等等因素,而選用不同的模擬軟體。
#融會貫通
作為一名未來的資料科學工作者,上述的三項心得重點,完全能套用在資料科學的專案工作上。這也是我重回校園後的一項習慣,就是不斷地思考,在碩士班課程當中所學的知識技術,除了變成我成績單上的學分之外,還能如何在我的未來產生連結。這同時也是避免讓自己陷入了工具規律的迷思。
常見的系統建模方法
這一類的方法,若要認真講的話,還不如去看維基百科或者專門教科書。所以,這裡就只放我在這學期的課堂中,有接觸到並且有印象的,而且我也只陳列幾個關鍵詞彙,主要是作為自己的學習記錄用,畢竟詳細介紹這些方法,並非本文的重點。
#簡單範例
以下案例皆以每十分鐘為單位,模擬起訖時間區間為一週:
- 模擬一家速食店的來客數, 餐點銷售數量, 以及速食店對訂單的消化量,以作為最佳化人員排班及物料採購規劃的參考。
- 模擬一條公車路線的各站牌的等候人數, 上下車人數, 班次數量, 發車時間間隔等等。以作為最佳化發車班距與路線調整的參考依據。
上述即為簡單的「離散事件模擬」的問題描述。
常見的系統模擬軟體
既然課都修了,軟體也學了,總不能只談談一些觀念與心得,當然也介紹一點常見的系統模擬軟體。要特別說明的是,那種還需要特地寫 code 的模擬軟體就不多作介紹了(我們當然都知道許多的程式語言,都能建構龐大、複雜、且高度專門化、客製化的模擬專案)在這裡只介紹操作上十分直觀,透過物件拖曳、連接,就能完成的模擬軟體。
此外,這裡也只介紹 Open Source、或者有提供免費練習的教育版的模擬軟體。這也是貫徹本部落格的核心理念:萬事都可以靠著開放式資源來學習。
通用性模擬軟體
這裡的「通用性」,是指建模彈性較高,且未針對特定應用領域而特化的模擬軟體。也因為此特性,該類模擬軟體在一般大專院校的普及率也較高,相對地,其在商業市場上,較難以與專為特定領域設計的模擬軟體競爭(但官方仍會設計提供給企業級客戶的專門模組)。屬於該類型軟體的有:
我在碩士班課堂上學的就是這一套,只有支援 windows 作業系統。高雄海洋科技大學運籌管理系的郭幸民老師有在國內開授相關課程,並為該軟體撰寫專門的中文教科書。
也只有支援 windows 作業系統。在台灣,則有東海大學工業工程與經營資訊學系的翁紹仁老師,有為該軟體撰寫專門的中文教科書。
3D 模擬軟體
這一類軟體以能夠建構出高精細度的 3D 模型為特徵,在製造系統、供應鏈、運輸物流、作業流程模擬等領域,有良好的應用性,較屬於專為特定應用領域而設計的模擬軟體。屬於該類模擬軟體的包含:
只有支援 windows 作業系統。高雄海洋科技大學運籌管理系的蔡坤穆老師有開授相關課程,並為該軟體撰寫專門的中文教科書。
同樣只支援 windows 作業系統。國立清華大學大學工業工程與管理學系的桑慧敏老師、工研院、中國生產力中心,皆曾開授相關課程。
Agent-based 模擬軟體
該類軟體是一種用來模擬具有自主意識的智能體(獨立個體或共同群體)的行動和相互作用,其在社會科學、生物學、及商業活動等領域有良好的應用。該類軟體包含:
一款能夠進行雲端線上模擬,及 GIS 整合的模擬軟體。值得一提的是,它支援 windows、Mac OS 和 Linux 不同作業系統的運作,也提供繁體中文介面,但在台灣則較少有大專院校教授該軟體。
是由美國麻省理工學院的研究團隊開發出來的 Open Source
Agent-based 模擬軟體,若 GOOGLE 它的圖片,可以找到許多看起來像是早期 8-bit 電玩遊戲的模擬畫面XD 它支援 windows、Mac OS 和 Linux 等不同作業系統的運行。
是由美國西北大學的研究團隊開發出來的 Open Source
Agent-based 模擬軟體。同樣支援 windows、Mac OS 和Linux 等不同作業系統的運行。
最後,既然都修完一門課了,總是有做個什麼模擬專案期末報告之類的吧?當然有,我以【2018台北市長選舉】為題,刻了一個模擬各參選人得票數的模擬專案(←完全跟本科背景八竿子打不著的題目),至於模擬結果呢?歡迎各位與聯繫
參考資料: