《管理系統(tǒng)仿真與GPSSJAVA》第三章課件_第1頁
《管理系統(tǒng)仿真與GPSSJAVA》第三章課件_第2頁
《管理系統(tǒng)仿真與GPSSJAVA》第三章課件_第3頁
《管理系統(tǒng)仿真與GPSSJAVA》第三章課件_第4頁
《管理系統(tǒng)仿真與GPSSJAVA》第三章課件_第5頁
已閱讀5頁,還剩51頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

第三章從GPSS到GPSS/Java北京市高等教育精品教材《管理系統(tǒng)仿真與GPSS/Java》第三章從GPSS到GPSS/Java北京市高等教育精品1第3章從GPSS到GPSS/Java3.1GPSS建模基礎(chǔ)3.2基于GPSS的GPSS/Java第3章從GPSS到GPSS/Java3.1GPS23.1GPSS建?;A(chǔ)3.1.1GPSS處理程序也稱為GPSS處理器,它是實(shí)現(xiàn)了GPSS算法的計(jì)算機(jī)解釋程序。3.1.2GPSS描述模型的方法模塊圖:描述模型的邏輯結(jié)構(gòu),相當(dāng)于程序框圖或流程圖,一共有50塊左右,不同形狀的模塊代表不同的模擬功能。模塊之間用箭線連接,箭頭所指模塊表示當(dāng)前模塊執(zhí)行完后下一個要執(zhí)行的模塊。由箭線及其指向定義了模塊執(zhí)行的順序,也稱為模塊圖路徑。模型程序:由按一定的邏輯排列并遵守一定語法規(guī)則的GPSS語句組成的文本文件,可由GPSS解釋器執(zhí)行。

3.1GPSS建?;A(chǔ)3.1.1GPSS處理程序33.1GPSS建?;A(chǔ)

例如:某理發(fā)館只有一位理發(fā)師,顧客到達(dá)時間間隔平均為18分鐘,偏差6分鐘,均勻分布。理發(fā)師為一個顧客理發(fā)平均所需時間為16分鐘,偏差4分鐘,均勻分布。顧客到達(dá)后,若理發(fā)師閑,則立刻接受服務(wù),否則按先來先接受服務(wù)的規(guī)則排隊(duì)等待,模擬8小時。*Demo3_1.gpsSIMULATEGENERATEQUEUESEIZEDEPARTADVANCERELEASETERMINATEGENERATETERMINATESTARTEND

18,6JOEQJOEJOEQ16,4JOE48011

模塊圖

模型程序3.1GPSS建?;A(chǔ)例如:某理發(fā)館只有一位理發(fā)師,顧43.1.3動態(tài)實(shí)體、服務(wù)實(shí)體和輔助實(shí)體仿真系統(tǒng)動態(tài)實(shí)體流動性暫駐性真實(shí)系統(tǒng)動態(tài)實(shí)體代表的實(shí)際事物超級市場顧客高速公路汽車貨運(yùn)系統(tǒng)卡車加工車間零件就診醫(yī)院病人服務(wù)實(shí)體固定實(shí)體,分為單服務(wù)臺服務(wù)實(shí)體多服務(wù)臺服務(wù)實(shí)體真實(shí)系統(tǒng)服務(wù)實(shí)體代表的實(shí)際事物超級市場收費(fèi)員高速公路收費(fèi)站貨運(yùn)系統(tǒng)倉庫加工車間加工機(jī)床就診醫(yī)院醫(yī)生與化驗(yàn)師輔助實(shí)體不對應(yīng)實(shí)際系統(tǒng)的具體事物3.1.3動態(tài)實(shí)體、服務(wù)實(shí)體和輔助實(shí)體仿動態(tài)實(shí)體流動性暫駐51、動態(tài)實(shí)體動態(tài)實(shí)體在模型中總是試圖從一個模塊流入另一個模塊,具有以下行為特點(diǎn):1根據(jù)需要按一定時刻或一定間隔時間進(jìn)入模型2在某一時刻可以離開模型3眾多動態(tài)實(shí)體可以同時存在于模型中4在任一時刻,若有多個動態(tài)實(shí)體都要在模型中向前移動,那么要采取依次處理的機(jī)制動態(tài)實(shí)體在模型中停止運(yùn)動的條件:動態(tài)實(shí)體總是試圖從一個模塊流入另一個模塊,只有下列條件之一發(fā)生時停止運(yùn)動。1流入的模塊具有使動態(tài)實(shí)體停留某一事先確定的間隔時間的功能2流入的模塊具有拒絕動態(tài)實(shí)體流入的功能,此時動態(tài)實(shí)體停留在緊前模塊。3動態(tài)實(shí)體流入TERMINATE模塊,便被排出模型之外1、動態(tài)實(shí)體動態(tài)實(shí)體在模型中總是試圖從一個模塊流入另一個模62、服務(wù)實(shí)體1.服務(wù)實(shí)體映射為實(shí)際系統(tǒng)中能夠提供服務(wù)的實(shí)體,它們通常不會隨著時間的變化,而發(fā)生移動或消失。2.服務(wù)實(shí)體有一定的容量。3.服務(wù)實(shí)體提供的服務(wù)要持續(xù)一定的時間(可為隨機(jī)值)4.每個服務(wù)實(shí)體都有一對與動態(tài)實(shí)體相耦合的模塊語句,代表服務(wù)的發(fā)生與結(jié)束。動態(tài)實(shí)體到達(dá)占用服務(wù)實(shí)體服務(wù)開始服務(wù)持續(xù)一段時間釋放服務(wù)實(shí)體服務(wù)結(jié)束動態(tài)實(shí)體離開與動態(tài)實(shí)體相耦合的模塊2、服務(wù)實(shí)體1.服務(wù)實(shí)體映射為實(shí)際系統(tǒng)中能夠提供服務(wù)的實(shí)體73、輔助實(shí)體GPSS定義了若干不同類型的輔助實(shí)體,大都不對應(yīng)實(shí)際系統(tǒng)的具體事物。這類實(shí)體有:1.排隊(duì)實(shí)體(簡稱隊(duì)列)2.函數(shù)實(shí)體(簡稱函數(shù))3.保存值實(shí)體(簡稱保存值或保留值)4.表實(shí)體(簡稱表或統(tǒng)計(jì)表)5.邏輯開關(guān)實(shí)體(簡稱邏輯開關(guān)或開關(guān))6.變量實(shí)體(簡稱變量)7.用戶鏈實(shí)體(簡稱用戶鏈)它們?yōu)榻L峁┻壿?、?jì)算、統(tǒng)計(jì)和輸出等方面的輔助功能。從定義這些輔助實(shí)體的數(shù)據(jù)結(jié)構(gòu)方面來看,類似于服務(wù)實(shí)體,因此模型中將服務(wù)實(shí)體和輔助實(shí)體統(tǒng)稱為資源實(shí)體。3、輔助實(shí)體GPSS定義了若干不同類型的輔助實(shí)體,大8模擬時鐘模擬時鐘為一全局變量,初值為0時間單位:由用戶隱含定義模擬時間與實(shí)際時間:實(shí)際系統(tǒng)從一個狀態(tài)過渡到另一個狀態(tài),需要一個較長的時間,在GPSS中,僅僅是對時間變量和一系列有限個狀態(tài)變量重新賦值所需時間。3.1.4模擬時鐘和仿真算法

