我有一个2D矩阵,我想采取每行的规范.但是当我numpy.linalg.norm(X)
直接使用时,它需要整个矩阵的范数.
我可以通过使用for循环然后取每个行的规范来获取每行的范数X[i]
,但是因为我有30k行所以需要很长时间.
有什么建议可以找到更快的方法吗?或者是否可以应用于np.linalg.norm
矩阵的每一行?
我有(比方说)100 分。我想在它们之间生成一条路径,越短越好。这就是旅行商问题。由于TSP 是 NP 难的,我对没有找到全局解决方案感到满意。我的方法可以快速给出解决方案并且扩展性良好。
生成示例点:
import numpy as np
points = np.random.RandomState(42).rand(100,2)
Run Code Online (Sandbox Code Playgroud)
生成距离矩阵,其中i,j
条目包含point[i]
和之间的距离point[j]
。使用这个答案:
z = np.array([[complex(*c) for c in points]]) # notice the [[ ... ]]
distance_matrix = abs(z.T-z)
Run Code Online (Sandbox Code Playgroud)
我如何继续找到一条至少具有局部最小路径长度的最短路径?
一些相关问题:
此线程:scipy 中的旅行推销员提供了用于查找 TSP 解决方案的代码。但它以迭代方式工作,因此如果要访问的点数量很大,则脚本不会在合理的时间内生成解决方案。
此主题:如何使用 python 中的 or-tools 解决累积旅行商问题?没有代码答案,并且不专注于经典 TSP。
此线程:优化旅行商算法(时间旅行者算法)提供了问题的迭代解决方案(这意味着糟糕的扩展)