Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Optimización
88
89 # I n i c i a l m e n t e l o s c l i e n t e s se d i s t r i b u y e n por i g u a l e n t r e
90 # t o d o s l o s s e r v i d o r e s ; s i sobra alguno , se a s i g n a a l azar
91 c l i e n t e s = [ numClientes / numServidores
92 for i in range ( numServidores ) ]
93
94 r e s t o = n u m C l i e n t e s − sum ( c l i e n t e s )
95 i f r e s t o >0:
96 f o r s e r v i n random . s a m p l e ( r a n g e ( n u m S e r v i d o r e s ) , r e s t o ) :
97 c l i e n t e s [ s e r v ] += 1
98
99 print ( c l i e n t e s , tiempoMedioEspera ( s e r v i d o r e s , c l i e n t e s ) )
100
101 # Se l l a m a a r e c o c c i ó n s i m u l a d a p a r a que o b t e n g a una buena
102 # d i s t r i b u c i ó n de l o s c l i e n t e s en l o s s e r v i d o r e s
103 c l i e n t e s = recoccionSimulada ( servidores , clientes , tolerancia ,
104 iteraciones )
105
106 print ( c l i e n t e s , tiempoMedioEspera ( s e r v i d o r e s , c l i e n t e s ) )
4. Algoritmos genéticos .
Supongamos que una empresa de inversiones on-line nos encarga que construyamos un
asesor de inversiones para sus clientes. El planteamiento del problema es el siguiente: la
empresa ofrece a sus clientes la posibilidad de invertir en bonos de varias compañías. Los
bonos de cada compañía tienen tres características: precio por bono, rendimiento de los
bonos (vamos a suponer que es conocido) y cantidad de bonos disponibles. El cliente, por su
Copyright © 2013. Editorial UOC. All rights reserved.
duos existentes dos a dos. Para emular la selección natural, los individuos más idóneos se
reproducen con mayor probabilidad que los menos idóneos; de esta forma es más probable
que sus genes se transmitan a la siguiente generación de individuos.
Hay diferentes métodos para cruzar los genes de dos individuos A y B: cortar por un
gen determinado de A e insertar los genes de B a partir de ese punto (cruce en un punto,
ver figura 53); o cortar por dos puntos de A e insertar los genes de B correspondientes
(cruce en dos puntos, que es el método que usaremos en nuestro ejemplo, ver figura 54);
también es posible cruzar al azar cada uno de los genes (cruce uniforme, ver figura 55), entre
otros métodos. Con frecuencia el método de cruce ha de tener en cuenta la naturaleza del
problema, pues puede ocurrir que sobre los genes operen algunas restricciones: deban estar
ordenados, no deban repetirse, su suma no deba exceder una cierta cantidad, etc. El objetivo
final del cruce es, emulando a la naturaleza, combinar las características ventajosas de dos
individuos para conseguir un individuo mejor adaptado incluso a su entorno.
Benítez, Raúl, et al. Inteligencia artificial avanzada, Editorial UOC, 2013. ProQuest Ebook Central,
http://ebookcentral.proquest.com/lib/unadsp/detail.action?docID=3217957.
Created from unadsp on 2018-11-05 06:30:06.
c Editorial UOC 224 Inteligencia artificial avanzada
El otro mecanismo que interviene en la evolución biológica, y que los algoritmos genéti-
cos también utilizan, es el de la mutación. Los individuos que se han generado por cruce
pueden sufrir, con una determinada probabilidad, un cambio aleatorio en alguno(s) de sus
genes. El objetivo de las mutaciones es enriquecer la población introduciendo genes que no
se encuentren en ella, lo que permite a su vez explorar nuevas zonas del espacio de soluciones
S que pueden contener soluciones mejores. La probabilidad o tasa de mutación no suele ser
muy alta. En el ejemplo presentado a continuación es de un 1 %, a modo de orientación.
Seguidamente se evalúa la idoneidad de esta nueva población, que a su vez dará nacimien-
to a una nueva generación de individuos, y así sucesivamente. No existe un criterio único para
establecer el número de generaciones (iteraciones) de un algoritmo genético; puede ser fijo,
o hasta alcanzar una cierta idoneidad, o hasta que los nuevos individuos no aporten ninguna
Copyright © 2013. Editorial UOC. All rights reserved.
Existen numerosas variantes y mejoras de los algoritmos genéticos. Una de las más ha-
bituales es la del elitismo: en cada generación, los E mejores individuos pasan inalterados
a la siguiente generación. De esta forma el algoritmo no pierde soluciones que pueden ser
mejores que la solución final, y además permite probar numerosos cruces y mutaciones de
las mejores soluciones. Frecuentemente se toma | E |= 1, como en el ejemplo desarrollado
más adelante.
Otras propuestas para mejorar los algoritmos genéticos incluyen el cruce entre más de
dos individuos y los algoritmos meméticos, en los que los individuos tienen la capacidad de
aprender y transmitir lo aprendido a sus descendientes.
Benítez, Raúl, et al. Inteligencia artificial avanzada, Editorial UOC, 2013. ProQuest Ebook Central,
http://ebookcentral.proquest.com/lib/unadsp/detail.action?docID=3217957.
Created from unadsp on 2018-11-05 06:30:06.
c Editorial UOC 225 Capítulo V. Optimización
A B C D E
Cantidad 5 6 10 3 7
Benítez, Raúl, et al. Inteligencia artificial avanzada, Editorial UOC, 2013. ProQuest Ebook Central,
http://ebookcentral.proquest.com/lib/unadsp/detail.action?docID=3217957.
Created from unadsp on 2018-11-05 06:30:06.
c Editorial UOC 226 Inteligencia artificial avanzada
1 1 1 2 3 1 4600 408
2 1 2 0 2 3 4700 425
3 4 3 1 0 1 4800 454
4 2 0 1 3 3 4900 519
Generación 1
Mutación
Generación 2
Mutación
Benítez, Raúl, et al. Inteligencia artificial avanzada, Editorial UOC, 2013. ProQuest Ebook Central,
http://ebookcentral.proquest.com/lib/unadsp/detail.action?docID=3217957.
Created from unadsp on 2018-11-05 06:30:06.
c Editorial UOC 228 Inteligencia artificial avanzada
27 # i n v e r s i o n e s que no e x c e d a n e l c a p i t a l d i s p o n i b l e
28 d e f c r e a I n d i v i d u o ( i n v e r s i o n e s , c a p i t a l ) :
29 individuo = [0]∗ len ( inversiones )
30
31 while c a p i t a l I n v e r t i d o ( i n d i v i d u o ) < c a p i t a l :
32 e l e c c i o n = r a n d i n t ( 0 , l e n ( i n v e r s i o n e s ) −1)
33 i n d i v i d u o [ e l e c c i o n ] += 1
34
35 return a j u s t a C a p i t a l ( i n d i v i d u o )
36
37
38 # Crea un n u e v o i n d i v i d u o c r u z a n d o o t r o s d o s ( c u y a s p o s i c i o n e s s e
39 # i n d i c a n en e l s e g u n d o p a r á m e t r o )
40 d e f c r u z a ( p o b l a c i o n , p o s i c i o n e s ) :
41 L = len ( poblacion [0])
Benítez, Raúl, et al. Inteligencia artificial avanzada, Editorial UOC, 2013. ProQuest Ebook Central,
http://ebookcentral.proquest.com/lib/unadsp/detail.action?docID=3217957.
Created from unadsp on 2018-11-05 06:30:06.