socp

语法

socp(f, [G], [h], [l], [q], [Aeq], [beq])

详情

该函数用于求解二阶锥规划问题,计算目标函数在限定条件下的最小值。若其约束条件以标准形式给出,其形式如下:



则矩阵 G 为:



向量 h 为:



返回一个长度为 3 的元组:

  • 第一个元素表示求解状态:
    • Problem solved to optimality:达到最优解
    • Found certificate of primal infeasibility:原始问题无解
    • Found certificate of dual infeasibility:对偶问题无解
    • Offset exitflag at inaccurate results:结果不精确
    • Maximum number of iterations reached :达到最大迭代次数
    • Search direction unreliable :搜索方向不可靠
    • Unknown problem in solver:求解问题未知
  • 第二个元素是目标函数取最小值时 x 的取值。
  • 第三个元素是目标函数的最小值。

参数

二阶锥规划(Second-Order Cone Programming,SOCP)问题的约束条件形式如下:



其中 K 为锥,s 为松弛变量,其值在优化过程中会被确定。

f 是数值型向量,表示目标函数的系数向量。

G 是数值型矩阵,表示锥约束的系数矩阵。

h 是数值型向量,表示锥约束的右端向量。

l 是整数标量,表示非负象限约束的维度。

q 是正数向量,表示各个二阶锥约束的维度大小,形式为 [r0,r1,…,rN-1]。

Aeq 是数值型矩阵,表示等式约束的系数矩阵。

beq 是数值型向量,表示等式约束的右端向量。

例子

求解以下二阶锥规划问题:



f = [-6, -4, -5]
G = matrix([[16, 7, 24, -8, 8, -1, 0, -1, 0], 
[-14, 2, 7, -13, -18, 3, 0, 0, -1], 
[5, 0, -15, 12, -6, 17, 0, 0, 0]])
h = [-3, 5, 12, -2, -14, -13, 10, 0, 0]

l = 2
q = [4,3]

re = socp(f,G,h,l,q, ,)
print(re)

返回:("Problem solved to optimality",[-9.902804882871327,-1.39084684264198,26.211851780740154],-66.079042235904907)