osqp

语法

osqp(q, [P], [A], [lb], [ub])

详情

求二元目标函数在线性约束条件下的最优解。具体模型如下:



返回一个元组:

  • 第一个元素是字符串,表示求解状态:
    • solved :已解决
    • solved inaccurate:已解决,但结果不精准
    • primal infeasible:原问题无可行解
    • dual infeasible:对偶问题无可行解
    • maximum iterations reached:达到最大迭代次数
    • run time limit reached:运行超时
    • problem non convex:问题非凸
    • interrupted:求解被中断
    • unsolved:未解决
  • 第二个元素是数值型向量,表示目标函数取到最小值时的数值解。

参数

  • q 是目标函数一次项向量。
  • P 是目标函数的二次项矩阵,且必须是半正定矩阵。
  • A 是不等式约束的系数矩阵。
  • lb 是不等式约束的左端向量。
  • ub 是不等式约束的右端向量。
注:
  • Albub 必须同时指定或同时省略。
  • lbub 可以包含空值(NULL),但其长度必须和A的行数匹配。 ub/lb 为空值时,视为正/负无穷,在计算时对应值为 ±1030

例子

P = matrix(4e-2 6e-3 -4e-3 0.0, 6e-3 1e-2 0.0 0.0, -4e-3 0.0 2.5e-3 0.0, 0.0 0.0 0.0 0.0)
q = [-2, -4, 2, 3]
A = [1,3,3,-2,2,-1,1,-4,1,2,-1,-5,1,1,1,1]$4:4
l = [,,,1.0]
u = [3.0,2.0,-1.0,1.0]
res = osqp(q, P, newA, l, u)
print(res)

返回:("solved",[-64.364818313795097,368.910318139716082,-548.041799338347459,244.496302999333039])