7
Algoritmos Genéticos UNIVERSIDAD POLITECNICA SALESIANA SIMULACION CARLOS YANEZ INFORME ALGORITMOS GENETICOS 10mo GESTION 6 De Noviembre del 2012

A Lgor It Mos Genetic Os

Embed Size (px)

Citation preview

Page 1: A Lgor It Mos Genetic Os

Algoritmos Genéticos

UNIVERSIDAD POLITECNICA

SALESIANA

SIMULACION

CARLOS YANEZ

INFORME

ALGORITMOS GENETICOS

10mo GESTION

6 De Noviembre del 2012

Page 2: A Lgor It Mos Genetic Os

Algoritmos Genéticos

TEMA

• Simulación de algoritmos genéticos

Objetivos

General

• Desarrollar una aplicación que permita simular las etapas de un algoritmo genético

Específicos

• Investigar la base teórica de los algoritmos genéticos

• Determinar las ventajas y desventajas de los algoritmos genéticos

• Desarrollar una aplicación que permita simular un algoritmo genéticos

Justificación

El presente documento tiene como finalidad demostrar el funcionamiento del algoritmo genético y

sus aplicaciones en la vida real , para que el lector tenga un beneficio de esta herramienta y pueda

aplicarlo en su vida profesional , y así beneficiarse del uso de esta herramienta.

Alcance

La investigación comprende una base teórica sobre el funcionamiento y las etapas del algoritmo

genético, así como una breve descripción de sus ventajas y desventajas, para continuar con el

desarrollo de una aplicación de forma sencilla que permita comprender la manera en la que trabaja

el algoritmo, y culminando con las conclusiones sobre el tema desarrollado.

Marco Teórico Definición.- Los algoritmos genéticos se definen como métodos adaptivos que permiten resolver

problemas de búsqueda y optimizan ; basándose en los procesos genéticos de los organismos vivos

basado en la población ,reproducción y mutación , tratan de resolver el mismo conjunto de

problemas que se han contemplado antes , es decir , buscan un máximo como solución , el conjunto

de variables que utiliza un algoritmo genético se denomina cromosoma , todos los operadores

utilizados por el algoritmos se utilizaran sobre el cromosoma o poblaciones de ellos.

En el algoritmo genético va implícito el método para resolver el problema; son solo parámetros de

tal método los que están codificados, a diferencia de otros algoritmos evolutivos como la

programación genética

Las etapas básicas de un algoritmo genético son selección, combinación, mutación e inserción como

se muestra en la ilustración

Page 3: A Lgor It Mos Genetic Os

Algoritmos Genéticos

Ventajas y Desventajas

No necesitan conocimientos específicos sobre el problema que intentan resolver.

• Operan de forma simultánea con varias soluciones, en vez de trabajar de forma secuencial

como las técnicas tradicionales.

• Cuando se usan para problemas de optimización maximizar una función objetivo- resultan

menos afectados por los máximos locales (falsas soluciones) que las técnicas tradicionales.

• Resulta sumamente fácil ejecutarlos en las modernas arquitecturas masivamente paralelas.

• Usan operadores probabilísticos, en vez de los típicos operadores determinísticos de las otras

técnicas.

• Pueden tardar mucho en converger, o no converger en absoluto, dependiendo en cierta

medida de los parámetros que se utilicen tamaño de la población, número de generaciones,

etc.-.

• Pueden converger prematuramente debido a una serie de problemas de diversa índole.

Limitaciones

El poder de los Algoritmos Genéticos proviene del hecho de que se trata de una técnica robusta, y

pueden tratar con éxito una gran variedad de problemas provenientes de diferentes áreas,

incluyendo aquellos en los que otros métodos encuentran dificultades. Si bien no se garantiza que el

Algoritmo Genético encuentre la solución óptima, del problema, existe evidencia empírica de que

se encuentran soluciones de un nivel aceptable, en un tiempo competitivo con el resto de algoritmos

de optimización combinatoria. En el caso de que existan técnicas especializadas para resolver un

determinado problema, lo más probable es que superen al Algoritmo Genético, tanto en rapidez

como en eficacia. El gran campo de aplicación de los Algoritmos Genéticos se relaciona con

aquellos problemas para los cuales no existen técnicas especializadas. Incluso en el caso en que

dichas técnicas existan, y funcionen bien, pueden efectuarse mejoras de las mismas hibridándolas

con los Algoritmos Genéticos.

Funcionamiento de un algoritmo Genético

1. Generar aleatoriamente la población inicial. Cada individuo necesita tener codificada su

