Sei sulla pagina 1di 72

Algoritmo Genético

Integrantes:
 Arotinco Gomez, William
 Manosalva López, Anthony
 Flores Gonzales, Julio
 Escobar Pérez, Fritz
Objetivos
 Explicar qué es y como funcionan los AG.
 Explicar en que caso conviene usar los AG.
 Aplicaciones en los que se usan los AG.
¿Qué es un Algoritmo Genético?
 Los AG son métodos adaptativos para la resolución de
problemas de búsqueda y optimización.
 Están basados en el proceso genético de los organismos vivos.
 Son una clase particular de Algoritmos Evolutivos.
 Los principios básicos de los AG fueron establecidos por
Holland (1975).
¿Qué es un Algoritmo Genético?

 Un AG consiste en una función matemática o una rutina de


software que toma como entradas a los ejemplares de cierta
población y retorna como salida cuales de ellos deben de
generar descendencia para la nueva generación.
Componentes del Algoritmo Genético
 Tamaño de la Población(I): Indica el número de cromosomas
que tenemos en nuestra población para una generación
determinada.

 Población Inicial: Se obtiene al azar del conjunto de soluciones.

 Función Objetivo o de Adaptación(f(xi)): Diseñada para


cada problema de manera específica. Se le asigna un número real
que refleja el nivel de adaptación al problema del individuo
representado por el cromosoma.
 Probabilidad de cruce(pc): Indica la frecuencia con la
que se producen cruces entre los cromosomas padre.

 Probabilidad de mutación(pm): Indica la frecuencia con


la que los genes de un cromosoma son mutados.

 Probabilidad de selección(pk): Indica la probabilidad


que tiene un individuo a ser seleccionado.
Operaciones de los Algoritmos
Genéticos

 Codificación de las Variables


 Selección
 Reproducción o Crossover
 Mutación

¿Cuándo usamos algoritmos genéticos?


Codificación de las Variables
 Los individuos (posibles soluciones del problema), pueden
representarse como un conjunto de parámetros (genes)

 Los genes agrupados forman ristra de valores (cromosoma)

 El alfabeto usado será constituido por el {0,1}, aunque no


necesariamente tenga que tener esta forma.
Ejemplo de un Cromosoma binario
Alfabeto: {0,1}

Gen 1 Gen 2 Gen 3

Alelos
Volver
Selección
Selección por Ruleta
 Descrita por Hassoun como ”la versión estocástica de la
supervivencia del más apto”

 Esta técnica consiste, en palabras coloquiales, en asignar un


segmento de la ruleta a los individuos en base a la aptitud de
estos y la aptitud total de la población actual, y girar la ruleta
tantas veces como selecciones se requieran.
Procedimiento de la Selección por Ruleta:
Existen otros tipos de selección tales como:
-Selección por Rango
-Selección Elitista
-Selección por Estado Estacionario.
-Selección por Torneo
-Selección Escalada
-Selección Jerárquica Volver
Reproducción o Crossover
 Cruce en un punto
 Genera 2 hijos a partir de 2 padres
 Cada hijo hereda características de los dos padres

padres
1 1 1 1 1 1 1 0 0 0 0 0 0 0

hijos
1 1 1 0 0 0 0 0 0 0 1 1 1 1

Volver
Mutación
 La mutación altera de forma aleatoria cada bit
 La probabilidad de aplicación debe ser baja
 Introduce características aleatorias en los cromosomas

antes 1 1 1 1 1 1 1

después 1 1 1 0 1 1 1

Volver
¿Cuándo usar algoritmos
genéticos?
 Su espacio de búsqueda (sus posibles soluciones) debe de
estar delimitado dentro de un cierto rango.
 Debe permitir la definición de una función de aptitud que
nos indique que tan buena o mala es cierta respuesta.
 Las soluciones deben programarse de una forma que resulte
relativamente fácil de implementar en el computador.
¿Cuándo NO usar algoritmos
genéticos?
 Si se requiere forzosamente llegar al óptimo global
 Si conocemos la función de optimización
 Si el problema esta muy delimitado y se presta a un
tratamiento analítico (funciones de una variable)
 Si el espacio es limitado entonces mejor enumerar todas las
soluciones
Áreas de aplicación
 Optimización: Se trata de un campo especialmente
