gpt4 book ai didi

modelica - 将模型实例化为参数时的固定属性

转载 作者:行者123 更新时间:2023-12-01 03:08:02 25 4
gpt4 key购买 nike

我想将一个复杂模型实例化为另一个模型中的参数,并在初始方程部分对其进行初始化,就像我能够对任何 Real 参数进行的那样。对于一个简单的 Real 参数,我只想写

parameter Real y(fixed = true);

表明 y应在初始化时使用初始方程(待定义...)计算。但是对于复杂的模型,我不能这样做,即
parameter ComplexModel m(fixed = true);

不编译。例如考虑以下平面模型
model FlatModel
parameter Real x = 4;
parameter Real y(fixed = false);
Real z;
// ... + many other model elements
initial equation
y*y = x;
// ... + many other equations
equation
z*z = 4*x;
end FlatModel;

这里隐式解 y=2 是在初始化时计算的,而解 z=4 是以时间相关的方式计算的(至少在原则上,尽管有可能的优化......)。但两者都代表着基本相同的二次关系,所以我想把这个方程封装成一个单独的模型(注意,并不是每个这样的方程系统都像这个例子中那样简单):
model ComplexModel 
Real x(fixed = false);
Real y(fixed = false);
equation
y * y = x;
end ComplexModel;

并尝试以这种方式使用它:
  model RefactoredFlatModel
parameter Real x = 4;
parameter Real y(fixed = false);
Real z;
parameter ComplexModel mStatic;
ComplexModel mDynamic;
initial equation
mStatic.x = x;
y = mStatic.y;
equation
mDynamic.x = 4*x;
z = mDynamic.y;
end RefactoredFlatModel;

但这似乎不起作用(编译器报告过度确定的系统)。检查编译器扁平化的模型显示了原因:
class FixedTests.RefactoredFlatModel
parameter Real x = 4.0;
parameter Real y(fixed = false);
Real z;
parameter Real mStatic.x(fixed = false);
parameter Real mStatic.y(fixed = false);
Real mDynamic.x(fixed = false);
Real mDynamic.y(fixed = false);
initial equation
mStatic.x = x;
y = mStatic.y;
equation
mStatic.y ^ 2.0 = mStatic.x;
mDynamic.y ^ 2.0 = mDynamic.x;
mDynamic.x = 4.0 * x;
z = mDynamic.y;
end FixedTests.RefactoredFlatModel;

所以 mStatic.y ^ 2.0 = mStatic.x被放入(时间相关)方程部分,而不是我想要的初始方程部分。很明显,模型是超定的,因为它试图及时求解 mStatic.y,尽管 mStatic.y 是一个参数,因此是时间不变的。

有没有办法告诉modelica编译器将方程转换为参数实例的初始方程?因为否则不可能隐式定义复杂模型的参数实例。

最佳答案

从 Modelica Specification v3.4 开始,这是无效的 Modelica,因为前缀 parameter不得与专业类 model 一起使用.

有一些建议可以改善这种行为(并满足您的要求),请参阅 https://github.com/modelica/ModelicaSpecification/issues/2311及其来源 https://github.com/modelica/ModelicaStandardLibrary/issues/1860 .

关于modelica - 将模型实例化为参数时的固定属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54717649/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com