Matrix 用矩阵代替向量求解二次规划

Matrix 用矩阵代替向量求解二次规划,matrix,optimization,linear-algebra,minimization,quadratic-programming,Matrix,Optimization,Linear Algebra,Minimization,Quadratic Programming,我正在研究一个二次规划问题 所以我得到了两个矩阵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

我正在研究一个二次规划问题

所以我得到了两个矩阵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
如果你能具体了解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矩阵。在某些情况下,这种形式可能比把一切都放在目标中更容易解决。从某种意义上说,我们使问题不那么非线性。您也可以使用不同的范数作为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


哪些维度?mat mul是代数运算的吗?QP是一个相当普遍的问题,通常只有半正定QP才有可能求解全局最优解;凸面的创建标准表单并不难,但尚不清楚它是否是正确的工具/方法。这听起来像是矩阵分解,可能有特殊的算法可用。但即使是NMF在一般情况下也是非凸的。所以:要更加精确和正式@非常感谢您的回复!因为X需要由非负值组成,所以mat mul不起作用。事实上,我也在考虑NMF,但当权重手动设置为正值时,损失函数总是无限大,惩罚也无济于事。我猜这是因为负数被强制为零。这就是我考虑QP的原因。对于矩阵的维数,假设A是t*m,B是t*n,X是m*n。我完全误解了这里的任务。NMF是一项非常不同的任务。欧文的答案看起来是正确的。@sascha Yes LP工作得很好。无论如何谢谢你!非常感谢你!我也认为这是我希望做的。我尝试第三种形式的LP,但得到了巨大的矩阵。仍在尝试…我只是对第一个QP和第二个绝对值LP感到困惑。我使用的是R包,但QP只提供矩阵形式,不可能用于元素平方和求和。绝对值也不可能。你知道有什么软件包或其他工具可以处理这些问题吗?谢谢!1 R下的大多数或所有QP算法使用矩阵接口。这并不总是容易使用,但对于这个问题,不应该太糟糕。2 abs功能在第三款车型中线性化,请继续阅读。3 OMPR包允许LP和MIP模型的代数公式。是的,我继续使用LP。我刚刚得到了非常好的结果。谢谢@汉索洛:所有组合i,j的总和。
 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