#从其中的某一城市出发,不重复地走完其余5个并回到原出发点,在所有可能的路径中求出路径长度最短的一条。
六个市坐标为:1(87,7).2(91,38)、3(83,46).4(71,44).5(64,60)、6(68,58)
import math
import math
#输入6个城市坐标,字典形式
city={'x':[87,91,83,71,64,68],'y':[7,38,46,44,60,58]}
n=6
x=city['x']
y=city['y']
#print(x,y)
import numpy as np
a=np.zeros((n,n))
for i in range(n):
for j in range(n):
a[i,j] = math.sqrt(pow(x[i]-x[j],2)+pow(y[i]-y[j],2))
#print(a)生成6个城市的全部排列
import itertools
v=list(itertools.permutations([1,2,3,4,5,6],n))
#计算最短总距离
m=len(v)
juli=[]
min_sum = 100000#初始值为一个较大的数
for i in range(m):
sum=0
for j in range(n-1):
sum=sum+a[v[i][j]-1,v[i][j+1]-1]
sum=sum+a[v[i][j+1]-1,v[i][0]-1]
if sum < min_sum:
min_sum = sum
juli.append(min_sum)
print('最小距离:',min_sum)
print('最短路径:',v[juli.index(min_sum)])
上述为该问题的穷举法,能否用遗传算法进行改写?