我有一个有六个状态和两个输入的系统。使用 Python 最优控制库,我可以使用以下命令为输入和状态设置约束:
constraints = [ opt.input_range_constraint(rocket, [1000, -2*np.pi/180], [5000, 2*np.pi/180])]
terminal = [ opt.state_range_constraint(rocket, [-np.inf, -np.inf, xf[2], -np.inf, -np.inf, -np.inf], [np.inf, np.inf, xf[2], np.inf, np.inf, np.inf])]
我希望我的最后第三个状态正是我指定的状态。
当我尝试对特定状态施加限制时,当其他一切都是 -inf 到 inf 时,如上所示,我收到警告:/opt/anaconda3/lib/python3.8/site-packages/scipy/optimize/_constraints.py:432: OptimizeWarning: Equality and inequality constraints are specified in the same element of the constraint list. For efficient use with this method, equality and inequality constraints should be specified in separate elements of the constraint list.
我希望对我的状态和输入单独施加限制。这怎么可能?
在一个例子中,我已经看到了这个工作:
terminal = [ opt.state_range_constraint(rocket, xf, xf) ]
按照我的解释,上述陈述意味着所有状态在整个轨迹中都应该保持不变。对上述约束的解释的任何见解都是无价的。