Modelica建模是第一原理建模,所以如何测试模型并设置一个有效的基准很重要,比如我可以随心所欲地设计一个流体网络,但是在建立动态仿真模型时,我需要知道详细的几何形状结构和参数来设置我的模型的每一部分。通常,我会建立一个具有简单能量守恒定律和质量守恒定律的稳态模型,然后根据相应的设计手册设计每一台设备,但是当我将每个动态组件放在一起时,仿真到稳态时,结果是与稳态模型或多或少不同。所以我想知道我是否应该修改我的工作流程以使动态模型与稳态模型一致。欢迎任何建议。
#dymola #modelica
Ati*_*ikh -1
据我对这个问题的理解,你的参数值是固定的并且物理上已知的。我将尝试使用以下方法作为启发式方法来识别需要仔细调查的(少数)组件,以便了解它们如何影响或违反假定的第一原则。
这只是第一次尝试,可能还需要进一步改进和微调。
考虑一组重要的变量xd(p,t) \in R^n和参数p。请注意,p还包括重要的起始值。p in R^m仅包括稳态模型中不可用的一组附加参数。
将稳态模型的相应变量表示为x_s
表示动态模型“在数值上”处于“半”稳态的时间点:t*
考虑功能C(xd(p,t*),xs) = ||D||^2 with D = xd(p,t*) - xs
C描述为向量而不是单值函数可能会更有利。
C计算wt的偏导数,p以 表示dxd/dp,即
dC/dp = d[D^TD]/dp
= d[(x_d-x_s)^T (x_d - x_s)]/dp
= (dx_d/dp)^T D + ...
Run Code Online (Sandbox Code Playgroud)
考虑缩放上述函数,即dC/dp * p/C(通过一些 epsilon 技巧避免预期的数值问题)
您可以在此处获得导致明显差异的最重要参数的排名。希望包括这些参数在内的少数组件可能是导致此类违规的组件。
如果这仍然没有帮助,可能是由于参数之间预期的高度相关性,我会进一步考虑虚拟参数识别问题,从中可以获得重要模型参数的更严格的排序。
如果 Modelica 语言具有表达动态参数敏感性的能力,则上述所有计算都可以作为单个 Modelica 模型轻松执行(只需稍微修改一下公式)。
例如,如果我们有类似der(x,p)对应于 的内容dx/dp,则可以简单地说明
dcdp = der(C,p)
Run Code Online (Sandbox Code Playgroud)
通过DerXP 库提出了另一种方法
| 归档时间: |
|
| 查看次数: |
142 次 |
| 最近记录: |