ExtendSim 7 介绍

 

摘要:

ExtendSim (原Extend,见 Extend 6 介绍)提供了为各种知识层次的仿真人员建立准确、可信以及可重复利用模型的强大工具。ExtendSim 的设计可以辅助整个仿真项目的管理,涵盖复杂仿真项目开发的各个阶段,包括模型建立、验证、校核一直到建立友好的用户界面,可以让其他人员更好地使用模型来分析复杂系统。仿真工具的开发人员可以利用ExtendSim自带的强大开发和编译环境,进行可重复利用、拥有自主知识产权模块的开发。所有这些都是在一个独立的、自成一体的软件环境中完成,不需要额外的界面、编译器和代码生成器。

 

1.介绍

建立在Extend 作为强大的适用于建立大规模图形化仿真模型的声望和口碑之上,ExtendSim 展示了Imagine That Inc 公司支持广泛建模人员不断发展的需求的承诺。Extend (现更名为ExtendSim)一直以来是解决最复杂、最具挑战性问题的首要选择工具之一。

仿真工具底层的技术直接决定了工具的特点和功效。一个扎实的体系设计可以有效地支持新技术的发展和各种客户的需求。在可扩展性和稳定性方面,ExtendSim的体系结构一直在仿真行业中占据引领地位。ExtendSim从设计之初开始,就致力于支持大型复杂仿真项目的快速建模。一些突出的特点,例如分层结构和快速运算速度等,就是为此而设计。而这些特色只有在ExtendSim底层框架的支持下才能实现。

 

2ExtendSim 7

ExtendSim 7 是在Extend 6 基础之上的全新升级,更关注增加工具的表现力、易用性和可扩展能力。这些改进来源于Imagine That 广泛客户群体的体验,走在仿真应用前沿的客户的需求以及开发人员的创造力。这些努力的结晶就是ExtendSim 7 可以让建模人员用更少的步骤建立起更有效率和更吸引人的模型。更重要的是,ExtendSim 7为未来功能进一步扩展提供了坚实的基础。ExtendSim 7仅仅是Imagine That Inc 开发的下一代仿真软件的开始。

 

3. ExtendSim 7 基础

在深入探讨ExtendSim技术之前,有必要了解一下ExtendSim的仿真环境。ExtendSim的模型采用图形化模块搭建的方式生成。每一个模块代表了一个计算或者在流程中的一个步骤。每个模块的对话框是输入模型数据和显示仿真结果的基本形式。模块按照功能的相关性和相似度组成模块库,而每个模块库对应着一个可以轻松拷贝的文件。模块采用拖拉的方式从模块库中加入到模型中,模块之间通过连线组成一个完整的流程。

大部分离散事件仿真模型可以由Item(物件)和Value(数值)模块库中的模块组成。例如,在Value模块库中的一个常用模块是 Lookup Table (表格查询) 模块。

 

Figure 1: Lookup Table 模块

 

Value模块库中的模块起到数值计算和信息传递的作用,每个模块有数值的输入或者输出端口。Figure 1 显示了 Lookup Table 模块,它的作用就是将一个输入值按照内部表格的逻辑转换成一个输出值。黑色倒三角表明用户用鼠标简单伸缩,就可以延展端口的数量。

 

Figure 2: Activity 模块

 

Item模块库中的模块对物件(或者实体)进行处理。Figure 2 显示了 Activity 模块。Activity模块通过物件的输入端口和输出端口定义了物件在本模块中的流动,通过数值的输入端口和输出端口提供了参数动态输入和结果动态输出的机制。处理活动有时有处理能力的限制,有时没有,处理时间可以是一个固定的时间,也可以是一个随机变化的时间,在处理过程中,有可能有停机中断或者临时变更任务的情况,这些都可以由Activity模块来模拟。在默认的参数输入下,Activity 模块只有一部分的端口是可见的;随着参数选项的不同,其他一些相关的端口也会出现或者隐没;用户也可以伸缩黑色倒三角来延展端口。

 

Table 1  ExtendSim 标准模块库

模块库

说明

Item

物件(实体)处理模块

Value

数值(信息)处理模块

Plotter

图表绘制模块

Animation 2D 3D

二维和三维动画

Rate

基于流速(批量化处理)模块

Utilities

辅助支持模块

Electronics

电子电路设计

 

除了以上模块之外,ExtendSim 7 也提供了一些展示建模和编程技巧的模块。

 

3.1 建立模型

