2026b

# 凸优化工具箱


使用 DCP 规则建立凸优化问题,并通过锥优化求解器求解 LP、SOCP、SDP、指数锥和 LMI 问题

凸优化工具箱提供面向建模的凸优化接口。用户可以像编写数学模型一样声明变量、组合凸表达式、写出等式或不等式约束,然后调用 cvxsolve! 选择后端求解器完成求解。它适合用于信号处理、通信波束赋形、鲁棒控制、半正定松弛、资源分配、稀疏建模和矩阵不等式设计等需要可靠凸优化建模的任务。

工具箱采用纪律凸规划(Disciplined Convex Programming,DCP)规则检查模型。DCP 规则要求最小化目标为凸函数、最大化目标为凹函数,等式约束两端为仿射表达式,并要求不等式方向与表达式曲率匹配。这样的建模方式与 CVX 的思想一致:用户描述凸优化模型,系统完成规范化和求解器调用。

函数库:TyConvex

提示

使用本函数库之前,需要通过 import TyConvexusing TyConvex 来实现加载。
关于 importusing 的详细用法,请参见模块的命名空间管理

# 内容概览

凸优化快速入门
从最小线性规划和带界最小二乘开始,学习变量、目标、约束、求解和结果读取。

DCP 建模基础
说明变量、表达式、目标函数、约束、半正定矩阵、集合约束和常用凸函数的建模方式。

求解接口
提供公开求解入口 cvxsolve!,用于求解由 TyConvex 建立的凸优化问题。

建模接口
TyConvex 重导出 Convex 建模接口。接口可在 TyConvex 中直接使用,用于完成变量创建、问题创建、约束构造和结果读取。

求解器与 cvxsolve!
说明 cvxsolve! 的求解器选择、容差、迭代次数、显示输出、热启动和原生求解器参数传递。

可求解的问题类型
按 LP、SOCP、SDP、指数锥、LMI 和组合优化松弛分类说明建模能力和适用场景。

工程案例
从工程验证模型中提炼 SDP/LMI 案例,展示鲁棒波束赋形、状态反馈、Schur 补和 Max-Cut 松弛等建模方式。

# 典型工作流

  1. 使用 Variable、Semidefinite、ComplexVariable 等接口声明决策变量。
  2. 使用 minimize、maximize 或 satisfy 创建优化问题。
  3. 用 ==、<=、>=、isposdef 和凸函数组合约束。
  4. 调用 cvxsolve!(problem; algs = "clarabel") 求解问题。
  5. 使用 problem.status、problem.optval 和 evaluate(variable) 读取状态、最优值和变量解。

# 函数

求解接口
函数名 简介
cvxsolve! 求解由 TyConvex/Convex 建立的凸优化问题,并选择代码中可识别的锥优化后端
建模接口

TyConvex 重导出 Convex 建模接口。常用建模接口如下:

函数名 简介
Variable 创建实数标量、向量或矩阵优化变量
Semidefinite 创建实对称半正定矩阵变量
ComplexVariable 创建复数优化变量
minimize 创建最小化凸优化问题
maximize 创建最大化凸优化问题
satisfy 创建无目标函数的可行性问题
evaluate 读取变量或表达式在求解结果处的数值
isposdef 创建矩阵半正定约束

norm、sum、tr、diag、entropy、logsumexp 和 sumsquares 等常用表达式接口用于构造目标和约束,请参见 DCP 建模基础。实际求解入口为 cvxsolve!。