1管理系统模拟与 GPSS语言
JLQV1.0
第 8章 高级 GPSS 程序设计
本章将介绍高级 GPSS模块、较复杂系统模拟举例,
具体内容如下:
8.1 高级 GPSS 模块
8.1.1 制表模块 TABLE,TABULATE 和 QTABLE
8.1.2 表的统计与输出举例
8.1.3 活动实体的复制与装配模块
8.1.4 用户链及其模块 LINK 与 UNLINK
8.1.5 GPSS语言特性模块
8.2 一具有八条线路的电话交换台的模拟
8.3 利用管理系统模拟模型进行最优化分析
2管理系统模拟与 GPSS语言
JLQV1.0
第 8章 高级 GPSS 程序设计
8 - 1 高级 GPSS 模块
8.1.1 制表模块 TABLE,TABULATE 和 QTABLE
制表模块是一种分析数据的工具,其功能是对某个参数进行分组
频率分析 ( Grouped Frequency Distribution ), 这种方法是把要分
析的数据按时间范围分成若干区间,成为分类区间 ( CLASS INTERVAL )
然后再对各区间中的数据进行频率分析, 其结果可用来绘制柱状图。
1,TABLE 表定义语句
一个程序中可同时使用多个制表模块,因此在程序之前要定义
各表的表号及表的格式, TABLE 就是用来定义表的要素的。
3管理系统模拟与 GPSS语言
JLQV1.0
8 - 1 高级 GPSS 模块
TABLE 语句格式
表号 TABLE A,B,C,D
其中, A 需要统计数据的 SNA 码
B 分类区间的第一个边界点 ( -,B )
C 区间的宽度
D 所分区间的总数,包括最左和最右的区间
例 1 TABLE M$1,5,5,6
一号表是统计 M$1 ( 动态实体的时令 =当前时钟 - 产生时间 ),第一
边界点是 5,区间宽度为 5,共分 6 个区间,即
( -,5 ),( 6,10 ),( 11,15 ),( 16,20 ),( 21,25 ),( 26,+ )
?
??
4管理系统模拟与 GPSS语言
JLQV1.0
2,TABULATE 统计模块
当动态实体进入 TABULATE 模块后,对由 TABLE 定义的表参数
进行统计。 其格式如下,
TABULATE A,B
其中,
A 要统计表的名称或表号
B 对要统计的参数进行加权的加权系数,缺省时为 1
例,
TABULATE 2
TABULATE P$3,10
8 - 1 高级 GPSS 模块
5管理系统模拟与 GPSS语言
JLQV1.0
3,QTABLE 排队等待时间分布表定义
QTABLE 是用来定义排队等待时间分布表的。其格式
与 TABLE 模块相似:
表号 QTABLE A,B,C,D
其中, A 需要统计数据的队列名称或队列号
B 分类区间的第一个边界点 ( -,B )
C 区间的宽度
D 所分区间的总数,包括最左和最右的区间
它与 TABLE 的不同是它不需要 TABULATE 模块的
统计,它是自动统计并输出。
?
8 - 1 高级 GPSS 模块
6管理系统模拟与 GPSS语言
JLQV1.0
8.1.2 表的统计与输出举例
SIMULATE
1 TABLE C$1,600,1200,10 定义表一统计动态实体产生时间
GENERATE 100,50
TABULATE 1 进行表一规定的统计
SEIZE 1
ADVANCE 90,50
RELEASE 1
TERMINATE
GENERATE 10000
TERMINATE 1
START 1
END
例 8.1 动态实体产生时间统计
7管理系统模拟与 GPSS语言
JLQV1.0
8.1.2 表的统计与输出举例
TABLE NO,1
ENTRIES IN TABLE MEAN ARGUMENT STANDARD DEVIATION SUM OF ARGUMENTS
99 4933.94 2869.04 488460.0
UPPER OBSERVED PER CENT CUMULATIVE CUMULATIVE MULTIPLE DEVIATION
LIMIT FREQUENCY OF TOTAL PERCENTAGE REMAINDER OF MEAN FROM MEAN
600 5 5.05 5.05 94.95 0.12 -1.51
1800 13 13.13 18.18 81.82 0.36 -1.09
3000 14 14.14 32.32 67.68 0.61 -0.67
4200 11 11.11 43.43 56.57 0.85 -0.26
5400 11 11.11 54.55 45.45 1.09 0.16
6600 11 11.11 65.66 34.34 1.34 0.58
7800 13 13.13 78.79 21.21 1.58 1.00
9000 12 12.12 90.91 9.09 1.82 1.42
10200 9 9.09 100.00 0.00 2.07 1.84
REMAINING VALUES ARE ZERO
表一的输出
8管理系统模拟与 GPSS语言
JLQV1.0
表输出中
复均值
MULTIPLE OF MEAN = UPPER LIMIT / MEAN
如, 0.12 = 600 / 4933
均值方差
DEVIATION FROM MEAN = (UPPERLIMIT - MEAN) / ST,DEV.
如, -1.51 = ( 600 - 4933 ) / 2869
8.1.2 表的统计与输出举例
9管理系统模拟与 GPSS语言
JLQV1.0
例 8.3 某公共汽车站的模拟
某公共汽车站每 15分钟来一辆公共汽车,有 ± 1分
钟的误差。每辆汽车有 30个座位,汽车到站时车上一
般已经有 30± 20 个乘客,每次下车大约有 4± 3人。欲
上车的乘客到达汽车站的间隔时间呈指数分布,均值
为 24秒。如果一辆汽车到站,因上满乘客而上不去的
人就会离开汽车站。上满或无人下车时汽车就驶离车
站。每个乘客下车需要时间是 10± 2秒,上车用 15± 5
秒。先下车,后上车,上下只能一个一个的进行。试
模拟 25辆汽车运行的情况。
8.1.2 表的统计与输出举例
10管理系统模拟与 GPSS语言
JLQV1.0
8.1.2 表的统计与输出举例
表 8.1 例 8.3 模拟模型的各类实体、函数、逻辑开关及表
说明
实体类型 实体代码 实体名称 说明
活动实体 汽车
乘客
队列 1 LINE 乘客等候队列
逻辑开关 1 BUS 汽车门开关
函数 FN$1 指数分布函数
FN$2 汽车到站前车内已有顾客数
FN$3 每辆汽车下车的人数
表 1 对汽车前排队等待时间的统计
2 对没有上去车而离开车站的人的统计
11管理系统模拟与 GPSS语言
JLQV1.0
8.1.2 表的统计与输出举例
SIMULATE
LINE EQU 1 乘客队列
BUS EQU 1 汽车门开关
1 FUNCTION RN$1,C24 指数分布
0,0/.1,.104/.2,.222/.3,.355/.4,.509/.5,.69/.6,.915/.7,1.2/.75,1.38
.8,1.6/.84,1.83/.88,2.12/.9,2.3/.92,2.52/.94,2.81/.95,2.99/.96,3.2
.97,3.5/.98,3.9/.99,4.6/.995,5.3/.998,6.2/.999,7/.9998,8
2 FUNCTION RN$2,C2 汽车到达时车内顾客数
0,10/1,51
3 FUNCTION RN$3,C2 汽车到达时应下车人数
0,1/1,8
1 QTABLE LINE,0,100,15 1 号队列等待时间统计
2 TABLE X$1,0,10,10 因人多而走的人数统计
12管理系统模拟与 GPSS语言
JLQV1.0
* 乘客上车过程
GENERATE 24,FN$1 乘客到达
QUEUE LINE 乘客排队
GATE_LS BUS 车是否开门?
DEPART LINE
TEST_L X$2,30,GOA 当车内人数大于 30,走人
GETON ADVANCE 15,5 上车
SAVEVALUE 2+,1 车内人数加 1
TERMINATE
GOA SAVEVALUE 1+,1 累计不上车而走的乘客数
TERMINATE
8.1.2 表的统计与输出举例
13管理系统模拟与 GPSS语言
JLQV1.0
* 汽车到达及下车过程
GENERATE 900,60 汽车到达
SAVEVALUE 2,FN$2 起初车内顾客数
ASSIGN 1,FN$3 下车人数,做循环计数
NEXT ADVANCE 10,2 乘客下车过程
SAVEVALUE 2-,1
LOOP 1,NEXT
LOGIC_S BUS 开门上车
TEST_E Q$LINE,0 已无人排队
TEST_E W$GETON,0 已无人上车
TABULATE 2 统计 2号表
SAVEVALUE 1,0 统计器再次置零
LOGIC_R BUS 关门
TERMINATE 1 离开
START 25
END
8.1.2 表的统计与输出举例
14管理系统模拟与 GPSS语言
JLQV1.0
排队等待时间分布统计表
8.1.2 表的统计与输出举例
ENTRIES IN TABLE MEAN ARGUMENT STANDARD DEVIATION SUM OF ARGUMENTS
953 444.03 267.64 423162.0
UPPER OBSERVED PER CENT CUMULATIVE CUMULATIVE MULTIPLE DEVIATION
LIMIT FREQUENCY OF TOTAL PERCENTAGE REMAINDER OF MEAN FROM MEAN
0 17 1.78 1.78 98.22 0.00 -1.66
100 120 12.59 14.38 85.62 0.23 -1.29
200 82 8.60 22.98 77.02 0.45 -0.91
300 88 9.23 32.21 67.79 0.68 -0.54
400 130 13.64 45.86 54.14 0.90 -0.16
500 104 10.91 56.77 43.23 1.13 0.21
600 109 11.44 68.21 31.79 1.35 0.58
700 92 9.65 77.86 22.14 1.58 0.96
800 107 11.23 89.09 10.91 1.80 1.33
900 77 8.08 97.17 2.83 2.03 1.70
1000 26 2.73 99.90 0.10 2.25 2.08
1100 1 0.10 100.00 0.00 2.48 2.45
REMAINING VALUES ARE ZERO
15管理系统模拟与 GPSS语言
JLQV1.0
因人多而没上车的人员分布统计表
ENTRIES IN TABLE MEAN ARGUMENT STANDARD DEVIATION SUM OF ARGUMENTS
25 19.28 20.63 482.0
UPPER OBSERVED PER CENT CUMULATIVE CUMULATIVE MULTIPLE DEVIATION
LIMIT FREQUENCY OF TOTAL PERCENTAGE REMAINDER OF MEAN FROM MEAN
0 8 32.00 32.00 68.00 0.00 -0.93
10 5 20.00 52.00 48.00 0.52 -0.45
20 0 0.00 52.00 48.00 1.04 0.03
30 1 4.00 56.00 44.00 1.56 0.52
40 5 20.00 76.00 24.00 2.07 1.00
50 6 24.00 100.00 0.00 2.59 1.49
REMAINING VALUES ARE ZERO
8.1.2 表的统计与输出举例
16管理系统模拟与 GPSS语言
JLQV1.0
8.1.3 活动实体的复制与装配模块
1,SPLIT 模块
SPLIT 模块是将进入此模块的活动实体复制若干个子体出来。其基本
格式为:
地址码 SPLIT A,B,C,D
其中 A 产生复制的活动实体的数量;
B 复制的活动实体去往的地址;
C 为复制的活动实体各个参数所使用的参数号与类型;
D 分配给每个所复制动态实体 (子体 )的参数数量,若缺省,则
与母体活动实体的相同。
例如:
SPLIT 3,ADD,2
是表示产生 3个复制的动态实体,与母体形成同一装配集合,所复制的
子体转去地址为 ADD 模块,复制活动实体的系列数存放在 2号参数中,
17管理系统模拟与 GPSS语言
JLQV1.0
2,ASSEMBLE模块
它的作用是将两个或多个同一装配集的动态实体装配
成一个动态实体。其基本格式为:
地址码 ASSEMBLE A
其中 A 是要装配的活动实体的数量。
8.1.3 活动实体的复制与装配模块
18管理系统模拟与 GPSS语言
JLQV1.0
3,MATCH模块
其作用是使两个应匹配的动态实体匹配起来。其基
本格式如下:
地址码 MATCH A
其中 A 为应与其匹配的活动实体所在程序块的
地址码。
8.1.3 活动实体的复制与装配模块
19管理系统模拟与 GPSS语言
JLQV1.0
4,GATHER模块
GATHER模块的功能是聚集同一装配集的动态实体,
只有当它聚集到其 A 域所指明的活动实体数目后,才允
许活动实体继续向前移动。其基本格式为:
GATHER A
其中 A 为被聚集的活动实体的数量。
8.1.3 活动实体的复制与装配模块
20管理系统模拟与 GPSS语言
JLQV1.0
例 8.4
一理发店只有一名理发师,与我们在前面多次举例相
同。在这个理发店中,顾客除了可以理发外还可以剪修指
甲。而且剪修指甲可以在理发前、理发时或理发后进行。
如果我们假设所有的顾客都即理发又剪修指甲,在离开理
发店之前,这二件事都必须完成,试模拟这一过程。
SIMULATE
LINE1 EQU 1
LINE2 EQU 2
ANN EQU 1
JON EQU 2
8.1.3 活动实体的复制与装配模块
21管理系统模拟与 GPSS语言
JLQV1.0
GENERATE 18,6 顾客到达
SPLIT 1,ANN 复制子体去 ANN修指甲
QUEUE LINE1 排队理发
SEIZE JON
DEPART LINE1
ADVANCE 10,4
RELEASE JON 理发结束
HERE MATCH THERE 是否已经修指甲?
TRANSFER,FINAL 二件服务都完成后,接受测试
ANN QUEUE LINE2 修指甲过程
SEIZE ANN
DEPART LINE2
ADVANCE 14,5
RELEASR ANN 修指甲结束
THERE MATCH HERE 是否已经理发完毕?
FINAL ASSEMBLE 2 测试是否二件服务都完成
TERMINATE 1 离开理发店
START 25
END
22管理系统模拟与 GPSS语言
JLQV1.0
例 8.5
某公司销售部收到客户一份订货单后,按常规销售
部一方面应通知客户汇来货款支票,另一方面要通知生
产部门准备货品。待汇款到达后再进行包装成箱,并办
理发货手续,通知来车提货。请模拟这一过程。
8.1.3 活动实体的复制与装配模块
23管理系统模拟与 GPSS语言
JLQV1.0
SIMULATE
SHOP EQU 1
PACK EQU 2
GENE 24,8 定货单到达
SPLIT 1,COOP 复制一份定货单去生产部配货
ADVA 32,8 销售部对定货单的处理
ADD1 MATCH ADD2 等待生产部配货结果
ADVA 24,4 办理装箱货卡和货品发票
OUT ASSEMB 2 生产部与销售部的工作全部完成
TERM 1 出厂
COOP QUEU 1 配货过程
SEIZ SHOP
DEPA 1
ADVA 18,6
RELE SHOP 配货员配货完毕
ADD2 MATCH ADD1 等待销售部货款结果
QUEU 2 排队包装
SEIZ PACK 包装过程
DEPA 2
ADVA 15,5
RELE PACK 完成包装
TRAN,OUT 到厂部汇总
START 100
END
24管理系统模拟与 GPSS语言
JLQV1.0
8.1.4 用户链及其模块 LINK 与 UNLINK
1,LINK
将活动实体放入用户链上的模块,同时对用户链的排
队原则进行定义。其基本格式如下:
LINK A,B,C
其中 A 用户链号
B 活动实体在用户链上的排序原则,有三种选
择:
LIFO 后进先出
FIFO 先进先出
数字 按给定数字所表示的活动实体参数数
值进行排序
C 活动实体将进入的模块
25管理系统模拟与 GPSS语言
JLQV1.0
2,UNLINK
用来将活动实体从用户链上取出的模块。基本格
式如下:
UNLINK A,B,C,D,E,F
其中 A 用户链号
B 被取出的活动实体要进入的下一个模块号
C 被取出的活动实体个数
D 被解脱的活动实体的参数号或,BACK”
E 在用户链上活动实体确定的参数与E域的
参数值比较
F 当前非连接活动实体要进入的下一个模块