abonado para el uso de los AG, por las características
intrínsecas de estos problemas.
 Programación automática: Los AG se han empleado para
desarrollar programas para tareas especificas, y para diseñar
otras estructuras computacionales tales como el autómata
celular, y las redes de clasificación.
 Economía: En este caso, se ha hecho uso de estos
Algoritmos para modelar procesos de innovación, el
desarrollo de estrategias de puja, y la aparición de mercados
económicos.
Áreas de aplicación
 Ecología: En el modelado de fenómenos ecológicos tales como
las carreras de armamento biológico, la coevolución de parásito-
huésped, la simbiosis, y el flujo de recursos.
 Evolución y aprendizaje: Los AG se han utilizado en el
estudio de las relaciones entre el aprendizaje individual y la
evolución de la especie.
 Sistemas sociales: En el estudio de aspectos evolutivos de
los sistemas sociales, tales como la evolución del
comportamiento social en colonias de insectos, y la
evolución de la cooperación y la comunicación en sistemas
multiagentes.
Ejemplo 1. Aplicación
Matemática
Encontrar el máximo de la función f(x) = x² sobre
los enteros {1,2,3,…32}.
Solución:

Determinamos el tamaño de la población inicial para


luego computar la función de evaluación de cada uno
de sus individuos.

-Tamaño de la Población Inicial: 4


-Alfabeto: {0,1}
-Longitud de las Ristras: 5
Población inicial de la simulación efectuada a
mano correspondiente al Algoritmo genético
Simple: 𝑓(𝑥)
σ 𝑓(𝑥)
El siguiente paso consiste en la selección de 2 parejas
de individuos.

- Obtenemos 4 números reales provenientes de una


distribución de probabilidad uniforme en el intervalo [0,1]
y lo comparamos con la última columna de la tabla. En
este caso vamos a suponer que los individuos seleccionados
para el cruce han sido: El individuo 2 junto con el
individuo 4, así como el individuo 1 junto con el individuo
2.
- Se necesita ahora saber la probabilidad de cruce pc.
Supongamos que la pc=0.8. Igual que antes, elegiremos
2 números aleatorios de la distribución uniforme,
comparándolo con pc. Suponiendo que ambos números
son menor que pc, entonces se realiza el cruce.

- Para los Puntos de Cruce, elegimos al azahar 2 números


del intervalo [1,L-1], siendo L la longitud de la ristra
utilizada. Supongamos que salieron los números 2 y 3,
entonces:
Cruce entre 2 y 4
Punto de Cruce: 2

2 4

Padres 1 1 0 0 0 1 0 0 1 1

Descen. 1 1 0 1 1 1 0 0 0 0
Cruce entre 1 y 2
Punto de Cruce: 3
1 2

Padres 0 1 1 0 1 1 1 0 0 0

Descen. 0 1 1 0 0 1 1 0 0 1
Teniendo como resultado:

2
4
1
2
Lo siguiente sería mutar con una probabilidad pm, cercana a 0,
cada uno de los bit de las 4 ristras de individuos. En este caso
suponemos que el único bit mutado corresponde al primer
gen del tercer individuo.
Tercer Individuo

Descendiente: 0 1 1 0 0
Gen mutado

Descendiente Mutado: 1 1 1 0 0
Finalmente tenemos la población en el tiempo 1, proveniente
de efectuar los
Operadores de cruce y mutación sobre los individuos
expresados en la primera
Tabla, los cuales constituyen la población en el tiempo 0
En las dos últimas columnas se pueden consultar los valores de
los individuos, así como las funciones de adaptación
correspondientes.

Como puede observarse, tanto el mejor individuo como la


función de adaptación media han mejorado sustancialmente al
compararlos con los resultados de la primera tabla.
Pseudocódigo del Algoritmo Genético Simple
BEGIN /* Algoritmo Genético Simple */
Generar una población inicial.
Computar la función de evaluación de cada individuo.
WHILE NOT Terminado DO
BEGIN /*Producir Nueva Generación*/
FORTamaño población/2 DO
BEGIN /*Ciclo Reproductivo*/
Seleccionar dos individuos de la anterior generación, para el cruce
(probabilidad de selección proporcional a la función de evaluación del individuo)
Cruzar con cierta probabilidad los dos individuos obteniendo dos descendientes.
Mutar los dos descendientes con cierta probabilidad.
Computar a función de evaluación de los dos descendientes mutados.
Insertar los dos descendientes mutados en la nueva generación
END
IF la población ha convergido THEN
Terminado := TRUE
END
END
END
Esquema de un Algoritmo Genético
simple
Ejemplo 2 – Aplicación real: El Problema de la
Mochila

