【问题标题】:algorithm to choose weights so that average positions will approximate target position算法选择权重,使平均位置接近目标位置
【发布时间】:2020-04-25 16:05:09
【问题描述】:

我有一个系统,在空间的固定位置有少量粒子 (4-10)。然后我有一个目标位置。我想为每个粒子分配权重,以便粒子位置的加权平均值尽可能接近目标。在可能有多种解决方案的情况下,需要一致地分配权重。例如,如果我在 [1,0,0] 和 [-1,0,0] 和 [0,0,0] 处有 3 个粒子,而我的目标是 [0,0,0],则有三种可能解决方案,其权重为 0.333,0.333,0.333 或 0,0,1 或 0.5,0.5,0。第二个选项似乎最直观,但实际上选择哪种解决方案并不重要,只要它始终如一地选择即可。此外,我最感兴趣的情况是不可能有精确的解决方案,但选择的权重可以最大限度地减少误差。计算这些权重的最有效算法是什么?

编辑:为了更清楚地说明这一点,我创建了 2d 案例的视觉效果。在此示例中,有 5 个固定位置和 1 个目标位置。目前我正在使用一种笨拙的幼稚方法,从所有 5 个(权重 = 0.2,0.2,0.2,0.2,0.2)的平均值开始,然后迭代地调整这些权重并查看它是否有助于解决方案,逐渐“走向”目标.这可能需要数百个步骤。我需要在数百万甚至数十亿的目标位置上处理这个问题,所以我正在寻找一种更直接的分析方法来解决这个问题。

【问题讨论】:

  • 也许我没有完全理解这个问题,但它似乎只是你必须解决的一组线性方程。
  • @Henry 是的,这就是目标,根据方程得到一个解,这样我就可以快速准确地求解答案。但我不知道如何用可解方程来说明这一点。任何搜索想法将不胜感激。我搜索了“最小二乘”,但我能找到的只是线性回归,这似乎不是一回事,因为每个术语都有自己的误差,但在这种情况下,总体平均值只有一个误差值.

标签: algorithm particles weighted-average


【解决方案1】:

可以为该问题建立简单的线性方程(显示 3D 案例):

sum(xi * wi) = xt
sum(yi * wi) = yt
sum(zi * wi) = zt

您没有提到它,但似乎还有一个约束,即权重总和为 1。在这种情况下,只需添加一个进一步的等式:

sum(wi) = 1

如果有 N 个点,我们现在有一个由 3 个(或 4 个)方程组成的系统,其中有 N 个未知数(wi)。如何求解这样的系统在线性代数中是众所周知的。可能有 0 个、1 个或无限多个解。

如果没有解决方案,您可以改为求解目标点在给定点所跨越的子空间(可能是平面、线或点)上的法线投影。

如果您还希望权重大于或等于 0,它会变得更有趣。我的感觉是,如果目标点在给定点的凸包中,那么精确的解决方案总是可能的。

【讨论】:

  • 感谢您的详细回答。在做了一些研究之后,似乎我可以用 Ax = b 来表示,其中 A 是一个 3xN 矩阵,其中包含点位置,b 是目标位置,x 是要求解的权重。因为 A 不是正方形,我可以用 x = (A.TA)^-1 * A.Tb 来解决它,对吗?对于 N = 10,每个目标位置都需要进行数百次计算,所以虽然这会给我一个直接的分析解决方案,但我不确定它在实践中的效率如何......也许你正在使用凸包,而几何方法会更好
  • 不计算逆矩阵,只需进行高斯消元,将矩阵变为梯形。另请注意,当您为不同的右手边求解相同的系统时,您只需这样做一次。齐次解也是一样的,只需要计算一次。所以我认为计算不会花很长时间。
  • 再次感谢您。我不熟悉这种方法,但在维基百科上看起来右手边似乎随着每一步而变化,所以我不确定你说我只需要做一次是什么意思。 en.wikipedia.org/wiki/Gaussian_elimination 你是在建议我跟踪右边值上发生的操作吗?然后用一组新的右手值解决,我应用那些存储的操作,然后用已经修改的矩阵使用反向替换?均质解决方案如何发挥作用?
  • 第一部分是的。需要为新的右手边重复消除步骤。齐次解在有无穷多个解的情况下很有用。您可以通过添加一个包含所有同类解决方案的特殊解决方案来获得所有这些解决方案。
猜你喜欢
  • 2017-06-21
  • 2015-07-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-09
  • 1970-01-01
相关资源
最近更新 更多