520 likes | 672 Views
建模与仿真. 第二章 复杂系统的建模. 第四章 仿真语言和一体化仿真技术. 第一节 概述 大多数离散事件系统的仿真软件都包括以下功能 1.产生均匀分布在[0,1]区间上的随机数。 2.产生按指定概率分布的随机数序列。 3.根据事件表推进仿真时间。 4.根据事件表确定事件类型并将控制传给相应的事件处理程序。. 5.从列表中删除记录或向列表中添加记录。 .6. 统计数据并输出报表。 7.检测出错情况。. 专用的仿真系统开发软件和通用编程语言的比较. 专用的仿真软件有以下优点: 1.自动提供建立仿真模型所需要的各种功能。
E N D
建模与仿真 第二章 复杂系统的建模 第四章 仿真语言和一体化仿真技术
第一节 概述 大多数离散事件系统的仿真软件都包括以下功能 1.产生均匀分布在[0,1]区间上的随机数。 2.产生按指定概率分布的随机数序列。 3.根据事件表推进仿真时间。 4.根据事件表确定事件类型并将控制传给相应的事件处理程序。
专用的仿真系统开发软件和通用编程语言的比较专用的仿真系统开发软件和通用编程语言的比较 专用的仿真软件有以下优点: 1.自动提供建立仿真模型所需要的各种功能。 2.提供一系列仿真模型,这些模型比通用编程语言建立的模型能更好地描述被仿真的系统。 3.专用的仿真软件提供的模型更容易修改。 4. 专用的仿真软件有较好的错误检查功能。
然而在某些情况下还需要使用通用编程语言来编写仿真软件:然而在某些情况下还需要使用通用编程语言来编写仿真软件: 1.当建模者只熟悉通用编程语言时。 2.对程序运行的效率有较高要求时。 3.用专用的仿真系统开发软件不能描述系统的某些特性时。 4. 将仿真功能嵌入其它应用或与其它应用‘无缝连接’
第二节 仿真软件分类 一、分类 从历史上看,仿真软件分为通用仿真语言和面向应用的仿真软件。 通用仿真语言通用性强,在系统建模方面有较高的灵活性。但是需要编程,使用起来较困难。 (如SIMAN 、 GPSS等) .
面向应用的仿真软件适合特种应用(如银行、制造厂。。。),通常向用户提供图标、对话框、下拉式菜单等,使用方便,但建模灵活性差。面向应用的仿真软件适合特种应用(如银行、制造厂。。。),通常向用户提供图标、对话框、下拉式菜单等,使用方便,但建模灵活性差。
近几年来,软件销售商推出了采用图形方式建模的仿真语言,使仿真语言的人机交互能力大大提高,使用方便。通常都提供具有各种建模用图标的模板。把这些图标连起来就可以用来表示实体在系统中的流动,用鼠标双击图标就会弹出一个对话框,用户可以往里面添加建模细节。近几年来,软件销售商推出了采用图形方式建模的仿真语言,使仿真语言的人机交互能力大大提高,使用方便。通常都提供具有各种建模用图标的模板。把这些图标连起来就可以用来表示实体在系统中的流动,用鼠标双击图标就会弹出一个对话框,用户可以往里面添加建模细节。
例如,某图表代表‘服务员’,用户可以在弹出的对话框中添加诸如‘同时工作的服务员数’、‘服务员服务时间的概率分布’、这些服务员是否要休息、什么情况下休息等信息。例如,某图表代表‘服务员’,用户可以在弹出的对话框中添加诸如‘同时工作的服务员数’、‘服务员服务时间的概率分布’、这些服务员是否要休息、什么情况下休息等信息。
另一方面,面向应用的仿真软件开发者也努力使他们的软件可以在建模时使用内部编程语言,因而大大提高了建模时的灵活性。从这些情况来看,两者之间的界线已经不怎么分明了。另一方面,面向应用的仿真软件开发者也努力使他们的软件可以在建模时使用内部编程语言,因而大大提高了建模时的灵活性。从这些情况来看,两者之间的界线已经不怎么分明了。
近来仿真软件可以这样分类: 一类具有通用性,它可以用于各种不同类型的系统,但有所侧重。比如侧重于制造业、侧重于通讯系统等。 另一类是专用的仿真软件,只适用于某类系统,如制造厂。
二建模方法 在第一章和第二章中,我们采用的建模方法是事件驱动的方法:首先确定能标志系统特点的一些‘事件’,再编写事件处理例程。 这种方法有一点显得不太‘真实’,即事件处理不占‘仿真时间’。
当前大多数仿真系统采用‘进程’处理的方法。这里的‘进程’是由互相关联而在时间上隔开的事件序列组成,用于描述实体在系统中的整个经历。下图是‘排队系统’中的一个进程示意:当前大多数仿真系统采用‘进程’处理的方法。这里的‘进程’是由互相关联而在时间上隔开的事件序列组成,用于描述实体在系统中的整个经历。下图是‘排队系统’中的一个进程示意:
在一个仿真系统中可以有多个不同的进程,每一个进程都有一个进程处理程序(进程例程),它描述进程在系统中的全部过程。在一个仿真系统中可以有多个不同的进程,每一个进程都有一个进程处理程序(进程例程),它描述进程在系统中的全部过程。 进程例程中明显地带有仿真时间流逝的信息。一般具有多个入口。下面就单服务系统中的顾客进程处理程序作一简要说明。
图中的顾客进程处理程序有多个入口即1、5、9框。图中的顾客进程处理程序有多个入口即1、5、9框。 第一框对应实体到达,该框所作的处理是: 调度下一个到达事件,在事件表中增加一个记录,这只要在当前到达时间上加上到达间隔时间。
第二框作判断,看该实体能否立即进入服务。若服务员‘忙’,该实体进入排队(第三框),并处于等待状态(第四框)。这种等待在进程处理程序中称条件等待,此时控制权转给计时程序,以决定下面是哪个事件发生,从而激活相应的进程。第二框作判断,看该实体能否立即进入服务。若服务员‘忙’,该实体进入排队(第三框),并处于等待状态(第四框)。这种等待在进程处理程序中称条件等待,此时控制权转给计时程序,以决定下面是哪个事件发生,从而激活相应的进程。
当某个处于第四框的进程被激活,从等待队列中删除相应的实体,该进程进入服务状态,置服务员‘忙’ (第六框)。 如第二框作判断时服务员空闲,则直接进入第六框。 下面几框是直接处理,不一一说明。 第四、九两框对应仿真时间的流逝。控制权都转给计时程序。
用进程处理的方法和事件驱动同样涉及按事件发生的次序进行事件处理。从事件处理的内容来看没有什么不同。比如都使用仿真时间、事件表、计时程序等。但从结构和概念上来看,进程处理更自然些,一个进程程序反映了实体在系统中的全部历程。用进程处理的方法和事件驱动同样涉及按事件发生的次序进行事件处理。从事件处理的内容来看没有什么不同。比如都使用仿真时间、事件表、计时程序等。但从结构和概念上来看,进程处理更自然些,一个进程程序反映了实体在系统中的全部历程。 目前大多数仿真软件都采用进程处理的方法。
三、仿真建模的要素及仿真软件的性能评价 1。仿真建模的要素: 仿真模型一般都包括实体、属性、资源和队列等要素。
实体不断被创建,经历系统中一些部分后消亡。实体不断被创建,经历系统中一些部分后消亡。 实体由各自的属性相区别,一个属性是实体信息的一段(一个方面)。 实体在系统中运动时,需要资源,如果所需要的资源不能满足,实体就排队等待。
不同的队列可以有不同的处理方法,如FIFO、LIFO或依照某个属性作降序或升序排列。不同的队列可以有不同的处理方法,如FIFO、LIFO或依照某个属性作降序或升序排列。
2。仿真软件的性能评价: 1)一般功能要求: • 建模的灵活性 • 定义和改变实体属性的能力 • 使用数学表达式与数学函数的能力
例如,将某种概率分布的曲线平移一个距离。 设概率分布的函数为gamma(alpha,beta) 诸如P=Q+ gamma(alpha,beta)的表达式应该是很普通的用法,然而有些仿真软件还不具备此种功能。
易于使用 模型的粒度合适 不能太原始,但组合程度又不能太大。 模型太原始(细小),则用户建模步骤多,工作量大。但如果提供的模型太大(组合程度高),则用户界面中必然要加入大量的选项,同样不便于使用。
分层次建模的能力 分层次建模是提供给用户用基本模型组合成较大模型的手段,较大的模型又可以组成更大的模型,组合而成的模型可以加到模型库中供今后使用。这可以大大提高用户建模的效率。
交互式调试的功能(debug) 。跟踪实体的运动,检查它的活动是否正确 。在指定的事件发生后停下,检查系统状态的变化 。给某个实体的某个属性赋值,或某变量赋值,,使程序按希望的路径运行。
运行速度 在某些情况下运行速度很重要(实时性强)。推荐的参考书1的作者曾经对同一个系统用6种仿真软件进行仿真。结果最快的要比最慢的快11倍。
用户友好性 使非专业人员也能使用 混合仿真能力 从其它应用程序中获取(如数据库管理)数据。
2)硬件和软件要求: • 硬件环境、操作系统平台
3)动画能力 • 将系统的要素(动态实体、资源等)用能运动的图标表示。(移动位置、改变形状、改变颜色等) 例如:系统有一个资源是升降叉车,可以用移动图标表示它的活动。如果资源是象车床这样的设备,可以通过颜色改变来表示它状态的变化(忙、闲)。
有两种提供动画的方法: 1。即时动画 边仿真,边用动画显示结果。这样效果当然好一些,但如果仿真过程较复杂,计算量或程序要处理的事物很多。或者硬件配置不够高。即时动画的效果就不理想。比如,显示出停顿、跳跃等情况。 2。仿真后动画 仿真时只记录、统计数据,过后用动画显示结果。
4。统计分析能力 • 优越的随机数生成能力 • 统计结果有较高的置信度 • 让用户自己设计实验来验证仿真结果的能力 • 自动分析得出优化解的能力。(比如,分时系统中终端数,机械厂加一台机器到哪个工段的问题)
第三节 仿真语言和一体化仿真技术 一、仿真语言的发展概况: 自60年代开始,国外已着手研制仿真语言。 • 1960年,英国研制成第一个离散事件系统仿真语言GSP(首先应用于钢铁工业)。
1965年美国研制成功的MIMIC(一种面向方程的仿真语言)最先获得广泛应用。1965年美国研制成功的MIMIC(一种面向方程的仿真语言)最先获得广泛应用。 • 其主体为将MIMIC源程序翻译成机器代码的编译器。 • 1966年美国推出DSL/90(一种面向方程的仿真语言),其编译器将仿真源程序翻译成FORTRAN语言。
1967年美国计算机仿真协会(SCS)软件委员会公布了连续系统仿真语言规范CSSL67(初始化/动态/终止三段式结构)。1967年美国计算机仿真协会(SCS)软件委员会公布了连续系统仿真语言规范CSSL67(初始化/动态/终止三段式结构)。 80年代,我国研制成功能比较齐全、质量较高的仿真语言ICSL。
二、目前仿真语言概况 1。传统仿真语言的弱点 • 建模功能较弱(建模是仿真研究中难度最高的一个环节) • 要求用户用仿真语言编写一段程序(所有语言的问题) • 分析功能不够
任何事物都有优缺点,仿真语言也不例外, 今后的一个方向是朝着一体化仿真环境的方向发展。
2。仿真语言的基本结构和组织 1)仿真语言的主要要求 • 被仿真问题可以用自然的形式,方便地用仿真语言的语句描述。 • 要求仿真语言具有并行性的特点。 • 仿真语言应该备有多种不同的积分方法可供用户选择。 • 仿真语言应该包含有预先编制好的I/O程序。
仿真语言应该与常用编程语言兼容,以便扩展仿真语言能力。仿真语言应该与常用编程语言兼容,以便扩展仿真语言能力。 • 为了面向用户,仿真语言要适应不同水平用户的要求。 • 要求仿真语言配有宏函数处理器。 • 仿真语言不仅应便于输入和修改系统参数及初始条件,更应该能进行多次运行的仿真研究,对多次运行具有逻辑控制、函数存储、两次运行间的代数运算等能力。
要求具有多重速率的能力,即被仿真模型可分为两段或者多段。要求具有多重速率的能力,即被仿真模型可分为两段或者多段。 • 具有面向问题的错误诊断能力,使仿真研究者可在源程序级别上很快发现和改正错误。 *:上述要求是作为设计仿真语言的指导原则提出的,并不是所有仿真语言都能满足所有这些要求.
三、一体化仿真环境 1.起源 一体化仿真技术起源于80年代中期 仿真工程师意识到,仿真不是单纯对模型的实验,而应当包括从建模到实验再到结果分析的全过程。即仿真软件不再是仅由仿真程序组成的简单系统,而是定义了一个建模、分析和设计全过程的仿真环境。
1)定义 一体化仿真环境是一个软件工具的集合,它包括设计、编制及检验模型;编写及证实仿真程序;准备模型及输入数据;分析模型并输出数据;设计及执行模型的实验。
也可认为一体化仿真环境就是将若干个具有不同功能的软件集成为一个包含有多种功能的软件系统,使仿真模型能根据仿真任务的需求进行分解和拼合,并能对仿真资源进行统一管理。也可认为一体化仿真环境就是将若干个具有不同功能的软件集成为一个包含有多种功能的软件系统,使仿真模型能根据仿真任务的需求进行分解和拼合,并能对仿真资源进行统一管理。
2)特点 • 是一个软件工具的集合,这些工具支持仿真基本概念框架中的每个步骤所要完成的工作。 • 具有统一的人机界面及统一的数据管理,仿真全过程中不同步骤的数据可以互相共享,避免了数据重复输入。
根据实际需要,一体化在集成度上可以不同。如:根据实际需要,一体化在集成度上可以不同。如: • 线集成(仅仅实现功能上的一体化,或仅仅实现资源管理上的一体化) • 面集成(可以实现功能与资源,或功能与模型的一体化) • 3。体集成(可以对功能、模型处理及资源管理全面实现一体化)
3)实例建模建模语言模型实验报告与分析数据库(系统数据模型输入及仿真结果)图形描述,动画统计技术,报告生成美国Pritsker and Assoliates INC.于1985年研制成功的TESS(The Extended Simulation System)是第一个在市场上作为软件商品推出的一体化仿真环境,也是反映较好的。