【问题标题】:Agent receiving several messages at the same time in AnyLogic代理在 AnyLogic 中同时接收多条消息
【发布时间】:2020-11-01 00:14:06
【问题描述】:

假设您有两种代理类型:

  1. Agent 类型 1,人口为 10
  2. Agent 类型 2,人口为 1

假设类型 2 的状态图有两种状态,如下所示: Agent Type 2 statechart

如果类型 1 的所有 10 个代理同时发送相同的消息,或者至少以小于图像中显示的超时转换的间隔发送,那么当类型 2 的代理处于“evaluateLenderDecision”状态时收到的消息会发生什么情况?消息是否被丢弃或排队等待再次达到“waitingForLender”状态?

【问题讨论】:

    标签: anylogic


    【解决方案1】:

    首先,我建议您观看我制作的这个 youtube 视频,该视频解释了消息的发送方式。 https://www.youtube.com/watch?v=Fe2U8IAhlHM

    使用 send 或 Deliver 的消息在连接对象中接收,消息被重定向到您在那里定义的不同状态图。

    在您的情况下,您可能应该自己生成一个队列,其中包含已收到的所有消息(可能使用集合)

    如果您的消息同时发送,则从您的状态图的角度来看,您的 10 个代理中有 9 个将丢弃他们的消息,因为在收到第一个消息后没有状态图等待消息,但不是来自您的连接观点...所有消息都被有效接收。

    【讨论】:

    • 感谢 Felipe 的清晰解释。因此,总而言之,我了解代理收到所有消息,但只有第一个消息会影响状态图转换。再次感谢。如果我添加一个集合,我的猜测是最好的方法是在退出时评估该集合并在退出时发送下一条消息(首先删除)以确保它影响状态图。这样所有消息都会影响状态图。
    猜你喜欢
    • 2019-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-06
    • 1970-01-01
    • 2021-08-06
    • 1970-01-01
    相关资源
    最近更新 更多