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

如何在OMShell中通过循环动态调用并仿真不同Modelica模型

在OMShell中通过For循环动态调用不同模型实现批量仿真

以下是实现根据迭代变量动态调用不同模型、完成批量仿真的可行脚本,核心是将构造的模型名称字符串转换为OMShell可识别的模型引用:

loadFile("/path/to/my/library/mylibrary.mo");
lst := {"SimRun1", "SimRun2", "SimRun3"};
for run in lst loop
  dir := "/path/to/save/the/results/"+run;
  mkdir(dir);
  cd(dir);
  // 将拼接后的模型名称字符串转为实际模型引用
  ref := stringTypeName("mylibraray.model" + run); 
  // 定义需要输出的仿真变量
  simVar := {"weaDat.AirPressure", "weaDat.AirTemp", "weaDat.CloudCover", "weaDat.RelHumidity", "weaDat.WaterInAir", "weaDat.WindDirection", "weaDat.WindSpeed", "weaDat.SkyRadiation", "weaDat.TerrestrialRadiation", "weaDat.add.u1", "weaDat.add.u2", "ZweiPersonenBuero.TAir", "ZweiPersonenBuero.TRad", "dataOut.H_gWin[1]"};
  // 启动仿真,指定参数与输出配置
  simulate(ref, stopTime=3.1536e7, numberOfIntervals=8760, fileNamePrefix=run, outputFormat = "csv", variableFilter = simVar);
end for;

关键说明

  • stringTypeName() 是实现动态模型调用的核心函数,它能将拼接生成的模型名称字符串转换为OMShell可以直接识别的模型引用
  • 循环中为每个仿真任务创建独立目录,避免不同模型的结果文件互相覆盖
  • 可通过修改lst列表来添加或调整需要仿真的模型后缀,实现灵活的批量任务配置

注:当前simVar变量的格式设置问题尚未解决,需进一步调试以匹配OMShell的变量过滤要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 18:42:44