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

AnyLogic:如何为同一resourcePool单元设置独立排班及解决拆分池吞吐量降低问题

问题原因说明
  • 核心原因是Service块默认的资源分配逻辑为按资源池添加顺序优先调度:只有排在前面的资源池完全无可用资源时,才会尝试调度后续添加的资源池。如果你的任务到达速率刚好匹配单资源的处理速率,就会出现第一个资源池持续被占用、第二个资源池长期闲置的情况,最终并行度只能达到1,输出速率低于单容量为2的资源池。
方案1:同一资源池内设置差异化排班(更推荐)

无需拆分资源池即可实现单池内不同资源单元的独立排班,操作步骤如下:

  1. 新建自定义Agent类型,命名为Worker,为其添加一个Schedule类型的参数,命名为workShift,调度值类型选布尔型(在岗为true/离岗为false)或数值型(在岗为1/离岗为0)均可
  2. 打开你的资源池配置页,将「资源类型」设置为刚才创建的Worker
  3. 在资源池的「初始化」板块下的「新建资源单元时执行」代码框中,按索引给不同资源单元赋值独立排班:
// 2个工人的场景,索引从0开始计数
if (index == 0) {
    unit.workShift = 你创建的第一个工人的排班表对象名;
} else if (index == 1) {
    unit.workShift = 你创建的第二个工人的排班表对象名;
}
  1. 切换到资源池的「可用性」配置页,选择「自定义条件」,条件填写为:unit.workShift.getCalendarValue() > 0
    该配置完成后,同一个资源池内的每个工人会按照自己的排班表独立上下岗,资源调度逻辑和普通单资源池完全一致,并行能力不会有任何损失。
方案2:调整多资源池配置实现等效并行度

如果你需要保留两个独立容量为1的资源池的现有配置,仅修改Service块的资源调度策略即可解决并行度不足的问题:

  • 打开Service块的「资源」配置页,找到「资源选择」设置项,将默认的「默认选择」修改为选择负载最低的资源池或随机选择可用资源
    修改后任务会自动分配到所有空闲的资源池,不会一直优先调用第一个资源池,350时间单位的处理量会和单容量为2的资源池完全一致。

内容的提问来源于stack exchange,提问作者Mohammad Hasan N.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 17:39:01