El problema consiste en llenar una mochila:


 La mochila puede soportar como máximo un peso P.
 Tenemos n objetos fraccionables.
 Cada objeto i tiene un peso 𝑝𝑖 y proporciona un beneficio 𝑏𝑖 .
Objetivo:
Maximizar el beneficio de los objetos transportados.

max ෍ 𝑥𝑖 𝑏𝑖 𝑠𝑢𝑗𝑒𝑡𝑜 𝑎 ෍ 𝑥𝑖 𝑝𝑖 ≤ 𝑃
1≤𝑖≤𝑛 1≤𝑖≤𝑛
 En otras palabras el problema nos plantea lo siguiente:
“Existe una mochila con, por ejemplo, una capacidad máxima
de 20 kg de carga. A esa mochila debemos llenarla con
distintos objetos (imaginemos que nos vamos de
campamento) los cuales tienen un peso y una utilidad
determinada. ¿Cual es la forma óptima de cargar esa
mochila? ¿Que combinación de elementos me dará el
máximo beneficio (utilidad) sin pasarme de los 20 kg
máximos permitidos?"
Como vemos, no podemos incluir todos los elementos, ya que
totalizan un peso total de 27, y esta tiene una capacidad
máxima de 20.
Generemos la primer población, de 10
cromosomas y asignemos a cada gen, de forma
aleatoria, un valor (entre 1 y 0, para este caso):
Mi "función de ajuste" es la que se observa en la fila correspondiente a
"puntuación" y utilizo a las funciones =SI() y COINCIDIR() para
lograrla.
1) primero solo tengo en cuenta los cromosomas de peso <= 20
2) luego me fijo cual es la utilidad mas alta de dichos cromosomas
3) sumo el resultado del punto 1 + el resultado del punto 2, obteniendo
una "puntuación"... mientras mas alta, mas apto el individuo y con mas
posibilidades de ser elegido como padre.

según mi función de ajuste, los mas aptos son el primer y cuarto


cromosoma, ya que con poco peso reportan una utilidad alta.
Escogemos los dos mejores padres, que vienen a ser
nuestro cromosoma con menor peso y con mayor utilidad.
Los colocamos en la columna Z y AB. Estos dos vienen a
ser los mas aptos para reproducirse
Sobre la base de lo mencionado hasta el momento,
procedemos a cruzar la población actual con los padres,
obteniendo dos nuevos padres:
Sigamos creando generaciones de cromosomas e
intercambiando sus genes con los mejores padres. Obtenemos
en la generación 60 lo siguiente:

Si seguimos ejecutando el bucle, veremos que se ha llegado al


peso y utilidad optima para cada cromosoma padre.
Finalmente nuestra mochila quedaría conformado por los siguientes
objetos, en cualquiera de los dos casos hemos llegado a obtener el
peso y utilidad optimo.
¿Por qué usamos algoritmos genéticos
para este problema?
 Su espacio de búsqueda (sus posibles soluciones) están
delimitadas dentro de un rango.

 Se trata de un problema de búsqueda y optimización.

 El problema es fácil de implementar y obtener rápidamente


una solución.
Ejemplo 3 – Aplicación real: El Problema del
Agente Viajero (TSP)
 El problema del agente viajero, consiste en encontrar el orden en que
un viajante de comercio debería visitar varias ciudades para que la
distancia recorrida sea mínima. Se trata de un problema NP completo,
en el que la única alternativa para su solución consiste en verificar
todas las posibles opciones para encontrar cuál es la óptima, hay que
tener en cuenta que si el número de ciudades es n, el número de
posibles recorridos a ensayar resulta ser n!/2n.
 Una de las soluciones para resolver este problema es usando algoritmo
genéticos, puesto que una de sus aplicaciones es la resolución de
problemas de optimización complejos, aquellos cuyo tiempo de
ejecución mediante algoritmos convencionales crece
exponencialmente o factorialmente con el aumento del tamaño del
problema.
Técnicas de Cruce para resolver los
TSP
 Cruce de mapeo parcial (PMX).
 Cruce en orden (OX).
 Cruce en posición establecida.
 Cruce en orden establecido.
