You need to enable JavaScript to run this app. Anylogic运行时动态修改Queue块优先级规则的代码实现咨询
优惠活动
大模型
产品
解决方案
定价
更多

Anylogic运行时动态修改Queue块优先级规则的代码实现咨询

解决方案

首先你需要先在当前模型的Main或者对应Agent页面新增一个int类型的全局控制变量,命名为priorityRuleSwitch,默认值可设为0。

步骤1:修改Queue块优先级表达式

将你当前Queue块的优先级判断表达式替换为如下内容:

priorityRuleSwitch == 0 ? agent.departure_date : time() - agent.getEntryTime()

该表达式会根据priorityRuleSwitch的值动态返回对应优先级计算结果:

  • 变量值为0时返回代理的出发日期作为优先级依据
  • 变量值为1时返回代理的已等待时长作为优先级依据

步骤2:补全doAction函数代码

完整的doAction函数代码如下:

doAction(int action){
    if(action == 0){
        priorityRuleSwitch = 0;
    } else {
        priorityRuleSwitch = 1;
    }
    // 若需要队列中已存在的代理立刻按照新规则重新排序,取消注释下一行代码
    // myQueue.sort();
}

注意事项:

  1. 请将代码中的myQueue替换为你自己模型里Queue块的实际名称
  2. 若你的代理的出发日期参数名、等待时间的计算逻辑和示例不一致,将表达式中对应部分替换为你原有规则的代码即可
  3. 若仅需要新进入队列的代理遵循新优先级规则,无需调用sort()方法;若需要队列中已有代理立刻重新排序,保留该调用即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.15 08:24:03