Está en la página 1de 14

Programación Genética

Algoritmos Bioinspirados
Profesora:
Abril Valeria Uriarte Arcia
Alumno:
Morales Bustamante Jorge Alfredo
La programación genética es un tipo de
programación evolutiva que busca
encontrar la mejor solución para un
problema, aunque no siempre lo logre.
La ventaja de esta es que el
programador no debe conocer la
solución, sino que el programa por sí
solo resuelve el problema.
Es una derivación de los algoritmos
genéticos, pero en vez de tomar
soluciones como individuos, se toman
programas que son evolucionados y
optimizados.
En esta práctica se utilizarán
herramientas como gplearn y deap en
el desarrollo de la programación
genética, de modo que su realización
resulte más sencilla y eficiente.
Siguiendo las instrucciones brindadas por la
profesora, se comienza usando gplearn para
implementar una regresión simbólica y
adaptar una relación simbólica.

Posteriormente, se realizó un
entrenamiento con datos aleatorios
Se procede a hacer un ajuste en la regresión
simbólica respecto a los datos que recién
generamos. Para ello se usan 20
generaciones. Luego, se hace una
comparación con otros modelos no lineales,
de modo que se observe el comportamiento
mediante la visualización gráfica.
Se explora el programa encontrado por la
regresión simbólica y se imprime el grafo
La función de división protegida valida que
no se hagan divisiones entre cero, de modo
que no se rompa el programa.
Se declara una constante efímera. Al
momento en que el programa agrega un dato
al árbol, la función que contiene se ejecuta y
su resultado se agrega donde se pueden
tomar los valores -1, 0 o 1.
Con renameArguments agregamos dos
entradas para un problema de dos variables
donde Arg0=“x” y Arg1=“y” van a tomar dos
valores diferentes.

Posteriormente se crea el genotipo


que contendrá al individuo y su
función fitness. Se genera el objeto
obteniendo un árbol al que se le
agrega la función Fitness para que
cualquier individuo que se produzca,
tenga los atributos deseados.
Se crea una instancia de toolbox, en “expr”, donde se va a
crear un individuo con el uso de gp.genHalfAndHalf que
contiene las primitivas creadas al inicio, posteriormente se
crea una población repitiendo la creación del individuo.
Después tenemos la función de evalSymReg el cual recibe
un individuo y puntos de ex y y como entrada, dando así
el fitness correspondiente como salida, se emplea el
método de compilación para que podamos visualizar en
consola. En squerrors es una fórmula matemática para
evaluar el error cuadrático la modificación es que se
emplean dos variables y eso va a realizar ciertas
iteraciones, lo interesantes es que trabajamos con una
matriz de valores, es decir, zip crear el acceso a una
posición de la matriz es como que une dos arreglos en
pares por ejemplo x = [1,2,3] y = [4,5,6], zip(x,y) =
[[1,4],[2,5],[3,6]] entonces de esta manera podemos
acceder a diferentes valores de la matriz hasta que se
termine de recorrer cada una de las posiciones y asi
obtener nuestros cálculos
Para continuar en el método de select se va a
realizar un torneo de longitud 3, en el método de
evaluate vamos a obtener valores para cada uno
de los puntos en x y y con sus respectivas
iteraciones, el método de mate es la probabilidad
de que se cruce un punto con cada uno de los
nodos, el método mutate es la probabilidad de
que se pueda agregar un subárbol a un nodo.En
decorate se delimitará con un valor máximo de
17 tanto para el mate como el mutate. En este
punto cualquier estructura que tenga una
instancia en toolbox tendrá acceso a todos los
parámetros.
Vamos a usar el objeto multistatics para calcular la
media, la desviación estándar, el mínimo y el
máximo tanto de la aptitud física como del tamaño
de los individuos

Después de todo este proceso deap ya tiene la


información necesaria para comenzar con el
proceso evolutivo, pero nos falta un detalle
inicializar. Para inicializar vamos a crear una
población y luego aplicamos el algoritmo
completo.
Archivo generado
Desarrollar programación genética no
es un trabajo nada sencillo. Involucra
procesos algo complejos, sin embargo,
tenemos la ayuda de las librerías
existentes, pero eso no exime de que
tenga cierto grado de dificultad el
implementarlas, y más aún solamente
basándose en la documentación oficial
de las librerías; pero por el otro lado sí
se aprecian las ventajas de utilizar la
programación genética. Es cuestión
entonces de sopesar al momento del
desarrollo si utilizar programación
genética es el curso adecuado de
desarrollo, pero siempre es bueno
contar con una herramienta más para
poder explotar.
Conogasi. (2018). Algoritmos
genéticos. 2022, Noviembre 7,
Conogasi.org\par Sitio web:
https://conogasi.org/articulos/algorit
mos-geneticos/par

También podría gustarte