使用主要代理到其他代理的代理参数?

时间:2019-05-27 07:23:33

标签: anylogic

对于一个项目,如果创建的代理的参数为true,我试图选择正确的输出。代理是在主体中创建的,但进入其他代理以选择输出。如果我在主目录中使用select并使用该语句作为参数的条件,它将正常工作。每当它进入代理并且我使用相同的语句时,都会给出错误消息(描述:product1无法解析或不是字段。位置:testCase5 / Transport / selectOutput-SelectOutput)。

我尝试使用main.agent.product1之类的不同条件。似乎无法解决问题。我知道它可能与声明有关,但是我目前一无所知。

//对于在我将selectOutput放在主行中的情况下有效的条件

agent.product1

//对于代理中的条件,我尝试了相同的操作,但没有起作用。也尝试过

main.agent.product1 //给出相同的错误,但针对(描述:agent无法解析或不是字段。)

(主要)agent.product1 //还有一些

1 个答案:

答案 0 :(得分:0)

在AnyLogic中,项目流程的每个块(无论来自流程建模库,行人库还是其他)都具有在其属性中定义的流经它的代理的类型。您可以在高级下的块属性中找到此设置为代理类型

block agent type definition

如果您未能正确设置此设置(意味着此设置等于您让其流经的代理的类型),它仍将流经,但:您无法访问该代理类型的特定属性。

也就是说,通常您甚至都不需要考虑,因为AnyLogic在那里具有自动性:您必须执行的唯一流程块是流程的第一个块,通常是Source块或Enter块。正确的设置,所有附加的块都会自动获取!

source agent type settings

但是,在以下情况下,此方法无效:

  • 您有单独的流程(例如,您将一个流程留在一个Exit-block中,然后通过Enter输入另一个流程)。您还必须手动对第二个流程的第一块进行正确的设置。

  • 您的流程在另一个代理/自定义模块中继续进行,如您的示例。 AnyLogic没有意识到自定义块内部的流程在逻辑上与main中的外部流程相连。您必须在“自定义”块中的流程的第一块中再次手动指定流经的“代理”类型。