-最短時間步長事件模擬法模擬時鐘3.1.4模擬時鐘和仿真算法93.1.4模擬時鐘和仿真算法-最短時間步長事件模擬法在某個時間點(diǎn)上,該發(fā)生的事件依次發(fā)生(事件的發(fā)生與系統(tǒng)狀態(tài)修正一一對應(yīng)),全部發(fā)生完畢,也就完成了該時刻下系統(tǒng)狀態(tài)的修正,于是時鐘被調(diào)整到下一事件發(fā)生的時刻3.1.4模擬時鐘和仿真算法在某個時間點(diǎn)上,該發(fā)生的事件103.1.5動態(tài)實(shí)體與事件在GPSS中,動態(tài)實(shí)體進(jìn)入或流出某一模塊就意味某一事件(普通事件或關(guān)鍵事件)的發(fā)生或結(jié)束,動態(tài)實(shí)體的流動路徑就是一系列事件發(fā)生的順序。

關(guān)鍵事件:在某一未來的確定時刻所發(fā)生,只有以下兩種情況。1)動態(tài)實(shí)體由GENERATE模塊產(chǎn)生后通過該模塊進(jìn)入模型時,代表接受服務(wù)的實(shí)體到達(dá)服務(wù)系統(tǒng)的事件發(fā)生了。2)動態(tài)實(shí)體進(jìn)入ADVANCE模塊滯留一段時間后,代表接受服務(wù)的實(shí)體接受服務(wù)后離開服務(wù)實(shí)體的事件發(fā)生了。普通事件:由關(guān)鍵事件引發(fā)的事件為普通事件。事件三要素:1.事件類型,即發(fā)生了什么事2.事件發(fā)生時間,是否確定3.事件發(fā)生的主體,即事件發(fā)生在哪一個動態(tài)實(shí)體上3.1.5動態(tài)實(shí)體與事件在GPSS中,動態(tài)實(shí)體進(jìn)113.1.5動態(tài)實(shí)體與事件動態(tài)實(shí)體映射為內(nèi)存中的一個連續(xù)的存儲區(qū),動態(tài)實(shí)體有自己的屬性:如編號、當(dāng)前所在模塊編號、下一個要進(jìn)入的模塊編號、未來移動時間等。未來事件鏈:存放在未來某個確定時刻會發(fā)生關(guān)鍵事件的動態(tài)實(shí)體,按照從小至大的未來發(fā)生時間依次從鏈頭至鏈尾排列。時鐘修正:根據(jù)未來鏈前端第一個動態(tài)實(shí)體的未來移動時間調(diào)整時鐘,并把未來事件鏈上移動時間等于當(dāng)前時刻的動態(tài)實(shí)體一一移入模型。

