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

AnyLogic基于优先级的Queue实现:优先处理最短加工时间订单

生产仿真队列优先处理最短加工时间订单的实现方案
  • 先把加工时间绑定到订单Agent
    从表格读取到加工时间后,必须给每个订单Agent添加一个自定义属性(比如命名为processingTime),把对应数值存进去,确保每个订单都带着自己的加工时间数据,不能只存在表格里。

  • 修改Queue的出站选择逻辑
    放弃系统默认的选择规则,在Queue的「选择下一个要处理的Agent」模块里写自定义逻辑:

    1. 获取队列里所有待处理的订单Agent
    2. 逐个对比它们的processingTime数值,找出最小的那个
    3. 指定这个Agent作为下一个出站对象
      给你个通用伪代码参考(适配多数仿真软件的逻辑):
    Agent targetAgent = null;
    double shortestTime = 999999; // 设一个足够大的初始值
    for(Agent agent : 当前队列.get所有Agent()){
        double currentTime = agent.get属性("processingTime");
        if(currentTime < shortestTime){
            shortestTime = currentTime;
            targetAgent = agent;
        }
    }
    return targetAgent;
    
  • 排查之前失败的常见原因
    你之前选最小Agent没成功,大概率是这几个问题:

    • 加工时间没正确赋值给Agent,读取的是默认值(比如0、null)
    • 选择逻辑错拿了Agent的ID、创建时间这类无关数值来比较,不是加工时间
    • 队列的选择模式没切到「自定义逻辑」,还是用了系统默认的FIFO或随机模式
  • 额外优化点
    如果有多个订单加工时间相同,可以加次级优先级(比如先到先处理、订单编号从小到大),避免选择逻辑出现混乱。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 19:52:34