Math 求解线性组合的算法?

Math 求解线性组合的算法?,math,linear-algebra,Math,Linear Algebra,在我正在进行的项目中,我遇到了以下需要解决的问题: 给定一定数量的向量v_i(在数学意义上)和目标向量H,计算与目标向量H最接近的向量v_i的线性组合,约束条件是系数必须在[0,1]中 我不知道应该用什么样的算法/数学来解决这样的问题。任何正确方向的刺激都将不胜感激 这是一个组合优化问题。这类问题是NP难问题。但是我想对于二进制的,应该有多项式算法可以解决,或者有一些松弛来得到近似解。通过谷歌搜索“整数规划”可能会有所帮助。这是一个组合优化问题。这类问题是NP难问题。但是我想对于二进制的,应该有

在我正在进行的项目中,我遇到了以下需要解决的问题:

给定一定数量的向量v_i(在数学意义上)和目标向量H,计算与目标向量H最接近的向量v_i的线性组合,约束条件是系数必须在[0,1]中


我不知道应该用什么样的算法/数学来解决这样的问题。任何正确方向的刺激都将不胜感激

这是一个组合优化问题。这类问题是NP难问题。但是我想对于二进制的,应该有多项式算法可以解决,或者有一些松弛来得到近似解。通过谷歌搜索“整数规划”可能会有所帮助。

这是一个组合优化问题。这类问题是NP难问题。但是我想对于二进制的,应该有多项式算法可以解决,或者有一些松弛来得到近似解。通过谷歌搜索“整数规划”可能会有所帮助。

这是一个约束最小二乘问题。基本上,您希望解决优化问题:

  argmin ||Ax-H||
    x
  s.t.  0<=x_j<=1
argmin | Ax-H||
x

s、 t.0这是一个约束最小二乘问题。基本上,您希望解决优化问题:

  argmin ||Ax-H||
    x
  s.t.  0<=x_j<=1
argmin | Ax-H||
x

s、 t.0假设你想用最小二乘法求解,那么你就有了一个二次规划问题。例如,假设你的向量集是

x1 = 1 2 3]'    x2 = [3 2 1]'
你的目标向量是

H = [1 -1 1]'
然后,您可以创建列为向量的矩阵:

A = [1 3;
     2 2;
     3 1]
你要尽量减少的是

norm(A*x - H) = (A*x - H)' * (A*x - H) = x' * (A'*A) * x - (2*H'*A) * x + const
如果你定义

B = A' * A
C = -2 * H' * A
然后你有一个问题可以通过我的Matlab的
quadprog
函数得到最佳解决

quadprog(B,C,[],[],[],[],0,1)
ans = 
    0.16667
    0.16667
因此,这种情况下的最佳解决方案是

1/6 * x1 + 1/6 * x2 = [2/3, 2/3, 2/3]

假设你想用最小二乘法求解,那么你就有了一个二次规划问题。例如,假设你的向量集是

x1 = 1 2 3]'    x2 = [3 2 1]'
你的目标向量是

H = [1 -1 1]'
然后,您可以创建列为向量的矩阵:

A = [1 3;
     2 2;
     3 1]
你要尽量减少的是

norm(A*x - H) = (A*x - H)' * (A*x - H) = x' * (A'*A) * x - (2*H'*A) * x + const
如果你定义

B = A' * A
C = -2 * H' * A
然后你有一个问题可以通过我的Matlab的
quadprog
函数得到最佳解决

quadprog(B,C,[],[],[],[],0,1)
ans = 
    0.16667
    0.16667
因此,这种情况下的最佳解决方案是

1/6 * x1 + 1/6 * x2 = [2/3, 2/3, 2/3]

你能写出你的数学解吗?哦,我所说的公式不是指解!我不知道如何解决一般情况,这就是问题所在。我可以解决至少有3个线性独立向量的情况(不考虑约束)(注意,我在3-空间中工作)。但这并不一定会产生最佳组合。所谓最优,我指的是最小化目标向量和线性组合之间的差异。对我来说,真正的问题是如何在一般情况下“最优地”解决它。@starblue我不认为这是一个线性规划问题。@Chris Taylor解空间是线性的,但标准目标函数(最小二乘)是非线性的,所以你是对的。你能写出你的数学解吗?哦,公式不是指解!我不知道如何解决一般情况,这就是问题所在。我可以解决至少有3个线性独立向量的情况(不考虑约束)(注意,我在3-空间中工作)。但这并不一定会产生最佳组合。所谓最优,我指的是最小化目标向量和线性组合之间的差异。对我来说,真正的问题是如何在一般情况下“最优地”求解。@starblue我不认为这是一个线性规划问题。@Chris Taylor解空间是线性的,但标准目标函数(最小二乘)是非线性的,所以你是对的。很有趣,谢谢你的知识。实际上,我只是用一种迭代贪婪的方法充分地解决了这个问题。我猜这个解决方案不是最优的,但对于我的应用来说,它的性能足够好。这不是一个组合优化问题。权重应该在区间[0,1]内,而不是集合{0,1}。对不起,我的错误。如果它在区间[0,1]内,那么它是约束最小二乘问题,正如朝黄所说。如果你有高斯噪声假设,他的公式中使用的向量范数可以是2范数(最小化欧氏距离)。利用matlab中的quadprog可以解决这个问题。1范数比其他噪声模型更稳健。很有趣,感谢您的知识。实际上,我只是用一种迭代贪婪的方法充分地解决了这个问题。我猜这个解决方案不是最优的,但对于我的应用来说,它的性能足够好。这不是一个组合优化问题。权重应该在区间[0,1]内,而不是集合{0,1}。对不起,我的错误。如果它在区间[0,1]内,那么它是约束最小二乘问题,正如朝黄所说。如果你有高斯噪声假设,他的公式中使用的向量范数可以是2范数(最小化欧氏距离)。利用matlab中的quadprog可以解决这个问题。1范数对其他噪声模型更稳健。谢谢,这非常有用,现在我至少知道这是什么类型的问题了!谢谢,这很有帮助,现在我至少知道这是什么类型的问题了!