離散系統模擬_第1頁
離散系統模擬_第2頁
離散系統模擬_第3頁
離散系統模擬_第4頁
離散系統模擬_第5頁
已閱讀5頁,還剩76頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

離散系統模擬第一頁,共八十一頁,2022年,8月28日

第3章離散系統模擬3.1離散系統模擬概述3.2離散模擬的基本原理和運行邏輯3.3模擬模型性能評價3.4離散系統模擬案例3.5離散系統模擬工具3.6Arena模擬工具第二頁,共八十一頁,2022年,8月28日3.1離散系統模擬概述一、離散模擬的定義與分類

離散模擬模型按照工作機理的不同,或者按照分別側重于處理事件、活動和過程的不同,可以分為以下三類:(1)以事件為基礎(EventOrientation)的模擬(2)以活動掃描為基礎(ActivityScanningOrientation)的模擬(3)以過程為基礎(ProcessOrientation)的模擬第三頁,共八十一頁,2022年,8月28日3.1離散系統模擬概述1.以事件為基礎的離散模擬稱為離散事件模擬。系統的建模是通過定義系統狀態在事件時間的變化來實現的。建模的任務在于確定導致系統狀態改變的事件以及與各類事件相對應的邏輯關系。在排隊系統中,顧客到達事件和顧客離去事件是基本的事件。下圖所示為排隊系統的離散事件模擬模型。第四頁,共八十一頁,2022年,8月28日3.1離散系統模擬概述

(a)顧客到達(b)顧客離去第五頁,共八十一頁,2022年,8月28日3.1離散系統模擬概述2.以活動掃描為基礎的離散模擬模擬模型描述系統的實體所進行的活動,以及預定導致活動開始或結束的條件。活動開始或終止的事件由為活動規定的條件所初始化。隨著模擬時鐘按一定的步長推進,需對每項活動的開始或終止的條件進行掃描。這種模擬尤其適宜于活動延續時間不定并且是由滿足一定條件的系統狀態來決定的情況。與以事件為基礎的模擬相比,它的效率低,因而目前應用不夠廣泛。在排隊系統中,服務員為顧客提供的服務是基本的活動。下圖所示為排隊系統的以活動掃描為基礎的離散模擬模型。第六頁,共八十一頁,2022年,8月28日3.1離散系統模擬概述第七頁,共八十一頁,2022年,8月28日3.1離散系統模擬概述3.以過程為基礎的離散模擬所謂過程是由事件的時間序列以及若干活動所組成。它描述了作為模擬對象的實體如何流經具有一定資源的過程。譬如,為了模擬排隊服務系統,可以運用下述語句:(1)每隔T分鐘產生一個到達的實體;(2)實體排隊等候服務;(3)將模擬時鐘以服務時間的步長向前推移一步;(4)當服務結束時“解脫”服務員;(5)將實體從系統清除。下圖所示為排隊系統的以過程為基礎的離散模擬模型。第八頁,共八十一頁,2022年,8月28日3.1離散系統模擬概述第九頁,共八十一頁,2022年,8月28日3.1離散系統模擬概述二、離散模擬的常用術語1.實體實體是描述系統的基本要素之一。臨時實體:在系統中只存在一段時間的實體。永久實體:永久駐留在系統中的實體。臨時實體按一定規律不斷地到達(產生),在永久實體作用下通過系統,最后離開系統,整個系統呈現出動態過程。第十頁,共八十一頁,2022年,8月28日3.1離散系統模擬概述2.屬性屬性指系統的實體和資源的特性。正確劃定模擬的實體、資源及其屬性,是系統建模的重要組成部分。表3.1列舉了一個生產計劃系統的實體、資源及屬性。表3.1生產計劃系統的實體、資源和屬性實體/資源屬性產品元件原材料機器工人類型,需求量,生產量,庫存量,交貨期單價,工時定額類型,需求量,生產量,庫存量,單價,工時定額類型,需求量,庫存量,訂貨點,訂貨批量,消耗定額類型,擁有量,作業時間,調整時間,役齡工種,組別級別,數量,作業時間,工資,工齡第十一頁,共八十一頁,2022年,8月28日3.1離散系統模擬概述3.事件事件就是引起系統狀態發生變化的行為。從某種意義上說,這類系統是由事件來驅動的。一個系統中往往有多類事件,需要建立事件表對系統中的事件進行管理,表中記錄每一發生了的或將要發生的事件類型和發生時間,以及與該事件相聯的實體的有關屬性等。系統事件:系統中的固有事件。程序事件:用于控制模擬過程,當該事件發生時即結束模擬模型的執行。第十二頁,共八十一頁,2022年,8月28日3.1離散系統模擬概述4.活動離散事件系統中的活動,通常用于表示兩個可以區分的事件之間的過程,它標志著系統狀態的轉移。5.進程進程由若干個有序事件及若干有序活動組成,一個進程描述了它所包括的事件及活動間的相互邏輯關系及時序關系。事件、活動、進程三者之間的關系可用圖3.4進行描述。第十三頁,共八十一頁,2022年,8月28日3.1離散系統模擬概述

圖3.4事件、活動、進程三者之間的關系示意圖

