收藏 分享(赏)

离散系统仿真语言GPSSJAVA的进一步研究与开发.pdf

上传人:精品资料 文档编号:9953018 上传时间:2019-09-22 格式:PDF 页数:8 大小:190.60KB
下载 相关 举报
离散系统仿真语言GPSSJAVA的进一步研究与开发.pdf_第1页
第1页 / 共8页
离散系统仿真语言GPSSJAVA的进一步研究与开发.pdf_第2页
第2页 / 共8页
离散系统仿真语言GPSSJAVA的进一步研究与开发.pdf_第3页
第3页 / 共8页
离散系统仿真语言GPSSJAVA的进一步研究与开发.pdf_第4页
第4页 / 共8页
离散系统仿真语言GPSSJAVA的进一步研究与开发.pdf_第5页
第5页 / 共8页
点击查看更多>>
资源描述

1、Apr.2005, Volume 2, No.4 (Serial No.5) 通讯和计算机 Journal of Communication and Computer, ISSN1548-7709, USA 离散系统仿真语言 GPSS/JA V A 的进一步研究与开发 任 毅,孙 健(北京工业大学实验学院,北京 100024) 摘 要:GPSS 是一种应用于离散系统仿真的专用语言,在管理系统定量化决策分析中广为应用。作 者在以前工作的基础上,对其所开发的 GPSS/JA V A 做了进一步的改进和完善。本文简要介绍了改进后系 统的性能和特点;对系统新的结构组织以及设计思想进行了比较详尽的阐述,

2、最后用新的系统对一个公交 车站进行了模拟,从而展示了改进以后系统的风格和特点。 关键词:离散系统仿真;系统仿真;GPSS;仿真语言 【作者简介】 任 毅,教授;研究方向:决策支持系统、人工智能、系统仿真、计算机应用。 孙 健,助教;研究方向:管理信息系统,系统仿真。 1. 引 言 经过进一步的研究和开发, 作者对 GPSS/JAVA 做了如下的改进与完善:(1) 系统结构的重新组织: 将所有的后台支持类组织在一个名为 gpssjv 的包 中; (2) 对用户模型的程序界面做了进一步的改进, 为用户模型程序的编辑和调试提供乐方便;(3) 将 原来一步完成的系统初始化工作分为两步进行,使 得模拟过

3、程中随机数流能够保持完整性;(4) 增加 了异常捕捉机制,使 GPSS/JAVA 能够自动检查用 户模型程序中的错误和捕捉在模型程序初始化过 程以及运行过程中产生的各种异常;(5) 增加了若 干新的模块,如 link、unlink、preempt、return 等。 (关于 GPSS/JAVA 原系统的介绍请参考文献1) 2. GPSS/JAVA 的特点 GPSS(General Purpose Simulation System)是 专用的离散系统仿真语言,以简洁易用和灵活通用 著称。但是该语言的计算功能有限,可扩展性差, 不便与其他语言混合编程。 JAVA 作为一种杰出的面向对象程序设计语

4、 言,正在被越来越多的工程技术人员所掌握, GPSS/JAVA 不但保持了传统 GPSS 的语法特点, 而 且允许与 Java 语言混合编程, 因此它不但拥有通用 计算机语言强大的计算功能,而且还拥有 GPSS 建 模的方便和快捷等特性。 传统的GPSS语言 2345 相对独立,它的仿真 模型由该系统自身解释执行,而GPSS/JAVA与Java 语言全面融合,它的仿真模型由Java的编译器进行 编译,由Java虚拟机解释执行,因此用户可以自行 控制模型的输入和输出。此外, GPSS/JAVA为解决 特殊问题而在模型中加入各种实现了复杂算法的 Java类库,从而大大扩充了GPSS的功能。 3.

5、系统结构的重新构建 GPSS/JAVA 是一个完全开放的系统。系统的 主要数据结构、对当前和未来事件链以及其他 GPSS 链表的各种操作、各种 GPSS 模块语句和控 制语句、各种标准数值属性和标准逻辑值属性都封 装在 gpssjv包的各种类中。用户只需在自己的主类 文件里引入这个包,就可以建立各种复杂的 GPSS 模型;同时,用户也可以在 gpssjv 包的基础上对 GPSS/JAVA 进行二次开发或开发更加专门化的仿 真系统。 gpssjv 包中的类可分为仿真辅助类和仿真支持 类两种(关于包的结构请参如图 1)。 仿真辅助类封装了系统的相关常量、公有(静 态)变量和公有(静态)方法、动态实

