1

AMPL で微分方程式を解いた経験のある人はいますか? 私はたくさんグーグルで検索しましたが、適切な結果はありません...

Googleグループで、単純な「手作り」の例を見つけましたが、うまくいきません...

それで、私が見つけたこの例。

次の ODE を検討してください。

   x' = -ax + u, x(0) = 0. 

ここで、a=0.2 はパラメーターです。x = 0 ~ 9 の状態変数。u = 0 ~ 5 の入力変数。これを AMPL で次のように記述できます (教科書のフォワード オイラーを使用)。

param N := 10; # no. of integration steps 
param dt := 0.01; # integration step size 
param a := 0.2; 
set kset ordered := 0..N; 
var x{kset}, >= 0, <= 9; 
var u{kset}, >= 0, <= 5; 
minimize obj: 0; 
subject to 
c1{k in 1..N}: (x[k] - x[k-1])/dt = -a*x[k-1] + u[k-1]; 
option solver ipopt; 
solve; 
display x, u;

ソリューションは、u と x のゼロを提供します...この行のおかげで不思議ではありません

オブジェクトを最小化: 0;

私が理解している限りでは、代数方程式系として問題を表す必要がありますが、この場合の目標関数は何でしょうか?

それで、誰かが提案や適切な例を教えてもらえますか?

前もって感謝します。

4

1 に答える 1

1

残念ながら、AMPL はこの種のタスクに使用するためのものではありません。あなたの例が示すように、それを乗っ取ることができ、いくつかのより簡単な問題のインスタンスを解決することさえできます.

Modelica (Optimica 言語拡張) または同様の言語が目的に適している可能性が高くなります。

于 2013-06-08T14:19:26.023 に答える