第十四頁,共八十一頁,2022年,8月28日3.1離散系統模擬概述6.模擬時鐘模擬時鐘用于表示模擬時間的變化。在連續系統模擬中,將連續模型進行離散化而成為模擬模型時,模擬時間的變化基于模擬步長的確定。離散事件模擬不需要進行離散化處理,但模擬時鐘的推進步長則完全是隨機的;兩個相鄰發生的事件之間系統狀態不會發生任何變化,因而模擬時鐘可以跨過這些“不活動”周期。從一個事件發生時刻推進到下一事件發生時刻,模擬時鐘的推進呈現跳躍性,推進速度具有隨機性。第十五頁,共八十一頁,2022年,8月28日3.1離散系統模擬概述7.統計計數器離散事件系統的狀態隨著事件的不斷發生也呈現出動態變化過程,但由于這種變化是隨機的,某一次模擬運行得到的狀態變化過程只不過是隨機過程的一次取樣,它們只有在統計意義下才有參考價值。在模擬模型中,需要有一個統計計數部件,以便統計系統中的有關變量。第十六頁,共八十一頁,2022年,8月28日3.2離散模擬的基本原理和運行邏輯定義系統的狀態變量。對于一個系統來說,用一組狀態變量S(矢量)來描述系統的變化特征,其中每一個狀態變量s用來表達系統在某一方面行為的變化特征,S通常被稱為系統的狀態空間。在離散模擬模型中,系統的狀態變化可以用一個階梯函數來表達。換句話說,系統的狀態變化是跳躍式的,僅僅在離散間斷的時間點上發生。系統狀態的變化實際上是由一系列間斷發生的事件所驅使的。一個事件的發生是外部因素或者內部因素作用的結果。一系列事件的有序發生驅使著離散模擬過程有序地進行。

第十七頁,共八十一頁,2022年,8月28日3.2離散模擬的基本原理和運行邏輯定義一個事件時主要考慮那些對系統狀態及行為變化和模擬分析結果有重要影響的事情。一個事件有兩個基本屬性:一是時間屬性-記載該事件發生的時間;二是對應屬性-也即該事件的發生所對應著的系統某個狀態變量的變化。在模擬模型的運行中,當一個事件發生時,往往需要處理一系列的事情,通常用一個專門的子程序來處理這些與事件發生相關的任務(通常叫做事件程序)。模擬時鐘(SimulationClock):跟蹤并記錄模擬時間。模擬時鐘與實際時間的差別:假設在某一時刻t1,系統中某種事件發生了,模擬時鐘就會“停”下來,直到事件程序處理完有關的事情時鐘才會繼續走動;而這時的實際時刻已經是t2;然而不論有多少事情需要在事件發生時處理,實際時間總是從不間斷的。第十八頁,共八十一頁,2022年,8月28日3.2離散模擬的基本原理和運行邏輯用兩個簡單例子來說明如何定義系統的狀態及其變化。

1.單一排隊服務系統(見圖3.5)圖中圓圈代表前來購票的顧客(個體),而方塊則代表提供服務的售票員(資源)。定義兩個狀態變量:系統里總的顧客數量N和服務員的狀態B。N通常是一個有限的正整數,而B則是一個(0,1)變量,0代表空閑狀態,而1則代表工作狀態。由此可以定義兩個重要的事件:一是顧客的到達,二是顧客接受服務后的離去。說它們重要是因為這兩種事件的發生都會直接影響到系統狀態變量的改變。第十九頁,共八十一頁,2022年,8月28日3.2離散模擬的基本原理和運行邏輯

到達排隊接受服務離開(銷毀個體)

圖3.5單一排隊服務系統的概念模型2.一個簡單的工廠庫存系統(見圖3.6)定義一個系統狀態變量為:庫內現存的產品數量M。定義兩個事件:制成產品的到達入庫和用戶購買產品之訂單的到來。這兩種事件的發生都直接影響到系統狀態M的變化:制成品到達會使M增加,而用戶訂單的到來會使M減少。第二十頁,共八十一頁,2022年,8月28日3.2離散模擬的基本原理和運行邏輯為“入庫”和“取貨”這兩個操作過程定義各自的狀態變量B(t)來反映其從空閑狀態到工作狀態(或相反)的變化。產品到達等候入庫入庫銷毀產品個體

訂單到達等候配量取貨銷毀訂單個體圖3.6簡單的工廠庫存系統的概念模型第二十一頁,共八十一頁,2022年,8月28日3.2離散模擬的基本原理和運行邏輯用事件圖來描述被模擬系統的狀態變化也是一種非常有效的方法。在這種方法中,每一個圓圈代表著某一種特定的事件,而每一條有向的弧線(箭頭)則代表著某一事件對其自己或其他事件的未來影響。可以用事件圖來描述圖3.6中簡單排隊系統的邏輯原理(見圖3.7)。圖3.7簡單排隊模擬模型的邏輯事件圖個體到達個體離開模擬結束第二十二頁,共八十一頁,2022年,8月28日3.2離散模擬的基本原理和運行邏輯從圖中可以看出,這個模擬系統有兩類事件:個體到達與個體離開(完成服務后);其中,每一次個體到達的發生就會決定下一次個體到達(同類事件)發生的時間,也可以決定下一次個體離開(非同類事件)的時間。而每一次個體離開的發生則只會影響到下一次個體離開的發生。還必須定義個體到達事件的初始預置使整個模擬過程得以啟動(圖中帶有部分破折線的箭頭)。最后,如果模擬運行的時間有限,還可以定義一個模擬結束事件,該事件的發生將停止整個模擬的運行。整個模擬過程就是由這一系列事件的產生和有序發生來驅使運行的,這也就是為什么離散模擬又常常被稱為“事件驅使型模擬”。第二十三頁,共八十一頁,2022年,8月28日3.2離散模擬的基本原理和運行邏輯一、事件驅使型模擬計算機模擬的過程是以某些特定事件的離散發生而展開進行的。這些離散事件的發生影響或改變系統的狀態。這些事件的有序發生驅使著模擬過程有序地進行,模擬系統狀態的有序變化。模擬模型須確定那些在模擬的未來時刻發生的事件及其發生的時間和順序,記錄和跟蹤這些事件,并且在每個事件發生時按照要求更變系統的狀態、收集有關的數據(更新有關的統計量),以及把模擬時鐘從當前時刻“躍進”到下一事件的發生時刻。第二十四頁,共八十一頁,2022年,8月28日3.2離散模擬的基本原理和運行邏輯二、事件的排定與事件安排時間表實施離散計算機模擬的一條基本策略就是設置一個“機構”來確定和控制以下與事件相關的問題以及事件發生時所涉及到的情況:(1)確定新的事件:也即產生未來的事件,特別是確定未來事件的類型。(2)當一個事件發生時,有哪些事情需要得到處理?(3)哪一個事件應該被安排為下一個發生的事件?如何把模擬時鐘從當前的事件躍進到下一事件的發生?前兩個任務可以由一個定時程序(EventRoutine)來完成,而最后一個任務通常是由一個事件程序(TimingRoutine)來完成。

