相关疑难解决方法(0)

Python 中旅行商问题的可扩展实现

我有(比方说)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。

此线程:优化旅行商算法(时间旅行者算法)提供了问题的迭代解决方案(这意味着糟糕的扩展)

python

9
推荐指数
1
解决办法
3160
查看次数

Python - 使用样条线插值 2D 点云

我正在尝试拟合 2D 点云(x 和 y 坐标)。到目前为止,我在 scipy 的插值包方面取得了有限的成功,最值得注意的是UnivariateSpline,它产生了以下(次优)拟合(请忽略颜色): 单变量样条

然而,这显然是错误的包,因为我需要一条可以在抛物线点云边缘附近自行弯曲的最终曲线(因此不再是一维函数)。

例如,然后我阅读了interp2d,但不明白我的z数组是什么。是否有我可能忽略的更好的软件包类别?


更新 1:按照评论中的建议,我使用scipy.interpolate.splprep;重新完成了此操作 我的一般设置是:

from scipy.interpolate import splprep, splev
pts = np.vstack((X.ravel(), Y.ravel)) #X and Y contain my points
(tck, u), fp, ier, msg = splprep(pts, u=None, per=0, k=3, full_output=True) #s = optional parameter (default used here)
print('Spline score:',fp) #goodness of fit flatlines after a given s value (and higher), which captures the default s-value as well 
x_new, y_new = …
Run Code Online (Sandbox Code Playgroud)

python interpolation spline point-clouds

5
推荐指数
1
解决办法
2540
查看次数

两组点之间的最小距离

我在度量空间中有一组 n 个点。这些点都是蓝色的。我在空间中有另一组 n 点。这些点都是红色的。我想以这样的方式连接这些点,即每个蓝点都连接到一个红点,每个红点都连接到一个蓝点。(显然有 n! 种方法可以做到这一点。)我希望找到使连接总长度最小的连接集。这个问题叫什么?

algorithm

3
推荐指数
1
解决办法
84
查看次数

标签 统计

python ×2

algorithm ×1

interpolation ×1

point-clouds ×1

spline ×1