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

How to position Canvas with agents in classical Agent-Based Modeling in AnyLogic

我是 AnyLogic 的新手,正在尝试弄清楚应该如何在那里设置基于代理的模型。有一个著名的 Epidemic model,我正在尝试复制它。大多数关于经典 ABM 的教程都涉及旧的 GUI 设置。

例如,在现在实际的 8.5+ 版本中,Environment 对象(用于定位布局)已被弃用。

现在我看到新对象 Canvas 用于在页面上放置带有代理的布局。但是源代码文件的结构对我来说有点不清楚,我也没有找到相关的描述如何设置 Canvas 。 (此外,我不确定这是执行此任务的推荐方式。)

问题:我很想学习在页面上任意定位代理区域的正确方法。下面你可能会看到我默认得到的。

经过一番尝试,'minimalistic' 功能如下。

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

  2. 转载Project的以下结构(任意名称用黄色标出)

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

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

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

  1. 从名为 state 的状态图的 Entry Action 调用刚刚创建的函数。为了演示,我在这里放了黑色; chartreuse 常量在 Epidemic 示例中被使用。

main.setCanvasCellColor(this, black);

  1. 最后,您可能运行模型得到如下图

备注 如果不想打扰 Canvas,请使用 Main - Presentation - xxx_presentation 并单击 Draw agent with offset to this position 复选框。