第二十五頁,共八十一頁,2022年,8月28日3.2離散模擬的基本原理和運行邏輯從圖3.8可以看出,一個離散模擬模型的邏輯運行結構如下:首先當模擬開始運行時,一個預置子程序最先啟動。其功能是設定模擬模型的初始狀態。預置程序啟動后,一個定時程序(TimingRoutine)接著開始運行。其主要任務是根據事件序列表中的排列確定下一個未來發生的事件(也即離“當前時刻”最近的事件),并且把模擬時鐘從現在的時刻躍進到下一個事件的發生時刻。接著運行的是一個事件程序,事件程序的任務包括三個方面:①根據最近事件的發生更新有關的系統狀態變量;②更新有關的統計計數變量;③確定未來事件(的類型)及其的發生時刻并把確定的結果(新產生的事件)加入到事件序列表。第二十六頁,共八十一頁,2022年,8月28日3.2離散模擬的基本原理和運行邏輯事件程序運行之后,模擬模型將按照某種預定的終止條件來決定是否繼續運行。如果需要繼續,則返回到定時程序開始下一個運行周期。如果終止條件滿足,則模擬將停止運行,計算有關的統計數值(輸出變量的估計值),并啟動一個報告程序把模擬結果按照要求的格式形成報告。整個過程如圖3.8所示。圖3.8離散模擬模型的運行邏輯流程第二十七頁,共八十一頁,2022年,8月28日3.2離散模擬的基本原理和運行邏輯為進一步理解離散事件模擬的工作原理,在此把在第2章里用到的單一排隊服務系統模擬例子進行詳細地分解。分解從時間T=0(T表示模擬時間)開始,跟蹤每一個事件的發生,及其發生時模擬所做的事情,一直到時間T=25時停止。表3.2給出個體(顧客)到達、離開、服務以及等候的時間,注意其中到達時間和服務時間都是隨機產生的變量。第二十八頁,共八十一頁,2022年,8月28日3.2離散模擬的基本原理和運行邏輯表3.2單一排隊服務系統例子的有關數據個體序號到達時刻服務時間離開時刻等候時間12350265110376174493208513222761822447233271827第二十九頁,共八十一頁,2022年,8月28日3.2離散模擬的基本原理和運行邏輯(1)T=0,首先啟動預置程序來設定模型中所有的變量(狀態變量和計數變量)的初始狀況。例如,設定服務者的初始狀態為0(閑置),排隊人數為0,事件表為0(還沒有事件產生),“上一事件”的發生時間為0,模擬時鐘的時刻為0,模擬停止時間為25,所有的計數變量也等于0。然后預置下一次“顧客到達”的時間為0+2=2(由于系統開始時還沒有顧客,所以下一次“顧客離開”的時間預設為)。接著啟動定時程序,決定下一事件是“顧客到達”(2),于是把模擬時鐘從此刻(T=0)躍進到下一事件“顧客到達”的發生時刻T=2。第三十頁,共八十一頁,2022年,8月28日3.2離散模擬的基本原理和運行邏輯(2)T=2,第一位顧客到達。模擬系統首先啟動一個“到達程序”來處理個體到達時需要完成的事情。例如,將服務員從閑置狀態改變為工作狀態,排隊等候時間為0(第一位顧客不需要等候),隨機產生的下一次到達事件的時間等于“本次到達的時刻+與下次到達的時間間隔”為2+4=6,而下一次離開事件的時間則為2+3=5。故下一個事件將是“顧客離開”,模擬時鐘躍進到下一事件發生時刻T=5。(3)T=5,第一位顧客完成服務離開。模擬啟動一個“離開程序”,檢查有無個體在排隊中等候,排隊長為0,將服務員狀態由工作改為閑置(B=0),增加一個完成服務的顧客數量。系統中現無任何個體,所以下一次離開的時刻為,而下一次到達的時刻是T=6(已經被確定),因此下一個事件將是“顧客到達”,模擬時鐘躍進到T=6。第三十一頁,共八十一頁,2022年,8月28日3.2離散模擬的基本原理和運行邏輯(4)T=6,第二位顧客到達。到達程序:系統排隊等候的為0,資源閑置,所以該個體可直接進入服務,等候時間為0,排隊人數仍然為0,將資源狀態改變為1(工作),下一次到達的時間為6+1=7,而下一次離開的時間為6+5=11,所以下一個事件是“顧客到達”,模擬時鐘躍進到下一個事件發生時刻T=7。

