Anylogic:如何在主代理中创建代理图?

Anylogic: How to create an agent graph in the Main agent?

在我的 Anylogic 模型中,我有 4 个代理的代理群体(终端),时间测量如下所示。我想制作这个 end.distribution.

的图表

如果我在该代理选项卡和 运行 模型中创建图表,该图表将始终出现在主代理的 GIS 地图中,这使得它不可读。因此,我想在 Main agent 选项卡中创建图表。但是,当我使用此直方图数据在主代理中制作图表时:terminals(0).end.distribution,我收到此错误:Index 0 out of bounds for length 0,而有 4 个代理并且对 terminals(0) 的引用确实在另一个代理群体的标签。有人知道如何让它工作吗?

你的问题是 initialisation-order 一个:你的直方图在创建它们所引用的数据的嵌入式代理之前自行初始化(因此你得到了错误)。

有多种方法可以控制初始化顺序,但这里的 'correct' 解决方案(不考虑初始化顺序)是使用 replicated 直方图,其中每个复制'links' 到适当的终端代理以获取其数据(因此只有当相应的终端代理存在于其人口中时才会存在)。

这也意味着您只需 'code' 一次直方图,它会动态调整以创建与代理一样多的直方图(这是您通常总是想要的)。

(复制图表的 X 坐标的表达式将取决于它的宽度。在我的例子中,图表位于 x=40,宽度为 300,所以我将每个复制分开 350 50 之间的差距。)

请参阅帮助部分 AnyLogic 帮助 > 2D 和 3D 动画 > 形状复制 了解有关复制的更多详细信息(适用于多种不同类型元素的非常强大的功能)。