如何在AnyLogic中基于代理的经典建模中使用代理定位Canvas

时间:2019-11-12 19:35:49

标签: anylogic agent-based-modeling

我是AnyLogic的新手,试图弄清楚应如何在其中设置基于Agent的模型。我正在尝试复制著名的Epidemic model。大多数有关经典ABM的教程都处理旧的GUI设置。

例如,在现在已经实际使用的8.5+版本中,不推荐使用Environment对象(用于放置布局)。

现在,我看到新对象Canvas用于在页面上放置带有代理的布局。但是对我来说源代码文件的结构还不清楚,我没有找到相关说明如何设置Canvas。 (此外,我不确定是否推荐使用此方法来完成此任务。)

enter image description here

问题:我很想学习在页面上使用代理人随意放置区域的正确方法。在下面,您可能会看到我默认得到的内容。

enter image description here

1 个答案:

答案 0 :(得分:1)

经过一番尝试后,“简约”功能如下。

  1. 一个人应该创建一些具有任意名称Person(人口名称people会自动添加)的种群。

  2. 将复制Project的以下结构(任意名称标记为黄色)。

enter image description here

注释:添加名为mapCanvas的Canvas后,将添加具有以下主体的函数setCanvasCellColor

  

mapCanvas.fillCircle(person.getX(),person.getY(),3,color);

很明显,前两个参数代表给定点的坐标,然后是其大小(即3)和颜色。不要忘记添加正文中使用的两个参数,即person作为Personcolor作为Color

    名为state的状态图的
  1. Entry Action 中调用刚刚完成的函数。我在这里放了黑色,只是为了演示。在流行病示例中使用了chartreuse常量。
  

main.setCanvasCellColor(this,black);

  1. 最后,您可以运行模型以获取下图。

enter image description here

注意 如果不愿使用Canvas,请使用主-演示-xxx_presentation 并单击Draw agent with offset to this position复选框。