(5)T=7,第三位顧客到達。資源正被占用,所以進入排隊等候,排隊人數增加一個(0+1=1)。下一次到達的時間是7+2=9,而下一次離開的時間是11(已經被確定),所以預計的等候時間是11-7=4,而下一個事件是“顧客到達”,模擬計時鐘躍進到下一事件發生時刻T=9。第三十二頁,共八十一頁,2022年,8月28日3.2離散模擬的基本原理和運行邏輯(6)T=9,第四位顧客到達。資源仍然被占用,所以加入排隊,排隊人數增加一個(1+1=2),注意第三位顧客仍在排隊中等候,所以第四位顧客將是排隊中處于第二位的個體。下一次的到達時間為9+4=13,而下一次離開的時間是11,所以下一個事件是“顧客離開”,模擬時鐘躍進到T=11。(7)T=11,第二位顧客完成服務離開。離開程序:完成服務離開的顧客增加一個,已經有顧客排隊等候,所以不改變資源現在的狀態(工作=1),將排隊等候的個體數量減少一個(第三位顧客進入服務)。下一次離開的時間是11+6=17,而下一次到達的時間是13,所以下一個事件是“顧客到達”,模擬時鐘躍進到下一事件的發生T=13。第三十三頁,共八十一頁,2022年,8月28日3.2離散模擬的基本原理和運行邏輯

(8)T=13,第五位顧客到達。到達程序:資源仍然被占用,資源狀態不改,排隊中已經有一人(第四位顧客),所以進入排隊(隊中第二名)等候,排隊人數增加一個。下一次到達時間為13+5=18,而下一次離開時間是17,下一個事件是“顧客離開”,模擬時鐘躍進到下一個事件的發生T=17。(9)T=17,第三位顧客完成服務離開。離開程序:完成服務的顧客增加一個,由于有顧客等待,資源工作狀態不變(仍然為1),將排隊等候的人數減少一個(第四位顧客進入服務)。下一次離開事件的時間是17+3==20,而下一次到達的時間是18,所以下一個事件確定為是“顧客到達”,模擬時鐘躍進到下一事件的發生T=18。第三十四頁,共八十一頁,2022年,8月28日3.2離散模擬的基本原理和運行邏輯

(10)T=18,第六位顧客到達。到達程序:資源在被占用,排隊中已經有一人等候,所以進入排隊(隊中第二名)等候,排隊人數增加一個1+1=2。下一次到達的時間為18+5=23,而下一次離開事件的時間是20,所以下一個事件是“顧客離開”,將模擬時鐘躍進到下一事件的發生T=20。(11)T=20,第四位顧客完成服務離開。離開程序:完成服務的顧客增加一個,由于有顧客等待,資源狀態仍然不變,將排隊等候的人數減少一個(第五位顧客進入服務,排隊人數2-1=1)。下一次離開的時間是20+2=22,而下一次到達的時是23,所以下一個事件是“顧客離開”,將模擬時鐘撥進到下一事件的發生T=22。第三十五頁,共八十一頁,2022年,8月28日3.2離散模擬的基本原理和運行邏輯

(12)T=22,第五位顧客完成服務離開。離開程序:完成服務的顧客增加一個,由于仍有顧客等待,資源狀態不變,將排隊等候的人數減少一個(第六位顧客進入服務,排隊人數1-1=0)。下一次離開的時間是22+2=24,而下一次到達的時間是23,所以下一個時間是“顧客到達”,模擬時鐘撥進到T=23。(13)T=23,第七位顧客到達。因為資源正被占用,所以進入排隊等候,排隊人數增加一個(0+1=1),預計等候的時間是1,下一次到達的時間是23+4=27,而下一次離開的時間是24,所以下一個事件是“顧客離開”,模擬時鐘撥進到下一事件的發生T=24。第三十六頁,共八十一頁,2022年,8月28日3.2離散模擬的基本原理和運行邏輯(14)T=24,第六位顧客完成服務離開。離開程序:完成服務的顧客增加一個,由于有顧客排隊等候,資源狀態不變,將排隊的人數減少一個(排隊人數=1-1=0),第七位顧客進入服務。下一次離開的時間是24+3=27,而下一次到達的時間是27,所以下一個事件可選到達或者離開,這里選擇“到達”,由于下一個事件的發生時間是T=27大于模擬結束時間T=25,所以只能把模擬時鐘撥進到T=25。(15)T=25,這是停止模擬運行的時間。第三十七頁,共八十一頁,2022年,8月28日3.2離散模擬的基本原理和運行邏輯N(t)0510152025t圖3.9排隊長度N(t)的動態曲線圖3.9所示是根據模擬結果繪制出的關于排隊長度N(t)的動態曲線。第三十八頁,共八十一頁,2022年,8月28日3.3模擬模型性能評價以排隊服務系統為例介紹離散系統模擬的評價。排隊理論已經廣泛應用于各種管理系統。例如:倉庫供應、企業生產、物資分配與流通、交通運輸、計算機作業、銀行服務、醫院及保健服務、商店、餐廳、理發店等生活服務,都可以作為如圖3.10所示的排隊服務系統進行處理。在系統模擬的應用中,尤以排隊系統的離散型模擬最為普遍。圖3.10排隊服務系統第三十九頁,共八十一頁,2022年,8月28日3.3模擬模型性能評價構成排隊服務系統的主要實體,是接受服務的各種形式的顧客以及提供各種形式服務的服務者或服務設施。表3.3簡要說明了多種排隊服務系統的實體。表3.3排隊服務系統的實體和資源系統類型顧客服務者物資倉庫貨物儲運站機械加工工段計算機系統航空公司售票處銀行醫院商店、理發店餐廳領料人員待運貨物加工工件待處理的作業旅客存款戶病人男、女顧客食客倉庫管理員儲運人員及設備加工設備、操作工人計算機售票員出納員醫生、護士服務員、理發師服務員、廚師第四十頁,共八十一頁,2022年,8月28日3.3模擬模型性能評價在分析排隊服務系統時,通常要涉及的因素可能包括以下的方面:(1)顧客到達的速率或相鄰顧客到達的間隔時間,呈確定性或隨機性;(2)服務速率或單位顧客的服務時間,呈確定性或隨機性;(3)服務者或服務設施的數量;(4)顧客排隊規則,有先進先出,后進先出以及其他優先規則等;(5)排隊列數,有單列的和多列的;(6)隊列容量,為有限的和無限的。第四十一頁,共八十一頁,2022年,8月28日3.3模擬模型性能評價評價排隊服務系統性能的指標主要有以下三個:(1)顧客在系統內的平均停留時間:式中,di為第i個顧客在系統內的停留時間,N為完成服務的顧客人數。(2)系統內的平均顧客人數式中,qj為發生第j事件時的系統內的顧客人數,tj為第j事件的發生時間,tj-1為第j-1事件的發生時間,T為整個模擬時間,m為在T期間發生的事件數目。第四十二頁,共八十一頁,2022年,8月28日3.3模擬模型性能評價圖3.11說明了的計算方法。圖3.11中畫有剖面線的面積之和等于上式右邊的分子部分,即:(3)服務員負荷率,它等于服務員繁忙時間之和與整個模擬時間之比。

