General-purpose Systems Simulator

GPSS(General-purpose Systems Simulator)——通用系统模拟语言 。第一个使模拟成为实用工具的语言 ,于1961年发明成功。GPSS(Geneal Purpose Simulation System)是使用比较广泛的面向离散模型的模拟语言。该语言特别适用于处理出现等待行列的系统,它提供了多种形式的实体、块语句、定义语句、控制语句、模拟操作语句等等,可以实现高难度的程序设计。

一个简单例子

下面先从一个简单的例子出发,对GPSS的建模过程进行一个总体概略的介绍。随后将详细介绍GPSS的运行环境、界面和模块体系结构,并对GPSS的建模观点进行评述,最后再以一个研究示例说明GPSS在实际研究中的应用。

假设顾客去理发店理发。店里只有一个理发员JOE,顾客排队等着,前一个理完发,后一个就可以去理。设顾客平均18分钟来一个,不过有士6分钟的偏差,也就是说在12分钟到24分钟之内,即12,13,…,24分钟都等可能有顾客到来。理发员理发时间是16土4分钟,下面是模拟系统的运行情况。

GPSS

SIMULATE

GENERATE          18,6    顾客在(18f6)分钟的时间间隔到来

QUEUE           LINE   顾客排入名为   LINE的队中

SEIZE                  JOE      或JOE闲,找他理发,否则停在队中

DEPART             LINE   离队

ADVANCE           16,4   理发花了(16±4)分钟

RELEASE            JOE    理发完毕离开

TERMINATE                  顾客离开系统

START 25

END

首先,在每个GPSS程序的开始,有一个控制语句:S[MU-LATE。它表示一个模拟过程的开始,同样,在整个程序的最后,有一个END控制语句,与SIMULATE相对应,表示模拟过程的结束。

这个进程说明从GENERATE所产生的顾客进入理发店,找JOE理发,理完后离开理发店。JOE开始时是闲的。有人找J(3E理发,如果他是闲的,他就为顾客理发;如果他是忙的,就让顾客排人LINE中。当JOE为顾客理完发,他就变闲。因为GENERATE的功能是源源不断地产生顾客,当JOE变闲时,在LINE排头的顾客就周而复始地让JOE为他服务。其具体过程如下:

模拟开始时,GPSS处理器产生一个到达间隔时间T1,在T1个时间单位之后,GENERATE程序块将建立第一个动态实体(即第一个需要理发的顾客),并立即进入下一个程序块,即   QUEUE  LINE程序块,也就是说排队等候理发师。当动态实体离开GENERATE程序块时,GPSS处理器将产生第二个到达间隔时间T2,然后在T2个时间单位之后,GPSS处理器将在GENERATE程序块中建立第二个动态实体,并立即进入 QUEUE LINE程序块。建立过程以这样的方式继续下去。

动态实体一离开 GENERATE程序块,就立即进入 QIJEUELINE程序块,当一个动态实体进入QUEUE程序块时,GPSS;处理器就记录下它进入了某一具体的队,并记录下开始等待的时间。在模拟中,动态实体排的队可以多于一个,每个队须有各自不同的名字,LINE即是这样的一个名字。不过无论给定的名字是什么,GPSS处理器将认定其为1号队。

当动态实体进入 QUEUE LINE程序块以后,它立即准备进入下一个程序块,即 SEIZE JOE程序块。在现实中,一个到达的顾客希望能尽快理发,如果他到达时JOE有空,他将马上开始理发。但是,如果他到达时,JOE正忙于给另一位顾客理发,他只能等待,相当于排人一个队列中,直到上一位顾客理完发。

在现实中,JOE在某一时间内仅能为一位顾客服务,即他要么是闲着,要么是忙着,而忙的时候只能属于一位顾客。而当另一个动态实体希望进入 SEIZE JOE程序块时,必须具备的前提条件是 JOE正在闲着,否则的话,该实体只能是先在队列中排着,直到JOE由忙变闲为止。如果有更多的实体到达,它们一样也得排在队列依次等待。当 JOE变闲时,由队头的实体先利用资源,这样就使 JOE又由闲变忙,而队中的其他实体被暂时阻止进入而继续等待。这样,就可以模拟一个先来先服务的队。

动态实体通过 SEIZE   JOE程序块后立即进入 DEPART   LINE程序块。当一个动态实体进入这个DEPART程序时,GPSS处理器记录下它已离开符号名为LINE的队,并记下它结束等待状态的时间。根据每个动态实体开始等待和结束等待的时间,GPSS处理器可以计算队中每个动态实体的等待时间。

在通过DEPART LLINE程序块以后,动态实体进入 ADVACE16,4程序块,即我们例中的真正理发阶段。一个ADVANCE程序块使GPSS处理器能够在允许动态实体推移到下一个程序块之前保持某一时间周期。用这样的方法模拟一个顾客理发所用去的时间。当一个动态实体进入ADMCE程序块时,GPSS处理器产生一段占有时间,这段时间是在12到20个时间单位内随机出现的,即相当于从12,13,…  ,19,20中等可能地选择其中任意一个时间。

当动态实体离开 ADVANCE程序块时,它马上进入 RELEASEJOE程序块。这个程序块和 SEIZE JOE是相对应的,当动态实体通过RELEASE程序块时,设备JOE的状态由“忙”变为“闲”,即意味着排在队 LINE首部的实体可以进入 SEIZE JOE程序块了。

在动态实体通过  REALEASE  JOE程序块后,它进入  TERMI-NATE程序块,它可以终止程序运行。

在程序中的START 25语句,表示本过程将要产生25个理发人,即当有25个活动实体经过TERMINATE模块后,模拟立刻终止。

转载于:https://my.oschina.net/lanzp/blog/124865

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值