You are on page 1of 5

PROGRAMACION LOGICA Y FUNCIONAL, INGENIERIA DE SISTEMAS, FUNDACION UNIVERSITARIA SAN MARTIN

Algoritmos Genticos y el Problema del Agente Viajero


Farid Alfonso Sierra Rozo, Estudiante Ingeniera, FUSM, jenjarfar @hotmail.com

RESUMEN: En el presente documento se expondr el tema de los algoritmos genticos y se demostrara como las tcnicas utilizadas por la naturaleza para la evolucin de los seres vivos, puedes ser aplicadas en la obtencin de soluciones a problemas usuales con cierto grado de complejidad, de los cuales podramos decir en cierto momento que son imposibles de resolver. Abstract- The present paper will outline the issue of genetic algorithms and demonstrate the techniques used by nature for the evolution of living beings, can be applied in obtaining solutions to the usual problems with any degree of complexity, of which might say at some point that are impossible to solve. PALABRAS CLAVEAlgoritmos Genticos, Tcnicas utilizadas en la lgica desarrollada en el Programa.

El problema del agente viajero, radica en hallar la ruta en que un viajero debe transitar un numero de ciudades desde un punto de partida establecido, para que la distancia recorrida sea mnima, y no deber repetir ciudad dentro del recorrido. Los Algoritmos Genticos usan una semejanza directa con el comportamiento natural. Trabajan con una poblacin de individuos, cada uno de los cuales representa una solucin factible a un problema dado, este fundamento es el que permite que dicho algoritmo sea el de mejor aplicacin a la hora de encontrar la solucin optima de recorrido para el agente viajero. Ya que contamos con una serie de posibles soluciones (poblacin), de las cuales solo una cumple con las condiciones necesarias. Por otra parte encontraremos en el presente documento una breve explicacin de los fundamentos de los algoritmos gnicos, para dilucidar su origen y la evolucin con respecto a las aplicaciones que se han descubierto a travs de los aos. La tercera parte se explicara la estructura lgica con la que cuenta el programa que se desarrollo en lenguaje C++, como apoyo a este documento, all veremos como las tcnicas que utiliza la naturaleza para su evolucin son aplicadas para encontrar la mejor ruta que deba tomar el agente viajero.

I. INTRODUCCIN

Se plasmo el presente documento con la


finalidad de comprobar que los algoritmos genticos tienen un gran campo de aplicacin y que su aporte en la evolucin no solo es genetica, si no adems puede ser tecnolgica, contribuyendo al desarrollo de la inteligencia artificial, la optimizacin de recurso y tiempo en procesos de fabricacin.

PROGRAMACION LOGICA Y FUNCIONAL, INGENIERIA DE SISTEMAS, FUNDACION UNIVERSITARIA SAN MARTIN

II.

ALGORITMOS
GENTICOS

Un algoritmo es una serie de pasos organizados que describe el proceso que se debe seguir, para dar solucin a un problema especfico. Inicializacin: Se genera aleatoriamente la poblacin inicial, que est constituida por un conjunto de cromosomas los cuales representan las posibles soluciones del problema. Evaluacin: A cada uno de los cromosomas de esta poblacin se aplicar la funcin de aptitud para saber cmo de "buena" es la solucin que se est codificando. Condicin de trmino El AG se deber detener cuando se alcance la solucin ptima, pero sta generalmente se desconoce. Seleccin: Despus de saber la aptitud de cada cromosoma se procede a elegir los cromosomas que sern cruzados en la siguiente generacin. Cruzamiento: El cruzamiento es el principal operador gentico, representa la reproduccin sexual, opera sobre dos cromosomas a la vez para generar dos descendientes donde se combinan las caractersticas de ambos cromosomas padres.

Mutacin: modifica al azar parte del cromosoma de los individuos, y permite alcanzar zonas del espacio de bsqueda que no estaban cubiertas por los individuos de la poblacin actual. Reemplazo: una vez aplicados los operadores genticos, se seleccionan los mejores individuos para conformar la poblacin de la generacin siguiente.

Fig. 1 secuencia de un algoritmo gentico.

II A. APLICACIN ALGORITMOS

GENTICOS.
Diseo automatizado, incluyendo investigacin en diseo de materiales y diseo multiobjetivo de componentes automovilsticos. Diseo automatizado de equipamiento industrial. Diseo automatizado de sistemas de comercio en el sector financiero. Construccin de rboles filogenticos. Diseo de sistemas de distribucin de aguas. Diseo de topologas de circuitos impresos. Diseo de topologas de redes computacionales.

PROGRAMACION LOGICA Y FUNCIONAL, INGENIERIA DE SISTEMAS, FUNDACION UNIVERSITARIA SAN MARTIN

III. TCNICAS UTILIZADAS EN EL PROGRAMA Como complemento del presente trabajo se desarrollo un programa en lenguaje C++, en el cual se utilizaron los mtodos de algoritmos genticos para encontrar la solucin al problema del agente viajero. III-A. Iniciacin de la Poblacin Con este mtodo se crea un conjunto de potenciales soluciones, para el caso del agente viajero, combinaciones de recorridos entre ciudades.

