(对不起格式化,我会尽力的)我想解决的:
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]
H
2 million
N
150
我目前正在使用 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吗?
谢谢您的帮助。