代理状态图中主要的可访问性
Posted
技术标签:
【中文标题】代理状态图中主要的可访问性【英文标题】:Accessibility of main from agent's statechart 【发布时间】:2020-11-16 23:43:31 【问题描述】:我可以知道模型中的所有元素是否都可以访问 main 吗?
我问的原因是我创建了一个简单的 M/M/n 模型,其中一个资源类型是通过 ResourcePool 创建的。资源类型的行为是使用状态图实现的。我在状态图中的转换动作中编写了一个简单的代码,即
if (agent_variable < main.my_parameter) /* do something */
代码无法编译并给出错误消息“main cannot be resolve to a variable”。我无法弄清楚为什么状态图无法识别 main。
谢谢
【问题讨论】:
【参考方案1】:欢迎来到 SOF,斯蒂芬。
首先,始终使用代码完成(Ctrl+空格)。然后,您将看到从您所在的位置可以访问和无法访问的内容。在你的情况下,main
甚至不是一个选项:-)
现在,您的模型根(通常是 main
)始终可以通过 getModelRootAgent()
访问,但您需要将其转换为您的 Main
类,即 ((Main)getModelRootAgent())
否则,所有嵌入 Main 的代理都可以访问 Main
。这是经典的 OOP 原则。您的资源代理实际上不是嵌入式人口,因此无法直接访问 Main。 (不过,您可以在 ResourcePool 属性中实现这一点)
【讨论】:
嗨,本,感谢您的指点。我找不到 getModelRootAgent() 但我发现 getRootAgent() 似乎与您的解释具有相同的目的。为了他人的利益,以下代码有效(而在我的情况下直接使用 main 不起作用): if (agent_variable > ((Main)getRootAgent()).a_parameter_in_the_main) // do something 是的,没有打开 AnyLogic,只是从我的记忆中说出来。如果你使用code-complete,你也会看到它的描述以上是关于代理状态图中主要的可访问性的主要内容,如果未能解决你的问题,请参考以下文章
UIStackView 可访问性 - 在默认的可访问元素中插入可访问性视图?