SDP求解器SCS的存储复杂度

计算科学 凸优化 约束优化 复杂 半定规划
2021-12-13 09:04:05

这是这个问题的后续问题

考虑以下标准形式的 SDP:

minXSn,X>0tr(AX)subject totr(BiX)bi,i=1,,m

这里,ASn,BiSnbiRm=O(n)

在一般情况下,谁能解释这个问题的预期存储复杂性?

我的理解是,像 SCS 这样的一阶求解器将仅使用梯度信息形成一个n2大小的线性系统,因此存储复杂度将为O(n4),它反映了梯度矩阵的大小,即n2×n2

这种理解正确吗?我的困惑是关于双重问题的可能性较小。CVX会自动处理吗?例如,如果n=1000m=1000,似乎上面提到的原始形式会形成较小的问题。


约翰回答后编辑:我目前正在使用 CVX。我尝试了一个类似于您给出的示例。在上面的帖子中使用符号,我使用的是如果我以上述格式提交我的问题,我会得到以下输出:n=100,m=10XSn


调用 SCS 1.1.7:5050 个变量,10 个等式约束

Lin-sys: sparse-indirect, nnz in A = 50500, CG tol ~ 1/iter^(2.00) eps = 1.35e-06, alpha = 1.50, max_iters = 10000, normalize = 1, scale = 1.00 变量 n = 10 ,约束 m = 5050 锥体:sd vars:5050,sd blks:1 建立时间:3.02e-03s


现在,如果我通过形成这个对偶来提交我的问题,我会收到消息说 CVX 将解决我对偶的对偶(即原始问题),并且我得到与上面完全相同数量的约束和变量。

所以我的问题是 CVX 是否真的解决了你所描述的方式? 考虑到上述变量,预期的空间复杂度是多少?

1个回答

不,你的理解不正确。通过引入松弛您可以将约束写成形式。的 LP 锥的乘积上线性系统将是一个大小为的线性系统,因为原始系统中个变量)。一个非常糟糕的模型是做你隐含暗示的事情,即将的元素作为变量引入,导致大小为sR+mtr(BiX)+si=binmm×mmmXO(n2). 在半定规划中求解原始对偶对时,您永远不会显式求解原始锥的元素,矩阵作为一个整体是从对偶的线搜索解中重建的。

这里的东西可能是相关的读物(以及那里的链接论文)

编辑:YALMIP 中的简单示例(免责声明,由我开发)

您不希望 YALMIP 将此解释为由中的各个变量定义的问题,并将数据拟合到对偶描述中,这是默认设置(导致对偶中的 125250 个变量/原始中的 125250 等式)X

X = sdpvar(500);
optimize([X>=0,trace(X)==1],trace(randn(500)*X),sdpsettings('solver','scs'))

相反,您希望 YALMIP 从原始的角度来解释它(原始中的 1 个相等/对偶中的 1 个变量)

optimize([X>=0,trace(X)==1],trace(randn(500)*X),sdpsettings('solver','scs','dualize',1))