Está en la página 1de 2

Algoritmo genético

Trabajar obligatoriamente con numpy y vectores

Otras opciones: pygame, turtle

El objetivo es que la población llegue al borde derecho del grafico en una cierta cantidad de pasos,
de modo tal que aquellos que no lleguen en ese tiempo, morirán.

Debe contener:

.- Individuo.

.- Población.

.- Genes. (Siendo estos la dirección que puede tomar para moverse)

123

456 (Siendo 5 la posibilidad de quedarse en su mismo lugar)

789

.- Cromosoma. (Individuo, siendo esto el valor que puede tomar. Cada individuo tiene la
probabilidad de moverse normalizada).

Algoritmo:

.- Generar una población inicial. (Se crean y se manejan los puntos por medio de múltiples
vectores)

.- Calcular el fitness.

.- Iniciar un ciclo determinado por un objeto como, por ejemplo, el porcentaje de población que
llego a tocar el borde.

- Seleccionar el mejor: Elegir los padres de la nueva generación a través de algún


método de selección. Ejemplo: Selección por torneo

En el ploteo se muestra: El número de generación (la cual va de 10 en 10) y la cantidad de


movimientos que realiza (esto debe ser editable, pero lo ideal es trabajar con 70).

Se debe poder cambiar el tamaño de la población.


¿Cómo se tendría que hacer?

Generamos la población inicial, donde se incluye: clase, individuo, posición inicial con el numero
de movimientos, probabilidad de moverse)

Se inicia un ciclo.

Población_inicial():

Calcular_fitness() #Equivale al número total de pasos

Aquellos que hacen menos movimientos serán mejores, por lo que tendrán un fitness más alto. El
fitness se debe normalizar, donde la probabilidad de selección de [f1, f2, …, fn] sea una sumatioria
que de como resultado f_n = 1

While(true):

Seleccionamos_mejores() #Acá escogemos quienes serán los papás de la nueva


generación, esto puede ser por selección:

- Tournament selection

- Roulete wheel selecction (es más variado en el area genetica)

Puntos extra si contine genoma asesino, aquellos que chocan se comen a otros. O de paso algunos
podrán comer y otros no.

Población_inicial()

Circular_fitness()

While(true):

Seleccionar_mejor()

Cruse()

Mutacion()

Movimiento_de_individuo()

Calculo_fitness()

También podría gustarte