AnyLogic多智能体模型:如何从Consumer向Forklift智能体发消息?
问题解答
可以实现,但不能直接用sendToRandom("Buy A!"),需要调整调用方式来指定目标智能体群体,具体操作如下:
调用
sendToRandom()时必须指定Forklift智能体的群体对象,而非仅传消息内容。比如你在主模型中定义了Population<Forklift> forklifts(对应5个Forklift智能体),那么Consumer的Transition1中应写:sendToRandom(getMain().forklifts, "Buy A!");这样才会从5个Forklift中随机选一个发送消息。如果只写
sendToRandom("Buy A!"),默认会给同类型的Consumer智能体发消息,完全不符合需求。配置Forklift内部的Transition3:勾选「通过消息触发」选项,并将触发消息设置为
"Buy A!"(注意大小写和内容完全匹配),这样收到消息后才会触发该转移。额外注意:确保Consumer智能体能正确访问到Forklift的群体对象,若Forklift在其他子智能体层级下,需调整路径(比如
getMain().subAgent.forklifts)。
内容的提问来源于stack exchange,提问作者Jahidul Hasan Razib
相关产品推荐
相关产品推荐

