AMPL中的微分方程/最优控制

时间:2013-06-08 13:25:04

标签: math optimization mathematical-optimization differential-equations ampl

有人有解决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;

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

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

提前致谢。

1 个答案:

答案 0 :(得分:1)

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

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