解决矩阵而不是向量的二次规划
solve quadratic programming for matrix instead of vectors
我正在研究二次规划问题。
所以我得到了两个矩阵 A 和 B(实际上是时间序列),我想找到矩阵 X,s.t。 A*X最接近B,条件是X包含所有正值。 (所以X可以看作是一个权重矩阵)
因为是最小化问题,而且X有局限性,所以考虑用二次规划。具体来说,我的目标是通过以下方式找到 X:
min sum (A*X - B).^2, that is:
min sum 1/2 X^t * (A^t*A) * X - (B^t*A) * X
s.t. X is positive
这个形式看起来和QP问题很相似:
1/2 x^t*Q*x + c^t*x
s.t. A*x < b
我的问题是:
My X is a matrix instead of a vector in QP.
Is there a variant of QP for this problem? Am I right to head to QP?
How to represent the limitation on X positive?
如果您能具体说明 R 函数就太好了。
非常感谢!
这应该是凸的并且可以直接用 QP 算法求解。我经常将其重写为:
min sum((i,k),d^2(i,k))
d(i,k) = sum(j, a(i,j)*x(j,k)) - b(i,k)
x(j,k) ≥ 0, d(i,k) free
这现在显然是凸的(对角 Q 矩阵)。在某些情况下,这种形式可能比将所有内容都放在 objective 中更容易解决。从某种意义上说,我们减少了问题的非线性。您也可以使用不同的规范将其作为 LP 解决:
min sum((i,k),abs(d(i,k)))
d(i,k) = sum(j, a(i,j)*x(j,k)) - b(i,k)
x(j,k) ≥ 0, d(i,k) free
或
min sum((i,k),y(i,k))
-y(i,k) ≤ d(i,k) ≤ y(i,k)
d(i,k) = sum(j, a(i,j)*x(j,k)) - b(i,k)
x(j,k) ≥ 0, y(i,k) ≥ 0, d(i,k) free
我正在研究二次规划问题。
所以我得到了两个矩阵 A 和 B(实际上是时间序列),我想找到矩阵 X,s.t。 A*X最接近B,条件是X包含所有正值。 (所以X可以看作是一个权重矩阵)
因为是最小化问题,而且X有局限性,所以考虑用二次规划。具体来说,我的目标是通过以下方式找到 X:
min sum (A*X - B).^2, that is:
min sum 1/2 X^t * (A^t*A) * X - (B^t*A) * X
s.t. X is positive
这个形式看起来和QP问题很相似:
1/2 x^t*Q*x + c^t*x
s.t. A*x < b
我的问题是:
My X is a matrix instead of a vector in QP.
Is there a variant of QP for this problem? Am I right to head to QP?
How to represent the limitation on X positive?
如果您能具体说明 R 函数就太好了。
非常感谢!
这应该是凸的并且可以直接用 QP 算法求解。我经常将其重写为:
min sum((i,k),d^2(i,k))
d(i,k) = sum(j, a(i,j)*x(j,k)) - b(i,k)
x(j,k) ≥ 0, d(i,k) free
这现在显然是凸的(对角 Q 矩阵)。在某些情况下,这种形式可能比将所有内容都放在 objective 中更容易解决。从某种意义上说,我们减少了问题的非线性。您也可以使用不同的规范将其作为 LP 解决:
min sum((i,k),abs(d(i,k)))
d(i,k) = sum(j, a(i,j)*x(j,k)) - b(i,k)
x(j,k) ≥ 0, d(i,k) free
或
min sum((i,k),y(i,k))
-y(i,k) ≤ d(i,k) ≤ y(i,k)
d(i,k) = sum(j, a(i,j)*x(j,k)) - b(i,k)
x(j,k) ≥ 0, y(i,k) ≥ 0, d(i,k) free