6、体类的定义、 各种链表类及相关的操作方法,以及异常类和用来 设置系统特性的 Set 类等。 13 离散系统仿真语言 GPSS/JA VA的进一步研究与开发 仿真支持类包括:(1) 调度类(Dispatch):该 类提供了一系列方法,能够完成仿真模型的初始 化,模拟过程的开始、运行和终止,模拟统计数据 的清除(reset 方法)、模型中所有动态实体的清除 和统计数据的清除(clear 方法)等操作。(2) 操作 模块类(BlockOp):该类以方法的形式定义了与 操作有关的模块语句和与系统状态有关的标准数 值属性(SNA),还定义了一个成员变量 RN(属 RandNum对象),用来产生各种标准分

7、布的随机数 流。与操作有关的模块语句实现了动态实体的产 生、滞留、转向、分裂、装配、改变自身优先权等 操作,标准数值属性返回系统模拟过程中的相对时 钟与绝对时钟时间以及动态实体的参数值等。(3) 资源实体类:GPSS/JAVA 中与资源实体有关的模 块语句分别被组织在各个资源实体类中,每个资源 实体类封装了与该资源实体相关的操作模块、标准 数值属性(标准数值属性皆由方法的返回值得到) 以及与该资源实体有关的数据统计方法。由图 1 可 见,所有资源实体类都实现的方法有:构造方法, 用于初始化所创建资源实体对象;finalPrint()方法, 用于输出该资源实体对象的统计信息;reDefine()

8、 方法,用于重新定义该资源实体对象的服务能力; reset()方法,用于清除该资源实体对象的统计信息; clear()方法,用于清除该资源实体对象的统计信息 并且清除滞留在该资源实体中的所有动态实体。 start( ); reset( ); clear( ); rmult( ); chainPrint()等 BlockOp advance( ); simulate( ); loop( ); generate( ); buffer( ); gate( ); split( ); assign( ); transfer( ); priority( ); mark( ); terminate( )as

9、semble( ); match( ); test( ); gather( ); A( ); print( ); end( ); dbug( ); T( ); select( ); preempt( ); return( ); C1$( ); C2$( ); M1$( ); MP$( ); P$( ); N$( ); W$( ); RN;等 Dispatch 系 统 仿 真 包 g p s s j v 仿真辅助类 Common COMM GpssException Set OtherCls 静态变量及方法:相对时钟,绝对时钟,随机数发生器等 DefException, FieldExcepti

10、on, BreakException, GpssLogicException blockMax( ); intervalMax( ); debugOn( )等 各种系统常量 封装了动态实体类、各种链表类和相关方法的定义 每个资源 实体类都 需实现的 方法如下: 构造方法 finalPrint() reDefine() reset() clear() Addr Facility Queue User Storage SaveValue Function Switch Table RandNum Addr( )等 seize(int w);release(int w); F$( );FNU$( )

11、;FC$( );FT$( );FR$( )等 queue(int w);Depart (int w); QM$( );QC$( );QZ$( );QT$( );QX$( )等 link( );unlink( );link(int w);unlink(int w)等 enter( );leave( );S$( );SC$( );SR$( );R$( )SM$( );SA$( );ST$( );SE$( );SF$( ) saveValue();savePlus();saveMinus(); X$( )等 FN$( )等 logic( );LS$( );LR$( )等 tabulate() TB$

12、( );TD$( );TC$( )等 uniform( );rvexpo( );erlang( );hyperx( );triang( );normal()等 类的继承关系 BlockOp implements COMM 仿 真 支 持 类 图1 gpssjv 包的结构以下是一个理发馆的仿真模型,通过它可以更 好地了解 GPSS/JAVA 改进后更为简洁的用户模型 编辑界面。 问题陈述:有一个理发馆,只有一位理发师, 顾客以指数分布到达,均值为 20 分钟,理发所需 时间为均匀分布,均值为 18 分钟,偏差为 6 分钟。离散系统仿真语言 GPSS/JA VA的进一步研究与开发 构造模型,模拟

