如何通过代理参数选择Anylogic中的输出?

如何通过代理参数选择Anylogic中的输出?,anylogic,processmodel,Anylogic,Processmodel,所以,我对Anylogic非常陌生,但是我做了很多教程,并且我有Java编程经验。在我的论文中,我将车流建模为一个过程。在源代码块中,我使用数据库中的一些参数创建了自定义代理。这个很好用。然后,我想用0.5指定一个电气参数。为此,我调用setupTaxi函数,其中设置了电动滑行。randomTrue函数的参数应该是可变的,所以我将其设置为额外的参数anteilEtaxis 0.5 之后,我希望车辆根据使用SelectOutput的电量值执行不同的操作。我在agent.electric上选择了条件

所以,我对Anylogic非常陌生,但是我做了很多教程,并且我有Java编程经验。在我的论文中,我将车流建模为一个过程。在源代码块中,我使用数据库中的一些参数创建了自定义代理。这个很好用。然后,我想用0.5指定一个电气参数。为此,我调用setupTaxi函数,其中设置了电动滑行。randomTrue函数的参数应该是可变的,所以我将其设置为额外的参数anteilEtaxis 0.5

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

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

有关设置和参数,请参见图。我通过控制台对此进行了测试,第一行是source中的println调用,第二行是selectOutput中的println调用。。此外,您还可以看到该参数设置为不同的值,因为三维可视化模型依赖于该参数:


此外,我还尝试了设置参数、读取参数等几种不同的组合。。。唯一有效的方法是将randomTrue0.5直接放入条件框中。这不是我想要的。如果你有什么想法,有什么问题,请告诉我。

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

我将假设您正在退出操作中调用源中的setupTaxi函数。。。如果您正在这样做,那么就太晚了,代理已经决定了在选择输出块之后它将去哪里

您必须在两个可能的位置调用setupTaxi功能:

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

2在您的车辆代理中启动时操作


甚至。。只需将电气变量设置为默认值randomTruemain。anteilEtaxis。。。那也行。

谢谢!您是对的,setup的函数调用位于on Exit字段中。我把它放在at Exit字段中,它现在可以工作了。我仍然不明白为什么或者如何做决定。我会试着查一下。谢谢你的帮助!顺序不是很直观。。。它按以下顺序运行:-在退出时打开-输出块的条件-在退出时-在进入时,但在某些情况下,当代理卡在块中等待由选择输出后的块拉动时,甚至在退出时打开之前,也可能会评估选择输出上的条件。。。在源代码中,通常会选择“强制推送”选项,但如果是“拉”选项,则可能会出现该问题。