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 simulation . when 式は逆の順序でアクティブになっているようです。

一方、「式」を「アルゴリズム」に変更し、(もちろん)「=」を「:=」に変更すると、コードは次のようになります。

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 で、次のようになります。モデル nobug シミュレーション

これはWolfram SystemModelerの実装における比較的基本的な問題ですか?

4

0 に答える 0