anylogic - AnyLogic中“代理”类型参数的访问值
问题描述
我正在研究的模型设置如下。它包含四种代理类型:
- 病人
- 小型医院
- 中医院
- 大医院
. 所有这些代理都位于 Main。SmallHospital 和 MediumHospital 代理在网络中连接到 BigHospitals,使用链接到代理对象,例如:mediumHospitalLink
和bigHospitalLink
。
生成后,患者通过 Patient 中的状态图移动到最近的医院代理(无论类型如何,在 Patient 中使用此功能)。Patient 移动到的医院代理存储在 Patient 中名为 的参数中p_myFirstHospital
。此参数的类型为“代理”,因为我事先不知道代理将移动到哪个医院类型。这不会导致任何错误并且按预期运行。
但是,我想在一段时间后将 Patient-agent 转移到第二家医院。如果患者当前在小型医院,则应移动到小型医院所链接的中型医院,同样,如果患者在中型医院,则应移动到中型医院所链接的大型医院。
我希望我能够从 Patient 内部调用以下代码来访问这些代理:
p_myFirstHospital.mediumHospitalLink.getConnectedAgent();
或通过我创建的一个简单函数。它应该从Link to agents
存储在 中的医院代理中检索代理p_myFirstHospital
。
不幸的是,这不起作用。编译器返回以下错误消息:
Description: smallHospitalLink cannot be resolved or is not a field. Location: model/Patient/f_DetermineSecondHospital - Function
我错过了一些 Java 或 AnyLogic 的细微之处吗?非常欢迎您的帮助和建议。
解决方案
那是因为 p_myFirstHospital 是 Agent 类型
所以你需要让java魔法如下:
case1:
p_mySecondHospital=((SmallHospital)p_myFirstHospital).mediumHospitalLink.getConnectedAgent();
case2:
p_mySecondHospital=((MediumHospital)p_myFirstHospital).mediumHospitalLink.getConnectedAgent();
推荐阅读
- amazon-web-services - 是否值得在不同的 AWS 位置发布不同的站点语言?
- unit-testing - 使用 dotCover 命令行工具(JetBrains)的单元测试覆盖率 - 是否可以使用 x64 dll 测试运行此工具?
- selenium-webdriver - 外部代理 Titanium Web 代理?
- javascript - chrome扩展错误:拒绝执行内联事件处理程序,因为
- jpeg - 如何为 JEPG 霍夫曼值建立查找表
- unit-testing - 未执行任何测试(Play Framework)
- python - 有没有办法在字节正则表达式中使用 \b ?(Python)
- python - 如何提高拆分列表的速度?
- java - keytool 要求输入密码以读取 java 证书 ubuntu 18.04
- mongodb - 遍历 MongoDB 集合并删除每两个连续 id 的文档