El desván
Publicado: 17:05 03/10/2007 · Etiquetas: algoritmos, geneticos, genes, programar, programacion, mochila, problema · Categorías: Por la tangente


Hace cosa de un año estaba empezando con mi proyecto fin de carrera. Gracias a la ayuda de mi novia (que hacíamos un trabajo muy similar) logramos terminarlos en tiempo récord.

A grandes rasgos el proyecto era un estudio comparativo de los resultados obtenidos por varios algoritmos en la resolución de un mismo problema. El problema que yo trataba de resolver era el problema de la "Mochila 01" que reza: Disponemos de un número determinado de elementos cada uno de los cuales tiene un peso y un beneficio. Debemos de seleccionar un subconjunto de elementos que nos proporcionen el máximo beneficio sin que la suma de sus pesos sobrepase la capacidad C de la mochila. El subtítulo 01 indica que un elemento se toma (1) o no se toma(0), pero no se pueden coger fracciones o varias copias de un elemento.

Se presentaban tres algoritmos diferentes para resolverlo: uno mediante Programación Dinámica (divide el problema en trozos pequeños y utiliza los resultados de esos subproblemas para calcular el resultado del problema real), un EDA (Algoritmo de Distribución de la Probabilidad) y un Algoritmo Genético Simple.

Hasta ese momento yo desconocía la existencia de Algoritmos Genéticos y cuando oi la propuesta me asusté por ese nombre, pero no tenía otra oportunidad así que tuve que aceptar si quería acabar la carrera a tiempo para matricularme en la superior sin perder ningún año.

No me arrepiento. A pesar de lo rimbombante del nombre, descubrí un mundo de algoritmos muy curiosos y útiles a la par que entretenidos (si te gusta programar). Los Algoritmos Genéticos están basados en la selección natural de las especies (aquellos individuos con mejores aptitudes tendrán más posibilidades de reproducirse) y se utilizan para resolver problemas.

Lo que hacen los Algoritmos Genéticos es transformar la información en una secuencia de genes (información) llamada cromosoma (solución potencial al problema). Por ejemplo, para el problema de la mochila con 3 elementos, tendríamos el cromosoma 0 1 0 que indicaría que los elementos 1 y 3 no forman parte de la solución y que el elemento 2 sería el único elemento del subconjunto solución.
Partiendo de esta base, el algoritmo crearía un número determinado de individuos (cromosomas) formando así una población de X individuos generados al azar. Un ejemplo de población de 4 individuos sería:
1 1 1
0 1 0
0 0 0
1 1 0

Se analiza cada individuo otorgándole una "puntuación". En el caso de la Mochila 01  dicha puntuación de cada cromosoma equivale al beneficio máximo obtenido por el subconjunto de elementos introducidos en la mochila.

Una vez tengamos todos los individuos de una población evaluados se procederá a seleccionar un número determinado de cromosomas que serán los padres de la nueva generación. Aquí existen muchas opciones de selección. Si elegimos un EDA, la población se crea en función de probabilidades obtenidas al analizar la disposición de los beneficios y los genes en la generación anterior. Si utilizamos un operador de ruleta crearemos una virtual en la que cada casilla se corresponderá con un individuo y tendrá un tamaño proporcional a su fitness de modo que tendrá más posibilidades de ser elegido para procrear cuanto mejor sea la solución que nos ofrece.

Este proceso se repetiría durante un número determinado de generaciones y se tomaría como resultado uno de los cromosomas de la generación final. Aunque también es posible tomar el mejor cromosoma seleccionado a lo largo de todas las generaciones. Existen muchas variantes, pero he tratado de simplificar el tema evitando comentar cruces entre genes y demás operadores.

Como curiosidad, el problema de la Mochila 01 es un problema bastante simple que no precisa de Algoritmos genéticos en su resolución. Pero son muy útiles en la resolución de problemas complejos o de difícil solución como el TSP (Viajante de comercio).
5 comentarios :: Enlace permanente
Compartir Compartir
FacebookCompartir
TuentiCompartir en Tuenti
MenéameMenéame Enviar
Comentarios: (del primero al último)
17:21 03/10/2007
Los algoritmos genéticos son muy curiosos, aunque en mi experiencia personal, los resultados y la eficiencia obtenidos con ellos dejaban bastante que desear, quedando muy por debajo de otros más sencillos basados en Búsqueda Local, como el Enfriamiento Simulado. Quizás el problema en el que lo aplicamos entonces no era muy adecuado.
Anónimo
19:02 03/10/2007
Oooh, me encantaban los algoritmos genéticos. Y no es cierto que dejen bastante que desear. Lo que pasa es que siempre hay un algoritmo mejor para un problema concreto. Pero se suele decir que los algoritmos genéticos son la segunda mejor solución para cualquier tipo de problema. O al menos eso me decía mi profesor de IA xD
19:13 03/10/2007
A mi tambien me habían hablado de ellos, muy buenos y curiosos
19:16 03/10/2007
Lo tuyo es el entrenamiento pokémon, no hay duda.
Anónimo
20:54 19/02/2008
Tengo una exposicion mañana de algorotmos geneticos en inteligencia artificial y no entiendo nada.
Participa con tu Comentario:

Este blog no permite comentarios.

El desván

ASTURmatr
Blog de ASTURmatr
Blog de ASTURmatr

Posts destacados por el autor:
· La Noche de Reyes del 23 de mayo de 2010
· Little Big Baches
· Algoritmos genéticos
· Los dos vandos
· Adiós, Rocky




Blogs amigos:
AlvaroS
BANJO
Bronco
deimian86
delojo
DMaligno
Gel-chan
GenG
Gunpei_Yokoi
Jimmytrius
Jirachi
Kanevsky
Keiishi Viciat
Kiriyama
Klungo
Kwisatz Haderach
Loserkid
MaNrAy
Mikau
MiwE
Nahar
NeoYoshimitsu
Nosgoroth
onirbos
Osaka_no_Kotatsu
Peibbol
pgrandio
Scroll
Sonny Chiba
Space_Pirate Ridley
Sumnik 2.0
vacajinjo
Vikutoru
xispax_
Xoalde
Yoelink
Zebes
Zeroshcr


Categorías:
Animal Crossing
Banjo-Kazooie
Cine
Compras
Críticando se aprende
GameCube
Juegos. A secas.
Libros
Los Simpsons
Nintendo All Stars
Nintendo DS
No te rías que es peor
Perdidos (Lost)
Por la tangente
Power Rangers
TBO
Tely Vision
Un, Dos, Tres...
Versión asturiana
Wii


Archivo:
Julio 2010
Junio 2010
Mayo 2010
Marzo 2010
Febrero 2010
Enero 2010
Diciembre 2009
Noviembre 2009
Octubre 2009
Septiembre 2009
Agosto 2009
Julio 2009
Mayo 2009
Abril 2009
Febrero 2009
Diciembre 2008
Noviembre 2008
Octubre 2008
Septiembre 2008
Agosto 2008
Julio 2008
Junio 2008
Mayo 2008
Abril 2008
Marzo 2008
Febrero 2008
Enero 2008
Diciembre 2007
Noviembre 2007
Octubre 2007
Septiembre 2007
Agosto 2007
Julio 2007
Junio 2007
Mayo 2007
Abril 2007
Marzo 2007
Enero 2007
Diciembre 2006
Noviembre 2006
Octubre 2006
Septiembre 2006
Agosto 2006
Julio 2006
Junio 2006
Mayo 2006


Vandal Online:
Portada
Blogs
Foro

Blogs en Vandal · Contacto · Denunciar Contenido