YALMIP

关注
义项:MATLAB优化建模工具箱
YALMIP

YALMIP是运行在MATLAB环境中的一款免费优化建模工具箱,用统一的高层语法描述线性规划、二次规划、二阶锥规划、半定规划等优化问题,并自动调用外部求解器求解[1][2]。它由瑞典林雪平大学的约翰·勒夫贝里(Johan Löfberg)于2001年前后开发,最初用于处理半定规划与线性矩阵不等式问题,后逐步扩展为通用的建模与求解接口[3][2]。其价值在于把建模与求解分离,使用者只需专注于问题本身的数学表述,而不必逐一学习各求解器的语法[4]。

百科 图文
目录
  1. 定义
  2. 原理
  3. 发展历程
  4. 应用
  5. 局限
  6. 参见

定义

YALMIP是一款基于MATLAB的优化建模工具箱,同时也被视为一种面向凸优化问题的建模语言[5]。它本身不做数值求解,而是把用户以高层形式写下的变量、约束与目标函数转换为求解器能够读取的数值模型,再交由外部求解器计算[5]。其名称最初是「Yet Another LMI Parser」的缩写,即又一个线性矩阵不等式解析器[3]。

在优化工具链中,YALMIP与AMPL、GAMS、CVX属于同一类建模层软件;建模层的选择与底层求解器的选择基本相互独立[4]。同一份模型描述可以在不改变代码结构的前提下更换求解器,便于比较不同求解器与不同问题形式的差别[4]。

原理

YALMIP以符号化的决策变量为核心。使用者用sdpvar声明标量、向量或矩阵变量,用中括号组合约束,用表达式写出目标函数,再通过optimize函数提交求解[6][7]。默认按最小化处理,若要求最大化,只需对目标函数取负号[7]。

发往求解器的模型可以通过export命令导出,也可以用savesolverinput或savedebug选项保留,用于核查转换结果[8]。求解器返回的原始信息则通过savesolveroutput选项取出,便于获取迭代次数、可行性距离等数值[8]。

在识别出用户所定义问题的类型后,YALMIP会自动挑选合适的求解器;如果没有可用的对应求解器,它会尝试对问题作等价转换以便求解[2]。以鲁棒优化为例,对于含不确定变量的模型,工具箱会借助所谓滤波器把鲁棒模型转化为确定性的鲁棒对应式,其中箱式不确定集可直接做最坏情况最大化,多面体不确定集则用枚举顶点的方式处理[1]。

可调用的求解器涵盖商业与免费两类:商业求解器如Gurobi、CPLEX、MOSEK,免费求解器如SeDuMi、SDPT3、Ipopt,此外还可以调用MATLAB自带优化工具箱中的linprog[4][2]。

$$\min_{x} \quad c^{T}x \quad \text{s.t.} \quad F(x) \succeq 0, \ G(x) \succeq 0$$

发展历程

YALMIP于2001年由约翰·勒夫贝里创建,他当时任职于瑞典林雪平大学电气工程系,其后曾在苏黎世联邦理工学院从事博士后研究[4][3]。2001年1月8日的技术报告记录了早期版本,其定位是SP、MAXDET与SOCP等求解器的MATLAB接口,目标是让使用者无需学习这些求解器各自的语法即可定义和求解线性矩阵不等式问题[3]。

2004年,勒夫贝里在CACSD会议上发表题为《YALMIP: A Toolbox for Modeling and Optimization in MATLAB》的论文,系统介绍了该工具箱在系统与控制理论优化问题中的应用,这篇论文后来成为引用该工具箱时的标准参考文献[9][5]。

此后工具箱持续扩展。2009年,勒夫贝里发表关于对偶转换的研究,描述了在YALMIP中自动推导原问题对偶模型并恢复原变量的实现方法[10]。2012年他又发表关于自动鲁棒凸规划的论文,构成了鲁棒优化模块的理论基础[1]。随着版本演进,其支持范围从最初的半定规划与线性矩阵不等式,扩展到线性规划、二次规划、二阶锥规划以及多参数规划等类型[2]。