時鐘修正后,處理器立即啟動系統(tǒng)狀態(tài)修正程序。3.1.5動態(tài)實(shí)體與事件動態(tài)實(shí)體映射為內(nèi)存中的一個連續(xù)的存123.1.5動態(tài)實(shí)體與事件系統(tǒng)狀態(tài)修正:處理器依次移動在當(dāng)前時刻每一個可以移動的動態(tài)實(shí)體,使之在模型中盡可能向前運(yùn)動。直到以下3個條件之一發(fā)生為止:(1)動態(tài)實(shí)體進(jìn)入ADVANCE模塊,獲得未來移動時間后,被重新放到未來事件鏈。(2)動態(tài)實(shí)體被類似SEIZE的模塊所拒絕時,停留在緊前模塊。(3)動態(tài)實(shí)體進(jìn)入TERMINATE模塊被排除模型。若在當(dāng)前時刻所有動態(tài)實(shí)體都停止了運(yùn)動,則系統(tǒng)狀態(tài)修正的操作結(jié)束;處理器立即啟動時鐘修正程序。系統(tǒng)狀態(tài)修正和時鐘修正交替進(jìn)行,直到仿真結(jié)束的條件發(fā)生。3.1.5動態(tài)實(shí)體與事件系統(tǒng)狀態(tài)修正:處理器依次移動在133.1.5動態(tài)實(shí)體與事件關(guān)鍵事件:在未來一個確定的時間會發(fā)放生的事件,如顧客到達(dá)理發(fā)館和滯留一段確定的時間后釋放理發(fā)師事件。發(fā)生關(guān)鍵事件觸發(fā)調(diào)整當(dāng)前時鐘觸發(fā)系統(tǒng)狀態(tài)修正對應(yīng)發(fā)生普通事件循環(huán),直到普通事件全部發(fā)生為止再次發(fā)生關(guān)鍵事件普通事件:發(fā)生時間不確定,因關(guān)鍵事件的觸發(fā)而發(fā)生。如,顧客到達(dá)可以觸發(fā)排入隊(duì)列事件、占用理發(fā)師事件(可能)、離開隊(duì)列事件;釋放理發(fā)師關(guān)鍵事件可以觸發(fā)當(dāng)前顧客離開理發(fā)館事件,正在等待的顧客占用理發(fā)師、離開隊(duì)列、開始理發(fā)事件等。3.1.5動態(tài)實(shí)體與事件關(guān)鍵事件:在未來一個確定的時間會發(fā)14動態(tài)實(shí)體由GENERATE模塊產(chǎn)生。GENERATE模塊每被執(zhí)行一次,便產(chǎn)生一個動態(tài)實(shí)體,并為其編號,記錄其未來移動時間和下一移入的模塊,然后將其放至未來事件鏈(該動態(tài)實(shí)體當(dāng)前所在模塊為-1,下一要進(jìn)入的模塊就是該GENERATE模塊)。在以后的某個時鐘修正時刻(等于該動態(tài)實(shí)體的未來移動時間),這一動態(tài)實(shí)體被送入模型。由某GENERATE模塊產(chǎn)生的動態(tài)實(shí)體在模型中開始移動時,首先將進(jìn)入的是產(chǎn)生它的GENERATE模塊,于是,該GENERATE模塊又被執(zhí)行一次,而以上的過程又被重復(fù)一次,即又由該GENERATE模塊,產(chǎn)生一個新的動態(tài)實(shí)體,它被標(biāo)記后,又被放至未來事件鏈,然后引發(fā)這一事件的動態(tài)實(shí)體進(jìn)入緊后模塊,開始其運(yùn)動。模型輸入的作用就是使模型的所有GENERATE模塊按其排列的順序,各被執(zhí)行一次,且僅僅一次。于是模型輸入完成后,未來事件鏈依次按未來移動時間的先后從頭至尾排列著每個GENERATE模塊產(chǎn)生的第一個動態(tài)實(shí)體。3.1.6.動態(tài)實(shí)體的產(chǎn)生與模型輸入動態(tài)實(shí)體由GENERATE模塊產(chǎn)生。GENERATE模153.2基于GPSS的GPSS/Java3.2.1什么是GPSS/Java

:GPSS/JAVA是用JAVA實(shí)現(xiàn)的GPSS專用仿真系統(tǒng)。GPSS/JAVA是使用JAVA來實(shí)現(xiàn)建模接口和仿真算法的若干程序模塊,并將這些程序模塊以類的形式集中封裝在一仿真類庫(gpssjv)中,以供用戶使用。用戶在建立仿真模型時,只需引入仿真類庫,便可調(diào)用仿真類庫提供的仿真算法和建模接口,來構(gòu)建實(shí)際系統(tǒng)的仿真模型。

