1

我正在尝试使用斯坦福大学斯蒂芬博伊德小组实施的 CVX MATLAB 包解决凸优化问题。

代码如下:

k = 500;
d = 2;
theta=ones(d,1);
X = rand(d,k);
X(:,1) = ones(d,1);
Y = X(:,1) - X;

cvx_begin
    variable a(k)
    A = X*diag(ones(1,k).*a')*X';
    variable z
    minimize z
    subject to
    for i = 2:k
        z >= matrix_frac(Y(:),A)/(theta'*Y(:))^2;
    end
    a'*ones(k,1) == 1;
    a >= 0;
cvx_end

代码有效,但问题在于效率。

特别是,约束中的 for 循环使其效率非常低,因为约束的数量随参数 k 线性增长。有没有更有效的方法来合并约束。在避免这个for循环的问题中?

谢谢!

4

0 回答 0