Algorithmie en maths sciences

Projet ascenseur : simulations via des micro-controleurs et modélisation des coûts énergétiques des différents modèles établis par les élèves.
jeudi 17 juin 2021
par  Alexandre TÉCHER , Éric TANG KWOR

Préambule

Le projet STIM ascenseur est avant tout une pensée. Outre son défi technique, c’est une occasion d’interroger les élèves du lycée professionnel sur leur parcours scolaire assimilable à l’ascension d’une cage d’ascenseur. Ce projet s’intègre dans la démarche de la confiance en soi pour accéder à la connaissance. Ainsi cet ascenseur illustre un moyen de s’élever dans notre société par le biais de la connaissance. Chaque étage franchi est une progression qui achemine l’élève vers l’obtention de son diplôme. La connaissance à travers l’algorithmie qui sera présentée ici sera le moteur de l’ascension.

Déroulé du projet en co-intervention

La co-intervention est un moyen de décloisonner l’enseignement des mathématiques au lycée professionnel autour de projets STIM (science, technologie, ingénierie, mathematiques).

Cette activité à été menée avec les élèves de 1re Bac Pro MEI du lycée Léon-de-Lepervanche durant une année scolaire. Dans un premier temps, les élèves ont élaboré un simulateur d’ascenseur dans le langage de programmation Python. Ensuite le codage sera validé via une maquette qui sera conçue par leur professeur de construction. Enfin en classe de Terminale, ces élèves développeront la partie opérative en atelier avec un professeur de mécanique. Cette action a pour mission de fédérer les matières autour d’un projet STIM sur deux ans, dont le focus est orienté vers le métier de la maintenance industrielle. Le STIM favorise aussi la communication et le travail collaboratif de groupe. Il faut souligner que cette classe n’a pas eu vraiment l’occasion de faire de la programmation syntaxique. En effet ces élèves ont vu uniquement un langage par bloc au collège : Scratch. Or ce STIM permettra de les initier aux premiers scripts en langage syntaxique mais également de leur montrer l’importance de communiquer à travers un algorigramme.

La phase « s’approprier un scénario » à travers la manipulation d’une maquette

Dans un premier temps, les élèves manipulent une maquette (non motorisée) pour s’approprier le principe de fonctionnement d’un modèle d’ascenseur (à traction) à travers un scénario imposé. Ils prennent des mesures, puis font des simulations de déplacements à travers un script Python et une carte microcontrôleur.

La phase « verbaliser » pour communiquer entre pairs

Après s’être appropriés le scénario, les élèves verbalisent et communiquent entre eux en s’appuyant sur le scénario afin de proposer des solutions de déplacements qui ont été validées par leur professeur. Chaque groupe d’élèves a étudié le scénario et a proposé un document dans un format libre. Tour à tour, chaque document est décrypté lors de la séance d’échange par l’ensemble de la classe.

Descriptif du scénario

Le scénario imposé est le suivant : 4 personnes A,B,C,D sont réparties dans un immeuble de 3 étages avec un rez-de-chaussée et un sous-sol :
 l’individu C doit se rendre au niveau 1
 l’individu A doit se rendre au niveau 3
 l’individu D doit se rendre au niveau 0
 l’individu B doit se rendre au niveau 0

La phase d’analyse des productions d’élèves pour une description explicite des tâches dans un format normalisé

Voici les documents émis par 4 groupes d’élèves qui ont restitué le scénario sous 4 formats libres

Restitution du scénario par 4 groupes d’élèves

Synthèse sur la place de l’erreur pour mieux communiquer

Même si les restitutions du scénario par les 4 groupes d’élèves sont justes, leurs formalismes diffèrent. En effet on remarquera que l’un des groupes d’élèves a retranscrit le scénario avec une représentation en perspective avec les commentaires présentés à l’oral alors que les 3/4 de la classe ont explicité le scénario sous forme littérale, voire sous forme séquentielle. La forme séquentielle étant une retranscription du scénario sous forme de texte accompagné de flèches. À l’issue d’un échange entre les groupes, les élèves s’aperçoivent qu’une retranscription normalisée des tâches est la meilleure solution pour communiquer. Un formalisme va être adopté qui assez proche d’un des travaux rendus par un des groupes sera appelé un algorigramme.

