首页 > 解决方案 > 代理在 AnyLogic 中同时接收多条消息

问题描述

假设您有两种代理类型:

  1. 人口为 10 的代理类型 1
  2. 人口为 1 的代理类型 2

假设类型 2 的状态图有如下两种状态: 代理类型 2 状态图

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

标签: anylogic

解决方案


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

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

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

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


推荐阅读