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

如何在Dymola脚本中定义Combitimetable并解决时间尺度异常问题?

Dymola批量仿真Combitimetable参数配置问题

核心问题分析

你遇到的timeScale失效问题,本质是脚本里定义的timeScale变量未直接绑定到模型中Combitimetable实例的参数上,模型读取文件时会自动根据文件内容覆盖timeScale,导致仿真分辨率不符合需求。

解决方案:直接修改模型实例参数

不需要合并表格再拆分结果,Dymola脚本可通过setParameter函数直接修改Combitimetable实例的参数,确保每次迭代都强制设置所需的文件路径和时间刻度。

批量仿真脚本示例

假设模型中Combitimetable的实例路径为customTILComponents.MA_Santoro.FullModels.OptiHorst_FullModel_New_Year_Simulation_Batch.combiTable(需替换为你模型中组件的实际路径),批量仿真脚本如下:

// 定义要遍历的文件路径集合
filePaths = {"RL_30_200g", "RL_40_300g", "RL_50_400g"}; // 替换为你的实际路径列表

// 先翻译一次模型(结构无变化时无需重复翻译)
translateModel("customTILComponents.MA_Santoro.FullModels.OptiHorst_FullModel_New_Year_Simulation_Batch");

// 遍历执行仿真
for (filePath in filePaths) loop
  // 构造文件路径并加载资源
  dymolaPath = "modelica://customTILComponents/Combitables/Combitimetable_" + filePath + ".txt";
  fileName = ModelicaServices.ExternalReferences.loadResource(dymolaPath);
  
  // 构造结果文件名
  resultFile = "Full_Year_Simulation_" + filePath;
  
  // 强制设置Combitimetable的参数(替换为你的组件实例路径)
  setParameter("customTILComponents.MA_Santoro.FullModels.OptiHorst_FullModel_New_Year_Simulation_Batch.combiTable.fileName", fileName);
  setParameter("customTILComponents.MA_Santoro.FullModels.OptiHorst_FullModel_New_Year_Simulation_Batch.combiTable.timeScale", 1/3600);
  
  // 执行仿真
  simulateModel(
    startTime=0, 
    stopTime=8860, 
    numberOfIntervals=300, 
    method="Dassl", 
    tolerance=1e-6, 
    resultFile=resultFile
  );
end for;

关键说明

  • setParameter函数:这就是你需要的用于定义Combitimetable参数的工具,它直接修改模型实例的参数值,优先级高于文件自动读取的设置,能确保timeScale不会被覆盖。
  • 实例路径获取:在Dymola模型界面选中Combitimetable组件,通过Edit > Copy Instance Path可快速获取准确的实例路径。
  • 效率优化:若模型结构在迭代中无变化,将translateModel移到循环外仅执行一次,可大幅提升批量仿真的速度。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 23:30:55