首页 > 解决方案 > 如何为 Wolfram SystemModeler 编写脚本以运行多个模拟?

问题描述

我想用我的模型改变两个参数运行大约 100 次模拟,fTLoad跟踪相电流currentSensor.i[1]等的变化。

现在我坚持使用 Wolfram 网站上的文档,因为没有明确说明如何使用 SystemModeler 编写脚本。例如,我在 Wolfram 网站上找到了这个链接,其中包含一些代码,但没有解释我应该在哪个命令行中使用它。

我下载了 WolframScript 程序并尝试用它打开我的模型,wolframscript -file SMPM_VoltageSource_Inverter.mo但它说ToExpression::sntx: Invalid syntax in or before ...我的模型模拟完全正常并且在 SimulationCenter 中没有任何错误。

有人可以向我解释一下:

如果是:

感谢您的任何帮助!

标签: modelicawolfram-languagesystemmodeler

解决方案


抱歉,我不了解 wolfram,但对于 OpenModelica,以下工作:

// to load Model from file use
// loadFile("fileName.mo");

loadString("
model M
  parameter Real a = 1;
  Real x;
equation
  x = a * sin(time);
end M;
"); getErrorString();

buildModel(M); getErrorString();

for a in {1,2,3,4} loop
  str_a := String(a); getErrorString(); 

  system("./M -override a=" + str_a); getErrorString();
  // for windows use 
  //system("M.exe -override a=" + str_a); getErrorString();

  system("mv M_res.mat " + "M_" + str_a + ".mat");
end for;

将它放在一个名为 example 的文件中,model.mos并从终端或命令行调用它,具体取决于您的操作系统,omc model.mos如果您安装了 OpenModelica。这应该生成一个csv。

编辑:我意识到原来只是保存了 x 的最后一个值,你可能想要完整的输出。因此我更改了.mos-file。每个不同的结果都将保存在不同的文件中,如果要将其更改为 csv,则只需更改生成的 xml。


推荐阅读