Séance pédagogique sur l'itinéraire à l'aide d'un script Python (David Fialaire _ Aout 2019)
Téléchargements : 
ATTENTION : Mes scripts ont été réalisés en Python dans l’environnement Anaconda. 
Anaconda, c’est du Python avec des bibliothèques plus poussées pour permettre des traitements (traitements de données par exemple) plus lourd. 
Par ailleurs l’IDLE de Python dans Anaconda se nomme Spider, et il est génial car il possède un explorateur de variables ce qui est INDISPENSABLE pour faire des activités sur le thème « Données » de l’enseignement SNT. 
Télécharger et installer Anaconda n’est pas compliqué du tout !  
Il suffit d’aller à cette adresse :
https://www.anaconda.com/distribution/ 
Normalement, le téléchargement dure environ 1h et vous récupérez un fichier en .exe 
Ensuite, vous double cliquez sur ce fichier en .exe pour l’installer. 
ATTENTION : je vous conseille de l’installer en mode administrateur, ce qui vous permettra par la suite d’utiliser la console Python (dans l’IDLE Spider !!) pour installer d’autre sous- bibliothèque. 
Pour ma part, j’ai mis ce fichier .exe sur une clé USB pour pouvoir le coller sur les ordis des élèves de 2nd : ça prend 15 secondes à coller, puis 20 minutes en classe entière d’installation tous en même temps pendant qu’on fait autre chose… 
Téléchargement de Pytinéraire :  
Pytinéraire nécessite des tableaux construit avec la fonction np de numpy qui est normalement apportée par panda appartenant aussi à Anaconda… 
Pour ce script aussi, il était intéressant, au cours de ce travail d’algorithme de visualiser les photos des cartes dans la console pendant que l’algorithme travaille !! Pour ce faire, encore une fois, une bibliothèque particulière est utilisée : (ligne 504 : from IPython.display import Image, display) : Normalement, anaconda possède ce qu’il faut, sinon il faudra l’installer (pip install ipython). 
Résumé : 

Bonjour à tous, 
Les élèves de 2nd en SNT vont devoir réfléchir, pas à pas, sur comment un algorithme construit des itinéraires : Pour cela, j’ai moi-même construit un algorithme de 600 lignes en Python (Spider) qui récupère les informations cartographiques enregistrées dans une matrice Excel que les élèves apprendront à réaliser : 2 versions de cet algorithme leur seront disponibles : une version utilisateur (Pytinéraire.py : rapide et visuelle) et une version PEDAGOGIQUE (Pytinéraire_détaillé.py : voir visuel plus haut) où l’algorithme explique pas à pas comment il construit 1 à 1 les bouts d’itinéraires pour au final donner les meilleurs itinéraires comme Google : finalement, ils appliqueront cet algorithme sur les environs du lycée Libergier  en mesurant préalablement les distances entre chaque points d’intersection des routes (grâce à l’appli ‘ Image J’ ) : du pur Pratique.
A+ 
David Fialaire, Lycée Libergier, Reims, France. 

I. Préambule sur les itinéraires : (5min) 

1) Cherchez une définition du mot ‘itinéraire’ : 

2) Qu’est-ce qui est indispensable pour créer un itinéraire ? :

II. Initiation aux itinéraires via Excel et Python : (1h05) 

Aujourd’hui, les algorithmes construisent les itinéraires… 
          A. Comment les algorithmes accèdent-ils à l’information contenue dans la carte ? 
     1) Sur le papier : 
Regardez cette carte :

Ce qu’elle nous apprend d’important pour faire un itinéraire, c’est :  
 -Le nombre de virages à gauche et de virages à droite pour accéder au moulin depuis la maison ? :  
 -Le fait que l’on peut réellement accéder au moulin depuis la maison, mais pas à l’usine ? 
 
Donc, l’information importante d’une carte à laquelle doivent accéder les algorithmes est … :

