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

AnyLogic如何实现每个仿真日从Excel文件读取并更新参数值

AnyLogic 逐行读取Excel按仿真日更新supply参数操作方法(个人学习版适用)

以下操作全使用学习版自带基础功能,不需要专业版授权:

  • 导入Excel数据源
    直接把存好10天supply数据的Excel文件拖入AnyLogic工程面板,弹出配置窗口时选择连接到本地原文件即可,不需要做额外格式转换。导入完成后可以在工程资源树里看到这个Excel文件,建议把默认名excelFile改成supplyData方便后续识别。
    注意保证Excel里supply列没有合并单元格、没有加密,所有取值为数字格式,第一行为列名supply,10天有效数据从第2行开始依次排列。
  • 新增行号索引变量
    在你存放supply参数的Main顶层代理里,新建一个int类型变量,命名为currentDayRow,初始值设为2——对应Excel里第1天数据所在的行号(第1行是表头)。
  • 仿真启动时初始化参数
    找到Main属性面板里的「启动时执行」代码块,写入初始化代码,仿真启动时自动加载第1天的supply值:
    // 读取第1天supply参数
    supply = supplyData.getCellNumericValue("supply", currentDayRow);
    
    这里getCellNumericValue第一个参数直接传列名字符串"supply",不用手动记列号,后续调整Excel列顺序也不会读错。
  • 配置每日自动更新逻辑
    新建一个循环事件作为日步进触发点:触发模式选「超时」,首次触发时间设为1 day,重复触发间隔设为1 day,在事件的动作代码块写入逐行读取逻辑:
    // 行号偏移到下一天对应的数据行
    currentDayRow++;
    // 边界判断,避免读超出10天范围的空行报错
    if (currentDayRow > 11) { // 10天数据最后一行为表头行+10=11行
        traceln("10天supply数据已全部读取完成,后续将固定使用最后一天取值");
        supply = supplyData.getCellNumericValue("supply", 11);
    } else {
        // 更新当日supply参数
        supply = supplyData.getCellNumericValue("supply", currentDayRow);
    }
    
    如果你已经自行编写了仿真日步进逻辑,不用新建事件,直接把上面这段更新代码嵌到你每次推进1天仿真时间的执行节点即可,保证执行时机和日切换完全对齐。
  • 校验方法
    调试阶段可以在更新supply的代码后加一行日志打印代码traceln("仿真第"+(currentDayRow-1)+"天,supply取值为:"+supply);,运行模型后看控制台输出的数值和Excel里的逐行取值是否一致,确认匹配正确后删掉日志代码就行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 13:48:19