在AMPL中定义两个控件之间的包络

问题描述 投票:0回答:1

我目前正在将以下问题(http://tomdyn.com/examples/minEnergyOrbitTransfer.html)从PROPT转换为AMPL。有两个控件,ut和ur。还有一个条件将两者链接在一起。此条件的形式为[0 <= sqrt((ur²+ut²))} <= umax]。过去,我编写的条件与此类似,但是没有不等式(请注意,我正在使用Simpon的积分)

我已经在AMPL的手册中搜索了与此类似的内容,但是我什么都没找到,特别是在有关约束https://ampl.com/BOOK/CHAPTERS/11-linprog.pdf的章节中。

也许,附录A https://ampl.com/BOOK/CHAPTERS/24-refman.pdf中的命令可以为我提供帮助,但我不理解。

这是我上次解决问题的方式。但是,总是将两个控件添加到其中。

control_contraint{i in N}: u1[i]²=1-u2[i]²;
control_contraint_mid{i in N1}: midu1[i]²=1-midu2[i]²;

并且在这种情况下,我试图做类似的事情

control_constraint{i in N}: ur[i]*ur[i] >=0, <=umax*umax-ut[i]*ut[i];
control_constraint_mid{i in N1}: midur[i]*midur[i] >=0, <=umax*umax-midut[i]*midut[i];

但是结果是语法错误。

我需要有关如何写等式的建议。

optimization controls constraints ampl
1个回答
0
投票

最后,我可以将每个条件一分为二。

upper_control_contraint {i in N} (ut[i]^2+ur[i]^2)^(0.5)<=umax;
lower_control_constraint {i in N} (ut[i]^2+ur[i]^2)^(0.5)>=0;

同样对于中间状态。

© www.soinside.com 2019 - 2024. All rights reserved.