發表文章

目前顯示的是有「等候理論」標籤的文章

進階模型:醫療業-Emergency Department-Part 2-邏輯流程-檢傷分類

圖片
本篇是接續上一篇 進階模型:醫療業-Emergency Department-Part 2-邏輯流程-註冊報到 。 ========== 流程簡述 病患已經完成報到註冊程序,且被移往等候室,等待檢傷分類作業。 檢傷作業由護士引領病患至檢傷室。 確認同時取得護士與檢傷室這兩種資源後,則將病患與護士一同送往檢查室。 進行檢傷作業。 完成檢傷後,離開檢傷室。 仍由護士將病患移往等候室。 現場佈置 waitingRoom: 完成報到手續者,將被移動到此區域,等待檢傷分類流程。完成檢傷分類的病患也會回到此區域,等待處置作業流程。使用 space markup-Rectangular Node[待補連結]。 rectangle3、rectangle4: 這兩個space markup-Rectangular Node[待補連結],被用來定義檢查室(triageRoom: ResourcePool[待補連結])的HomeNode。這部份需要專門篇幅兩解講。簡單地說,可以利用節點空間來定義資源的數量。目前檢查室宣告了兩個空間(rectangle3、rectangle4),就是表示檢查室有兩間的意思。 nurseHomeRoom: 與前項意義同。被用來定義護士的資源數量。只是,這邊不是用空間數量來定義,而是直接使用數字。區域中有箭號的圖示是指Attractor,他可以設定3D圖的前方的方向。當然,也可用Attractor的數量來決定資源的數量。 邏輯流程 流程詳述(整合現場佈置與邏輯流程) 病患已經完成報到註冊程序,且被移往(gotoWaitingRoom1:  MoveTo )等候室(waitingRoom: space markup-Rectangular Node[待補連結])等待檢傷分類作業。 檢傷作業需由護士(nurse: ResourcePool[待補連結])引領至檢傷室(triageRoom: ResourcePool[待補連結])。所以,必須先確認這兩項資源是否有空閒。 確認同時擁有(seizeTriageRoom: Seize )護士與檢傷室這兩種資源後,則將病患與護士一同送往檢傷室(triageRoom's HomeNode: space mark...

最簡模型-ATM-Part4-資料收集-觀念說明

資料收集從技術角度來說,很容易。問題在於,收集什麼資料。這部份一定要與建構此模型之目的要緊密結合在一起,也就是說,要從策略出發。有時候,資料收集的對象很直觀,有時候卻是需要收集某些原始資料,然後進行處理,之後甚至要與其他資料結合後,才能發揮其真正目的。 回顧 最簡模型-ATM-Part1-模型說明 的內容,一開始我們建ATM模型之目的,是想要知道在現有來客數之下,一台ATM夠不夠,等候空間15人夠不夠。反過來說,我們也有可能想知道,在有資源設備下,能夠支撐最大的來客數是多少。這些都是沒有考慮到成本問題。一台不夠,再加一台,可是再加一台等候空間是否需要調整,成本效益又是如何?這些就會演變成最佳化的問題,收集資料方式與對象就有可能會轉變。總之,資料收集與分析是相依於策略規劃。 策略規劃與資料收集轉換 策略規劃是敘述性描述,需要轉換成「指標」。有指標才會有「公式」,有公式才知道「變數」,有變數才知道要從哪裡收集什麼樣的資料。 需不需要增添一台ATM,也就是一台ATM夠不夠。那你要先定義什麼叫做夠不夠。因為是設備,在正常運作下,他應該是24小時皆能使用。問題來了,有三點需要注意,(1) 人不會平均分散於24小時來。(2) 有人使用,ATM才叫有在工作。(3) 雖然是24小時運作,但是機器也有需要休息保養,甚至損壞等因素。 人不會分散24小時來,人可能會集中在某些時點來的人特別多。櫃台還有上下班時間,ATM是24小時營業,這點反而單純。還好,這些問題對AnyLogic來說,都可以輕易設定。只要使用Schedule(待補)元件,就可以搞定。也就是說,櫃台的資源可透過Schedule來設定上班(Avariable)還是下班(Unavariable)。Arrival Rate也可以依據Schdule設定,不同時段有不同的來客數。只是,本系列是「最簡模型」,所以這部份,就不予考量。 有人使用才叫做有使用。這部份,從管理角度搞了一大堆的「率」。這個「率」說穿了就是搞定「分母」與「分子」應該要放什麼變數。然後,得到的結果,再想辦法解釋(然後硬生成論文)。有設備使用率、產能利用率、稼動率等等。我這邊想解釋的是說,有些數據千萬不要相信。就以ATM為例,如果設備使用率之分母為24小時,分子是有人提款使用的時間,那這台ATM「平均」使用率一定很低。永遠不會有需要再增...

最簡模型-ATM-Part3-動畫設定

圖片
隨著個人電腦的運算能力精進,近年系統模擬的最大差異就是採用3D動畫來呈現模型。 3D技術博大精深,這篇僅能提到一些空間佈置(Space Markup)應用。至於詳細的內容,得參考空間佈置系列的文章。若要詳談3D的話,又得再開另一系列才行。 ========== 首先我們知道模型中的元件,在真實世界裡是否需要呈現。例如說Source,可以僅設定一個點,當作Entity Arrival時,要出現的位置。如果,你的模型設計是一次Arrival事件發生,會同時來很多個Entity,用點來表示,就無法感受多個Entity,就需要設定一個空間。再複雜點,你還可以設計一個門放在那兒,如時間很夠,你還可以加上動畫,用來顯示人進來是開門關門的動作。工作站也是,你可以僅僅用一個方型區間來代表,可是,若你想明確表達這空間中,工作人員等候時站在哪,操作時站在哪,Entity進來時先放哪,加工時會在哪,結束後會放哪。甚至你可以設計加工前Entity的外觀樣式,加工中,加工後,都可以不同。總之,彈性甚大,也因為如此AnyLogic很強大,也正因為如此,想學好AnyLogic真的不容易。 1. 設定ATM ATM是一個服務點,此方案的Entity是提款人,他不會跑進ATM裡面,所以,用「點節點」來代表就可以了。 可從Process Modeling或者是專用的Space markup頁籤中取得Point Node,將其拖曳到編輯區中。 接下來的動作是要把邏輯流程的元件與Space markup的元件進行連結。回到ATM這個物件,他是Delay這個類別的案例。設定Agent Location指向剛剛拖曳的Point Node(預設名稱為point)。右方兩個按鈕,左邊那個是協助你在Space Markup網路中,點選對應的元件。右邊那個是當你設定完成後,點選之後,系統會告訴你他是在Spacke Markup中的哪個元件。前者是新增,後者是查詢。 2. 設定等候線 ATM的排隊模式是先到先贏,每個人都得乖乖排在線上,所以,會使用Path來設定這條等候線。Path可提供很複雜的操控模型,讓你可以呈現真實世界的動線。一樣用拖拉入編輯區,然後移動至適當位置(預設名稱是path)。 接著就是進行連結。選擇queue,再設定Agent location的屬性。記得...

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

圖片
AnyLogic的下載安裝請參考 此篇 。不過,AnyLogic經常改版,可能也只能當作參考之用。雖然如此,八九不離十。 此篇是接續 最簡模型-ATM-Part1-模型說明 的內容。 =========== 1. 新建模型  當然,新增模型也可從 [File->New]取得。 2. 模型屬性 模型名稱。 選擇專案位置。 選擇此專案的Package名稱。一般都採預設值。除非,你的版本考量。再說明一次AnyLogic就是一個基於Eclipse的特用型Java開發環境。 選擇模型的單位時間。這個選擇非常重要,若模型要跑一年以上,卻把單位時間設成秒,那就把電腦放著,好好去睡覺,確保電腦不要過熱就好。還好,模型建完後,發現不對,還可以改。至於模擬的相關時間概念,請看 這篇 。 填完,就按[Finish],來到編輯狀態。 3. 編輯區  專案目錄區:若你有其他程式開發,有使用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長大的。這部份,我還是喜歡直接連外部資料庫,哈~這是與其他系統進...

最簡模型-ATM-Part1-模型說明

圖片
前面談了一些機率分配函數,得趕快跟模型扯上關係,否則目標就不對了。 雖然說是最簡模型,可能也要分好幾次才能說完。這個案例是關於銀行作業,屬離散事件模型,採用AnyLogic的內建教學內容,只是我有改寫成中文投影片。不過,這邊還是將其簡化,使得更容易上手。 情境說明 1. 有一家銀行在某地擺設一台ATM。 2. 使用者需排隊,先到先用。但,周邊空間有限。 3. 僅提供領款,操作流程變化不大。 策略規劃 銀行主管想知道,現有的來客數下,一台ATM的使用量為何?是否需要增添一台。有多少人,因不耐久候而離開,是否需要調整空間位置。以上,皆暫不考慮成本問題。 資料收集 派員收集資料後發現: 1. 每分鐘會來0.3人。 2. 僅能容納15個人排隊。 3. ATM操作時間平均約1.5分鐘,最多3.5分鐘,最快0.8分鐘。 模型建立 說明: source他提供了很多種方法,讓你產生Entity。Entity就是在模型上流竄,然後觸發事件,讓你可以寫程式,收集資料。 queue就是代表等候線/區。可設定Capacity來代表空間,當然可以設定無限空間(Maximum capacity)。排隊準則(Queuing)預設是FIFO(First In First Out),當然也可以改成其他如LIFO(Last In First Out),甚至可使用Piority等。 ATM這個物件的原名就delay,代表耗用時間,也就是代表提供服務,進行作業的地方。需要設定的有作業時間(Delay time)與作業能力(Capacity)。 sink是讓Enity離開的地方。一般會在這兒將掛在Enity身上的資料給搜刮下來。 參數設定 1. source 2. queue 3. delay 4. sink:暫時沒有。 ==== 就先到這。 哈~冒出一個Triangular的機率函數,沒什麼反正就是大概大概啦。在意就用Normal。 寫到這也是我有點難取捨之處。到底,重點是放在軟體的操作面上呢,還是放在策略應用面上。還是,哈~根本就是兩本書。操作真的沒什麼好講的,但是,可以擴張頁數,市面上的書都是這樣。而我真的想講的是這個模型到底要怎麼應用在策略規劃上。您看我的內容,已經...