实验框架

AnyLogic提供了丰富的实验框架,在该框架内你可以展开各项模拟操作,收集、展示、比较输出结果,并且可以校准和优化模型。一个模型中可以有多个实验;一个实验也可以打包,作为单独的Java程序或者应用程序输出。你可以使用AnyLogic图形编辑器来为实验设计复杂的互动式用户界面。对每一个实验都有许多的“补充说明”,在这里你可以规定在每一个复制,循环动作开始之前或结束之后需要执行的额外的动作。模拟实验结果可以以.csv扩展名格式保存,可随时在用户界面中重新载入或者在Excel中打开。Anylogic支持的实验类型有:

仿真

仿真是最基本的实验类型,在仿真试验中你既可以运用一定的参数值运行实验,以虚拟的或者实时的规模观摩仿真动画 ,也可以停止、暂停、重启模型操作,按步骤运行模型。

在模型执行过程中,你可以观察处于模型任何阶层的任何对象,检验各个事件,状态图,动态和普通参数的状态。

你可以用仿真实验来对模型的程序进行调整,对动态仿真过程进行视觉展示。其他所有的实验类型都将模型当做一个黑匣子,以最快的方式进行处理,而不会以动画方式进行展示。

参数变化

在该实验中伴随着一个或多个参数的修改,模型会被运行多次。你可以先规定参数的范围和步骤,然后使用Anylogic对各种参数的组合进行尝试;或者你可以用程序来控制参数值对于仿真运行系数的依赖程度。

如果由于某种原因,你的内置优化器不适合的话,该实验可以外挂你的优化算法:你可以规定在每个循环之后将启用什么代码来决定下一个参数集。

paramvariation.png

优化

[AnyLogic高级版中可选择实现的功能、AnyLogic专业版的一项基本功能]

在目标函数,限制,要求和参数(决策变量)可以变化的情况下,Anylogic使用内置的OptQuest优化器寻求最佳解决方案。通过复制操作可以支持不确定型优化:在参数值相同的情况下,随机性模型可以运行多次(这就叫做复制操作),参数空间中的下一步由总计的输出值决定。

Anylogic可以为优化实验自动生成用户界面,其中包含了现有的最好的解决方案以及优化过程的动态流程。

optimization.png

比较运行

[AnyLogic专业版可实现]

该实验是一种互动式实验,你可以在其中输入模型参数,运行仿真,在图表中添加仿真结果,并将该结果与其他运行的结果进行对比。

该实验的默认用户界面包括输入栏和输出表。你可以选择一种特定的输出结果,点击图标即可展示对应的参数值。

compareruns.png

敏感度分析

[AnyLogic专业版可实现]

该实验可以帮助你检测仿真实验结果对于模型参数变化的敏感度。实验向导会让你选择将要变动的参数和你感兴趣的输出值。对于单一的数值输出来行,会显示“输出vs参数”图标。

如果仿真输出是一个数值集(e.g.一个特定程序在一段时间内的动态过程),在一个图表中会显示多条曲线用于对比。

sensitivityanalysis.png

蒙特卡罗

[AnyLogic专业版可实现]

蒙特卡罗实验允许你多次运行一个仿真实验,获取输出信息的集合,并以柱状图形式展示。如果模型本身是随机的,那么即使你不改变输入参数,每一次运行可以产生不同的输出信息。另外一种情况是,对于每一个仿真运行可能会产生一个随意的参数值。

统计实验向导会问你你希望进行多少次重复,你是否希望改变参数,应该收集哪些数值或者数据集并将它们以柱状图形式展示。在该实验中可能会用到普通的或者是2D的柱状图。

montecarlo.png

校准

[AnyLogic专业版可实现]

在你的模型结构设定以后,你可能希望对一些参数进行调整,使它们在特定条件下的行为能够符合一定的模式。如果同时有几个参数需要调整,理所当然地就要使用一种内置的优化器来寻找一种最佳组合。这时候,你的目标就是要尽量缩小仿真输出值和观测数据之间的差别。

实验向导会询问你哪些参数需要被校准,哪些标准需要被运用。如果有多重标准,你就需要用到参数。校准过程和对每一种的标准的贴合度在默认的用户界面中展示出来。

calibration.png

Custom

[AnyLogic专业版可实现]

在自定义试验中,你有充分的自由可以设定参数,控制仿真操作,做出各种决定。它只是给出了一个代码字段,在该字段内你可以运用AnyLogic 引擎的丰富的Java API进行任意的操作(methods like run(), stop(), etc.)。