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.

teachpyx.practice.tsp_kohonen.soustrait_vecteur(v: Tuple[float, float], n: Tuple[float, float]) Tuple[float, float][source][source]#

Soustrait deux vecteurs.

teachpyx.practice.tsp_kohonen.vecteur_norme(p: Tuple[float, float]) float[source][source]#

Calcul la norme d’un vecteur.