集成通用模拟系统IGPSS的开发与应用
摘要:随着计算机技术的迅速发展,模拟技术得到日益广泛的应用。GPSS作为发展最早、应用最为广泛的模拟语言,由于其操作系统平台本身的缺陷,使用很不方便。该文将介绍如何通过VB把GPSS中各相对独立的功能集成起来,最后通过实例进行说明。
集成通用模拟系统IGPSS的开发与应用
摘要:随着计算机技术的迅速发展,模拟技术得到日益广泛的应用。GPSS作为发展最早、应用最为广泛的模拟语言,由于其操作系统平台本身的缺陷,使用很不方便。该文将介绍如何通过VB把GPSS中各相对独立的功能集成起来,最后通过实例进行说明。
【关键词】:GPSS、IPGSS、模拟、集成
中图分类号:TP302.1、TP311.1、TP391.9
文献标识码:B
The Development & Application of Integrated
General Purpose Simulation System (IGPSS)
Glorious Sun Information Management Research Institute, Donghua University,
Xiao Lihua,Yang Baoan,Ma 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/360、GPSS V、GPSS/PC等版本。作者手头的一套是GPSS/PC Ver2,比较老,是基于DOS的,主要由GPSSPC.exe、GPSSREPT.exe等组成。
使用GPSS系统时,每次都必须先编辑好相应的GPS文件(在DOS或Windows下),再在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(是动态生成的)。图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月发表于《计算机仿真》推荐到鲜果:




评论