SDP中的对数行列式约束

计算科学 优化 凸优化 半定规划
2021-12-09 04:46:42

这是对我的问题的迟来的跟进,因为我不想将问题附加到问题上。

根据此处的 Mosek 文档,表达的一种可能性,其中是要优化的对称正半定矩阵变量,因为半定编程约束是将其重新表述为tlog(det(X))X

[XZZTdiag(Z)]0
s.t.
Z is lower triangular
tilog(Zii)

文档继续指出“如果是 X 的时获得的最佳值”。表达这一点的明显方法(至少对我而言)是定义一个新变量以及是下三角形。我的问题是,你如何表达是下三角形的要求?您是否明确要求的所有超对角线条目为det(X)Z=LDX=LDLTLDLXM=[XZZTdiag(Z)]M0X0ZZZ0,或者有没有办法隐含地表达这个约束?至少我的一些困惑源于应该等于是一个要优化的变量之外,这更容易表达,所以我们实际上并不知道是什么分解看起来像提前(必须设置约束时)。ZLDXLDLXLDL

这个问题的第一个答案似乎得到了类似的想法,但仍然存在事先不知道的问题,所以我不清楚如何确保XLDLT=X

编辑:

问这个问题的原因是我试图弄清楚在低级求解器中实际使用的约束矩阵是如何针对这类问题形成的。

1个回答

您只需将零放在所需位置,即使用所需的三角形基础您永远不会明确使用任何分解,这只是为了证明优化模型以最优方式产生所需的结果。Z

这里使用 YALMIP 接口 Mosek 实现

% Random example (fixed A)
A = randn(5);A = A'*A;
% Define a scalar and a triangular matrix
sdpvar t
Z = tril(sdpvar(5));
% Solve
Model = [[[A Z';Z diag(diag(Z))] >= 0], t <= sum(log(diag(Z)))];
optimize(Model,-t)
% Compare
log(det(A))
value(t)