如何通过agent参数在Anylogic中输出select?

How to select output in Anylogic by agent parameter?

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

之后,我希望车辆根据 electric 的值使用 SelectOutput 执行不同的操作。我选择了条件并在 agent.electric 上进行测试。

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

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

enter image description here

此外,我尝试了几种不同的参数设置组合,读取它们等......唯一可行的是将 randomTrue(0.5) 直接放在条件中盒子。这不是我想要的。所以如果你有什么想法,哪里不对,请告诉我。

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

我假设您在 "on exit" 操作中调用源中的 setupTaxi-function...如果您这样做,则为时已晚,代理已经决定在哪里它将在 select 输出块之后。

您必须在 2 个可能的地方给您的 setupTaxi-function 打电话:

1) 在您关于 "on at exit" 操作的来源中

2) 在你的车辆代理上 "on startup" 行动

或者甚至.. 只需让 electric 变量具有默认值 randomTrue(main.anteilEtaxis)... 也可以。