3.2基于GPSS的GPSS/Java3.2.1什么是G163.2.1GPSS/Java的優(yōu)點(diǎn)(1)仿真系統(tǒng)完全向用戶開放,用戶可以根據(jù)需要任意向仿真類庫添加實(shí)現(xiàn)某種功能的新接口。(2)GPSS/JAVA類庫(gpssjv)結(jié)構(gòu)高度模塊化,模塊由JAVA類組成。(3)建模語言功能的極大豐富與擴(kuò)展,用戶可以在模型程序中使用JAVA的語言部分的所有功能,并且可以使用JAVA本身提供的標(biāo)準(zhǔn)類庫及其他開發(fā)人員提供的非標(biāo)準(zhǔn)的類庫,來實(shí)現(xiàn)任何滿足構(gòu)造復(fù)雜模型所需要的操作。仿真類庫仿真基礎(chǔ)類仿真支持類BlockOp類資源實(shí)體類操作模塊類動態(tài)實(shí)體類、仿真調(diào)度類、鏈表操作類、異常處理類、輔助操作符、常量定義接口和公用消息類封裝了建模所需的模塊語句和標(biāo)準(zhǔn)屬性封裝了模型程序界面接口和模型控制語句等3.2.1GPSS/Java的優(yōu)點(diǎn)(1)仿真系統(tǒng)完全向用173.2.2.Java簡述(1)對象與類客觀存在的具體事物就是對象性質(zhì)和行為相似的事物的總稱為類要先定義類,然后用其產(chǎn)生對象。類含有兩種屬性:成員變量,描述對象的性質(zhì)或狀態(tài)成員方法,描述對象的行為或執(zhí)行的操作

Java使用關(guān)鍵詞class定義一個類,每個類要有一個類名,類名必須是合法的Java標(biāo)識符。例如,以下定義了一個名為Facility的類,它有3個成員變量和5個成員方法。類公有成員私有成員又稱接口,可以通過對象調(diào)用僅能被類內(nèi)部的程序訪問成員變量成員方法3.2.2.Java簡述類公有成員私有成員又稱接口,可以通183.2.2.Java簡述//Facility.javapackgegpssjv;publicclassFacility{Stringname;intcurrentState=0;staticintcount=1;publicFacility(){=”FACI”+count;count++;}publicFacility(Stringname){=name;}publicvoidseize(){if(currentState==0){currentState=1;……return;}else{……}}……publicvoidrelease(){currentState=0;……}publicintFNU$(){if(currentState==0)return1;elsereturn0;}……}//定義包//成員變量1設(shè)備輸出名//成員變量2設(shè)備當(dāng)前狀態(tài)//成員變量3設(shè)備編號//方法1構(gòu)造方法無參//方法2構(gòu)造方法有參//方法3占用設(shè)備//回到前一模塊等待//方法4釋放設(shè)備//方法5標(biāo)準(zhǔn)屬性返回設(shè)備是否處于閑置狀態(tài)3.2.2.Java簡述//Facility.java193.2.2.Java簡述(2)創(chuàng)建對象使用類,創(chuàng)建對象。例如:Facilityb1=newFacility(“BarberWang”);Facilityb2=newFacility(“BarberZhang”);b1和b2代表使用Facility類創(chuàng)建的兩個對象,稱為引用變量。對象在創(chuàng)建時會自動調(diào)用其構(gòu)造方法,構(gòu)造方法與類名相同,且無返回類型,常用以初始化對象的成員變量。一個類中,可以定義多個同名方法,但方法參數(shù)的類型或個數(shù)不同,這稱為方法的重載;構(gòu)造方法是特殊的方法,也可以重載。(3)this引用關(guān)鍵詞this為一引用變量,在某一方法中代表當(dāng)前對象,即調(diào)用該方法的對象。3.2.2.Java簡述203.2.2.Java簡述(4)繼承與覆蓋Java使用關(guān)鍵詞extends來描述兩個類的繼承關(guān)系,例如:classAextendsB{…}則,A為B的子類。子類繼承父類的非私有屬性,可以重寫(覆蓋)父類簽名相同的方法。(5)抽象方法與抽象類用關(guān)鍵詞abstract修飾的方法和類,分別稱為抽象方法和抽象類。BlockOp類封裝了抽象方法run()和simulate(),稱為模型程序界面接口,模型類必須實(shí)現(xiàn)這兩個方法。(6)異常及其捕捉GPSS/JAVA提供了異常處理類gpssException.java等,用以處理模型運(yùn)行時的常見異常。3.2.2.Java簡述(4)繼承與覆蓋213.2.2.Java簡述(7)包及其引用一個包中可以含有多個類,但只有公有類能夠被該包以外的程序所訪問。一個源程序文件可以定義多個類,但只能定義一個類是公有的,該程序文件必須以公有類的類名命名,擴(kuò)展名為java。使用包語句package包名;將類定義在一個包中。GPSS/JAVA提供的所有類封裝在gpssjv包中,仿真模型類必須引入該包,才能引用包中提供的建模接口。在對引用此包的模型程序進(jìn)行編譯和運(yùn)行時,系統(tǒng)需要通過包的絕對路徑訪問包中被引用的類。JAVA約定由環(huán)境變量CLASSPATH提供此信息,即包路徑的直接父目錄的絕對路徑。

3.2.2.Java簡述(7)包及其引用223.2.2.Java簡述(7)包及其引用

例如,若包gpssjv的路徑為d:\myjava\gpss\gpssjv,則應(yīng)設(shè)置CLASSPATH=.;d:\myjava\gpss在完成包的安裝和正確設(shè)置后,若要在程序中使用包中的類,可以在程序首部使用包引入語句,例如:importgpssjv.*;(8)主類與主方法含有主方法的類稱為主類。一個基于桌面的JAVA應(yīng)用程序,程序從主類的主方法開始執(zhí)行,主方法執(zhí)行完,程序結(jié)束。3.2.2.Java簡述(7)包及其引用233.2.3GPSS/JAVA描述模型的方式

