当我在 Wolfram Systemmodeler 中尝试这个简单的 modelica 代码时:
model bug
Integer y(start = 1);
equation
when time > 0.2 then
y = 5 "y = 2";
elsewhen time > 0.4 then
y = 4 "y = 3";
elsewhen time > 0.6 then
y = 3 "y = 4";
elsewhen time > 0.8 then
y = 2 "y = 5";
end when;
end bug;
结果是 1、2、3、4、5,像这样:Model bug simulatiom。当方程似乎以相反的顺序被激活。
另一方面,将“方程式”更改为“算法”,并且(当然)将“=”更改为“:=”代码变为:
model nobug
Integer y(start = 1);
algorithm
when time > 0.2 then
y := 5;
elsewhen time > 0.4 then
y := 4;
elsewhen time > 0.6 then
y := 3;
elsewhen time > 0.8 then
y := 2;
end when;
end nobug;
结果和预期的一样,1、5、4、3、2,像这样:Model nobug simulation
这是 Wolfram SystemModeler 实现中相对基本的问题,还是我看不到其他问题?