2

当我在 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 实现中相对基本的问题,还是我看不到其他问题?

4

0 回答 0