【问题标题】:How to select output in Anylogic by agent parameter?如何通过代理参数在 Anylogic 中选择输出?
【发布时间】:2018-08-25 15:54:43
【问题描述】:

所以,我对 Anylogic 还很陌生,但是已经完成了很多教程,并且我有 Java 编程经验。对于我的论文,我将车辆流建模为一个过程。在源代码块中,我使用数据库中的一些参数创建自定义代理(车辆)。这工作正常。然后我想用 randomTrue(0.5) 分配一个 electric 参数。为此,我调用了一个 setupTaxi 函数,其中设置了 electric。 randomTrue 函数的参数应该是可变的,所以我将它设置为一个额外的参数 anteilEtaxis (0.5)。

之后,我希望车辆使用 SelectOutput 根据 electric 的值做不同的事情。我在 agent.electric 上选择了条件和测试。

我基本上做了与 Anylogic 帮助中描述的完全相同的事情。然而框架总是选择true输出端口,无论参数设置为true还是false

查看图片了解设置和参数。我通过控制台对此进行了测试(第一行是源代码中的 println-call,第二行是 selectOutput 中的 println-call。)。另外你可以看到参数设置为不同的值,因为 3D 可视化模型依赖于它:

enter image description here

另外,我尝试了几种不同的设置参数组合、读取参数等...唯一可行的方法是将 randomTrue(0.5) 直接放入条件框中。这不是我想要的。所以如果你有什么想法,有什么问题,请告诉我。

【问题讨论】:

    标签: anylogic processmodel


    【解决方案1】:

    这是一个典型的初学者问题。

    我假设您在“退出”操作中调用源中的 setupTaxi 函数...如果您这样做,那么为时已晚,代理已经决定在选择输出块。

    您必须在 2 个可能的地方调用 setupTaxi 函数:

    1) 在您的源中“退出时打开”操作

    2) 在您的车辆代理上的“启动时”操作

    甚至.. 只需让电变量具有 randomTrue(main.anteilEtaxis) 的默认值...这也可以。

    【讨论】:

    • 谢谢!你是对的,setup 的函数调用在“on Exit”字段中。我把它放在“at Exit”字段中,它现在可以工作了。我仍然不明白为什么或如何做出决策。我会试着查一下。感谢您的帮助!
    • 顺序不是很直观...它按以下顺序运行: - 退出时 - 输出块的条件 - 退出时 - 进入 但在某些情况下,条件也可能当代理卡在等待被选择输出之后的块拉出的块中时,甚至在“退出时打开”之前就对选择输出进行评估...在源代码中,您通常具有“强制推送”选项已选中,但是当它是拉动时,您可能会遇到这个问题。
    猜你喜欢
    • 2019-01-01
    • 2021-02-08
    • 2017-12-29
    • 2018-08-31
    • 2021-07-23
    • 1970-01-01
    • 2021-04-08
    • 1970-01-01
    • 2021-10-09
    相关资源
    最近更新 更多