Scaly: an Optimizing Compiler for Optimal Control
作者: Tudor A. Oancea, Colin N. Jones
分类: eess.SY
发布日期: 2026-10-30
💡 一句话要点
提出Scaly优化编译器以提升最优控制效率
🎯 匹配领域: 支柱一:机器人控制 (Robot Control)
关键词: 最优控制 优化编译器 模型预测控制 动态系统 稀疏导数 Python C代码生成
📋 核心要点
- 现有的最优控制方法在处理复杂的非线性程序时效率较低,尤其是在动态内存分配和求解时间方面。
- Scaly通过嵌入Python的建模语言和特定于最优控制的优化策略,生成高效的C代码,从而提高了求解速度和内存使用效率。
- 在基准测试中,Scaly在评估海森矩阵时比CasADi快26倍,并且在每个控制步骤的求解时间上缩短了最多9倍,显示出显著的性能提升。
📝 摘要(中文)
我们提出了Scaly,这是一个开源的优化编译器,专为最优控制而设计,使用Python编写并生成快速的C代码。Scaly提供了一种嵌入Python的建模语言,适用于模型预测控制和移动视野估计中的参数优化问题,并计算标准优化求解器所需的稀疏导数。Scaly接受一般的非线性程序,但应用特定于最优控制的优化,保持问题的重复结构,如视野的阶段,通过微分到生成的循环。生成的C代码仅依赖于C数学库,并且从不动态分配内存。在三个基准问题上,Scaly评估拉格朗日的海森矩阵的速度比CasADi快26倍,生成的二进制文件更小,构建时间在视野变化时几乎保持不变。使用相同的求解器,Scaly在每个基准测试中将每个控制步骤的求解时间缩短了最多9倍。
🔬 方法详解
问题定义:本论文旨在解决现有最优控制方法在处理复杂非线性程序时的效率问题,尤其是在动态内存分配和求解时间方面的不足。
核心思路:Scaly通过提供一种嵌入Python的建模语言,结合特定于最优控制的优化策略,生成高效的C代码,从而提升求解速度和内存使用效率。
技术框架:Scaly的整体架构包括建模语言、优化求解器和C代码生成模块。建模语言用于定义优化问题,优化求解器负责计算稀疏导数,而C代码生成模块则将优化结果转化为高效的C代码。
关键创新:Scaly的主要创新在于其特定于最优控制的优化策略,能够保持问题的重复结构,并通过微分优化生成的循环,从而显著提高求解效率。
关键设计:Scaly的设计中,关键参数包括优化问题的定义方式和稀疏导数的计算方法,确保生成的C代码仅依赖于C数学库,避免动态内存分配。
📊 实验亮点
Scaly在三个基准问题上的实验结果显示,其评估拉格朗日海森矩阵的速度比CasADi快26倍,且生成的二进制文件更小,构建时间几乎不受视野变化的影响。此外,Scaly在每个控制步骤的求解时间上缩短了最多9倍,展现了显著的性能优势。
🎯 应用场景
Scaly在模型预测控制、机器人控制和动态系统优化等领域具有广泛的应用潜力。其高效的求解能力和内存管理策略使得在实时控制系统中实现复杂的优化问题成为可能,未来可望推动智能控制系统的发展。
📄 摘要(原文)
We present Scaly, an open-source optimizing compiler for optimal control, written in Python, that generates fast C code. Scaly provides a modeling language embedded in Python for the parametric optimization problems that arise in model predictive control and moving horizon estimation, and computes the sparse derivatives that standard optimization solvers need. Scaly accepts general nonlinear programs but applies optimizations specific to optimal control, which preserve the repeated structure of a problem, such as the stages of a horizon, through differentiation down to the generated loops. The generated C depends only on the C math library and never allocates memory dynamically. On three benchmark problems, Scaly evaluates the Hessian of the Lagrangian up to 26 times faster than CasADi, with smaller binaries and build times that stay nearly constant with the horizon. With the same solver, Scaly shortens the solver time per control step on every benchmark, by a factor of up to 9.