Skip to content

Commit

Permalink
finale đŸ„ł
Browse files Browse the repository at this point in the history
  • Loading branch information
mehditazerouti committed Apr 24, 2024
1 parent 41917a3 commit fd41119
Showing 1 changed file with 13 additions and 14 deletions.
27 changes: 13 additions & 14 deletions IA_MonCode.py
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,16 @@ def fitness():# calcule la distance totale parcourue en suivant le chemin repré
xy=np.column_stack((x[chemin],y[chemin])) # Cette ligne crĂ©e un tableau bidimensionnel oĂč chaque ligne reprĂ©sente les coordonnĂ©es (x, y) d'une ville dans l'ordre dĂ©fini par le chemin actuel. La fonction np.column_stack() est utilisĂ©e pour empiler les tableaux x et y sur les colonnes, de sorte que chaque colonne contienne les coordonnĂ©es (x, y) d'une ville.
distance=np.sum(np.sqrt(np.sum((xy- np.roll(xy,-1,axis=0))**2,axis=1))) # alcule la distance totale parcourue en suivant le chemin défini par les indices de la variable chemin. Elle utilise la fonction np.roll() pour décaler les éléments du tableau xy d'une position vers le haut, de sorte que la premiÚre ville visite la deuxiÚme, la deuxiÚme visite la troisiÚme, et ainsi de suite. Ensuite, elle calcule la distance entre chaque paire de villes consécutives, puis somme ces distances pour obtenir la distance totale parcourue.
return distance # la distance totale calculée comme mesure de fitness de l'individu.

"""J'ai défini une fonction pour calculer la distance entre deux villes.
J'ai utilisé une formule de distance, telle que la distance euclidienne
dans un espace bidimensionnel, car mes villes sont représentées par des coordonnées.
J'ai utilisé cette fonction pour calculer la distance totale parcourue par chaque individu dans la population.
J'ai noté que plus la distance est courte, meilleure est la fitness de l'individu. J'ai donc inversé la distance
(par exemple, en prenant l'inverse de la distance) pour obtenir un score de fitness oĂč une valeur plus Ă©levĂ©e indique
une meilleure adaptation.
J'ai attribué à chaque individu son score de fitness calculé.
J'ai répété ce processus pour tous les individus de la population.
"""


#+++++++
Expand Down Expand Up @@ -122,9 +131,6 @@ def __init__(self, master):# Ceci est le constructeur de la classe TSPApp, il pr
self.canvas = tk.Canvas(master, width=400, height=400) # zone de dessin) dans la fenĂȘtre principale
self.canvas.pack(fill=tk.BOTH, expand=True) # affichons le canevas dans la fenĂȘtre principale. canevas se redimensionne avec la fenĂȘtre

#self.generate_button = tk.Button(master, text="Générer Villes", command=self.update_population_graph)
#self.generate_button.pack()

#self.run_button = tk.Button(master, text="Run Algorithme", command=self.run_algorithm)
#self.run_button.pack(fill=tk.BOTH, expand=True)

Expand Down Expand Up @@ -270,7 +276,7 @@ def affichage_results(self, best_individual,fitness, generation):
root = tk.Tk()
root.title("RĂ©sultats TSP")

label = tk.Label(root, text=f"Meilleur individu trouvé à la génération {generation} : {best_individual}")
label = tk.Label(root, text=f"Meilleur individu trouvé à la génération {generation} trvaverse les villes avec cette ordre la : {best_individual}")
label.pack()

label = tk.Label(root, text=f"la fitness : {fitness}")
Expand Down Expand Up @@ -365,10 +371,10 @@ def run_algorithm(self,population):
#self.canvas.itemconfig(self.iteration_text, text="meilleur individu : " + str(fitness_population[0]))
# Afficher les résultats finaux dans l'interface graphique (à implémenter)

print('Generation finale : ', iteration)
print('\n\n\n Generation finale : ', iteration)
for i in range(0,M,1) :
print('chromosome : ',i, population[i],'fitness = ', fitness_population[i])

print('Meilleur individu(chromosome) trouvé : ',i, population[0],'ca est fitness = ', fitness_population[0],'\n\n\n\n\n\n')
self.affichage_results(population[0],fitness_population[0], num_iterations )


Expand All @@ -381,10 +387,3 @@ def run_algorithm(self,population):










0 comments on commit fd41119

Please sign in to comment.