圖3.11的計算方法說明圖第四十三頁,共八十一頁,2022年,8月28日3.4離散系統模擬案例此處采用Matlab對一個M/M/1排隊系統進行計算機模擬。這個排隊系統的服務員為一人。顧客到達系統的間隔時間為平均值等于1min的指數分布隨機變量。單位顧客服務時間為平均值等于0.5min的指數分布隨機變量。單列排隊,采取先進先出的規則,排隊行列的最大容量為100。模擬的終止條件為有1000個顧客服務結束離開系統。1.系統的實體、屬性和事件系統的實體是顧客、以及資源是出納員用相應的屬性來表征實體決定有兩類事件:①第1類事件——顧客到達事件;②第2類事件——顧客在服務結束后離開系統。第四十四頁,共八十一頁,2022年,8月28日3.4離散系統模擬案例2.系統模擬程序利用Matlab編制模擬程序。除了主程序外,還在M文件中編制了一系列的子程序,它們的功能如表3.4所示,表3.5列舉模型的變量的名稱和定義。表3.4排隊服務系統模擬的子程序和函數子程序(函數)名稱

功能INIT

系統初始化子程序TIMING

定時子程序ARRIVE

處理l類事件的子程序DEPART

處理2類事件的子程序第四十五頁,共八十一頁,2022年,8月28日表3.5本模型的變量變量名稱

定義輸入參數:MARRVT顧客到達間隔時間的平均值MSERVT顧客服務時間的平均值TOTCUS進行觀測的結束服務的顧客總數模擬變量:ANIQ排隊系統中顧客數目的時間積分值DELAY