ExtendSim 7 中模型的建立是通过拖拉模块,并进行组合搭建而成的。模块通过各种连接方式联系在一起,并在对话框中输入参数。连接的方式可以包括通过端口的连线,也包括逻辑上的连接,例如在队列中可以输入需要获取的资源的名称。

例如在Figure 3中显示的银行队列模型一样,相当于在一个MM1排队模型上添加了阻滞和弃队现象。顾客到达银行后,等候服务,在接受服务之后离开。如果等待的队列太长,可能会阻滞顾客加入到队列当中;如果一个顾客在队列中等待的时间过长,他/她也可能选择放弃排队而提前离开。

 

 

Figure 3: 具备阻滞和弃队特征的银行排队模型

 

Figure 3 中的模型显示了ExtendSim 的一系列特点:

  • 通过连线在模型中传递物件(顾客)和信息(阻滞的概率)。ExtendSim 是唯一采用物件流和信息流同时在模型图标上动态流动的仿真软件;

  • ExtendSim 支持命名连线。例如,两个 “Queue length” 名称就建立了一个命名连线:虽然没有实际的连线,但信息已经在他们之间传递,同时,模型可以变得更简洁。

  • 队列的长度和顾客所选择路径之间的关系一目了然。同时,可以很清楚地看到路径的选择具有一定的随机性:在某些情况下,顾客可能会受阻。

  • 物件在模型中流转的路径非常清晰。

  • Exit 模块的输入端口已经进行了延展,可以容纳不同途径流转过来的顾客离开整个系统。

 

3.2 分层

如果把所有的模型模块都放到一个层面上,即使是维持一个中型规模的模型也是非常困难的。ExtendSim 7 的分层概念允许建模者把模型分解成更小的、更好管理的几个部分。除此之外,新的模型组成部分可以直接放到新的分层模块里。

仿真模型里的层次至少有两种定义。第一种定义是模型层次,ExtendSim 7把系统模块组合或集成到一起形成单一部分。ExtendSim 7包含了可扩展支持,把许多模块合并到一起形成一个模块,然后把这些新的模块保存到模块库里供以后使用。第二种定义是结构层次,是指根据已有的代码来开发新的模块。ExtendSim 7开放的源代码结构允许编程者查看和修改已有的模型模块,以便创建新的模块。

ExtendSim 7支持深度达255层的分层模块,通过简单的菜单命令就可以完成。分层使得模型可以被分成几个逻辑单元或子模型,由一个统一的描述性图标来代表。双击分层模块图标就打开一个新的窗口显示子模型。这大大地简化了模型的外观而且使得用户可以根据不同对象适当地隐藏或显示模型细节部分。

利用分层工具,建模者可以迅速、准确地创建可以重复使用的模型模块。需要所做的改变在分层模块的界面里很容易实现。

 

Figure 4: 具备分层模块的银行排队模型

 

Figure 4 显示了银行模型的顶层模块,将顾客选择下一步流转路径的三个模块合并为一个。用户可以对合并后的模块做外观的修饰和动画设计。

 

3.3 克隆技术

ExtendSim 模型相关的输入、输出参数可以在模块对话框中查看。这就为系统目标和搭建的模型之间提供了比较直观的联系,但这使查找特殊的数据就比较笨拙了,尤其是对于包含很多分层模块的大规模模型来说。解决这一问题的有效方法就是使用ExtendSim的克隆技术。选中工具栏中的克隆按钮,然后用它来把对话框中的任何界面控件(包括输入参数、输出参数、图形、按钮、标签等等)拖到模型里。在克隆后控件中的修改可以即刻修改源头对话框中的参数。

Figure 5: 分层模块中的克隆技术

 

例如在Figure 5分层模块中,Lookup Table 模块中的查询表格以及Select Item Output 模块中的结果表格都已经克隆到分层模块的表单上。这样的好处,不但是输入参数直截了当,而且仿真的结果也一目了然。

 

3.4 动画

ExtendSim 提供了二维和三维动画,来辅助模型的交流、调试和展示。最便捷的方式,也是默认的动画方式是在模型表单上直接进行二维动画制作,提供了仿真运行的快速展示。另一个复杂一些的动画制作方式,是在分层模块的外表制作动画和改变物件的形态。

Figure 6: 机场安检模型的三维动画窗口

 

ExtendSim 7 增加了三维虚拟现实功能。三维动画可以在3D 窗口环境下制作(见Figure 6)。三维虚拟现实可以运行在三种模式下,”QuickView” 模式建立起2D模型和3D造型之间的简单关联,只是在三维世界中以简单的一一对应关系快速呈现在2D模型中物件的流转;物件的运行在模块之间不是平滑发生的。这种模式可以让建模人员迅速通过三维动画对模型逻辑进行视觉验证。