información en forma de cromosoma. Cada uno de estos cromosomas son posibles

soluciones del problema a estudiar.

2. Evaluación de la población. A cada cromosoma se le aplica la función de aptitud que ha

elegido para su estudio. Mediante esta función asignamos un número real a cada posible

solución del problema. Se otorga más probabilidad de emparejamiento a aquellas que sean

mejores.

3. Reproducción. Durante el problema se eligen aleatoriamente los individuos que se van a

reproducir y el cruce también se hace de forma aleatoria. Dicho cruce se realiza sobre los

genotipos de cada pareja elegida como padres. Mediante el operador de Selección

cruzamiento sabremos qué parte del padre y de la madre pasa a la descendencia, así como el

modo.

Page 4: A Lgor It Mos Genetic Os

Algoritmos Genéticos

Diagramas UML

Diagrama de Clases

Diagrama de Casos de Uso

Page 5: A Lgor It Mos Genetic Os

Algoritmos Genéticos

Diagrama de Componentes

Diagrama de Objetos

Código Fuente

Clase Genetico.py import random

import math

class Genetico():

#numero de genes

N_genes=10

#poblacion inicial

F0=[]

#probabilidad de mutacion

prob_m=0.5

#nueva generacion

F1=F0[:]

suma=0

def gen_aleatorio(self):

gen=[]

for i in range(0,8):

if random.random()<0.3:

gen.append(0)

else:

gen.append(1)

return gen

def Iniciar(self):

for i in range(0,self.N_genes):

self.F0.append(self.gen_aleatorio())

Page 6: A Lgor It Mos Genetic Os

Algoritmos Genéticos

def f(self,x):

return 0.05*x*x-4*math.cos(x)

def nextgeneration(self):

self.F0.sort(cmp=self.compara_genes)

print "La mejor solucion hasta el momento es:"

print "f(",self.decodifica_gen(self.F0[0]),")= ", self.f(self.decodifica_gen(self.F0[0]))

#elitismo, elegimos los dos mejores y pasan directo a la siguiente poblacion

self.F1[0]=self.F0[0]

self.F1[1]=self.F0[1]

for i in range(0,(self.N_genes-2)/2):

#seleccionamos una pareja

g1=self.elegir()

g2=self.elegir()

#generamos hijos con cruza, el punto de cruza es la mitad del gen

h1=self.F0[g1][0:4]

h1.extend(self.F0[g2][4:8])

h2=self.F0[g2][0:4]

h2.extend(self.F0[g1][4:8])

#mutamos cada hijo con probabilidad prob_m

if random.random() < self.prob_m:

h1[int(round(random.random()*7))]^=1

if random.random() < self.prob_m:

h2[int(round(random.random()*7))]^=1

#agregar estos hijos a F1

self.F1[2+2*i]=h1

self.F1[3+2*i]=h2

#actualizamos la poblacion

self.F0[:]=self.F1[:]

def decodifica_gen(self,gen):

valor=0

for p in range(-3,4):

valor+=(2**p)*self.gen[4-p]

if self.gen[0] == 1:

valor*=-1

return valor

def compara_genes(self,gen1,gen2):

vg1=self.decodifica_gen(gen1)

vg2=self.decodifica_gen(gen2)

fvg1=self.f(vg1)

fvg2=self.f(vg2)

if fvg1 > fvg2:

return 1

elif fvg1 == fvg2:

return 0

else: #fvg1<fvg2

return -1

suma=float(self.N_genes*(self.N_genes+1))/2.

def elegir(self):

va=random.random()

acc=float(self.N_genes)

for lugar in range(0,self.N_genes):

if va < acc/self.suma:

break

acc+=self.N_genes-lugar-1

return lugar

Archivo Principal.py import Genetico

obj=Genetico.Genetico()

obj.Iniciar()

Conclusiones

Los algoritmos genéticos son una opción eficiente y fácil de implementar para resolver

problemas de optimización.

Los Algoritmos genéticos tienen muchos aspectos configurables que se pueden adaptar a las

características del problema: tipo de mutación, tipo de cruzamiento, técnica de selección,

etc.

Page 7: A Lgor It Mos Genetic Os

Algoritmos Genéticos

Bibliografía

M. Cerrolaza,William Annicchiarico, M Cerrolaza,1996, Algoritmos de Optimización

Estructural Basados en Simulación Genética

Javier Alcaráz Soria, Rubén Ruiz García, Concepción Maroto Álvarez,Javier Alcáraz

Soria,Rubén Ruiz García,2002, Investigación Operativa: Modelos y técnicas de

Optimización