GPSS/JAVA仍舊使用模塊圖描述系統(tǒng)模型的邏輯結(jié)構(gòu)。

GPSS/JAVA模型程序是由按一定的邏輯排列,遵守JAVA語法規(guī)則的GPSS/JAVA類庫接口語句組成的JAVA程序文件,編譯后生成模型類文件,由JAVA解釋器執(zhí)行。GPSS/JAVA語句與GPSS模塊語句和控制語句幾乎一一對應(yīng)。用GPSS/JAVA(桌面應(yīng)用完全版)編寫的Demo3_1模型的程序具有如下形式:3.2.3GPSS/JAVA描述模型的方式GPS243.2.3GPSS/JAVA描述模型的方式3.2.3GPSS/JAVA描述模型的方式253.2.3GPSS/JAVA描述模型的方式GPSS/JAVA模型程序有如下書寫和語法要求:(1)必須引入gpssjv仿真包(類庫)(2)定義一個模型公有類(簡稱模型類),模型程序文件名必須與模型類名相同,擴(kuò)展名為java(3)模型類必須繼承類庫中定義的BlockOp類(4)主方法中創(chuàng)建一個模型類對象,通過此對象調(diào)用run方法(桌面應(yīng)用學(xué)生版不需要定義主方法)(5)模型類必須實(shí)現(xiàn)父類的run方法,在此安排GPSS/JAVA的模型控制語句(6)第一個模型控制語句必須是setModel()語句,該語句創(chuàng)建仿真調(diào)度程序?qū)ο螅?)所有GPSS的資源實(shí)體必須作為模型類成員變量,先定義,后使用(8)模型類必須實(shí)現(xiàn)父類的simulate方法,在此安排GPSS/JAVA的模塊語句(9)模型每一個模塊語句必須前導(dǎo)一個case標(biāo)號,標(biāo)號可以不連續(xù),但必須為非負(fù)遞增(10)不允許有case標(biāo)號,而無模塊語句。3.2.3GPSS/JAVA描述模型的方式GPSS/JA26謝謝謝謝27歡迎使用《管理系統(tǒng)仿真與GPSS/JAVA》歡迎使用《管理系統(tǒng)仿真與GPSS/JAVA》28第三章從GPSS到GPSS/Java北京市高等教育精品教材《管理系統(tǒng)仿真與GPSS/Java》第三章從GPSS到GPSS/Java北京市高等教育精品29第3章從GPSS到GPSS/Java3.1GPSS建?;A(chǔ)3.2基于GPSS的GPSS/Java第3章從GPSS到GPSS/Java3.1GPS303.1GPSS建?;A(chǔ)3.1.1GPSS處理程序也稱為GPSS處理器,它是實(shí)現(xiàn)了GPSS算法的計(jì)算機(jī)解釋程序。3.1.2GPSS描述模型的方法模塊圖:描述模型的邏輯結(jié)構(gòu),相當(dāng)于程序框圖或流程圖,一共有50塊左右,不同形狀的模塊代表不同的模擬功能。模塊之間用箭線連接,箭頭所指模塊表示當(dāng)前模塊執(zhí)行完后下一個要執(zhí)行的模塊。由箭線及其指向定義了模塊執(zhí)行的順序,也稱為模塊圖路徑。模型程序:由按一定的邏輯排列并遵守一定語法規(guī)則的GPSS語句組成的文本文件,可由GPSS解釋器執(zhí)行。

3.1GPSS建?;A(chǔ)3.1.1GPSS處理程序313.1GPSS建?;A(chǔ)

例如:某理發(fā)館只有一位理發(fā)師,顧客到達(dá)時間間隔平均為18分鐘,偏差6分鐘,均勻分布。理發(fā)師為一個顧客理發(fā)平均所需時間為16分鐘,偏差4分鐘,均勻分布。顧客到達(dá)后,若理發(fā)師閑,則立刻接受服務(wù),否則按先來先接受服務(wù)的規(guī)則排隊(duì)等待,模擬8小時。*Demo3_1.gpsSIMULATEGENERATEQUEUESEIZEDEPARTADVANCERELEASETERMINATEGENERATETERMINATESTARTEND

18,6JOEQJOEJOEQ16,4JOE48011

模塊圖