Dans ce scénario, il est important de distinguer les déplacements des utilisateurs (A,B,C,D) de ceux de l’ascenseur. Déplacements que les élèves ont parfois du mal à dissocier.

L’évolution des retranscriptions du scénario par les élèves se résume en trois étapes. En effet les élèves découvrent qu’un algorigramme synthétise fidèlement leurs documents descriptifs des déplacements.

Fiche de synthèse de la retranscription des tâches de l’ascenseur

À partir de leur algorigramme, les élèves proposent un script codé en Python via les fonctions basiques pilotant le moteur via le microcontrôleur.

Impact du choix du modèle d’ascenseur sur l’environnement

Les impacts environnementaux sur le type d’ascenseur choisi

Accompagnés de leur professeur et en réponse au scénario imposé, les élèves ont proposé deux modes de déplacement de la cage d’ascenseur :
 l’un où la priorité est donnée à la communauté, que les élèves ont choisi de nommer le modèle BUS,
 l’autre, où la priorité est donnée au confort de l’usager, que les élèves ont nommé le modèle TAXI.

Maintenant la problématique est de savoir quel est l’impact écologique de ces deux modèles sur l’environnement. À partir d’un document fourni par le professeur, les élèves vont élaborer, étape par étape, un modèle mathématique empirique leur permettant de calculer la quantité d’émission de CO2 rejetée pour chaque modèle d’ascenseur. La fonction empirique intégrera les différentes ressources de production d’énergie locale :
 le fioul,
 le charbon,
 la bagasse.

Élaboration de la fonction empirique c(x)

Une fiche présentée ci-dessous est distribuée aux élèves qui devaient compléter la deuxième colonne intitulée « Relations entre les données » à partir :
 des connaissances vues en cours de sciences,
 des données de la littératures concernant la distribution de l’énergie à la Réunion,
 des proportions de rejet de CO2 selon le type de distribution d’énergie.

La fonction empirique se construit au fur et à mesure que l’élève remplit la fiche du haut vers le bas. Ainsi, il s’aperçoit que la fonction obtenue est une relation connue du cours qui englobe toutes les données d’entrées du tableau. Par ailleurs, cette fonction réinvestit une partie du programme vue en seconde sur la somme de fonctions. La fonction linéaire résultante définit une fonction de rejet de CO2 c(x) en fonction du nombre de déplacements x de l’ascenseur. Fonction qui sera écrite en script Python. Cette fonction est une approche scolaire, son but n’est pas de trouver exactement la masse de CO2 rejeté dans l’absolu mais un ordre de grandeur suffisant leur permettant de différencier l’impact des deux ascenseurs.

La fonction c(x) ainsi établie permettra d’attribuer un label écologique pour les deux modèles d’ascenseurs d’une part, et, d’autre part, il leur permettra d’aborder l’approche fonctionnelle du langage Python.

Validation des deux modèles par simulation dans un script Python avec le microcontrôleur

Modèle Taxi :

Lors de la programmation des scripts, les erreurs de syntaxe sont les plus courantes et peut-être une méthode pour asseoir les automatismes.

La validation des deux modèles d’ascenseurs (TAXI, BUS) à travers les scripts Python permettra de développer les automatismes de saisie des scripts, mais ce sera aussi l’occasion de s’approprier le microcontrôleur qui pilotera la futur maquette.

En effet, grâce à ce microcontrôleur, il est possible d’observer les déplacements de l’ascenseur sur une table horizontale sur laquelle on aura préalablement dessiné les différents niveaux. Cette simulation permettra d’associer les déplacements de la cage d’ascenseur au modèle choisi(TAXI,BUS) pour le scénario imposé.

Modèle Bus :

Modèle Taxi :

Abstraction du modèle imposé par un scénario vers une situation réelle

Modèle Taxi

Le scénario imposé nécessite le remplissage de deux listes m[] et d[]. 4 individus C,A,D,B respectivement aux étages m[-1 ;0 ;2 ;3] doivent se rendre aux étages d[1,3,0,0]. Nous appellerons mission i, le déplacement d’un individu d’une adresse de départ m[i] vers une adresse d’arrivée d[i].

Guidés par le professeur, les élèves proposent des solutions pour calculer le déplacement de l’ascenseur à partir des listes m[] et d[]. La mise en commun des solutions proposées a permis de définir le schéma suivant :

