【问题标题】:Number of constraints in convex model凸模型中的约束数
【发布时间】:2020-01-05 18:47:25
【问题描述】:

为什么使用 cvxpy 编写并使用 Mosek 求解的凸 QCQP 模型显示的约束比模型中定义的约束更多(Mosek 报告)?

我注意到即使对于像 square(x) 这样的 cvxpy atom,如果 x 是单个变量和约束:

cvxpy.square(x) <= 1

表明模型有 4 个约束而不是只有一个?

谢谢

【问题讨论】:

    标签: cvxpy mosek


    【解决方案1】:

    您可以轻松地自行分析。运行:

    import cvxpy as cp
    
    # Construct the problem.
    x = cp.Variable(1)
    constraints = [cp.square(x)<=1]
    objective = cp.Minimize(0)
    prob = cp.Problem(objective, constraints)
    
    prob.solve(solver=cp.MOSEK, verbose=True, save_file="dump.opf")
    

    然后查看文件dump.opf。您将看到 cvxpy 如何使用二次锥对二次约束建模以圆锥形式重新表述问题。本质上它变成:

    (x1+1)^2 >= (x1-1)^2 + 4x0^2
    x1 <= 1
    

    但必须添加一些辅助变量才能以 MOSEK 格式输入。

    如果 opf 文件中的某些内容不清楚,MOSEK 文档 https://www.mosek.com/documentation/ 将提供详细信息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-07-19
      • 1970-01-01
      • 1970-01-01
      • 2022-06-15
      • 1970-01-01
      • 2015-09-30
      • 2021-11-01
      • 1970-01-01
      相关资源
      最近更新 更多