jueves, 27 de enero de 2011

Proyecto de algoritmo genetico en C

Se busca como resultado final llegar a una palabra o frase especifica por medio de la utilizacion de un algoritmo genetico partiendo de una poblacion inicial de 3 individuos cuyo ADN es conjunto de letras cualquiera sin sentido. El programa determina el macho alfa el cual se aparea con el resto de la poblacion. En la siguiente generacion se determina nuevamente el macho alfa y asi sucesivamente hasta obtener el individuo mas apto.

Poblacion: hasta un maximo de 10 individuos, la posicion 11 del vector de individuos se usa como nodo temporal para almacenar el ultimo hijo creado

El ADN: El ADN se toma como un conjunto de letras cualquiera al inicio.
Criterio de Excelencia: Se toma como una palabra suministrada por el usuario, dicha palabra será tomada como el ADN mas adaptado

Nivel: es una relacion numerica con respecto al ADN perfecto o el criterio final, mientras mas cercano sea el ADN del individio con el criterio final, el nivel sera mas bajo, un nivel de valor cero significa que son iguales tanto el ADN como el criterio final, entonces se habra llegado al estado perfecto.

ADN Check: Es una variable donde se indica por medio de flag (1 correcto 2 incorrecto) cuales partes del ADN no deben cambiar y cuales si, cuales (genes) son mejores que otros.

Mutaciones: Las mutaciones solo se hacen presente cuando entre los individuos padre y madre no hay un gen optimo con respecto al criterio final

Escenario General

Se inicia con 3 individuos, el macho alfa (el que tenga el menor nivel) se aparea con todo el resto de la poblacion, si existe espacio para albergar mas habitantes se van agregrando sin problemas, en caso de no existir mas espacio se debe "matar" al mas debil de la manada en caso de que el nuevo hijo sea mas fuerte que el mas debil de la manada. En caso de que el nuevo hijo sea mas debil que el mas debil de la manada, el nuevo hijo muere. Luego se vuelve a determinar el macho alfa y se repite la operacion hasta conseguir el organismo mas adaptado (nivel=0) y se activa el flag de fin y termina el programa. Esta es la idea basica estoy trabajando para codificar y posteriormente hacer las pruebas necesarias.

No hay comentarios.:

Publicar un comentario