速度规划问题 - 扩展模型
在上述例子中, 我们考虑了简单的速度规划问题的建模与求解. 下面我们将模型扩展为一个更复杂的模型:
- 考虑控制量的变化率约束/惩罚
- 考虑变量的耦合约束
- l1范数的目标函数
变化率约束/惩罚
假设控制量的变化率的约束为[-5, 5] . 同时, 我们需要在目标函数中添加控制量变化率的惩罚项.
我们可以引入控制量的高阶导数变量来表示控制量的变化率. 然后对于变量, 我们设置其上下界为[-5, 5] , 并且对其进行惩罚.
新增变量:
jerk = prob.variable('jerk', hard_lowerbound=-5, hard_upperbound=5)
目标函数变更为:
obj = general_objective((v - vref)**2 + 0.1 * jerk**2)
prob.objective(obj)
约束条件变更为:
ode = differential_equation(
state=[s, v, a],
state_dot=[v, a, jerk],
stepsize=0.1,
discretization_method='erk4')
prob.equality(ode)
初始条件变更为 (增加了加速度的初始值约束):
seq = general_equality([s - 0, v - 0, a - 0])
prob.start_equality(seq)
效果如下:
