版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第七章GPSS/JAVA中級(jí)建模技術(shù)北京市高等教育精品教材《管理系統(tǒng)仿真與GPSS/JAVA》任毅教授§7GPSS/JAVA中級(jí)建模技術(shù)§7.1標(biāo)準(zhǔn)屬性§7.2動(dòng)態(tài)實(shí)體參數(shù)§7.3動(dòng)態(tài)實(shí)體的駐留與傳輸§7.4表實(shí)體與隊(duì)列表實(shí)體§7.5GPSS變量實(shí)體的表達(dá)方式§7.6保存值實(shí)體(Savevalue)§7.7test模塊§7.8loopgate與buffer模塊§7.9select模塊§7.10標(biāo)準(zhǔn)屬性IN及用戶(hù)控制的輸出§7.11表的間接引用的處理§7.1標(biāo)準(zhǔn)屬性1)什么是標(biāo)準(zhǔn)屬性標(biāo)準(zhǔn)屬性由GPSS/JAVA以方法的形式提供,用以返回在模型運(yùn)行的某個(gè)時(shí)刻,仿真模型的狀態(tài)屬性(當(dāng)前隊(duì)長(zhǎng)、設(shè)備忙閑狀況、存儲(chǔ)器利用率)以及某動(dòng)態(tài)實(shí)體的屬性值(如動(dòng)態(tài)實(shí)體的駐留時(shí)間、動(dòng)態(tài)實(shí)體某參數(shù)的值等)。2)標(biāo)準(zhǔn)屬性(SAStandardAttribution)的分類(lèi):a.標(biāo)準(zhǔn)數(shù)值屬性(簡(jiǎn)稱(chēng)SNAStandardNumbericAttribution
)返回?cái)?shù)值b.標(biāo)準(zhǔn)邏輯值屬性(簡(jiǎn)稱(chēng)SLAStandardloginicAttribution
)返回邏輯值c.和標(biāo)準(zhǔn)實(shí)體屬性(簡(jiǎn)稱(chēng)SOAStandardObjectAttribution
)返回實(shí)體對(duì)象§7.1標(biāo)準(zhǔn)屬性1.設(shè)備類(lèi)中封裝了如下標(biāo)準(zhǔn)屬性()
intF$()若設(shè)備忙返回1否則返回0
intFC$()返回當(dāng)前進(jìn)入設(shè)備的動(dòng)態(tài)實(shí)體總數(shù)
intFI$()若設(shè)備當(dāng)前被搶占返回1否則返回0
intFNI$()若設(shè)備當(dāng)前未被搶占返回1否則返回0
intFNU$()若設(shè)備閑返回1否則返回0
doubleFR$()返回當(dāng)前設(shè)備的平均利用率
doubleFT$()返回當(dāng)前設(shè)備的平均使用時(shí)間標(biāo)準(zhǔn)邏輯值屬性(SLA)booleanF()若設(shè)備忙返回真否則返回假
booleanFI()若設(shè)備正被搶占返回真否則返回假
booleanFNI()若設(shè)備當(dāng)前未被搶占返回真否則返回假
booleanFNU()若設(shè)備閑返回真否則返回假§7.1標(biāo)準(zhǔn)屬性1.設(shè)備類(lèi)中封裝了如下標(biāo)準(zhǔn)數(shù)值屬性(節(jié)選)intR$()返回存儲(chǔ)實(shí)體當(dāng)前剩余容量
intS$()返回存儲(chǔ)實(shí)體當(dāng)前容量
doubleSA$()返回存儲(chǔ)實(shí)體當(dāng)前平均服務(wù)容量doubleSR$()返回存儲(chǔ)實(shí)體當(dāng)前平均利用率量
doubleST$()存儲(chǔ)實(shí)體當(dāng)前平均服務(wù)時(shí)間
booleanSE()若存儲(chǔ)實(shí)體當(dāng)前為空返回真否則返回假
booleanSF()若存儲(chǔ)實(shí)體容量已滿(mǎn)返回真否則返回假
booleanSNE()若存儲(chǔ)實(shí)體當(dāng)前非空返回真否則返回假
booleanSNF()若存儲(chǔ)實(shí)體容量未滿(mǎn)返回真否則返回假2.設(shè)備類(lèi)中封裝了如下標(biāo)準(zhǔn)邏輯值屬性(節(jié)選)§7.1標(biāo)準(zhǔn)屬性1.隊(duì)列類(lèi)中封裝了如下標(biāo)準(zhǔn)數(shù)值屬性(節(jié)選)
intQ$()隊(duì)列標(biāo)準(zhǔn)數(shù)值屬性返回隊(duì)列當(dāng)前隊(duì)長(zhǎng)
doubleQA$()隊(duì)列標(biāo)準(zhǔn)數(shù)值屬性返回隊(duì)列當(dāng)前平均隊(duì)長(zhǎng)
intQC$()隊(duì)列標(biāo)準(zhǔn)數(shù)值屬性返回隊(duì)列當(dāng)前動(dòng)態(tài)實(shí)體進(jìn)入總數(shù)
intQM$()隊(duì)列標(biāo)準(zhǔn)數(shù)值屬性返回隊(duì)列當(dāng)前最大隊(duì)長(zhǎng)
doubleQT$()隊(duì)列標(biāo)準(zhǔn)數(shù)值屬性返回隊(duì)列當(dāng)前平均等待時(shí)間
doubleQX$()返回隊(duì)列當(dāng)前平均等待時(shí)間(不計(jì)等待時(shí)間為零)
intQZ$()返回隊(duì)列當(dāng)前動(dòng)態(tài)實(shí)體(等待時(shí)間為零)進(jìn)入總數(shù)2.隊(duì)列類(lèi)中封裝了如下標(biāo)準(zhǔn)邏輯值屬性(節(jié)選)
booleanQE()隊(duì)列標(biāo)準(zhǔn)邏輯值屬性若隊(duì)列空返回真,否則返回假
booleanQNE()隊(duì)列標(biāo)準(zhǔn)邏輯值屬性若隊(duì)列非空返回真,否則返回假§7.1.1系統(tǒng)標(biāo)準(zhǔn)屬性1.系統(tǒng)標(biāo)準(zhǔn)屬性可分為資源實(shí)體標(biāo)準(zhǔn)屬性和全局標(biāo)準(zhǔn)屬性。1)與資源實(shí)體直接關(guān)聯(lián)的標(biāo)準(zhǔn)屬性稱(chēng)為資源實(shí)體標(biāo)準(zhǔn)屬性,它們以方法的形式封裝在各個(gè)資源實(shí)體類(lèi)中,例如設(shè)備類(lèi)中封裝了如下標(biāo)準(zhǔn)屬性
booleanF()若設(shè)備忙返回真否則返回假
intF$()若設(shè)備忙返回1否則返回0
intFC$()返回當(dāng)前進(jìn)入設(shè)備的動(dòng)態(tài)實(shí)體總數(shù)
booleanFI()若設(shè)備正被搶占返回真否則返回假
intFI$()若設(shè)備當(dāng)前被搶占返回1否則返回0
booleanFNI()若設(shè)備當(dāng)前未被搶占返回真否則返回假
intFNI$()若設(shè)備當(dāng)前未被搶占返回1否則返回0
booleanFNU()若設(shè)備閑返回真否則返回假
intFNU$()若設(shè)備閑返回1否則返回0
doubleFR$()返回當(dāng)前設(shè)備的平均利用率
doubleFT$()返回當(dāng)前設(shè)備的平均使用時(shí)間§7.1.1系統(tǒng)標(biāo)準(zhǔn)屬性2)其它與資源實(shí)體無(wú)直接關(guān)聯(lián)的標(biāo)準(zhǔn)屬性稱(chēng)為全局標(biāo)準(zhǔn)屬性。
§7.1.1系統(tǒng)標(biāo)準(zhǔn)屬性設(shè)備實(shí)體類(lèi)封裝的方法,其中包括設(shè)備實(shí)體的相關(guān)屬性§7.1.2應(yīng)用舉例1.問(wèn)題陳述有一汽車(chē)沖洗站,只有一個(gè)沖洗工。汽車(chē)平均到達(dá)時(shí)間為5分鐘,指數(shù)分布。沖洗一輛汽車(chē)的時(shí)間也服從指數(shù)分布,但平均沖洗時(shí)間取決于隊(duì)列長(zhǎng)度,等待沖洗的汽車(chē)較少時(shí),則服務(wù)時(shí)間較長(zhǎng),等待的車(chē)輛較多時(shí),服務(wù)時(shí)間加快。觀測(cè)得到如下統(tǒng)計(jì)數(shù)據(jù):隊(duì)列長(zhǎng)度平均服務(wù)時(shí)間(秒)03301.23003、4或者52706或者更多240建立模型,模擬沖洗1200輛車(chē),確定沖洗一輛車(chē)平均所需時(shí)間。
§7.1.2應(yīng)用舉例2.實(shí)體定義時(shí)間單位:10秒鐘模型實(shí)際系統(tǒng)動(dòng)態(tài)實(shí)體子模型1洗車(chē)車(chē)輛設(shè)備實(shí)體server沖洗工排隊(duì)實(shí)體waitQ獲得排隊(duì)信息函數(shù)實(shí)體mean平均沖洗時(shí)間,自變量Q$(waitQ),類(lèi)型C,值對(duì)數(shù)4§7.1.2應(yīng)用舉例3.模型程序
沖洗一輛車(chē)平均需要281.99秒。§7.2動(dòng)態(tài)實(shí)體參數(shù)4.參數(shù)的意義動(dòng)態(tài)實(shí)體每個(gè)參數(shù)的值為動(dòng)態(tài)實(shí)體的一個(gè)屬性的值,其意義由用戶(hù)隱含指定。例如,某模型中動(dòng)態(tài)實(shí)體代表實(shí)際系統(tǒng)的汽車(chē),則動(dòng)態(tài)實(shí)體(汽車(chē))1號(hào)和2號(hào)整型參數(shù),及3號(hào)實(shí)型參數(shù)的意義可由用戶(hù)說(shuō)明為:P$(1)(汽車(chē)顏色)P$(2)(制造廠(chǎng)家)PD$(3)(載重量)1棕色1上海1010噸2藍(lán)色2長(zhǎng)春2020噸3綠色3湖北4040噸4灰色4北京6060噸動(dòng)態(tài)實(shí)體參數(shù)作為一種標(biāo)準(zhǔn)數(shù)值屬性,可作為模塊的操作數(shù)和函數(shù)的自變量等來(lái)使用?!?.2.2assign模塊與動(dòng)態(tài)實(shí)體參數(shù)的賦值1.作用動(dòng)態(tài)實(shí)體進(jìn)入該模塊,其某號(hào)參數(shù)的數(shù)值被修改。2.操作符、操作數(shù)與模塊圖(1)標(biāo)準(zhǔn)模式assign(inta,intb):為整型參數(shù)賦值參數(shù)a:整型,代表要修改的參數(shù)編號(hào),缺省則出錯(cuò)參數(shù)b:整型,代表要修改的參數(shù)為整型及其修改后的數(shù)值,缺省則出錯(cuò)例如,assign(3,25);assign(inta,doubleb):為實(shí)型參數(shù)賦值參數(shù)a:整型,代表要修改的參數(shù)編號(hào),缺省則出錯(cuò)參數(shù)b:雙精度實(shí)型,代表要修改的參數(shù)為實(shí)型及其修改后的數(shù)值,缺省則出錯(cuò)例如,assign(3,25.0);a,bassign§7.2.2assign模塊與動(dòng)態(tài)實(shí)體參數(shù)的賦值動(dòng)態(tài)實(shí)體參數(shù)賦值的遞增模式(整型)assignPlus(inta,intb)assignPlus模塊有2個(gè)操作數(shù),其含義如下:a:整型,整型表達(dá)式或SNA,代表要修改的參數(shù)編號(hào),不能缺省b:整型,整型表達(dá)式或SNA,代表要修改的參數(shù)為整型及其修改后遞增的數(shù)值,不能缺省例如,assignPlus(3,Q$(line);,假設(shè)某動(dòng)態(tài)實(shí)體進(jìn)入該模塊前,其3號(hào)整型參數(shù)值為25,進(jìn)入時(shí)隊(duì)列l(wèi)ine當(dāng)前隊(duì)長(zhǎng)為4,則該動(dòng)態(tài)實(shí)體在進(jìn)入后其3號(hào)整型參數(shù)值被修改為29。動(dòng)態(tài)實(shí)體參數(shù)賦值的遞增模式(實(shí)型)assignPlus(inta,doubleb)a,bassignPlus§7.2.3應(yīng)用舉例1.問(wèn)題陳述:有一小超市由三個(gè)商品區(qū)組成,擺放不同類(lèi)型商品,超市出口設(shè)有一收銀臺(tái),只有一個(gè)服務(wù)員收付款。顧客到達(dá)超市的平均間隔為75妙,指數(shù)分布,到達(dá)后由入口處取一個(gè)裝貨的手推車(chē),然后去三個(gè)商品區(qū)挑選商品。顧客去三個(gè)商品區(qū)的概率,在每區(qū)停留的時(shí)間和所選商品個(gè)數(shù)如下所示:商品區(qū)
概率
停留時(shí)間(秒)選中商品個(gè)數(shù)分布
1
0.75
120±60
3±1均勻分布
2
0.55
150±30
4±1均勻分布
3
0.82
120±45
5±1均勻分布
顧客選完商品后去收銀臺(tái)排隊(duì)付款,付款處有一小商品貨架,顧客排隊(duì)時(shí)會(huì)選2±1個(gè)小商品(均勻分布),服務(wù)員收款時(shí)間取決于顧客所買(mǎi)商品數(shù)量,平均每件需要3秒鐘,顧客交款以后將裝貨小車(chē)放回入口處。構(gòu)造模型,模擬40小時(shí),確定該超市最多需要配多少臺(tái)裝貨手推車(chē)?!?.2.3應(yīng)用舉例2.實(shí)體定義:假設(shè)小車(chē)充足,取一很大成員數(shù)目(容量)的存儲(chǔ)實(shí)體代表所提供的小車(chē)服務(wù),根據(jù)此存儲(chǔ)實(shí)體的最多同時(shí)忙的成員數(shù)(在超市中最多時(shí)的顧客數(shù))可以確定最多需要的小車(chē)數(shù)量
§7.2.3應(yīng)用舉例時(shí)間單位:1秒鐘模型實(shí)際系統(tǒng)動(dòng)態(tài)實(shí)體子模型1顧客P$(1)存放該顧客挑選商品的數(shù)量子模型2時(shí)間控制員
設(shè)備實(shí)體
girl收銀員
存儲(chǔ)實(shí)體
carts裝貨手推車(chē)(容量無(wú)限大)排隊(duì)實(shí)體
girlQ輸出收銀臺(tái)排隊(duì)統(tǒng)計(jì)信息
標(biāo)準(zhǔn)函數(shù)
uniformInt(1,2,4)在商品區(qū)1所選商品數(shù)目
uniformInt(1,3,5)在商品區(qū)2所選商品數(shù)目
uniformInt(1,4,6)在商品區(qū)3所選商品數(shù)目
uniformInt(1,1,3)排隊(duì)時(shí)會(huì)所選小商品數(shù)目
地址實(shí)體
try2商品區(qū)2通道
try3商品區(qū)3通道
pay收銀臺(tái)2.定義實(shí)體:§7.3動(dòng)態(tài)實(shí)體的駐留與傳輸動(dòng)態(tài)實(shí)體的駐留與傳輸是指其在模型中的駐留與傳輸。駐留:動(dòng)態(tài)實(shí)體從進(jìn)入模型到其流出模型所耗費(fèi)的整個(gè)過(guò)程傳輸:動(dòng)態(tài)實(shí)體從模型的一個(gè)模塊到另一個(gè)模塊的運(yùn)動(dòng)過(guò)程。
7.3.1動(dòng)態(tài)實(shí)體駐留時(shí)間動(dòng)態(tài)實(shí)體駐留時(shí)間是指從動(dòng)態(tài)實(shí)體進(jìn)入模型開(kāi)始到當(dāng)前時(shí)刻在模型中停留的時(shí)間。標(biāo)準(zhǔn)數(shù)值屬性M1$()返回某動(dòng)態(tài)實(shí)體的駐留時(shí)間。
......start(2);......generate(25);advance(30,10);print(NEW,“Residenttime=”,M1$());terminate(1);......
§7.3.2動(dòng)態(tài)實(shí)體的傳輸時(shí)間動(dòng)態(tài)實(shí)體傳輸時(shí)間是指動(dòng)態(tài)實(shí)體從模型的一個(gè)模塊移動(dòng)至另一模塊所需時(shí)間。因此可見(jiàn),動(dòng)態(tài)實(shí)體駐留時(shí)間是其傳輸時(shí)間的一個(gè)特例,即其起始模塊是產(chǎn)生它的generate模塊。確定一個(gè)動(dòng)態(tài)實(shí)體的傳輸時(shí)間要按照以下三步來(lái)實(shí)現(xiàn)。1.指定動(dòng)態(tài)實(shí)體的某號(hào)參數(shù)(設(shè)為n),用于記錄時(shí)間在起始點(diǎn),使用mark(n)模塊將絕對(duì)時(shí)鐘時(shí)間復(fù)制到n號(hào)實(shí)型參數(shù)
在終點(diǎn),調(diào)用標(biāo)準(zhǔn)數(shù)值屬性MP$(n),獲得當(dāng)前絕對(duì)時(shí)鐘時(shí)間與該動(dòng)態(tài)實(shí)體的n號(hào)實(shí)型參數(shù)值之差,即為該動(dòng)態(tài)實(shí)體由起始點(diǎn)到終點(diǎn)的傳輸時(shí)間§7.4.1表實(shí)體與隊(duì)列表實(shí)體的定義對(duì)列表實(shí)體:隊(duì)列表實(shí)體是一種特殊的表實(shí)體。它是使用類(lèi)庫(kù)gpssjv的類(lèi)QTable創(chuàng)建的一個(gè)隊(duì)列表對(duì)象。QTable類(lèi)重載的構(gòu)造方法:publicQTable(Queueq,double
a,double
b,int
c)其中,q為隊(duì)列對(duì)象,表示該表統(tǒng)計(jì)的對(duì)象是動(dòng)態(tài)實(shí)體在隊(duì)列q的等待時(shí)間,表的輸出名自動(dòng)命名為QTABL1,其它同上。publicQTable(String
name,Queueq,double
a,double
b,int
c)例如,QTablewaitq=newQTable(“Waittime”,line,20,2,8);定義了隊(duì)列表實(shí)體waitq,輸出名為Waittime,該表統(tǒng)計(jì)的對(duì)象是動(dòng)態(tài)實(shí)體在隊(duì)列l(wèi)ine的等待時(shí)間?!?.4.3表實(shí)體統(tǒng)計(jì)數(shù)據(jù)(1)名稱(chēng):表輸出名,若為QTable類(lèi)型則另輸出對(duì)應(yīng)的排隊(duì)實(shí)體輸出名(2)統(tǒng)計(jì)總數(shù):輸入表實(shí)體的樣本總數(shù)(3)平均值:樣本平均值(4)標(biāo)準(zhǔn)差:代表樣本值的離散性(5)樣本值總和:所有輸入變量值的總和(6)表字段(1)行間隔值若某間隔內(nèi)樣本數(shù)為0,則各字段輸出為空,行間隔最小值為表定義時(shí)指定的下界值,行間隔值為上一行值加上表間隔值(2)頻數(shù)為樣本值落入該間隔行的樣本數(shù)(3)頻率樣本值落入該間隔行的樣本數(shù)/統(tǒng)計(jì)總數(shù)(4)累積頻率第一行累積頻率等于本行樣本頻率,其它行累積頻率等于緊前行累積頻率與本行頻率之和(5)1-累積頻率1-本行累積頻率§7.4.4應(yīng)用舉例1.問(wèn)題陳述對(duì)于7.2.3應(yīng)用舉例中的小超市問(wèn)題,假設(shè)其它條件不變,除了要確定該超市最多需要配多少臺(tái)裝貨手推車(chē)之外,還要求確定顧客在此小超市的停留時(shí)間的分布,以及顧客在收銀臺(tái)等待時(shí)間的分布。2.實(shí)體定義其它實(shí)體與7.2.3相同,新模型只增加二個(gè)表實(shí)體。
時(shí)間單位:1秒鐘模型實(shí)際系統(tǒng)表實(shí)體rTime顧客在超市停留時(shí)間的分布輸入變量M1$()隊(duì)列表實(shí)體wTime顧客在收銀臺(tái)排隊(duì)等待時(shí)間的分布3.建模提示表實(shí)體wTime是Qtable類(lèi)型,只需定義,無(wú)需用戶(hù)安排調(diào)用,表實(shí)體rTime應(yīng)在顧客付帳后離開(kāi)系統(tǒng)前調(diào)用§7.4.3表實(shí)體統(tǒng)計(jì)數(shù)據(jù)§7.4.3表實(shí)體統(tǒng)計(jì)數(shù)據(jù)§7.4.3表實(shí)體統(tǒng)計(jì)數(shù)據(jù)以上輸出表明,顧客在小超市平均停留時(shí)間為315.1956秒,近似正態(tài)分布,標(biāo)準(zhǔn)差為119.1760。顧客在收銀臺(tái)平均等待時(shí)間為11.3382秒,近似指數(shù)分布。比較通過(guò)表實(shí)體wTime和排隊(duì)實(shí)體girlQ所獲得的顧客在收銀臺(tái)處的排隊(duì)的平均等待時(shí)間稍有差異:前者未將模擬結(jié)束時(shí)仍在隊(duì)列中的顧客記入總數(shù),而后者兩項(xiàng)數(shù)據(jù)在計(jì)算平均等待時(shí)間時(shí)都予以了考慮?!?.4.5表調(diào)用語(yǔ)句的包裝與重載調(diào)用表的第二種方式:為了保持GPSS的語(yǔ)法習(xí)慣,GPSS/JAVA提供了表調(diào)用語(yǔ)句的包裝方法resiTAB()包裝了resi.tabulate(M1$())§7.4.5表調(diào)用語(yǔ)句的包裝與重載調(diào)用表的第三種方式:重載tabulate方法§7.4.5表調(diào)用語(yǔ)句的包裝與重載調(diào)用表的第三種方式:重載tabulate方法§7.5GPSS變量實(shí)體的表達(dá)方式7.5.1GPSS變量1.定義變量
PROFITVARIABLE5*N(PATH)-102.在模型中使用變量實(shí)體而不直接使用表達(dá)式具有如下好處:(1)意義明確通過(guò)變量名我們可以概括表達(dá)式的意義(2)程序簡(jiǎn)潔。如果表達(dá)式很長(zhǎng),或模型多處要引用同一表達(dá)式,使用變量調(diào)用比直接使用表達(dá)式不僅意義明確而且十分簡(jiǎn)潔?!?.5.2用java方法包裝GPSS變量表達(dá)式GPSS變量的上述功能完全可以直接由JAVA的方法來(lái)實(shí)現(xiàn)。這個(gè)方法作為模型類(lèi)的成員方法,可以被同一類(lèi)的成員方法simulate內(nèi)的各個(gè)模塊語(yǔ)句所訪(fǎng)問(wèn),方法的返回值可以是一個(gè)數(shù)值表達(dá)式也可以是一個(gè)邏輯表達(dá)式。
intprofitV(){return5*N$(PATH)–10;}
變量類(lèi)型變量名(){return表達(dá)式;}1.變量實(shí)體的標(biāo)準(zhǔn)屬性名為:變量名()。建議變量名的最后一個(gè)字符為V,以便識(shí)別。2.變量所表示的表達(dá)式必須是一個(gè)合法的JAVA算術(shù)表達(dá)式或關(guān)系表達(dá)式或邏輯表達(dá)式。3.模型運(yùn)行結(jié)束時(shí),輸出結(jié)果文件中不包含變量實(shí)體的標(biāo)準(zhǔn)輸出。
§7.5.3算術(shù)、關(guān)系和邏輯表達(dá)式JAVA常用的算術(shù)運(yùn)算符有:+、-、*、/和%
JAVA關(guān)系運(yùn)算符有:>、<、>=、<=、==和!=后兩者優(yōu)先級(jí)高JAVA邏輯運(yùn)算符有:!、&&和||:優(yōu)先級(jí)非—>與—>或以上運(yùn)算符的優(yōu)先級(jí)別是:先!、后算術(shù)、次關(guān)系、再與、最后或?!?.5.4GPSS/JAVA的變量實(shí)體GPSS/JAVA使用類(lèi)似其它資源實(shí)體的數(shù)據(jù)結(jié)構(gòu)定義了變量實(shí)體類(lèi)(Variable),目的是使變量的調(diào)用能夠以更標(biāo)準(zhǔn)的GPSS的形式進(jìn)行,用戶(hù)可以使用Variable類(lèi)創(chuàng)建變量實(shí)體對(duì)象?!?.5.5變量調(diào)用方法的標(biāo)準(zhǔn)形式GPSS/JAVA§7.6保存值實(shí)體保存值實(shí)體簡(jiǎn)稱(chēng)保存值或保留值,是輔助實(shí)體,屬于資源實(shí)體。保存值實(shí)體存放一個(gè)數(shù)值并且允許在模型運(yùn)行過(guò)程中被修改。保存值實(shí)體與變量實(shí)體的不同點(diǎn)1.保存值實(shí)體自被定義時(shí),始終存放某個(gè)值,變量值僅在調(diào)用時(shí)返回2.變量的值僅能通過(guò)調(diào)用獲得(只讀),保存值的值可讀可寫(xiě)。因此GPSS的保存值類(lèi)似于JAVA等高級(jí)語(yǔ)言中的數(shù)值型變量,而GPSS的變量則類(lèi)似于JAVA等高級(jí)語(yǔ)言的方法或函數(shù)?!?.6.1保存值的定義和使用。保存值實(shí)體的構(gòu)造方法:Savevalue(String
s)其中,s為輸出名,保存值實(shí)體初始值缺省為0Savevalue()其中,輸出名缺省,系統(tǒng)自動(dòng)命名為SAVA1,保存值實(shí)體初始值缺省為0Savevalue(.String
s,double
v)其中,s為輸出名,保存值實(shí)體初始值為vSavevalue(double
v)其中,輸出名缺省,系統(tǒng)自動(dòng)命名為SAVA1,保存值實(shí)體初始值為v例如,Savevalueprofit=newSavevalue(“Profit”,20.0);§7.6.1保存值的定義和使用。保存值的數(shù)值類(lèi)型為雙精度實(shí)型。保存值實(shí)體定義后,在模型中可通過(guò)其標(biāo)準(zhǔn)數(shù)值屬性來(lái)引用。保存值類(lèi)中定了兩個(gè)方法用戶(hù)返回保存值實(shí)體對(duì)象的值:1.doubleX$()返回保存值對(duì)象的當(dāng)前值2.IntXI$(),將當(dāng)前保存值對(duì)象的值取整后返回保存值對(duì)象的包裝方法doubleX$(Savevalues)其中,s為保存值對(duì)象。例如X$(profit)返回保存值實(shí)體profit的值。另一個(gè)保存值的標(biāo)準(zhǔn)數(shù)值屬性的原型為:intXI$(Savevalues)其中,s為保存值對(duì)象,該屬性將保存值s的值取整后返回?!?.6.2saveValue模塊和保存值的修改1.作用動(dòng)態(tài)實(shí)體進(jìn)入該模塊,修改指定的保存值實(shí)體的數(shù)值。2.操作符、操作數(shù)與模塊圖(1)標(biāo)準(zhǔn)模式(包裝后)saveValue(Savevaluea,doubleb)saveValue模塊有2個(gè)操作數(shù),其含義如下:a:保存值對(duì)象,代表要修改的保存值實(shí)體,不能缺省b:實(shí)型,實(shí)型表達(dá)式或SNA,代表要修改的保存值實(shí)體修改后的數(shù)值,不能缺省例如,saveValue(profit,25);,當(dāng)動(dòng)態(tài)實(shí)體進(jìn)入此模塊時(shí),保存值實(shí)體profit的值被修改為25。(面向?qū)ο蟮恼{(diào)用方式)profit.saveValue(25):將保存值對(duì)象profit的當(dāng)前值修改為25.saveValuea,b§7.6.2saveValue模塊和保存值的修改(2)遞增模式savePlus(Savevaluea,doubleb)savePlus模塊有2個(gè)操作數(shù),其含義如下:a:保存值對(duì)象,代表要修改的保存值實(shí)體,不能缺省b:實(shí)型,實(shí)型表達(dá)式或SNA,代表要修改的保存值實(shí)體修改后遞增的數(shù)值,不能缺省例如,savePlus(profit,4);,假設(shè)某動(dòng)態(tài)實(shí)體進(jìn)入該模塊前,profit值為25,則該動(dòng)態(tài)實(shí)體在進(jìn)入后,其值被修改為29。面向?qū)ο蟮恼{(diào)用方式:porfit.savePlus(4);savePlusa,b§7.6.2saveValue模塊和保存值的修改(3)遞減模式saveMinus(Savevaluea,doubleb)saveMinus模塊有2個(gè)操作數(shù),其含義如下:a:保存值對(duì)象,代表要修改的保存值實(shí)體,不能缺省b:實(shí)型,實(shí)型表達(dá)式或SNA,代表要修改的保存值實(shí)體被修改后遞減的數(shù)值,不能缺省例如,saveMinus(profit,4);,假設(shè)某動(dòng)態(tài)實(shí)體進(jìn)入該模塊前,profit值為25,則該動(dòng)態(tài)實(shí)體在進(jìn)入后其值被修改為21。以上三模塊為資源模塊語(yǔ)句,允許使用如下面向?qū)ο笮问剑簆rofit.saveValue(25);profit.savePlus(4);profit.saveMinus(4);saveMinusa,b§7.6.3reset和clear語(yǔ)句對(duì)保存值的影響模型控制語(yǔ)句reset()不影響保存值,模型控制語(yǔ)句clear()使所有保存值的數(shù)值歸0。使用如下clear語(yǔ)句的重載方法,可以使指定的保存值實(shí)體保持原值,而不被歸0。clear(int…
a)其中,a為不被歸0的保存值實(shí)體編號(hào)列表。保存值實(shí)體依照在模型中定義的先后順序被依次編號(hào),編號(hào)從1開(kāi)始。例如,clear(5,2);或者使用如下clear語(yǔ)句的重載方法,也可以使指定的保存值實(shí)體保持原值,而不被歸0。clear(Savevalue…
a)其中,a為不被歸0的保存值實(shí)體對(duì)象列表。例如,clear(count,profit);表示模型清除時(shí)將保持count和profit保存值實(shí)體值不變,而其它保存值實(shí)體的值被歸0。
§7.6.4保存值的重新定義使用模型控制語(yǔ)句redefine如下的重載形式,可以在新的一輪模擬開(kāi)始時(shí)對(duì)模型的原有保存值的初始值進(jìn)行重新定義。redefine(Savevaluename,doublev)其中,name為重定義值的保存值對(duì)象名,v為重新定義的初始值,為一實(shí)型表達(dá)式。例如,redefine(profit,45);重新定義保存值profit初值為45。保存值的重定義語(yǔ)句應(yīng)置于clear語(yǔ)句之后。
面向?qū)ο蟮臅?shū)寫(xiě)方法:profit.redefine(45);§7.6.5保存值的輸出模擬結(jié)束時(shí),變量和動(dòng)態(tài)實(shí)體參數(shù)的值不包含在輸出結(jié)果文件的標(biāo)準(zhǔn)輸出中。但保存值作為標(biāo)準(zhǔn)輸出包含在輸出文件中,其形式如下。保存值實(shí)體輸出名保存值實(shí)體值...§7.6.6應(yīng)用舉例1.問(wèn)題陳述對(duì)于4.9.4中的設(shè)備裝配與包裝問(wèn)題,要求將利潤(rùn)計(jì)算安排在模型中,使輸出結(jié)果直接顯示不同雇工人數(shù)的日均生產(chǎn)利潤(rùn)。4.9.4中給出的利潤(rùn)計(jì)算條件為:工人的工資為10¥/小時(shí)/人,包裝機(jī)的耗電、維修和折舊費(fèi)用為280¥/8小時(shí),設(shè)備的另配件和包裝費(fèi)用12¥/臺(tái),設(shè)備售價(jià)40¥/臺(tái)。要求:建立計(jì)算機(jī)模型,在結(jié)果文件中包含利潤(rùn)的計(jì)算結(jié)果。
§7.6.6應(yīng)用舉例2.實(shí)體定義§7.6.6應(yīng)用舉例3.模型程序§7.7test模塊Test模塊語(yǔ)句有兩種模式:關(guān)系模式和邏輯模式關(guān)系模式:1.關(guān)系模式(1)作用根據(jù)模塊輔助操作符指定的操作數(shù)a和b的關(guān)系成立與否,決定動(dòng)態(tài)實(shí)體是進(jìn)入該模塊,還是轉(zhuǎn)移至某指定模塊;如果輔助操作符指定的關(guān)系成立,則動(dòng)態(tài)實(shí)體流入該模塊,否則轉(zhuǎn)入c操作數(shù)指示的模塊。(2)操作符、操作數(shù)與模塊圖cabtestx轉(zhuǎn)移模式test(int
x,double
a,double
b,Addr
c)關(guān)系轉(zhuǎn)移模式的test模塊有4個(gè)操作數(shù),其含義如下:a:實(shí)型,SNA或算術(shù)表達(dá)式,不能缺省b:實(shí)型,SNA或算術(shù)表達(dá)式,不能缺省c
ab
testx轉(zhuǎn)移模式C§7.7test模塊-關(guān)系模式1.關(guān)系模式test(int
x,double
a,double
b,Addr
c)a:實(shí)型,SNA或算術(shù)表達(dá)式,不能缺省b:實(shí)型,SNA或算術(shù)表達(dá)式,不能缺省x:輔助操作符,表示操作數(shù)a和b的關(guān)系,有效的輔助操作符及其意義如下:輔助操作符代表的關(guān)系Ga>bGEa≥bLa<bLEa≤bEa=bNEa≠bc:標(biāo)號(hào)對(duì)象,若x定義的關(guān)系不成立,所轉(zhuǎn)入的模塊的標(biāo)號(hào)對(duì)象,不能缺省§7.7test模塊—拒絕模式以上為test模塊的關(guān)系轉(zhuǎn)移模式,其拒絕模式采取如下的重載形式:test(int
x,double
a,double
b)其中,輔助操作符x和操作數(shù)a與b意義同上。當(dāng)輔助操作符x定義的操作數(shù)a與b的關(guān)系成立時(shí),動(dòng)態(tài)實(shí)體被允許進(jìn)入該模塊,否則停留在其緊前模塊,直到關(guān)系成立。例如,test(GE,X$(line1),X$(line2));,表示若保存值line1的值大于或等于保存值line2時(shí),動(dòng)態(tài)實(shí)體將流入此模塊,否則將停留在其緊前模塊。test模塊的關(guān)系模式還提供了用于兩個(gè)整型表達(dá)式比較的如下重載形式:test(int
x,int
a,int
b,Addr
c)test(int
x,int
a,int
b)這兩個(gè)重載模塊分別對(duì)應(yīng)test模塊的關(guān)系轉(zhuǎn)移和關(guān)系拒絕模式,區(qū)別僅僅在于a和b操作數(shù)代表的是整型表達(dá)式。ab
testx拒絕模式§7.7test模塊—邏輯模式(1)作用根據(jù)模塊輔助操作符指定的操作數(shù)a的值為真還是假,決定動(dòng)態(tài)實(shí)體是進(jìn)入該模塊,還是轉(zhuǎn)移至某指定模塊;如果輔助操作符指定的關(guān)系成立,則動(dòng)態(tài)實(shí)體允許流入該模塊,否則轉(zhuǎn)入b操作數(shù)指示的模塊。(2)操作符、操作數(shù)與模塊圖test(int
x,boolean
a,Addr
b)x:輔助操作符,表示操作數(shù)a的值為真還是為假的成立關(guān)系,有效的輔助操作符及其意義如下:T操作數(shù)a返回真,則為真F操作數(shù)a返回假,則為真a:boolean類(lèi)型,關(guān)系表達(dá)式、邏輯表達(dá)式或邏輯變量b:標(biāo)號(hào)對(duì)象,若x定義的關(guān)系不成立,所轉(zhuǎn)入的模塊的號(hào)對(duì)象,不能缺省。例如:test(T,Q$(line1)>Q$(line2)||Q$(line1)>Q$(line3),bybye);,b
xa
test轉(zhuǎn)移模式§7.7test模塊—邏輯拒絕模式以上為test模塊的l邏輯轉(zhuǎn)移模式,其邏輯拒絕模式采取如下的重載形式:
test(int
x,boolean
a)其中,輔助操作符x和操作數(shù)a意義同上。當(dāng)輔助操作符x定義的操作數(shù)a的關(guān)系成立時(shí),動(dòng)態(tài)實(shí)體被允許進(jìn)入該模塊,否則停留在其緊前模塊,直到關(guān)系成立。例如,test(T,Q$(line1)>Q$(line2)&&Q$(line1)>Q$(line3));,表示若隊(duì)列l(wèi)ine1的當(dāng)前隊(duì)長(zhǎng)既大于隊(duì)列l(wèi)ine2的當(dāng)前隊(duì)長(zhǎng)又大于line3的當(dāng)前隊(duì)長(zhǎng)時(shí),動(dòng)態(tài)實(shí)體將流入此模塊,否則停留在其緊前模塊。邏輯模式用于構(gòu)造復(fù)雜的關(guān)系,建議在模型中先定義邏輯變量實(shí)體來(lái)表達(dá)這種關(guān)系,然后將其作為test模塊邏輯模式的a操作數(shù)。
xa
test拒絕模式§7.7test模塊—3)應(yīng)用舉例(1)問(wèn)題陳述有一書(shū)店,某種書(shū)籍的日銷(xiāo)量為均勻分布,平均日銷(xiāo)量為9到15本。當(dāng)該書(shū)庫(kù)存量低于最低庫(kù)存點(diǎn)時(shí),書(shū)店須發(fā)出訂貨單,每批訂貨量為150本。從訂貨至到貨需要一段時(shí)間,所需時(shí)間為6到8天,均勻分布。若某日銷(xiāo)量大于庫(kù)存量時(shí),則產(chǎn)生脫銷(xiāo),書(shū)店根據(jù)過(guò)去經(jīng)驗(yàn),該種書(shū)籍最低庫(kù)存點(diǎn)應(yīng)為50本。若每次訂貨量較少,則會(huì)產(chǎn)生脫銷(xiāo),若訂貨量過(guò)大,則積壓資金。建立仿真模型,確定訂貨量分別為110、130、150、170和190本時(shí),庫(kù)存量的分布和日脫銷(xiāo)量的分布,以便對(duì)訂貨批量作進(jìn)一步?jīng)Q策的參考。每輪模擬1000天,假設(shè),書(shū)到貨當(dāng)天需要辦理各種手續(xù)而不上架銷(xiāo)售?!?.7test模塊—3)應(yīng)用舉例(2)建模提示1).書(shū)店售貨員比書(shū)店采購(gòu)員有較高優(yōu)先權(quán),某天采購(gòu)員取貨回來(lái)時(shí),在當(dāng)前事件鏈代表兩“同發(fā)事件”的動(dòng)態(tài)實(shí)體中肯定代表售貨員的動(dòng)態(tài)實(shí)體排在先,而先被處理,即售貨在先,入庫(kù)在后而不作為當(dāng)天庫(kù)存來(lái)銷(xiāo)售。2).變量實(shí)體rLostV()為JAVA方法,返回某日脫銷(xiāo)量,定義如下,intrLostV(){if(P$(1)>X$(sTock))returnP$(1)–(int)X$(sTock);elsereturn0;}//P$(1)為某日可銷(xiāo)量,X$(sTock)為該日售前庫(kù)存量3).變量實(shí)體rStockV()為JAVA方法,返回某日售后庫(kù)存量,定義如下,intrStockV(){if(P$(1)>=X$(sTock))return0;elsereturn(int)X$(sTock)-P$(1);§7.7test模塊—3)應(yīng)用舉例(3)實(shí)體定義§7.7test模塊—3)應(yīng)用舉例(4)模塊圖§7.7test模塊—3)應(yīng)用舉例(5)源程序(略)(6)仿真結(jié)果Java整數(shù)數(shù)據(jù)類(lèi)型和實(shí)數(shù)數(shù)據(jù)類(lèi)轉(zhuǎn)換的語(yǔ)法規(guī)則1).JAVA規(guī)定,實(shí)型數(shù)據(jù)向整型轉(zhuǎn)換必須采取強(qiáng)制轉(zhuǎn)換的方式,否則編譯會(huì)報(bào)錯(cuò)。例如以上兩方法,返回值已經(jīng)定義為int類(lèi)型,若返回表達(dá)式值的類(lèi)型為double則會(huì)產(chǎn)生編譯錯(cuò)誤。2).要注意assign模塊的使用,assign即可給動(dòng)態(tài)實(shí)體的整型參數(shù)賦值,也可以給動(dòng)態(tài)實(shí)體的實(shí)型參數(shù)賦值,究竟給哪種參數(shù)賦值僅取決于該模塊操作數(shù)b的類(lèi)型。若操作數(shù)b為實(shí)型數(shù),則肯定是給動(dòng)態(tài)實(shí)體的某號(hào)實(shí)型參數(shù)賦值。3).如果一個(gè)模塊語(yǔ)句的操作數(shù)在其原型中定義為整型,而調(diào)用時(shí)傳遞的實(shí)參為實(shí)型,則會(huì)產(chǎn)生數(shù)據(jù)類(lèi)型不匹配的編譯錯(cuò)誤。此時(shí)要么實(shí)參改為整型數(shù)據(jù),要么使用強(qiáng)制類(lèi)型轉(zhuǎn)換符(int)。如果其操作數(shù)在原型中定義為實(shí)型,那么實(shí)參操作數(shù)即可以是整型(系統(tǒng)自動(dòng)轉(zhuǎn)換)也可以是實(shí)型。4).GPSS/JAVA提供的所有接口語(yǔ)句的參數(shù)類(lèi)型或返回值的類(lèi)型若為數(shù)值型,則只使用JAVA的兩種基本類(lèi)型即int類(lèi)型的整型(4個(gè)字節(jié))和double類(lèi)型的實(shí)型(16個(gè)字節(jié))。若接口語(yǔ)句的參數(shù)類(lèi)型或返回值的類(lèi)型為邏輯值型,則使用的是JAVA的boolean類(lèi)型,其返回值為true或false。
§7.8邏輯開(kāi)關(guān)實(shí)體(switch)邏輯開(kāi)關(guān)實(shí)體簡(jiǎn)稱(chēng)開(kāi)關(guān)實(shí)體,是輔助實(shí)體,屬于資源實(shí)體。邏輯開(kāi)關(guān)實(shí)體實(shí)際上是一種特殊的保存值實(shí)體,它的值助記為SET或RESET,代表兩種不同的邏輯狀態(tài)(真或假,假或真),作用類(lèi)似開(kāi)關(guān)?!?.8.1邏輯開(kāi)關(guān)的定義與引用7.7.1邏輯開(kāi)關(guān)實(shí)體的定義與引用開(kāi)關(guān)實(shí)體必須先定義后使用。Switch類(lèi)提供了如下重載的構(gòu)造方法,用于對(duì)開(kāi)關(guān)對(duì)象的狀態(tài)進(jìn)行初始化。Switch(String
s)其中,s為輸出名,初始狀態(tài)缺省為RESETSwitch()其中,輸出名缺省,系統(tǒng)自動(dòng)命名為SWIT1,初始狀態(tài)缺省為RESETSwitch(.String
s,intstate)其中,s為輸出名,初始狀態(tài)為state,state只能為助記符SET或RESETSwitch(intstate)其中,輸出名缺省,系統(tǒng)自動(dòng)命名為SWIT1,參數(shù)state意義同上例如,Switchls=newSwitch(“Logicswich”,SET);定義了開(kāi)關(guān)實(shí)體ls,輸出名為L(zhǎng)ogicswich,初始狀態(tài)為SET?!?.8.1邏輯開(kāi)關(guān)的定義與引用開(kāi)關(guān)實(shí)體定義后,在模型中可通過(guò)標(biāo)準(zhǔn)屬性來(lái)引用,以返回對(duì)某開(kāi)關(guān)當(dāng)前狀態(tài)的判斷,其原型為intLS$(Switchs)其中,s為開(kāi)關(guān)對(duì)象,表示若開(kāi)關(guān)s當(dāng)前狀態(tài)為SET,則返回值為1,否則為0。intLR$(Switchs)其中,s為開(kāi)關(guān)對(duì)象,表示若開(kāi)關(guān)s當(dāng)前狀態(tài)為RESET,則返回值為1,否則為0。booleanLS(Switchs)其中,s為開(kāi)關(guān)對(duì)象,表示若開(kāi)關(guān)s當(dāng)前狀態(tài)為SET,則返回值為true,否則為false。booleanLR(Switchs)其中,s為開(kāi)關(guān)對(duì)象,表示若開(kāi)關(guān)s當(dāng)前狀態(tài)為RESET,則返回值為true,否則為false。例如,若開(kāi)關(guān)ls當(dāng)前狀態(tài)為RESET,則LS$(ls)返回值為0。面向?qū)ο蟮谋硎痉椒╨s.LS$();ls.LR$();ls.LS();ls.LR();§7.8.2lgoic模塊與邏輯開(kāi)關(guān)狀態(tài)的改變1.作用動(dòng)態(tài)實(shí)體進(jìn)入該模塊,將指定的邏輯開(kāi)關(guān)實(shí)體的狀態(tài)改變?yōu)橹付ǖ臓顟B(tài)。操作符、操作數(shù)與模塊圖logic(Switch
a,intb)a:開(kāi)關(guān)對(duì)象,代表要改變狀態(tài)的開(kāi)關(guān)實(shí)體,不能缺省b:助記符,代表開(kāi)關(guān)實(shí)體被設(shè)置的狀態(tài),不能缺省,合法的助記符如下,
SETRESETREVlogicba其中,REV表示將開(kāi)關(guān)設(shè)置為與原狀態(tài)相反的狀態(tài)。例如,logic(ls,SET);將開(kāi)關(guān)ls狀態(tài)設(shè)置為SET,再執(zhí)行語(yǔ)句logic(ls,REV);則使開(kāi)關(guān)ls狀態(tài)變?yōu)镽ESET。logic模塊為資源模塊語(yǔ)句,允許使用面向?qū)ο笮问絣s.logic(REV);來(lái)書(shū)寫(xiě)?!?.8.3邏輯開(kāi)關(guān)的重新定義使用模型控制語(yǔ)句redefine如下的重載形式,可以在新的一輪模擬開(kāi)始時(shí)對(duì)模型的原有開(kāi)關(guān)狀態(tài)進(jìn)行重新定義。redefine(Switchname,intstate)其中,name為重定義的開(kāi)關(guān)對(duì)象名,state為重新定義的初始狀態(tài),例如,redefine(ls,SET);重新定義開(kāi)關(guān)ls初始狀態(tài)為SET。開(kāi)關(guān)重定義語(yǔ)句應(yīng)置于clear語(yǔ)句之后使用,clear語(yǔ)句使所有開(kāi)關(guān)狀態(tài)設(shè)置為RESET。logicba§7.9loop、gate和buffer模塊loop、gate和buffer模塊都屬于操作模塊。7.9.1loop模塊1.產(chǎn)生動(dòng)態(tài)實(shí)體的循環(huán)在模型中可以使用assign和test模塊的配合來(lái)產(chǎn)生動(dòng)態(tài)實(shí)體的局部循環(huán)流動(dòng),例如,......1generate(0,0,0,1);2assign(2,5);3A(next);seize(barber);4advance(5);5release(barber);6assignMinus(2,1);7test(E,P$(2),0,next);8terminate();......§7.9loop、gate和buffer模塊2.使用loop模塊產(chǎn)生循環(huán)(1)作用動(dòng)態(tài)實(shí)體進(jìn)入該模塊時(shí),處理程序會(huì)將該動(dòng)態(tài)實(shí)體的某號(hào)整型參數(shù)的值減少1,然后檢驗(yàn)該整型參數(shù)的值是否為0,若為0,則該動(dòng)態(tài)實(shí)體流入緊后模塊,否則轉(zhuǎn)入具有指定標(biāo)號(hào)的模塊。(2)操作符、操作數(shù)與模塊圖loop(inta,Addrb)a:整型,代表動(dòng)態(tài)實(shí)體的某整型參數(shù)的編號(hào),不能缺省b:標(biāo)號(hào)對(duì)象,代表循環(huán)時(shí)要轉(zhuǎn)入的模塊的標(biāo)號(hào)對(duì)象loop
ab§7.9loop、gate和buffer模塊例如,的程序片段的循環(huán)可以使用loop模塊來(lái)實(shí)現(xiàn):......1generate(0,0,0,1);2assign(2,5);3A(next);seize(barber);4advance(5);5release(barber);6loop(2,next);7terminate();......可見(jiàn)使用loop模塊實(shí)現(xiàn)循環(huán)更為簡(jiǎn)單和明了?!?.9.2gate模塊gate模塊具有轉(zhuǎn)移和拒絕兩種模式。1.作用根據(jù)模塊輔助操作符指定的操作數(shù)a代表的資源實(shí)體狀態(tài)存在與否,決定動(dòng)態(tài)實(shí)體是進(jìn)入該模塊,還是轉(zhuǎn)移至某指定模塊。如果輔助操作符指定的狀態(tài)存在,則動(dòng)態(tài)實(shí)體流入該模塊,否則轉(zhuǎn)入c操作數(shù)指示的模塊。2.操作符、操作數(shù)與模塊圖gate(int
x,Object
a,Addr
b)a:或邏輯開(kāi)關(guān)或設(shè)備或存儲(chǔ)器對(duì)象或標(biāo)號(hào)對(duì)象,不能缺省b:標(biāo)號(hào)對(duì)象,若輔助操作符所定義的狀態(tài)不存在,動(dòng)態(tài)實(shí)體所轉(zhuǎn)入的模塊的標(biāo)號(hào)對(duì)象,不能缺省x:輔助操作符,代表操作數(shù)a表示的資源實(shí)體的當(dāng)前狀態(tài),若此狀態(tài)存在則返回真,否則返回假,有效的輔助操作符及其意義如下:axgateb轉(zhuǎn)移模式§7.9.2gate模塊x:輔助操作符,代表操作數(shù)a表示的資源實(shí)體的當(dāng)前狀態(tài),若此狀態(tài)存在則返回真,否則返回假,有效的輔助操作符及其意義如下:輔助操作符代表的實(shí)體的當(dāng)前狀態(tài)LS邏輯開(kāi)關(guān)為SETLR邏輯開(kāi)關(guān)為RESETU設(shè)備正被占用NU設(shè)備未被占用I設(shè)備當(dāng)前被搶占NI設(shè)備當(dāng)前未被搶占SF存儲(chǔ)器剩余容量為0SNF存儲(chǔ)器剩余容量大于0SE存儲(chǔ)器空SNE存儲(chǔ)器未空其中,設(shè)備被搶占或未被搶占的狀態(tài)將在第8章討論。例如:gate(NU,barber,bybye);gate(NU,barber);axgate拒絕模式§7.9.3buffer模塊1.作用動(dòng)態(tài)實(shí)體進(jìn)入該模塊,立即停止運(yùn)動(dòng),標(biāo)記其屬性:當(dāng)前所在模塊編號(hào)為該buffer模塊編號(hào),下一流入的模塊編號(hào)為緊后模塊編號(hào),然后將其放回當(dāng)前事件鏈。如果在停止前未流經(jīng)priority模塊,則該動(dòng)態(tài)實(shí)體放回原來(lái)位置,如果流經(jīng)priority模塊而未改變優(yōu)先權(quán),則被插入當(dāng)前事件鏈的原優(yōu)先權(quán)組作為其最后一員,否則被插入新的優(yōu)先權(quán)組作為最后一員。處理程序立即從其鏈頭開(kāi)始重新掃描當(dāng)前事件鏈,當(dāng)掃描至該動(dòng)態(tài)實(shí)體時(shí),將其移入該buffer模塊的緊后模塊。2.操作符、操作數(shù)與模塊圖buffer模塊沒(méi)有操作數(shù)。buffer能引起當(dāng)前事件鏈重新掃描的條件發(fā)生,但它與release等模塊有所不同。重新掃描后,暫停在buffer模塊(實(shí)際在CEC)中的動(dòng)態(tài)實(shí)體又開(kāi)始了移動(dòng)。暫停和重新掃描當(dāng)前事件鏈?zhǔn)且驗(yàn)樵诖四P臀恢蒙系拇丝逃衅渌录扔谔幚?。buffer§7.9.4應(yīng)用舉例(一)1.問(wèn)題陳述有一小圖書(shū)館,借書(shū)人平均每隔5分鐘到達(dá)借書(shū)服務(wù)臺(tái),每人只能借一本書(shū),假設(shè)所借的書(shū)籍館內(nèi)都有。服務(wù)臺(tái)只有一個(gè)館員,借書(shū)人將借書(shū)條交給館員,館員去書(shū)架查找然后返回辦理借書(shū)手續(xù)。若服務(wù)臺(tái)前有多人等待借書(shū),則館員將所有借書(shū)條一起收起,查找出所有圖書(shū)后返回。據(jù)統(tǒng)計(jì),館員為一個(gè)借書(shū)人查找書(shū)籍和辦理借書(shū)手續(xù)平均需要6分鐘。構(gòu)造模型,模擬8小時(shí),確定館員的忙閑狀況?!?.9.4應(yīng)用舉例(一)2.實(shí)體定義
§7.9.4應(yīng)用舉例(一)2.模塊圖
§7.9.4應(yīng)用舉例(一)3.源程序
§7.9.4應(yīng)用舉例(二)1.問(wèn)題陳述有一種零件需要在一臺(tái)機(jī)床上加工兩次,零件傳輸?shù)牡竭_(dá)間隔時(shí)間為均勻分布,偏差為0.5分鐘,第一次加工需要3-5分鐘,第二次加工需要2-3分鐘,皆為均勻分布。一個(gè)零件在第一次加工完成后,要總排在其它等待加工的零件之后,等待第二次使用該機(jī)床加工。在完成第二次加工后,零件被送往其它車(chē)間。建立模型,模擬2000個(gè)零件完成加工的情況,確定零件傳輸?shù)牡竭_(dá)平均間隔時(shí)間為多少比較合理,取平均到達(dá)間隔時(shí)間從6到10分鐘,以每間隔0.5分鐘進(jìn)行一輪實(shí)驗(yàn)?!?.9.4應(yīng)用舉例(二)3.實(shí)體定義
§7.9.4應(yīng)用舉例(二)4.模塊圖§7.9.4應(yīng)用舉例(二)4.模擬結(jié)果分析以上輸出統(tǒng)計(jì)數(shù)據(jù),合理的零件傳輸平均到達(dá)間隔時(shí)間大約為8.5到9.5分鐘之間比較合理,此時(shí)平均隊(duì)長(zhǎng)約為0.025,平均等待時(shí)間為0.1118分鐘,最大隊(duì)長(zhǎng)為1,有85%的零件無(wú)需等待,機(jī)床利用率接近90%?!?.9.5應(yīng)用舉例(三)1.問(wèn)題陳述有一理發(fā)館,有兩位理發(fā)師同時(shí)工作,顧客到達(dá)間隔時(shí)間為4到11分鐘,均勻分布,理發(fā)所需時(shí)間為10到22分鐘,均勻分布。理發(fā)館早8點(diǎn)開(kāi)門(mén),晚6點(diǎn)關(guān)門(mén),中午不休息。晚6點(diǎn)關(guān)門(mén)后,若有顧客到達(dá)不再提供服務(wù),但此前到達(dá)的顧客將全部理完發(fā),再離開(kāi)。建立模型,模擬100天,確定平均每天有多少顧客在晚6點(diǎn)到理發(fā)師下班期間沒(méi)理上發(fā)?!?.9.5應(yīng)用舉例(三)2.實(shí)體定義§7.9.5應(yīng)用舉例(三)3.模塊圖§7.9.5應(yīng)用舉例(三)建模提示子模2控制模擬的總時(shí)間。模擬結(jié)束時(shí),絕對(duì)時(shí)鐘的時(shí)間應(yīng)該是每天實(shí)際工作時(shí)間的總和,它可能大于100×10×60=60000分鐘。時(shí)間控制員動(dòng)態(tài)實(shí)體的1號(hào)整型參數(shù)記錄當(dāng)前工作天數(shù),在1天工作10小時(shí)后,他立即關(guān)閉理發(fā)館大門(mén),檢查理發(fā)館是否有顧客在排隊(duì)或正在理發(fā),如果是,大門(mén)保持關(guān)閉,那么后來(lái)的顧客未能進(jìn)門(mén)理發(fā)而離開(kāi)。如果某時(shí)刻他檢查發(fā)現(xiàn)理發(fā)館中已經(jīng)無(wú)顧客,便打開(kāi)大門(mén),開(kāi)始新的一天,如果他發(fā)現(xiàn)已經(jīng)工作了100天,便結(jié)束模型的運(yùn)行?!?.9.6應(yīng)用舉例(四)1.問(wèn)題陳述有一公共汽車(chē)站,每隔30分鐘到達(dá)一輛公交車(chē),通常每班車(chē)會(huì)遲到或早來(lái)2.5分鐘;乘客到達(dá)車(chē)站的間隔時(shí)間為指數(shù)分布,平均間隔2.5分鐘。每班車(chē)下車(chē)的人數(shù)為3至7人,均勻分布。每輛車(chē)最多乘坐50人,汽車(chē)到達(dá)時(shí)車(chē)上人數(shù)為20至50人,均勻分布,車(chē)站等待上車(chē)的人盡量上車(chē),直到車(chē)滿(mǎn)或車(chē)站無(wú)上車(chē)乘客為止。車(chē)滿(mǎn)后無(wú)法上車(chē)的人將離去或改乘其他車(chē)輛。乘客下車(chē)所需時(shí)間為均勻分布,均值為4秒鐘,偏差為3秒鐘。乘客上車(chē)所需時(shí)間也呈均勻分布,均值為8秒鐘,偏差為4秒鐘。模擬公交車(chē)站有2000輛車(chē)通過(guò)時(shí)丟失乘客人數(shù)的分布情況?!?.9.6應(yīng)用舉例(四)2.定義實(shí)體
§7.9.6應(yīng)用舉例(四)3.源程序
§7.9.6應(yīng)用舉例(四)4.模擬結(jié)果
§7.10select模塊7.10.1資源實(shí)體編號(hào)及其間接引用1.資源實(shí)體編號(hào)和相關(guān)標(biāo)準(zhǔn)實(shí)體屬性每一種在模型中由用戶(hù)定義的資源實(shí)體,都會(huì)被處理程序順序編號(hào),編號(hào)從1開(kāi)始,例如,......Facilitybarb=newFacility(“barb”);Queueline=newQueue(“l(fā)ine”);Facilitymach=newFacility(“mach”);Queuewait=newQueue(“wait”);Facilitycrush=Facility(“crash”);Queuestock=newQueue(“stock”);......那么在以上模型中,處理程序會(huì)為設(shè)備實(shí)體barb、mach和crush分別編號(hào)為1、2和3,為排隊(duì)實(shí)體line、wait和stock分別編號(hào)為1、2和3。§7.10select模
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 藥用植物鑒賞課程設(shè)計(jì)
- 植物檢疫學(xué)課程設(shè)計(jì)
- 英文散文選讀課程設(shè)計(jì)
- 素描班幾何圖形課程設(shè)計(jì)
- 火電項(xiàng)目風(fēng)險(xiǎn)與防范
- 自述機(jī)械課程設(shè)計(jì)過(guò)程
- 縣社會(huì)穩(wěn)定風(fēng)險(xiǎn)評(píng)估工作檔案資料明細(xì)
- 《刑罰的消滅》課件
- 托班吸管創(chuàng)意課程設(shè)計(jì)
- 互聯(lián)網(wǎng)業(yè)務(wù)員用戶(hù)維護(hù)總結(jié)
- 金融模擬交易實(shí)驗(yàn)報(bào)告
- 國(guó)家開(kāi)放大學(xué)電大本科《古代小說(shuō)戲曲專(zhuān)題》2023期末試題及答案(試卷號(hào):1340)
- 加德納多元智能理論教學(xué)課件
- 北師大版數(shù)學(xué)八年級(jí)上冊(cè)全冊(cè)教案
- 現(xiàn)代文閱讀之散文
- 從業(yè)人員在安全生產(chǎn)方面的權(quán)利和義務(wù)
- 新開(kāi)模具清單
- 抗菌藥物臨床應(yīng)用指導(dǎo)原則(2023年版)
- 2023年軍政知識(shí)綜合題庫(kù)
- 2023-2024學(xué)年福建省福州市小學(xué)語(yǔ)文 2023-2024學(xué)年六年級(jí)語(yǔ)文期末試卷期末評(píng)估試卷
- YY 0286.1-2019專(zhuān)用輸液器第1部分:一次性使用微孔過(guò)濾輸液器
評(píng)論
0/150
提交評(píng)論