8.1.4 用户链及其模块 LINK 与 UNLINK
26管理系统模拟与 GPSS语言
JLQV1.0
例 8.6
某一零件加工系统在生产某一产品时需要三道工序,每
道工序都由不同的机床来完成。现有一车间仅有 3台机床,
每台机床可完成一道工序。但是在每道工序之前排队的零件
并不是按 FIFO的原则接受加工的,而是要按“下一个加工
零件是所有等待加工零件中加工时间最短的零件”的原则进
行选择。模拟这一过程。系统的其他情况和参数如下:
( 1) 零件到达间隔时间均值为 150秒,指数分布。
各机床加工时间的平均值分别为 50,70和 60秒。但是需要
乘以下列随机因素的修正值,各修正值及其概率为,0.5 为
20%,1.0 为 50%,1.5 为 20%,2.0 为 10%。
8.1.4 用户链及其模块 LINK 与 UNLINK
27管理系统模拟与 GPSS语言
JLQV1.0
SIMULATE
MACH1 EQU 1
MACH2 EQU 2
MACH3 EQU 3
1 TABLE M$1,100,600,20
1 FUNCTION P$1,D3
5,10/6,70/7,60
2 FUNCTION RN$2,D4
.2,5/.7,1/.9,1.5/1,2
3 FUNCTION RN$1,C24
0,0/.1,.104/.2,.222/.3,.355/.4,.509/.5,.69/.6,.915/.7,1.2/.75,1.38
.8,1.6/.84,1.83/.88,2.12/.9,2.3/.92,2.52/.94,2.81/.95,2.99/.96,3.2
.97,3.5/.98,3.9/.99,4.6/.995,5.3/.998,6.2/.999,7/.9998,8
1 VARIABLE FN$1*FN$2
8.1.4 用户链及其模块 LINK 与 UNLINK
28管理系统模拟与 GPSS语言
JLQV1.0
8.1.5 GPSS语言特性模块
1.MARK 模块
活动实体的产生时间或 GPSS语言中模拟钟的时间是系统模拟
过程中经常要使用或控制的二个参数。 MARK 模块可以实现改变
活动实体的产生时间或记录当前模拟时间二种功能。其基本格式如
下:
MARK A
其中 A 有二种作用,其一是当 A域缺省时,表示将活动实体的产生
时间改变成模拟钟的当前时间,其二是当 A域给出某个数值时,则
表示要将模拟钟的当前时间存入由 A域给定数值作为代码所表示的
保存值中。比如:
MARK 表示活动实体的产生时间被当前的模拟钟时间所取代
MARK 2 表示将当前模拟钟时间存入 2号参数中
29管理系统模拟与 GPSS语言
JLQV1.0
程序一:
SIMULATE
GENERATE 5
ADVA 10
PRINT C$1,M$1
TERMINATE 1
START 5
END
程序二,
SIMULATE
GENERATE 5
ADVA 10
MARK
PRINT C$1,M$1
TERMINATE 1
START 5
END
8.1.5 GPSS语言特性模块
30管理系统模拟与 GPSS语言
JLQV1.0
2,PRIORITY 模块
活动实体在产生时都带有优先级别的,它是由 GENERATE模
块的 E域定义的,级别从 1到 127,缺省时为 1。如果需要在模拟过
程中改变活动实体的优先级,可以利用 PRIORITY模块来实现。
PRIORITY的基本格式如下:
PRIORITY A,BUFFER
其中,A 为活动实体新的优先级
BUFFER 表示在活动实体的优先级改变后,立即对系统的
当前事件链进行重新排序。
比如:
PRIORITY 8,BUFFER
表示将活动实体的优先级改为 8,然后对系统的当前事件链进行重
新扫描和排序 。
8.1.5 GPSS语言特性模块
31管理系统模拟与 GPSS语言
JLQV1.0
ENERATE 150,FN$3
ASSIGN 1,5
ASSIGN 5,V$1
ASSIGN 1,6
ASSIGN 6,V$1
ASSIGN 1,7
ASSIGN 7,V$1
LINK 1,P$5,PROC1 第 1道工序用户链
PROC1 SEIZE MACH1
ADVANCE P$5
RELEASE MACH1
UNLINK 1,PROC1,1
LINK 2,P$6,PROC2 第 2道工序用户链
PROC2 SEIZE MACH2
ADVANCE P$6
RELEASE MACH2
UNLINK 2,PROC2,1
LINK 3,P$7,PROC3 第 3道工序用户链
PROC3 SEIZE MACH3
ADVANCE P$7
RELEASE MACH3
UNLINK 3,PROC3,1
TABULATE 1
TERMINATE 1
START 1000
END