En général
Les algorithmes génétiques permettent de résoudre des problèmes de planification et d'ordonnancement. Ils ont également été appliqués à l'ingénierie. Ils sont souvent utilisés pour résoudre des problèmes d'optimisation globale.
En règle générale, les algorithmes génétiques peuvent être utiles dans les domaines qui posent des problèmes de condition physique complexes, car le mélange est conçu pour éloigner la population de l'optima local dans lequel un algorithme traditionnel d'ascension de colline pourrait se trouver bloqué. Les opérateurs de croisement couramment utilisés ne peuvent pas changer une population uniforme. La mutation seule peut assurer l'ergodicité du processus global de l'algorithme génétique (vu comme une chaîne de Markov).
Exemples de problèmes résolus par des algorithmes génétiques : miroirs conçus pour canaliser la lumière du soleil vers un collecteur solaire, antennes conçues pour capter des signaux radio dans l'espace, méthodes de marche pour les figures informatiques, conception optimale de corps aérodynamiques dans des champs d'écoulement complexes
Dans son manuel de conception d'algorithmes, Skiena déconseille les algorithmes génétiques pour toute tâche : "Il est assez peu naturel de modéliser les applications en termes d'opérateurs génétiques comme la mutation et le croisement sur des chaînes de bits. La pseudobiologie ajoute un autre niveau de complexité entre vous et votre problème. Deuxièmement, les algorithmes génétiques prennent beaucoup de temps sur des problèmes non triviaux. L'analogie avec l'évolution - où des progrès significatifs nécessitent des millions d'années - peut être tout à fait appropriée. [...] Je n'ai jamais rencontré de problème où les algorithmes génétiques me semblaient être la bonne façon de l'attaquer. De plus, je n'ai jamais vu de résultats de calcul utilisant des algorithmes génétiques qui m'ont favorablement impressionné. Tenez-vous en au recuit simulé pour vos besoins de recherche heuristique vaudou".
Jeux de société
Les jeux de société constituent une partie très importante du domaine des algorithmes génétiques appliqués aux problèmes de la théorie des jeux. Une grande partie des premiers travaux sur l'intelligence artificielle et les jeux était orientée vers les jeux de société classiques, tels que le tic-tac-toe[3], les échecs et les dames. Les jeux de société peuvent maintenant, dans la plupart des cas, être joués par un ordinateur à un niveau supérieur à celui des meilleurs humains, même avec des techniques de recherche exhaustive aveugle. Le go est une exception notable à cette tendance, et a jusqu'à présent résisté aux attaques des machines. Les meilleurs joueurs de Go sur ordinateur jouent maintenant au niveau d'un bon novice. On dit que la stratégie du Go repose largement sur la reconnaissance des formes, et pas seulement sur l'analyse logique comme aux échecs et autres jeux plus indépendants des pièces. L'énorme facteur de ramification efficace requis pour trouver des solutions de haute qualité restreint fortement le regard qui peut être utilisé dans une recherche de séquence de coups.
Jeux d'ordinateur
L'algorithme génétique peut être utilisé dans les jeux informatiques pour créer une intelligence artificielle (l'ordinateur joue contre vous). Cela permet une expérience de jeu plus réaliste ; si un joueur humain peut trouver une séquence d'étapes qui mène toujours au succès, même lorsqu'elles sont répétées dans différents jeux, il ne peut plus y avoir de défi. À l'inverse, si une technique d'apprentissage telle qu'un algorithme génétique pour un stratège peut éviter de répéter les erreurs passées, le jeu sera plus facile à jouer.
Les algorithmes génétiques nécessitent les parties suivantes :
- Une méthode pour représenter le défi en termes de solution (par exemple, mettre en déroute des soldats lors d'une attaque dans un jeu de stratégie)
- Une fonction d'aptitude ou d'évaluation afin de déterminer la qualité d'une instance (par exemple, une mesure des dommages causés à un adversaire lors d'une telle attaque).
La fonction de fitness accepte une instanciation mutée d'une entité et mesure sa qualité. Cette fonction est personnalisée en fonction du domaine du problème. Dans de nombreux cas, en particulier ceux impliquant une optimisation du code, la fonction d'adaptation peut être simplement une fonction de synchronisation du système. Une fois qu'une représentation génétique et une fonction d'adaptation sont définies, un algorithme génétique instancie les candidats initiaux comme décrit précédemment, puis s'améliore par l'application répétitive d'opérateurs de mutation, de croisement, d'inversion et de sélection (comme défini selon le domaine du problème).