AnyLogic中“代理”类型参数的访问值
Posted
技术标签:
【中文标题】AnyLogic中“代理”类型参数的访问值【英文标题】:Access value of parameter of type 'Agent' in AnyLogic 【发布时间】:2021-02-13 16:51:48 【问题描述】:我正在研究的模型设置如下。它包含四种代理类型:
-
病人
小医院
中医院
大医院
。所有这些代理都位于 Main。 SmallHospital 和 MediumHospital 代理在网络中使用 link to agent objects 连接到 BigHospitals,例如:mediumHospitalLink
和 bigHospitalLink
。
生成后,患者通过 Patient 中的状态图移动到最近的医院代理(无论类型如何,使用 Patient 中的 this 函数)。 Patient 移动到的医院代理存储在 Patient 中名为 p_myFirstHospital
的参数中。 This parameter 具有“代理”类型,因为我事先不知道代理将转移到哪个医院类型。这不会导致任何错误并且可以按预期运行。
但是,我想在一段时间后将 Patient-agent 转移到第二家医院。如果患者目前在小型医院,则应移动到小型医院所链接的中型医院,同样,如果患者在中型医院,则应移动到中型医院所链接的大型医院。
我希望我能够从 Patient 中调用以下代码来访问这些代理:
p_myFirstHospital.mediumHospitalLink.getConnectedAgent();
或通过我创建的a simple function。它应该从存储在p_myFirstHospital
中的医院代理中的Link to agents
中检索代理。
很遗憾,这不起作用。编译器返回以下错误消息:
Description: smallHospitalLink cannot be resolved or is not a field. Location: model/Patient/f_DetermineSecondHospital - Function
我是否遗漏了一些 Java 或 AnyLogic 的细微之处?非常欢迎您的帮助和建议。
【问题讨论】:
【参考方案1】:那是因为 p_myFirstHospital 是 Agent 类型
所以你需要让java变魔术如下:
case1:
p_mySecondHospital=((SmallHospital)p_myFirstHospital).mediumHospitalLink.getConnectedAgent();
case2:
p_mySecondHospital=((MediumHospital)p_myFirstHospital).mediumHospitalLink.getConnectedAgent();
【讨论】:
感谢您的及时回复,即使是在星期六!这确实解决了它:-) 我试过(SmallHospital)p_myFirstHospital.mediumHospitalLink.getConnectedAgent();
,它缺少一对额外的括号。以上是关于AnyLogic中“代理”类型参数的访问值的主要内容,如果未能解决你的问题,请参考以下文章