模型程序3.1GPSS建?;A(chǔ)例如:某理發(fā)館只有一位理發(fā)師,顧323.1.3動態(tài)實(shí)體、服務(wù)實(shí)體和輔助實(shí)體仿真系統(tǒng)動態(tài)實(shí)體流動性暫駐性真實(shí)系統(tǒng)動態(tài)實(shí)體代表的實(shí)際事物超級市場顧客高速公路汽車貨運(yùn)系統(tǒng)卡車加工車間零件就診醫(yī)院病人服務(wù)實(shí)體固定實(shí)體,分為單服務(wù)臺服務(wù)實(shí)體多服務(wù)臺服務(wù)實(shí)體真實(shí)系統(tǒng)服務(wù)實(shí)體代表的實(shí)際事物超級市場收費(fèi)員高速公路收費(fèi)站貨運(yùn)系統(tǒng)倉庫加工車間加工機(jī)床就診醫(yī)院醫(yī)生與化驗(yàn)師輔助實(shí)體不對應(yīng)實(shí)際系統(tǒng)的具體事物3.1.3動態(tài)實(shí)體、服務(wù)實(shí)體和輔助實(shí)體仿動態(tài)實(shí)體流動性暫駐331、動態(tài)實(shí)體動態(tài)實(shí)體在模型中總是試圖從一個模塊流入另一個模塊,具有以下行為特點(diǎn):1根據(jù)需要按一定時刻或一定間隔時間進(jìn)入模型2在某一時刻可以離開模型3眾多動態(tài)實(shí)體可以同時存在于模型中4在任一時刻,若有多個動態(tài)實(shí)體都要在模型中向前移動,那么要采取依次處理的機(jī)制動態(tài)實(shí)體在模型中停止運(yùn)動的條件:動態(tài)實(shí)體總是試圖從一個模塊流入另一個模塊,只有下列條件之一發(fā)生時停止運(yùn)動。1流入的模塊具有使動態(tài)實(shí)體停留某一事先確定的間隔時間的功能2流入的模塊具有拒絕動態(tài)實(shí)體流入的功能,此時動態(tài)實(shí)體停留在緊前模塊。3動態(tài)實(shí)體流入TERMINATE模塊,便被排出模型之外1、動態(tài)實(shí)體動態(tài)實(shí)體在模型中總是試圖從一個模塊流入另一個模342、服務(wù)實(shí)體1.服務(wù)實(shí)體映射為實(shí)際系統(tǒng)中能夠提供服務(wù)的實(shí)體,它們通常不會隨著時間的變化,而發(fā)生移動或消失。2.服務(wù)實(shí)體有一定的容量。3.服務(wù)實(shí)體提供的服務(wù)要持續(xù)一定的時間(可為隨機(jī)值)4.每個服務(wù)實(shí)體都有一對與動態(tài)實(shí)體相耦合的模塊語句,代表服務(wù)的發(fā)生與結(jié)束。動態(tài)實(shí)體到達(dá)占用服務(wù)實(shí)體服務(wù)開始服務(wù)持續(xù)一段時間釋放服務(wù)實(shí)體服務(wù)結(jié)束動態(tài)實(shí)體離開與動態(tài)實(shí)體相耦合的模塊2、服務(wù)實(shí)體1.服務(wù)實(shí)體映射為實(shí)際系統(tǒng)中能夠提供服務(wù)的實(shí)體353、輔助實(shí)體GPSS定義了若干不同類型的輔助實(shí)體,大都不對應(yīng)實(shí)際系統(tǒng)的具體事物。這類實(shí)體有:1.排隊(duì)實(shí)體(簡稱隊(duì)列)2.函數(shù)實(shí)體(簡稱函數(shù))3.保存值實(shí)體(簡稱保存值或保留值)4.表實(shí)體(簡稱表或統(tǒng)計(jì)表)5.邏輯開關(guān)實(shí)體(簡稱邏輯開關(guān)或開關(guān))6.變量實(shí)體(簡稱變量)7.用戶鏈實(shí)體(簡稱用戶鏈)它們?yōu)榻L峁┻壿?、?jì)算、統(tǒng)計(jì)和輸出等方面的輔助功能。從定義這些輔助實(shí)體的數(shù)據(jù)結(jié)構(gòu)方面來看,類似于服務(wù)實(shí)體,因此模型中將服務(wù)實(shí)體和輔助實(shí)體統(tǒng)稱為資源實(shí)體。3、輔助實(shí)體GPSS定義了若干不同類型的輔助實(shí)體,大36模擬時鐘模擬時鐘為一全局變量,初值為0時間單位:由用戶隱含定義模擬時間與實(shí)際時間:實(shí)際系統(tǒng)從一個狀態(tài)過渡到另一個狀態(tài),需要一個較長的時間,在GPSS中,僅僅是對時間變量和一系列有限個狀態(tài)變量重新賦值所需時間。3.1.4模擬時鐘和仿真算法

-最短時間步長事件模擬法模擬時鐘3.1.4模擬時鐘和仿真算法373.1.4模擬時鐘和仿真算法-最短時間步長事件模擬法在某個時間點(diǎn)上,該發(fā)生的事件依次發(fā)生(事件的發(fā)生與系統(tǒng)狀態(tài)修正一一對應(yīng)),全部發(fā)生完畢,也就完成了該時刻下系統(tǒng)狀態(tài)的修正,于是時鐘被調(diào)整到下一事件發(fā)生的時刻3.1.4模擬時鐘和仿真算法在某個時間點(diǎn)上,該發(fā)生的事件383.1.5動態(tài)實(shí)體與事件在GPSS中,動態(tài)實(shí)體進(jìn)入或流出某一模塊就意味某一事件(普通事件或關(guān)鍵事件)的發(fā)生或結(jié)束,動態(tài)實(shí)體的流動路徑就是一系列事件發(fā)生的順序。

