【发布时间】:2019-06-08 12:27:24
【问题描述】:
我有 2 个矩阵都包含 Nx2 元素。任何值都是带有 8-10 位小数的浮点数,它们分别代表一个点的“x”和“y”。
对于第一个数组中的任何元素对 (x, y)(x 在第一列,而 y 在第二列),我需要在第二个数组中找到最近的点。在任何循环中,一旦找到,我需要从第二个数组中删除该值。
最后,我的主要目标是获得最佳解决方案,以便在第一个数组的任何元素与第二个数组的一个元素之间存在一对一的映射,从而满足最接近的值子句。
我创建了一个 NxN 矩阵,通过
计算了从第一个数组的任意点到第二个数组的任意点的距离scipy.spatial.distance.cdist
代码:
def find_nearest(X_start, X_end):
mat = scipy.spatial.distance.cdist(X_start, X_end, metric='euclidean')
new_df = pd.DataFrame(mat)
return new_df;
下一步是将起点与终点耦合,不应有任何交集,即一对一映射。
我想通过整数编程来实现(使用this)。 所以如果 m[i][j] 是矩阵 NxN 的一个元素,我发现了那些约束
问题是我不知道如何编写目标函数,所以我确定是否需要添加任何其他相关的约束。
您认为这是一条好走的路吗? 最后一个问题似乎不受欢迎,因为我没有公开我已经做过的事情。
原来如此。
【问题讨论】:
-
此类问题应在 Math SE 或 Computational Science SE 提出。
-
我应该移动它吗?
-
如果问题可以移动,我会将它移动到scicomp.stackexchange.com(其中也有 Python 和 SciPy 的标签)。
-
如果您在两个SE网站上发布相同的问题,您应该通知读者并交叉链接。
标签: python scipy integer-programming