第1章 GPSSWorld 语言概述 本章主要内容: 1. GPSSWorld 语言的基本格式 2. GPSSWorld 程序的基本组成
3-1 GPSSWorld 语言的基本格式 GPSSWorld 语言程序块的基本格式: 地址 操作码 数据场 注解 语句注释,可有可无 地址 操作码 数据场 注解 语句注释,可有可无 由多个数据组成, 各数据间用逗号分开 操作码即模块或语句名称, 可用前四个字母简写 地址即语句号,最多由五个字母, 数字组成, 必须由字母打头. 从第一列开始. 必要时才用,在GPSS World中不是必须的。
语句模块举例: 例如一个延时模块应书写如下: 3-1 GPSSWorld 语言的基本格式 地址 操作码 数据场 注解 地址 操作码 数据场 注解 F5 ADVANCE 5, 2 ;服务时间 或可写成: F5 ADVA 5, 2 ;服务时间 ADVA 5, 2 ;服务时间
3-2 GPSSWorld 程序的基本组成 GPSS 模拟程序 : SIMULATE 控制语句: 控制模拟过程不是必须的 LINE EQU 1 JOE EQU 1 GENERATE 18,6 QUEUE LINE SEIZE JOE DEPART LINE ADVANCE 16,4 RELEASE JOE TERMINATE 1 START 25 END 控制语句: 控制模拟过程不是必须的 定义语句: 定义函数, 实体,变量,开关等 程序语句(模)块: GPSSWorld 语言模块 控制语句:控制模拟过程不是必须的
3-3 GPSSWorld 程序举例 下面给出的程序是某机械加工中心系统的模拟模型。该机械加工中心有 9 名技工和 4 台同样的机器, 每台机器需二位技工来操作。 当一件工作到达时, 先由一位职员进行记录工作, 然后将工作交给一位技工进行准备工具等工作, 当加工工作开始时, 第二名技工过来帮助操作机器。 在工作完成之前, 职员应完成记录及收款的工作。 车间每天八小时工作, 但只在前七小时收活, 最后一小时只完成已收下的活。 其它参数及其所编程序如下: (1) 职员做记录工作时间为 4 ±2 分钟, 收尾工作时间为 9±4 分钟。 (2) 加工工作到达间隔时间为 15 ±3 分钟。 (3) 技工准备工具时间为 10 ±3 分钟, 操作机械时间为 55±30 分钟。 (4) 以上时间均为均匀分布。
控制语句 定义语句 OPER STORAGE 9 MACH STORAGE 4 1 FUNCTION RN$2,C2 工件到达间隔时间 (12 - 18) 0,720/1,1081 2 FUNCTION RN$3,C2 职员初步记录时间 (2 - 6) 0,120/1,361 3 FUNCTION RN$4,C2 技工准备工具时间 (7 - 13 ) 0,420/1,781 4 FUNCTION RN$5,C2 机器操作时间 ( 25 - 85 ) 0,1500/1,5101 5 FUNCTION RN$6,C2 职员的最后处理时间 ( 5 - 13 ) 0,300/1,781 定义语句
程序 模块 GENERATE FN$1 工件到达 QUEUE LINE 排总队列 SEIZE CLERK 占用职员 ADVANCE FN$2 登记与记录 RELEASE CLERK 释放职员 ENTER OPER, 1 占用一个技工 ADVANCE FN$3 技工准备工具 ENTER OPER, 1 占用第二个技工 ENTER MACH, 1 占用一台机器 ADVANCE FN$4 加工工件 LEAVE MACH, 1 释放机器 LEAVE OPER, 2 释放二个技工 SEIZE CLERK 占用职员 ADVANCE FN$5 最后记录 RELEASE CLERK 释放职员 DEPART LINE 离开总队列 TERMINATE GENERATE 3600 每班时间 TERMINATE 1 START 7,NP 七小时关门 GENERATE 3601 一小时收尾 START 1 END 程序 模块
3-3 GPSSWorld 程序举例 按研究目的的要求我们利用模拟求解平均每件工作周转时间不能超过 1.5 小时的情况下, 求出机械与技工的最佳组合方案。读者可从中看到 GPSSWorld 语言和程序的基本格式和组成。因为 GPSSWorld 程序是 ASCII 文件,所以可在 WORD 或 EDIT 环境下观察或编辑。
3-4 GPSSWorld 程序框图 GPSSWorld 语言有独特的框图符号: 产生活动实体 占用设施 释放设施 排队 离队 离开系统 GENERATE SEIZE QUEUE 排队 RELEASE 释放设施 离队 DEPART TERMINATE 离开系统 ADVANCE 延时
3-4 GPSSWorld 程序框图 GENERATE 18,6 QUEUE LINE SEIZE JOE DEPART LINE ADVANCE 16,4 RELEASE JOE TERMINATE 1 18, 6 GENERATE QUEUE LINE SEIZE JOE DEPART LINE ADVANCE 16, 4 JOE RELEASE TERMINATE 1
3-5 GPSS World的安装与运行 直接点击student.exe在Windows下按提示进行安装,安装完后可以直接运行。
3-6 GPSSWorld 语言的基本模块 基本模块的分类: 管理系统内设备及人的分类: 1. 活动(流动)实体 系统中移动的人, 设备等 2. 资源实体 设施 系统中固定的人, 设备等 存储器 可存储动态实体的仓库, 物料场, 煤仓等 逻辑开关 只具有两种工作状态的开关型设备 队列 需排队等候之处 3. 统计实体 表 各类统计表 基本模块的分类: 1. 与活动(流动)实体有关的模块 5. 与逻辑开关有关的模块 2. 与设施有关的模块 6. …….. 3. 与队列有关的模块 4. 与存储器有关的模块
3.6.1 与活动实体有关的模块 1. GENERTATE 产生活动实体的模块 格式: GENERTATE A, B, C, D, E, F, G A 到达间隔时间均值 B 到达间隔时间方差, 缺省为零 C 第一个动态实体产生的时间 D 应产生动态实体的总数 E 被产生动态实体的优先级, 1-- 127 F 实体携带参数的个数, 缺省为 12,GPSSWorld中已取消 G 参数类型, 缺省为半字参数 GPSSWorld中已取消 例: GENERATE 5, 3, 25 在第25 时间单位产生第一个活动实体 GENERATE 5, 2, , ,15 优先级为 15 GENE 18, 4, , 25 共产生 25 个活动实体
3.6.1 与活动实体有关的模块 格式: ADVANCE A, B A 延迟时间均值 B 延迟时间方差 例: ADVANCE 18, 6
3.6.1 与活动实体有关的模块 3. TRANSFER 活动实体的转向模块。 TRANSFER A,B,C,D 其中: A 转向方式, 有5种情况: (1) , 逗号为无条件转向B域给出的地址。 (2) BOTH 先企图进入B域地址,不成就去C域地址, 两个地址都不通,就保留在此模块中。 (3) PICK 任去B到C之间的任意模块。 (4) ALL 类似于BOTH模式,只是地址包括从B到C。 (5) 小数 表示去C域的百分比,1-A 为去B址的百分比, 通路是随机的。 B,C 为按 A 域条件应去的地址号,D为ALL模式的增量
3.6.1 与活动实体有关的模块 例: 无条件转向语句: TRANSFER , L1 ;无条件转向 L1 有条件转向语句: TRANSFER BOTH, L1, L2 表示先去L1, 不行就去 L2,若 L1与L2都出不去,则活动实体只能在本模块中等候。
3.6.1 与活动实体有关的模块 格式: TERMINATE A A 离开系统的活动实体的个数 例: TERMINATE 1
3.6.1 与活动实体有关的模块 5. ASSIGN 活动实体参数的赋值语句。 ASSIGN A, B 其中: A 需要赋值或改变实体参数的参数号,A值后部可加写 +, - 号, A 域中的 +, - 号表示从原有参数中加上或减去B (A可以是变量名或正整数) B 需要赋给实体参数A或从参数A中+或-的数值
3.6.1 与活动实体有关的模块 下面是一个汽车装卸过程的程序示例 GENERATE 18, 6 ;产生实体 ASSIGN loadvalue,25 ;loadvalue参数为汽车载重量, 赋值 25 吨 ASSIGN isempty, 2 ;isempty参数,重车标记 1为空车, 2为重车 : (程序的其他过程) . ASSIGN loadvalue+, 10 ;汽车载重量增加10吨变为35吨 : ; (程序的其他过程) ENTER Stock1, 35 ;卸入Stock1号矿仓 ASSIGN loadvalue, 0 ;汽车载重量变为0吨 ASSIGN isempty,1 ;变成空车 : TERMINATE
3.6.2 与设施有关的模块 1. SEIZE 活动实体获得设施控制权的模块 格式: SEIZE A A 活动实体所要控制的设施号或名称 SEIZE JON
2. RELEASE 活动实体释放(离开)设施的模块 3.6.2 与设施有关的模块 2. RELEASE 活动实体释放(离开)设施的模块 格式: RELEASE A A 被释放(离开)设施的号或名称 例: RELEASE 1 RELEAE JON RELE 5
3.6.3 与队列有关的模块 1. QUEUE 活动实体排队的模块 格式: QUEUE A, B A 活动实体所要排的队号或名称 缺省时为 1 例: QUEUE 2 QUEUE LINE QUEUE 3, 15
3.6.3 与队列有关的模块 2. DEPART 活动实体离开队列的模块 格式: DEPART A, B A 活动实体所在的队列号或名称 例: DEPART 2 DEPART LINE DEPART 3, 15
3.6.4 与存储器有关的模块 1. ENTER 活动实体进入存储器的模块 格式: ENTER A, B B 进入 A 存储器后, 存储器增加的存量, 缺省时为 1. 例: ENTER 2 ENTER STORE, 25 ENTE S2, 2
3.6.4 与存储器有关的模块 2. LEAVE 活动实体离开某存储器的模块 格式: LEAVE A, B A 要离开的存储器代码或编号 例: LEAVE 2 LEAVE STORE, 25 LEAV S2, 2
基本模块小结 与活动实体有关的模块: 与队列有关的模块: 与存储器有关的模块: 与设施有关的模块: 1. GENERATE 2. TERMINATE 3. ADVANCE 4. ASSIGN 5. TRANSFER 与队列有关的模块: 1. QUEUE 2. DEPART 与存储器有关的模块: 1. ENTER 2. LEAVE 与设施有关的模块: 1. SEIZE 2. RELEASE
3.7 GPSSWorld 语言的控制语句 (在GPSSWorld中,以下语句由系统菜单产生执行) 1. SIMULATE 执行模拟 控制语句是用来控制模拟过程的, 常用的语句如下: (在GPSSWorld中,以下语句由系统菜单产生执行) 1. SIMULATE 执行模拟 2. START A, B, C, D 控制模拟状态 A 使模拟终止的动态实体计数 B 从多少个活动实体开始打印统计报告 C 生成输出报告的计数间隔 D 输出动态实体的链状态 3. halt 终止模拟 4. RESET 清除积累统计
3.8 GPSSWorld 语言基本模块编程举例 1.模拟的终止 例一: 利用 TERMINATE 和 START 控制 : END TERMINATE 2 TERMINATE 1 START 50
3.8 GPSSWorld 语言基本模块编程举例 例二: 利用时间控制 : GENERATE 18, 6 TERMINATE 1 : 例二: 利用时间控制 GENERATE 18, 6 : TERMINATE GENERATE 3600 TERMINATE 1 一个程序中可有多个 GENERATE模块
3.8 GPSSWorld 语言基本模块编程举例 例三: 利用终止语句控制 程序中需要终止的地方就转向 TM 语句 例三: 利用终止语句控制 GENERATE 18, 6 : TERMINATE TM TERMINATE 1000 START 1000 END 程序中需要终止的地方就转向 TM 语句 GOTO
3.8 GPSSWorld 语言基本模块编程举例 例四: RESET 的使用 设施2 队列 1 队列 1 GENERATE 18, 6 : TERMINATE 1 START 10 RESET START 100 END 例五: QUEUE 的使用 : : QUEUE 1 QUEUE 1 SEIZE 2 SEIZE 2 DEPART 1 ADVANCE 5 ADVANCE 5 RELEASE 2 RELEASE 2 DEPART 1 设施 2 设施2 队列 1 队列 1
3.9 GPSS 的标准输出 GPSS 标准输出的组成: 1. 扩充程序表 2. 模拟钟及模块计数表 (BLOCK) 3. 各类统计表 1) 设施统计 (FACILITY) 2) 队列统计 (QUEUE) 3) 存储器统计 (STORAGE) 4) 开关状态统计 ( SWITCH) 5) 模块链统计 6) 用户表 7) 内存变量表
模拟钟及模块计数 RELATIVE CLOCK 144000 ABSOLUTE CLOCK 144000 BLOCK COUNTS BLOCK CURRENT TOTAL BLOCK CURRENT TOTAL BLOCK CURRENT TOTAL 1 0 15 2 0 15 3 0 15 4 0 19054 5 0 18683 6 0 263 7 0 371 8 0 188 9 0 183 10 0 446 11 0 446 12 0 446 13 0 446 14 0 188 15 0 188 16 0 188 17 0 634 18 0 634 19 0 5 20 0 5 21 0 5 22 0 634 23 0 634 24 0 634 25 0 634 26 0 634 27 0 634 28 0 634 29 15 634 30 0 619 31 0 619 32 0 619 33 0 619 34 0 619 35 0 619 36 0 619 37 0 18420 38 0 18420 39 0 0 40 1 14400 41 0 14399 42 0 10868 43 0 10711 44 0 10569 45 0 10421 46 0 465 47 0 465 48 31 465 49 0 434 50 0 434 51 0 434 52 0 434 53 0 434 54 0 14368
设施与存储器统计 设施 储煤仓 FACILITY AVERAGE NUMBER AVERAGE SEIZING PREEMPTING UTILIZATION ENTRIES TIME/TRAN TRANS.NO. TRANS.NO. 1 0.01 188 5.19 2 0.02 446 5.63 储煤仓 STORAGE CAPACITY AVERAGE AVERAGE ENTRIES AVERAGE CURRENT MAXIMUM CONTENT UTILIZ. TIME/TR CONTENT CONTENT 1 120 97.00 0.81 28474 494.60 109 120 2 1165 56.00 0.05 26474 306.63 42 1165 3 24000 31.00 0.00 26432 173.53 32 616 4 1937 1752.00 0.90 28365 8894.37 1891 1891 5 300 9.00 0.03 26432 50.00 0 280
队列与变量统计 队列: QUEUE MAXIMUM AVERAGE TOTAL ZERO PERC. AVERAGE $AVERAGE TABLE CURRENT CONTENT CONTENT ENTRIES ENTRIES ZERO TIME/TR TIME/TR NUMBR CONTENT 1 14 0.01 188 80 42.55 7.76 13.50 0 2 10 0.02 446 204 45.74 7.20 13.26 0 3 15 10.71 634 41 6.47 2432.53 2600.72 15 变量: CONTENTS OF (NONZERO) FULLWORD SAVEVALUES XF LOC VALUE LOC VALUE LOC VALUE LOC VALUE 11 26474 12 26432 13 26400 16 28474
开关状态统计 逻辑开关 LOGIC SWITCH - SET (ON) STATUS SWITCH NAME NAME NAME NAME NAME NAME NAME NAME NAME 1 2 7 8 9
实验报告的书写 1. 格式 1)留出装订位置 2)上,下,左,右应留出边 3)图,表要有号,四周要留空
实验报告的书写 2. 内容 一. 问题的提出 五. 拟合优度检验 二. 数据的收集 1)直观检验 三. 分布族的选择 2)X2检验 1)点统计法 2)柱状图法 3)概论图法 4)结论 四. 参数的确定 五. 拟合优度检验 1)直观检验 2)X2检验 六. 结论
上机前准备工作 1. 准备好数据. 2. 准备好程序, 在纸上写好. 3. 准备好上机计划和步骤 4. 准备好记录的纸和笔 绘出的图若不能打印出来, 应手工描绘出来, 写入实验报告。