AnyLogic:模拟完成后查看每个代理的参数

时间:2019-12-22 19:14:59

标签: simulation anylogic

我运行了一个模拟,其中我有一个座席类型,但是到达的大小为100。座席有一个参数(例如颜色),该参数在模拟中会发生变化。我想在运行后查看每种代理的颜色。

我在文档site上看到可以使用图表或检查窗口。但是,此选项似乎适用于单个系统变量/参数。我想查看每个座席颜色的值,即100个参数的列表。我还将感谢您了解参数值的历史变化。我该怎么做?

2 个答案:

答案 0 :(得分:1)

可以有很多创造性的方法来可视化最终结果,这是一种:

将Chart元素拖到画布上,并删除其中的默认数据项。使用以下代码创建一个函数:

for(MyAgent myAgent : myAgents){
    DataItem di = new DataItem();
    //set the height of the bars
    di.setValue(5);
    chart.addDataItem(di, "MyAgent " + myAgent.getIndex(), myAgent.color);
}

在实验的“模拟运行后”框中调用此函数。此代码将在您的图表上绘制如下内容:

enter image description here MyAgent代理具有一个名为color的参数,该参数在启动时设置为randomColor()。

要存储座席具有的所有颜色,可以在座席中创建ArrayList类型变量,每当更改值时,将其添加到列表中。我现在想不出更好的方法,也许有人会回答更有效的方法:)

enter image description here

答案 1 :(得分:1)

这是一个普遍的问题;有很多方法可以做到这一点,具体取决于您想要的内容(确切的细节也将取决于您如何编码/确定模型中的颜色)。作为一些通用指针

  • 如果您希望每个业务代表单独的值,则可以创建具有动态数据条目数量的图表(如Sahar的回答),或使用复制的Text对象(具有动态内容)来生成表格---请参见< strong> AnyLogic帮助> 2D和3D动画>形状复制帮助主题。

  • 如果要总计(例如每种颜色的座席人数),可以向座席人群添加统计并查询图表(或一组Text对象)-请参见 AnyLogic帮助>基于代理的建模> 收集关于代理商的统计信息帮助主题或"AnyLogic 7 in 3 Days" free textbook中的市场模型的第3阶段(第54页)。

  • 如果您需要上述功能,但又不想对每种颜色进行硬编码(就每种颜色的统计数据而言),则可以执行以下操作:

    • 编写一个函数,该函数接受Color(作为参数)并遍历总体,返回该颜色的代理商数目;
    • 在某些集合中定义颜色集,并根据模型的具体情况动态添加内容;
    • 使用图表(具有动态数量的数据条目)或复制的Text / shape对象来显示此信息(即,每个集合条目的条目和通过调用函数获取的值)。
  • 如果要获得纵向数据(在模拟时间内),请使用数据集来存储时间序列数据(也可以使用图表进行绘制)-请参阅 AnyLogic帮助>收集输出数据>数据集帮助主题。如果需要动态确定所需的数据集数量,则可以动态(在Java级别)创建数据集。