Anylogic - 从其他代理访问变量

Posted

技术标签:

【中文标题】Anylogic - 从其他代理访问变量【英文标题】:Anylogic - access variables from other agents 【发布时间】:2019-02-11 11:07:40 【问题描述】:

我正在尝试在由多个代理组成的 anylogic 中对生产基础架构进行建模。其中之一是“蒸汽网络”(系统动力学),它从无处可寻的流动开始。该流量的动态值应该是另一个代理的蒸汽输出。不幸的是,我无法弄清楚如何将流量与我的代理“机器”的蒸汽生产(动态变量)联系起来。

感谢您的帮助。

【问题讨论】:

【参考方案1】:

流对象允许您将流设置为任何内容(它是一个 Java 字段),因此您可以轻松地将其链接到您的代理变量,如下所示:

实际代码取决于您的模型结构,即蒸汽代理如何嵌入相对于为它提供流量的 myAgent。在我的示例中,“MyAgent”只是嵌入在蒸汽机中,但您的可能会有所不同。如果这是问题所在,请查看帮助部分Where am I and how do I get to...

【讨论】:

嗨本杰明,感谢您这么快回答。我确实插入了 myAgent.myVariable 。在我的模型中,它是 Gaskessel.DampfproduktionGaskessel,其中 Gaskessel 是动态变量 DampfproduktionGaskessel “存在”的代理的名称。但是,我确实收到错误消息:“表达式包含具有未定义单位的变量”和“无法对非静态字段 DampfproduktionGaskessel 进行静态引用”。是因为 DampfproduktionGaskessel 是动态变量吗?我错过了什么吗? 不,您需要了解模型导航,请查看我发布的链接。您需要了解如何从流对象导航到代理的变量。这取决于您的模型结构(代理如何嵌入)。不错的德语命名,顺便说一句;-)【参考方案2】:

为了阐明模型导航,以我制作的这个示例模型为例:

它在 main 上嵌入了 2 个不同的代理。 "OtherAgent" 有 1 个 double 类型的变量 v_DefiningFlowRate,设置为 12。

主“SysDynAgent”上的第二个代理有一个流对象,该对象通过正确导航到“OtherAgent”来提取流量:

这是您需要在模型中适应的内容

【讨论】:

请注意,您的“OtherAgent”可能是一组代理。在这种情况下,流对象中的代码看起来像“get_Main().otherAgent.get(0).v_definingFlowRate”,您需要确保选择正确的 otherAgent(此处为#0)!

以上是关于Anylogic - 从其他代理访问变量的主要内容,如果未能解决你的问题,请参考以下文章

从另一个代理(anylogic)访问“Main”中的变量

基于代理的 Anylogic,滑块和事件错误

AnyLogic - 修改代理变量

在 Anylogic 中移动一个代理到另一个代理中

AnyLogic中“代理”类型参数的访问值

AnyLogic 为 Main 中的代理定义速度