• Observez attentivement cette carte :
  Quelle particularité ont les différents segments A-B et B-C de cette carte ? : 

 --> Voici une manière d’informer une machine qu’on peut aller d’un point à un autre, de façon orientée, avec l’exemple de la carte précédente : 

D’après vous, les 3 lignes A, B et C sont les points de départ ou les points d’arrivée ?  
 -->Remplissez correctement les pointillés. (colonne : arrivée ; ligne : départ). 

 ==> A vous d’essayer : Voici une nouvelle carte (ci-dessous) :
 Récupérez la grille Excel préconstruite nommée :
Remplissez-la correctement (attention aux sens uniques) et sauvegardez-la dans un dossier « SNT/ 5_3 itineraires » ; Récupérez aussi la carte :
et sauvegardez-la au même endroit.

 --> Un algorithme va donc lire la feuille de route (feuille Excel), 
   En commençant du point A (ligne) 
    Puis, il va chercher les accès depuis A, 
   Il va donc trouver le point B… et il va écrire un 1er itinéraire : A-->B 
 
   il a donc, à présent, 2 éléments : A et A-->B 
 
  Puis, il va chercher les accès depuis B, 
   Il va donc trouver le point C… : il va rajouter un itinéraire : A-->B-->C 
 
   il a donc, à présent, 3 éléments : A et   A-->B et    A-->B-->C 
 
  A vous d’essayer… Ecrivez tous les itinéraires que l’algorithme trouvera à partir de cette carte : 
A ,      A-->B ,       A-->B-->C …
 

       2) Numériquement : Avec l’algorithme dans Python(Spider) : 
 
              a. Installation de l’algorithme à VOTRE ordinateur : 
• Ouvrir Spider (=IDLE Python sous Anaconda), 
   Récupérer le programme Python nommé « Pytinéraire_Détaillé.py » et le placer dans votre dossier ‘SNT’; 


Dans Spider, faire Fichier --> Ouvrir, allez dans le répertoire ‘SNT’ et ouvrez « Pytinéraire_Détaillé.py ». 
• Dans l’écran de gauche (partie programme), cherchez la ligne 587 : 
 
• Pour l’instant l’adresse écrite est : 
os.chdir("C:/Users/dfial/Desktop/SNT Finalisé/5_3 itineraires") 
 
  Modifiez cette adresse (en gras) pour l’adapter à votre ordinateur !... 
…qu’il puisse trouver l’adresse du fichier Excel d’itinéraire : 
 
....Comment vous faîtes ? 
==>Retournez dans votre dossier ‘SNT/5_3 itineraires’ : vous devez normalement visualiser votre fichier Excel ; 
  -Faîtes un clic-droit dans la barre de navigation de CE dossier ; 
  -Et cliquez sur ‘copiez l’adresse’ : 

  Retournez dans Spider, ligne 587, et collez votre adresse à la place de la précédente… Attention, modifiez les antislash (\) en mettant des slashs (/) à la place ! 
  Faire Ctrl s (pour enregistrer) : Ça y est ! C’est installé… 

            b. Lancement de l’algorithme Pytinéraire_Détaillé : 

  Assurez vous d’avoir un curseur clignotant dans la partie ‘Console’ de Spider, à droite de votre écran ; 
  Appuyez sur la touche ‘F5’ (de votre clavier) (ou appuyez sur le triangle vert en 1) ; 
  Le programme démarre alors dans la partie droite de l’écran 
Problème : Cette partie d’écran est trop petite… 
==> Vous pouvez l’agrandir en appuyant sur l’icône en 2  
 
                c. Suivi de l’algorithme Pytinéraire_Détaillé : 
 
• A la 1ère question : « Vous souhaitez travailler sur quel itinéraire ? » :  
Choisissez le fichier Excel que vous venez juste de travailler « 001 itinéraire_AE.. » 
• Puis, choisissez le mode Voiture : v 
• Observez le tableau qu’il vous présente : C’est celui que vous venez de terminer sur Excel : 
                 Donc, l’algorithme accède à l’information de la carte !!! 

