Modelica类方法
我想在我的Modelica模型中使用一个类函数/方法,如下所示:Modelica类方法,modelica,jmodelica,Modelica,Jmodelica,我想在我的Modelica模型中使用一个类函数/方法,如下所示: optimization Moo(objective=-x(finalTime), startTime = 0, finalTime = 12) parameter Real e = 0.05; Real x(start=2, fixed=true, min=0, max=100); input Real v (min=0, max=1); function omega input Real t;
optimization Moo(objective=-x(finalTime), startTime = 0, finalTime = 12)
parameter Real e = 0.05;
Real x(start=2, fixed=true, min=0, max=100);
input Real v (min=0, max=1);
function omega
input Real t;
output Real y;
algorithm
y := e;
end omega;
equation
der(x) = v*omega(time);
constraint
v<=1;
end Moo;
优化Moo(目标=-x(最终时间),开始时间=0,最终时间=12)
实际参数e=0.05;
实x(开始=2,固定=真,最小=0,最大=100);
输入实v(最小值=0,最大值=1);
函数ω
输入实t;
输出真实y;
算法
y:=e;
末端ω;
方程式
der(x)=v*ω(时间);
约束
Modelica中不支持成员函数,因此在模型中声明的函数就像独立函数一样,没有访问周围模型变量的权限。
不允许使用成员函数,因为函数需要是纯函数,即它们不允许有任何副作用。这是Modelica中的一个基本假设,它使工具能够应用符号转换和重新安排计算。如果将所需变量作为附加输入显式传递给函数,则可以使用类似于成员函数的功能。请参见此示例:
package MemberFunction
model A
Real x=1;
function get_x = MemberFunction.get(u=x);
end A;
function get
input Real u;
output Real y;
algorithm
y := u;
end get;
model Test
A a;
Real x;
equation
x = a.get_x();
end Test;
end MemberFunction;
一种可能的解决方法是将函数更改为一个块,向其中添加一个参数,实例化该块并将e传播到新参数,然后引用公式中的blockInstance.y。