sendig一个Agent参数以影响Anylogic中的另一个代理

时间:2019-01-16 17:13:45

标签: java anylogic

我们有500个代理商。每个人都有一个int参数和一个int变量。

如果我想通过消息发送每个座席的参数以更改另一个座席的变量,您的解决方案是什么?

例如,对于所有代理,我们将“ accept”作为参数,将“ Opi”作为变量。我们将“ accept”发送给所有代理。当代理1将其“接受”发送给代理2时,我想设置“ Opi.2= Opi.2 + accept.1”,但是Anylogic将其设置为“ Opi.2= Opi.2 + accept.2”。

我定义了Mediator变量:

mediator

发送消息:

message

操作:

Action

2 个答案:

答案 0 :(得分:0)

那么,您需要访问agent1的参数X1。如果您共享了一些屏幕快照和实际的对象名称,这将很有帮助,但是在您的表示法中,您将需要类似以下内容,假设您在所有代理都居住的主要位置嵌入了一个代理种群(并且假设代理1和2是同一代理)类型),并假设我们使代理2更新为X

X = X + main.myAgentPopulation.get(0).Y

还要假设“特工1”是您种群中的第一个特工。

最好是,如果您共享更多细节或更好地了解基于Java的OOP(您不在数组,张量和矩阵的数据科学领域:-))。

欢呼

答案 1 :(得分:0)

我希望我能理解您的问题:

首先,要将消息从一个代理发送到另一个代理,可以使用发送功能。如果您的消息是从agent1发送到agent2的,则要发送X,您将使用:send(X,agent2)

第二,在代理连接中,您将消息定义为int,并且在收到消息时可以进行Y=Y+msg; WPF ScrollViewer around DataGrid affects column width 请注意,味精是从agent1收到的X。

编辑: 如我所述,发送的消息只能在connections元素中读取...如果您在过渡中使用中介变量,则使用的是代理的中介变量,而不是已发送的中介变量。唯一的方法就是按照我刚给你的方法做。