optimization - 在 AMPL 中定义两个控件之间的包络
问题描述
我目前正在将以下问题(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];
然而,结果是语法错误。
我需要有关如何编写方程式的建议。
解决方案
最后,我可以通过将每个条件一分为二来做到这一点。
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;
中间国家也是如此。
推荐阅读
- tensorflow - 构建 TensorFlow:从 Bazel 根外部导入 MPI 标头
- python-3.x - 使用 python opencv 的 OMR 气泡表扫描仪
- javascript - 角度示意图条件属性/提示
- c# - 如果根密钥不可用,如何跳过注册表扫描
- java - 无法在 <28 Api 上运行为 Api 28(使用 minSdk 21)制作的应用程序
- react-native - 如何在 Expo React Native 应用程序中检查互联网连接?
- ruby-on-rails - 点击时的 link_to rails_blob_path 与 swiper 幻灯片 div 内的 image_tag 的相同图像不匹配
- php - 如何检查到 RabbitMQ 的连接错误?
- c# - WebClient.UploadString 返回 500 提交到在 IIS Express 上运行的 Web 服务
- xml - XSD 和 SSIS:查找全局声明的复杂类型时出错