无法访问任何逻辑中的消息发件人

Cannot access sender of message in anylogic

我正在尝试访问消息的发送者(发送者是个人代理)以评估发送者和接收者之间的连接作为转换的条件。 在 anylogic 帮助中,它说您可以使用 msg 访问有效的消息内容,并使用 sender 访问发件人。

我试过使用sender = msgSender

其中 msgSender 是一个变量。 但是我收到错误消息 sender cannot be resolved to a variable

将消息发送到 Link to agent 对象,而不是直接发送到状态图。

如果您的邮件是通过 Link to agent 块到达的,您可以访问发件人,例如默认的块 connections,见下文:

在其中,您可以决定将消息转发到状态图(如果您的发件人是正确的)。

代理的 connections 元素(默认 Link 到代理)接收发送给该代理的 所有 消息(然后默认情况下也会将其传递给任何状态图,但您可以在 connections 属性中对其进行控制)。例外情况是消息来自双向连接(在这种情况下,消息只能在 that Link 到 agents 中访问在 'far end' 代理中)。

如果你有一组从母亲到 child 的单向连接(假设从母亲类型代理到 Child 类型代理,Link 到agents in Mother called children) 那么你可以在 Child agent 的默认 connections 元素中访问消息和发件人(使用你在帮助中提到的关键字) .

您还需要确保通过适当的 Link 将消息发送给所有连接的 至代理 。所以你需要这样的东西:

(a) 在 Mother 代理中: children.sendToAllConnected("Hello");

(b) 在 Child 代理 connections 收到消息时 操作: traceln("Got message " + msg + " from sender " + sender);

(在你的情况下,显然你会有逻辑做一些依赖于发件人的事情。)

P.S。你说你想做 sender = msgSender。这不太合理:您是否试图 设置 消息发件人?您不能这样做:sender 仅在接收代理的 Link 到代理 操作中可用,并且始终引用实际的发送代理。 (例如,您不能 'fake' 发件人,也不必设置它。)