Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Equipment >> Robot industriel

Explorer la puissance et les limites des algorithmes génétiques

À ce stade de la série sur la programmation génétique (PG), nous avons appris ce qu'est la programmation génétique et comment elle représente l'information, comment les opérateurs génétiques fonctionnent dans les algorithmes évolutionnaires, et nous avons travaillé sur l'évolution d'un programme de tri par régression symbolique.

Ici, nous examinerons de haut niveau ce que cette technologie peut accomplir à mesure qu'elle se développe.

Considérations pratiques de la programmation génétique

Pour comprendre ce dernier chapitre de notre série, rappelons-nous l'exemple XOR que nous avons discuté dans la première partie de cette série :

Une solution parfaite au problème XOR découverte par la PG :
(defun program ()
  (AND (OR X1 X2)
  (NOT (AND X1 X2) )
  )
)
Listing 1. Résultat XOR.

Regardons également l'exemple de régression symbolique de l'article précédent :

Approximation polynomiale de sin(x) dans l'intervalle (0 <= x <= pi/2)

(defun program ()
  (+ (* (* (* X X) X)
  (* 0.2283 -0.6535))
  X)
)

Simplifiant le programme ci-dessus, on obtient l'équation équivalente suivante :

polysin(x) = -.1492 x3 + x

Résultats :
x sin(x) polysin(x)
0.0000.0000.000
0.0780.0770.077
0.1560.1550.155
0.2340.2310.232
0.3120.3060.307
0.3900.3800.381
0.4680.4510.452
0.5460.5190.521
0.6240.5840.587
0.7020.6450.650
0.7800.7030.709
0.8580.7560.763
0.9360.8050.813
1.0140.8480.858
1.0920.8870.897
1.1700.9200.931
1.2480.9480.957
1.3260.9700.978
1.4040.9860.991
1.4820.9960.996
1.5600.9990.993
Listing 4. Régression symbolique.

Remarquez que les deux exemples, XOR et régression symbolique, renvoient une seule valeur lorsqu'ils sont évalués.

Cette caractéristique n'a pas besoin d'être une restriction, car il est certainement possible qu'une fonction ou un terminal ait un effet de bord lors de son exécution. C'est souvent le cas pour le programme de tri, qui contient une fonction avec l'effet de bord potentiel d'échanger une paire d'éléments dans un vecteur. En pratique, il est courant que des effets de bord soient présents. D'autres exemples d'effets de bord utiles sont l'affectation d'une variable à une autre ou le changement de direction vers laquelle un robot fait face.

Notre ensemble de fonctions peut inclure des fonctions conditionnelles qui donnent aux programmes évolués la capacité de prendre des décisions. Les fonctions conditionnelles évaluent sélectivement leurs arguments. Par exemple, considérons une fonction, d'arité trois, telle que (if arg1 arg2 arg3). La fonction est évaluée en évaluant le premier argument et si le résultat est vrai, le second argument est évalué ; sinon, le troisième argument est évalué. Des constructions itératives sont également possibles, car une fonction peut évaluer l'un de ses arguments plusieurs fois. Une complexité supplémentaire est introduite, cependant, par la nécessité de limiter le nombre d'itérations et le niveau d'imbrication afin d'éviter une situation où l'évaluation d'un individu prendrait un temps excessivement long. Des travaux ont été réalisés pour permettre des formulations récursives, bien que le succès dans ce domaine ait été quelque peu limité.

Bien que les résultats des systèmes PG tendent à être des programmes de type LISP, un système PG n'a pas besoin d'être implémenté en LISP. De nombreux systèmes sont implémentés en C ou C++. Une représentation linéarisée de l'arbre de programme peut être employée et la surcharge de la mémoire dynamique ainsi que la collecte de déchets coûteuse peuvent être évitées. L'efficacité de la fonction d'adaptation mérite une attention particulière car c'est souvent un goulot d'étranglement en raison du grand nombre de fois où elle est invoquée au cours de chaque génération. Un excellent article discutant de diverses techniques d'implémentation peut être trouvé dans Advances in Genetic Programming (cité dans la section Lectures suggérées ci-dessous).

Comme dans d'autres paradigmes d'apprentissage automatique, tels que les réseaux de neurones, le potentiel de surapprentissage des données d'entraînement (cas de test PG) existe. Le surapprentissage peut se produire lorsque la solution « mémorise » efficacement les données, ne fournissant guère plus qu'une table de recherche élaborée. Un moyen simple d'atténuer cet effet est d'utiliser un facteur de parcimonie. Un facteur de parcimonie est généralement une petite fraction multipliée par le nombre de nœuds dans l'arbre de programme, dont le résultat est incorporé dans la fonction d'adaptation. L'idée est de récompenser les solutions plus petites, présumément plus générales. De plus, vous êtes encouragé à utiliser des techniques de plan d'expériences appropriées. Par exemple, si vous tentez de développer un modèle de prédiction, il est judicieux de restreindre l'évaluation de l'adaptation à un sous-ensemble des données disponibles. Ainsi, les données restantes peuvent mesurer la performance prédictive du modèle résultant.

Comme c'est le cas avec les algorithmes évolutionnaires, la PG ne garantit pas de trouver une solution exacte ni même une solution acceptable. Les résultats peuvent varier considérablement d'une exécution à l'autre. Souvent, le processus converge prématurément vers un minimum local. La performance dépend fortement de la complexité du problème, de sa représentation caractérisée par le choix des fonctions et terminaux, et des propriétés de la fonction d'adaptation.

Applications de la programmation génétique

La programmation génétique a été appliquée avec succès à des problèmes dans des domaines tels que :

Orientations futures pour la programmation génétique

Selon la complexité du problème, plusieurs exécutions de PG peuvent être nécessaires pour trouver une solution acceptable, si tant est qu'on puisse en trouver une. Idéalement, nous aimerions que la PG « monte en charge » à mesure que la complexité du problème augmente. Trouver de bonnes façons d'atteindre cet objectif est un domaine de recherche actif. Comme en programmation conventionnelle, la notion de construction de représentations de niveau supérieur via des sous-routines est une façon d'aborder ce problème. Dans Genetic Programming II, Koza discute des méthodes qui peuvent découvrir des sous-routines réutilisables et présente des résultats qui soutiennent la capacité de programmes hiérarchiques et modulaires à résoudre des problèmes plus complexes.

Comme nous l'avons vu, la PG couple les caractéristiques d'auto-organisation de l'algorithme génétique avec la puissance de représentation et la généralité des S-expressions. L'élégance de cette approche simplifie la spécification du problème à celle de fournir une fonction d'adaptation spécifique au domaine et un ensemble approprié de fonctions et terminaux. Applicable à une gamme diversifiée de problèmes, la PG continue d'être un terrain fertile pour la recherche.

Encore à ses débuts, de futures percées pourraient nous mener un pas plus près de ce Saint Graal des systèmes capables d'écrire leurs propres programmes.

Lectures suggérées

Robot industriel

  1. Alliages tungstène-cuivre : propriétés clés, fabrication et applications
  2. Tantale : propriétés clés et applications industrielles diverses
  3. Titane : propriétés clés et applications réelles
  4. Fils en titane : types, propriétés et applications industrielles
  5. Condensateurs au tantale : caractéristiques clés et applications
  6. 13 types de matériaux réfractaires et leurs applications industrielles clés
  7. Molybdène et ses alliages : applications clés dans le traitement des matériaux
  8. Prototypage rapide : accélérer la conception, réduire les coûts, stimuler l'innovation
  9. Freins industriels expliqués : but, applications et maintenance