SYNTHESE INDIVIDUELLE DE TPE TPE sur l’intelligence artificielle (septembre 2011- mars 2012) Elèves : FRANCESCHINO Lucas, VICARIO Pierre et REYNE Mickaël Synthèse de FRANCESCHINO Lucas Lycée Georges Pompidou 1 ère S2 Dès la première séance de TPE, au début de cette année scolaire, j’ai voulu choisir un thème en lien avec l’informatique, sujet qui me passionne. J’ai donc été rapidement attiré par l’une des thématiques que propose l’éducation nationale qui est « Les réalisations techniques face aux défis du XXIème siècle ». Dans un premier temps, j’ai d’abord pensé à la cryptographie qui occupait une place de choix dans le sous-thème « Technologie de l’information, stockage et transport », car intervenant à tout niveau dans le stockage et le transport de l’information. C’était aussi l’occasion d’étudier et de réaliser des algorithmes en lien avec la cryptographie. Seulement, après discussion avec les membres du TPE, nous avons décidé de nous diriger vers un autre sous-thème, à savoir l’intelligence artificielle. Ce sujet me paraissait aussi très intéressant, une fois encore par son aspect technique : les algorithmes utilisés sont très novateurs et attrayants, notamment les algorithmes génétiques. En outre, en faisant un TPE dans ce domaine, nous avons pu croiser plusieurs disciplines : les mathématiques en ce qui concerne les algorithmes et les calculs, la physique, en abordant le fascinant sujet de la mécanique quantique par exemple, et même un soupçon de SVT en étudiant les algorithmes génétiques ! Nous avons tout d’abord voulu choisir la problématique « Comment l’intelligence artificielle peut être utile au quotidien ? ». Je trouvais cette problématique trop large, surtout par rapport à l’aspect du TPE qui suscitait, de mon point de vue, le plus d’intérêt, à savoir la technique, les algorithmes utilisés. Nous avons donc fait le choix d’une problématique bien plus ciblée : « Quels sont les moyens techniques mis à contribution pour l’intelligence artificielle dans le passé, le présent et le futur ? ». Après une documentation approfondie, nous avons opté pour établir un plan en deux parties : l’évolution de l’IA au fil du temps et l’aspect technique de l’intelligence artificielle. Très attiré par cette dernière partie, je l’ai personnellement organisée et rédigée. Je me suis aussi chargé de la réalisation et de l’explication des deux algorithmes étudiés, c’est-à-dire l’algorithme génétique et l’algorithme de recherche de chemin, A*. J’ai aussi voulu implémenté un algorithme « min-max », utilisé dans les jeux de stratégie, mais j’ai finalement préféré ne pas le réaliser pour soigner davantage les deux autres implémentations. La partie qui a été, pour moi, la plus difficile, mais aussi, la plus intéressante, est celle sur les calculateurs quantiques. J’ai d’ailleurs voulu implanter l’algorithme quantique de Shor en python (il existe un module « pyQuante » permettant de simuler un ordinateur quantique), mais j’ ai été confronté à de trop nombreuses difficultés, de compréhension notamment : l’informatique quantique fait appel à des notions avancées de mécanique quantique ou de mathématique qu’il aurait fallu que je comprenne non pas globalement mais justement très techniquement, ce qui m’a paru quasi-impossible avec la documentation et le temps dont je disposais. La partie sur la puissance matérielle des ordinateurs n’a pas posé de problèmes particuliers mais s’est révélée être surprenante, en partie par la quantité incroyable de ressources matérielles qu’a nécessité Watson, l’intelligence artificielle d’IBM qui a participé à un jeu télévisé. Pour la réalisation d’un algorithme de recherche de chemin, j’ai d’abord essayé d’en réaliser un en JavaScript, mais j’étais confronté à divers problèmes : l’algorithme était lent, et parfois il ne trouvait aucun chemin. J’ai donc décidé de m’orienter vers quelque chose de plus conventionnel, soit l’algorithme A*. Après avoir relu (j’avais déjà, par le passé, implémenté cet algorithme dans un jeu de ma conception de type « Tower Defense ») quelques explications à ce sujet, j’ai écrit un programme en HTML et JavaScript le mettant en scène, au travers d’une carte sur laquelle l’utilisateur pouvait placer des obstacles. Cette carte était représentée par un tableau HTML mis à jour en JavaScript. L’algorithme semblait fonctionner : il trouvait à coup sûr un chemin (sauf s’il ne pouvait pas y en avoir à cause d’un trop grand nombre d’obstacles par exemple), mais il s’avérait être très lent, et de plus en plus au fur et à mesure de l’exécution de l’algorithme. J’ai donc mené ma petite enquête et me suis aperçu qu ’il y avait un dysfonctionnement : l’algorithme ajoutait en toute circonstance (ce qu’il ne devait, théoriquement, pas faire) des coordonnées dans une liste, ce qui créait un grand nombre de doublons. De cette manière, la liste grossissait énormément, ce qui fait que l’ordinateur passait de plus en plus de temps à étudier les différents cas possibles. Le problème venait seulement d’une erreur de syntaxe dans une fonction qui s’occupait d’ajouter ou non des valeurs dans la liste incriminée, précisément. Après correction, l’algorithme fonctionnait très bien. Pour rédiger l’ explication de l’algorithme, j’ai décidé de refaire en même temps une seconde implémentation plus « propre », toujours en HTML et JavaScript. De cette manière, j’ai pu mieux documenter le code, mieux le segmenter afin de le rendre plus clair et lisible. L’implémentation de l’algorithme génétique ne m’a pas posé d’obstacles. Je ne le connaissais pas auparavant et ce type d’algorithme m’a étonné par son originalité et sa simplicité par rapport à la complexité du problème à résoudre. Pour répondre à la problématique de notre TPE, je dirais que les moyens mis à contribution dans le passé ont été essentiellement philosophiques et littéraires, ceux utilisés dans le présent sont très techniques : Google ou IBM en sont l’exemple. On commence à utiliser de nouveaux types d’algorithmes de plus en plus ciblés et performants, et je dirais que l’ordinateur quantique offre un bel aperçu de ce que seront capables plus tard d’effectuer les intelligences artificielles. Le TPE m ’ a beaucoup plu et travailler sur des domaines qui me passionnent (les mathématiques et l’informatique) pour le lycée a été vraiment très motivant. J’aime souvent développer pour moi-même des applications, des jeux ou autres programmes sur mon ordinateur, ma PSP, ou mon téléphone, mais je n’en vois souvent pas l’utilité, la finalité. Avec ce TPE, j’ai vraiment eu l’ impression de pouvoir « exprimer » ma passion pour l’informatique. Ce travail m’a d’ailleurs rappelé mon stage de 3ème que j’avais effectué au CRDP de Montpellier dans le service informatique. Cela m’a aussi fait penser à un document que j’ai rédigé il y a maintenant quelques années, dont le but était d’apprendre la programmation en LUA sur PSP aux débutants (voir sur http://lucas.franceschino .free.fr/tutolua.pdf). En seconde, pendant les heures d’accompagnement, un ami et moi-même faisions, tout au long de l’année, le cours, une heure par semaine : cette expérience, durant laquelle j’ai dû écrire et donner des cours, aussi clairs et attrayants que possibles, m’a demandé un travail similaire à celui du TPE. En somme ce travail m’a été bénéfique : j’ai dû produire un travail rédigé, organisé et propre dans un domaine où je n’y suis pas habitué. En effet, il est habituellement rare pour moi de soigner et finaliser mes projets, lorsque je n’y suis pas obligé. C’est en cela que le TPE m’a, je pense, aidé : il m’a fallu être plus rigoureux qu’à mon habitude, m’ordonner. J’ai aussi beaucoup appris sur le thème de l’intelligence artificielle, et surtout dans le domaine de la mécanique quantique, sur lequel je me suis beaucoup documenté. Je compte d’ailleurs m’informer encore davantage à ce propos dans le futur, non pas pour le TPE, mais pour moi, personnellement. Pour conclure, je dirais que ce travail m’a donné envie de m’investir davantage dans les matières scientifiques, pour acquérir un meilleur niveau (en mathématiques notamment, ce qui a par ailleurs motivé mon choix de prendre la spécialité mathématiques) afin de pouvoir comprendre des sujets comme la mécanique quantique ou des applications comme l’algorithme de Shor.