【发布时间】:2018-04-22 12:47:24
【问题描述】:
我正在努力解决问题
d = 0.5 * ||X - \Sigma||_{Frobenius Norm} + 0.01 * ||XX||_{1},
其中 X 是对称正定矩阵,所有诊断元素都应为 1。XX 与 X 相同,但对角矩阵为 0。\Sigma 已知,我希望 X 的最小 d。
我的代码如下:
using Convex
m = 5;
A = randn(m, m);
x = Semidefinite(5);
xx=x;
xx[diagind(xx)].=0;
obj=vecnorm(A-x,2)+sumabs(xx)*0.01;
pro= minimize(obj, [x >= 0]);
pro.constraints+=[x[diagind(x)].=1];
solve!(pro)
MethodError: 没有方法匹配 diagind(::Convex.Variable)
我只是通过约束矩阵中的对角元素来解决最优问题,但似乎 diagind 函数在这里不起作用,我该如何解决这个问题。
【问题讨论】:
-
您能以数学形式添加您要解决的优化问题吗?
-
d=0.5*||X-\Sigma||_{Frobenius Norm}+0.01*||XX||_{1},X是一个对称正定矩阵,所有的诊断元素应为 1。XX 与 X 相同,但对角矩阵为 0。\Sigma 已知,我想要 X 的最小 d。
-
好的,我在问题中添加了这个,请检查是否准确。
-
是的,你完全理解。
-
出于兴趣,如果您将其定义为
sum(abs(XX)),||XX||_1是一个什么样的 1-norm?据我记得,运算符 (1,1)-norm 将是列和的最大值,而 Schatten 1-norm 是奇异值的总和。我忽略了什么吗?
标签: julia linear-algebra convex-optimization convex