首页 > 解决方案 > 如何在 AnyLogic 中的经典基于代理的建模中使用代理定位 Canvas

问题描述

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

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

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

在此处输入图像描述

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

在此处输入图像描述

标签: anylogicagent-based-modeling

解决方案


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

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

  2. 下面的结构Project是要复制的(任意名称用黄色标出)。

在此处输入图像描述

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

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

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

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

main.setCanvasCellColor(this, black);

  1. 最后,您可以运行模型得到下图。

在此处输入图像描述

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


推荐阅读