问题低效率循环问题 Matlab CVX

问题描述

我正在尝试使用斯坦福大学 Stephen Boyd 小组实现的 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循环的问题中?

谢谢!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)