1

有人有在 AMPL 中求解微分方程的经验吗?我google了很多,但没有合适的结果......

在谷歌群组中,我找到了一个简单的“手工”示例,但它不起作用......

所以,我找到了这个例子。

考虑这个 ODE:

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

其中 a=0.2 是一个参数;x = 状态变量,介于 0 和 9 之间;u = 输入变量,介于 0 和 5 之间。您可以在 AMPL 中编写如下(使用教科书正向 Euler):

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 的零...难怪因为这条线

最小化 obj: 0;

据我了解,我们需要将问题表示为代数方程组,但是在这种情况下,目标函数是什么???

那么,有人可以给出任何建议或适当的例子吗?

提前致谢。

4

1 回答 1

1

恐怕 AMPL 不适合用于此类任务。正如您的示例所示,您可以劫持它,它甚至可以解决一些更简单的问题实例。

Modelica(Optimica 语言扩展)或类似语言更有可能满足您的目的。

于 2013-06-08T14:19:26.023 回答