顧客排隊等待時間NEVNTS事件類型數目,本例中為2NEXT下一事件的類型NIQ排隊等待的顧客數目NUMCUS系統中已經結束服務的顧客數目RMIN定時子程序用于確定最近事件時間的變量STATUS服務員狀態變量,空閑時它為0,繁忙時它為1TARRVL(I)在排隊系統中等待的第i個顧客的到達時間TIME模擬時間TLEVNT上次事件的時間TNE(I)下一次事件I(I=1,2)的發生時間TOTDEL已經結束服務的所有顧客的停留時間總數U(0,1)間均勻分布隨機變量3.4離散系統模擬案例第四十六頁,共八十一頁,2022年,8月28日3.4離散系統模擬案例(1)模擬主程序圖3.12是排隊服務系統模擬的主程序,它的主要功能如下:(1)讀入輸入參數值;(2)調用INIT子程序對系統進行初始化;(3)調用TIMING子程序,安排事件的類型和時間;(4)調用ARRIVE子程序或DEPART子程序以處理顧客到達事件或顧客離開系統事件;(5)輸出模擬結果。主程序的功能是判斷事件的類型并對相應的事件進行調度,并最終統計并輸出模擬結果。第四十七頁,共八十一頁,2022年,8月28日3.4離散系統模擬案例MARRVT=1;//到達間隔時間為1MSERVT=0.5;//服務時間為0.5TOTCUS=1000;//結束服務顧客總數1000NEVNTS=2;//事件類型為出隊入隊兩種TNE=[0,0];DELAY=0.0;fori=1:100TARRVL(i)=0.0;end[TIME,STATUS,NIQ,TLEVNT,NUMCUS,TOTDEL,ANIQ,TNE(1),TNE(2)]=INIT();[RMIN,NEXT,TIME]=TIMING(TNE,TIME);IfNEXT==1[STATUS,TOTDEL,NUMCUS,ANIQ,NIQ,TLEVNT,TNE(1),TNE(2)]=ARRIVE(TIME,STATUS,TOTDEL,NUMCUS,ANIQ,NIQ,TLEVNT,TARRVL);else[NIQ,STATUS,ANIQ,TIME,TLEVNT,DELAY,TARRVL,TOTDEL,NUMCUS,TNE(2)]=DEPART(NIQ,STATUS,ANIQ,TIME,TLEVNT,DELAY,TARRVL,TOTDEL,NUMCUS);endifNUMCUS<TOTCUS[RMIN,NEXT,TIME]=TIMING(TNE,TIME);ifNEXT==1[STATUS,TOTDEL,NUMCUS,ANIQ,NIQ,TLEVNT,TNE(1),TNE(2)]=ARRIVE(TIME,STATUS,TOTDEL,NUMCUS,ANIQ,NIQ,TLEVNT,TARRVL);else[NIQ,STATUS,ANIQ,TIME,TLEVNT,DELAY,TARRVL,TOTDEL,NUMCUS,TNE(2)]=DEPART(NIQ,STATUS,ANIQ,TIME,TLEVNT,DELAY,TARRVL,TOTDEL,NUMCUS);endelseend圖3.12排隊服務系統模擬的主程序第四十八頁,共八十一頁,2022年,8月28日3.4離散系統模擬案例(2)INIT子程序INIT子程序的目的是對系統參數實施初始化。如圖3.13所示,還通過TNE(1)=TIME+exprnd(1)語句確定首次顧客到達時間,設定,以保證首次事件必定是顧客到達事件。function[TIME,STATUS,NIQ,TLEVNT,NUMCUS,TOTDEL,ANIQ,TNE(1),TNE(2)]=INIT()TIME=0.0;STATUS=0.0;//服務員狀態NIQ=0;//系統中的停留人數TLEVNT=0.0;//上次事件時間NUMCUS=0;//已結束服務的顧客數TOTDEL=0.0;//顧客停留時間總和ANIQ=0.0;//系統中人數的時間積分值TNE(1)=TIME+exprnd(1);//TNE(1)為事件1的發生時間,設置模擬的首次事件時間TNE(2)=100000000000000;圖3.13INIT子程序第四十九頁,共八十一頁,2022年,8月28日3.4離散系統模擬案例(3)TIMING時鐘子程序本系統模擬的定時子程序(如圖3.14)扮演著“模擬時鐘”的角色,它依據離散模擬時間前移的機理,確定下一次事件的類型和時間。在程序中,首先比較TNE(1),TNE(2),…,TNE(NEVNTS)的數值,此處NEVNTS為事件類型數目,由主程序設定,在本例中它等于2,然后確定下次事件類型NEXT等于事件時間為最小值的事件的類型,進而通過TIME=TNE(NEXT)語句將模擬時鐘推移到下次事件時間。若出現NEXT=0,即事件表已經空白,計算機就會終止模擬。(4)ARRIVE子程序ARRIVE子程序是處理第1類事件即顧客到達事件的子程序。圖3.15所示為這個子程序的流程圖。圖3.16則是ARRIVE子程序的源程序。第五十頁,共八十一頁,2022年,8月28日3.4離散系統模擬案例function[RMIN,NEXT,TIME]=TIMING(TNE,TIME)RMIN=10000000000;//最近事件的時間NEXT=0;//下一事件類型[m,n]=size(TNE);fori=1:nifTNE(i)<RMINRMIN=TNE(i);//第1次運行時,RMIN=TNE(1),I=1NEXT=i;elseendendifNEXT<=0input('EVENTLISTISEMPTY');elseTIME=TNE(NEXT);//當前模擬時鐘推移到最近事件時間end圖3.14定時子程序圖3.15ARRIVE子程序流程圖第五十一頁,共八十一頁,2022年,8月28日3.4離散系統模擬案例function[STATUS,TOTDEL,NUMCUS,ANIQ,NIQ,TLEVNT,C10,C11]=ARRIVE(TIME,STATUS,TOTDEL,NUMCUS,ANIQ,NIQ,TLEVNT,TARRVL)C10=TIME+exprnd(1);//安排下一個到達事件時間ifSTATUS==1//判斷服務員是否繁忙ANIQ=ANIQ+NIQ*(TIME-TLEVNT);//系統中排隊數目的時間積分值,TLEVNT為上次事件的時間TLEVNT=TIME;NIQ=NIQ+1;//排隊等待的顧客數目if(NIQ>100)input('OVERFLOWOFTHEARRAYTARRVL');TARRVL(NIQ)=TIME;//排隊等待的第NIQ個顧客的到達時間elseendelseDELAY=0.0;//顧客排隊等待時間TOTDEL=TOTDEL+DELAY;//已結束服務的所有顧客的停留時間NUMCUS=NUMCUS+1;//已結束服務的顧客數STATUS=1;//使服務員變忙C11=TIME+exprnd(0.5);//安排離去時間endreturn圖3.16ARRIVE子程序的源程序第五十二頁,共八十一頁,2022年,8月28日3.4離散系統模擬案例(5)DEPART子程序DEPART子程序處理顧客服務結束離開系統事件,其流程圖見圖3.17,圖3.18是它的源程序。圖3.17DEPART子程序流程圖第五十三頁,共八十一頁,2022年,8月28日3.4離散系統模擬案例function[NIQ,STATUS,ANIQ,TIME,TLEVNT,DELAY,TARRVL,TOTDEL,NUMCUS,D11]=DEPART(NIQ,STATUS,ANIQ,TIME,TLEVNT,DELAY,TARRVL,TOTDEL,NUMCUS)ifNIQ<=0//NIQ為隊列中的顧客數

STATUS=0;D11=10000000000000000000;elseANIQ=ANIQ+NIQ*(TIME-TLEVENT);//系統中排隊數目的時間積分值TLEVENT=TIME;//上次事件的時間NIQ=NIQ-1;//排隊數DELAY=TIME-TARRVL(1);//DELAY為顧客排隊等待時間TARRVL(1)為隊列中第1個顧客的到達時間TOTDEL=TOTDEL+DELAY;//已結束服務的所有顧客的停留時間NUMCUS=NUMCUS+1;//系統中已結束服務的顧客數目D11=TIME+exprnd(0.5);//安排顧客離開時間if(NIQ<>0)//如果隊列空了

