有人有解决AMPL微分方程的经验吗?我google了很多,但没有合适的结果......
在google群组中,我发现了一个简单的“手工制作”示例,但它不起作用......
所以,我找到了这个例子。
考虑这个ODE:
x' = -ax + u, x(0) = 0.
其中a = 0.2是参数; x =状态变量,介于0和9之间;你= 输入变量,介于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的零...因为这条线也难怪
最小化obj:0;
据我所知,我们需要将问题表示为代数方程组,但在这种情况下,目标函数是什么?
那么,有人可以给出任何建议或适当的例子吗?
提前致谢。
答案 0 :(得分:1)
我担心AMPL并不适合用于此类任务。如您的示例所示,您可以劫持它,甚至可以解决一些更简单的问题实例。
Modelica(Optimica语言扩展)或类似语言更有可能适合您的目的。