凸优化Skill convex-optimization

该技能专注于凸优化问题的问题解决策略,包括验证凸性、问题分类、标准形式转换、KKT条件应用以及使用Scipy和Z3等工具进行求解和验证。适用于优化、数据分析、机器学习等领域的数学建模和算法实现。关键词:凸优化、问题解决、优化算法、Scipy、Z3、KKT条件、数据科学、人工智能。

数据分析 0 次安装 0 次浏览 更新于 3/14/2026

name: 凸优化 description: “优化中凸优化的问题解决策略” allowed-tools: [Bash, Read]

凸优化

何时使用

在优化中处理凸优化问题时使用此技能。

决策树

  1. 验证凸性

    • 目标函数: Hessian矩阵半正定?
    • 约束集: 凸集的交集?
    • z3_solve.py prove "hessian_psd"
  2. 问题分类

    类型 求解器
    线性规划 scipy.optimize.linprog
    二次规划 scipy.optimize.minimize(method='SLSQP')
    一般凸优化 内点法
    半定规划 CVXPY with SDP solver
  3. 标准形式

    • 最小化 f(x) 约束于 g_i(x) <= 0, h_j(x) = 0
    • 通过取负将最大化转换为最小化
    • 通过取负将 >= 转换为 <=
  4. KKT条件(必要且充分)

    • 平稳性: grad L = 0
    • 原始可行性: g_i(x) <= 0, h_j(x) = 0
    • 对偶可行性: lambda_i >= 0
    • 互补松弛性: lambda_i * g_i(x) = 0
    • z3_solve.py prove "kkt_conditions"
  5. 求解和验证

    • scipy.optimize.minimize(f, x0, constraints=cons)
    • 检查约束满足
    • 验证解是全局最小值(凸性保证此点)

工具命令

Scipy_线性规划

uv run python -c "from scipy.optimize import linprog; res = linprog([-1, -2], A_ub=[[1, 1], [2, 1]], b_ub=[4, 5]); print('Optimal:', -res.fun, 'at x=', res.x)"

Scipy_最小化

uv run python -c "from scipy.optimize import minimize; res = minimize(lambda x: (x[0]-1)**2 + (x[1]-2)**2, [0, 0]); print('Minimum at', res.x)"

Z3_KKT

uv run python -m runtime.harness scripts/z3_solve.py prove "kkt_conditions"

关键技术

来自索引教材:

  • [Additional Exercises for Convex Optimization (with] 最后,有许多方法比这更好,通常以此为起点,然后‘抛光’结果。其中一些已被证明能提供相当可靠、即使不大的改进。您不需要实现任何这些方法。
  • [Additional Exercises for Convex Optimization (with] K { X = x Ax yi } 其中 e 是 p 维单位向量。这是一个多面体,因此是凸集。Rm 具有形式 − 残差 Aˆx − 描述一种使用凸优化近似求解此问题的启发式方法。
  • [Additional Exercises for Convex Optimization (with] 然后我们选取一个小正数 ,和一个向量 c cT x 最小化 约束于 fi(x) 0, hi(x) = 0, f0(x) ≤ p + 。在这些实验中有不同的策略选择 c。最简单是随机选择 c;另一种方法是选择 c 具有形式 ei,对于 i = 1, 。
  • [Additional Exercises for Convex Optimization (with] 我们将解表述为以下双准则优化问题: (J ch, T ther) cmax, cmin, 0, 最小化 约束于 c(t) c(t) a(k) ≤ ≥ t = 1, . T 此问题的关键是认识到目标 T ther 是拟凸的。如所述问题,对于固定值 T ther 是凸的。
  • [nonlinear programming_tif] 凸集上的优化 - 专注于凸集内的优化问题。最优性条件: 类似于无约束优化,但在凸集上下文中。可行方向和条件梯度 - 探索在约束内确保可行性的方法。

认知工具参考

参见 .claude/skills/math-mode/SKILL.md 获取完整工具文档。