【问题标题】: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。

谢谢

【问题讨论】:

    标签: anylogic


    【解决方案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,你也会看到它的描述
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-14
    • 2018-11-07
    相关资源
    最近更新 更多