El cruce de mapeo parcial (PMX)
Procedimiento:
1. Seleccione dos posiciones a lo largo de la cadena
uniformemente al azar. Las subcadenas definidas por las dos
posiciones son llamadas las sección de mapeo.
2. Intercambie dos subcadenas entre padres para producir un
proto-hijo.
3. Determine la relación de mapeo entre las dos secciones de
mapeo.
4. Legalice la descendencia con la relación de mapeo.
9 4
El cruce en orden (OX)
Procedimiento:
1. Seleccione una subcadena de un padre al azar.
2. Se produce un proto-hijo mediante la copia de la subcadena
dentro de la correspondiente posición de este.
3. En el segundo padre borre las ciudades que están ya en
subcadena.
4. Coloque las ciudades dentro de las posiciones sin arreglo
del proto-hijo de izquierda a derecha de acuerdo a la orden
de la secuencia para producir una descendencia.
Cruce en posición establecida
Procedimiento:
1. Seleccione un juego de posiciones de un padre aleatoriamente.
2. Produzca un proto-hijo mediante la copia de las ciudades sobre
estas posiciones correspondientes del proto-hijo.
3. Borre las ciudades las cuales ya fueron seleccionadas del segundo
padre.
4. Coloque las ciudades dentro de las posiciones sin arreglo del
proto-hijo de izquierda a derecha de acuerdo a la orden de la
secuencia para producir un descendencia.
Cruce en orden establecido
 Este tiene una ligera variación del “Cruce en posición
establecida”, el cual el orden de las ciudades en la posición
seleccionada en un padre es impuesto sobre las
correspondientes ciudades en el otro padre.
Técnicas de Mutación
 Inversión
 Inserción
 Desplazamiento
 Intercambio Recíproco
Inversión
 En este método se fijan dos posiciones dentro del
cromosoma, se toma las subcadena seleccionada y se invierte
volviéndose a insertar en el cromosoma. La selección de las
dos posiciones se hace de manera aleatoria.
Inserción
 Se selecciona una ciudad del cromosoma de manera aleatoria
y se inserta en una posición aleatoria, sin alguna alteración
más al orden de los genes del cromosoma.
Desplazamiento
 Una subcadena es seleccionada de manera aleatoria e
insertada de la misma manera, dentro del mismo
cromosoma. Es el mismo procedimiento que en la inserción,
solo que en aquella subcadena contiene una sola ciudad.
Intercambio Reciproco
 Dos ciudades son seleccionadas de manera aleatoria y son
intercambiadas sus posiciones.
Manipulación genética aplicada a un
Algoritmo Genético
 Se usa para corregir o intercambiar genes defectuosos, a la
técnica de los algoritmos genéticos.
 Con un ejemplo practico se entenderá perfectamente esta
técnica.
 Se tienen dos cadenas: BDEACHGF y GABCFHED, aplicando un
cruce PMX se tiene:
 En la siguiente tabla se encuentra la relación de distancias que existe
entre cada una de las ciudades involucradas.
 En ella se puede observar que la relación que hay entra la ciudad C y
F es decir su distancia, sobresale por su alto valor.
 La probabilidad de que el recorrido sea el óptimo es baja debido al
alto valor de la distancia comprendida entre C y F.
 Para solucionar esto haremos lo siguiente:

 La ciudad C, que ocupa la cuarta posición en el cromosoma,


intercambia su lugar con la ciudad que se encuentra próxima a su
izquierda, en este caso B. De igual forma la ciudad F ubicada en la
quinta posición realiza los mismo pero con la próxima ciudad
ubicada a su derecha, o sea H.
 Se ha modificado el código genético del cromosoma. El nuevo
recorrido sigue siendo valido, no hay ciudades que se repitan en él
ni tampoco ciudades que hagan falta, es totalmente legal.
Casos Especiales
 Caso 1 La “relación amenazadora” se encuentra al inicio del
recorrido.

 Caso 2 La “relación amenazadora” se encuentra al final del


recorrido
Aplicación de un caso Real
 El problema consiste en resolver el TSP para diez ciudades
ubicadas en la República Mexicana. Las ciudades son:

Tamaulipas Guanajuato
Nuevo León Guerrero
Durango Veracruz
Chihuahua Campeche
Sinaloa Chiapas
 Las ciudades se etiquetan como se indica a continuación:

Ciudad Etiqueta
Tamaulipas 1
Nuevo León 2
Durango 3
Chihuahua 4
Sinaloa 5
Guanajuato 6
Guerrero 7
Veracruz 8
Campeche 9
Chiapas 10
 La distancia comprendida entre cada una de las ciudades se
muestra en la tabla siguiente:

Tamaulipas Nuevo León Durango Chihuahua Sinaloa Guanajuato Guerrero Veracruz Campeche Chiapas
Tamaulipas 0
Nuevo León 287 0
Durango 822 615 0
Chihuahua 1131 818 709 0
Sinaloa 1361 1154 539 1248 0
Guanajuato 4804 662 601 1143 1033 0
Guerrero 975 1271 1295 1747 1584 633 0
Veracruz 749 1036 1327 1854 1797 866 716 0
Campeche 1610 1897 2227 2497 2610 1677 1572 861 0
Chiapas 1522 1809 1921 2473 2391 1460 1089 773 674 0
 Se propone la siguiente población inicial:

 Ahora se seleccionan de manera aleatoria cuatro de ellos, sin importar


que pudiera salir seleccionado más de una vez cualquiera de los cuatro.
 El operador genético de mutación es empleado cada determinado
número de generaciones para evitar caer en ciclamientos. En esta
ocasión cada 4 generaciones es aplicado.
 El operador de cruce empleado es OX. Los puntos de cruce son
el 4 y el 7. Los puntos de cruce son generados aleatoriamente.
Aplicando el cruce correspondientes se tiene la nueva población
que constituye a la primera generación.

 De la misma forma en que se obtuvo la primera generación, se


obtiene la segunda solo que ahora se toma como población inicial
a la que constituye a la primera generación. Se puede obtener el
número de generaciones que uno desee, no hay límites.
Ventajas de los AG

 Los AG están íntimamente relacionados, pues operan de forma


simultanea con varias soluciones y no de manera secuencial como
lo hacen las técnicas tradicionales.
 Los algoritmos genéticos explotan un sinnúmero de soluciones y si
se llegan a encontrar con soluciones sub-óptimas, simplemente
desechan esta opción y continúan con otra opción de solución,
caso contrario a los tradicionales pues estos tienen que abandonar
su trabajo y empezar desde cero nuevamente.
 La habilidad que poseen para manipular muchos parámetros
simultáneamente, y se torna interesante cuando se presenta el
caso de resolver varios objetivos a la vez.

 Usan operadores probabilísticos, en vez de los típicos operadores


determinísticos de las otras técnicas.
Desventajas de los AG

 Puede demorarse bastante en converger o no en absoluto,


esto depende de cierto modo en los parámetros que se estén
utilizando, por ejemplo el tamaño de la población, numero
de generaciones, etc.

 Pueden converger prematuramente


Conclusiones
 El algoritmo genético es un método robusto.
 Al comprender los AG la implementación no es complicada y
pueden llegar a tener mucha aplicación.
 Los AG no necesitan conocimientos específicos sobre el problema
que intentan resolver
 Operan de forma simultánea con varias soluciones.
 Usan operadores probabilísticos, en lugar de determinísticos.
 Los AG tienen la ventaja de ofrecer un mecanismo adaptativo de
resolución de problemas, de forma que aunque el problema
cambie, éste se pueda seguir resolviendo.
Bibliografía
 http://tesis.ipn.mx/bitstream/handle/123456789/1140/victorrdz.p
df?sequence=1
 http://bibing.us.es/proyectos/abreproy/5073/fichero/Cap%EDtulo
+3-+Algoritmo+gen%E9tico%252FCap%EDtulo+3-
+Algoritmo+gen%E9tico.pdf
 http://algoritmosgeneticos.wikispaces.com/VENTAJAS+DE+LOS+
ALGORITMOS+GENETICOS
 http://algoritmosgeneticos.wikispaces.com/DESVENTAJAS+DE+L
OS+ALGORITMOS+GENETICOS
 http://www.sc.ehu.es/ccwbayes/docencia/mmcc/docs/temagenetic
os.pdf

Potrebbero piacerti anche