与现实世界更接近的动画效果可以在”Concurrent”“Buffered” 模式下运行。在这些模式下,仿真时间和现实世界中的时间保持合理的比例,物体的运动可以同时移动或者滑动。“Concurrent”模式可以支持仿真和动画同时进行,而”Buffered”模式支持仿真结束后,将动画进行缓存后集中播放,这样用户有很大的灵活性在运算速度和动画效果之间取得平衡

用户可以通过模块设置,或者程序代码实现其他各种动画形式,包括物体的叠加、增加背景环境、有选择地显示物体、定义物体移动路径等等。ExtendSim 7 Item模块库和Animation 2D-3D模块库中提供了大量预制的动画命令,很多情况下不需要用户编写程序代码,就可以实现三维动画功能。

ExtendSim 7 集成了强大、成熟、用户群广泛并且源代码开放的三维虚拟现实系统,允许用户自己创建三维动画造型和逻辑,甚至这个动画逻辑可以完全不需要先建立一个模型,而直接将所有动画指令封装在一个客户化模块中,就可以实现复杂虚拟现实动画的演示。也就是说,这个三维虚拟现实环境可以在任意紧密程度上和ExtendSim的二维模型产生交互;如果逻辑是由二维模型驱动,那么三维动画可以在建模的任意阶段上添加进去。

 

4. ExtendSim 领先技术

ExtendSim 通过行业领先的底层技术实现强大功能和简便易用的结合。通过集成的图形化仿真数据库、数据链接、离散速率建模、消息驱动机制、以及集成的程序开发和编译环境,ExtendSim 在商用仿真工具中一直处于领先地位。

 

4.1 集成图形化仿真数据库和数据链接

如果询问任何一个有经验的仿真建模人员,在建模过程中最具挑战性的环节就是数据——数据采集、数据组织和数据维护。随着计算能力的提升,模型的规模越来越大。在上世纪80年代,一个包括整个工厂的模型即为大模型;而现在,一个单一的供应链模型就可以包括多个工厂、物流中心和广泛的客户群体。模型规模的扩大造成数据量的成倍增加。一些公司开发了和数据库集成的仿真工具,但碍于当时的计算能力,数据管理功能整体偏弱。

90年代,Simulation Dynamics 公司联合Imagine That Inc 公司开发了第二代仿真数据库,成为Extend 6 工业版的一个重要组成部分。这个数据库被实践证明对于管理和组织大规模数据发挥了极大的作用。采用这个数据库的仿真应用涵盖了广泛的领域,包括军事物流、建筑项目管理和核原料处理流程等等。

ExtendSim 7 标志着新一代仿真数据库的出现。第三代图形仿真数据库 GSDB 提升了用户使用界面,更紧密与模型逻辑结合,并且采用了新的技术确保数据交换的效率以及数据控制逻辑的有效性。

ExtendSim 图形仿真数据库是一个关系型数据库,允许用户在仿真模型中更有效率的管理数据。Figure 7 显示了一个包装线模型中的图形数据库。数据表格字段之间的关系清晰可见。

 

Figure 7: ExtendSim 图形化仿真数据库

 

将仿真模型和数据库融合的最大挑战来自于数据的交换。在其他仿真软件中,用户需要开发中间件进行数据的交换。在ExtendSim 中,有三种机制支持数据库和模型之间的数据交换:

  • 动态数据链接(Dynamic data linking, DDL)。模块对话框中的参数和表格可以很容易地链接到数据库中的数据表和记录。这个链接是通过点击对话框参数输入表格中的“LINK”按钮实现。ExtendSim 中链接警示技术(Link Alert Technology)可以在数据库中数据更新时自动通知相关的模块,这些模块可以马上应对,从而即刻对仿真模型的逻辑产生影响。

  • 读写模块(Read / Write blocks)。ExtendSim 7 包含可以和数据库进行数据交换的模块。数据库及其表格、字段和记录的地址都可以通过模块的端口动态地改变,允许用户在模型运行过程中与多个数据库进行数据交换。

  • 一整套数据库交换函数。ExtendSim 7 提供了额外40多个新函数,允许建模人员创建、获取、更改数据库结构及其内容。这些可以根据处理的繁简在Equation模块中便捷实现,或者通过一个客户化模块实现。

 

4.2 离散速率

