更改FMU中设置的方程式以进行模型交换

时间:2020-03-30 10:47:42

标签: modelica openmodelica switching fmi

我们想发布一个开放源代码,以将强化学习与Smartgrid优化集成在一起。 我们使用OpenModelica作为GUI,使用PyFMI导入Python和Gym。

几乎所有东西都在运行,但是缺少在仿真过程中连接或断开附加负载的可能性。我们现在所能做的就是改变现有负载的参数,这提供了一定的灵活性,但远不及开关负载的可能性。

使用OpenModelica中已实现的开关并不是真正的选择。他们只是在该位置放置一个电阻,使其具有非常低或非常高的电阻。首先,它并没有真正解耦,其次,高电阻使ODE系统变得僵硬,这使得解决它确实非常困难(且成本很高)。在测试中,我们的LSODA求解器(在较硬的情况下,基本上是BDF)经常遇到数值错误,而无论jacobian的计算方式如何(通过定向导数或有限差分来分析)。

有人知道我们如何实现真正的“转换效果”吗?

最诚挚的问候,

亨里克

1 个答案:

答案 0 :(得分:0)

仿真期间理想的组件连接和断开 需要结构可变性,不能完全支持 由Modelica(尚)。另请参见此答案https://stackoverflow.com/a/30487641/8725275

此问题的一种解决方案是翻译所有可能的 预先建立模型并在满足某些条件的情况下切换仿真模型。由于涉及一些开销,因此这种方法仅在模型不经常切换时才有意义。

有一个python框架可以支持以下过程:DySMo。该工具是由Alexandra Mehlhase撰写的,他就结构变异性发表了许多有趣的著作,例如An example of beneficial use of variable-structure modeling to enhance an existing rocket model

Moritz Stueber的论文Simulating a Variable-structure Model of an Electric Vehicle for Battery Life Estimation Using Modelica/Dymola and Python也值得一看。它很好地介绍了可变结构系统和可用的解决方案。