1管理系统模拟与 GPSS语言
MSSV1.0
第 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
2管理系统模拟与 GPSS语言
MSSV1.0
第 6章 中级 GPSS 程序设计
6-1 一 家电修理部模型的建立及其模拟
已知一家电修理部,除管理人员外,有一名普通修
理工干各种另活,以及二个有经验的专家负责较难的工
作, 普通修理工能完成 70% 的修理工作,其余 30% 难
一些的工作由一个专家完成, 修理部原始记录表明,
1,顾客到达间隔时间为 11 (5) 分钟,均匀分布,
2,不用专家服务顾客的服务时间为 13 (5) 分钟,均匀分布,
3,需要专家服务的顾客应先由普通修理工修 4 (2) 分钟,(均
匀分布 ) 再由专家修 62 (20) 分钟,均匀分布,
4,平均每天服务约 45 个顾客,
3管理系统模拟与 GPSS语言
MSSV1.0
求解
A.普通修理工及专家的平均利用率
B,普通修理工及专家队列的平均等待时间
C,普通修理工及专家队列的平均队长
D,普通修理工修理一件设备的平均时间
模型的建立
1,设施 普通修理工 HANDYM
2,存储器 二名专家 SPCLST
3,队列 A,普通修理工队列 GENQ
B,专家队列 SPECQ
4,模拟长度 45 个顾客
6-1 一 家电修理部模型的建立及其模拟
4管理系统模拟与 GPSS语言
MSSV1.0
到达
70%
30%
普通修理工
专家
GENQ
SPECQ
HANDYM
SPCLST
离开
模型示意图
需要专家修理的设备
需要普通修理工修理的设备
6-1 一 家电修理部模型的建立及其模拟
5管理系统模拟与 GPSS语言
MSSV1.0
SIMULATE
GENQ EQU 1
SPECQ EQU 2
HANDYM EQU 1
SPCLST EQU 1
SPCLST STORAGE 2
GENERATE 11,5
QUEUE GENQ
TRANSFER,7,SPEC,HANDY
HANDY SEIZE HANDYM
DEPART GENQ
ADVANCE 13,5
RELEASE HANDYM
TRANSFER,DONE
SPEC SEIZE HANDYM
DEPART GENQ
ADVANCE 4,2
RELEASE HANDYM
QUEUE SPECQ
ENTER SPCLST,1
DEPART SPECQ
ADVANCE 62,20
LEAVE SPCLST,1
DONE TERMINATE 1
START 45
END
模型程序
6-1 一 家电修理部模型的建立及其模拟
6管理系统模拟与 GPSS语言
MSSV1.0
FACILITY AVERAGE NUMBER AVERAGE SEIZING PREEMPTING
UTILIZATION ENTRIES TIME/TRAN TRANS.NO,TRANS.NO.
HANDYM 0.93 47 10.66
STORAGE CAPACITY AVERAGE AVERAGE ENTRIES AVERAGE CURRENT MAXIMUM
CONTENT UTILIZ,TIME/TR CONTENT CONTENT
SPCLST 2 1.00 0.71 13 58.85 2 2
QUEUE MAXIMUM AVERAGE TOTAL ZERO PERC,AVERAGE $AVERAGE TABLE
CONTENT CONTENT ENTRIES ENTRIES ZERO TIME/TR TIME/TR NUMBR
GENQ 3 0.76 48 9 18.75 8.54 10.51
SPECQ 1 0.28 13 6 46.15 11.77 21.86
模拟输出结果
6-1 一 家电修理部模型的建立及其模拟
7管理系统模拟与 GPSS语言
MSSV1.0
模拟结果,
A.普通修理工的平均利用率 0.93
B,专家的平均利用率 0.71
C,普通修理工队列的平均等待时间 8.54
D,专家队列的平均等待时间 11.77
E,普通修理工队列的平均队长 0.76
F,专家队列的平均队长 0.28
G,普通修理工修理一件设备的平均时间 10.66
6-1 一 家电修理部模型的建立及其模拟
8管理系统模拟与 GPSS语言
MSSV1.0
第 6章 中级 GPSS 程序设计
6-2 中级 GPSS 语言 模块
6.2.1,LOGIC 逻辑开关的设置
对于系统中具有二态性质的设施或设备可用逻辑开关
表示。逻辑开关为 1 时表示合,逻辑开关为 0 时,表示断。
逻辑开关的置位或变位由 LOGIC 模块完成。
LOGIC 模块的基本结构为:
LOGIC_辅助码 A
其中,辅助码表示逻辑开关的置位情况,A 表示逻辑开关号
R 表示逻辑开关置 0
S 表示逻辑开关置 1
I 表示逻辑开关反转
9管理系统模拟与 GPSS语言
MSSV1.0
例:
LOGIC_S 2 将 2 号逻辑开关置 1
LOGIC_I P$3 将由 3 号参数确定的逻辑开关反转
LOGIC_R 3 将 3 号逻辑开关置 0
6-2 中级 GPSS 语言 模块
10管理系统模拟与 GPSS语言
MSSV1.0
6.2.2 INITIAL 初始化语句
如果逻辑开关事先没有进行初始化设置,程序中第一
次使用它之前该逻辑开关是处于关闭(即 0)的状态。在
需要对逻辑开关进行初始化设置时,可以使用 INITIAL
语句进行。
基本格式如下:
INITIAL LS$逻辑开关号,LS$逻辑开关号,LS$逻辑开关号,……
比如:
INITIAL LS$1,LS$12,LS$15
6-2 中级 GPSS 语言 模块
11管理系统模拟与 GPSS语言
MSSV1.0
6.2.3 GATE 实体状态的测试模块
GATE 模块是用来测试各类实体的 当前状态 的。其格式
如下:
GATE_辅助码 A,B
其中:
辅助码 表示实体类型及状态,如:
NU 表示设施没有使用状态
U 表示设施在使用状态
SE 表示存储器空状态
SF 表示存储器满状态
6-2 中级 GPSS 语言 模块
12管理系统模拟与 GPSS语言
MSSV1.0
SNE 表示存储器不空状态
SNF 表示存储器不满状态
LR 表示逻辑开关处于 0 状态
LS 表示逻辑开关处于 1 状态
…… 等等
A 要测试的实体号
B 当测试结果为假时流动实体应去的模块标号
例,GATE_SE 2 测试 2 号存储器是否空?
GATE_NU P$1,CON 测试 1 号参数指定的设施
是否在空闲?若不空则去 CON 语句
6-2 中级 GPSS 语言 模块
13管理系统模拟与 GPSS语言
MSSV1.0
6.2.4 TEST 比较 测试模块
通过测试来比较二个标准数字属性码 SNA 的大小,
格式, TEST_辅助码 A,B,C
其中,
辅助码 有, E 相等
NE 不相等
L 小于
LE 小于或等于
G 大于
GE 大于或等于
6-2 中级 GPSS 语言 模块
14管理系统模拟与 GPSS语言
MSSV1.0
A,B 二个相比较的 SNA
C 比较结果为假时动态实体所要进入
的模块号
例, TEST_GE P$1,2,D1
TEST_LE Q$1,P$2,ABC
TEST_L FN$1,P$3,DONE
注意, 其中下划线为 _,而不是 -,
6-2 中级 GPSS 语言 模块
15管理系统模拟与 GPSS语言
MSSV1.0
6.2.5 SAVEVALUE 保存值模块
SAVEVALUE 模块可将任一个值 (包括 SNA) 存放在指定的保
存值地址中,保持值的地址是用数字来定义的,如 1,2,..,或 21等,
其 SNA 码 为 X$。 X$? 在 GPSS 的标准输出中输出, 在程序中
可随时使用各保存值,只调用其 SNA 码 X$? 即可。
SAVEVALUE 模块的格式,
SAVEVALUE A,B,C
其中,
A ---- 保存值的地址号及 +,- 号,+,- 号表示要在原
值上增加或减少的要求
B ---- 要存放的值或 SNA 码
C ---- 保存值的类型,( F,XF,H,XH ) 缺省时为 F 全字长
6-2 中级 GPSS 语言 模块
16管理系统模拟与 GPSS语言
MSSV1.0
例,
SAVEVALUE 2,P$1 将一号参数的值存入 2 号
保存值中
SAVEVALUE 3,Q$3 将三号队列的长度存入 3 号
保存值中
SAVEVALUE 3+,5 在三号保存值上再加 5
SAVEVALUE P$2-,P$1 在二号参数所表示的保存值号
的保存值中减去一号参数值
SAVEVALUE 5+,X$3 在 5 号保存值上再加上三号
保存值的值
6-2 中级 GPSS 语言 模块
17管理系统模拟与 GPSS语言
MSSV1.0
6-2 中级 GPSS 语言 模块
6.2.6 LOOP 循环模块
循环是各类程序编制中所不可缺少的。 GPSS 语言的
循环过程是由 LOOP模块完成的。 GPSS 语言的循环过程是
由计数和转向二个动作完成,它总是先确定循环次数,并
将循环次数存在活动实体的某个参数中,然后当活动实体
进入 LOOP模块后,就开始了循环的进程,因此对于不同的
活动实体,在同一个循环中的循环次数有可能是不相同的。
循环模块 LOOP的基本格式是:
LOOP A,B
其中,A 控制循环次数的参数号。
B 当 A 场参数的值大于零时,活动实体
应转去的语句标号,同时将 A的值减去 1。
18管理系统模拟与 GPSS语言
MSSV1.0
SIMULATE
GENERATE 10
ASSIGN 1,5 设定循环次数 P$1
LP 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 语言 模块
19管理系统模拟与 GPSS语言
MSSV1.0
6.3 中级 GPSS 语言程序举例
例 6.2 假设有一个募捐站点接受各类民众的现金募捐。在募
捐的人中大约有 50%的人捐 10元,有 30%的人捐 50元,有 20%的
人捐 100元,请通过模拟实验来统计以上各类人的捐款数及总
捐款数 。
SIMULATE
1 FUNCTION RN$1,D3
.5,10/.8,50/1,100
2 FUNCTION P$1,D3
10,1/50,2/100,3
GENERATE 5
ASSIGN 1,FN$1
SAVEVALUE FN$2+,P$1
SAVEVALUE 4+,P$1
TERMINATE 1
START 100
END
捐款概
率分布
捐款人
种类
.8 1.5
20管理系统模拟与 GPSS语言
MSSV1.0
上面的程序模拟了 100个捐款人,有关保存值部分的标准输出如下:
CONTENTS OF (NONZERO) FULLWORD SAVEVALUES
XF LOC VALUE LOC VALUE LOC VALUE LOC VALUE
1 520 2 1500 3 1800 4 3820
从输出中可见,一类捐款人为 52人,捐款 50元;
二类捐款人为 30人,捐款 1500元;
三类捐款人为 18人,捐款 1800元;
总捐款 3820元。
6.3 中级 GPSS 语言程序举例
21管理系统模拟与 GPSS语言
MSSV1.0
例 6.3
一单理发师的理发店,顾客到达时间为 18( 6),理发时间
为 16( 4),理发店营业 8 小时关门,但关门之前进入的顾客
要理完发才走。
提示,1,设置一逻辑开关,控制关门
及顾客的进入
2,理发店不许顾客进入后,测
试已进入的顾客是否都理发
完毕?都完后关门。
6.3 中级 GPSS 语言程序举例
22管理系统模拟与 GPSS语言
MSSV1.0
SIMULATE
INITIAL LS$1
GENERATE 18,6
GATE_LR 1 测试 1 号逻辑开关是否关闭
TRAN QUEUE 1 若已关则不再进人
SEIZE 1
DEPART 1
ADVANCE 16,4
DONE RELEASE 1
TERMINATE
GENERATE 480 理发店营业 8 小时
LOGIC_S 1 使 1 号逻辑开关关闭
TEST_E N$TRAN,N$DONE 测试最后关门条件
TERMINATE 1 所有顾客理发完毕,关门
START 1 模拟一个班
END
6.3 中级 GPSS 语言程序举例
23管理系统模拟与 GPSS语言
MSSV1.0
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 NAME 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
理发店模型输出结果
24管理系统模拟与 GPSS语言
MSSV1.0
例 6.4 一露天矿模拟模型
已知一露天矿剥离和采煤分别由二台电铲来完成。 一台以 4 (2)
分钟间隔时间装满一车矿石,另一台以 5 (2) 分钟间隔时间装满一车煤
,卡车各运行 15 分钟后分别卸入矿石场和储煤仓,卸矿时间为 8分钟,
矿石场和储煤仓的容量分别为 20000 吨及 2000 吨,矿石卡车载重量为
35 吨,而运煤卡车载重量为 18 吨。 模拟这一过程,并记录矿石和煤的
产量。
模型, 动态实体 ---- 运矿石卡车和运煤卡车
存储器 ----- 1 号 矿石场
2 号 储煤仓
保存值 ------ 1 号 产煤量
2 号 矿石剥离量
6.3 中级 GPSS 语言程序举例
25管理系统模拟与 GPSS语言
MSSV1.0
储煤仓
储矿场
5/2
4/2
35 吨
18 吨
15
20000
2000
模型示意图
26管理系统模拟与 GPSS语言
MSSV1.0
例 6.4 一露天矿模拟模型
本例题用三个方式编程:
1,详细方法 即每一步都表示清楚 (程序 A)
2,使用流动实体的参数 (程序 B)
3,使用 SNA 码简化程序 (程序 C)
27管理系统模拟与 GPSS语言
MSSV1.0
一般方法 (A)
1 SIMULATE (程序 A)
2 1 STORAGE 2000
3 2 STORAGE 20000
4 1 GENERATE 5,2 装煤
5 2 ADVANCE 15
6 3 ENTER 1,18
7 4 ADVANCE 8 卸煤
8 5 SAVEVALUE 1+,18 统计煤产量
9 6 LEAVE 1
10 7 TERMINATE
11 8 GENERATE 4,2 装矿石
12 9 ADVANCE 15
13 10 ENTER 2,35
14 11 ADVANCE 8 卸矿石
15 12 SAVEVALUE 2+,35 统计矿石产量
16 13 LEAVE 2
17 14 TERMINATE
18 15 GENERATE 480
19 16 TERMINATE 1
20 START 1
21 END
28管理系统模拟与 GPSS语言
MSSV1.0
使用参数 (B-1)
将代号或码用 SNA 表示, 一号参数表示煤( 1)或矿石车( 2),
二号参数表示载重量。
1 SIMULATE (程序 B)
2 1 STORAGE 2000
3 2 STORAGE 20000
4 1 GENERATE 5,2 装煤
5 2 ASSIGN 1,1
6 3 ASSIGN 2,18
7 4 ADVANCE 15
8 5 ENTER P$1,P$2
9 6 ADVANCE 8 卸煤
10 7 SAVEVALUE P$1+,P$2 统计煤产量
11 8 LEAVE P$1
12 9 TERMINATE
29管理系统模拟与 GPSS语言
MSSV1.0
13 10 GENERATE 4,2 装矿石
14 11 ASSIGN 1,2
15 12 ASSIGN 2,35
16 13 ADVANCE 15
17 14 ENTER P$1,P$2
18 15 ADVANCE 8 卸矿石
19 16 SAVEVALUE P$1+,P$2 统计矿石产

