1、第6章 中级GPSSWorld 程序设计,本章主要内容:6.1 一家电修理部模型的建立及其模拟6.2 中级 GPSSWorld 语言模块 6.2.1 LOGIC 逻辑开关 6.2.2 INITIAL 初始化语句 6.2.3 GATE 测试模块 6.2.4 TEST 比较测试模块 6.2.5 SAVEVALUE 保存值模块 6.2.6 LOOP 循环模块6.3 中级 GPSSWorld 语言程序举例,中级 GPSSWorld,第6章 中级GPSSWorld 程序设计,6-1 一家电修理部模型的建立及其模拟 已知一家电修理部, 除管理人员外, 有一名普通修理工干各种另活,以及二个有经验的专家负责较
2、难的工作. 普通修理工能完成 70% 的修理工作, 其余 30% 难一些的工作由专家完成. 修理部原始记录表明: 1. 顾客到达间隔时间为 11 (5) 分钟, 均匀分布. 2. 不用专家服务顾客的服务时间为 13 (5) 分钟, 均匀分布. 3. 需要专家服务的顾客应先由普通修理工修 4 (2) 分钟, (均 匀分布) 再由专家修 62 (20) 分钟, 均匀分布. 4. 模拟60000分钟。,求解 A.普通修理工及专家的平均利用率B. 普通修理工及专家队列的平均等待时间C. 普通修理工及专家队列的平均队长D. 普通修理工修理一件设备的平均时间模型的建立1. 设施 普通修理工 HANDYM2
3、. 存储器 二名专家 SPCLST3. 队列 A. 普通修理工队列 GENQB. 专家队列 SPECQ4. 模拟模拟60000分钟,6-1 一家电修理部模型的建立及其模拟,模型示意图,6-1 一家电修理部模型的建立及其模拟,SPCLST STORAGE 2 GENERATE 11, 5 QUEUE GENQ TRANSFER .7, SPEC, HANDYHANDY SEIZE HANDYM DEPART GENQ ADVANCE 13, 5 RELEASE HANDYM TRANSFER , DONE,SPEC SEIZE HANDYM DEPART GENQ ADVANCE 4, 2 RE
4、LEASE HANDYM QUEUE SPECQ ENTER SPCLST, 1 DEPART SPECQ ADVANCE 62, 20 LEAVE SPCLST, 1DONE TERMINATE 1,模型程序,6-1 一家电修理部模型的建立及其模拟,FACILITY ENTRIES UTIL. AVE. TIME AVAIL. OWNER PEND INTER RETRY DELAY HANDYM 5456 0.937 10.301 1 5457 0 0 0 0QUEUE MAX CONT. ENTRY ENTRY(0) AVE.CONT. AVE.TIME AVE.(-0) RETRY G
5、ENQ 9 0 5456 864 1.597 17.559 20.863 0 SPECQ 13 4 1628 393 1.600 58.953 77.713 0STORAGE CAP. REM. MIN. MAX. ENTRIES AVL. AVE.C. UTIL. RETRY DELAY SPCLST 2 0 0 2 1624 1 1.671 0.835 0 4,模拟输出结果,6-1 一家电修理部模型的建立及其模拟,模拟结果:A.普通修理工的平均利用率 0.937 B. 专家的平均利用率 0.835C. 普通修理工队列的平均等待时间 17.559D. 专家队列的平均等待时间 58.959E.
6、 普通修理工队列的平均队长 1.597F. 专家队列的平均队长 1.600G. 普通修理工修理一件设备的平均时间 10.301,6-1 一家电修理部模型的建立及其模拟,第6章 中级 GPSSWorld 程序设计,6-2 中级GPSSWorld 语言模块,6.2.1. LOGIC 逻辑开关的设置 对于系统中具有二态性质的设施或设备可用逻辑开关表示。逻辑开关为 1 时表示合,逻辑开关为 0 时,表示断。逻辑开关的置位或变位由 LOGIC 模块完成。 LOGIC 模块的基本结构为: LOGIC 辅助码 A 其中: 辅助码表示逻辑开关的置位情况,A 表示逻辑开关变量名 R 表示逻辑开关变量置 0 S
7、表示逻辑开关变量置 1 I 表示逻辑开关变量反转,例: LOGIC S LOGIC2 将逻辑开关 变量LOGIC2 置 1 LOGIC R LOG3 将逻辑开关 变量LOG3 置 0 LOGIC I PowerSwitch 将逻辑开关 变量PowerSwitch反转,6-2 中级GPSSWorld 语言模块,6.2.2 SAVEVALUE 保存值模块 SAVEVALUE 模块可将任一个值 (包括 SNA) 存放在指定变是名中, SAVEVALUE 模块的格式: SAVEVALUE A, B 其中: A - 保存值的地址号及 +, - 号, +, - 号表示要在原 值上增加或减少的要求 B -
8、要存放的值或 SNA 码,6-2 中级GPSSWorld 语言模块,例: SAVEVALUE Account,99.95SAVEVALUE The_Bard,“rose by any other name “ SAVEVALUE Account+,88.5 SAVEVALUE Account-,55.4,6-2 中级GPSSWorld 语言模块,6.2.3 INITIAL 初始化语句,基本格式如下:INITIAL A,BA:矩阵, 逻辑,保存值或矩阵的一个元素。 B: 必须是Null(空), Number(数字), String(字符串), Name(变量名), 或者UNSPECIFIED(未
9、定义)之一。例如: INITIAL X$Power_X, 100.98INITIAL X$Note_X, “Note Message!”INITIAL MX$MyMartix(3,6), 33.5INITIAL LS$L_Power, 1 ;将逻辑开关实体L_Power的初值设为1.,6-2 中级GPSSWorld 语言模块,6.2.4 GATE 实体状态的测试模块 GATE 模块是用来测试各类实体的当前状态的。其格式如下: GATE 辅助码 A, B其中: 辅助码 表示实体类型及状态,如: NU 表示设施没有处于使用状态 U 表示设施在使用状态 SE 表示存储器空状态 SF 表示存储器满状态
10、,6-2 中级GPSSWorld 语言模块,SNE 表示存储器不空状态 SNF 表示存储器不满状态 LR 表示逻辑开关处于 0 状态 LS 表示逻辑开关处于 1 状态 等等 A 要测试的实体变量名 B 当测试结果为假时流动实体应去的模块标号例: GATE SE Storege2 测试Storege2号存储器是否空 ? GATE NU F_1, CON 测试 f_1设施 是否在空闲?若不空则去 CON 语句,6-2 中级GPSSWorld 语言模块,6.2.5 TEST 比较测试模块 通过测试来比较二个标准数字属性码 SNA 的大小. 格式: TEST 辅助码 A, B, C 其中: 辅助码有:
11、 E 相等 NE 不相等 L 小于 LE 小于或等于 G 大于 GE 大于或等于,6-2 中级GPSSWorld 语言模块,A , B 二个相比较的 变量名或SNA以及表达式 C 比较结果为假时动态实体所要进入 的模块号 例: TEST GE P$MY_1, 2, D1 TEST LE Q$q_1, P$MY_2, ABC TEST L FN$FUN_1, P$MY_3, DONE 注意: 在Windows版本中下划线 _已取消,不再需要,6-2 中级GPSSWorld 语言模块,6-2 中级GPSSWorld 语言模块,6.2.6 LOOP 循环模块 循环是各类程序编制中所不可缺少的。GPS
12、SWorld 语言的循环过程是由LOOP模块完成的。GPSSWorld 语言的循环过程是由计数和转向二个动作完成,它总是先确定循环次数,并将循环次数存在活动实体的某个参数中,然后当活动实体进入LOOP模块后,就开始了循环的进程,因此对于不同的活动实体,在同一个循环中的循环次数有可能是不相同的。循环模块LOOP的基本格式是:,LOOP A, B其中: A 控制循环次数的参数号。 B 当 A 场参数的值大于零时,活动实体应转去的语句标号,同时将A的值减去 1。,GENERATE 10 ASSIGN par_1,5 设定循环次数par_1L_P ASSIGN par_2,P$par_1 ;循环开始
13、LOOP par_1,L_P ;循环计数 TERMINATE 1,举例:,6-2 中级GPSSWorld 语言模块,6.3 中级 GPSSWorld 语言程序举例,例 6.2 假设有一个募捐站点接受各类民众的现金募捐。在募捐的人中大约有50%的人捐10元,有30%的人捐50元,有20%的人捐100元,请通过模拟实验来统计以上各类人的捐款数及总捐款数。(到达的人平均间隔5分钟),FUN1 FUNCTION RN3,D30.5,10/0.8,50/1,100FUN2 FUNCTION P$vx_1,E310,PAR_1/50,PAR_2/100,PAR_3INITIAL X$PAR_1,0INIT
14、IAL X$PAR_2,0INITIAL X$PAR_3,0INITIAL X$ACC_MONEY,0 GENERATE 5 ASSIGN vx_1,FN$FUN1 SAVEVALUE FN$FUN2+,P$vx_1 SAVEVALUE ACC_MONEY+,P$vx_1 TERMINATE 1,上面的程序模拟了100个捐款人,有关保存值部分的标准输出如下:SAVEVALUE RETRY VALUE PAR_1 0 620.000 ( 10元的捐款总数 ) PAR_2 0 1550.000 ( 50元的捐款总数 ) PAR_3 0 2600.000 ( 100元的捐款总数 ) ACC_MONE
15、Y 0 4770.000 ( 全部捐款总数 ) CEC XN PRI M1 ASSEM CURRENT NEXT PARAMETER VALUE 121 0 600.000 121 0 1FEC XN PRI BDT ASSEM CURRENT NEXT PARAMETER VALUE 122 0 1200.000 122 0 6从输出中可见,一类捐款人为62人,捐款620元; 二类捐款人为31人,捐款1550元; 三类捐款人为26人,捐款2600元; 合计119人总捐款4770元。,6.3 中级 GPSSWorld 语言程序举例,例 6.3 一单理发师的理发店,顾客到达时间为 18(6),理
16、发时间为 16(4),理发店营业 8 小时关门,但关门之前进入的顾客要理完发才走。,提示: 1. 设置一逻辑开关,控制关门 及顾客的进入 2. 理发店不许顾客进入后,测 试已进入的顾客是否都理发 完毕?都完后关门。,6.3 中级 GPSSWorld 语言程序举例,GENERATE 18,6 GATE LR LOG_1 ; 测试 LOG_1 号逻辑开关是否关闭TRAN QUEUE L_1 ; 若已关则不再进人 SEIZE F_1 DEPART L_1 ADVANCE 16,4DONE RELEASE F_1 TERMINATE GENERATE 480 ; 理发店营业 8 小时 LOGIC S
17、LOG_1 ; 使 1 号逻辑开关关闭 TEST E N$TRAN,N$DONE ;测试最后关门条件 TERMINATE 1 ;所有顾客理发完毕,关门,6.3 中级 GPSSWorld 语言程序举例,RELATIVE CLOCK 493 ABSOLUTE CLOCK 493 FACILITY AVERAGE NUMBER AVERAGE SEIZING PREEMPTING UTILIZATION ENTRIES TIME/TRAN TRANS.NO. TRANS.NO. 1 0.88 27 16.11 LOGIC SWITCH - SET (ON) STATUS SWITCH NAME NA
18、ME NAME NAME NAME NAME NAME NAME NAME 1 QUEUE MAXIMUM AVERAGE TOTAL ZERO PERC. AVERAGE $AVERAGE TABLE CURRENT CONTENT CONTENT ENTRIES ENTRIES ZERO TIME/TR TIME/TR NUMBR CONTENT 1 2 0.33 27 10 37.04 6.11 9.71 0,理发店模型输出结果,例 6.4 一露天矿模拟模型,已知一露天矿剥离和采煤分别由二台电铲来完成。 一台以 4 (2) 分钟间隔时间装满一车矿石, 另一台以 5 (2) 分钟间隔时间装
19、满一车煤,卡车各运行 15 分钟后分别卸入矿石场和储煤仓, 卸矿时间为 8分钟, 矿石场和储煤仓的容量分别为 20000 吨及 2000 吨, 矿石卡车载重量为 35 吨, 而运煤卡车载重量为 18 吨。 模拟这一过程, 并记录矿石和煤的产量。,模型: 动态实体 - 运矿石卡车和运煤卡车 存储器 - S_1 号 矿石场 S_2 号 储煤仓 保存值 - V_1 号 产煤量 V_2 号 矿石剥离量,6.3 中级 GPSSWorld 语言程序举例,储煤仓,储矿场,5/2,4/2,35 吨,18 吨,15,20000,2000,模型示意图,例 6.4 一露天矿模拟模型,本例题用三个方式编程:1. 详细
20、方法 即每一步都表示清楚 (程序 A)2. 使用流动实体的参数 (程序 B)3. 使用 SNA 码简化程序 (程序 C),一般方法 (程序A),S_1 STORAGE 2000S_2 STORAGE 20000GENERATE 5,2 ;装煤 ADVANCE 15 ENTER S_1,18 ADVANCE 8 ;卸煤 SAVEVALUE V_1+,18 ;统计煤产量 LEAVE S_1,0 TERMINATE GENERATE 4,2 ;装矿石 ADVANCE 15 ENTER S_2,35 ADVANCE 8 ;卸矿石 SAVEVALUE V_2+,35 ;统计矿石产量 LEAVE S_2,
21、0 TERMINATE GENERATE 480 TERMINATE 1,使用参数 (B),将代号或码用 SNA 表示. V_1参数表示煤或矿石车,V_2号参数表示载重量,V_3表示T_1或T_2存储值。,S_1 STORAGE 2000S_2 STORAGE 20000INITIAL X$T_1,0INITIAL X$T_2,0 GENERATE 5,2 ;装煤 ASSIGN V_1,S_1 ;S_1表示目的仓库 ASSIGN V_2,18ASSIGN V_3,T_1 ADVANCE 15 ENTER P$V_1,P$V_2 SAVEVALUE P$V_3+,P$V_2 ;统计煤产量 ADV
22、ANCE 8 ;卸煤LEAVE P$V_1,0 TERMINATE GENERATE 4,2 ;装矿石 ASSIGN V_1,S_2 ASSIGN V_2,35ASSIGN V_3,T_2 ADVANCE 15 ENTER P$V_1,(P$V_2) SAVEVALUE P$V_3+,P$V_2 ;统计矿石产量 ADVANCE 8 ;卸矿石LEAVE P$V_1,0 TERMINATE GENERATE 480 TERMINATE 1,利用 SNA 码 (C),利用 SNA 码将相同程序段合并可简化程序:,S_1 STORAGE 2000S_2 STORAGE 20000INITIAL X$T
23、_1,0INITIAL X$T_2,0 GENERATE 5,2 ;装煤 ASSIGN V_1,S_1 ASSIGN V_2,18ASSIGN V_3,T_1TRANSFER,NEXT_C GENERATE 4,2 ;装矿石 ASSIGN V_1,S_2 ASSIGN V_2,35ASSIGN V_3,T_2NEXT_C ADVANCE 15 ENTER P$V_1,(P$V_2) SAVEVALUE P$V_3+,P$V_2 ;统计矿石产量ADVANCE 8 ;卸矿石LEAVE P$V_1,0 TERMINATE GENERATE 480 TERMINATE 1,例6.5 一零件加工过程的模
24、拟 有一零件加工车间,主要是进行零件的钻孔工作。零件的到达间隔时间为103分钟,但零件在进入车间后应先进行打毛刺F_1等光滑处理,然后在进行画线F_2工作,最后才能钻孔F_3。上述每道工序都可能进行排队,我们分别用L_1、L_2、L_3表示这3个队列。为了简单起见,我们仍假设所有的过程都呈均匀分布,其均值和方差分别为: 打毛刺等光滑处理 102 分钟 画线 93 分钟 钻孔 81 分钟,6.3 中级 GPSSWorld 语言程序举例,GENERATE 10,3 ;零件到达 QUEUE L_1 ;排队打毛刺等光滑处理 SEIZE F_1 DEPART L_1 ADVANCE 10,2 RELEA
25、SE F_1 QUEUE L_2 ;排队画线 SEIZE F_2 DEPART L_2 ADVANCE 9,3 RELEASE F_2 QUEUE L_3 ;排队钻孔 SEIZE F_3 DEPART L_3 ADVANCE 8,1 RELEASE F_3 TERMINATE 1,初步结构6_5A,MEAN FUNCTION P$S_T,D3 ;服务间隔时间均值,S_T为工序代码1,10/2,9/3,8DEF FUNCTION P$S_T,D3 ;服务间隔时间方差,S_T为工序代码1,2/2,3/3,1W_QFUNCTIONP$S_T,E31,L_1/2,L_2/3,L_3W_FFUNCTIONP$S_T,E31,F_1/2,F_2/3,F_3 GENERATE 10,3 ASSIGN Loop_C,3 ;设循环次数B_ACK ASSIGN S_T+,1 ;设置 P$S_T 为工序代号 QUEUE FN$W_Q SEIZE FN$W_F DEPART FN$W_Q ADVANCE FN$MEAN,FN$DEF RELEASE FN$W_F LOOP Loop_C,B_ACK ;循环判断 TERMINATE 1,使用系统数字属性码简化程序,课 后 练 习,1. 读懂上述例题2. 上机练习及实验3. 改动部分参数, 多次实验, 分析结果4. 若煤仓或储矿场满了怎么办?,
Copyright © 2018-2021 Wenke99.com All rights reserved
工信部备案号:浙ICP备20026746号-2
公安局备案号:浙公网安备33038302330469号
本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。