【问题标题】:How do I call out the Agent Type for a custom block?如何调出自定义块的代理类型?
【发布时间】:2020-05-20 14:41:17
【问题描述】:

我有一个自定义块,它需要来自通过它的代理的参数和变量信息。我想设计这个块以用于不同的代理类型。如何像在其他内置块中一样在当前模型中创建所有可用代理类型的下拉列表?我假设它是一个具有内部值的参数,但不确定参数类型、拉取代理类型的方法等。见下图:

【问题讨论】:

    标签: anylogic


    【解决方案1】:

    您使用本帮助部分中概述的通用参数(用于定义自定义块的代理类型):AnyLogic 帮助 > 参数、变量、集合 > 参数 > 通用参数。。 p>

    通过为参数化类型赋予“代理类型:”标签(而不是默认的“通用参数:”),您还可以使其看起来更像 AnyLogic 块中的样子。

    (主要区别在于它不在高级属性部分中。)

    请记住使用您命名的泛型类型(例如,T)作为自定义块内的块(或其他代码)的代理类型(对于那些您需要将其视为该类型的区域)通用代理)。

    这是在幕后使用Java generics,因此为什么有一些特定的Java语法,例如T extends Agent用于类型参数详细信息(这只是意味着泛型类型T是Agent的某个子类(子类型) )。

    【讨论】:

    • 所以我已经离开这个自定义有一段时间了,但我正在重新开始它。我已经查看了 Anylogic 的帮助和上面提供的 Oracle Java 泛型链接,但在实现它时遇到了问题。我的最终目标在这里:link
    【解决方案2】:

    您使用如下类型转换。请注意,“代理类型”设置应保持默认(也是最通用的)“代理”

    【讨论】:

    • 对不起,我不清楚。有时我会将我的块插入到有 Cart 代理类型在其中移动的流中。其他时候,它将在一个具有 Person 代理类型的流中移动。其他时候,它将在 PalletJack 流中。如何创建一个下拉列表,让块知道什么类型的代理正在流经它,以便我可以强制转换正确的代理类型以正确拉取参数?
    • 啊,好的。在上面查看我的新答案
    • 我认为他说的是让他的自定义块包含一个“代理类型”参数(对于 AnyLogic 提供的块),以便它们可以支持多种代理类型通过。 (默认情况下自定义块没有这样的设置,因此无法开箱即用地允许自定义块的用户访问特定类型的agent 在块的操作属性中。)
    猜你喜欢
    • 2021-11-15
    • 1970-01-01
    • 2013-04-10
    • 2012-07-25
    • 2011-12-15
    • 1970-01-01
    • 2016-01-14
    • 1970-01-01
    相关资源
    最近更新 更多