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

AnyLogic作业车间模型记录资源池活动制作甘特图问题求助

问题根源

On unit state change是状态切换触发型动作,仅在资源单元的忙碌/空闲状态发生变化的瞬间执行1次,不存在持续运行的上下文。你编写的while循环会直接占满AnyLogic的模型调度主线程,导致模型时间无法推进,因此看起来没有报错但完全无法运行。

正确实现方案

你不需要自行写循环采集状态,按照以下步骤操作即可:

  • 第一步:根据你的资源池规模创建对应的数据存储对象
    若为单单元资源池,直接新建1个普通DataSet组件即可,命名可设为machineGanttData;若为多单元资源池,可创建List<DataSet>批量存储每个单元的状态数据。
  • 第二步:替换On unit state change中的代码,删除所有while循环逻辑,仅保留单次状态记录代码:
    // 内置局部变量unit代表当前触发状态变化的资源单元
    // time()获取当前模型时间,将当前时间点的状态写入数据集
    machineGanttData.add(time(), unit.isBusy() ? 1 : 0);
    
  • 第三步:甘特图渲染
    新增Time Plot组件,绑定上述数据集,将图表类型设置为阶梯图(Step Chart),Y轴范围固定为0~1,即可直接得到设备忙碌状态甘特图,1区间代表设备占用、0区间代表设备空闲。

更简便的原生方案

如果你不需要自定义状态采集逻辑,AnyLogic自带的Gantt Chart组件支持直接绑定资源池对象,无需编写任何代码即可自动生成所有资源单元的调度甘特图。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 05:00:01