forI=1:NIQI1=I+1;TARRVL(I)=TARRVL(I1);//隊列中第I個顧客的到達時間,表明先到先服務的原則

endelseendend圖3.18DEPART子程序的源程序第五十四頁,共八十一頁,2022年,8月28日3.4離散系統模擬案例由本排隊服務系統模擬的輸出報告(見圖3.19)可知,本排隊服務系統的顧客平均停留時間為0.497min,平均排隊長度為0.5個顧客。SINGLE-SERVERQUEUEINGSYSTEMMEANINTERARRIVALTIME 1.000MINUTESMEANSERVICETIME .500MINUTESNUMBEROFCUSTOMERS 1000AVERAGEDELAYINQUEUE .497MINUTESAVERAGENUMBERINQUEUE .500圖3.19排隊系統模擬的輸出報告第五十五頁,共八十一頁,2022年,8月28日3.5離散系統模擬工具按照建模思想和所用語言工具的不同,可分三個層次:(1)直接用某種通用的高級語言編寫和運行模擬程序(如用C/C++,Pascal,Fortran,數據庫語言)。(2)采用專用的計算機模擬語言來進行建模與分析(SIMAN,GPSS,SLAM)。(3)采用更高層次的圖形組合式的模擬軟件包(如Arena)。第五十六頁,共八十一頁,2022年,8月28日3.5離散系統模擬工具各種專用模擬語言,盡管在結構、邏輯關系、理解及使用的難易程度以及靈活性等方面有所不同,但是,一般說來,都具備下述功能,無須建模者自己動手開發。(1)數據結構及內存的管理。①表述系統的實體。②文件處理。(2)模擬時間管理。(3)隨機分布抽樣。(4)計算能力。第五十七頁,共八十一頁,2022年,8月28日3.5離散系統模擬工具(5)數據的收集、分析與顯示。①數據收集。②數據分析。(6)調整程序和監測系統動態。為適應調整計算機程序的需要,模擬語言應具有下述功能:①報告源程序在編譯時和執行中的出錯信息;②當執行中發生誤差時,顯示完整的程序流程狀態;③在整個程序或某程序段,進行事件跟蹤以及運用程序診斷,以獲得有關信息,分析如錯原因,對程序進行相應修改。第五十八頁,共八十一頁,2022年,8月28日3.6Arena模擬工具一、Arena簡介1.Arena的來源及發展歷史1982年和1984年,柔性建模語言SIMAN和基于SIMAN的動畫模擬環境CINEMA相繼問世。基于SIMAN/CINEMA發展起來的Arena是美國SystemModeling公司于1993年開始研制開發的新一代可視化通用交互集成模擬環境,其核心技術來源于SIMAN和CINEMA。在此基礎上有了深刻的變化,很好地解決了計算機模擬與可視化技術的有機集成,兼備高級模擬器易用性和專用模擬語言柔性的優點,并且還可以與當時流行的通用過程語言,如VisualBasic,FORTRAN和C/C++等編寫的程序連接運行。第五十九頁,共八十一頁,2022年,8月28日3.6Arena模擬工具2.應用領域Arena可以用于不同類型的模擬應用,包括離散模擬、連續模擬(系統動力學模擬)、離散-連續混合模擬,當然,也包括蒙特卡羅模擬。作為通用的可視化交互集成模擬環境,Arena的應用范圍幾乎覆蓋可視化模擬的所有領域。如生產制造系統、公共系統和服務系統等。第六十頁,共八十一頁,2022年,8月28日3.6Arena模擬工具二、結構與功能1.結構體系可視化集成模擬環境Arena,將通用過程語言、專用模擬語言和模擬器的優點有機地整合集成起來,采用面向對象技術、層次化的系統結構,兼備易用性和建模靈活性兩方面的優點。在Arena的最底層,過程語言(包括VB、C/C++和Fortran)用來建立特殊要求的模型,即滿足復雜的決策規則或外部數據的選取等這些特別的需求。塊和元素面板是由SIMAN模塊組成的,即SIMAN模板,因而它具有SIMAN的一切優點。第六十一頁,共八十一頁,2022年,8月28日3.6Arena模擬工具支持與運送面板是由SIMAN模塊封裝后組成的模板,可以進行靈活性更大的建模。常用面板是模擬建模過程中最常用的一些通用模塊,和支持與運送面板一起組成了Arena模板。SIMAN模板、Arena模板則、以及用戶采用過程語言編寫的程序,一起構成了Arena的標準版本。應用方案模板(ApplicationSolutionTemplates,簡稱ASTs)是SystemModeling公司建造的一些常用系統模板,Arena的標準版本與ASTs和用戶生成模板一起則組成了Arena的專業版本。第六十二頁,共八十一頁,2022年,8月28日3.6Arena模擬工具2.功能特點作為新一代可視化交互集成模擬環境,Arena具有強大的功能。

