Aujourd’hui sur le blog du webdesign, on va s’intéresser au concept d’algorithme génétique.

Pour mon premier article sur le BDW en tant que stagiaire, j'ai décidé de vous parler de l'intelligence artificielle, qui est un sujet très intéressant et plus que jamais d'actualité. Je n'aurais probablement pas l'occasion d'écrire beaucoup d'articles alors j'espère que celui-là ne sera pas trop mauvais.

Petit point sur l’IA

Tout d’abord, introduisons le concept d’intelligence artificielle : ce terme a été employé pour la première fois que très récemment par John McCarthy, mais le principe d’expliquer et d’imiter le cerveau humain date de l’antiquité, avec notamment le philosophe Aristote qui a tenté de formuler logiquement l’argumentation, afin d’en faire une « méthode » applicable de manière systématique (donc comme un algorithme).

Au début du XIXe siècle, c’est le matématicien George Boole qui repris l’idée en imaginant une logique algébrique binaire : l’algèbre de Boole.

Trouvez un webdesigner disponible

Trouvez gratuitement le prochain talent qui réalisera votre projet ou rejoindra votre équipe.

Plus tard, le mathématicien Alan Turing, qui a travaillé dans un contexte de guerre contre le nazisme et fait parti des pionniers de l’informatique, mis en place un test permettant de détecter la force d’une intelligence artficielle. Ce test consiste simplement à mettre en relation à l’aveugle un cobaye avec un ordinateur et une autre personne, le but du cobaye est de déterminer qui est l’ordinateur et qui est l’humain. S’il échoue, le test est réussi pour la machine.
 

L’intelligence artificielle s’est donc développée principalement au cours de ces dernières années, au travers de différentes technologies, comme les réseaux neuronaux ou bien le point qui nous intéresse aujourd’hui : les algorithmes génétiques .

Les algorithmes génétiques

Un algorithme génétique est un type d’intelligence artificielle reprenant le concept de la théorie de l’évolution de Darwin, d’où le nom. Il fait partie de l’ordre des algorithmes évolutionnistes, qui ont la particulatité de s’inspirer de l’adaptation de la nature.

Les algorithmes génétiques reprennent donc point par point le principe de l’évolution d’une espèce mais à une échelle différente, pour une population d’éléments quelconques :
–    La sélection naturelle, traduite ici par la sélection des meilleurs éléments
–    L’hérédité, traduite ici par le croisement des éléments pour en donner un ou des meilleurs
–    Les variations entre individus, traduite ici par la mutation et l’utilisation des particularités des éléments

Un algorithme génétique reprend donc un schéma très simple :

 

Exemples d’utilisations : le jeu BoxCar2D : http://www.boxcar2d.com/index.html

Une voiture est générée aléatoirement en prenant pour paramètres des formes géometriques simples, des liaisons, des roues, des masses et des couples.
Ainsi, au début, on peut se retrouver avec des voitures surréalistes


 
Puis, au bout d’un certain nombre de générations, les enfants de cette voiture commencent à prendre forme


 
Et si on attend assez longtemps, on peut finalement avoir une voiture bien équilibrée qui tient la route


Utilisations pratiques

Ce système peut aussi être utile dans des conditions plus professionnelles voire dans la vie de tous les jours : ainsi on peut utiliser un algorithme génétique pour résoudre un sudoku, pour générer des plannings complexes, pour coder un bruteforce, ou encore pour aider la robotique dans les tâches les plus complexes, telles que le maintien en équilibre.

Ce système est par ailleurs souvent couplé avec un reseau neuronal, pour resoudre les tâches les plus complexes, comme par exemple dans la vidéo ci-dessous, où deux « gladiateurs » apprennent d'eux-même à combattre.

Conclusion

Voilà, on a donc vu que le fonctionnement d’un algorithme génétique s’inspirait de la façon que la nature a à s’adapter à son environnement, qu’ils étaient principalement utilisés pour résoudre des tâches complexes, et qu’on pouvait les faire tourner afin de générer des choses auxquelles l’humain n’auraient pas forcément pensé (cf BoxCar2D).

On peut donc citer quelques avantages, comme la bonne gestion des imprévus, ou le fait que la machine se débrouille par elle-même pour obtenir des bons résultats à partir de rien, ce qui se rapproche du « machine learning », qui désigne le fait qu’une machine apprenne d’elle-même.

Bien sur, comme tout système quel qu’il soit, il y a aussi des inconvénients, comme le fait que ce type d’algorithme est relativement complexe à mettre en place, que les temps de calculs peuvent être très longs, et que les résultats restent incertains