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

Dymola 2022参数化仿真脚本resultFile拼接失效问题咨询

Dymola循环仿真结果文件覆盖问题原因与修正

问题原因

  • Dymola 2022版本的MOS脚本解释器存在语法限制:不支持在simulateModel()这类内置仿真命令的命名参数传入位置,直接执行字符串拼接、类型转换这类运算表达式。直接写resultFile="Test"+String(i)时,解释器不会先计算拼接后的字符串再传参,会直接把该表达式识别为非法输入,导致仿真完全无法启动。
  • 原代码循环内直接写a=i;的写法无效:这行脚本不会把参数值传递给已翻译的模型,就算去掉字符串拼接部分能运行,10次循环实际是用同一个默认参数值重复仿真,且因为结果文件名完全一致,每次运行都会覆盖上一次的结果文件,最终只会保留最后一次的仿真输出。

修正方案

把需要传入的参数值、拼接好的结果文件名提前定义为脚本变量,再传入仿真命令;模型参数修改通过simulateModel自带的初始值传参接口实现,不需要重复翻译模型。修正后的可运行代码如下:

openModel("C:/MySimulations/Test1.mo")
translateModel("Test1");
for i in 1:10 loop
  // 提前拼接结果文件名,指定整数转字符串时保留0位小数,避免出现多余空格、小数位
  resFile := "Test" + String(i, 0);
  // 传入提前定义的变量,同时指定要修改的模型参数与对应值
  simulateModel(
    resultFile = resFile,
    InitialNames = {"a"},
    InitialValues = {i}
  );
end for;

补充说明

  • 提前翻译一次模型再跑所有循环的写法,比每次循环都重新翻译模型的仿真效率高很多,适合多参数扫描场景。
  • 所有传入内置仿真命令的参数,如果需要经过计算、拼接得到,都建议提前赋值给脚本变量再传入,避免触发旧版本Dymola的脚本解释器语法限制。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 12:15:31