Programación genética

La versión actual de la página aún no ha sido revisada por colaboradores experimentados y puede diferir significativamente de la versión revisada el 24 de octubre de 2018; las comprobaciones requieren 8 ediciones .

En el aprendizaje automático , la programación genética (GP) es la creación o modificación automática de programas utilizando algoritmos genéticos . Con la ayuda de esta metodología, se “cultivan” programas que son cada vez mejores (de acuerdo con una determinada función de aptitud para los cromosomas) resolviendo el problema computacional establecido.

Historia

Algoritmo de codificación

La elección de cómo codificar un programa en un algoritmo genético es uno de los principales problemas de la programación genética. El programa debe estar codificado de tal manera que sea fácil realizar automáticamente cambios aleatorios (operador de mutación) y combinar dos algoritmos en uno (operador de cruce).

Los métodos de codificación se pueden dividir en dos clases:

Redes neuronales

Treelike

En la codificación de árboles, cada nodo del árbol contiene una función y cada hoja un operando. Una expresión representada como un árbol puede evaluarse fácilmente de forma recursiva. Las GPU tradicionales son más fáciles de usar para desarrollar programas escritos en lenguajes que incorporan naturalmente una estructura de árbol: Lisp , Haskell , F# y otros lenguajes de programación funcionales.

También se han propuesto e implementado con éxito representaciones de programas que no son árboles, como la programación genética lineal adecuada para lenguajes imperativos tradicionales.

Operador de cruce

En una representación de árbol, el operador de cruce se implementa mediante un intercambio entre dos árboles por cualquier nodo junto con sus descendientes (subárboles).

Ejemplo:

individuo _ Children [ randomChildIndex ] = otherIndividual . Hijos [ randomChildIndex ] ; Operador de mutación

A diferencia del operador de cruce, el operador de mutación afecta solo a un cromosoma. En una vista de árbol, se puede implementar cambiando la información en un nodo o agregando/eliminando un nodo o un subárbol completo. En este caso, es necesario controlar la exactitud de los resultados del operador.

Ejemplo:

individuo _ Información = información aleatoria ();

o

individuo = generarNuevoIndividuo ();

Programación metagenética

La programación metagenética es un GP en el que no solo se cambia un programa de computadora dado y, por lo tanto, se "crece", sino también los propios operadores de cruce y mutación aplicados.

Enlaces

Literatura

  • Banzhaf, W., Nordin, P., Keller, RE, Francone, FD (1997), Programación genética: una introducción: sobre la evolución automática de los programas informáticos y sus aplicaciones , Morgan Kaufmann
  • Cramer, Nichael Lynn (1985), " Una representación para la generación adaptativa de programas secuenciales simples " en Actas de una conferencia internacional sobre algoritmos genéticos y aplicaciones , Grefenstette, John J. (ed.), CMU
  • Koza, JR (1990), Programación genética: un paradigma para la reproducción genética de poblaciones de programas informáticos para resolver problemas , Informe técnico del Departamento de informática de la Universidad de Stanford STAN-CS-90-1314 . Un informe completo, posiblemente utilizado como borrador de su libro de 1992.
  • Koza, JR (1992), Programación genética: sobre la programación de computadoras por medio de la selección natural , MIT Press
  • Koza, JR (1994), Programación genética II: Descubrimiento automático de programas reutilizables , MIT Press
  • Koza, JR, Bennett, FH, Andre, D. y Keane, MA (1999), Programación genética III: invención darwiniana y resolución de problemas , Morgan Kaufmann
  • Koza, JR, Keane, MA, Streeter, MJ, Mydlowec, W., Yu, J., Lanza, G. (2003), Programación genética IV: inteligencia de máquina competitiva humana de rutina , Kluwer Academic Publishers
  • Langdon, WB, Poli, R. (2002), Fundamentos de la programación genética , Springer-Verlag
  • Poli, R., Langdon, WB, McPhee, NF (2008), A Field Guide to Genetic Programming , Lulu.com, disponible gratuitamente en Internet ISBN 978-1-4092-0073-4
  • Smith, SF (1980), Un sistema de aprendizaje basado en algoritmos genéticos adaptativos , tesis doctoral ( Universidad de Pittsburgh )
  • Sopov E. A. (2004), Algoritmos evolutivos para modelar y optimizar sistemas complejos, disertación para el grado de candidato de ciencias técnicas, Krasnoyarsk

.