Citation
Share
Date
Abstract
La programación automática es un área de interés tanto para la ingeniería de software como para la Inteligencia Artificial (IA). La programación genética es una técnica de la IA desarrollada por John R. Koza, inspirada en algoritmos genéticos, que provee la forma de evolucionar programas mediante operaciones genéticas similares a las naturales, como el cruce y la mutación, con la finalidad de obtener programas que resuelvan un problema. Una variante de programación genética implementada por Helmut H�rner utiliza gramáticas del tipo Backus-Naur-Form (BNF) como material genético. Los métodos usuales que siguen algunos trabajos sobre programación automática son métodos formales que involucran conceptos de lógica; en esta tesis se muestra un método diferente al utilizar la programación genética con gramática BNF como una opción para la programación automática. Esto se consiguió mediante la integración de un sistema generador de programas, basado en la variante de programación genética de H�rner, que utiliza un conjunto de subrutinas definidas en una gramática BNF, así como de un procedimiento de ejecución de programas y de procedimientos para su evaluación. La integración del sistema generador tiene el objetivo de elaborar programas que tratan de satisfacer a una especificación inicial, en la cual se indica lo que se espera que realice un programa. Los ejemplos tratados por el sistema generador pertenecen al Algebra Lineal. Los primeros dos ejemplos fueron encontrar un programa para la multiplicación de un vector por un escalar y encontrar otro programa para la bÚsqueda de un nÚmero dentro de un arreglo, en ambos ejemplos los resultados fueron favorables para el sistema generador. Los ejemplos siguientes fueron encontrar programas para el producto punto de dos vectores y para la adición de matrices, ambos representaron mayor dificultad para el sistema generador; sin embargo, se obtuvieron resultados favorables al encontrar los programas para cada ejemplo; por Último, los ejemplos para los cuales el generador no encontró programas tan favorables fueron la obtención de programas para la corrección de códigos y la obtención de programas que efectuasen la inversa de una matriz, tales resultados se debieron a especificaciones rígidas que poco ayudaron a la conducción hacia programas efectivos, produciendo una inadecuada evolución de los programas.