2

(对不起格式化,我会尽力的)我想解决的:

x = argmin_x (Ax - p)'(Ax - p)
s.t. x >= b

其中A是一个NxH逻辑矩阵(大约一半是零,一半是一),b是一个Hx1常数向量,其中每个条目都是相同的(例如,b = (0.1,0.1,0.1,...). 是概率p的常数向量,所以所有条目都在 中。最优也是一个分布,所以所有其条目的个数应该在 中。请注意,在实践中,例如非常大,例如相对较小,例如。Nx1[0,1]x[0,1]H2 millionN150

我目前正在使用 CVX 来解决这个问题。明确地说,我的代码是:

b= 0.1.*ones(H,1)/H;
cvx_begin quiet
    variable x(H)
    minimize( norm((A*x-p),2)) 
    subject to
       x >= b;
cvx_end

这会产生正确的结果。但是,当它很大时,它相当慢H。鉴于我的优化程序的结构(逻辑 A、恒定约束、如果没有约束,则具有解析解的问题等),有没有更好的方法来解决这个问题?这里推荐CVX吗?

谢谢您的帮助。

4

0 回答 0