最簡模型-ATM-Part2-建立與執行

AnyLogic的下載安裝請參考此篇。不過,AnyLogic經常改版,可能也只能當作參考之用。雖然如此,八九不離十。
此篇是接續最簡模型-ATM-Part1-模型說明的內容。
===========

1. 新建模型 

當然,新增模型也可從 [File->New]取得。

2. 模型屬性

  1. 模型名稱。
  2. 選擇專案位置。
  3. 選擇此專案的Package名稱。一般都採預設值。除非,你的版本考量。再說明一次AnyLogic就是一個基於Eclipse的特用型Java開發環境。
  4. 選擇模型的單位時間。這個選擇非常重要,若模型要跑一年以上,卻把單位時間設成秒,那就把電腦放著,好好去睡覺,確保電腦不要過熱就好。還好,模型建完後,發現不對,還可以改。至於模擬的相關時間概念,請看這篇
  5. 填完,就按[Finish],來到編輯狀態。

3. 編輯區









  1.  專案目錄區:若你有其他程式開發,有使用IDE的經驗,其實,Anylogic就是開發一個Java的專案。
    • BankATM稱之為專案。AnyLogic可以同時開啟數個專案。
    • Main是程式進入點?對AnyLogic來說,他只是一個Agent Type,主類別。系統內可以有好幾個Agent Type,其實無主、副之分。
    • Simulation: Main這個才是真正的程式進入點,也就是一個執行方案(這個概念與Visual Studio不同)。有趣的是,你可以有好幾個程式進入點(執行方案)。對AnyLogic來說,只要參數設定不同,就可以是一個實驗計畫,就是一個執行方案,然後宣告這個執行方案的主Agent Type。然後,執行此實驗計畫,也就是依據Agent Type 產生案例(Instance),就是產生物件。每跑一次,就是一次的試行。不同實踐計畫,就是你的方案比較。或者是用來作敏感度分析,或作最佳化模擬。
    • Run Configuration是讓你在雲端執行。抱歉,還沒試過。
    • Database這是內部資料庫。可以讓你先把外部的資料匯入,然後讓模擬直接存取。這樣子效能比較好。之前的版本,大都是讀取EXCEL資料表,後來有支援資料庫,然後變成內建資料庫。想想,自己也是陪著AnyLogic長大的。這部份,我還是喜歡直接連外部資料庫,哈~這是與其他系統進行整合的關鍵。也是我架構中,可以把模擬與實務管理進行整合的關鍵。當然,也可以使用Web API(這是我問原廠的第一個問題)。
  2. 各式各樣的元件庫讓你使用。我們只用到其中一個叫Process的。還有用來模擬行人,火車、汽車、流體等離散事件。還有其他Agent-Base用的,或是System Dynamic用的。非常複雜而好玩。
  3. 編輯區。你就想像開發Java系統是用拖拉元件在桌布上,設定關聯,設定屬性,然後你的程式就寫好了。
  4. 設定屬性區。這塊非常重要且複雜。不同元件有不同的屬性需要設定,這部份真的要花時間了解元件特性,才能設對內容。否則,造成模型的偏差,往往就是你某個屬性質設錯了。
  5. 最後就工具列。除了一般心檔存檔之外,就是編譯與執行了。

4. 編輯模型









  1.  請先確定目前是在Main這個Agent Type下。所有的Agent Type都是一模一樣。並不是只有Main才可以設定流程物件。
  2. 選擇元件庫。因為本案例目標是ATM,屬一般性流程,並無特殊性,所以,使用Process Modeing Library即可。
  3. 拖拉元件至編輯區,並設定Inboun與Outbound關聯性。想拉關聯是可以Double-Click 小綠圈圈,他會冒出一條線,再點選其他要連接元件小綠點即可,只是是從Outbound到Inbound。這個設定比FlexSim容易多了,FlexSim是不講不知道。
  4. 設定屬性。因為很重要,所以不斷重複。

5. 準備執行










  1. AnyLogic說穿了也只是一個大型的Java專案。所以,你可以編輯完內容後,點選編譯。確保沒有文法上,或變數宣告上的錯誤。
  2. 選擇執行方案。一個AnyLogic專案,可以有很多個執行方案。 

6. 執行控制板










  1. 確認是執行哪個方案。(抱歉,因為隔幾天再續寫本篇,專案名稱不一致了)
  2. 設定執行模型的參數,例如,要執行多久,什麼條件下停止執行等。
  3. 設定執行速度。一般,開發之初,模型位穩定時,不會放太快,要觀察每一個元件的變化,是否如自己的預期八九不離十。等模型穩定後,就會加快速度,因為,我們要的是最終資料結果。因為支援3D,所以,秀給客戶或長官看時,也不會放太快啦。
  4. 點選Run之後,才是真正執行模型的內容。這個畫面上的東西都可以修改。大部分是作專案內容說明,以及設定一些啟始參數。
  5. 顯示目前執行狀態。執行中,暫停等。
  6. 顯示目前已經執行多久的模擬時間。這是模擬系統的單位時間,基本上跟日曆時間點無關。
  7. 顯示執行結束時間。
  8. 對應於日曆時間。也就是說,你新增專案時,設定模型的單位時間是分鐘,那配合第6點的模擬時間,就得到執行時間距。若無特別設定模擬起始對應的日曆時間,那就會以執行時的時間點為開始點,再加上剛剛算得的時間距,顯示目前的日曆時間。也就是說,我已經可以預測,一天、一週、一月、一年...可能發生的事情了。
  9. 此模型佔用記憶體狀態。這也可以設定佔用上限。
  10. 執行階段,可協助搜尋特定的元件。

7. 模型執行中










  1. 可暫停或停止執行。
  2. 各元件目前現況,進入多少個Entity(左),離開多少個Entity(右),內部還剩幾個Entity(上)。
  3. 執行狀態
  4. 已經執行多久模擬單位時間。
  5. 停止執行條件。
  6. 對應之日曆時間。
  7. 記憶體佔用。
  8. 模型之元件結構。
  9. 選擇不同視圖區。因為一個複雜專案,不是一個小視窗可以容納的。會設定視圖區的左上方起始點。透過,這個選項,就可以隨時切換道不同視圖區。

8. 執行結果

其實,這個不叫執行結果。因為,我們沒有設定終止時間。
這只是執行到一個段落的目前累積狀態。
我們也不會這樣子秀給客戶長官看。
會有動畫,會有資料分析。
複雜點就是匯出收集所得之資料,用適當的軟體進行後續分析之用。


==========
中間為何停了好幾天呢?我想要上Youtube,但遭遇挫折。所以,網紅也是有付出努力的。

留言

這個網誌中的熱門文章

等候理論

AnyLogic簡單介紹

機率分配 - Part 5 Geometric