离散速率仿真利用离散事件时钟的调度机制,模拟高速批量处理系统或者基于流速的系统。与一般的离散事件仿真模型不同的是,在离散速率模型中,物件(实体)的移动按照流体来对待。与ExtendSim 所定义的连续模型(Continous Model)不同的是,离散速率模型本质上还是由离散事件驱动,而不是基于一个固定的步长。在离散速率模型中的事件包括液罐的充盈和倒空、流速的改变、设备的开停机、批量投料等等。为了能够协调模型局部之间的物料平衡,获得有效的流速速率,ExtendSim 7 采用了线性规划(LP)技术。当模型定义了容量和流动规则等约束信息之后,ExtendSim 应用线性规划技术计算可能发生的最大流体流速,这些计算不需要用户介入,都是自动发生在仿真器的内部。线性规划优化器可以保证物料的均衡,解决同时刻冲突,也能够确保反馈回路的计算准确且没有延迟。ExtendSim 的离散速率技术和一般离散仿真模型充分集成,可以实现离散物体和流体之间的自由转换,适合存在流体和散件混合加工的情况。

 

4.3 消息驱动机制

消息驱动体系是ExtendSim仿真架构的经络,是维系模块之间交换信息的渠道。消息在仿真事件发生时传递给相关的模块和端口,保证每个模块有实时的信息。每个模块在收到相关信息后,通过内部信息处理程序在最准确的时间响应事件,并对系统的状态进行更新。并且,消息驱动体系保证了只有在消息出现的时候,才需要进行处理,而无需在每一个仿真步骤上都检查大量模块的状态,这样的结果就是一个极有效率的仿真运行机制。ExtendSim 是一个被实践中大型仿真项目验证有效率和有效果的仿真工具。

 

4.4 开发环境

与其他仿真软件相比,ExtendSim 以开放100%模块源代码所带来的无可比拟的可扩展性在行业中处于领先地位。ExtendSim 提供了自成一体的集成开发环境,无需外部安装编译器、调试器和程序代码书写器。内嵌式集成仿真开发环境具备很多优势:

  • 交互式。用户在模块对话框中输入的参数自动会成为底层代码变量的组成部分,而无需用户另外定义。底层代码中计算的统计结果也可以通过对话框实时反映出来。

  • 运算效率。ExtendSim 的编程语言ModLC语言几乎相同(区别在于ModL不区分大小写)。C语言所带来的运算内存消耗低、运算速度快、编译后程序代码小等特点都可以体现在ExtendSim工具中。用户不需要用其他高级语言例如C++或者VB编写程序代码(虽然ExtendSim支持调用用其他语言编写的程序),而直接利用ModL语言编写功能强大的程序。更重要的是,用户不必每次程序改动就重新编译,既费时又费力,而在ExtendSim中,任何程序代码在用户关闭模块时,就自动编译成机器代码,不需要预先编译和再编译。同时,用户可以对模块进行加密处理,有效地保护自主知识产权。

  • 超过1000多个函数,支持大量的客户化开发。通用的编程语言不具备支持仿真开发的功能和函数,而ExtendSim 提供了超过1000个函数,支持全面开发连续、离散事件、离散速率和基于Agent的仿真应用。ExtendSim的开发环境提供了错误检验功能,并且支持通用语言所不支持的数据结构,例如队列和链接列表等。

  • 集成的调试器。ExtendSim 集成开发环境提供了强大的仿真程序调试功能,支持单步调试、断点设定和变量查验等功能。

  • 支持用户界面设计。ModL 语言在用户启动ExtendSim 应用程序之后就处于活跃状态,也就是说,无论模型是否打开、是否运行,用户都可以通过程序代码和消息驱动机制进行程序设计。这个特点允许用户创建可以在仿真前、仿真后和仿真进行当中都可以交互的用户界面。ExtendSim 提供了类似Visual Basic界面设计那样一整套丰富的控件集合,可以设计复杂的客户化界面,每一个控件都可以产生、接受和处理各种消息。

  • 与外部程序的集成。ExtendSim在自身提供强大的开发环境之外,也允许用户和外部程序交互。这主要是通过COM DLL接口。

5. 总结

ExtendSim 建立在早期版本的巨大成功基础之上,在无数领域中,已经被证明是行之有效、容易使用、投资回报率令人尊敬的仿真工具。如果说仿真是一项实践性很强的技术的话,ExtendSim 在全球拥有最大专业仿真人员群体的事实可以说明,ExtendSim 是一个可以信赖的工具。

 

 

需要EXTENDSIM演示版软件?软件约100M,请发电子邮件到info@edgestone-it.com 索要免费CD(请注明您的通讯地址、邮政编码、单位和电话)

 

*软件产品由上海刃志信息科技有限公司 出具 普通商业发票