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

如何生成AnyLogic存量-流量模型时间序列DataFrame并导出至Excel?

AnyLogic存量-流量模型时间序列数据导出至Excel实现方案

完全可行,核心逻辑是先按时间步捕获各存量数值,整理成结构化数据后再导出至Excel。以下是具体实现步骤:

一、捕获时间序列数据

首先需要在模型运行过程中,按时间单位记录存量数值:

  • 创建一个Dataset对象(命名为stockTimeSeries),在属性面板设置列名:Time、Stock1、Stock2(对应你的存量名称)。
  • 添加一个时间事件,设置触发间隔为1个时间单位(和模型时间单位一致),在事件的动作中写入代码:
    // 依次写入当前时间、各存量的当前值
    stockTimeSeries.add(getTime(), stock1.get(), stock2.get());
    
    若模型时间步长不固定,也可在存量的onChange事件中记录数据,确保每次存量变化都被捕获。

二、转换为DataFrame

根据需求选择以下两种方式之一:

方式1:使用AnyLogic内置DataFrame

直接从已记录的Dataset转换:

import com.anylogic.engine.analysis.DataFrame;

DataFrame df = DataFrame.fromDataset(stockTimeSeries);

方式2:使用Python pandas DataFrame

通过AnyLogic的Python集成实现:

  1. 在模型中添加Python脚本组件,先将Dataset数据转为二维列表传递给Python:
    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.List;
    
    List<List<Object>> rawData = new ArrayList<>();
    // 添加表头
    rawData.add(Arrays.asList("Time", "Stock1", "Stock2"));
    // 遍历Dataset添加数据行
    for (int i = 0; i < stockTimeSeries.getRowCount(); i++) {
        rawData.add(Arrays.asList(
            stockTimeSeries.getDouble(i, 0),
            stockTimeSeries.getDouble(i, 1),
            stockTimeSeries.getDouble(i, 2)
        ));
    }
    // 传递给Python脚本
    python.set("raw_data", rawData);
    
  2. 在Python脚本中转换为pandas DataFrame:
    import pandas as pd
    
    df = pd.DataFrame(raw_data[1:], columns=raw_data[0])
    

三、导出至Excel

方式1:AnyLogic内置Excel导出工具

直接导出Dataset或DataFrame:

ExcelWriter writer = new ExcelWriter();
// 将Dataset写入Excel的"Stock Data"工作表,从A1单元格开始
writer.writeDataset(stockTimeSeries, "Stock Data", 0, 0);
// 保存到实验输出目录(避免路径问题)
String outputPath = getModel().getExperiment().getOutputDirectory() + "/存量时间序列数据.xlsx";
writer.save(outputPath);
writer.close();

方式2:Python pandas导出

如果用了pandas DataFrame,直接调用导出方法:

df.to_excel("存量时间序列数据.xlsx", index=False)

注意事项

  • 确保Dataset的列数与写入的数据数量一致,避免索引越界错误。
  • 若模型数据量较大,建议设置Dataset的最大行数限制,或分批导出,防止内存占用过高。
  • 时间事件的触发间隔需与模型时间单位匹配,保证时间序列的连续性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 22:02:00