Esto es difícil, porque las estructuras de datos de C ++ son difíciles de manipular directamente, porque la compilación de C ++ no es simple, por lo que si usa todo el lenguaje, como plantillas, simplemente no puede evolucionar, simplemente dará errores de sintaxis en el wazoo.
Si restringe C ++ a un subconjunto similar a C, entonces la respuesta es segura sí, pero debe tener cuidado: si usa estructuras, o algo por el estilo, debe mantener la sintaxis correcta cuando desarrolle la estructura, es una pesadilla.
La forma tradicional de manipular programas es mediante código LISP. Existen algoritmos genéticos existentes en LISP, es fácil porque el código LISP es una LISTA LISP.
- ¿Qué es la teoría del refuerzo?
- ¿No podemos simplemente programar robots para no derrocar a la humanidad?
- ¿Cuándo podrá Inteligencia Artificial leer mi correo electrónico y ofrecerme sugerencias sobre qué escribir?
- ¿Qué es el procesamiento del lenguaje natural en inteligencia artificial?
- ¿La supercomputadora 'Watson' realmente lo sabe todo?
Para hacerlo en un lenguaje tipo c, debe tener estructuras de datos que representen el árbol de análisis, para que pueda evolucionar el código ajustando la estructura de bloques real. Estas cosas son difíciles de hacer, los algoritmos genéticos siempre usan un lenguaje más pequeño y simplificado.
Uno de esos idiomas podría implicar un idioma de solo goto, con una memoria fija asignada antes de tiempo. Pero si te estás volviendo así de primitivo, también podrías sustituir un autómata celular por el lenguaje C y evolucionar simplemente actualizando los datos internos. Es difícil crear estructuras evolucionables utilizando lenguajes legibles por humanos, porque están diseñados para ser escritos por humanos, no evolucionados desde cero. Pero con los “idiomas” de autómatas celulares (es decir, incomprensible Turing completo desorden) es ciertamente factible, mira la biología.