Определите охват между двумя элементами управления в AMPL - PullRequest
0 голосов
/ 24 октября 2019

В настоящее время я перевожу следующую задачу (http://tomdyn.com/examples/minEnergyOrbitTransfer.html) из PROPT в AMPL. Есть два элемента управления, ut и ur. Есть также условие, которое связывает их обоих вместе. Это условие принимает форму [0<= sqrt ((ur² + ut²))} <= umax]. В прошлом я программировал условие, как-то похожее на это, но без неравенства (обратите внимание, что я использую интеграцию Симпона) </p>

Я искал 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];

В результате, однако, синтаксическая ошибка.

Мне нужен совет о том, как написать уравнение.

1 Ответ

0 голосов
/ 24 октября 2019

В конце я мог бы сделать это, разделив каждое из условий на два.

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;

И аналогично для средних состояний.

...