Professional Documents
Culture Documents
pyplot as plt
import numpy
import random
import copy
def get_tour():
tour = [['Al Haouaria', 37.052704300958574,11.011884212493896],
['Sidi Daoud', 37.02223628247824, 10.911998748779297],
[' Hammam Al Ghezaz', 36.878742 ,11.117649],
['Klibia', 36.84578, 11.100483],
['Manzil Tamim', 36.778932, 10.991478],
['Qurbus', 36.812473, 10.580177]]
['Soliman', 36.688134 , 10.49366]]
['Korba, ', 36.570762, 10.864449]]
['Nabeul', 36.453764, 10.720253]]
['Hammamet', 36.400173, 10.621376]]
return(tour)
def distance(tour, i, j):
dx = tour[i][1]-tour[j][1]
dy = tour[i][2]-tour[j][2]
return(dx**2+dy**2)**0.5
def longueur_tour(tour):
d = 0
for i in xrange(0,len(tour)-1):
d += distance(tour, i, i+1)
d += distance(tour, 0, -1)
return(d)
def graph(tour):
x = [t[1] for t in tour]
y = [t[2] for t in tour]
x += [x[0]]
y += [y[0]]
plt.plot(x,y)
for ville, x, y in tour:
plt.text(x,y,ville)
plt.show()
def permutation(tour):
best = longueur_tour(tour)
fix = 0
while True:
i = random.randint(0, len(tour)-1)
j = random.randint(0, len(tour)-1)
if i==j: continue
e = tour[i]
tour[i] = tour[j]
tour[j] = e
d = longueur_tour(tour)
if d>= best:
fix += 1
e = tour[i]
tour[i] = tour[j]
tour[j] = e
else:
best = d
fix = 0
if fix > 10000: break