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

如何从AnyLogic指定Storage移除智能体?添加删除orangeStorage智能体代码

AnyLogic Storage智能体移除方法及代码修改

一、从任意Storage中移除智能体的通用方案

  • 清空所有智能体:直接调用Storage对象的clear()方法,一次性移除存储内所有智能体,同时触发智能体的onExit事件逻辑:
    targetStorage.clear();
    
  • 移除指定数量的智能体:若需移除N个智能体,可使用take()批量处理,或循环逐个取出:
    // 批量取出N个到enter端口
    enter.take(targetStorage, n);
    
    // 循环逐个取出
    int removeCount = 5;
    for(int i=0; i<removeCount && targetStorage.size()>0; i++){
        enter.take((SKU)targetStorage.getAgents().get(0));
    }
    
  • 移除单个特定智能体:持有目标智能体引用时,直接调用remove()方法:
    SKU targetAgent = ...; // 获取要移除的智能体引用
    targetStorage.remove(targetAgent);
    

二、针对你的代码的修改方案

在retStorage = orangeStorage;语句后添加移除orangeStorage所有智能体的逻辑,分两种场景选择:

场景1:仅从storage中移除智能体(无需通过enter端口)

直接调用clear()方法即可:

else  {
       retStorage= orangeStorage;
       // 清空orangeStorage内所有智能体
       orangeStorage.clear();
}

场景2:需要将智能体通过enter端口取出(匹配现有代码的take逻辑)

用循环逐个取出所有智能体,确保和现有代码的处理流程一致:

else  {
       retStorage= orangeStorage;
       // 移除orangeStorage内所有智能体并通过enter端口送出
       while(orangeStorage.size() > 0){
           enter.take((SKU)orangeStorage.getAgents().get(0));
       }
}

注意:clear()仅会将智能体从storage中移除,不会触发enter.take()的相关逻辑;若需保持智能体离开流程和现有代码一致,优先选择循环take的方式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 18:13:37