Modelica 成功模拟后,如何根据结果更新Dymola中的迭代变量?
成功模拟后,我想使用稳态结果提供初始猜测值并将其保存在模型中,但我在Dymola中没有找到这样的选项,它只提供了一个选项,允许我进行初始化,然后将迭代变量保存在模型中,但无法保证Dymola会将模型初始化为预期的稳态。Modelica 成功模拟后,如何根据结果更新Dymola中的迭代变量?,modelica,dymola,Modelica,Dymola,成功模拟后,我想使用稳态结果提供初始猜测值并将其保存在模型中,但我在Dymola中没有找到这样的选项,它只提供了一个选项,允许我进行初始化,然后将迭代变量保存在模型中,但无法保证Dymola会将模型初始化为预期的稳态。 我的想法如下: 我的问题是: 如果我想在成功模拟后使用Modelica脚本文件(.mos文件)来更新迭代变量,我应该使用哪个函数来提取模型中使用的所有迭代变量并更新它们的值?我曾经编写了一个python脚本来实现这一点(请参见注释部分中的链接问题),它包括三个步骤: 获取迭代
我的想法如下: 我的问题是:
如果我想在成功模拟后使用Modelica脚本文件(.mos文件)来更新迭代变量,我应该使用哪个函数来提取模型中使用的所有迭代变量并更新它们的值?我曾经编写了一个python脚本来实现这一点(请参见注释部分中的链接问题),它包括三个步骤:
- 我使用Dymola标志
使Dymola将变量打印到文件Advanced.LogNonLinearIterationVariables=true
。这个文件可以轻松地读入python列表,但我后来发现这个文件中报告的IVs与dsmodelitationselect.mof
中报告的IVs之间存在一些差异dsmodel.mof
- 因此,我也尝试从
读取IVs,但解析txt文件感觉像是浪费时间。不过,这是我最信任的方法dsmodel.mof
- 另一种方法是使用标记为Advanced.FMI.GenerateModelDescription Interface2的
,不确定确切可用的信息是什么,但在某处记录了这些信息modelDescription.xml
- 您可以使用
将txt文件转换为更易于加载的mat文件alist.exe-b dsfinal.txt
- 另一种方法是将
与Advanced.translationCommandLog
和translateModel()
然后解析此日志文件savelog(“translate.txt”)结合使用
0
给出列表的第一个条目,索引-1
给出列表的最后一个条目。因此,终值具有索引-1
步骤3或多或少是琐碎的,只需编写
variable=value对于一个文件,此步骤需要不到10行python代码。我看到了一些可能性:
模拟到稳定状态
使用导入最终结果
模拟>继续>导入或使用脚本:
重要的(“dsfinal.txt”);(您可以调整开始时间。)
使用上面的对话框在模型中保存起始值。它可以满足您的需求,但并不总是可靠地生成良好的开始值。(特别是如果存在初始方程、状态以及取决于参数的起始值等)
更好的选择是:
模拟到稳定状态
脚本编辑器>生成脚本
并选择变量和Final或使用脚本
exportInitial(“dsfinal.txt”、“MyScript.mos”、true、true)
最后一个选项(正在改进)是设置
Advanced.DefaultSteadyStateInitialization=true;
不要设置不必要的正常启动值。
(这对迭代变量没有帮助,但对状态有帮助。)
相关的:相关的:相关的:也相关的: