我正在尝试加速一个评估解决方案适用性的函数,其思想是在数组中应用for循环,是否可以使用np.sum来做到这一点?
def calculate_fitness2(individual):
fitness=0
for i in range(0,len(individual)-1):
fitness=fitness+sp.spatial.distance.euclidean(city_list[individual][i][1:],city_list[individual][i+1][1:])
return fitness
individual是一个id ex。[1,5,3,4,6,7]的数组,每个id都表示在城市列表(城市列表)中,该列表包括城市的坐标ex。 [[1,34,55],[2,44,78],...,[7,99,23]]。主要思想是计算TSP问题上的距离。
谢谢大家
答案 0 :(得分:1)
假设您想要根据individual
列表到城市之间的总行驶距离,一种书写方式是:
city_list = np.array([[0, 0], [1, 0], [1, 1], [0, 1]])
path_idx = [0, 1, 2, 3] # i.e. individual
polyline = city_list[path_idx] # the list of visited coordinates
# a (n x dim) array
distance = np.sum(np.sqrt(np.sum(np.diff(polyline, axis=0)**2, axis=1)))
distance # 3.0