应用

YALMIP的典型应用场景是控制理论与系统工程中的优化问题建模,这也是它最初的设计目标[9][2]。在教学中,它被用于线性规划、半定规划等课程练习,例如用MATLAB自带linprog与YALMIP求解同一个线性规划问题并比对结果[11]。

在控制研究中,YALMIP可用于求解李雅普诺夫方程与线性矩阵不等式,例如为线性系统寻找满足稳定性条件的对称矩阵,或为交通流控制问题求解线性二次调节器的增益矩阵[12][13]。

该工具箱还提供多项式与平方和规划相关功能,solvesos等命令可用于处理平方和分解问题[14]。对偶转换功能则可自动生成平方和程序的对偶形式,并用于大规模实验设计问题的建模[10]。此外,FORCESPRO等代码生成工具提供了Y2F接口,可将YALMIP描述的优化问题转换为嵌入式代码[15]。

局限

YALMIP的解析器完全在MATLAB环境中实现,这带来了平台无关性和易于扩展的好处,代价是性能损失,因此早期版本主要面向变量与约束数量在10至100之间的小规模问题[3][12]。在需要反复重建问题结构的场景下,例如模型预测控制,这种开销可能表现为效率下降[4]。

在鲁棒优化方面,YALMIP无法处理任意的不确定性问题,因为这类问题一般是不可解的,工具箱只针对若干特定情形提供转化方法[1]。其中部分情形采用基于Polya松弛或平方和的保守转化方式,所得结果可能偏于保守[1]。

模型的求解能力最终仍取决于所选求解器。若目标函数包含对数等非线性项,半定规划求解器SDPT3无法处理,需要改用支持指数锥的求解器;若模型中混入非凸二次项,求解器也可能拒绝接受该问题[16]。因此,问题必须写成相应求解器能够识别的形式,仅满足凸性并不足以保证被自动识别[16]。

参见

  • MATLAB —— YALMIP运行所依托的数值计算与编程环境。

  • CVX —— 同样是MATLAB环境下的凸优化建模工具,与YALMIP功能相近。

  • 半定规划 —— YALMIP早期版本主要处理的优化问题类型。

  • 线性矩阵不等式 —— YALMIP名称中LMI所指的数学对象。

  • 鲁棒优化 —— YALMIP设有专门模块处理的不确定性优化问题。

  • 求解器 —— YALMIP负责对接并调用的数值计算后端。

参考资料

  1. Robust optimization [引用日期2026-10-14]
  2. document [引用日期2026-10-14]
  3. YALMIP: A Matlab interface to SP, MAXDET and SOCP [引用日期2026-10-14]
  4. Tasks for solving a practical optimization problem [引用日期2026-10-14]
  5. File_46624fd6-0c61-490c-ab4a-bf3fee2f82cb [引用日期2026-10-14]
  6. Getting started [引用日期2026-10-14]
  7. optimize [引用日期2026-10-14]
  8. Extracting low-level data from solvers [引用日期2026-10-14]
  9. YALMIP : A Toolbox for Modeling and Optimization in MATLAB [引用日期2026-10-14]
  10. acm.org 上的网页 [引用日期2026-10-14]
  11. 15-830/630 - Problem Set #1 [引用日期2026-10-14]
  12. Mathematical Programming: Modelling and Applications [引用日期2026-10-14]
  13. lqr_sdp [引用日期2026-10-14]
  14. \( x = \text{sdpvar}(1) \) ; ______ variables \( x \) [引用日期2026-10-14]
  15. FORCESPRO(PDF) [引用日期2026-10-14]
  16. github.com 上的网页 [引用日期2026-10-14]
词条评价
词条统计

浏览次数:2 次

阅读量:0 次 · 阅读完成量:0 次

最近更新:2026-10-13T20:44:00Z

历史版本

本条目引用的词条
林雪平大学 MATLAB CVX 半定规划 线性矩阵不等式 鲁棒优化 求解器