(1)輸入分析器(InputAnalyzer)輸入數據質量的好壞決定了系統模擬的質量。在Arena環境下,提供有的輸入分析器作為Arena的一個標準組成成分來輔助用戶進行數據處理。輸入分析器是一個功能強大且通用的工具,能夠分析用戶所提供的數據,以擬合出各種概率分布函數,或者說生成各種概率分布函數,其中包含了該分布函數的特征參數。輸入分析器的輸入數據是由用戶采樣收集的,輸出則是各種類型分布函數及其參數估計,Arena能夠提供幾乎所有常用的分布函數。第六十三頁,共八十一頁,2022年,8月28日3.6Arena模擬工具(2)可視化柔性建模在Arena環境下,采用的是面向對象的層次建模方法。對象是構成模型的最基本的元素,對象與對象之間相互作用構成了模型。模型本身也是模塊化的,這樣,模型又可以與其它模塊或對象構成新的更大更復雜的模型,從而形成層次建模,保證了模型層次分明且易于管理。在可視化交互集成環境Arena下,建模與可視化技術是集成在一起的。這樣,在建模的同時實現模型的可視化表達,提高了可視化建模的效率。第六十四頁,共八十一頁,2022年,8月28日3.6Arena模擬工具(3)輸出分析器(OutputAnalyzer)輸出分析器提供了一個易用的用戶界面以幫助用戶簡化數據分析,使用戶查看和分析輸出數據更加快捷、簡便。輸出數據分析器可對數據進行多樣的顯示處理,包括條形圖(Barchart)、柱狀圖(Histogram)、移動平均(MovingAverage)、曲線圖(Plot)、表(Table)等。還可對數據進行功能強大的數理統計分析。(4)Arena的定制與集成Arena2.0以上的版本能完全與MicrosoftWindows和MicrosoftWindowsNT等兼容。第六十五頁,共八十一頁,2022年,8月28日3.6Arena模擬工具Arena開發了兩項Windows技術以增強桌面應用程序的集成性。一是ActiveX自動化(OLE自動化)。二是應用程序集成技術VisualBasicforApplication(VBA)。這兩項Windows技術共同作用使得Arena可以和其它支持ActiveX自動化的程序集成到一起。Arena可以控制和定制用戶化的輸出報表。Arena還可以通過對象鏈結與嵌入(OLE),來使用其它應用程序的文件和函數。第六十六頁,共八十一頁,2022年,8月28日3.6Arena模擬工具三、基本模塊1.流程圖模塊(1)生成模塊:該模塊是一個模擬模型開始點,用于產生到達的實體。(2)處理模塊:該模塊用于處理到達的實體。(3)判斷模塊:該模塊表述系統中的決策過程,可用于到達實體的分類,也可用于實體流動的分流。(4)賦值模塊:該模塊用于對變量、實體特性、實體類型、實體圖片或其他系統變量賦值,且一個模塊可以完成多個賦值。第六十七頁,共八十一頁,2022年,8月28日3.6Arena模擬工具(5)批量模塊:該模塊用于模擬模型中的組合功能。(6)分解模塊:該模塊用于將一個輸入實體拷入多實體中,或將已有的一組實體分解。(7)記錄模塊:該模塊用于收集數據,包括各種類型的觀察統計數據。同時提供了統計計算類型,而且指定了記錄和計數集合。(8)清除模塊:該模塊是模擬模型的結束點,用于清除被處理完的實體,并記錄實體的統計值。第六十八頁,共八十一頁,2022年,8月28日3.6Arena模擬工具2.數據模塊(1)實體模塊:該數據模塊定義了模擬中各實體的類型和它們的初始圖形值,也定義了實體初始成本信息和維持成本。(2)排隊模塊:該數據模塊用于改變一個特定的排隊系統的排隊規則。缺省的排隊規則是先進先出。(3)資源模塊:該數據模塊定義在模擬系統中的資源,包括成本信息和資源能力。(4)時間表模塊:該數據模塊同資源模塊一起定義一個資源運作的時間表,或者同產生模塊一起定義一個到達時間表。另外,時間表還用于基于模擬時間的因子時間延遲。(5)集合模塊:該數據模塊定義了各種類型的集合,包括資源、記數器、記錄實體類型以及實體圖形。(6)變量模塊:該數據模塊用于定義變量的維數和初始值。第六十九頁,共八十一頁,2022年,8月28日3.6Arena模擬工具四、Arena的建模過程示例1.示例考察一個簡單的抵押申請處理過程,以顯示如何用Arena5.0建模、模擬及進行可視化和分析。圖3.43抵押申請處理流程圖第七十頁,共八十一頁,2022年,8月28日3.6Arena模擬工具2.Arena建模環境從WindowsStart菜單中選擇Programs/Arena/ArenaBasicEdition開始運行。此時,Arena的建模環境就打開了,這是一個新的模型窗口。模型窗口中有三個主要區域:①基本處理模塊區域(BasicProcess):包含建模圖標,稱為模塊,可用它們定義業務處理流程;②報告區(Reports):包含很多報告,這些報告用來顯示模擬運行結果;③導航區(Navigate):允許顯示不同的模型。還有兩個主要的小窗口:流程圖窗口和變量、參數清單窗口。第七十一頁,共八十一頁,2022年,8月28日3.6Arena模擬工具3.將處理過程映射為流程圖首先將建立一個流程圖。“流程圖”這個詞涉及到了兩個概念:建模和模擬。(1)產生抵押申請單實體流程圖是從產生模塊(CreateModule)開始的。這是實體流經模型的起始點。用鼠標從基本處理模塊區中拖動Create模塊到模型窗口中,一個缺省的名為“Createl”,就賦給了該模塊。圖3.45添加Create模塊第七十二頁,共八十一頁,2022年,8月28日3.6Arena模擬工具(2)處理申請單的過程選中Create模塊,用鼠標將Process模塊從基本處理模塊區中拖至模型窗口,將它放至Create右邊。

(3)如何使用Snap和Grid如果流程圖窗口中模塊排列得不整齊,可以使用Arena中的Snap和Grid功能調整

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論