• Faîtes Entrée : il vous présente alors la carte correspondante ; 
  Choisissez le point d’arrivée E -->Entrée ; 
  Choisissez 4 (Nombre d’itinéraires maximum) --> Entrée ; 
 
  Puis, pas à pas, en lisant l’avancée de l’algorithme, faîtes Entrée jusqu’à arriver à la question : 
« Voulez-vous tester avec un autre point d'arrivée ? (o/n) » 
  Répondez n -->Entrée, puis 0 -->Entrée pour Quitter. 
 
               d. Comprendre la logique de l’algorithme Pytinéraire_Détaillé : 
 
  Répondez aux questions suivantes, en revisualisant l’ensemble de l’avancée de l’algorithme (Déplacer la barre de défilement verticale) :
 
1) Quand l’algorithme est sur une ligne et qu’il fini de balayer toutes les colonnes, il passe à une autre ligne : Mais pas forcément la ligne d’après ! 
a. Trouvez un exemple : 

b. Pour quelle raison l’algorithme ne passe-t-il pas à la ligne d’après ? :
 
 
 
2) Vous remarquerez qu’au cours de l’avancée de l’algorithme, des nouveaux bouts de chemin qui étaient apparus finissent par disparaître des listes des bouts de chemin… 
a. Trouvez un exemple : 


 
b. Pour quelle raison ces nouveaux bouts de chemin disparaissent de la liste des nouveaux bouts de chemin ? : 


 
3) A quel moment, l’algorithme sait qu’il n’a plus besoin de se placer à une nouvelle ligne et que c’est terminé ? :


 

         B. Quelles sont les règles qu’il faut imposer aux algorithmes d’itinéraires ? 

   Regardez cette photo : Quel éventuel problème vous suggère t’elle concernant notre algorithme ? 

  Regardez cette carte : Quel autre problème s’annonce compliquer pour notre algorithme ? :

 
  Proposez une règle à imposer à l’algorithme pour que les problèmes vus précédemment n’arrivent pas : 



  Testons notre algorithme pour voir si ce nouvel itinéraire lui tournera la tête : 
  Récupérez le fichier Excel « Itineraire_AF_Tourne_en_rond.xlsx » ainsi que la carte « Itinerraire_AF_Tourne_en_rond.png » et placez-les, tous les deux, dans votre dossier nommé SNT/5_3 itineraires ; 

   Vous allez noter toutes les Alertes (6 en tout) : 
 
- Alerte de ‘Retour en arrière’ = 1 pas en arrière 
- Alerte de ‘Je tourne en rond’ 
   Sachez que toutes les alertes sont précédées du ré-affichage de la carte : (+ rapide à voir !) 
 
     Relancez le programme Pytinéraire en vous assurant d’avoir un curseur clignotant dans la console (partie droite), puis en cliquant sur le triangle vert, et enfin en cliquant sur ; 
 
    Lisez, et notez les 6 alertes dans le tableau ci-dessous :  
Exemple : Alerte 1 : ABE --> tentative de Retour en arrière vers B 

   Et si on faisait une blague à notre algorithme ! … En l’empêchant d’éviter le ‘Tourne en rond’.. 
    
    Dans le programme, repérez la ligne 262 : ‘tourne_en_rond=1’, et triple-cliquez dessus pour la sélectionner entièrement ; 
• Ensuite, faîtes Ctrl 1  
- Ainsi, la ligne 262 a été inactivée (=sécurité ‘tourne en rond’ RETIREE…) 
 
  Relancez le programme Pytinéraire en vous assurant d’avoir un curseur clignotant dans la console (partie droite), puis en cliquant sur le triangle vert, et enfin en cliquant sur 2 ; 
 
     Redemandez l’itinéraire ‘tourne_en_rond’, mode Voiture, faîtes Entrée, choisissez l’arrivée F, et demandez 4 itinéraires… 
