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

AnyLogic中如何将ResourcePool利用率时间图表数据导出至Excel?

实现带时间戳的ResourcePool利用率导出到Excel

你需要的是时间序列数据集(而非直方图数据集)来记录每个时间点的资源池利用率,以下是具体操作步骤:

1. 创建时间序列数据集

  • 在仿真软件的「Projects」面板中,右键点击「Datasets」→ 新建「Dataset」,命名为utilizationTimeSeries
  • 双击打开该数据集,添加两列:
    • 第一列:命名timestamp,类型选择「Date/Time」
    • 第二列:命名utilization,类型选择「Double」
  • 添加一个周期性事件到主代理或Main模块,设置事件的触发间隔(比如每1分钟,根据你的仿真时间单位调整),在事件的「Action」中写入代码:
    // 记录当前仿真时间戳和资源池利用率
    utilizationTimeSeries.add(today(), yourResourcePool.utilization());
    
    注意:将yourResourcePool替换为你实际的ResourcePool对象名称。

2. 导出数据集到Excel

你可以选择在仿真结束时自动导出,或者添加手动触发按钮:

自动导出(仿真结束时)

  • 找到Main模块的「onDestroy」事件(仿真结束时触发),写入以下代码:
    ExcelFile excel = new ExcelFile();
    // 将数据集写入Excel的Sheet1,从A1单元格开始,包含表头
    excel.writeDataSet("Sheet1", 1, 1, utilizationTimeSeries, true);
    // 保存文件,可自定义路径和文件名
    excel.save("资源池利用率统计.xlsx");
    

手动导出(按钮触发)

  • 拖一个「Button」控件到仿真界面,设置按钮文本为「导出统计数据」
  • 在按钮的「onClick」事件中写入上述相同的Excel导出代码。

3. 额外优化

  • 如果需要自定义时间戳格式(比如yyyy-MM-dd HH:mm:ss),可以修改数据集的timestamp列为「String」类型,然后修改采集代码:
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    String formattedTime = sdf.format(new Date(today()));
    utilizationTimeSeries.add(formattedTime, yourResourcePool.utilization());
    
  • 若仿真周期长、数据量大,可设置周期性写入Excel(比如每小时写入一次),避免内存占用过高:在周期性事件中添加写入代码,每次写入时追加数据(需调整writeDataSet的参数,或使用writeRange方法)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 15:05:15