20 17 LEAVE P$1
21 18 TERMINATE
22 19 GENERATE 480
23 20 TERMINATE 1
24 START 1
25 END
使用参数 (B-2)
30管理系统模拟与 GPSS语言
MSSV1.0
利用 SNA 码 (C)利用 SNA 码将相同程序段合并可简化程序,
1 SIMULATE (程序 C)
2 1 STORAGE 2000
3 2 STORAGE 20000
4 1 GENERATE 5,2 装煤
5 2 ASSIGN 1,1
6 3 ASSIGN 2,18
7 4 TRANSFER,CON
8 5 GENERATE 4,2 装矿石
9 6 ASSIGN 1,2
10 7 ASSIGN 2,35
11 8 CON ADVANCE 15
12 9 ENTER P$1,P$2
13 10 ADVANCE 8 卸车
14 11 SAVEVALUE P$1+,P$2 统计产量
15 12 LEAVE P$1
16 13 TERMINATE
17 14 GENERATE 480
18 15 TERMINATE 1
19 START 1
20 END
31管理系统模拟与 GPSS语言
MSSV1.0
例 6.5 一零件加工过程的模拟
有一零件加工车间,主要是进行零件的钻孔工
作。零件的到达间隔时间为 10± 3分钟,但零件在进
入车间后应先进行打毛刺等光滑处理,然后在进行
画线工作,最后才能钻孔。上述每道工序都可能进
行排队,我们分别用 1,2,3表示这 3个队列。为了
简单起见,我们仍假设所有的过程都呈均匀分布,
其均值和方差分别为:
打毛刺等光滑处理 10± 2 分钟
画线 9± 3 分钟
钻孔 8± 1 分钟
6.3 中级 GPSS 语言程序举例
32管理系统模拟与 GPSS语言
MSSV1.0
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
TERMINATE 1
START 50
END
初步结构
33管理系统模拟与 GPSS语言
MSSV1.0
SIMULATE
MEAN EQU 1
DEF EQU 2
MEAN FUNCTION P$1,D3 服务间隔时间均值
1,10/2,9/3,8
DEF 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,BACK 循环判断
TERMINATE 1
START 50
END
使用标准数字属性码简化程序
34管理系统模拟与 GPSS语言
MSSV1.0
课 后 练 习
1,读懂上述例题
2,上机练习及实验
3,改动部分参数,多次实验,分析结果
4,若煤仓或储矿场满了怎么办?