sabemos dentro de esta poblacin el recorrido inicia y termina con la misma ciudad y no se debern repetir ciudades. (Posicin en la matriz)
0 0 1 2 3 4 1 2 3 4 5

D D D D D

A E B E A

C B A B C

B C C A E

E A E C B

D D D D D

Fig. 3 poblacin Generada.

III-C. Distancias entre las ciudades Para guardar las distancias de cada cromosoma utilizamos la codificacin o valor asignado a cada gen el cual puede ser representado en una matriz, como se muestra en la figura 4.
0 0 1 2 3 4 Fig. 4 Matriz en donde se encuentran las distancias entre ciudades. 1 2 3 4

8 4

9 3 3

1 6 2 1

Fig. 2 Programa de c++, aplicacin de los Algoritmos Genticos.

III-B. Codificacin. La codificacin consiste en asignarle un valor a cada gen, para poder trabajarlo en el lenguaje de programacin. A B C D E 0 1 2 3 4 Cromosoma Codificacin
Fig. 5 distancias entre ciudades.

Posteriormente la poblacin creada es guardada en una matriz, como

PROGRAMACION LOGICA Y FUNCIONAL, INGENIERIA DE SISTEMAS, FUNDACION UNIVERSITARIA SAN MARTIN

III-D. Evaluacin. Con este mtodo se busca aplicarle una funcin de aptitud a cada cromosoma para saber que tan apto es, adems podremos conocer que oportunidad de reproduccin tiene cada cromosoma con respecto a la dems poblacin. Existe una matriz donde se guardan los puntajes totales de cada cromosoma y la posicin que tienen dentro de la matriz inicial de poblacin. .
0 1 2 3 4 5 0 48 32 21 35 16 42 1 0 1 2 3 4 5

(Posicin en la matriz)
0 0 1 2 3 4 1 2 3 4 5

D D

A E

C B

B C

E A

D D

D
D

B
E

A
B

C
A

E
C

D
D

Fig. 8 Cromosomas que corresponden a la posicin.

III-F. Cruzamiento. Los dos individuos seleccionados son guardados en una matriz padre para su posterior cruzamiento, para generar dos hijos donde se combinan las caractersticas de ambos cromosomas padres. Padres
0 0 1 1 2 3 4 5

D D

B A

A C
2

C E
3

E B

D D

Hijos
0 0 1 4 5

Fig. 6 matriz que guarda la distancias y posiciones.

III-E. Seleccin. Despus de saber la aptitud de cada cromosoma se procede a escoger los cromosomas que sern cruzados en la siguiente generacin, para esto se tomara como referencia los dos puntajes menores.
0 0 1 2 3 4 5 16 21 32 35 42 48 1 4 2 1 3 5 0

D D

E B

A C

C E

B A

D D

Fig. 9 cruzamiento de padres.

Los cromosomas padres y los hijos que cumplan con las condiciones van hacer parte de una nueva generacin la cual es guardada en una matriz, dicha generacin es sometida nuevamente al proceso de seleccin y al proceso de cruce. III-F. Reemplazo. Por ultimo tenemos que las nuevas generaciones han reemplazado a los padres y adems que existe una generacin con los cromosomas mas aptos, cuando se cumple la condicin de termino tendremos que en la primera posicin de la matriz generacin se encuentra nuestra solucin.

Fig. 7 ordenamientos por puntajes.

PROGRAMACION LOGICA Y FUNCIONAL, INGENIERIA DE SISTEMAS, FUNDACION UNIVERSITARIA SAN MARTIN

Generacin
0 0 1 2 3 4 1 2 3 4 5

TRABAJOS FUTUROS B D C A E E D D D D

D E D D D D A E A B

A C E B C C B C B A

Fig. 10 El cromosoma optimo.

Se pretende con este trabajo conocer las aplicaciones de los algoritmos genticos en la solucin de problemas, con este conocimiento podremos encontrar nuevas areas donde se requiera optimizar y mejorar algn producto o servicio. En el futuro se buscara mejorar el aplicativo desarrollado para poder evaluar mas detalles dentro del problema del agente viajero. Desarrollar este aplicativo en otros lenguajes de programacin.

Fig. 11 Resultado final.

IV. CONCLUSIONES Como hemos podido observar, la principal ventaja de los algoritmos genticos radica en su sencillez. Se requiere poca informacin sobre el espacio de bsqueda ya que se trabaja sobre un conjunto de soluciones o parmetros codificados (cromosomas o individuos). Se busca una solucin por aproximacin de la poblacin, en lugar de una aproximacin punto a punto. La programacin mediante algoritmos genticos suponen un nuevo rumbo que permite incluir todas aquellas reas de aplicacin donde no sepamos como resolver un problema.

You might also like