關(guān)鍵事件:在某一未來的確定時刻所發(fā)生,只有以下兩種情況。1)動態(tài)實(shí)體由GENERATE模塊產(chǎn)生后通過該模塊進(jìn)入模型時,代表接受服務(wù)的實(shí)體到達(dá)服務(wù)系統(tǒng)的事件發(fā)生了。2)動態(tài)實(shí)體進(jìn)入ADVANCE模塊滯留一段時間后,代表接受服務(wù)的實(shí)體接受服務(wù)后離開服務(wù)實(shí)體的事件發(fā)生了。普通事件:由關(guān)鍵事件引發(fā)的事件為普通事件。事件三要素:1.事件類型,即發(fā)生了什么事2.事件發(fā)生時間,是否確定3.事件發(fā)生的主體,即事件發(fā)生在哪一個動態(tài)實(shí)體上3.1.5動態(tài)實(shí)體與事件在GPSS中,動態(tài)實(shí)體進(jìn)393.1.5動態(tài)實(shí)體與事件動態(tài)實(shí)體映射為內(nèi)存中的一個連續(xù)的存儲區(qū),動態(tài)實(shí)體有自己的屬性:如編號、當(dāng)前所在模塊編號、下一個要進(jìn)入的模塊編號、未來移動時間等。未來事件鏈:存放在未來某個確定時刻會發(fā)生關(guān)鍵事件的動態(tài)實(shí)體,按照從小至大的未來發(fā)生時間依次從鏈頭至鏈尾排列。時鐘修正:根據(jù)未來鏈前端第一個動態(tài)實(shí)體的未來移動時間調(diào)整時鐘,并把未來事件鏈上移動時間等于當(dāng)前時刻的動態(tài)實(shí)體一一移入模型。

時鐘修正后,處理器立即啟動系統(tǒng)狀態(tài)修正程序。3.1.5動態(tài)實(shí)體與事件動態(tài)實(shí)體映射為內(nèi)存中的一個連續(xù)的存403.1.5動態(tài)實(shí)體與事件系統(tǒng)狀態(tài)修正:處理器依次移動在當(dāng)前時刻每一個可以移動的動態(tài)實(shí)體,使之在模型中盡可能向前運(yùn)動。直到以下3個條件之一發(fā)生為止:(1)動態(tài)實(shí)體進(jìn)入ADVANCE模塊,獲得未來移動時間后,被重新放到未來事件鏈。(2)動態(tài)實(shí)體被類似SEIZE的模塊所拒絕時,停留在緊前模塊。(3)動態(tài)實(shí)體進(jìn)入TERMINATE模塊被排除模型。若在當(dāng)前時刻所有動態(tài)實(shí)體都停止了運(yùn)動,則系統(tǒng)狀態(tài)修正的操作結(jié)束;處理器立即啟動時鐘修正程序。系統(tǒng)狀態(tài)修正和時鐘修正交替進(jìn)行,直到仿真結(jié)束的條件發(fā)生。3.1.5動態(tài)實(shí)體與事件系統(tǒng)狀態(tài)修正:處理器依次移動在413.1.5動態(tài)實(shí)體與事件關(guān)鍵事件:在未來一個確定的時間會發(fā)放生的事件,如顧客到達(dá)理發(fā)館和滯留一段確定的時間后釋放理發(fā)師事件。發(fā)生關(guān)鍵事件觸發(fā)調(diào)整當(dāng)前時鐘觸發(fā)系統(tǒng)狀態(tài)修正對應(yīng)發(fā)生普通事件循環(huán),直到普通事件全部發(fā)生為止再次發(fā)生關(guān)鍵事件普通事件:發(fā)生時間不確定,因關(guān)鍵事件的觸發(fā)而發(fā)生。如,顧客到達(dá)可以觸發(fā)排入隊(duì)列事件、占用理發(fā)師事件(可能)、離開隊(duì)列事件;釋放理發(fā)師關(guān)鍵事件可以觸發(fā)當(dāng)前顧客離開理發(fā)館事件,正在等待的顧客占用理發(fā)師、離開隊(duì)列、開始理發(fā)事件等。3.1.5動態(tài)實(shí)體與事件關(guān)鍵事件:在未來一個確定的時間會發(fā)42動態(tài)實(shí)體由GENERATE模塊產(chǎn)生。GENERATE模塊每被執(zhí)行一次,便產(chǎn)生一個動態(tài)實(shí)體,并為其編號,記錄其未來移動時間和下一移入的模塊,然后將其放至未來事件鏈(該動態(tài)實(shí)體當(dāng)前所在模塊為-1,下一要進(jìn)入的模塊就是該GENERATE模塊)。在以后的某個時鐘修正時刻(等于該動態(tài)實(shí)體的未來移動時間),這一動態(tài)實(shí)體被送入模型。由某GENERATE模塊產(chǎn)生的動態(tài)實(shí)體在模型中開始移動時,首先將進(jìn)入的是產(chǎn)生它的GENERATE模塊,于是,該GENERATE模塊又被執(zhí)行一次,而以上的過程又被重復(fù)一次,即又由該GENERATE模塊,產(chǎn)生一個新的動態(tài)實(shí)體,它被標(biāo)記后,又被放至未來事件鏈,然后引發(fā)這一事件的動態(tài)實(shí)體進(jìn)入緊后模塊,開始其運(yùn)動。模型輸入的作用就是使模型的所有GENERATE模塊按其排列的順序,各被執(zhí)行一次,且僅僅一次。于是模型輸入完成后,未來事件鏈依次按未來移動時間的先后從頭至尾排列著每個GENERATE模塊產(chǎn)生的第一個動態(tài)實(shí)體。3.1.6.動態(tài)實(shí)體的產(chǎn)生與模型輸入動態(tài)實(shí)體由GENERATE模塊產(chǎn)生。GENERATE模433.2基于GPSS的GPSS/Java3.2.1什么是GPSS/Java

