管理系统仿真管理学院宾宁bn_gdut@163.comGPSS语言概述•GPSS语言的全称是:GeneralPurposeSimulationSystem通用模拟语言•GPSS是目前在离散系统计算机仿真领域使用的最常见的仿真语言之一,它是一种面向过程的仿真语言。理发店系统•单队列,一个理发员,先到先服务,到达间隔和理发时间随机•仿真100个顾客理发的情况GENERATE18,6QUEUELINESEIZEJOEDEPARTLINEADVANCE16,4RELEASEJOETERMINATE1START1001.GPSS语言的基本格式2.GPSS程序的基本组成3.GPSS语言的基本模块4.GPSS控制语句5.GPSS语言的随机变量本章主要内容:GPSS语言概述•GPSS语言程序块的基本格式:•地址操作码数据域注解地址即语句号,最多由五个字母,数字组成,必须由字母打头.从第一列开始.必要时才用操作码即模块或语句名称,反映语句的基本功能和所模拟的过程,可用前四个字母简写数据场,由多个数据组成,各数据间用逗号分开语句注释,可有可无1GPSS语言的基本格式•语句模块举例:例如一个延时模块应书写如下:F5ADVANCE5,2服务时间地址操作码数据场注解或可写成:F5ADVA5,2服务时间ADVA5,21GPSS语言的基本格式每个语句由4部分组成,但通常只用其中的两部分,即操作码和数据域,地址或注释仅在需要时才使用。4部分之间至少用1个空格分开,注意地址码必须从第一列开始输入,操作码必须至少从第二列开始。数据域中每个数据的位置和含义不同,要分别记忆。GPSS模拟程序:SIMULATELINEEQU1JOEEQU1GENERATE18,6QUEUELINESEIZEJOEDEPARTLINEADVANCE16,4RELEASEJOETERMINATE1START25END模拟开始控制语句:开始控制模拟过程,必须写在整个程序的最前面定义语句:定义函数,实体,变量,开关等,应置于模拟程序之前模拟模块部分:GPSS语言模块,是整个程序的主体,反映整个模型的基本过程.模拟结束控制语句:用来控制模拟的长度或模拟终止过程,同时控制部分输出.2GPSS程序的基本组成管理系统内设备及人的分类:1.活动(流动)实体系统中移动的人,设备等2.资源实体:系统中具有资源性能的设备或设施设施系统中可提供服务性质工作的人,设备或设施存储器可存储动态实体或系统元素的设备或设施,如:仓库,物料场,煤仓等逻辑开关只具有两种工作状态的开关型设备队列需排队等候之处3.统计实体:系统中用来进行统计计算的各类工具各类统计表统计的自由变量3GPSS语言的基本模块基本模块的分类1.与活动(流动)实体有关的模块2.与设施有关的模块3.与队列有关的模块4.与存储器有关的模块1.GENERATE:产生活动实体2.TERMINATE:活动实体消失3.ADVANCE:活动实体延时4.ASSIGN:活动实体参数赋值5.TRANSFER:活动实体转向与活动实体有关的模块与活动实体有关的模块1.GENERATE产生活动实体的模块格式:GENERATEA,B,C,D,E,F,GA到达间隔时间均值B到达间隔时间方差,缺省为零C第一个动态实体产生的时间,缺省为模拟钟零时开始经过一个时间间隔A后产生D应产生动态实体的总数,缺省为不限制E被产生动态实体的优先级,1–127,缺省为1F实体携带参数的个数,缺省为12G参数类型,缺省为半字参数GENERATE5,3,25在第25时间单位产生第一个活动实体GENERATE5,2,,,15优先级为15GENE18,4,,25共产生25个活动实体GENERATE18,6QUEUE1SEIZE2DEPART1ADVANCE5RELEASE22.ADVANCE活动实体延时模块格式:ADVANCEA,BA延迟时间均值B延迟时间方差(缺省为0)ADVANCE18,6ADVA25与活动实体有关的模块GENERATE18,6QUEUE1SEIZE2DEPART1ADVANCE5,2RELEASE23.TRANSFER活动实体的转向模块TRANSFERA,B,C其中:A转向方式,有三种情况:,为无条件转向B域给出的地址BOTH先企图进入B域地址,不成就去C域地址,两个地址都不通,就保留在此模块中。小数表示去C域的百分比,1-A为去B址的百分比,通路是随机的B,C为按A域条件应去的地址号与活动实体有关的模块例:无条件转向语句:TRANSFER,L1‘无条件转向L1有条件转向语句:TRANSFER0.75,L1,L2表示75%去L2,25%去L1TRANSFERBOTH,L1,L2表示先去L1,不行就去L2,若L1与L2都出不去,则活动实体只能在本模块中等候•例:仿真有两台加油器的汽车加油站,加油的汽车到达间隔时间为均匀分布,均值为40秒,方差为10秒。到达加油站后先排队等候,再加油,加油服务时间也为均匀分布,均值为80秒,方差为8秒。两台加油器的效率相同,而加油的汽车排一个队。•仿真100台汽车加油的情况。4.TERMINATE活动实体消失模块格式:TERMINATEAA离开系统的活动实体的个数例:TERMINATE1TERMINATE10TERM活动实体离开,但不统计与活动实体有关的模块5.ASSIGN活动实体参数的赋值语句ASSIGNA,B其中:A需要赋值或改变参数的参数号,A值后部可加写+,-号,A域中的+,-号表示从原有参数中加上或减去BB需要赋给参数A或从参数A中+或-的数值与活动实体有关的模块下面是一个汽车装卸过程的程序示例GENERATE18,6,,,,2每个实体有二个参数ASSIGN1,25一号参数为汽车载重量,赋值25吨ASSIGN2,2二号参数为空,重车标记1为空车,2为重车:(程序的其他过程).ASSIGN1+,10汽车载重量变为35吨:(程序的其他过程).ENTER1,35卸入1号矿仓ASSIGN1,0汽车载重量变为0吨ASSIGN2,1变成空车:.TERMINATE•设施:具有服务性质的设备或设施。1.SEIZE活动实体获得设施控制权的模块格式:SEIZEAA活动实体所要控制的设施号或名称例:SEIZE2SEIZEJON与设施有关的模块SIMULATEGENERATE18,6QUEUE1SEIZE2DEPART1ADVANCE5RELEASE22.RELEASE活动实体释放(离开)设施的模块格式:RELEASEAA被释放(离开)设施的号或名称例:RELEASE1RELEAEJONRELE5与设施有关的模块GENERATE18,6QUEUE1SEIZE2DEPART1ADVANCE5RELEASE2格式:QUEUEA,BA活动实体所要排的队号或名称B活动实体排队后,队长所增加的量.缺省时为1QUEUE2QUEUELINEQUEUE3,15活动实体排队的模块与队列有关的模块格式:DEPARTA,BA活动实体所在的队列号或名称B活动实体离开队列后,队长减少的量,缺省时为1.DEPART2DEPARTLINEDEPART3,15活动实体离开队列的模块与队列有关的模块GENERATE18,6QUEUE1SEIZE2DEPART1ADVANCE5RELEASE2•存储器:有存储功能的固定实体,需要有一定的容量,,存储器的容量要通过定义语句事先定义。•活动实体进入某个存储器的模块格式:ENTERA,BA进入存储器的号(存储器的容量应事先定义)B进入A存储器后,存储器增加的量,缺省时为1ENTER2进入2号存储器,存储量增加1ENTERSTORE,25进入store存储器,存储量增加25ENTES2,2进入s2存储器,存储量增加2与存储器有关的模块活动实体离开某存储器的模块格式:LEAVEA,BA离开存储器的号B离开A存储器后,存储器减少的量,缺省时为1.LEAVE2LEAVESTORE,25LEAVS2,2与存储器有关的模块•例:仿真有两台加油器的汽车加油站,加油的汽车到达间隔时间为均匀分布,均值为40秒,方差为10秒。到达加油站后先排队等候,再加油,加油服务时间也为均匀分布,均值为80秒,方差为8秒。两台加油器的效率相同,而加油的汽车排一个队。•仿真100台汽车加油的情况。(用存储器实现)与活动实体有关的模块:1.GENERATE2.TERMINATE3.ADVANCE4.ASSIGN5.TRANSFER与设施有关的模块:1.SEIZE2.RELEASE与队列有关的模块:1.QUEUE2.DEPART与存储器有关的模块:1.ENTER2.LEAVE基本模块小结控制语句是用来控制模拟过程的,常用的语句如下:1.SIMULATE执行模拟,总是放在程序的最前面,表示程序编译以后要立即进行模拟。2.STARTA,B,C,D控制模拟过程的终止或部分输出内容。A使模拟终止的动态实体计数B从多少个活动实体开始打印统计报告C生成输出报告的计数间隔,为0是产生标准输出D输出动态实体的链状态。活动实体的链状态是记录某个活动实体在整个模拟过程中移动的轨迹。4GPSS语言的控制语句TERMINATE1START100START100,NPSTART10,,25GPSS语言的随机变量1.随机数发生器的标准属性码RN$1,RN$2,RN$3,……RN$8每一个都会产生标准的均匀分布的随机数2.随机数发生器种子的设定语句RMULTA,B,C,D,E,F,G,HRMULT111,222,,,333在程序的模块部分不可以对随机数发生器种子进行重新设置GPSS语言的随机变量是利用GPSS函数定义语句产生的1FUNCTIONRN$1,C240,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,8GPSS指数分布函数随机变量GPSS指数分布函数由24个点的连续函数组成,均值为1.RN$1为一号[0,1)间均匀分布随机函数,这样的随机函数GPSS允许同时使用多组,如RN$1,RN$2,RN$3,RN$4,.....,每组都必须事先定义.GPSS语言的随机变量GPSS语言的随机变量活动实体以均值为80的指数分布规律产生:1FUNCTIONRN$1,C240,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,8GENERATE80,FN$1GENERATE250,FN$1ADVANCE232,FN$1GPSS语言正态分布随机变量函数2FUNCTIONRN$2,C240,-40/.001,-30/.006,-25/.022,-20/,066,-15/.115,-12.158,-10/.211,-8/.274,-6/.344,-4/.420,-2/.500,0.579,2/.655,4/.725,6/.788,8/.841,10/.889,12/.933,15.977,20/.993,25/.998,30/.999,40/1,50使用正态分布函数时,要事先在说明语句中定义一变量,将由正态分布函数产生的随机变量转换成已知均值和方差的正态分布函数的随机变量.然后在程序中再使用这个变量。GPSS语言的随机变量如果正态分布的随机变量的均值和方差分别是μ和则变量可定义为:NORMVARIABLE+*FN$2GENERATEV$NORMσ以500个时间单位为均值,15