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

wait.free()释放多个Patient Agent而非单个的技术问题求助

问题说明

我设置了一个每30分钟触发一次的event,调用function检查wait1里的Patient Agent是否满足释放条件。

事件代码如下,原本是想遍历wait1里的所有Agent:

if (wait1.size() > 0){
    for (int i = 0; i < wait1.size(); i++)
        function(wait1.get(i));
}

对应的function逻辑:

  • 判断当前是否为上午时段,若SurgeonMorning空闲,就把符合条件的Patient从wait1转到selectOutput3,后续执行seize占用医生。
  • 再判断是否为下午时段,若SurgeonAfternoon空闲,同样转移对应Patient并执行seize。

现在的问题:
本来应该只有满足条件且对应外科医生空闲的Patient才会被释放,但实际只要多个Patient符合同一条件,就会被同时放出来。但系统里只有1个SurgeonMorning和1个SurgeonAfternoon,只要有一个Patient占用医生,就不能再放其他患者了。

解决办法

核心是找到第一个符合条件的患者并释放后,立刻停止遍历,别继续检查后面的患者。

  1. 先修改function,让它返回布尔值:成功释放患者(医生被占用)就返回true,没释放就返回false。
  2. 然后修改事件的循环代码:
if (wait1.size() > 0){
    for (int i = 0; i < wait1.size(); i++){
        boolean released = function(wait1.get(i));
        if(released){
            break; // 放了一个就停,别继续循环
        }
    }
}

另外也可以换个更直接的写法:不用遍历所有患者,直接从wait1里挑出第一个符合条件的,只处理这一个,从根源避免多患者同时释放的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 04:15:18