8

再次用完想法,我转向你。

我敢肯定,这之前必须得到回答,尽管在我的一生中,我找不到明确的描述。

设想:

您努力使模型全部设置初始猜测等,然后求解模型中所有参数的“真实”稳态 (SS) 条件。从这个解决方案中,我想调查事件对系统的影响。

要执行与 SS 分析的这种偏差,最好能够简单地加载 SS 解决方案 .mat 文件,其中包含Dymola已经生成的所有模型参数。加载此解决方案无需先模拟模型以实现 SS 解决方案,然后再执行与 SS 调查的偏差。我可以想象,发生这种情况的一个可能步骤是在模拟的“初始化”阶段。

鉴于这似乎是一个重要的概念,我想这个想法会在 Modelica/Dymola 开发的早期阶段就被考虑在内。鉴于这些模型的大小很快变得非常大,手动提取每个单独的参数似乎并不合适。

问题:

  1. 是否可以求解模型的状态(.mat 文件),然后将该模拟加载为所有变量的“初始”值?(这将覆盖/替换系统中先前的初始猜测)
  2. 如果可能,这是如何实现的?(运行一些脚本,一些隐藏菜单选项,在模型/模拟中添加某种导入命令?)

我非常感谢您的帮助。我正在使用Dymola 2016。

4

1 回答 1

5

对于上面发布的我自己的问题,我找到了以下答案。

编辑:matth 还指出了以下关于该主题的有用参考: http ://claytex.com/blog/how-to-restart-a-simulation

这些是Dymola的说明。我无法验证它们是否适用于其他基于 Modelica 的程序。我还在 Dymola 用户手册第 1 卷第 5.3.3 节 Simulation > Continue > Import Initial/Continue 中找到了一些文档。

1) 是的,可以从生成的 .mat 文件启动您的模型。您也可以从 dsfinal.txt 文件继续它。

2) 以下是使用 GUI 的步骤:

  • 备份“YOUR_MODEL.mat”文件(例如 YOUR_MODEL_orig.txt)。运行模拟后,将创建一个新的 .mat 文件,您可能不想意外覆盖它。
  • 翻译你的模型。
  • 在功能区中,转到模拟 > 继续 > 导入初始值。选择要从中继续仿真的 .mat 文件。
  • 将生成一个提示,要求输入具有指定范围的时间。这允许您在 .mat 仿真结果中的任何时间点继续仿真。
  • 转到模拟设置并选择新的模拟参数。如果您希望解决方案将开始时间注册为 0,而不是与初始 SS 仿真相关联的某个大数字,而不是将“开始时间”更新为 0。这不会影响用于 Model_Sim.mat 文件中的参数数据的初始时间.
  • 现在模拟模型。将从您指定的点开始生成一个新的 .mat 文件。

替代方法:(奇怪的是,使用这种方法似乎没有生成或更新 .mat 文件。)

  • 备份“dsfinal.txt”文件(例如 dsfinal_orig.txt)。运行模拟后,将创建一个新的 dsfinal.txt 文件,您可能不想意外覆盖它。
  • 翻译你的模型。
  • 在功能区中,转到模拟 > 继续 > 继续。按下此选项后,模拟将开始使用路径上的任何 dsfinal.txt 文件。
  • 模拟现在将从生成 dsfinal.txt 文件的模拟的最终条件处继续。
  • 如果希望在时间 0 开始,则可以修改 dsfinal.txt 文件(对我来说是第 9、10 和 12 行),它对应于模拟开始 (9)、停止 (10) 和时间步数 (12) . 这似乎可以解决问题。
于 2016-01-07T21:54:45.113 回答