13、50 位顾客,确定等待理发的最大 队长。 程序名称: (Barber.java) 程序代码: import gps s jv.*; /引入 gpssjv包 class Barber extends BlockOp public static void main(String args) Dispatch d=new Dispatch(new Barber(); d.start(50); Queue joeq = new Queue(“joeq“); Facility joe = new Facility(“joe“); public void simulate() switch (Common

14、.block) case 10: generate(RN.rvexpo(20); case 20: joeq.queue(); /加入队列 case 30: joe.s ei z e(); /试图获得理发师 case 40: joeq.depart(); /离开队列 case 50: advance(18, 6); /接受理发服务 case 60: joe.release(); /释放理发师 case 70: terminate(1); /离开理发馆 case 80: end() ; /模拟结束 从上述例子可知,基于 GPSS/JAVA 的仿真模 型是一个主类文件,该类继承了 BlockOp

15、类,因此 必须实现父类的抽象方法 simulate(), 仿真模型的模 块语句就放在这个方法里。当模拟终止时,以主类 名命名的一个文本文件会自动输出与仿真有关的 各种统计数据。 4. 系统的改进与完善 目前,作者对 GPSS/JAVA 的改进主要包括以 下几个方面: 4.1 case语句编号的处理 在仿真模型中,每个模块语句都需要一个 case 语句与之对应。用户在模型的编辑过程中,经常需 要增加或者删除一些模块语句,这样一来,为了保 持 case 编号的连贯性, 就必须重新修改该模块后所 有模块语句的 case 编号。为了解决这个问题,系统 允许 case 语句的编号不连续,这样,只要保证

16、case 语句的编号非负递增,用户就可以很方便地在某两 个模块语句之间添加或者删除某些模块语句。这个 功能是通过 Common 类中的三个变量实现的: public static int block,此变量用于 switch 的 表达式:switch(Common.block); static int blockNum, 在初始化时生成一个下 标连续的数组,数组的下标是模块语句的编号,数 组元素的值是该模块语句所对应的 case 编号; static int bk=1,bk 表示数组的下标。 仿真模型在每次运行之前都要先进行初始化, 初始化完成之后,就生成了一个下标从 1 开始的连 续数组,数

17、组的上限是该仿真模型的模块语句数, 该数组元素的值与每一个模块语句的 case 编号一 一对应。每一个模块语句执行初始化操作时都要执 行以下两条语句: Common.blockNumCommon.bk=Common.bloc; Common.bk+; /数组的下标值加 1 虽然 case 语句的编号不连续,但是,上一个模 块语句执行完毕之后,系统能够确定下一个要处理 的模块语句的编号,根据此编号和 blockNum 数组 可得到下一个需要执行的 case 语句。 case 编号的间隔值也不能无限大。系统默认间 隔是 200,当然用户也可以自己定义。 Set 类里有一 个静态方法 interva

18、lMax,可以用来设置系统变量 intervalMax的最大值, 只要 case 语句编号间隔值不 大于 inervalMax 的值即可。 4.2 switch-case 语句块的中断处理 动态实体在模型中沿着路径向前运动,会进入 三类模块的具体一个:一类不阻止动态实体的进 入,动态实体也不在此类模块中停留;另一类可以 滞留动态实体一段时间,例如 advance;还有一类 在一定条件下会阻止动态实体进入。当动态实体被 阻止或者被滞留时,GPSS/JAVA 或者将其放回当 前事件链,或者将其放入未来事件链,然后处理当 前事件链上其他动态实体,于是这就要改变顺序执 行的流程,从而终止当前的 swi

19、tch-case。对于跳出 switch 的处理方法,原来是在这些模块语句之后加 上 break 语句。由于有些模块需要加 break 语句, 有些模块不需要,容易引起混乱。改进后的 GPSS/JAVA 在每一个需要跳出 switch-case 的模块 内部抛出一个异常(throw Common .BREAK),系 统捕捉到此异常之后,就会执行在 switch 语句块之 外设置的 catch 代码块,从而跳出了当前的 switch离散系统仿真语言 GPSS/JA VA的进一步研究与开发 语句。 4.3 系统的初始化 仿真模型(即主类文件)开始运行以后,首先 执行主方法 main,在 Barbe

20、r.java 的 main 方法中, 需创建一个匿名的主类对象,然后把它作为参数传 递给调度类对象的构造方法,在此构造方法中完成 系统的第一次初始化。 4.3.1 系统第一次初始化 下面的伪代码描述了调度类构造方法和系统 第一次初始化方法的执行过程。 public Dispatch(BlockOp ja) 建立并打开与主类文件同名的文本文件,用于输出 仿真结果 ref=ja; /父类类型引用变量 ref 引用存放在 ja 中的 主类对象 init(); /执行初始化方法 void init() . . Common.block=0; while(true) /对模型依次扫描及异常捕捉 try

21、ref.simulate(); /ref引用主类对象 catch(ArithmeticException e) . . catch(NullPointException e) . . catch(IndexOutOfBoundsException e) . . catch(GpssLogicException e) . . /逻辑异常处理语句 catch(FieldException e) . . /模块操作数异常处理语句 catch(BreakException e) /捕捉 Common.BREAK异常 . . Common.block+; . . 对 8个随机数发生器进行初始化 Comm

22、on.rn0.setSeed(100); . . Common.rn7.setSeed(800); 调度类对象 d 建立后,仿真模型就完成了第一次初始 化,紧接着执行 start方法。 public void start(int count) Common.start_count=count; /为模拟终止计数器赋初值 init1(); /第二次初始化 clock_revise(); /时钟修正 while(Common.start_count 0 ) if(sc an_stage()=COMM.FINISH) /扫描阶段是否结束 clock_revise(); final_print_out

23、(); /仿真结果输出 可以看出,第一次初始化就是顺序执行 simulate 方法中所有的语句,它的作用有: (1) 检查 各模块的操作数中存在的错误; (2) 完成 blockNum 数组的初始化;(3) 完成 geneNum数组的初始化, 即记录所有 generate 模块的 case 编号,以便第二次 初始化时使用;(4) 为语句标号对象自动赋予模块 编号,这次扫描不是真正意义上的 gpss初始化。另 外,每一模块语句初始化部分的最后一个语句为 Throw Common.BREAK, 这种安排是为了获得 case 编号的匹配值。 在 start 方法的内部实现第二次初始化, 即执行 in

24、it1方法。然后便开始仿真模型的运行。仿真模型 的执行过程就是调整系统时钟和扫描当前事件链 不断交替进行的过程, 直到仿真结束, 如下图所示。 离散系统仿真语言 GPSS/JA VA的进一步研究与开发 4.3.3 系统的第二次初始化 在模型程序开始运行以后,随机数发生器会不 断的产生随机数。然而,在第一次初始化过程中, 随机数发生器作为操作数,可能会被非 generate 模 块调用,为了保证每次模拟都能得到完整的随机数 流,GPSS/JAVA 在 start 方法内部安排了模型的第 二次初始化,但这次初始化仅顺序执行 generate 模 块的二次初始化部分的代码,其操作是产生动态实 体,并

25、将其依次置于未来事件链上。因此,改进后 的系统初始化过程分为二步,并且在第一次初始化 结束的时候使随机数发生器返回到原始状态,以保 证每次模拟都能得到与其他 GPSS 系统相一致的随 机数流。 4.4 异常捕捉机制 无论在初始化还是运行时模块语句的执行都 有可能发生异常,在以上 init 方法里列出了 GPSS/JAVA 初始化扫描时可能捕捉到的异常。其 中前三个是 Java 虚拟机定义的异常,由 Java 虚拟 机自动抛出,后三个是 GPSS/JAVA 自身定义的异 常。 GpssLogicException 定义了模型的逻辑异 常,初始化时一旦发现有两个模块语句有相同的语 句标号,或者 t

26、ransfer 方法的转移地址为 generate 模块的语句标号时,就会抛出此异常。从而退出仿 真模型的执行。大量的逻辑异常在运行时会被处 理。 FieldException 定义了模块语句参数异常, 这个异常比较常见,无论在初始化时还是在程序运 行期间,GPSS/JAVA 都会监视此异常,一旦捕捉 到此类异常,就会输出发生参数异常的模块语句所 在的行号。 关于 BreakException 已在 4.2 中有所介绍, 在仿真模型的运行期间,GPSS/JAVA 会监视此异 常,在所有动态实体受阻或滞留处,都应设置语句 throw Common.BREAK 以改变顺序执行的流程,跳 出当前的

27、Switch-case,从而执行其他操作,如将此 动态实体放回当前或未来事件链,顺次处理下一动 态实体等。 4.5 地址标号对象化 transfer、loop、test、gate等模块会改变动态实 体的前进路径,使动态实体转移到指定的模块。在 原有系统中,通过在模型程序中定义一个地址标号 变量,由用户把目标模块的语句编号赋给这个变量 来实现动态实体转移的功能。但是一旦模型程序发 生了改动,地址标号的值也得随之改动,这样会给 模型程序的调试带来不便并易产生错误。改进后的 系统通过地址标号的对象解决了这个问题。 Addr类的定义如下: public class Addr int l abe l=-

28、1; /目标模块语句编号 int fl ag=0 ; /地址重定义标记 static int number=0; /地址对象的编号 Addr() N um ber+; /地址对象的编号从 1 开始,且 唯一 BlockOp类的 A方法被置于目标模块语句前, 该方法仅 在第一次初始化时被执行。该方法如下: public void A(Addr num) if(第一次初始化) num.label=Common.bk; /语句编号赋值 if(num.flag0) throw new GpssLogicException(); else num .flag +; 否 是 模拟结束 对模型进行错误检查

29、blockNum 数组初始化 随机数发生器种子置初值 初始化 二次初始化并调整时钟 扫描当前链 模拟运行 时钟修正 模拟终止记数器 是否小于等于 0 输出仿真结果 图2 仿真模型程序的运行过程 离散系统仿真语言 GPSS/JA VA的进一步研究与开发 以上表明, 在模型初始化时, A方法被执行后, 目标模块的语句编号就被赋给 A 方法的参数所引 用的地址对象的成员变量 label。 不同的目标模块需 要创建不同的地址对象, 如果有两个 A方法的参数 为同一个地址对象,则意味着两个不同的模块具有 同一个地址标号,此时 GPSS/JA V A 就会抛出逻辑 异常。 4.6 新增模块 4.6.1 与

30、装配集相关的模块 分裂语句 split:该模块也具有产生动态实 体的功能,它能够产生属于同一装配集的动态实 体,用来对“成批到来服务系统”进行模拟。 装配语句 assemble: gpssjv 包中的 OtherCls 类定义了一个装配链,动态实体进入该模块后,就 被放到装配链上,当属于同一装配集的动态实体数 达到某一规定数量后,这些动态实体便作为一个动 态实体离开 assemble 模块。 匹配语句 match: 该模块语句使属于同一个 装配集的两个动态实体保持同步。OtherCls 类定义 了一个匹配链,当前一个动态实体进入 match 模块 后,被插入匹配链,当另一个动态实体进入该模块

31、语句的对偶模块时,再把前一个动态实体放回当前 链,这样就实现了两个动态实体的同步运动。 汇聚语句 gather: 该模块与 assemble 模块相 似,这两个模块都是等待同一装配集的若干动态实 体的到达,差别在于 assemble 只保留同一装配集中 第一个到达的动态实体,将其他动态实体从模型中 消除,而 gather则保留全部动态实体,当全体到达 时,一起离开本模块。 4.6.2 与抢占相关的模块(preempt 和 return) GPSS/JAVA 提供了抢占功能,具有较高优先 级的动态实体能够优先使用设备,被抢占的动态实 体处于中断状态,直到抢占动态实体进入 return 模 块释放

32、所抢占的设备,被抢占的动态实体才能重新 占用设备并完成其未完成的服务时间。 4.6.3 用户链类(User) 动态实体在模型中受阻以后,被放回到当前链 上,每次扫描当前链时,还需试图向前移动这些动 态实体,这无疑浪费了 CPU 时间;同时,在当前 链上,同一优先级的动态实体在接受服务时只能按 照先来先服务的原则进行。为了解决上述问题,在 gpssjv 包中 User 类里定义了 link 方法, 它能够将受 阻的动态实体从当前链上取出,放到用户链上;再 在用户链上,根据模型的具体要求对动态实体进行 排队,当阻塞条件解除时,unlink 方法能够按一定 规则将动态实体从用户链中取出,放回当前链。

33、 5. 运行实例 问题陈述:有一公共汽车站,每隔 30 分钟到 达一辆车,通常每班车会迟到或早来 1.5 分钟,乘 客到达车站的时间间隔为指数分布,平均间隔 2.5 分钟,每班车下车的人数为 3 至 7人,均匀分布。 每辆车最多乘坐 50 人,到达时车上的人数为 20 至 50 人均匀分布,车站上等待上车的人尽量上车,直 到车满为止。车满后无法上车的人将离去或改乘其 他车辆。乘客下车所需的时间为均匀分布,均值为 4 秒钟,偏差为 3 秒钟。乘客上车所需时间也呈均 匀分布,均值为 8 秒钟,偏差为 4秒钟。模拟公交 车站有 2000 辆车通过,求每班车丢掉乘客人数的 分布情况。(注:模拟的时间单

34、位为秒) 程序名称: (Bus.java) 程序代码: import gpssjv.*; public class Bus extends BlockOp public static void main(String args) Dispatch d=new Dispatch(new Bus(); d.start(2000, 0, 0); Queue waitQ=new Queue(“waitQ“); Facility door=new Facility(“door“); Switch busDoor=new Switch(“busDoor“); Savevalue lose=new Save

35、value(“lose“,0); Savevalue nowOn=newSavevalue(“nowOn“,0); Table report=new Table(“report“,0,1,10); Addr getOn=new Addr(); Addr leave=new Addr(); Addr next=new Addr(); public void simulate() switch (Common.block) case 10: generate(RN.rvexpo(2, 150); case 20: waitQ.queue(); case 30: gate( LS,busDoor);

36、 case 40: test(L, nowOn.X$(),50,leave); case 50: door.seize(); 离散系统仿真语言 GPSS/JA VA的进一步研究与开发 case 60: waitQ.depart(); 分析结果可以得到,当有 2000 辆车经过时, 有 1895 次等车的人全部上车,有 83次丢掉 1 个乘 客,有 17 次丢掉 2 个乘客,有 4 次丢掉 3 个乘客, 有 1 次丢掉 4 个乘客。 case 70: A(getOn);advance(8,4); case 80: door.release(); case 90: nowOn.savePlus(1

37、); case 100: terminate(0); case 110: A(leave);lose.savePlus(1); 6. 结束语 case 120: waitQ.depart(); case 130: terminate(0); 系统仿真是以多种科学理论为基础,以计算机 及相应的仿真软件为工具进行试验研究的理论和 方法论体系。它体现了试验思考的方法,用以探索 复杂系统深层次的运动机理和规律性,具有科学的 先验性。 case 140: generate(1800,150); case 150: nowOn.saveValue(RN.uniformInt(2, 20, 50); cas

38、e 160: assign(1,RN.uniformInt(2, 3, 7); case 170: A(next); advance(4,3); case 180: nowOn.saveMinus(1); case 190: loop(1,next); GPSS/JAVA 作为系统仿真的又一实用工具, 其面向对象的特性使其更加符合离散系统模拟中 所体现出来的面向对象的本质,也更接近于人对自 然事务的思维和认识。GPSS/JAVA 易于被稍有编 程知识的人所理解和掌握,使一般工程和管理人员 能结合自己的需要实现特定领域的二次开发。在此 基础上进行改进可实现仿真动画功能和可视化建 模,更加符合仿真

39、软件的发展方向。 case 200: busDoor.logic(SET); case 210: tes t( E,waitQ.Q$(),0); case 220: test(E,W$(getOn),0); case 230: report.tabulate(lose.X$()-1); case 240: nowOn.saveValue(0); case 250: lose.saveValue(0); case 260: busDoor.logic(RESET); case 270: terminate(1); case 280: end(); 参考文献: 1 孙健,任毅. 离散系统仿真语言

40、GPSS/JA VA 的研究与 开发. 2006系统仿真技术及其应用会议论文集, 2006, 8: 306-309. 将该模型进行编译并运行,得到的结果如下表 所示。 2 侯炳辉. GPSS/H 实例分析. 清华大学出版社,1995: 21-40. 表 1:丢失人数分布表 间隔列表 (人) 频数 频率 累积频率 0 1895 0.9475 0.9475 1 83 0.0415 0.9890 2 17 0.0085 0.9975 3 4 0.0020 0.9995 4 1 0.0005 1.0000 3 冯允成,离散系统仿真的发展与现状,计算机模拟与 信息技术,国防工业出版社,1997: 3-8

41、. 4 Schriber T.J. An Introduction to Simulation Using Gpss/h, New York, John Wiley, 1992: 1-35. 5 贾兰香等. 管理系统仿真. 天津大学出版社, 1995: 3-5. Further Research and Developments on Simulation Language GPSS/JA V A for Discrete System REN Yi, SUN Jian Abstract: GPSS (General Purpose Simulation System) is a specia

42、l computer language for the simulation of a discrete system. It has been widely used in quantity decision analysis for the management system. A lot of modifications and improvements have been done on GPSS/JAVA by the authors up to now. This paper summarily 离散系统仿真语言 GPSS/JA VA的进一步研究与开发 introduces the

43、 performance and features of the system; releases the key structure of the system and main idea in its design. Finally it shows the features and usage of GPSS/JAVA by running an example of a bus depot simulation. Key words: discrete system simulation; system simulation; GPSS; simulation language (责任编辑:Becky、Swallow、Susan)

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报