在AnyLogic中......我正在 Build 一个模型,其中一旦代理B发送A消息,代理A(住在Main)将移动到代理B(住在另一个代理C,例如家中) . 设置代理商B的“初始位置”时遇到麻烦 . 我怎样才能指出他特定的“家”(代理商C)?
我试过:“在指定点”:X = this.getLongitude()...“在节点中”:这个
但没有运气 . 有任何想法吗?这有意义吗?
它可以通过多种方式实现 . 最常见的是基于流程图:代理在 Main 到 Exit 块处留下流程图 . 在 Exit 块的On Exit操作中,调用:
Main
Exit
agentC.enter.take( agent );
AgentC 类型应该有 Enter 块 . 在块的属性中,指定输入代理的初始位置 . Enter 可以被视为从另一个空间(如 Main )进入的代理商的"gates" .
AgentC
Enter
格雷戈里谈到了沟通和运动的可能“架构”,但是,在更一般的代理运动和嵌入层面回答:
如果您的代理类型是 AgentA , AgentB 和 AgentC ,并且正如您所说( AgentB 在其'home' AgentC 中填充),那么每个 AgentB 实例将自动拥有一个链接( Link to upper level agent )到嵌入 AgentC ,称为 agentC .
AgentA
AgentB
agentC
因此,当 AgentA 收到来自 AgentB 的消息时,您可以执行类似的操作
moveTo(sender.agentC)
要么
jumpTo(sender.agentC.getX(), sender.agentC.getY())
( sender 是一个特殊的关键字,指的是"On message received"代码块中的发送代理. jumpTo 立即移动到某个地方,而不是以代理所具有的速度移动 . 不幸的是 moveTo 允许您指定另一个代理作为目标但 jumpTo 必须使用坐标或节点 . )
sender
jumpTo
moveTo
请参阅以下帮助部分:
AnyLogic帮助>基于代理的建模>代理交互>代理之间的通信
AnyLogic帮助>发行说明> AnyLogic 7中的新功能's new in previous releases > What'>上级代理的链接[部分]
AnyLogic帮助>基于代理的建模>代理移动>连续空间中的移动
2 回答
它可以通过多种方式实现 . 最常见的是基于流程图:代理在
Main
到Exit
块处留下流程图 . 在Exit
块的On Exit操作中,调用:agentC.enter.take( agent );
AgentC
类型应该有Enter
块 . 在块的属性中,指定输入代理的初始位置 .Enter
可以被视为从另一个空间(如Main
)进入的代理商的"gates" .格雷戈里谈到了沟通和运动的可能“架构”,但是,在更一般的代理运动和嵌入层面回答:
如果您的代理类型是
AgentA
,AgentB
和AgentC
,并且正如您所说(AgentB
在其'home'AgentC
中填充),那么每个AgentB
实例将自动拥有一个链接( Link to upper level agent )到嵌入AgentC
,称为agentC
.因此,当
AgentA
收到来自AgentB
的消息时,您可以执行类似的操作moveTo(sender.agentC)
要么
jumpTo(sender.agentC.getX(), sender.agentC.getY())
(
sender
是一个特殊的关键字,指的是"On message received"代码块中的发送代理.jumpTo
立即移动到某个地方,而不是以代理所具有的速度移动 . 不幸的是moveTo
允许您指定另一个代理作为目标但jumpTo
必须使用坐标或节点 . )请参阅以下帮助部分:
AnyLogic帮助>基于代理的建模>代理交互>代理之间的通信
AnyLogic帮助>发行说明> AnyLogic 7中的新功能's new in previous releases > What'>上级代理的链接[部分]
AnyLogic帮助>基于代理的建模>代理移动>连续空间中的移动