Evolución autoconstructiva


La evolución autoconstructiva es un proceso en el que las entidades que experimentan el cambio evolutivo son ellas mismas responsables de la construcción de su propia descendencia y, por lo tanto, de aspectos del proceso evolutivo en sí. Debido a que la evolución biológica es siempre autoconstructiva, este término ocurre principalmente en la computación evolutiva , para distinguir los sistemas de tipos de vida artificiales de los algoritmos genéticos convencionales donde el AG realiza la replicación artificialmente. [1] [2] [3] [4] [5] El término fue acuñado por Lee Spector. [6] [7] [8] [9] [10]

La evolución autoconstructiva es una buena plataforma para responder preguntas teóricas sobre la evolución de la capacidad de evolución . La evidencia preliminar sugiere que la forma en que se genera la descendencia cambia sustancialmente a lo largo de la evolución. [11] Al estudiar estos patrones, podemos comenzar a comprender cómo los sistemas en evolución se organizan para evolucionar más rápido. En última instancia, tal comprensión podría permitirnos mejorar nuestra capacidad para resolver problemas con la computación evolutiva .

También se cree que esta mayor capacidad para que evolucione el proceso de autorreplicación es importante para recrear el proceso evolutivo abierto observado en la Tierra [12].

Una forma relativamente simple de autoconstrucción ocurre en sistemas como Tierra y Avida . En estos sistemas, los programas se replican asignando espacio en la memoria para su descendencia y luego recorriendo todas las instrucciones en su genoma y copiando cada una en el espacio recién asignado. [13] Esto es autoconstrucción en el sentido de que los programas son responsables de determinar qué código termina en la descendencia. Los programas suelen hacer copias exactas de sí mismos, y los cambios se introducen exclusivamente a través de eventos de mutación. Sin embargo, en principio, los programas pueden componer una amplia gama de posibles descendientes copiando solo un subconjunto de sus genomas.

PushGP es un sistema de programación genética que desarrolla código escrito en el lenguaje Push. [8] Push es un lenguaje basado en pilas diseñado para un uso sencillo en programación genética, en el que cada tipo de variable (por ejemplo, cadenas, enteros, etc.) tiene su propia pila. Todas las variables se almacenan en la pila asociada a su tipo. Uno de los tipos de variables es el código Push ejecutable. Como resultado, este diseño de lenguaje permite una rica evolución autoconstructiva al tratar todo el código que queda en la pila de código al final de la ejecución del programa como descendiente del programa. [14] Con este enfoque, los programas tienen un control completo sobre los programas de descendientes que crean.