:GPSS/JAVA是用JAVA實(shí)現(xiàn)的GPSS專用仿真系統(tǒng)。GPSS/JAVA是使用JAVA來實(shí)現(xiàn)建模接口和仿真算法的若干程序模塊,并將這些程序模塊以類的形式集中封裝在一仿真類庫(gpssjv)中,以供用戶使用。用戶在建立仿真模型時,只需引入仿真類庫,便可調(diào)用仿真類庫提供的仿真算法和建模接口,來構(gòu)建實(shí)際系統(tǒng)的仿真模型。

3.2基于GPSS的GPSS/Java3.2.1什么是G443.2.1GPSS/Java的優(yōu)點(diǎn)(1)仿真系統(tǒng)完全向用戶開放,用戶可以根據(jù)需要任意向仿真類庫添加實(shí)現(xiàn)某種功能的新接口。(2)GPSS/JAVA類庫(gpssjv)結(jié)構(gòu)高度模塊化,模塊由JAVA類組成。(3)建模語言功能的極大豐富與擴(kuò)展,用戶可以在模型程序中使用JAVA的語言部分的所有功能,并且可以使用JAVA本身提供的標(biāo)準(zhǔn)類庫及其他開發(fā)人員提供的非標(biāo)準(zhǔn)的類庫,來實(shí)現(xiàn)任何滿足構(gòu)造復(fù)雜模型所需要的操作。仿真類庫仿真基礎(chǔ)類仿真支持類BlockOp類資源實(shí)體類操作模塊類動態(tài)實(shí)體類、仿真調(diào)度類、鏈表操作類、異常處理類、輔助操作符、常量定義接口和公用消息類封裝了建模所需的模塊語句和標(biāo)準(zhǔn)屬性封裝了模型程序界面接口和模型控制語句等3.2.1GPSS/Java的優(yōu)點(diǎn)(1)仿真系統(tǒng)完全向用453.2.2.Java簡述(1)對象與類客觀存在的具體事物就是對象性質(zhì)和行為相似的事物的總稱為類要先定義類,然后用其產(chǎn)生對象。類含有兩種屬性:成員變量,描述對象的性質(zhì)或狀態(tài)成員方法,描述對象的行為或執(zhí)行的操作

Java使用關(guān)鍵詞class定義一個類,每個類要有一個類名,類名必須是合法的Java標(biāo)識符。例如,以下定義了一個名為Facility的類,它有3個成員變量和5個成員方法。類公有成員私有成員又稱接口,可以通過對象調(diào)用僅能被類內(nèi)部的程序訪問成員變量成員方法3.2.2.Java簡述類公有成員私有成員又稱接口,可以通463.2.2.Java簡述//Facility.javapackgegpssjv;publicclassFacility{Stringname;intcurrentState=0;staticintcount=1;publicFacility(){=”FACI”+count;count++;}publicFacility(Stringname){=name;}publicvoidseize(){if(currentState==0){currentState=1;……return;}else{……}}……publicvoidrelease(){currentState=0;……}publicintFNU$(){if(currentState==0)return1;elsereturn0;}……}//定義包//成員變量1設(shè)備輸出名//成員變量2設(shè)備當(dāng)前狀態(tài)//成員變量3設(shè)備編號//方法1構(gòu)造方法無參//方法2構(gòu)造方法有參//方法3占用設(shè)備//回到前一模塊等待//方法4釋放設(shè)備//方法5標(biāo)準(zhǔn)屬性返回設(shè)備是否處于閑置狀態(tài)3.2.2.Java簡述//Facility.java473.2.2.Java簡述(2)創(chuàng)建對象使用類,創(chuàng)建對象。例如:Facilityb1=newFacility(“BarberWang”);Facilityb2=newFacility(“BarberZhang”);b1和b2代表使用Facility類創(chuàng)建的兩個對象,稱為引用變量。對象在創(chuàng)建時會自動調(diào)用其構(gòu)造方法,構(gòu)造方法與類名相同,且無返回類型,常用以初始化對象的成員變量。一個類中,可以定義多個同名方法,但方法參數(shù)的類型或個數(shù)不同,這稱為方法的重載;構(gòu)造方法是特殊的方法,也可以重載。(3)this引用關(guān)鍵詞this為一引用變量,在某一方法中代表當(dāng)前對象,即調(diào)用該方法的對象。3.2.2.Java簡述483.2.2.Java簡述(4)繼承與覆蓋Java使用關(guān)鍵詞extends來描述兩個類的繼承關(guān)系,例如:classAextendsB{…}則,A為B的子類。子類繼承父類的非私有屬性,可以重寫(覆蓋)父類簽名相同的方法。(5)抽象方法與抽象類用關(guān)鍵詞abstract修飾的方法和類,分別稱為抽象方法和抽象類。BlockOp類封裝了抽象方法run()和simulate(),稱為模

溫馨提示

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

最新文檔

評論

0/150

提交評論