1、管理系统模拟与GPSS语言,绪论系统、模型与模拟输入数据的分析GPSS语言概述GPSS常用语句及其使用随机数发生器及随机变量的产生中级GPSS程序设计输出数据的分析高级GPSS程序设计,在一家只有一位理发师的理发店里,顾客到达时间间隔(分钟)在整数20(5)之间均匀分布,服务时间在23(10)之间均匀分布,为理发店的一个9小时工作日编写一个GPSS程序,SIMULATE GENERATE 20,5 QUEUE 1 SEIZE 1 DEPART 1 ADVANCE 23,10 RELEASE 1 TERMINATE GENERATE 60 TERMINATE 1 START 9 END,Lfs.
2、gps,第6章 中级GPSS 程序设计,本章主要内容:6.1 一家电修理部模型的建立及其模拟6.2 中级 GPSS 语言模块 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 中级 GPSS 语言程序举例,中级 GPSS,LOGIC 逻辑开关INITIAL 初始化语句GATE 测试模块TEST 比较测试模块SAVEVALUE 保存值模块LOOP 循环模块,6-2 中级GPSS 语言模块,第6章 中级 GPSS 程序设计,L
3、OGIC 逻辑开关的设置 对于系统中具有二态性质的设施或设备可用逻辑开关表示.逻辑开关为 1 时表示合,逻辑开关为 0 时,表示断.逻辑开关的置位或变位由 LOGIC 模块完成。 LOGIC_辅助码 A 其中: 辅助码表示逻辑开关的置位情况,A 表示逻辑开关号 R 表示逻辑开关置 0 S 表示逻辑开关置 1 I 表示逻辑开关反转,例: LOGIC_S 2 将 2 号逻辑开关置 1(开) LOGIC_I P$3 将由 3 号参数确定的逻辑开关反转 LOGIC_R 2 将 2 号逻辑开关置 0(关),6-2 中级GPSS 语言模块,INITIAL 初始化语句 如果逻辑开关事先没有进行初始化设置,程
4、序中第一次使用它之前该逻辑开关是处于关闭(即0)的状态。在需要对逻辑开关进行初始化设置时,可以使用 INITIAL 语句进行。,基本格式如下:INITIAL LS$逻辑开关号,LS$逻辑开关号,LS$逻辑开关号,可以同时给6个逻辑开关进行初始化,将开关的状态设置为1比如: INITIAL LS$1,LS$12,LS$15,6-2 中级GPSS 语言模块,SIMULATE: TELLER STORAGE 5 INITIAL 1 GENERATE 10,5 GATE_ LS DOOR,GOAWAY QUEUE LINE ENTER TELLER DEPART LINE ADVANCE 45,15
5、LEAVE TELLERGOAWAY TERMINATE GENERATE 480 LOGIC_ R 1 TEST_ E N3,N7 TERMINATE 1 START 1,GATE 实体状态的测试模块 GATE 模块是用来测试各类实体的当前状态的. 格式如下: GATE_辅助码 A,B其中:A 要测试的实体号 B 当测试结果为假时流动实体应去的模块标号 辅助码 表示实体类型及状态 NU 表示设施没有使用状态 U 表示设施在使用状态 SE 表示存储器空状态 SF 表示存储器满状态,6-2 中级GPSS 语言模块,SNE 表示存储器不空状态 SNF 表示存储器不满状态 LR 表示逻辑开关处于 0
6、 状态 LS 表示逻辑开关处于 1 状态 等等例: GATE_NU P$1, CON 测试1号参数指定的设施 是否在空闲?若不空闲则去 CON 语句 GATE_SE 2 测试 2 号存储器是否空 ? INITIAL LS$1 GATE_LS 1,6-2 中级GPSS 语言模块,SIMULATE1 STORAGE 3 GENERATE 10,5 GATE_ SNF 1,GOAWAY ENTER 1 ADVANCE 25,10 LEAVE 1 TERMINATE 1GOAWAY TERMINATE START 50 END,55.GPS,TEST 比较测试模块 通过测试来比较二个标准数字属性码 S
7、NA 的大小.并 可按结果来控制活动实体的运行 格式: TEST_辅助码 A, B, C 辅助码有: E 相等 NE 不相等 L 小于 LE 小于或等于 G 大于 GE 大于或等于 A , B 二个相比较的 SNA C 比较结果为假时动态实体所要进入 的模块号,6-2 中级GPSS 语言模块,例: TEST_GE P$1, 2, D1 TEST_LE Q$1, P$2, ABC TEST_L FN$1, P$3, DONE注意: 其中下划线为 _, 而不是 - ,6-2 中级GPSS 语言模块,SIMULATE: TELLER STORAGE 5 INITIAL LS$DOOR GENERAT
8、E 10,5 GATE_ LS DOOR,GOAWAY QUEUE LINE ENTER TELLER DEPART LINE ADVANCE 45,15 LEAVE TELLERGOAWAY TERMINATE GENERATE 480 LOGIC_ R DOOR TEST_ E N3,N7 TERMINATE 1 START 1,SAVEVALUE 保存值模块 SAVEVALUE 模块可将任一个值 (包括 SNA) 存放在指定的保存值地址中, 保持值的地址是用数字来定义的, 如 1, 2, . 或 21等, 其 SNA 码为X$j. 在程序中可随时使用各保存值, 只调用其 SNA 码 X$
9、j 即可.在标准输出中按地址号的顺序输出.SAVEVALUE A, B, C 其中: A - 保存值的地址号及 +, - 号, +, - 号表示要在原 值上增加或减少的要求 B - 要存放的值或 SNA 码 C - 保存值的类型, ( F, XF, H, XH ) 缺省时为 F 全字长,6-2 中级GPSS 语言模块,例: SAVEVALUE 2, P$1 将一号参数的值存入 2 号 保存值中 SAVEVALUE 3, Q$3 将三号队列的长度存入 3 号 保存值中 SAVEVALUE 3+, 5 在三号保存值上再加 5 SAVEVALUE P$2-, P$1 在二号参数所表示的保存值号 的保
10、存值中减去一号参数值 SAVEVALUE 5+, X$3 在 5 号保存值上再加上三号 保存值的值,6-2 中级GPSS 语言模块,6-2 中级GPSS 语言模块,保存值的初始化 INITIAL X$j,数值, X$i,数值, X$k,数值未经初始化的保存值的缺省值为0可以依次定义3个保存值,INITIAL X$1,30GENERATE 40,X$1,6-2 中级GPSS 语言模块,LOOP 循环模块 循环是各类程序编制中所不可缺少的。GPSS 语言的循环过程是由LOOP模块完成的。GPSS 语言的循环过程是由计数和转向二个动作完成,它总是先确定循环次数,并将循环次数存在活动实体的某个参数中,
11、然后当活动实体进入LOOP模块后,就开始了循环的进程.循环模块LOOP的基本格式是:,LOOP A, B其中: A 控制循环次数的参数号 B 将A的值减去1,A的值大于零时,活动实体 应转去的语句标号,SIMULATE GENERATE 10 ASSIGN 1,5 设定循环次数 P$1LP PRINT P$1,P$2 循环开始 ASSIGN 2,P$1 LOOP 1,LP 循环计数 PRINT P$1,P$2 TERMINATE 1 START 1 END,举例:,6-2 中级GPSS 语言模块,Loop1.gps,LOGIC 逻辑开关的设置 LOGIC_辅助码 AINITIAL 初始化语句
12、INITIAL LS$逻辑开关号,LS$逻辑开关号,LS$逻辑开关号, INITIAL X$j,数值, X$i,数值, X$k,数值GATE 实体状态的测试模块 GATE_辅助码 A, BTEST 比较测试模块 TEST_辅助码 A, B, CSAVEVALUE 保存值模块 SAVEVALUE A, B, CLOOP 循环模块 LOOP A, B,中级GPSS 语言模块,SAVEVALUE 5,P$1INITIAL X$1,200,X$2,500TEST_LE FN$1,P$3,DONELOGIC_R P$2GATE_SNE P$1GATE_NU P$1,CONINITIAL LS$2,LS$
13、4,LS$7,GENERATE 5,2 RELEASE P1 LEAVE F3 ,20 ADVANCE 6,2 DEPART L1 ,2 SAVEVALUE 1,P$1 TERMINATE 1 TEST_NE Q$1,P$2 LOGIC_R 2 INITIAL ls$6,ls$7 GATE_SF 5 TEST_L FN$1,P$3,AA SAVEVALUE 3,Q$1 LOGIC_R P$1 RMULT 111,22, ,555,1. TRANSFER ,CON2. SAVEVALUE 2+,353. LEAVE 2,04. ENTER 2,351 STORAGE 20001 FUNCTION
14、 RN$1,D3 .5,10/.8,50/1,1007. ADVANCE 16,48. LOGIC_R 1TEST_E N$2,N$710. INITIAL LS$111. LOOP 1,LP12. TEST_LE Q$1,P$2,ABC13. GATE_SE 214. GATE_NU P$1,CON15. INITIAL X$1,3,X$5,9,一单理发师的理发店,顾客到达时间为 18(6),理发时间为 16(4),理发店营业 8 小时关门,但关门之前进入的顾客要理完发才走。,提示: 1. 设置一逻辑开关,控制关门 及顾客的进入 2. 理发店不许顾客进入之后,还 需测试已进入的顾客是否都 理
15、发完毕.,6.3 中级 GPSS 语言程序举例,SIMULATE GENERATE 18,6 QUEUE 1 SEIZE 1 DEPART 1 ADVANCE 16,4 RELEASE 1 TERMINATE GENERATE 480 理发店营业 8 小时 TERMINATE 1 所有顾客理发完毕,关门 START 1 模拟一个班,SIMULATE INITIAL LS$1 GENERATE 18,6 GATE_LS 1 是否处于打开状态TRAN QUEUE 1 若不处于0态则不再进人 SEIZE 1 DEPART 1 ADVANCE 16,4DONE RELEASE 1 TERMINATE
16、GENERATE 480 理发店营业 8 小时 LOGIC_R 1 使 1 号逻辑开关关闭 TEST_E N$TRAN,N$DONE 测试最后关门条件 TERMINATE 1 所有顾客理发完毕,关门 START 1 模拟一个班 END,6.3 中级 GPSS 语言程序举例,L6-3.GPS,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
17、 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,理发店模型输出结果,RELATIVE CLOCK 493 ABSOLUTE CLOCK 493 FACILITY AVERAGE NUMBER AVERAGE SEIZING PREEMPTING UTILIZATION ENTRIES TIME/TRAN
18、TRANS.NO. TRANS.NO. 1 0.88 27 16.11 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,理发店模型输出结果,车间有8名技工加工零件,零件到达间隔时间服从均值10分钟, 方差为 5分钟的均匀分布,零件加工时间服从均值40分钟, 方差为 10分钟的均匀分布,工人每天工作8小时,但
19、是下班前必须完成手头的工作,模拟工人一天的工作.,SIMULATE1 STORAGE 8 GENERATE 10,5 QUEUE 1 ENTER 1 DEPART 1 ADVANCE 40,10 LEAVE 1 TERMINATE GENERATE 480 TERMINATE 1 START 1 END,LG1.GPS,SIMULATE1 STORAGE 8 INITIAL LS$1 GENERATE 10,5 GATE_ LS 1,GOAWAY QUEUE 1 ENTER 1 DEPART 1 ADVANCE 40,10 LEAVE 1GOAWAY TERMINATE GENERATE 48
20、0 LOGIC_ R 1 TEST_ E N$3,N$7 TERMINATE 1 START 1 END,JG.GPS,6.3 中级 GPSS 语言程序举例,例 6.2 假设有一个募捐站点接受各类民众的现金募捐。在募捐的人中大约有50%的人捐10元,有30%的人捐50元,有20%的人捐100元,请通过模拟实验来统计以上各类人的捐款数及总捐款数。(统计100个捐献者),L6-2A.GPSL6-2.GPSL6-2b.gps,SIMULATE1 FUNCTION RN$1,D3.5,10/.8,50/1,1002 FUNCTION P$1,D310,1/50,2/100,3 GENERATE 5 A
21、SSIGN 1, FN$1 SAVEVALUE FN$2+, P$1 SAVEVALUE 4+, P$1 TERMINATE 1 START 100 END,L6-2.GPS,上面的程序模拟了100个捐款人,有关保存值部分的标准输出如下:CONTENTS OF (NONZERO) FULLWORD SAVEVALUESXF LOC VALUE LOC VALUE LOC VALUE LOC VALUE 1 520 2 1500 3 1800 4 3820从输出中可见,一类捐款人为52人,捐款50元; 二类捐款人为30人,捐款1500元; 三类捐款人为18人,捐款1800元; 总捐款3820元。
22、,6.3 中级 GPSS 语言程序举例,一露天矿模拟模型,已知一露天矿剥离和采煤分别由二台电铲来完成。 一台以 4 (2) 分钟间隔时间装满一车矿石, 另一台以 5 (2) 分钟间隔时间装满一车煤,卡车各运行 15 分钟后分别卸入矿石场和储煤仓, 卸矿时间为 8分钟, 矿石场和储煤仓的容量分别为 20000 吨及 2000 吨, 矿石卡车载重量为 35 吨, 而运煤卡车载重量为 18 吨。 模拟这一过程, 并记录矿石和煤的产量。,模型: 动态实体 - 运矿石卡车和运煤卡车 存储器 - 1 号 矿石场 2 号 储煤仓 保存值 - 1 号 产煤量 2 号 矿石剥离量,6.3 中级 GPSS 语言程
23、序举例,模型示意图,例 6.4 一露天矿模拟模型,本例题用三个方式编程:1. 详细方法 即每一步都表示清楚 (程序 A)2. 使用流动实体的参数 (程序 B)3. 使用 SNA 码简化程序 (程序 C),一般方法 (A),SIMULATE (程序 A)1 STORAGE 20002 STORAGE 20000 GENERATE 5,2 装煤 ADVANCE 15 ENTER 1,18 ADVANCE 8 卸煤 SAVEVALUE 1+,18 统计煤产量 LEAVE 1 TERMINATE GENERATE 4,2 装矿石 ADVANCE 15 ENTER 2,35 ADVANCE 8 卸矿石
24、SAVEVALUE 2+,35 统计矿石产量 LEAVE 2 TERMINATE GENERATE 480 TERMINATE 1 START 1 END,L6-4.gpsL6-4a.gpsL6-4d.gpsEE.GPS,使用参数 (B-1),将代号或码用 SNA 表示. 一号参数表示煤(1)或矿石车(2), 二号参数表示载重量。,SIMULATE (程序 B)STORAGE 2000STORAGE 20000 GENERATE 5,2 装煤 ASSIGN 1,1 ASSIGN 2,18 ADVANCE 15 ENTER P$1,P$2 ADVANCE 8 卸煤 SAVEVALUE P$1+,
25、P$2 统计煤产量 LEAVE P$1,0 TERMINATE,GENERATE 4,2 装矿石ASSIGN 1,2ASSIGN 2,35ADVANCE 15ENTER P$1,P$2ADVANCE 8 卸矿石SAVEVALUE P$1+,P$2 统计矿石产量LEAVE P$1,0TERMINATEGENERATE 480TERMINATE 1START 1END,使用参数 (B-2),L6-4e.gpsL6-4b.gps,利用 SNA 码将相同程序段合并可简化程序:,SIMULATE (程序 C)STORAGE 2000STORAGE 20000 GENERATE 5,2 装煤 ASSIGN
26、 1,1 ASSIGN 2,18 TRANSFER ,CON GENERATE 4,2 装矿石 ASSIGN 1,2 ASSIGN 2,35CON ADVANCE 15 ENTER P$1,P$2 ADVANCE 8 卸车 SAVEVALUE P$1+,P$2 统计产量 LEAVE P$1,0 TERMINATE GENERATE 480 TERMINATE 1 START 1 END,例6.5 一零件加工过程的模拟 有一零件加工车间,主要是进行零件的钻孔工作。零件的到达间隔时间为103分钟,但零件在进入车间后应先进行打毛刺等光滑处理,然后在进行画线工作,最后才能钻孔。上述每道工序都可能进行排
27、队,我们分别用1、2、3表示这3个队列。为了简单起见,我们仍假设所有的过程都呈均匀分布,其均值和方差分别为: 打毛刺等光滑处理 102 分钟 画线 93 分钟 钻孔 81 分钟,6.3 中级 GPSS 语言程序举例,SIMULATE GENERATE 10,3 零件到达 QUEUE 1 排队打毛刺等光滑处理 SEIZE 1 DEPART 1 ADVANCE 10,2 RELEASE 1 QUEUE 2 排队画线 SEIZE 2 DEPART 2 ADVANCE 9,3 RELEASE 2 QUEUE 3 排队钻孔 SEIZE 3 DEPART 3 ADVANCE 8,1 RELEASE 3 T
28、ERMINATE 1 START 50 END,初步结构,L6-5a.gps,SIMULATEMEAN EQU 1DEF EQU 2MEAN FUNCTION P$1,D3 服务间隔时间均值1,10/2,9/3,8DEF FUNCTION P$1,D3 服务间隔时间方差1,2/2,3/3,1 GENERATE 10,3,3 ASSIGN 2,3 设循环次数BACK ASSIGN 1+,1 设置P$1为工序代号 QUEUE P$1 SEIZE P$1 DEPART P$1 ASSIGN 3,FN$DEF 求方差 ADVANCE FN$MEAN,P$3 RELEASE P$1 LOOP P$2,B
29、ACK 循环判断 TERMINATE 1 START 50 END,使用标准数字属性码简化程序,L6-5b.gps,30 % 50% 10% 10%,CPU 队列,#1,#2,#3,系统示意图,CPU,分时处理计算机系统,例 6.6 分时处理计算机系统的模拟分析,系统简述 一台分时处理计算机系统有三个终端, 每个终端能送四种信息, 信息到达时按 FIFO 原则接受处理. 每一种信息的处理时间与它的来源类型有关。 如下面表中所示: 到达间隔时间和处理时间与终端的关系 终端号 到达间隔时间 处理时间 1 4500 (2000) 350 2 3000 (800 ) 320 3 2000 (700 ) 240,