发送一个代理参数以影响 Anylogic 中的另一个代理

sendig one Agent parameter to affecting another agents in the Anylogic

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

如果我想通过消息发送每个代理的参数来改变另一个代理的变量,你的解决方案是什么?

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

我定义了 Mediator 变量:

正在发送消息:

操作:

嗯,你需要访问agent1的参数X1。如果您分享了一些屏幕截图和实际的对象名称将会有所帮助,但在您的符号中,您将需要这样的东西,假设您有一个嵌入在所有代理所在的主节点上的代理群体(并假设代理 1 和 2 是同一个代理类型),假设我们让代理 2 更新它是 X

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

同时假设 "agent 1" 是您群体中的第一个特工。

如果您分享更多详细信息或更好地了解基于 Java 的 OOP(您不在数组、张量和矩阵的数据科学世界 :-) 中)。

干杯

希望我能理解你的问题:

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

其次,在您的代理连接中,您将消息定义为 int 并且在收到的消息上您可以执行 Y=Y+msg; 请注意,msg 是从 agent1 收到的 X。

编辑: 正如我所说,发送的消息只能在连接元素中读取......在您的情况下,当您在转换中使用中介变量时,您使用的是代理的中介变量,而不是发送的中介变量。唯一的方法就是按照我刚刚向您展示的方式进行操作。