JModelica で次の静かな基本的な問題が発生しました。かなり単純なモデルを考えてみましょう:
model TEST
Real Dum(start = 0);
parameter Integer It = 5;
algorithm
Dum := 0;
for i in 1:It loop
Dum := Dum + 1;
end for;
end TEST;
もちろん、これを python でコンパイルすると実行されます。変数 Dum の値は、想定どおり常に 5 です。問題は、コンパイルされた fmu ( test.fmu ) を次のようにロードした後、パラメーター "It" に変更したい場合です。
test = load_fmu("test.fmu");
test.set("It",4);
シミュレーションを実行すると、「Dum」には 4 ではなく 5 が返されます。シミュレーション後に「It」の時間曲線をプロットするとわかるように、「It」は実際には 4 に変更されます。実際にループに影響を与えるようにオンザフライで変更する方法があるかどうかは誰にもわかりませんか?
これはもちろんおもちゃの例ですが、さまざまな範囲を必死にループする必要があり、再コンパイルに時間がかかるはるかに大きなプロジェクトには、その機能が必要です。
本当にありがとう