畅享博客 > 肖利华博士之战略(品牌)-流程(供应链)-信息化 > 集成通用模拟系统IGPSS的开发与应用
2005-1-20 16:20:00

集成通用模拟系统IGPSS的开发与应用

                                      

摘要:随着计算机技术的迅速发展,模拟技术得到日益广泛的应用。GPSS作为发展最早、应用最为广泛的模拟语言,由于其操作系统平台本身的缺陷,使用很不方便。该文将介绍如何通过VBGPSS中各相对独立的功能集成起来,最后通过实例进行说明。

 

【关键词】:GPSSIPGSS、模拟、集成

 


集成通用模拟系统IGPSS的开发与应用

东华大学管理学院  肖利华 杨保安 马彪 200051
摘要:随着计算机技术的迅速发展,模拟技术得到日益广泛的应用。GPSS作为发展最早、应用最为广泛的模拟语言,由于其操作系统平台本身的缺陷,使用很不方便。该文将介绍如何通过VBGPSS中各相对独立的功能集成起来,最后通过实例进行说明。
【关键词】:GPSSIPGSS、模拟、集成
中图分类号:TP302.1TP311.1TP391.9
文献标识码:B

The Development & Application of Integrated
General Purpose Simulation System (IGPSS)

Glorious Sun Information Management Research Institute, Donghua University,

Xiao LihuaYang BaoanMa Biao  200051

Abstract With the rapid development of computer technology, simulation technology is being widely used. GPSS, as is a simulating language developed first and used widest, with its shortcomings of the operating system, cannot be used conveniently. The article tells you how to integrate the independent functions in GPSS through VB, and then shows how to fulfill them by examples.
Key words GPSS, IGPSS, Simulation, Integrate
一、   引言
GPSS(General Purpose Simulation System),即通用模拟系统,是一种面向问题的解释性模拟语言,是发展最早、在国际上使用最广泛的离散系统模拟语言。它的最早版本是由戈登于1961年发表,现在用得比较多的有GPSS/360GPSS VGPSS/PC等版本。作者手头的一套是GPSS/PC Ver2,比较老,是基于DOS的,主要由GPSSPC.exeGPSSREPT.exe等组成。
使用GPSS系统时,每次都必须先编辑好相应的GPS文件(在DOSWindows下),再在DOS下输入相应的命令GPSSPC @GPSFILE.GPS进行运算,然后退出,再输入GPSSREPT命令生成相应的报表。由于现在的学生对DOS命令不是很熟悉,操作起来很不方便,常常做了后面忘前面,分散了思路,不能把精力集中在GPSS编程上面。通过实际应用,笔者认为非常有必要开发这样一套系统来把这些相对独立的功能集成起来。
二、   IGPSS
由于GPSS/PC的内核部分已经相当成熟,我们没有必要去重新去开发一套模拟系统。但我们可以在此基础上进行相应的改进:把GPSS中相对独立的功能集成起来,并把它从DOS"移植"到Windows(并不是真正意义上的移植,因为其内核部分还是在DOS下运行的,但新系统把它与DOS的接口屏蔽掉了,在用户看来系统是完全基于Windows的),而且可使它与其它应用软件进行有机集成(如WORD),使用户更方便地使用系统。
由于GPSS中已有的功能都已经编译好,都是些可执行文件,而且调用的接口很清楚(如GPSSPC @FILE.GPS),我们可以把集成起来,甚至把其它相关的功能也集成进来,如输入、打开GPS文件、报表打印、系统帮助等功能,这就是我们要开发的集成通用模拟系统IGPSS(Integrated GPSS)
IGPSS运行的界面如图1所示。

1  IGPSS运行主界面

