AnyLogic,是一款应用广泛的,对离散、系统动力学、多智能体和混合系统建模和仿真的工具。它的应用领域包括:物流、供应链、制造生产业、行人交通仿真、行人疏散、城市规划建筑设计、Petri网、城市发展及生态环境、经济学、业务流程、服务系统、应急管理、GIS信息、公共政策、港口机场、疾病扩散等。
AnyLogic是一款独创的仿真软件,它以最新的复杂系统设计方法论为基础,是第一个将UML语言引入模型仿真领域的工具,也是唯一支持混合状态机这种能有效描述离散和连续行为的语言的商业化软件。
AnyLogic是一个专业虚拟原型环境,用于设计包括离散,连续和混合行为的复杂系统。AnyLogic帮助你快速地构建被设计系统的仿真模型(虚拟原型)和系统的外围环境,包括物理设备和操作人员。
使用AnyLogic, 用户并不需要另外再学习什么语言或图形语言。AnyLogic所有的建模技术都是以UML-RT,Java和微分方程(若用户想要为连续行为建模)为基础的,这些也是目前大多数先进用户所熟悉的技术。如果你比较喜欢快速的“拖-拉式”建模,AnyLogic也提供一系列针对不同领域的专业库。
AnyLogic的动态仿真具有独创的结构,用户可以通过模型的层次结构,以模块化的方式快速地构建复杂交互式动态仿真。AnyLogic的动态仿真是100% Java的,因此可以通过Internet访问并在Web页上显示。
AnyLogic独特的核心技术和领先的用户接口使其成为设计大型复杂系统的理想工具,因为构建物理原型进行试验代价高昂,耗时太长,有时还不一定成功。
1、什么是AnyLogic
AnyLogic提供客户独特的仿真方法,即在任何Java支持的平台,或是Web页上运行模型仿真。AnyLogic是唯一可以创建真实动态模型的可视化工具,即带有动态发展结构及组件间互相联络的动态模型。
AnyLogic强大而灵活,并提供多种建模方法:
基于UML语言的面向对象的建模方法
基于方图的流程图建模方法
Statecharts(状态机),分为普通的和混合的
微分和代数方程
用Java建模
AnyLogic的建模语言是UML-RT的扩展。UML-RT在许多复杂大系统的建模设计中被证明是一组最佳设计方法的集合。构建AnyLogic模型的主要方图是活动对象。
活动对象有其内部结构和行为,可以任意向下封装其他对象。设计AnyLogic模型,实际上就是设计活动对象的类并定义它们之间的关系。运行时模型可看作活动对象瞬间展开的层次。
(活动对象图)
活动对象通过边界对象与周围交互作用,如:端口(用于离散交流)或变量(用于连续交流)。
离散建模
AnyLogic的离散建模结构包括对象间通讯层的信息传递机制,状态图和位于对象内部行为层上的各种基本数据单元(如时钟和事件)。
(AnyLogic的端口和信息传递)
信息通过端口发送和接收。端口是双向的,并且接收的信息有可能在端口排成队列。信息一经发送,就在端口所有的外部连接通道上广播。接收的信息可能被储存在队列中,也可能沿着内部连接通道前进。端口的缺省行为可以任意修改。
对象内部的行为如果简单,可以用时钟来定义,但如果事件和时间顺序较为复杂的话就用状态图来定义。
(AnyLogic的状态图)
AnyLogic支持UML中的状态图,包括复合状态,分枝,历史状态等等。信息,各种事件,条件和延时都可以触发状态图中的转移。
(AnyLogic中的静态时钟和动态时钟)
AnyLogic中有静态时钟和动态时钟之分,后者是用来确定由多个对象和信息组成的多个事件的时间进度。
AnyLogic的仿真器执行离散事件的仿真,并保留仿真的顺序和原子数。同时发生的事件仿真时的顺序是随机的。
连续建模
在AnyLogic中,离散逻辑关系用状态图,事件,时钟和信息来描述,而连续过程则用微分方程表示不断变化的变量。这些变量可以放在活动对象的外面与其他对象连接。
(AnyLogic中的变量和方程)
AnyLogic支持一般的微分方程,代数方程以及两者的结合。方程中的变量类型可以是标量或矢量。仿真器的多种数学计算方法可以处理简单或复杂的系统,此外用户还可以使用外部的数学库文件。
(AnyLogic的数学计算方法)
仿真器自动检查方程的正确性,调整计算方法,监测并打断数学循环。
混合建模
事实上,我们周围的世界是混合的,时间连续的过程中又包含离散的事件。在许多真实的系统中,这两种类型的行为相互依赖,这就需要在仿真建模时使用特殊的方法。传统的工具往往只支持完全离散或完全连续的建模,也有的工具将两者结合,但笨拙不易使用。
AnyLogic是唯一一款创新开发混合建模的商用仿真工具。它的离散建模和连续建模能力都非常强,尤其是当两种行为紧密结合的时候。
(AnyLogic的混合状态图)
AnyLogic混合建模最显著的特点体现在混合状态图上。在混合状态图中,用户可以将方程与图中的状态图结合起来,状态的转移可以引发连续行为的改变。用户也可以在连续变化的变量上定义条件,触发状态的转移,这样,连续的过程就能驱动离散的逻辑关系了。
AnyLogic将UML加以简单扩展,自然地将两种类型的行为结合在一起,因此,所建的混合系统模型简洁而高效。
建模技术
AnyLogic模型的可视化图形是由Java编写的,用户可方便地定义对象,端口,信息,时钟等的功能;并且在模型的任一层次,都可直接在模型编辑器中添加Java代码。有了Java,再加上面向对象的模型图,用户便可以得心应手地构建任何复杂棘手的模型了。
(AnyLogic可以方便地构建普通拓扑结构的系统)
规则结构的系统
假设需要对一些有规则结构的系统建模,如网,托,链,环等,用户只需复制一些对象,定义对象的个数作为参量,然后用Java语句将对象连接起来即可。
动态变化结构的系统
如果被设计系统中的对象或对象的连接被限定了生命周期,(即随着系统的发展被创建和删除),那么用户就需要在适当的时候调用“创建/处理或连接/断开”等功能。
(AnyLogic的信息传递)
定制信息传递
用户可通过定义信息传递的方式使AnyLogic的信息智能化,如在信息中包装另一条信息,或是忽略端口的缺省行为,改变信息传递的语法。例如,如果用户需要建一个信息传递的模型,并且在广播时注明地址,他只需要在信息类中定义目的域,并在端口写上简单的代码。
增加Java模块
如果用户觉得直接用Java写算法比画状态图更方便的话,那也可以。手写的Java模块与模型中其他部分并行运行。
总之,用户可以添加任何Java编写的类,在模型中丰富现有的Java控制与库。用户也可以设计模型与物理设备的网络通讯,也可以通过JNI访问其他语言编写的代码。
动画仿真
AnyLogic独创的技术使得用户能够快速地在模型编辑器中创建互动的二维动画仿真,但这种动画仿真与模型是相互独立的。
(动画仿真的内容与模型的对象)
用户可以将单独的活动对象图与活动对象的类连接起来,将封装的对象图放入容器对象图中。创建模型的时候再把这些对象图组装起来。这样,图形的利用效率就很高。
动画仿真包括一些基本图形,各种形状的指示器和图表,另外,添加的互动部分,如按键,滚动条,编辑区域等,使用户可以在模型仿真时进行操作。设计较为复杂的动画仿真时,可运用AnyLogic提供的多个API自定义动画。
AnyLogic的动画仿真和它的模型一样,100% Java,用户在模型中执行Applet程序,即可在浏览器上显示动画仿真。
跨平台和网上
AnyLogic模型是100% Java的,因此它们可以在任何支持Java的平台上运行。需要的话,模型可以通过TCP与远端Windows显示器相连接。
(AnyLogic模型是如何运行的)
此外,用户还可以将模型放入Applet程序中。Applet显示互动的动画仿真和一个用于开启,关闭和重启模型仿真的控制面板。Applet使用的仿真器大小不超过300K, 载入用户计算机后可被所有模型共享。
框架结构
AnyLogic的框架结构包括随机的模型输入条件,对经过统计的输出结果进行收集,分析和表示,参数变化机制,与数据库的接口,电子数据表,数据存储,工具箱的优化和丰富的API。
随机建模
AnyLogic的模型可以是随机或确 定的。AnyLogic默认标准的Java随机生成的号码,用户也可自行插入号码。在AnyLogic软件包中,有超过35种的功能分类。
数据库
AnyLogic的数据库帮助用户收集,显示和分析模型执行过程中的数据。数据库包括可带有时间标识的标量和矢量。每个数据集都有一组包括平均值,方差,最小值,最大值,confidence intervals等的统计数据。AnyLogic的模型浏览器支持不同的数据集表示方法,如,曲线图,柱状图和甘特图等。
与外部数据存储连接
AnyLogic模型可与数据库,电子数据表和其他文件协同工作。例如,用户可以从数据库中摘取模型中定义的参数,并输入到电子数据表中。
优化
AnyLogic的最优化工具箱包括简单的最小值查找,牛顿和随机查找等。AnyLogic同时提供与外部优化软件的接口。使用AnyLogic的API,用户可以自行写入仿真的控制语句,改变参数的值,或执行一个定制的优化算法。
其他特性库
AnyLogic的库包括:对象类,动画仿真,信息类,以及为某些特殊应用领域或模型开发的Java模块。有了库,不同模型的对象可以得到很好的重复利用。AnyLogic自带了许多库文件,用户以此为基础,可以方便的创建自己的模型。用户在AnyLogic中正确开发针对某一领域的库文件,以后建模就非常方便。
模型编辑器
AnyLogic的模型编辑器是最先进的Windows用户界面。它包括为用户定制的窗口,工具条,色彩选择,图形,拖拽式操作,视图缩放,句法加亮显示等。工作区间提供整个项目的目录树。编辑器还快速检查类型,参数和图表句法的正确性,一旦发现错误就加亮显示。编辑器还生成HTML或XML格式的报告,其中包括图表,要素和代码等。
模型浏览器/调试器
AnyLogic还包括一个可视化模型浏览器/调试器,特征为:
模型的远端或近端TCP连接
运行模型时的多种选项
使用模型探测器做导航,可以访问任何对象
结构和状态图的快速动画显示
图形化的断点,日志和视窗
统计数据的表示(柱状图,甘特图,曲线图)
事件浏览器
运行时改变变量和参数的值
支持HLA的分布式仿真
AnyLogic支持HLA这种描述仿真分布和协同工作的标准结构。AnyLogic的Java HLA模块通过特定的接口与仿真器通讯,从而与AnyLogic的仿真或任意一个模型呈分布式结构协同工作。