Une première liste de déplacements e1[i] est calculée a partir des listes d’adressages de départ m[i] et d’arrivées d[i].
Ces deux listes permettront également de calculer les déplacements entre chaque mission qui seront stockés dans e2[i].

Ainsi le calcul du rejet de CO2 par le modèle Taxi et les commandes des déplacements de l’ascenseur sont assurés par les deux listes e1[] et e2[]

Modèle Bus

Le modèle Bus propose un traitement des listes qui est singulier de par son principe qui est d’effectuer toutes les missions en un seul aller-retour. Donc deux déplacements suffisent.

Ainsi les listes m [i] et d[i] sont redistribuées en donnant la priorité à ceux qui montent : par exemple la valeur 1 de la liste d[] est redistribuée et devient prioritaire en passant dans la liste pour l’aller m2[]. De même la valeur 2 de la liste m[] n’est plus prioritaire et passe dans la nouvelle liste de retour d2[].

Un traitement sur les nouvelles listes m2 []et d2[] permettra d’enlever des doublons de leurs contenus et de classer la liste m2[] par ordre croissant et la liste d2[] par ordre décroissant.

Ainsi les déplacements pour l’aller se calculent avec les écarts dans la liste m2[] et les déplacements pour le retour se calculent avec les écarts dans la liste d2[]. Contrairement au modèle TAXI, le déplacement du modèle Bus ne se calculent plus en effectuant les écarts inter-listes m[i]-d[i] mais les écarts intra-listes :
 m[i+1]-m[i] pour l’aller
 d[i+1]-d[i] pour le retour

Le pilotage des déplacements de la cage d’ascenseur et le calcul d’énergie consommée seront assurés par ces deux listes e1[] et e2[] qui figurent sur le schéma ci dessus.

La manipulation du scénario à travers les différents modèles a permis de s’approprier les différents mécanismes de déplacements.

Pour une généralisation du process de déplacement, le fonctionnement de l’ascenseur suivant le modèle Bus sera retenu par les élèves. On part ainsi d’un process qui, au départ, était scénarisé vers sa généralisation à travers l’abstraction.

Algorigramme d’un modèle Bus

De retour de stage en entreprise (CEGELEC), les élèves ont proposé des améliorations au process, comme le retour en fond de fosse pour la maintenance (niveau -1). En plus des étapes de traitements des listes cités dans le chapitre précédent, il faudra tenir compte des éventuelles listes vides m[] ou d[] lors des saisies.

Description des blocs de script en Python

Chaque partie du programme a été testé par bloc suivant le scénario imposé. le contenu des blocs figure ci dessous :

Validation du script Python

Après l’implémentation du script dans la carte micro contrôleur qui va piloter la cage d’ascenseur, nous avons vérifié que les déplacements suivent bien le scénario demandé.

L’ascenseur respecte ainsi les trois phases :
 phase1 : initialisation
 phase2 : déplacements
 phase3 : retour en fond de fosse pour la maintenance.

Bilan

Ces étapes préliminaires du projet ont fait prendre conscience aux élèves que dans l’algorithmie, l’action « communiquer », que se soit à travers l’algorigramme, ou des commentaires au sein du script, est nécessaire pour être compris par les futurs utilisateurs. Le déplacement de la cage d’ascenseur est normalisé et il est possible, par le biais de microcontrôleurs, de simuler plusieurs modèles. Une phase de concertation avec l’ensemble de la classe a permis de retenir deux modèles : TAXI et BUS. À travers des commandes simples pilotant un moteure via un microcontrôleur, les élèves ont validé une fonction empirique qu’ils ont élaboré étape par étape afin de comparer le coût énergétique des deux modèles. Outre l’aspect modélisation, ce travail a permis de réinvestir la notion de somme de fonctions vue en seconde.

À partir d’un scénario qui a contextualisé la problématique, les élèves ont su progresser vers l’abstraction, en proposant des déplacements qui ne se basent plus sur un scénario figé.

Ainsi les opérations sur les listes en langage Python ont permis de valider le mode BUS adopté par les élèves et le travail en co-intervention a permis de réaliser la cage d’ascenseur ainsi que son système de traction via une imprimante 3D. Ce projet a fédéré les matières auxquelles les élèves sont attachés et sa concrétisation avec l’acceptation des erreurs ont développé chez eux le sens critique. Les erreurs ne sont plus vues comme des échecs, mais bien comme des étapes nécessaires à l’apprentissage.


Commentaires