IGPSS是在VB6下开发的。输入程序、调用程序、报表查看、报表打印、系统帮助等功能是完全基于Windows的,实现比较容易,就不介绍了,最关键的是系统模拟和生成报表两大块。经过前面分析我们知道,"系统模拟"时是调用可执行的EXE文件,可带参数,也可不带。若不带参数则是在进入GPSSPC后再调用相应的GPS文件,但系统将给出相应的操作提示。实现时我们是利用VB中的SHELL功能,它可直接调用外部可执行文件。具体实现过程简要说明如下:
        If gpssfile <> "" Then
                       ‘gpssfile是要调用的GPS文件名    
shelltmp = Shell("gpsspc.exe" + " @" + Mid(gpssfile, i + 1), 1)
注意@前有空格
        Else
            MsgBox "你可用 @filename 来调用磁盘文件,end 结束运行!", vbOKOnly + vbInformation, "提示信息"
            shelltmp = Shell("gpsspc.exe", 1)
        End If
而"生成报表"是对系统模拟的结果生成相应的报表形式,所以在生成报表之前要判断是否进行过系统模拟,如果没有则提示先进行系统模拟。
        If gpssfile <> "" Then
            shelltmp = Shell("gpssrept.exe", 1)
        Else
            MsgBox "请先输入或调用GPSS文件再生成报表!", vbOKOnly + vbInformation, "提示信息"
        End If
三、   应用

下面将以一个道路交通流量模拟的例子说明IGPSS的使用。

进入系统后点击"输入程序",输入以下程序:

;  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;  GPSS/PC Program File TRAFLIT.GPS.  (V 2, # 39947)  06-06-2001 20:55:33

;  Designer :Xiao li hua                     ;

;  In Dong hua University               ;

;  2001-06-06                                ;

;  GPSSPC @XLH.GPS  to enter                 ;

;  START 100  to run ;                       ;

;  END  TO QUIT  ;                           ;

;  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

10 EXPON     FUNCTION     RN1,C24

0.,0/0.1,0.104/0.2,0.222/0.3,0.355/0.4,0.509/0.5,0.69/0.6,0.915/

0.7,1.2/0.75,1.38/0.8,1.6/0.84,1.83/0.88,2.12/0.9,2.3/0.92,2.52/

0.94,2.81/0.95,2.99/0.96,3.2/0.97,3.5/0.98,3.9/0.99,4.6/0.995,5.3/

0.998,6.2/0.999,7.0/0.9997,8.0        

20 GRE1     VARIABLE     60        

30 GRE2     VARIABLE     45        

40          GENERATE     9,FN$EXPON        

50          QUEUE        ONE        

60          SEIZE        STAR1        

70          GATE U       ONE        

80          TRANSFER     SIM,DIREC,DELAY        

90 DELAY    ADVANCE      2        

100 DIREC   DEPART       ONE        

110         RELEASE      STAR1        

120         TERMINATE            

130         GENERATE     12,FN$EXPON        

140         QUEUE        TWO        

150         SEIZE        STAR2        

160         GATE U       TWO        

170         TRANSFER     SIM,DIR,DELA        

180 DELA    ADVANCE      2        

190 DIR     DEPART       TWO        

200         RELEASE      STAR2        

210         TERMINATE            

220         GENERATE     ,,1,1        

230 LOP     ADVANCE      55        

240         SEIZE        ONE        

250         ADVANCE      V$GRE1        

260         RELEASE      ONE        

270         ADVANCE      55        

280         SEIZE        TWO        

290         ADVANCE      V$GRE2        

300         RELEASE      TWO        

310         TRANSFER     ,LOP        

320         GENERATE     3600        

330         TERMINATE    1        

340         PLOT         Q$ONE 30 0 3600      ;queue length from direction one        

350         PLOT   Q$TWO 30 0 3600    ;QUEUE LENGTH FROM DIRECTION TWO  

点击"系统模拟",再输入START 100开始模拟,得到模拟结果如图2(是动态生成的)。

模拟结果

输入END退出模拟。
点击"生成报表"可生成相应的报表,结果如下。
 GPSS/PC Report file REPORT.GPS.  (V 2, # 39947)  06-06-2001 18:18:38   page 1
     START_TIME    END_TIME  BLOCKS    FACILITIES  STORAGES   FREE_MEMORY
            0         7200     30           4          0         10304
 LINE       LOC          BLOCK_TYPE       ENTRY_COUNT   CURRENT_COUNT   RETRY
  40         1            GENERATE              800              0         0
  50         2            QUEUE                 800              0         0
  60         3            SEIZE                 800              0         0
  70         4            GATE                  800              0         0
  80         5            TRANSFER              800              0         0
  90        DELAY         ADVANCE               743              0         0
  100       DIREC         DEPART                800              0         0
  110        8            RELEASE               800              0         0
  120        9            TERMINATE             800              0         0
  130        10           GENERATE              665              0         0
  140        11           QUEUE                 665             12         0
  150        12           SEIZE                 653              1         0
  160        13           GATE                  652              0         0
  170        14           TRANSFER              652              0         0
  180       DELA          ADVANCE               620              0         0
  190       DIR           DEPART                652              0         0
  200        17           RELEASE               652              0         0
  210        18           TERMINATE             652              0         0
  220        19           GENERATE                1              0         0
  230       LOP           ADVANCE                34              0         0
  240        21           SEIZE                  34              0         0
  250        22           ADVANCE                34              1         0
  260        23           RELEASE                33              0         0
  270        24           ADVANCE                33              0         0
  280        25           SEIZE                  33              0         0
  290        26           ADVANCE                33              0         0
  300        27           RELEASE                33              0         0
  310        28           TRANSFER               33              0         0
  320        29           GENERATE                2              0         0
  330        30           TERMINATE               2              0         0
FACILITY    ENTRIES  UTIL.   AVE._TIME AVAILABLE  OWNER PEND INTER RETRY DELAY
 ONE            34  0.281       59.68      1         3   0     0     0     0
 STAR1         800  0.889        8.01      1         0   0     0     0     0
 TWO            33  0.206       45.00      1         0   0     0     1     0
 STAR2         653  0.927       10.22      1      1448   0     0     0    12
QUEUE         MAX  CONT. ENTRIES ENTRIES(0) AVE.CONT. AVE.TIME  AVE.(-0) RETRY
 ONE           29     0     800        57     9.32       83.89     90.32    0
 TWO           31    13     665        32     9.59      103.80    109.04    0
以上结果可打印出来供分析使用。

这样IGPSS就很好地把原GPSS中各相对独立的功能集成起来了,并增加了一些新的功能,方便用户使用。

肖利华,男,1978年生,2002年获东华大学(原中国纺织大学)硕士学位,现已在《管理科学与工程》、《计算机系统应用》等刊物上发表论文20余篇。主要研究领域:决策支持系统、生产运作与管理、供应链管理。
杨保安,男,现任东华大学管理学院教授、硕士生导师,曾为德国柏林工业大学、香港浸会大学的访问学者。研究科学决策理论、方法与决策支持技术、工具及其结合的银行贷款风险管理决策系统的国家自然科学基金项目。迄今已发表管理决策方面的论文70多篇。主讲多目标决策分析、管理系统模拟等课程。
马彪,男,1975年生,1998年获中国纺织大学(现东华大学)硕士学位,现为东华大学管理学院讲师、旭日信息管理研究所系统分析员兼高级程序员。主要研究领域:决策支持系统、销售管理、大型数据库。

作者单位:肖利华 杨保安 马彪 (东华大学 旭日信息管理研究所 上海 200051

参考文献

【1】         杨保安,管理系统模拟,中国纺织大学出版社,1996.1

【2】         Visual Basic 6.0 中文版语言参考手册,Microsoft Corporation公司著,98.9

----此文于2001年12月发表于《计算机仿真》


推荐到鲜果:
分享&收藏

评论

您正在以 匿名用户 的身份发表评论  快速登录
(不得超过 50 个汉字)
       看不清,换一个
提示消息
(输入完内容可以直接按Ctrl+Enter提交)