==>Laissez votre doigt Appuyé sur ‘Entrée’ jusqu’à atteindre la 6ème alerte (6ème carte) ;   
   Continuez d’appuyer longuement sur ‘Entrée’ 
• Qu’observez-vous ? : L’algorithme ne s’arrête plus : il crée des itinéraires qui tournent sans cesse en rond ! 
                 HELP ! : Nous allons breaké le Bug :  
    Faîtes Ctrl C, puis cliquez un coup sur le carré bleu :  
• N’oublions pas de corriger le programme : triple-cliquez sur la ligne 262, faîtes Ctrl 1, puis Ctrl s pour sauvegarder. 

     C. Peut-on rajouter plus d’informations aux algorithmes d’itinéraires ? 

             1) Une information essentielle : les distances ! 

Comme vous avez pu le remarquer précédemment, chaque segment AB, BC, CF… semble avoir une même longueur d’itinéraire de 1… !? Or, on voit bien sur la carte que BC est plus grand. 
 Récupérez le fichier Excel nommé «Itineraire_Libergier_Resto_ShinZen_Distance.xlsx », ainsi que la carte « Itineraire_Libergier_Resto_Shinzen.png » 

 Ouvrez le logiciel ‘Image J’ que vous avez téléchargé (double cliquez sur le microscope) ; Cliquez sur File --> Open, et retrouvez/ouvrez la carte « Itineraire_Libergier_Resto_Shinzen.png »
   Ouvrez le fichier Excel : C’est une grille de carte orientée préparée : A la place des ‘1’, une case verte est présente : A vous d’inscrire dedans la bonne distance… 
   Essayez d’avoir à l’écran, comme sur cette page, la barre d’image J au-dessus de la carte ; cliquez sur l’icône N°5 d’Image J (straight=trait) : 
• Cet outil va vous permettre de mesurer des distances : 
     Double-Cliquezzzzz-Maintenez sur le centre de la croix ‘A’ et dirigez le curseur vers le centre de la croix ‘B’ et lachez dessus : une ligne jaune se trace, et dans le menu Image J est inscrit une distance : Length= 52.84 
Mémorisez cette valeur entière : 52, et placez là au bon endroit dans la feuille Excel que vous venez d’ouvrir (dans les cases vertes).
        Faîtes attention à l’orientation sur Excel ; sur la carte Google les sens uniques sont indiqués par une flèche, les doubles sens, non. 

    Remplissez toutes les cases vertes. 

            Vous venez de cartographiez numériquement un lieu ! 

  Récupérez l’algorithme plus rapide « Pytinéraire.py », et placez-le dans le dossier SNT ; Ouvrez-le avec Spider, et modifiez la ligne 587 (comme vu dans la section III A) 2) a) de ce document) ; 
   Lancez ce Programme comme d’habitude : départ : Lycée Libergier (point A) , Destination : Resto Shinzen (point E), en voiture, demandez 3 itinéraires ; Combien d’itinéraires obtenez-vous ? :  

              2) Mais comment fonctionne le Mode ‘ Piéton ’ ? 

   Relancez le programme (ou tapez o pour une autre destination si vous ne l’avez pas éteint) ; 
  Choisissez le même fichier Excel, 
  Mais cette fois-ci, demandez le Mode ‘Piéton’ (p puis Entrée) et STOP !!

Regardez Attentivement le tableau Mode ‘Piéton’ qu’il vous propose… Comparez le avec le tableau Excel original ;  
   Qu’observez-vous ? : 





• Lancez l’algorithme, en mode piéton, A-->E, 12 itinéraires ; Combien d’itinéraires obtenez-vous ? :  
• N’avez-vous pas l’impression qu’il manque un autre itinéraire très court, à 4 étapes, commençant aussi par A--> O ? :

• Quel outil peut-on utiliser pour comprendre l’absence de cet itinéraire court ? Proposez une explication à cette absence :