在 AnyLogic 中导航到代理/代理的默认视图?
Posted
技术标签:
【中文标题】在 AnyLogic 中导航到代理/代理的默认视图?【英文标题】:Navigate to agent / agent's default view in AnyLogic? 【发布时间】:2017-11-17 09:18:45 【问题描述】:当您在 AnyLogic 中双击某个代理时,它会导航到该代理的内部结构,以便您查看其状态、变量等。有没有办法通过函数调用以编程方式执行此操作而无需添加 ViewArea
?我目前的解决方案是添加一个ViewArea
,然后在我需要导航到代理时使用viewArea.navigateTo()
,但是在多种代理类型中多次执行似乎太过分了。
【问题讨论】:
【参考方案1】:每个代理都有默认的视图区域对象,它的名字是_origin_VA
。所以,你可以调用agent._origin_VA.navigateTo();
这样的东西,这个区域在图形编辑器中是不可见的,但你可以通过代码完成找到它。
【讨论】:
【参考方案2】:过去,当您在 AnyLogic 中双击一个代理时,它会导航到该代理的内部,以便您可以看到它的状态、变量等。
你在这里是什么意思?您仍然可以双击嵌入式代理直接导航到它们。
我当前的解决方案是添加一个 ViewArea,然后在我需要导航到代理时使用 viewArea.navigateTo(),但是在多种代理类型中多次执行似乎太过分了。
这就是以编程方式执行此操作的方法。不要在您需要的每个代理中复制它,而是使用具有 ViewArea 和导航的超类代理,以便您可以跨代理重用它(例如,代理 ViewAreaAgent
与您的代理 AgentA
和 AgentB
扩展 @987654325 @)。
我希望避免子类化:在构建包含连续 2D 和 GIS 环境的分层模型时,它曾经给我们带来各种问题。也许在 8.1(最近从 7.3.7 升级)中不再是这种情况。
什么样的问题(出于更普遍的兴趣)?我认为没有任何简单的方法可以在没有子类化的情况下共享视图区域功能。 (更一般地,在 Java 中,您可以使用接口和对象组合之类的东西,而不是 继承做同样的事情---见Bloch's Effective Java(特别是第2版中的第16条)---但我认为这在这里不起作用,因为视图区域需要在您正在导航的代理中到。)
【讨论】:
对此感到抱歉。我已经澄清了。我希望避免子类化:在构建包含连续 2D 和 GIS 环境的分层模型时,它曾经给我们带来各种问题。也许在 8.1(最近从 7.3.7 升级)中不再是这种情况。以上是关于在 AnyLogic 中导航到代理/代理的默认视图?的主要内容,如果未能解决你的问题,请参考以下文章