【问题标题】:sendig one Agent parameter to affecting another agents in the Anylogic发送一个代理参数以影响 Anylogic 中的另一个代理
【发布时间】:2019-06-10 20:07:20
【问题描述】:

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

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

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

我定义了 Mediator 变量:

发送消息:

行动:

【问题讨论】:

    标签: java anylogic


    【解决方案1】:

    希望我能理解你的问题:

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

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

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

    【讨论】:

    • 我用更多规范修改了我的问题。你能读懂我的确切问题吗?
    • 我的答案没有改变
    • 我做了你的回答,但我得到了相同的结果。
    【解决方案2】:

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

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

    还假设“代理 1”是您人口中的第一个代理。

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

    干杯

    【讨论】:

    • 我按照你说的修改了我的问题。请您阅读并指导我吗?
    猜你喜欢
    • 2021-06-03
    • 2021-07-10
    • 2016-02-17
    • 2018-11-16
    • 2017-06-20
    • 2022-09-26
    • 1970-01-01
    • 2022-10-21
    • 2020-10-19
    相关资源
    最近更新 更多