快速最优控制套件
rockit-meco的Python项目详细描述
摇滚乐
说明
Rockit(快速最优控制工具包)是一个软件框架,用于快速原型化工程中可能出现的最优控制问题(也称为动态优化): 迭代学习(ILC)、模型预测控制(NMPC)、运动规划。
值得注意的是,该软件允许自由结束时间问题和多阶段优化问题。 该软件目前主要集中在直接方法和CasADi上的relieas。 这个软件是由KU Leuven MECO research team开发的。
安装
使用pip安装:pip install rockit-meco
你好世界
(取自example gallery)
导入项目:
fromrockitimport*
启动时间范围为10秒的最佳控制环境(可用FreeTime(initial_guess)
配置空闲时间问题)。
ocp=Ocp(T=10)
定义两个标量状态(也支持向量和矩阵):
x1=ocp.state()x2=ocp.state()
定义分段常量控制输入(分段线性使用order=1
):
u=ocp.control()
为状态指定微分方程(时间依赖性支持ocp.t
,DAE也支持ocp.algebraic
和add_alg
):
ocp.set_der(x1,(1-x2**2)*x1-x2+u)ocp.set_der(x2,x1)
拉格朗日目标项
ocp.add_objective(ocp.integral(x1**2+x2**2+u**2))
ocp.add_objective(ocp.at_tf(x1**2))
路径约束(必须在从t0
到tf=t0+T
的整个时间域上有效,可用的网格选项):
ocp.subject_to(x1>=-0.25)ocp.subject_to(-1<=(u<=1))
边界约束:
ocp.subject_to(ocp.at_t0(x1)==0)ocp.subject_to(ocp.at_t0(x2)==1)
选择NLP解算器后端(casadinlpsol
插件):
ocp.solver('ipopt')
选择解决方法: n——控制间隔数 m—每个控制间隔的积分步数
method=MultipleShooting(N=10,M=2,intg='rk')#method = DirectCollocation(N=10, M=2)ocp.method(method)
求解:
sol=ocp.solve()
显示结构:
ocp.spy()
后处理:
tsa, x1a = sol.sample(x1, grid='control')
tsb, x1b = sol.sample(x1, grid='integrator')
tsc, x1c = sol.sample(x1, grid='integrator', refine=100)
plot(tsa, x1a, '-')
plot(tsb, x1b, 'o')
plot(tsc, x1c, '.')