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

AnyLogic开发:如何遍历House智能体并随机选出发送消息?

AnyLogic遍历House智能体并随机发送消息的实现代码

核心实现步骤

  1. 获取所有House智能体集合
    AnyLogic提供findAll()方法可全局检索指定类型的智能体,代码如下:

    // 全局获取所有House类型的智能体
    Collection<House> allHouses = findAll(House.class);
    

    如果House智能体仅存在于特定代理(比如主代理)范围内,可缩小检索范围:

    // 仅在当前代理内查找House智能体
    Collection<House> allHouses = findIn(this, House.class);
    
  2. 随机选择指定数量的智能体
    使用AnyLogic内置的randomSample()方法,从集合中随机抽取目标数量的智能体,同时处理边界情况:

    int targetAgentCount = 3; // 替换为你需要选择的智能体数量
    // 避免目标数量超过总智能体数
    if (targetAgentCount > allHouses.size()) {
        targetAgentCount = allHouses.size();
    }
    List<House> selectedHouses = randomSample(allHouses, targetAgentCount);
    
  3. 向选中的智能体发送触发消息
    遍历选中的集合,调用send()方法发送消息,注意消息名称要和状态图转移中设置的触发消息名称完全一致:

    // 遍历选中的House智能体,发送触发转移的消息
    for (House house : selectedHouses) {
        send(house, "triggerTransfer"); // "triggerTransfer"替换为你的实际消息名称
    }
    

额外注意事项

  • 确保House智能体的状态图中,转移的触发条件设置为消息触发,且消息名称与代码中的字符串完全匹配(大小写敏感)。
  • 如果House智能体是通过Population组件管理的,也可以直接用Population的getAll()方法获取集合,比如housePopulation.getAll(),效率会比全局检索略高。

内容的提问来源于stack exchange,提问作者FowlArtemis

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 20:02:41