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

如何在Parameter Variation中获取Main测量值并写入Excel?

解决Parameter Variation中访问Main测量值并写入Excel的问题

核心问题分析

你之前的代码失效,大概率是因为直接引用main指向的是初始模型实例,而非当前迭代完成后的Main实例;另外可能存在Excel初始化不完整、未及时保存的问题。

分步解决方案

  1. 在Parameter Variation层级初始化Excel
    在Parameter Variation的「Before experiment」代码框中完成Excel的初始化和表头写入:

    // 初始化Excel文件,可使用绝对路径或相对路径
    excelFile = new ExcelFile("multi_run_results.xlsx");
    // 创建工作表
    excelFile.createSheet("Throughput Data");
    // 写入表头
    excelFile.setCellValue("迭代序号", 1, 1, 1);
    excelFile.setCellValue("平均吞吐时间", 1, 1, 2);
    
  2. 在After Iteration中正确获取当前迭代的Main实例数据
    替换你之前的代码,使用getCurrentIterationModel()获取当前迭代运行后的Main模型实例,再读取测量值:

    // 强转当前模型为Main类型(确保你的主模型类名为Main)
    Main currentIterationMain = (Main) getCurrentIterationModel();
    // 获取测量值均值
    double meanThroughput = currentIterationMain.shopfloor_throughput_time.mean();
    
    // 计算行号(表头占第1行,迭代从0开始的话,行号=迭代序号+2)
    int rowNum = getCurrentIteration() + 2;
    // 写入迭代序号和测量值
    excelFile.setCellValue(getCurrentIteration() + 1, 1, rowNum, 1); // 迭代序号从1开始显示
    excelFile.setCellValue(meanThroughput, 1, rowNum, 2);
    
    // 每次迭代后保存Excel,防止数据丢失
    excelFile.save();
    
  3. 确保测量值的访问权限
    如果上述代码仍报错,检查Main模型中的shopfloor_throughput_time测量值的访问权限:

    • 打开Main模型的测量值属性,将「可见性」设置为public;
    • 或者在Main模型中添加一个公共方法封装测量值获取:
      // 在Main模型的代码区域添加
      public double getMeanShopfloorThroughput() {
          return shopfloor_throughput_time.mean();
      }
      
      之后在After Iteration中调用:
      double meanThroughput = currentIterationMain.getMeanShopfloorThroughput();
      

额外注意事项

  • 避免在Main模型中操作Parameter Variation层级的Excel对象,确保所有Excel操作都在Parameter Variation的代码框中完成;
  • 如果使用相对路径,Excel文件会生成在仿真项目的根目录下;
  • 若需批量运行30组实验,确保Parameter Variation的「Number of iterations」设置为30。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 02:05:15