【VB开源代码栏目提醒】:网学会员在VB开源代码频道为大家收集整理了“离散事件系统仿真中加工问题的程序设计 - 硕士论文“提供大家参考,希望对大家有所帮助!
摘要 本文在综合分析了现有各种仿真语言的基础上,应用离散事件系统仿真的基本理论和方法,利用Visual Basic语言对林业企业中的加工问题进行了仿真程序设计。
利用框图建立了该加工问题的数学模型,并确定了相应的仿真算法。
本程序采用的仿真策略是事件调度法,故主要的工作就是围绕着事件表进行并处理相应的子程序。
为方便事件表和队列的操作,采用的数据结构是链表。
为利于
代码的重用采用了结构化的程序设计方法,把该问题划分为若干个功能模块来进行,使程序简洁。
最后使用该程序对哈尔滨广进家俱公司的加工车间进行了终止型仿真,找出其薄弱环节,对最终决策提出可能的解决方案,并比较各方案的性能。
由于离散系统本身固有的随栅|生,每一次仿真的运行都是一次采样过程,加之随机变量是使用伪随机数产生的,自相关性较强,因此,还对仿真结果进行了统计分析。
关键词:离散事件系统仿真:加工问题:程序设计 Abstraet Based on analyzing various kinds of simulation languages appearing on the marketnow,the paper uses discrete event system theories and methods of simulation to programthe procedure of the jobshop problem of forestry enterprises by applying the Visual basiclanguage.In the paper,mathematics model of the jobshop problem has been made witllgraphic blocks,and the corresponding simulation arithmetic has been established.Thesimulation strategy that this procedure adopts is the event scheduling.Therefore,the mainwork focuses on dealing with the event table and processing the correspondingsubprograms.For the convenience of operating ofthe event table and queues,link as datastructure is adopted.In order to use the code repeatedly,the structure programmingmethod is adopted.To make the procedure succinct,the problem is divided into severalpieces of function modules.Finally,the jobshop of Harbin Guan#n Furniture Companyhas been simulated by using the program,some weak working procedures have beenfound out,various kinds of possible solutions of final decision-making have been putforward,and the performance of every scheme is compared.Because of intrinsicrandornicity of discrete event system,every operation of simulation is one course ofsampling.In addition,the random variables ale produced by using the false randomnumber generators,self-dependence is relatively serious.So,the statistical analysis ofthesimulation result is necessary.Keyword:discrete event simulation;Jobshop problem;programming 离散事件系统仿真中加工问题的程序设计l综述 离散事件系统仿真是系统仿真的~个重要组成部分,是对系统状态在随机时间点上发生离散变化的系统所进行的仿真,与连续系统仿真的主要区别在于状态变化发生在随机时间点上。
离散事件仿真系统事件的发生在时间和空间上都是离散的。
在这类系统中,各事件以某种顺序或在某种条件下发生,并且大都是随机性的,不能用常规的方法加以研究。
特别是如何解决复杂系统的管理与控制问题,正面临着较大的困难和挑战【2…。
离散事件仿真的研究步骤包括系统建模、确定仿真算法、建立仿真模型、设计仿真程序、运行仿真程序、输出仿真结果并进行分析【16】。
在这一过程中,重点和难点的是仿真算法的设计和程序设计【171。
仿真算法是系统仿真的基础,程序设计是系统仿真的灵魂,也是系统仿真应用的一个重点。
1.1 系统仿真软件的发展历史 自1955年以来,由于计算机技术的迅猛发展,仿真软件也随之发展,其先后经历以下几个阶段〔151: (1) 通用程序设计语言阶段(1960年左右,如Fortran); (2) 多种仿真程序包及初级仿真语言出现(1960---1970年,如GPSS): (3) 高级完善的商品化仿真语言(GPsSII、IⅡ、NGPSS、SIMScIuPTII、SIMULA67等,1970年到80年代初期出现); (4) 一体化(局部智能化)建模与仿真环境(TEss、IMSE、IMSS,1984年出现)。
实际上,仿真语言一直在吸取新技术,正在不断地完善和发展。
迄今为止,国内外已涌现出许许多多的程序设计语言和专门的仿真语言,其中在现代计算机仿真中应用较为普遍的有【25】: (1) 高级程序设计语言有FORTRAN、BASIC、C、VB、vc++等。
这类语言的使用需要有较高的编程背景知识,如计算机算法、数据结构等,而且每种语言都各有其特点,既有面向过程的设计方法,又有较新的面向对象的程序
设计方法,对编制者的编程素质要求较高,需要有较强的程序设计能力。
但这些程序语言特别是VB、Vc++等可视化程序设计语言均提供了OPENGL图形库模块,便于编制用户界面友好、可视化、交互性强的仿真系统,通用性较强。
(2) 离散事件系统仿真语言有GPSS、SIMSCRJFr、SIMULA等。
此类语言较前者要简单,不需要太深厚的程序编制功底也可使用,同时它更便于系统的模型建立,因而成为最广泛使用的离散事件仿真语言。
东北林业大学硕士学位
论文 (3) 连续一离散混合系统仿真语言有GASPlV、SLAM、IHSL、SIMAN等。
对于不能单纯通过连续系统的描述方式或离散事件系统的描述方式来表达的系统即连续/离散混合系统的仿真,就得使用此类语言。
该类语言除了用于离散事件系统的仿真外,也可对由微分方程或偏微分方程或差分方程形式描述的连续系统进行建模和仿真。
在此类系统中连续变化的状态变量与离散变化的状态变量可以通过某种方式实现交互。
1.2离散事件系统仿真语言简介 由于离散事件的复杂性,仿真技术作为这类系统分析的工具使用地日益广泛。
采用一般的高级语言(如FORTRAN,C)实现仿真程序存在着程序量大、人机界面差、不易维护等缺点,因此实际应用中多采用专门的仿真语言。
使用专门的仿真语言可以使用户描述模型更为方便、直观,仿真实验运行更为灵活,仿真结果更易于理解。
1.2.1 GPSS〔11】 GPSS语言是离散事件系统仿真语言中推出最早、使用得最为广泛的一种。
它是采用进程交互式建模的仿真语言。
GPSS最大的特点是仿真模型可采用一组标准的程序块来表示其逻辑结构,系统的临时实体按程序块图中规定的方向由某一块流向另一块。
一个程序块对应一条GPSS语句,它相当于一个子程序,因而具有较强的功能,使得GPSs具有较强的建模能力。
用户采用图形描述出一个系统的仿真模型后,根据其流程用GPSS语句写出其相应的GPSS源程序就可以了。
因此,对用户来说,只掌握GPSS语句就能很方便地对系统建立仿真模型。
不同的GPSS版本所包括的程序块个数不尽相同。
用GPSS进行仿真建模时,要进行如下三个步骤: (1)将被仿真的系统用抽象成为类似于流程图的模型来描述: (2)用GPSS
程序块实现流程图中的功能模块; (3)用GPSS程序块对应的语句编写出仿真程序,形成一个可执行的
代码。
GPSS语言提供一个处理器以翻译GPSS源程序并加以执行,最终向用户输出仿真结果的标准报告。
但是,GPSS的仿真钟只能取整数值,因此必须根据仿真精度的要求选择仿真钟的基本时间单位。
这就意味着只能在基本时间单位整数倍的时间点上发生系统状态的变化。
这就导致了系统中同时发生状态变化的概率的增加,因此要进行排序。
故GPSS对每一类实体都专设一个属性——优先组(范围为O~127)进行排序,其值越大,优先级别越高。
这对于许多难以确定优先级的系统来说,无疑会增加建模的难度。
2 离散事件系统仿真中加工
问题的程序设计1.2.2 SLAM/SIMAN仿真语言四【20】〔21〕 SLAM语言是另一种应用十分广泛的仿真语言,可用于离散事件系统、连续系统以及离散—叫奎续混合系统的仿真。
它将事件调度及进程交互两种策略结合起来形成了统一的建模框架。
连续系统既可以采用微分方程,也可采用差分方程来描述。
离散部分若采用面向进程的观点建模则采用网络结构,网络模型中的实体可以触发离散事件的发生及连续状态变量的值发生变化:若采用面向事件的观点建模,则事件可以改变网络模型中的实体流动并可引起连续状态变量发生变化:而达到阈值的连续状态变量能激发网络模型中的实体或触发事件。
SLAM共提供了22个网络语句,与GPSS相似,每个语句对应有一个称为“节点”的图形描述或带箭头的分支符号表示。
如果用户需要用事件调度的观点来描述系统,SLAM提供了EVENT(I)子程序名,用户可用.FORTRAN编写各事件处理子程序;此时还需用户编写主程序 (基于FORTRAN)并在主程序中执行CALL SLAM,以便进入其网络模型。
SLAM语言提供运控程序,负责对网络语句进行翻译,执行并生成标准的输出报告。
如果用户模型中有用FORTRAN编写的EVENT(I),则必须事先将这些子程序连同主程序进行FORlluN编译,然后与SLAM库子程序进行连接后才能运行。
SLAM的
网络模型与GPSS的方块图基本相似,但是它的优点可取实型值,同时允许在同一模型中用两种观点来建模。
这比GPSS具有更大的灵活性。
SLAM源程序可分为两大部分,一部分是系统模型描述;另一部分是实验控制语句。
这种将模型语句与实验控制语句组织在一个仿真程序中的做法是早期仿真语言共同的特点。
近年来,建模与实验分离的思想日益得到重视〔50l,其最大的优点是如果模型不变,而仅仅是实验条件变化时,用户无需修改仿真源程序,从而可满足一个模型多种实验的要求,大大地提高了仿真的效能。
根据这一思想,SLAM的作者之一C.Dennis Pegden对SLAM进行了较为彻底的改造与扩充,研制了SIMAN语言。
SIMAN语言将仿真全过程分成了四个阶段。
(1)进程模型处理SIMAN的进程模型与SLAM的网络模型十分接近。
它将该模型描述作为一个单独的文件——进程模型文件,并有一个模型处理器MODEL对该文件进行翻译,得到一个相应的模型目标文件。
(2)实验框架处理SIMAN将用户的实验要求用实验框架文件来描述,而且 与模型完全分离开来。
这样,一个模型文件可用于若干个不同的实验框架文件。
实验框架处理器EXPMT负责对实验框架文件进行翻译,产生一个相应的实验框架目标文件。
3 东北林业大学硕士学位
论文 (3)仿真运行SIMAN语言设计了一个连接器LINKER将上述两个目标文件连接起来形成一个仿真文件,该文件可提交给Sn4AN处理器执行,并自动产生标准输出
报告。
如用户编写了事件处理予程序,则必须事先进行FORTRAN编译,SIMAN会将他们与仿真文件连接起来一起执行。
(4)仿真输出SIMAN语言除了可提供标准输出报告以外,还可以根据实验框架中规定的内容产生用户输出文件,用户可交互式地或以批处理方式对该输出文件进行各类数据处理。
SIMAN的另一个重要特点是提供了专用于制造系统的语句,因而在制造系统仿真中得到越来越广泛的应用。
1.2.3 SIMSCRIPTII.5【16lf20】121】 仿真过程中系统建模是最费时费力的。
GPSS、SLAM、SIMAN语言各自提供了自身的语句以减轻用户建模的工作量。
但是,任何一种仿真语言所能提供的语句总是有限的,然而被仿真的实际系统却是千差万别的。
要将这些系统用这些语言的语句来描述仍然要付出很大的努力,有时只好借助于高级语言来描述那些难以用仿真语言规定的语句描述的系统。
近年来,仿真语言的另一个发展就是非语言建模技术,即不是采用程序设计语言或仿真专用语言的语句来建模。
非语言建模技术有各种各样的形式,如图形建模、数字化仪输入、正文建模等。
SIMSCRIPT就是一种非语言建模的仿真语言。
它采用近似英语的自然式句法定义模型,使程序易于表达且便于阅读,并可以文件的形式加以保存。
SIMSCRIPT最初版本采用事件调度法建模,在以后的版本中加进了“进程”与“资源”等概念,从而也允许用进程交互法建模。
SIMSCRIPTII.5仿真模型把一个系统看作是由一些实体、属性和集合所组成。
实体有两种类型,即恒定型和暂时型。
恒定实谇对应于系统中在仿真期间完全保持数量不变的事物,暂时实体是指在仿真期间数量可以有非常大变化的事物。
属性是用来表征实体类型的数据值,而集合是具有共同性质的实体的聚集,在SIMSCRIPT II.5中称为类。
这个集合运行规则服从于FIFO或LIFO等排队律或其它指定的性质。
为了用SIMSCRIPT II.5构造一个离散事件的模型,仿真工作者必须写一段序文、一个主程序和一些的事件例行程序.序文不包括任何可执行语句,它通常给出一段关于整个模型的静态描述,包括说明抽象数据的类型、说明恒定的和暂时的实体、说明事件、说明统计收集变量等所需的各种事件、实体和集合。
主程序通常用来初始化事件表、状态变量、读取输入数据、调度初始事件、启动系统时钟、并通过可调用定时例行程序语句START Sn小Ⅱ,An0N开始执行。
4 离散事件系统仿真中加工问题的程序设计1.3离散事件系统仿真软件的发展趋势{i01126〕〔2’1130〕〔36】【43】 近年来,计算机技术突飞猛进,特别是随着CPU运行速度的大幅提高,存储器容量的增加,以及网络技术、计算机图形图像技术、多媒体技术、软件工程、系统工程、自动控制、人工智能等技术的发展,仿真软件在深度与广度上也随之发展,它将具有以下的特点: (1)可视化及动画技术161 可视化能够为特定仿真模型的有效性与仿真技术一般原理的交流提供桥梁,可以检验和证实模型,以确定模型是否反映了构建者的意图或者是否反映了系统的客观实际。
同时便于观察
系统的动态行为,且有助于岗位的培训。
系统仿真是一项技术难度较高的系统分析
工作,可视化方法在仿真中的应用,能够提供友好的用户界面,可以促进仿真系统的建模。
(2)并行离散事件仿真f3∞f347 应用传统的事件表原理来仿真复杂的大系统,运行效率可能会很低。
在这种情况下,应该采用并行离散事件仿真方法,它将仿真模型表达为一个由相互通讯的实体构成的有向图。
已经证明,并行离散事件仿真能够很好地适于许多复杂的离散事件仿真,诸如通讯系统、交通系统、计算机网络以及计算机系统等。
虽然并行离散事件仿真技术已经发展成熟,并且已经产生一些商品化以及试验性并行仿真工具,但目前为止还没有大的商品化
软件开发商在该领域进行大规模的时间与资金投入以进一步开发具有串行仿真软件一样友好的用户界面的并行仿真系统,其主要原因是并行机的成本仍然很高,并且离散事件仿真技术还未被人们所熟知。
随着计算机并行处理技术、网络技术及分布式操作系统的成熟,它的设计思想必将移植到系统仿真上来,为解决大的离散仿真系统提供可靠的
方案。
(3)面向对象的仿真【13】 采用面向对象的建模方法。
即认为客观系统是由各秘相互作用的对象组成,它符合人们的思维方式,同时它有具各面向对象软件的数据封存、继承性和多态性等特点,因而使仿真建模更加直观、自然,也使这类仿真软件具有很好的模块性、可重用性、可维护性和灵活性。
面向对象的设计与编程技术不仅使图形建模系统成为可能,而且为仿真模块的重用带来了广阔前景。
早期韵仿真应用,通常以FORTRAN等过程语言来实现,建模难度大、费时多。
通用的仿真语言诸如(}PSS和SIMCRIPT等的出现.使这种情况得以改善,但是以这些仿真语言开发的仿真模型仍然缺乏可重用性和可移植性。
5 东北林业大学硕士学位
论文基于面向对象技术的现代仿真环境或者称为仿真工具诸如IMDE和VSE,不仅具备图形建模功能,而且提供模块重用设施,将系统实体按构件设计及实施,存储于有关应用领域的构件库中。
以后再构造同一应用领域的仿真模型时,通过图形界面调用及组合这些构件,便可以形成所需要的模型。
(4)一体化建模与仿真环境 采用~体化建模与仿真环境,可以对仿真中涉及到的各种资源,如模型、算法、实验框架,以及行为数据等进行统一有效的管理,能灵活地拼合仿真模型、设置仿真实验,并对实验结果进行分析处理等。
(5)人工智能与计算机仿真【5】 近年来,人工智能在知识获取、知识表示、问题解答、定理证明、程序自动设计、自然语言理解、
计算机视觉、机器人学、机器
学习和专家系统等方面,取得了令人鼓舞的成果和进展。
人工智能技术在仿真中的应用已经引起仿真领域的普遍关注。
人工智能与计算机仿真在学科上的交叉主要涉及以下几个方面: ①知识库用于建模与仿真,包括利用知识库和专家系统为仿真模型的建立和综合提供咨询服务,以及专家系统用于仿真结果的检验和可信度分析。
②仿真技术与人工智能技术的结合,包括人工智能技术用于大系统特别是决策系统的计算机仿真,以及利用仿真技术评估一个知识库,实现所谓的智能化仿真。
③仿真模型中知识的表达,需要解决的问题包括模型结构表达式的灵活性,程序设计扩展的能力,面向批处理的建模,以及作用在系统上的外部影响关系的表达等。
(6)虚拟现实仿真‘5119〕〔251129〕 虚拟现实也称灵境技术,它是在综合计算机图形技术、计算机仿真技术、传感技术、显示技术等多种学科的基础上发展起来的,是20世纪90年代计算机领域的最新技术之一。
虚拟现实技术以仿真的方式给用户创造一个实时反映实体对象变化与相互作用的三维图形世界,并通过头盔显示器、数据手套等辅助传感设备,提供用户一个观察并与虚拟世界交互的多维用户界面,提供听觉、触觉、触觉和味觉等逼真感受,建立人与系统的实时交互与控制,使操作者、管理决策者近似身临其境地观察到和感受到被仿真系统运行中的动态变化,并产生沉浸感。
而沉浸感、多维交互、实时三维图像是虚拟现实系统的三个基本特性. 虚拟现实技术采用当前计算机及相关领域发展的最新技术,描述事物内部及其相互间真实的作用与变化,使用户仿佛置身于一个虚拟的世界中,从而不仅拉近了用户与计算机之间的距离,改变了人机交流方式,更重要的是使用户可以进入虚拟 6 离散事件系统仿真中加工问题的程序设计世界内部直接观察或感受事物内在的变化,并可以直接参与到事物的相互作用之中去,对系统进行控制和做出决策,成为虚拟世界中的一部分。
虚拟现实系统与现有的计算机环境相比,有着不可比拟的优越性,在仿真中具有十分广阔的应用前景。
(7)Internet网上仿真【刈 随着Intemet的迅速发展,利用面向对象的互联网程序语言Java,已经开发了多种面向WWW(World Wide Web)的仿真系统,如美国海军研究院的Simkit可以在网络浏览器的支持下进行分布式仿真,用Simkit建立的仿真模型可以在世界任何地点的网络用户机上运行,使分布在各网点的用户仿真模型可在其他网点上运行或进行全球范围内总体仿真模型的分布式仿真运行。
近年来,利用面向www的程序语言开发离散事件仿真系统、基于Www的仿真建模以及互联网上的仿真运行已成为系统仿真中研究工作的热点。
1.4本课题研究的目的和意义 在市场竞争日趋激烈的当今社会,林业企业如何发掘内在潜力,增进经济效益就越发显得十分的重要。
而利用系统仿真的方法,便于林业企业找出现有资源配置的薄弱环节,利于林业企业资源的优化配置,从而提高
经济效益。
本课题就是针对林业企业的这一实际需求,提出了一个解决方案,即使用VB语言编制的仿真软件来仿真林业企业的加工问题,找出其薄弱环节。
采用VB编程较采用专门的仿真语言编程来说,工作量相近,但通用性强,运行精度高,也便于林业企业的二次开发利用,同时Ⅶ语言使用简单,价格低廉,利于推广使用:较其它的通用语言如Fortran,C语言等来说,采用VB语言编程效率高,界面友好,程序调试容易。
该仿真软件的推广使用,必将提高林业企业的经济效益。
7 东北林业大学硕士学位
论文2离散事件系统仿真基础 由于离散事件系统固有的随机性,对这类系统的研究往往十分困难。
经典的概率及数理统计理论、随机过程理论虽然为研究这类系统提供了理论基础,并能对一些简单系统提供解析解,但对工程实际中的复杂系统。
只有依靠计算机仿真技术才能提供较为完整的结果。
2.1基本概念 (1)实体 实体是描述系统的三个基本要素(实体、属性、活动)之一。
在离散事件系统中的实体可分为两大类:临时实体及永久实体。
在系统中只存在~段时间的实体叫临时实体,这类实体由系统外部到达系统,通过系统,最终离开系统。
临时实体按一定规律不断地到达(产生),在永久实体作用下通过系统,最后离开系统,整个系统呈现出动态过程。
(2)事件 描述离散事件系统的另一个重要概念就是“事件”。
事件就是引起系统状态发生变化的行为。
从某种意义上说,这类系统是由事件来驱动的。
在一个系统中,往往有许多类事件,而事件的发生一般与某一类实体相联系,某一类事件的发生还可能会引起别的事件发生,或者是另一类事件发生的条件等等,为了实现对系统中的事件进行管理,仿真模型中必须建立事件表。
表中记录每一发生了的或将要发生的事件类型和发生时间,以及与该事件相联的实体的有关属性等等。
(3)活动 离散事件系统中的活动,通
常用于表示两个可以区分的事件之间的过程,它标志着系统状态的转移。
(4)进程 进程由若干个有序事件及若干有序活动组成,一个进程描述了它所包括的事件及活动间的相互逻辑关系及时序关系。
(5)仿真钟 仿真钟用于表示仿真时间的变化。
离散事件动态系统的状态是在离散时间点上发生变化的,并且由于引起状态变化的事件发生时间的随机性,故仿真钟的推进步长是随机的:如果两个相邻发生的事件之间系统状态不发生任何变化,则仿真钟可以跨过这些“不活动”周期。
从一个事件发生时刻推进到下一事件发生时刻,仿真钟的推进呈跳跃性,推进速度具有随机性。
可见,仿真模型中时间控制部件是必不可少的,以便按一定规律来控制仿真钟的推进。
8 离散事件系统仿真中加工问题的程序设计 (6)统计计数器 离散事件系统的状态随着事件的不断发生也呈现出动态变化过程,由于这种变化是随机的,某一次仿真运行得到的状态变化过程只不过是随机过程的一次取样。
如进行另一次独立的仿真运行所得到的状态变化过程可能完全是另一种情况。
因此,状态变化只有在统计意义下才有参考价值。
2.2仿真钟的推进【1】【2】【3】14】【7】 仿真钟的推进方法是离散事件系统仿真的基础。
其方法有两大类,第一类是按下一最早发生事件的发生时间推进,亦称为事件调.