Anylogic 将代理从代理群体分配到流体源批次

Posted

技术标签:

【中文标题】Anylogic 将代理从代理群体分配到流体源批次【英文标题】:Anylogic assign agent from population of agents to fluidsource batch 【发布时间】:2020-08-03 07:27:10 【问题描述】:

我创建了一个包含一些属性(列)的电子表格;然后在 Anylogic 中创建一个代理(代理群)并从数据库加载它。运行模型。完美运行,它表明我有一个包含 6 个代理的代理群体“产品”..(模型有 FluidSource、Pipe、Tank、Valve、FluidDispose,所有基本配置)

所以现在我打开 FluidSource,选择自定义批处理并为批处理:products.get[0].productName(产品名称是字符串类型的参数)。我也试过:

products[0];
products[0].productName;
products.get(0);

现在再次运行......在模型窗口中显示“绘制动画帧时出错......”(右上角的橙色块) 在 model.Console 中它说:模型创建期间出错: 索引:0,大小:0 java.lang.IndexOutOfBoundsException:索引:0,大小:0 ...

我做错了什么?如何将我的 FluidSource 批次分配给我的“产品”代理之一?

【问题讨论】:

所以我再次取出“自定义批处理”选项(将其保留为默认批处理),添加文本和按钮并编码按钮的操作: products.get(0).productName;并运行。它显示我的代理群体中有六种产品,当我按下按钮时,我的文本显示“ULP95”——这是我的第一个“产品”代理的正确名称——所以代码没有问题?? 【参考方案1】:

问题在于初始化的顺序:您的 FluidSource 对象试图访问products 人口该人口实际上充满了代理。

使用此条件检查为此创建您的 FluidSource 帐户:

products.size() == 0 ? "InitialBatch" : products[0].productName

【讨论】:

谢谢!用于设置初始批次。然后稍后在代码中可以通过注入(数量,批次,颜色)函数使用具有不同产品的相同来源。感谢您的帮助。 抱歉,不清楚您的意思。我建议你把它变成一个新的、明确的问题。始终尝试在此处针对 1 个问题提出具体问题,以便其他有相同问题的人将来也能从中受益。并将回复标记为“有用”,以便其他人看到它确实有帮助。请参阅***.com/help/how-to-ask 了解更多信息 :-)

以上是关于Anylogic 将代理从代理群体分配到流体源批次的主要内容,如果未能解决你的问题,请参考以下文章

在 anylogic 中为 50% 的代理分配优先级

Anylogic SelectOutput5 自定义分布

在 Anylogic 中与单个块内的两个代理进行通信

如何将 AnyLogic 代理从一个空间移动到另一个空间?

获取不同代理类型 AnyLogic 的等待时间

启动时的 Anylogic Agent 创建顺序