teachpyx.practice.tsp_kohonen¶
- teachpyx.practice.tsp_kohonen.ajoute_vecteur(v: Tuple[float, float], n: Tuple[float, float]) Tuple[float, float] [source][source]¶
Ajoute deux vecteurs entre eux.
- teachpyx.practice.tsp_kohonen.construit_liste_neurones(villes: List[Tuple[float, float]], nb: int = 0) List[Tuple[float, float]] [source][source]¶
Place les neurones sur l’écran, il y a autant de neurones que de villes, le paramètre villes est la liste des villes.
- teachpyx.practice.tsp_kohonen.construit_ville(n: int, x: int = 1000, y: int = 700) List[Tuple[float, float]] [source][source]¶
Tire aléatoirement n villes dans un carré
x * y
, on choisit ces villes de sorte qu’elles ne soient pas trop proches.
- teachpyx.practice.tsp_kohonen.deplace_neurone(n: Tuple[float, float], villes: List[Tuple[float, float]], neurones: List[Tuple[float, float]], dist_w: float, forces: List[float], compte: List[int]) int [source][source]¶
Déplace le neurone de plus proche de la ville n, déplace ses voisins.
- Paramètres:
villes – liste des villes
neurones – liste des neurones
dist – distance d’attirance
forces – force de déplacement des voisins du neurones
compte – incrémente compte [n] où n est l’indice du neurone choisi
- Renvoie:
indice du neurone le plus proche
- teachpyx.practice.tsp_kohonen.distance_chemin(p: List[Tuple[float, float]]) float [source][source]¶
Calcule la distance du chemin.
- teachpyx.practice.tsp_kohonen.distance_euclidienne_carree(p1: Tuple[float, float], p2: Tuple[float, float]) float [source][source]¶
Calcule la distance euclidienne entre deux points.
- teachpyx.practice.tsp_kohonen.iteration(villes: List[Tuple[float, float]], neurones: List[Tuple[float, float]], dist: float, forces: List[float], compte_v: List[int], compte_n: List[int]) Tuple[int, int] [source][source]¶
Choisit une ville aléatoirement et attire le neurones le plus proche, choisit cette ville parmi les villes les moins fréquemment choisies.
- Paramètres:
villes – liste des villes
neurones – liste des neurones
dist – distance d’attirance
forces – force de déplacement des voisins du neurones
compte_v – incrémente compte_v [n] où n est l’indice de la ville choisie
compte_n – incrémente compte_n [n] où n est l’indice du neurone choisi
- Renvoie:
indices de la ville et du neurone le plus proche
- teachpyx.practice.tsp_kohonen.modifie_structure(neurones: List[Tuple[float, float]], compte: List[int], nb_sel: int)[source][source]¶
Modifie la structure des neurones, supprime les neurones jamais déplacés, et ajoute des neurones lorsque certains sont trop sollicités.
- teachpyx.practice.tsp_kohonen.moyenne_proximite(villes: List[Tuple[float, float]]) float [source][source]¶
Retourne la distance moyenne entre deux villes les plus proches.
- teachpyx.practice.tsp_kohonen.multiplie_vecteur(v: Tuple[float, float], f: float) Tuple[float, float] [source][source]¶
Multiplie un vecteur par un scalaire.
- teachpyx.practice.tsp_kohonen.poids_attirance(p: Tuple[float, float], dist: Tuple[float, float]) float [source][source]¶
Calcule le poids d’attraction d’une neurone vers une ville.
- teachpyx.practice.tsp_kohonen.simulation(villes: List[Tuple[float, float]] | None = None, size: Tuple[int, int] = (800, 500), nb: int = 200, tour: int = 2, dist_ratio: float = 4, fs: Tuple[float, float, float, float, float] = (1.5, 1, 0.75, 0.5, 0.25), max_iter: int = 12000, alpha: float = 0.99, beta: float = 0.9, verbose: int = 0) Tuple[List[Tuple[float, float]], List[Tuple[float, float]]] [source][source]¶
- Paramètres:
villes – ensemble de villes ou tirage aléatoire si non défini.
size – taille de l’écran
fs – paramètres
max_iter – nombre d’itérations maximum
alpha – paramètre alpha
beta – paramètre beta
dist_ratio – ratio distance
tour – nombre de tours
nb – nombre de points
- Renvoie:
list des neurones
Note
solution
La liste des neurones n’est pas encore la solution, il faut apparier les villes à ces neurones pour déterminer plus court chemin.