當你開始玩SimEvents這套軟體時,有兩個是你要知道的概念,一個是Entity,另一個是Event。整套SimEvents主要是模擬Discrete-Event Simulation (DES)的情境,其中模擬的主體是Entity,而Entity之間的動作是由Event所控制。
Entity
什麼是Entity(中文,翻譯成實體、個體、本質,以下用"實體"說明)呢?DES主要是涉及離散項目(discrete items)的模擬,而此離散項目則稱之為Entity。依照模擬的環境不同,其Entity的實物也不一樣,比方說你要模擬網路行為,則Entity就是封包(packet),如果你要模擬等公車的時間,則Entity就是乘客(passenger)。
這麼解釋好了,DES將現實環境中的情形映射(mapping)到simulation當中來處理,抽象層面的項目是Entity,具體層面的項目則是你看得到的東西。
另外你要注意的地方有,Entity在SimEvents軟體中是看不到的,沒有任何表是符號(graphical representation)來顯示Entity,那你要如何知道有沒有動作呢?要藉由其他統計(statistics)的方式來觀察。還有,Entity可以攜帶其他資料,由稱之為Attribute的項目附加在Entity當中來攜帶資料,有點像物件導向(Object-Oriented)的概念,Entity像是類別(Class)的實體(instance),而Attribute像是欄位(field)。
Event
什麼是Event(事件)?DES中的瞬間變化(instantaneous discrete incident)則稱之為Event,白話一點的講法就是動作(action),讓Simulation的系統產生一些變動。Event可以改變Entity、Entity中的Attribute、或是激發其他Event。我認為SimEvents中較難學的是Event這個部分,需要比較久的時間來學習才會有感覺。
Event可能會同時發生,這種事件稱之為Simultaneous Events,即使電腦上的運作是sequential的方式來執行,在多數情況下這不會有多大問題(User Guide中說的...),這時候就要注意Event的processing sequence(要去設定Generation Event Priority)。
用物件導向(Object-Oriented)的概念來說,Event就像是方法(method),你可以利用Event去控制實體(instance)或是欄位(field),或是呼叫其他方法(method)。
同樣的,Event在SimEvents軟體中是看不到的,沒有任何表是符號(graphical representation)來顯示Event,要觀察有沒有動作,要從其他間接的方式來觀察。
沒有留言:
張貼留言