快速最优控制套件

rockit-meco的Python项目详细描述


摇滚乐

pipeline statuscoverage reporthtml docspdf docs

说明

Rockit logo

Rockit(快速最优控制工具包)是一个软件框架,用于快速原型化工程中可能出现的最优控制问题(也称为动态优化): 迭代学习(ILC)、模型预测控制(NMPC)、运动规划。

值得注意的是,该软件允许自由结束时间问题和多阶段优化问题。 该软件目前主要集中在直接方法和CasADi上的relieas。 这个软件是由KU Leuven MECO research team开发的。

安装

使用pip安装:pip install rockit-meco

你好世界

(取自example gallery

您可以在浏览器中实时试用:Binder

导入项目:

fromrockitimport*

启动时间范围为10秒的最佳控制环境(可用FreeTime(initial_guess)配置空闲时间问题)。

ocp=Ocp(T=10)

定义两个标量状态(也支持向量和矩阵):

x1=ocp.state()x2=ocp.state()

定义分段常量控制输入(分段线性使用order=1):

u=ocp.control()

为状态指定微分方程(时间依赖性支持ocp.t,DAE也支持ocp.algebraicadd_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))

路径约束(必须在从t0tf=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()

Structure of optimization problem

后处理:

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, '.')

Solution trajectory of states

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
swing Java按钮/网格布局   java列出Google日历中的所有事件   java无效:单击API publisher test按钮后连接到后端时出错   带有内部赋值的java While循环导致checkstyle错误   java为什么trimToSize/ensureCapacity方法提供“公共”级访问?   文件输出流的java问题   ListIterator和并发修改异常的java问题   java如何使用两个URL映射   无法识别使用“./../”构造的字符串java相对路径,为什么?   首次写入remotelyclosedsocket不会触发异常,对吗?JAVA   java OneDrive REST API为文件上载提供了400个无效谓词   Java泛型、集合接口和对象类的问题   OpenSSL Java安全提供程序   jmeter java运行jmx禁用操作