You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AnyLogic技术问题:如何在Agent Container中查找Agent?

AnyLogic Agent Container中查找特定类型Agent的解决方法

你之前的写法无效,核心原因是agent.contents()返回的是Agent集合(Collection),而非单个Agent,直接用集合和k1类型做instanceof比较逻辑不成立。针对你托盘仅承载单个零件的需求,提供以下几种可行方案:

方案1:取集合首个元素判断(最适配你的场景)

在SelectOutput模块的条件输入框中,针对k1类型零件的路径,写入:

!agent.contents().isEmpty() && agent.contents().get(0) instanceof k1

逻辑说明:先判断托盘不为空,再取集合中第一个元素(因仅放单个零件,即为目标零件),判断其是否为k1类型。同理,k2、k3的路径条件只需将k1替换为对应Agent类型即可。

方案2:用AnyLogic内置方法简化代码

AnyLogic为集合提供了first()方法可直接获取首个元素,条件可简化为:

agent.contents().first() != null && agent.contents().first() instanceof k1

方案3:遍历集合检查(适配多零件场景)

若后续需求变更为托盘可放置多个零件,需判断是否存在某类型零件时,可使用流式遍历:

agent.contents().stream().anyMatch(a -> a instanceof k1)

该表达式会检查托盘内是否存在至少一个k1类型的Agent。

注意事项

  • 确保Agent类型名称完全匹配:k1、k2、k3需与你在AnyLogic中创建的Agent类型名称完全一致(大小写敏感)。
  • 必须先判空:无论哪种方案,都要先确认托盘内存在Agent,避免空指针异常导致模型报错。

内容的提问来源于stack exchange,提问作者D. Y.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 19:32:41