|
|
MODELISATION INFORMATIQUE
ou
Le nouvel essor des sciences grâce à l'ordinateur
PREFACE
La préface qui suit est un petit discours sur la modélisation informatique. Si ça vous rase, n'hésitez pas à la sauter et à passer directement au sujet principal: "L'intelligence collective" et son exemple à travers la société des fourmis, au chapitre 1.
Je voudrais faire ici une petite introduction sur la modélisation informatique (représentation sur ordinateur d'un modèle théorique), ce qu'elle représente, à quoi sert-elle et sa puissance par rapport à d'autres moyens d'expérimentation. Mais comme je ne suis pas un professionnel de cette technique, je laisserai parler la plupart du temps Heinz Pagels, par l'intermédiaire d'extraits de son livre (dont je ne me rappelle hélas plus le nom), livre très intéressant sur les sciences en général et les nouvelles sciences qui s'appuient sur l'ordinateur. Le scientifique Heinz Pagels raconte comment il s'est rendu compte de l'importance de l'ordinateur dans les expérimentations et la modélisation:
"J'ai commencé à mesurer la portée de l'événement en assistant à un séminaire donné par l'un de mes collègues physicien théoricien. Décrivant sa théorie des particules quantiques, il cita une "expérience" venant étayer cette théorie. Le problème était que je ne pouvais pas imaginer que quelqu'un puisse faire cette expérience (elle dépassait de beaucoup nos capacités expérimentales). Je compris alors que mon collègue parlait d'une "expérience" sur ordinateur grâce à laquelle il avait modélisé une collision de particules quantiques."
"On peut très bien considérer la nature comme un calculateur analogique. La science future progressera entre autres en combinant des observations de systèmes réels et leur modélisation par ordinateur. Cela diffère de la notion traditionnelle d'expérimentation, qui suppose que l'on modifie activement les conditions du système réel pour en comprendre le fonctionnement. Pour beaucoup de systèmes naturels réels, comme l'intérieur des étoiles, on ne peut même pas faire d'expériences, et la modélisation est la seule voie que l'on puisse suivre. [...] La modélisation sur ordinateur offre un nouveau moyen puissant d'investigation. La modélisation sur ordinateur est un nouveau type d'expérimentation."
En résumé, on remarque désormais les limites de l'expérimentation classique qui ne peut pas s'appliquer sur de nombreux systèmes réels. La science avançant, elle repousse de plus en plus les limites de l'inconnu mais aussi de l'accessible. Pour pallier à ce manque, les chercheurs ont désormais recours à l'ordinateur: l'observation du système réel puis sa modélisation (sa représentation) sur ordinateur leur apporte un nouveau type d'expérimentation.
"Comme le microscope et le télescope l'ont fait jadis, l'ordinateur ouvre une nouvelle fenêtre sur la réalité. Ou crée-t-il en fait cette réalité? Comment pouvons nous donc dire si la réalité révélée par des simulations par ordinateur n'est pas seulement un objet fabriqué, un produit de l'ordinateur? Il est indéniable que les données que l'on entre et le programme sont des objets fabriqués par l'homme. Les ordinateurs sont en fin de compte des machines "non intelligentes", tout comme les télescopes et les microscopes, et nous ne pouvons pas nous passer du jugement humain [...] pour décider si oui ou non une simulation est correcte. Nous devons donc considérer l'ordinateur comme un instrument scientifique aux mains de l'homme et non comme une "boîte noire magique" qui créerait une réalité dépassant notre entendement. Sinon, nous ne manquerons pas de confondre la simulation avec la réalité."
Ce paragraphe sur l'utilité de l'ordinateur est à mon sens le plus important. Je me posais en effet la question que tout le monde se pose: mais comment peut-on être sûr que ce que représente l'ordinateur correspond bien à la réalité (si tout au moins cette réalité peut exister)? La façon dont Heinz Pagels nous présente l'ordinateur, ce nouvel instrument dans les mains du scientifique, comme naguère il utilisait le microscope, me (nous?) rassure un peu plus: ce qu'offre l'ordinateur sera toujours jugé en dernier lieu par l'esprit humain. A l'homme de décider si ce qu'il voit lui parait correct.
"Par la modélisation par ordinateur, les scientifiques essaient généralement de modéliser un système plutôt complexe. L'hypothèse de base derrière la simulation de systèmes complexes est que l'apparente complexité du système que l'on tente de modéliser est due à quelques composantes simples interagissant selon des règles simples qui sont alors incorporées dans le programme. Dans un certain sens, tout en étant très réelle, la complexité de certains systèmes a une explication simple."
Faire du complexe avec du simple, c'est maintenant un phénomène bien connu: les harmoniques (superposition d'oscillations sinusoïdales pour former une oscillation complexe), la nouvelle théorie du chaos ("le chaos est l'art de former du complexe à partir du simple", dixit Pierre Bergé et Yves Pommeau dans la préface du Hors Série de "Pour la Science" sur le Chaos) ou même, en programmation, la fameuse "programmation structurée" développée par Niklaus Wirth et dont le Pascal en est la référence. Tous ces exemples montrent bien qu'un problème se présentant sous une apparente complexité peut en fait se décomposer en une série de sous-problèmes plus simple; le tout étant de trouver ces sous-problèmes.
Avant de passer au vif du sujet, je tenais juste à vous citer un dernier exemple de l'importance de la modélisation informatique. Vous êtes certainement au courant que de nombreuses nations ont décidé d'arrêter les essais nucléaires à la fin 1996. Pourtant, ces nations continueront à réaliser des essais, mais cette fois-ci, ils les feront dans leur pays, au beau milieu de la population. Bien évidemment, ces essais ne seront pas en grandeur nature, mais ils seront "simulés" sur ordinateur. Comme quoi l'ordinateur peut contribuer au développement de la paix...
N.B. Citations extraites de : "Les rêves de la raison" (L'ordinateur et les sciences de la complexité) Heinz PAGELS, trad. Michèle GORENNE -- INTEREDITIONS
I Introduction à l'intelligence collective
L'article qui suit prend ses sources dans celui écrit dans le mensuel "Pour la Science n 198, Avril 1994" (édition française de "Scientific American") par Guy Theraulaz, Éric Bonabeau, Simon Goss et Jean-Louis Deneubourg. L'article était clair, précis et suffisamment complet pour entrevoir les possibilités de la modélisation sur ordinateur.
Avez vous déjà lu le livre "Les fourmis" de Bernard Werber? Après cette lecture, on regarde d'une autre façon la petite bestiole à 6 pattes: comment une si petite "chose" peut-elle construire des nids aussi complexes, des villes entières avec ses hiérarchies? Comment peuvent elles réaliser une société avec ses guerres, ses grands travaux, etc...? Quels sont les mécanismes qui permettent à chaque individu de l'espèce de régler ses activités de façon à favoriser la survie de son espèce?
Vu d'en haut (c'est à dire de nos yeux), on a l'impression qu'un agent invisible coordonne toutes les activités de ces insectes: la reine pourrait-elle ainsi agir sur le comportement de chacun? Il est clair que cela parait peu probable, vu le nombre incroyable de fourmis se côtoyant dans un nid.
Vers 1950, des membres de l'école d'entomologie française parièrent plutôt (et montrèrent) sur l'idée que ce comportement global résulte d'une multitude d'interactions locales (ou individuelles). Pierre-Paul Crassé, de cette école, développa notamment la théorie de la "stigmergie" pour expliquer la coordination de ces tâches individuelles. Un exemple pour expliquer ce terme barbare est la construction d'un nid de termites: l'évolution de ce nid ne dépend pas directement des ouvriers mais des constructions elles-mêmes. L'ouvrier ne dirige pas son travail, il est guidé par lui: au fur et à mesure de la construction du nid, l'ouvrier termite reçoit des stimuli qui modifient son comportement selon l'évolution du travail.
Un des auteurs de l'article qui me sert de référence (Jean-Louis Deneubourg) se rendit compte que ces phénomènes de coopérations entre insectes correspondent à des phénomènes d'auto-organisation qui résultent de communications entre les individus d'une part, et des interactions des insectes et de leur environnement d'autre part.
Rentrons maintenant dans le vif du sujet, c'est à dire le but du programme. A l'intérieur d'un nid de fourmis, on remarque que les divers éléments du couvain (les oeufs, les larves, les cocons...) sont regroupés par paquets. C'est le travail des ouvrières que de réaliser ce tri. Mais comment font-elles pour s'entendre entre elles et ne pas se gêner les unes des autres? Un exemple de ce phénomène est de renverser le contenu d'un nid sur une table. Très vite, vous allez voir les ouvrières s'affairer à trier ce nid de nouveau, SANSCOMMUNICATION DIRECTE ENTRE ELLES. Et pourtant, malgré un total désordre apparent, le nid va finir par se retrouver trié.
Le but de ce programme est de modéliser ce comportement des ouvrières lorsqu'elles trient leur nid, ou plus précisément de montrer qu'un comportement général (celui du nid) peut résulter d'une série d'interactions de comportements personnels (celui d'une fourmi).
II Modélisation du problème
Tout d'abord, voyons les problèmes purement informatiques: comment sera représenté le nid?
a) Modélisation
Regardons maintenant ce que l'on désire réellement faire, c'est à dire le problème modélisé (décrit de façon mathématique) mais pas encore informatisé.
Prenons une fourmi: elle se déplace aléatoirement sur notre nid en 2 dimensions. Elle rencontre soudain un objet. Elle va alors le prendre sur son dos et le transporter si l'objet se trouve isolé. Elle risque donc de s'emparer d'un objet avec une probabilité d'autant plus grande que l'objet est isolé.
Du coup, tous les objets plus ou moins isolés sont recueillis.
imaginons maintenant que cette fourmi ait embarqué cet objet. Elle continue alors son "bonhomme" de chemin avec son objet sur le dos. Quand va t-elle le redéposer? Hé bien, si elle veut trier le nid, elle ne va pas le déposer n'importe où mais là où d'autres objets de ce type sont déjà entreposés. Elle risque donc de déposer son objet avec une probabilité d'autant plus grande qu'il y a déjà des objets de ce type dans son voisinage.
De cette façon, des petits tas d'un même type d'objet risquent de se créer.
b) Approche informatique
Relisons maintenant le modèle précédent avec nos yeux d'informaticien.
Houlà !, nous voilà t'y pas qu'il nous parle d'odorat et de toucher maintenant. Ca va plutôt être dur de faire comprendre ça à un ordinateur !!" Je ne vous le fais pas dire... alors du coup, on donne à notre fourmi informatique une mémoire à court terme qui va lui permettre de se rappeler ses derniers objets rencontrés. Du coup, notre "taux d'isolement" d'un objet est calculable à l'aide de cette mémoire. imaginons en effet que notre fourmi ait rencontré 3 objets d'un même type lors de ses 15 derniers pas: le taux d'occupation de cet objet sera donc de 3/15. Simple non? Oui bon, d'accord, mais ça ne se rapproche pas vraiment de la réalité ça de donner une mémoire à une fourmi? Oui... mais on s'en fout, du moment que le résultat est le même. N'oubliez pas: on MODELISE le problème.
Nous voilà donc avec notre taux d'occupation. On peut maintenant calculer la probabilité qu'a la fourmi de s'emparer d'un objet, à condition évidemment qu'elle n'en ait pas déjà un sur le dos: Soit f le taux d'occupation d'un objet, on pose p1 la probabilité de s'emparer d'un objet et on a: p1 = (K1 / (K1+f))² où K1 est une constante. On voit bien que plus l'objet est isolé (f -> 0), plus la fourmi a de chance de s'emparer de cet objet (p1 -> 1).
si Random>p1
alors prendre-objet
sinon continuer
c) Le programme
Bien, maintenant que nous avons vu comment un ordinateur peut comprendre le problème et comment il peut le représenter, nous pouvons lui décrire ça dans un langage qu'il comprendra: un programme. C'est la partie la moins compliquée, il suffit d'appliquer tout ce qu'on a dit précédemment. Ce n'est d'ailleurs pas la peine de lire ce qui suit si vous n'avez pas envie de vous plonger dans les méandres de la programmation. Du moment que les chapitres précédents ont été compris.
Le langage que j'utilise est le Turbo Pascal à partir de la version 6.00 car il comprend une part de Programmation Orientée Objet (POO), mais tout autre langage peut être utilisé, même sans POO bien que cela ne soit pas très pratique. Je m'explique : la POO est bien utile ici car pour nous, une fourmi sera représentée par un objet (ou plutôt une instance de l'objet fourmi, mais là on s'en fout du vocabulaire utilisé) et elle aura ses caractéristiques et ses actions possibles. Mais tout cela sera expliqué plus précisément par la suite.
Tout d'abord, le nid. On a dit qu'il sera représenté par l'écran. On dispose donc aléatoirement à l'écran toute une série de caractères de couleurs (un espace coloré) qui représenteront les objets à trier. C'est la procédure InitNid qui s'occupe de ça.
Ensuite les fourmis. Elles sont créées dynamiquement pour que vous puissiez choisir exactement le nombre de fourmis que vous désirez.
Décrivons maintenant les propriétés (les champs) et les actions (les méthodes) de notre fourmi_informatique:
Tout d'abord, les champs:
De plus, notre fourmi_informatique a les méthodes suivantes:
Maintenant que notre fourmi_informatique est réalisée, nous allons lui donner des petites copines. C'est la procédure TriFourmis qui va s'occuper de cela, en déclarant des instances (des copies) de cette fourmi_informatique en mémoire. Puis, il appellera successivement la méthode Action de chaque fourmi pour contrôler toutes les fourmis une par une, et ceci en boucle, indéfiniment, jusqu'à ce que vous décidiez d'arrêter le programme.
III QUOI QU'ON DOIT VOIR?
Tout d'abord vous verrez un écran qui vous demandera si vous voulez modifier les données. Pour l'instant, tapez "N" (non) pour garder les données initiales.
Quand je dis données, ce sont:
- le nombre de fourmis
- le nombre d'objets
- le nombre d'objets différents
- les constantes K1 et K2
Vous vous retrouvez alors tout de suite devant votre nid modélisé, avec plein de couleurs partout (heu, en fait il n'y en a que 2 mais il y a beaucoup d'objets) et une dizaine de "bestioles" qui bougent partout sur l'écran: ce sont nos fourmis. Comme prévu, le désordre parait total!
Ca bouge de partout et nos fourmis paraissent complètement folles (comme dans la réalité, quand vous donnez un coup de pied dans un nid de fourmis ). Mais n'arrêtez pas encore le programme,
Attendez quelques instants, quelques secondes ("ah tiens, c'est marrant, y a des petits tas qui se forment"),
Quelques minutes ("ah tiens, c'est encore plus marrant, les petits tas se sont regroupés en tas plus gros") et vous voyez apparaître des tas d'une même couleur qui se regroupent,
Et c'est gagné !
Amélioration possible: en fait, dans la réalité, une fourmi peut certainement utiliser son odorat pour se déplacer et donc ne pas avoir un mouvement complètement désordonné. Une amélioration possible de ce programme serait donc de rechercher les objets les plus proche de la fourmi et diriger celle-ci vers ces objets.