约束优化Skill constrained-optimization

这个技能专注于解决优化问题中的约束优化,包括等式约束、不等式约束和边界约束。它涵盖了拉格朗日方法、KKT条件、惩罚和障碍方法,以及使用SciPy等工具进行实际优化。关键词:约束优化,拉格朗日乘子,KKT条件,SciPy优化,数学优化,量化交易,股票分析。

量化策略 0 次安装 0 次浏览 更新于 3/14/2026

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

约束优化

何时使用

在处理优化中的约束优化问题时使用此技能。

决策树

  1. 约束分类

    • 等式约束: h(x) = 0
    • 不等式约束: g(x) <= 0
    • 边界约束: l <= x <= u
  2. 拉格朗日方法(等式约束)

    • L(x, lambda) = f(x) + sum lambda_j * h_j(x)
    • 求解: grad_x L = 0 和 h(x) = 0
    • sympy_compute.py solve "grad_L_system"
  3. KKT条件(不等式约束)

    • 使用 mu_i 扩展拉格朗日函数 for g_i(x) <= 0
    • 互补松弛性: mu_i * g_i(x) = 0
    • z3_solve.py prove "kkt_satisfied"
  4. 惩罚和障碍方法

    • 惩罚: 添加 P(x) = rho * sum max(0, g_i(x))^2
    • 障碍: 添加 B(x) = -sum log(-g_i(x)) 用于内点法
    • 迭代增加惩罚/减少障碍参数
  5. SciPy 约束优化

    • scipy.optimize.minimize(f, x0, method='SLSQP', constraints=cons)
    • constraints = [{‘type’: ‘eq’, ‘fun’: h}, {‘type’: ‘ineq’, ‘fun’: lambda x: -g(x)}]
    • bounds = [(l1, u1), (l2, u2), …]

工具命令

Scipy_Slsqp

uv run python -c "from scipy.optimize import minimize; cons = dict(type='eq', fun=lambda x: x[0] + x[1] - 1); res = minimize(lambda x: x[0]**2 + x[1]**2, [1, 1], method='SLSQP', constraints=cons); print('Min at', res.x)"

Sympy_Lagrangian

uv run python -m runtime.harness scripts/sympy_compute.py solve "[2*x - lam, 2*y - lam, x + y - 1]" --vars "[x, y, lam]"

Z3_Kkt_Satisfied

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

关键技术

来自索引教科书:

  • [非线性编程_tif] 共轭方向方法** - 涉及相对于某个二次形式彼此共轭的方向的方法,提高寻找最小值的效率。拟牛顿方法** - 牛顿方法的变体,近似Hessian矩阵。无导数方法** - 处理不需要导数信息的优化方法。
  • [非线性编程_tif] 凸集上的优化** - 专注于凸集内的约束优化问题。最优性条件:** 类似于无约束优化,但在凸集背景下。可行方向和条件梯度** - 探索确保约束内可行性的方法。
  • [非线性编程_tif] 在本章中,我们考虑约束优化问题 minimize f(z) subject to z € X,其中我们假设:(a) X 是 2 的非空凸子集。在处理算法时,我们进一步假设 X 是闭的。函数 f: %™ — R 在 X 上连续可微。
  • [非线性编程_tif] 获取下界的方法在第 5 节中详细阐述。拉格朗日松弛方法详细讨论。此方法需要优化不可微函数,一些主要相关算法,如次梯度和切割平面方法,将在第 6 章讨论。
  • [非线性编程_tif] 图像描绘了一个三维图形表示,可能与线性代数或优化相关。关键元素包括: - : 显示三个相交轴,表示三维坐标系。方程和约束**: 注意到线性方程 {x | Ax = b, x ≥ 0},表示系统或约束集。

认知工具参考

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