1. Introducci´ n a la Computaci´ n Evolutiva
o o
(Notas de Curso)
Dr. Carlos A. Coello Coello
CINVESTAV-IPN
Departamento de Computaci´ n o
Av. Instituto Polit´ cnico Nacional No. 2508
e
Col. San Pedro Zacatenco
M´ xico, D.F. 07300
e
ccoello@cs.cinvestav.mx
Mayo, 2008
3. Dedicatorias
A mi esposa Lupita,
por todo el apoyo que
siempre me ha brindado.
A mi hijo Carlos Felipe,
quien me motiva a querer
llegar cada vez mas´
´
lejos en mi profesion.
A mis padres Carlos y Victoria,
˜
por haberme ensenado
tantas cosas importantes que
no se aprenden en la escuela.
3
13. Lista de Tablas
3.1 Tabla comparativa de los tres paradigmas principales que confor-
man la computaci´ n evolutiva [9]. . . . . . . . . . . . . . . . . . 77
o
8.1 Tabla de verdad para el segundo problema propuesto. . . . . . . . 174
13
15. Lista de Figuras
1.1 Dos ejemplos de conjuntos convexos. . . . . . . . . . . . . . . . 35
1.2 Dos ejemplos de conjuntos no convexos. . . . . . . . . . . . . . . 36
1.3 Representaci´ n gr´ fica de la zona factible (denotada con F ) de un
o a
problema. Advierta que en este caso la zona factible es disjunta. . 37
1.4 Escaleras entrecruzadas del problema 2.b. . . . . . . . . . . . . . 39
2.1 Georges Louis Leclerc (Conde de Buffon). . . . . . . . . . . . . . 42
2.2 Jean Baptiste Pierre Antoine de Monet (Caballero de Lamarck). . 42
2.3 August Weismann. . . . . . . . . . . . . . . . . . . . . . . . . . 44
2.4 Alfred Russell Wallace. . . . . . . . . . . . . . . . . . . . . . . . 45
2.5 Charles Robert Darwin. . . . . . . . . . . . . . . . . . . . . . . . 46
2.6 Johann Gregor Mendel. . . . . . . . . . . . . . . . . . . . . . . . 47
2.7 Francis Galton. . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
2.8 Hugo De Vries. . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
2.9 Thomas Hunt Morgan. . . . . . . . . . . . . . . . . . . . . . . . 51
2.10 Alan Mathison Turing. . . . . . . . . . . . . . . . . . . . . . . . 52
2.11 George E. P. Box. . . . . . . . . . . . . . . . . . . . . . . . . . . 53
2.12 Lawrence J. Fogel. . . . . . . . . . . . . . . . . . . . . . . . . . 57
2.13 Hans-Paul Schwefel. . . . . . . . . . . . . . . . . . . . . . . . . 59
2.14 John H. Holland. . . . . . . . . . . . . . . . . . . . . . . . . . . 60
2.15 Michael Conrad. . . . . . . . . . . . . . . . . . . . . . . . . . . 61
2.16 Howard H. Pattee. . . . . . . . . . . . . . . . . . . . . . . . . . . 61
2.17 John R. Koza. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
2.18 Thomas S. Ray. . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
2.19 James Mark Baldwin. . . . . . . . . . . . . . . . . . . . . . . . . 65
3.1 Portada de la edici´ n reciente (1999) del libro “Artificial Intelli-
o
gence through Simulated Evolution”, con el cual se originara la
programaci´ n evolutiva. . . . . . . . . . . . . . . . . . . . . . . . 68
o
15
16. 3.2 Aut´ mata finito de 3 estados. Los s´mbolos a la izquierda de “/”
o ı
son de entrada, y los de la derecha son de salida. El estado inicial
es C. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
3.3 Thomas B¨ ck. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
a 72
3.4 Portada de una edici´ n reciente (publicada por el MIT Press) del
o
libro en el que Holland diera a conocer originalmente los algorit-
mos gen´ ticos (en 1975). . . . . . . . . . . . . . . . . . . . . . .
e 74
3.5 Ejemplo de la codificaci´ n (mediante cadenas binarias) usada tradi-
o
cionalmente con los algoritmos gen´ ticos. . . . . . . . . . . . . .
e 75
3.6 Portada del libro de David E. Goldberg sobre algoritmos gen´ ticos.
e
A este importante libro se debe, en gran medida, el exito (cada vez
´
mayor) de que han gozado los algoritmos gen´ ticos desde princi-
e
pios de los 1990s. . . . . . . . . . . . . . . . . . . . . . . . . . . 76
3.7 Portada del libro de John Koza sobre programaci´ n gen´ tica. Este
o e
libro marc´ el inicio de una nueva area dentro de la computaci´ n
o ´ o
evolutiva, dedicada principalmente a la soluci´ n de problemas de
o
regresi´ n simb´ lica. . . . . . . . . . . . . . . . . . . . . . . . . .
o o 79
4.1 Estructural helicoidal del ADN. . . . . . . . . . . . . . . . . . . 83
4.2 Las cuatro bases de nucle´ tido . . . . . . . . . . . . . . . . . . .
o 84
4.3 Cromosomas . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
4.4 Genoma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
4.5 Un feto humano. . . . . . . . . . . . . . . . . . . . . . . . . . . 86
4.6 C´ lula diploide. . . . . . . . . . . . . . . . . . . . . . . . . . . .
e 86
4.7 Una mutaci´ n (error de copiado). . . . . . . . . . . . . . . . . . .
o 87
4.8 Un ejemplo de una cadena cromos´ mica. Esta cadena es el genotipo
o
que codifica las variables de decisi´ n de un problema. . . . . . . .
o 90
4.9 Un ejemplo de un gene. . . . . . . . . . . . . . . . . . . . . . . . 90
4.10 Un ejemplo de un fenotipo. . . . . . . . . . . . . . . . . . . . . . 90
4.11 Un ejemplo de un individuo. . . . . . . . . . . . . . . . . . . . . 91
4.12 Un ejemplo de un alelo. . . . . . . . . . . . . . . . . . . . . . . . 91
4.13 Un ejemplo de migraci´ n. . . . . . . . . . . . . . . . . . . . . . .
o 92
4.14 Ejemplo del operador de inversi´ n. . . . . . . . . . . . . . . . . .
o 93
5.1 Un ejemplo de una cadena binaria. . . . . . . . . . . . . . . . . . 96
5.2 Un ejemplo de notaci´ n del IEEE. . . . . . . . . . . . . . . . . . 99
o
5.3 Un ejemplo de un algoritmo gen´ tico con representaci´ n real. . . . 100
e o
16
17. 5.4 Una representaci´ n entera de n´ meros reales. La cadena com-
o u
pleta es decodificada como un solo n´ mero real multiplicando y
u
dividiendo cada d´gito de acuerdo a su posici´ n. . . . . . . . . . .
ı o 101
5.5 Otra representaci´ n entera de n´ meros reales. En este caso, cada
o u
gene contiene un n´ mero real representado como un entero largo. .
u 102
5.6 Dos ejemplos de cadenas v´ lidas en un algoritmo gen´ tico desor-
a e
denado. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
5.7 Un ejemplo del operador de “corte” en un AG desordenado. La
l´nea gruesa indica el punto de corte. . . . . . . . . . . . . . . . .
ı 104
5.8 Un ejemplo del operador “uni´ n” en un AG desordenado. La l´nea
o ı
gruesa muestra la parte de la cadena que fue agregada. . . . . . . 105
5.9 Un ejemplo de un cromosoma usado en programaci´ n gen´ tica. .
o e 106
5.10 Los nodos del arbol se numeran antes de aplicar el operador de
´
cruza. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
5.11 Los dos hijos generados despu´ s de efectuar la cruza. . . . . . . .
e 107
5.12 Un ejemplo de mutaci´ n en la programaci´ n gen´ tica. . . . . . . .
o o e 108
5.13 Un ejemplo de permutaci´ n en la programaci´ n gen´ tica. . . . . .
o o e 109
5.14 Un ejemplo de encapsulamiento en programaci´ n gen´ tica. . . . .
o e 109
5.15 Un ejemplo de estructura de dos niveles de un AG estructurado. . 110
5.16 Una representaci´ n cromos´ mica de la estructura de 2 niveles del
o o
AG estructurado. . . . . . . . . . . . . . . . . . . . . . . . . . . 111
5.17 Ejemplo de una estructura de datos usada para implementar un
AG estructurado. . . . . . . . . . . . . . . . . . . . . . . . . . . 111
7.1 Cruza de un punto. . . . . . . . . . . . . . . . . . . . . . . . . . 142
7.2 Cruza de dos puntos. . . . . . . . . . . . . . . . . . . . . . . . . 144
7.3 Cruza uniforme. . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
7.4 Cruza Acentuada. . . . . . . . . . . . . . . . . . . . . . . . . . . 146
7.5 Un ejemplo con dos padres seleccionados para cruzarse, en pro-
gramaci´ n gen´ tica. . . . . . . . . . . . . . . . . . . . . . . . . .
o e 150
7.6 Los 2 hijos resultantes de la cruza entre los padres de la figura 7.5 151
8.1 Ejemplo de una mutaci´ n por desplazamiento. . . . . . . . . . . . 166
o
8.2 Ejemplo: Suponemos que el punto de mutaci´ n es el nodo 3. . . . 168
o
10.1 Ejemplo de un frente de Pareto. . . . . . . . . . . . . . . . . . . . 199
10.2 Diagrama del algoritmo de NPGA para manejo de restricciones. . 203
12.1 Representaci´ n gr´ fica de los esquemas de longitud tres. . . . . . 218
o a
17
18. 12.2 Representaci´ n gr´ fica de la
o a clase de problemas deceptivos de
Tipo I. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234
12.3 Representaci´ n gr´ fica de la
o a clase de problemas deceptivos de
Tipo II. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235
13.1 Ejemplo del uso de cromosomas diploides. . . . . . . . . . . . . . 242
14.1 Dragan Savic. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251
15.1 Michael J. Flynn. . . . . . . . . . . . . . . . . . . . . . . . . . . 256
15.2 Esquema de paralelizaci´ n global de un algoritmo gen´ tico. . . . .
o e 258
15.3 Esquema de funcionamiento de un algoritmo gen´ tico paralelo de
e
grano grueso. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259
15.4 Algunas topolog´as posibles. . . . . . . . . . . . . . . . . . . . .
ı 262
15.5 Ejemplo de un esquema h´brido en el que se combina un AG de
ı
grano grueso (a alto nivel) con un AG de grano fino (a bajo nivel). 264
15.6 Un esquema h´brido en el cual se usa un AG de grano grueso de
ı
alto nivel donde cada nodo es a su vez un AG con paralelismo
global. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264
15.7 Un esquema h´brido en el que se usa un AG de grano grueso tanto
ı
a alto como a bajo nivel. A bajo nivel, la velocidad de migraci´ n o
es mayor y la topolog´a de comunicaciones es mucho m´ s densa
ı a
que a alto nivel. . . . . . . . . . . . . . . . . . . . . . . . . . . . 265
15.8 Un ejemplo de arquitectura SIMD. . . . . . . . . . . . . . . . . . 266
15.9 Un ejemplo de arquitectura MIMD. . . . . . . . . . . . . . . . . 268
15.10Una topolog´a que suele usarse con las arquitecturas MIMD es la
ı
de arbol. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
´ 268
15.11Topolog´a de anillo. . . . . . . . . . . . . . . . . . . . . . . . . .
ı 269
15.12Topolog´a de grafo y de estrella. . . . . . . . . . . . . . . . . . .
ı 270
18
19. Introducci´ n
o
Estas notas de curso son producto de la experiencia de haber impartido clases de
computaci´ n evolutiva a nivel posgrado durante los ultimos cinco a˜ os.
o ´ n
El material contenido en estas p´ ginas ha sido producto de muchas horas de
a
trabajo y esfuerzo y pretenden dar una visi´ n general (si bien no completa) de lo
o
que es la computaci´ n evolutiva y de sus alcances. El objetivo de este material, es
o
servir como apoyo para la ense˜ anza de un curso introductorio a la computaci´ n
n o
evolutiva a nivel maestr´a o doctorado, aunque se requiere obviamente de material
ı
complementario (principalmente referencias bibliogr´ ficas). Por lo dem´ s, estas
a a
notas pretenden ser auto-contenidas, de manera que se haga innecesario consultar
otras fuentes bibliogr´ ficas (introductorias) adicionales.
a
La organizaci´ n de estas notas es la siguiente: en el Cap´tulo 1 se proporcio-
o ı
nan algunos conceptos b´ sicos de an´ lisis de algoritmos y de optimizaci´ n con
a a o
t´ cnicas cl´ sicas. Partiendo de las limitaciones de las t´ cnicas cl´ sicas, se plantea
e a e a
la motivaci´ n para el uso de heur´sticas en problemas de b´ squeda y optimizaci´ n
o ı u o
de alta complejidad.
En el Cap´tulo 2 se hace un r´ pido recorrido hist´ rico de la computaci´ n evo-
ı a o o
lutiva, yendo desde el Lamarckismo hasta las corrientes m´ s modernas, como la
a
din´ mica evolutiva y la programaci´ n gen´ tica.
a o e
El Cap´tulo 3 da un panorama general de los tres grandes paradigmas en com-
ı
putaci´ n evolutiva (la programaci´ n evolutiva, las estrategias evolutivas y el algo-
o o
ritmo gen´ tico), describiendo el algoritmo b´ sico de cada uno de ellos as´ como
e a ı
algunas de sus aplicaciones. En ese cap´tulo tambi´ n se mencionan algunas de las
ı e
cr´ticas de que ha sido objeto la computaci´ n evolutiva (sobre todo, de parte de
ı o
los investigadores de IA simb´ lica).
o
En el Cap´tulo 4 se proporciona una breve terminolog´a biol´ gica, junto con
ı ı o
explicaciones del uso que se da a dichos t´ rminos en computaci´ n evolutiva.
e o
El problema de la representaci´ n, que resulta vital en los algoritmos gen´ ticos,
o e
es tratado en el Cap´tulo 5.
ı
19
20. Las principales t´ cnicas de selecci´ n utilizadas con los algoritmos gen´ ticos
e o e
se estudian en el Cap´tulo 6.
ı
El Cap´tulo 7 se ocupa de las diferentes t´ nicas de cruza utilizadas en los al-
ı e
goritmos gen´ ticos. Adem´ s de estudiar las cruzas para representaci´ n binaria, se
e a o
analizan tambi´ n las variantes existentes para representaci´ n real y de permuta-
e o
ciones.
El operador de mutaci´ n es estudiado en detalle en el Cap´tulo 8. Adem´ s de
o ı a
analizar su uso con representaci´ n real y de permutaciones, se le compara contra
o
la cruza.
El Cap´tulo 9 se ocupa de revisar algunos de los estudios m´ s importantes
ı a
en torno a la forma de ajustar los par´ metros de un algoritmo gen´ tico (sobre
a e
todo, porcentajes de cruza y mutaci´ n y tama˜ o de poblaci´ n). Tambi´ n se dis-
o n o e
cute la auto-adaptaci´ n de par´ metros y sus problemas principales, as´ como otros
o a ı
mecanismos de adaptaci´ n en l´nea tales como la l´ gica difusa y las representa-
o ı o
ciones adaptativas.
Los algoritmos gen´ ticos funcionan como una t´ cnica de b´ squeda u opti-
e e u
mizaci´ n sin restricciones. De tal forma, se hace necesario acoplarle alg´ n mecan-
o u
ismo para incorporar restricciones de todo tipo (lineales, no lineales, igualdad y
desigualdad). En el Cap´tulo 10 se estudian algunas de las propuestas principales
ı
en torno al manejo de restricciones mediante funciones de penalizaci´ n. o
En el Cap´tulo 11 se revisan varios sistemas de software relacionados con
ı
computaci´ n evolutiva (tanto comerciales como de dominio p´ blico).
o u
El Cap´tulo 12 comprende el estudio de algunos de los conceptos te´ ricos m´ s
ı o a
importantes de la computaci´ n evolutiva, incluyendo el teorema de los esquemas,
o
el paralelismo impl´cito, la decepci´ n, el No Free Lunch Theorem y el an´ lisis de
ı o a
convergencia usando cadenas de Markov.
En el Cap´tulo 13 se habla sobre algunos operadores avanzados, tales como
ı
los diploides, la segregaci´ n, traslocaci´ n, duplicacion y borrado.
o o ´
El Cap´tulo 14 habla sobre algunas aplicaciones exitosas de la computaci´ n
ı o
evolutiva en el mundo real.
Con el creciente uso de las computadoras en problemas cada vez m´ s com- a
plejos, se ha popularizado la adopci´ n de esquemas de paralelismo y de c´ mputo
o o
distribuido en la computaci´ n evolutiva. Este tema es precisamente el que se dis-
o
cute en el Cap´tulo 15.
ı
Finalmente, el Cap´tulo 16 discute brevemente algunos de los paradigmas
ı
emergentes dentro de la computaci´ n evolutiva y se concluye hablando breve-
o
mente sobre el futuro de la computaci´ n evolutiva.
o
20
21. Reconocimientos
La elaboraci´ n de estas notas no habr´a sido posible sin la ayuda de la Mat. Ma.
o ı
Margarita Reyes Sierra, quien captur´ mucho de este texto en formato LTEX2ε y
o A
convirti´ mis bosquejos a mano en n´tidas im´ genes en Xfig.
o ı a
Agradezco al Dr. Arturo Hern´ ndez Aguirre sus incontables (y a veces in-
a
terminables) discusiones en torno a diferentes temas, entre los que se incluye la
computaci´ n evolutiva. Sus comentarios constructivos siempre me han resultado
o
de enorme val´a.
ı
Manifiesto tambi´ n mi agradecimiento por la generosa ayuda del Laboratorio
e
Nacional de Inform´ tica Avanzada (LANIA), del CINVESTAV-IPN y de REDII-
a
CONACyT, a quienes se debe en gran parte, haber podido preparar este material
did´ ctico. Doy las gracias muy especialmente a la Dra. Cristina Loyo Varela,
a
Directora General del LANIA, quien siempre me brind´ su apoyo incondicional
o
en todos mis proyectos.
Extiendo tambi´ n un cordial reconocimiento a todos los estudiantes que he
e
tenido a lo largo de mi vida. Ha sido a trav´ s de ellos que me he nutrido de ricas
e
experiencias docentes que han forjado mi actual estilo de ense˜ anza. Gracias a
n
todos por los buenos y, ¿por qu´ no?, tambi´ n por los malos ratos que me hicieron
e e
pasar.
21
23. Cap´tulo 1
ı
Conceptos B´ sicos
a
Antes de aventurarse a tomar un curso de computaci´ n evolutiva (o sobre heu-
o
r´sticas de cualquier otro tipo), es muy importante tener frescos en la memoria
ı
algunos conceptos b´ sicos a fin de poder entender de manera clara la motivaci´ n
a o
para desarrollar y usar heur´sticas.
ı
De tal forma, iniciaremos con un repaso de algunos conceptos fundamentales
de an´ lisis de algoritmos y teor´a de la computaci´ n.
a ı o
1.1 An´ lisis de algoritmos
a
El an´ lisis de algoritmos comprende 2 etapas: el an´ lisis a priori y el an´ lisis a
a a a
posteriori. En el primero de ellos, obtenemos una funci´ n que acota el tiempo
o
de c´ lculo del algoritmo. En el an´ lisis a posteriori lo que hacemos es recolectar
a a
estad´sticas acerca del consumo de tiempo y espacio del algoritmo mientras este
ı ´
se ejecuta [130].
Es importante tener en mente que durante el an´ lisis a priori de un algoritmo,
a
se ignoran los detalles que sean dependientes de la arquitectura de una computa-
dora o de un lenguaje de programaci´ n y se analiza el orden de magnitud de la
o
frecuencia de ejecuci´ n de las instrucciones b´ sicas del algoritmo.
o a
Veamos un ejemplo simple de an´ lisis a priori. Consideremos los 3 segmentos
a
de c´ digo siguientes:
o
(1) a = a + b
(2) for i = 1 to n do
a=a+b
23
24. end for i
(3) for i = 1 to n do
for j = 1 to n do
a=a+b
end for j
end for i
La frecuencia de ejecuci´ n de la sentencia a = a + b es:
o
• 1 para el segmento (1).
• n para el segmento (2).
• n2 para el segmento (3).
Una de las notaciones m´ s usadas para expresar la complejidad de un algo-
a
ritmo es la denominada “O” (big-O, en ingl´ s). Formalmente, la definimos de la
e
siguiente manera:
Definici´ n: f (n) = O(g(n)) si y s´ lo si existen dos constantes positivas c y n0
o o
tales que |f (n)| ≤ c|g(n)| para toda n ≥ n0 .
Supongamos que nos interesa determinar el tiempo de procesamiento (o c´ m- o
puto) de un algoritmo. Dicho tiempo lo denotaremos como f (n). La variable n
puede referirse al n´ mero de entradas o salidas, su suma o la magnitud de una de
u
ellas. Puesto que f (n) depende de la computadora en que se ejecute el algoritmo,
un an´ lisis a priori no ser´ suficiente para determinarlo. Sin embargo, pode-
a a
mos usar un an´ lisis a priori para determinar una g(n) tal que f (n) = O(g(n)).
a
Cuando decimos que un algoritmo tiene un tiempo de c´ mputo O(g(n)), lo que
o
queremos decir es que al ejecutar el algoritmo en una computadora usando los
mismos tipos de datos, pero valores incrementales de n, el tiempo resultante siem-
pre ser´ menor que alg´ n tiempo constante |g(n)|.
a u
Dados dos algoritmos que realicen la misma tarea sobre n entradas, debe resul-
tar obvio que preferiremos al que requiera menos tiempo de ejecuci´ n. Algunos
o
tiempos comunes de los algoritmos son los siguientes:
O(1) < O(log n) < O(n) < O(n log n) < O(n2 ) < O(n3 ) < O(2n )
Algunos algoritmos conocidos y sus complejidades correspondientes en esta
notaci´ n son los siguientes:
o
24
25. 1. Buscar un elemento en una lista no ordenada: O(n)
2. Buscar un elemento en una lista ordenada: O(log n)
3. Quicksort: O(n log n)
4. Calcular el determinante de una matriz: O(n3 )
5. Multiplicaci´ n matricial: O(n2.81 )
o
6. Ordenamiento por el m´ todo de la burbuja (Bubble Sort): O(n2 )
e
Los problemas cuya complejidad est´ acotada por un polinomio (los primeros
a
seis ordenes de magnitud de la jerarqu´a mostrada anteriormente) son los de-
´ ı
nominados problemas P. M´ s detalladamente, podemos decir que un problema
a
pertenece a la clase si puede ser resuelto en tiempo polinomial en una computa-
dora determinista.
El t´ rmino determinista significa que sin importar lo que haga el algoritmo,
e
s´ lo hay una cosa que puede hacer a continuaci´ n (es decir, el paso siguiente se
o o
determina por los pasos anteriores). Los ejemplos de algoritmos conocidos dados
anteriormente, pertenecen todos a la clase P.
Un problema pertenece a la clase NP si puede ser resuelto en tiempo polino-
mial pero usando una computadora no determinista.
Cuando una computadora no determinista es confrontada con varias opciones,
tiene el poder de “adivinar” la correcta (en caso de que esta exista). Una computa-
´
dora no determinista no hace nunca elecciones incorrectas que la hagan regresar a
un estado previo.
Consideremos el siguiente ejemplo de un algoritmo no determinista en el cual
queremos buscar un elemento x en un conjunto de elementos A[1:n], n ≥ 1. Se
quiere determinar un ´ndice j tal que A[j]=x, o j = 0 si x ∈ A.
ı
j = elige [1:n]
if A[j]=x then print(j)
else print(‘0’)
Este algoritmo imprime 0 s´ lo si x ∈ A. Su complejidad es O(1).
o
Obviamente, las computadoras no deterministas no existen en el mundo real.
El no determinismo es una herramienta imaginaria que hace que los problemas
dif´ciles parezcan triviales. Su mayor val´a radica en el hecho de que existe forma
ı ı
25
26. de convertir un algoritmo no determinista a uno determinista, aunque a un costo
computacional que suele ser muy elevado.
Los siguientes puntos son de gran importancia al comparar la clase P contra
la clase NP:
• La clase P contiene problemas que pueden resolverse r´ pidamente.
a
• La clase NP contiene problemas cuya soluci´ n puede verificarse r´ pida-
o a
mente.
• En 1971 se plante´ la pregunta: ¿Es P=NP? Desde entonces, sigue siendo
o
una pregunta abierta para los te´ ricos.
o
• Se cree que P = NP.
Existe otra clase de problemas, denominados NP Completos que resultan de
gran inter´ s en computaci´ n. Un problema pertenece a esta clase si todos los
e o
algoritmos requeridos para resolverlo requieren tiempo exponencial en el peor
caso. En otras, palabras, estos problemas son sumamente dif´ciles de resolver. Un
ı
ejemplo t´pico de un problema NP Completo es el del viajero. Este problema
ı
consiste en encontrar una permutaci´ n que represente el recorrido de una serie
o
de ciudades de tal forma que todas sean visitadas (una sola vez) minimizando
la distancia total viajada. El mejor algoritmo que se conoce para resolver este
problema es O(n2 2n ).
El tama˜ o del espacio de b´ squeda del problema del viajero crece conforme a
n u
la expresi´ n: (n−1)! . Algunos ejemplos de lo que esto significa, son los siguientes:
o 2
• Para n = 10, hay unas 181,000 soluciones posibles.
• Para n = 20, hay unas 10,000,000,000,000,000 soluciones posibles.
• Para n = 50, hay unas 100,000,000,000,000,000,000,000,000,000, 000,000,
000,000,000,000,000,000,000,000,000 soluciones posibles.
Para tener idea de estas magnitudes, basta decir que s´ lo hay 1,000,000,000,
o
000,000,000,000 litros de agua en el planeta.
26
27. 1.2 T´ cnicas Cl´ sicas de Optimizaci´ n
e a o
Existen muchas t´ cnicas cl´ sicas para resolver problemas con ciertas caracter´sticas
e a ı
espec´ficas (por ejemplo, funciones lineales con una o m´ s variables).
ı a
Es importante saber al menos de la existencia de estas tcnicas, pues cuando el
problema por resolverse se adec´ a a ellas, no tiene ning´ n sentido usar heur´sticas.
u u ı
Por ejemplo, para optimizaci´ n lineal, el m´ todo Simplex sigue siendo la
o e
opci´ n m´ s viable.
o a
Para optimizaci´ n no lineal, hay m´ todos directos (p. ej. la b´ squeda aleato-
o e u
ria) y m´ todos no directos (p. ej., el m´ todo del gradiente conjugado) [180].
e e
Uno de los problemas de las t´ cnicas cl´ sicas de optimizaci´ n es que suelen
e a o
requerir informaci´ n que no siempre est´ disponible. Por ejemplo, m´ todos como
o a e
el del gradiente conjugado requieren de la primera derivada de la funci´ n objetivo.
o
Otros, como el de Newton, requieren adem´ s de la segunda derivada. Por tanto, si
a
la funci´ n objetivo no es diferenciable (y en algunos problemas del mundo real, ni
o
siquiera est´ disponible en forma expl´cita), estos m´ todos no pueden aplicarse.
a ı e
A fin de ilustrar la forma en la que operan las t´ cnicas cl´ sicas de optimizaci´ n,
e a o
resolveremos paso por paso un ejemplo sencillo con el m´ todo del descenso emp-
e
inado (steepest descent), el cual fue propuesto originalmente por Cauchy en 1847.
La idea del m´ todo es comenzar de un cierto punto cualquier X1 y luego moverse
e
a lo largo de las direcciones de descenso m´ s empinado hasta encontrar el optimo.
a ´
El algoritmo es el siguiente:
Algoritmo del Descenso Empinado
1. Comenzar con un punto arbitrario X1 . Hacer i = 1.
2. Calcular el gradiente ∇fi .
3. Encontrar la direcci´ n de b´ squeda Si , definida como:
o u
Si = −∇fi = −∇f (xi ) (1.1)
4. Determinar la longitud optima de incremento λ∗ en la direcci´ n Si , y hacer:
´ i o
Xi+1 = Xi + λ∗ Si = Xi − λ∗ ∇fi
i i (1.2)
27
28. 5. Checar la optimalidad de Xi+1 . Si el punto es optimo, detenerse. De lo
´
contrario, ir al paso 6.
6. Hacer i = i + 1. Ir al paso 2.
Ejemplo:
Min f (x1 , x2 ) = x1 − x2 + 2x1 + 2x1 x2 + x2
2
2
usando el punto inicial:
0
X1 =
0
Para iniciar la primera iteraci´ n, necesitamos calcular el gradiente de la funci´ n:
o o
∂f /∂x1 1 + 4x1 + 2x2
∇f = =
∂f /∂x2 −1 + 2x1 + 2x2
1
∇f1 = ∇f (X1 ) =
−1
Calcular la direcci´ n de b´ squeda:
o u
−1
S1 = −∇f1 =
1
Determinar λ∗ :
1
X2 = X1 + λ ∗ S 1
1
f (X1 + λ∗ S1 ) = f (−λ1 , λ1 ), lo cual se obtiene de:
1
0 −1
+ λ1
0 1
Y sabemos que:
f (−λ1 , λ1 ) = −λ1 − λ1 + 2(−λ1 )2 + 2(−λ1 )(λ1 ) + λ2 =
1
λ2 − 2λ1
1
28
29. Para hallar λ∗ , debemos derivar esta expresi´ n con respecto a λ1 e igualar el
1 o
resultado con cero:
df /λ1 = 2λ1 − 2 = 0
de donde obtenemos: λ∗ = 1.
1
Ahora i = 2, y:
0 −1 −1
X2 = +1 =
0 1 1
Chequemos ahora la optimalidad de esta soluci´ n:
o
1−4+2 −1
∇f2 = ∇f (X2 ) = =
−1 − 2 + 2 −1
0
Como ∇f2 = entonces tenemos que continuar con una iteraci´ n m´ s:
o a
0
1
S2 =
1
Calculemos ahora λ∗ a partir de:
2
−1 1
+ λ2
1 1
de donde obtenemos:
f (−1 + λ2 , 1 + λ2 ) = −1 + λ2 − (1 + λ2 ) + 2(−1 + λ2 )2 + 2(−1 + λ2 )(1 +
λ2 ) + (1 + λ2 )2 = 5λ2 − 2λ2 − 1
2
Para hallar λ∗ :
2
df /dλ2 = 10λ2 − 2 = 0
de donde: λ2 = 1/5 = 0.2
Por lo que:
29
30. X3 = X2 + λ ∗ S 2
2
−1 1 1 −1 + 15
−0.8
X3 = + = =
1 5 1 1+ 1
5
1.2
Procedemos nuevamente a checar optimalidad de esta soluci´ n:
o
1 + 4(−0.8) + 2(1.2) 0.2
∇f3 = =
−1 + 2(−0.8) + 2(1.2) −0.2
0
Como ∇f3 = tenemos que seguir iterando.
0
M´ todo de Fletcher-Reeves (Gradiente Conjugado)
e
Propuesto originalmente por Hestenes & Stiefel en 1952, como un m´ todo
e
para resolver sistemas de ecuaciones lineales derivadas de las condiciones esta-
cionarias de una cuadr´ tica. Puede verse como una variante del m´ todo del “de-
a e
scenso empinado”, en la cual se usa el gradiente de una funci´ n para determinar
o
la direcci´ n m´ s prometedora de b´ squeda. El algoritmo es el siguiente:
o a u
1. Iniciar con un punto arbitrario X1 .
2. Calcular la direcci´ n de b´ squeda:
o u
S1 = −∇f (X1 ) = ∇f1
3. Obtener X2 usando:
X2 = X1 + λ ∗ S 1
1
donde λ∗ es el paso optimo de movimiento en la direcci´ n S1 . Hacer i = 2
1 ´ o
y proceder al paso siguiente.
4. Obtener ∇fi = ∇f (Xi ), y hacer:
|∇fi |2
Si = −∇fi + S
|∇fi−1 |2 i−1
5. Calcular λ∗ y obtener el nuevo punto:
i
Xi+1 = Xi + λ∗ Si
i
30
31. 6. Evaluar optimalidad de Xi+1 . Si Xi+1 es el optimo, detener el proceso. De
´
lo contrario i = i + 1 y regresar al paso 4.
Ejemplo:
Min f (x1 , x2 ) = x1 − x2 + 2x2 + 2x1 x2 + x2
1 2
usando el punto inicial:
0
X1 =
0
Iteraci´ n 1
o
∂f /∂x1 1 + 4x1 2x2
∇f = =
∂f /∂x2 −1 + 2x1 + 2x2
1
∇f1 = ∇f (X1 ) =
−1
−1
La direcci´ n de b´ squeda es: S1 = −∇f1 =
o u .
1
Para obtener λ∗ , debemos minimizar f (X1 + λ1 S1 ) con respecto a λ1 . Por
1
tanto:
0 −1
X1 + λ 1 S 1 = + λ1
0 1
f (X1 + λ1 S1 ) = f (−λ1 , λ1 ) =
−λ1 − λ1 + 2(−λ1 )2 + 2(−λ1 )(λ1 ) + λ2 =
1
= −2λ1 + 2λ2 − 2λ2 + λ2 = λ2 − 2λ1
1 1 1 1
df /dλ1 = 2λ1 − 2 = 0
λ∗ = 1
1
0 −1 −1
X2 = X1 + λ ∗ S 1 =
1 +1 =
0 1 1
31
33. 0
∇f3 =
0
|∇f3 |2
S3 = −∇f3 + S
|∇f2 |2 2
0 0 0
= + 2
0 2
0
S3 =
0
Al no poderse reducir m´ s f , podemos decir que X3 es la soluci´ n optima.
a o ´
x∗ = −1, x∗ = 1.5
1 2
Existen tambi´ n t´ cnicas que construyen parcialmente una soluci´ n a un prob-
e e o
lema. Por ejemplo, la programaci´ n din´ mica y el m´ todo de ramificaci´ n y
o a e o
b´ squeda (branch & bound).
u
Cuando enfrentamos un cierto problema de optimizaci´ n, si la funci´ n a op-
o o
timizarse se encuentra definida en forma algebraica, es importante intentar re-
solverla primero con t´ cnicas cl´ sicas, antes de utilizar cualquier heur´stica.
e a ı
1.3 T´ cnicas heur´sticas
e ı
Hasta ahora, debi´ haber quedado claro que existen problemas que no pueden
o
resolverse usando un algoritmo que requiera tiempo polinomial. De hecho, en
muchas aplicaciones pr´ cticas, no podemos siquiera decir si existe una soluci´ n
a o
eficiente.
Asimismo, hay muchos problemas para los cuales el mejor algoritmo que se
conoce requiere tiempo exponencial.
Cuando enfrentamos espacios de b´ squeda tan grandes como en el caso del
u
problema del viajero, y que adem´ s los algoritmos m´ s eficientes que existen para
a a
resolver el problema requieren tiempo exponencial, resulta obvio que las t´ cnicas
e
cl´ sicas de b´ squeda y optimizaci´ n son insuficientes. Es entonces cuando recur-
a u o
rimos a las “heur´sticas”.
ı
La palabra “heur´stica” se deriva del griego heuriskein, que significa “encon-
ı
trar” o “descubrir”.
El significado del t´ rmino ha variado hist´ ricamente. Algunos han usado el
e o
t´ rmino como un ant´ nimo de “algor´tmico”. Por ejemplo, Newell et al. [173]
e o ı
dicen:
33
34. A un proceso que puede resolver un cierto problema, pero que no
ofrece ninguna garant´a de lograrlo, se le denomina una ‘heur´stica’
ı ı
para ese problema.
Las heur´sticas fueron un area predominante en los or´genes de la Inteligencia
ı ´ ı
Artificial.
Actualmente, el t´ rmino suele usarse como un adjetivo, refiri´ ndose a cualquier
e e
t´ cnica que mejore el desempe˜ o en promedio de la soluci´ n de un problema,
e n o
aunque no mejore necesariamente el desempe˜ o en el peor caso [197].
n
Una definici´ n m´ s precisa y adecuada para los fines de este curso es la pro-
o a
porcionada por Reeves [186]:
Una heur´stica es una t´ cnica que busca soluciones buenas (es decir,
ı e
casi optimas) a un costo computacional razonable, aunque sin garan-
´
tizar factibilidad u optimalidad de las mismas. En algunos casos, ni
siquiera puede determinar qu´ tan cerca del optimo se encuentra una
e ´
soluci´ n factible en particular.
o
Algunos ejemplos de t´ cnicas heur´sticas son los siguientes:
e ı
• B´ squeda Tab´
u u
• Recocido Simulado
• Escalando la Colina
´ ´
La busqueda tabu [102] es realmente una meta-heur´stica, porque es un pro-
ı
cedimiento que debe acoplarse a otra t´ cnica, ya que no funciona por s´ sola.
e ı
La b´ squeda tab´ usa una “memoria” para guiar la b´ squeda, de tal forma que
u u u
algunas soluciones examinadas recientemente son “memorizadas” y se vuelven
tab´ (prohibidas) al tomar decisiones acerca del siguiente punto de b´ squeda. La
u u
b´ squeda tab´ es determinista, aunque se le pueden agregar elementos proba-
u u
bil´sticos.
ı
El recocido simulado [142] est´ basado en el enfriamiento de los cristales. El
a
algoritmo requiere de una temperatura inicial, una final y una funci´ n de variaci´ n
o o
de la temperatura. Dicha funci´ n de variaci´ n es crucial para el buen desempe˜ o
o o n
del algoritmo y su definici´ n es, por tanto, sumamente importante. Este es un
o
algoritmo probabil´stico de b´ squeda local.
ı u
La t´ cnica escalando la colina se aplica a un punto a la vez (es decir, es
e
una t´ cnica local). A partir de un punto, se generan varios estados posibles y
e
34
35. F
F
Figura 1.1: Dos ejemplos de conjuntos convexos.
se selecciona el mejor de ellos. El algoritmo no tiene retroceso ni lleva ning´ n
u
tipo de registro hist´ rico (aunque estos y otros aditamentos son susceptibles de
o ´
ser incorporados). El algoritmo puede quedar atrapado f´ cilmente en optimos
a ´
locales. Asimismo, el algoritmo es determinista.
1.4 Conceptos Importantes
Comenzaremos por definir convexidad. El conjunto F es convexo si para toda
a1 , a2 ∈ F y para toda θ ∈ [0, 1]:
¯
f(θa1 + (1 − θ)a2 ) ≤ θf (a1 ) + (1 − θ)f (a2 ) (1.3)
En otras palabras, F es convexo si para dos puntos cualquiera a1 y a2 en el
conjunto, el segmento rectil´neo que une estos puntos est´ tambi´ n dentro del
ı a e
conjunto. De tal forma, los conjuntos mostrados en la figura 1.1 son convexos y
los mostrados en la figura 1.2 no lo son.
El objetivo principal de cualquier t´ cnica de optimizaci´ n es encontrar el
e o
optimo (o los optimos) globales de cualquier problema. En matem´ ticas, existe
´ ´ a
un area que se ocupa de desarrollar los formalismos que nos permitan garantizar
´
la convergencia de un m´ todo hacia el optimo global de un problema. Apropiada-
e ´
mente, se denomina optimizaci´ n global [131].
o
Desgraciadamente, s´ lo en algunos casos limitados, puede garantizarse con-
o
vergencia hacia el optimo global. Por ejemplo, para problemas con espacios de
´
b´ squeda convexos, las condiciones de Kuhn-Tucker son necesarias y suficientes
u
35
36. F F
Figura 1.2: Dos ejemplos de conjuntos no convexos.
para garantizar optimalidad global de un punto.
En problemas de optimizaci´ n no lineal, las condiciones de Kuhn-Tucker no
o
son suficientes para garantizar optimalidad global. De hecho, todas las t´ cnicas
e
usadas para optimizaci´ n no lineal pueden localizar cuando mucho optimos lo-
o ´
cales, pero no puede garantizarse convergencia al optimo global a menos que se
´
usen t´ cnicas exhaustivas o que se consideren tiempos infinitos de convergencia.
e
Existen muchos tipos de problemas de optimizaci´ n, pero los que nos intere-
o
san m´ s para los fines de este curso, son de los de optimizaci´ n num´ rica, que
a o e
pueden definirse de la siguiente manera:
Minimizar f (x)
sujeta a:
gi (x) ≤ 0, i = 1, . . . , p
hj (x) = 0, j = 1, . . . , n
donde: x son las variables de decisi´ n del problema, gi (x) son las restric-
o
ciones de desigualdad, y hj (x) son las restricciones de igualdad. Asimismo,
36
37. S
F
F
F
Figura 1.3: Representaci´ n gr´ fica de la zona factible (denotada con F ) de un
o a
problema. Advierta que en este caso la zona factible es disjunta.
f (x) es la funci´ n objetivo del problema (la que queremos optimizar).
o
A las restricciones de igualdad y desigualdad expresadas algebraicamente, se
les denomina “restricciones expl´citas”. En algunos problemas, existen tambi´ n
ı e
“restricciones impl´citas”, relacionadas sobre todo con las caracter´sticas del prob-
ı ı
lema. Por ejemplo, si decimos:
10 ≤ x1 ≤ 20
estamos definiendo que el rango de una variable de decisi´ n debe estar con-
o
tenido dentro de un cierto intervalo. De tal forma, estamos “restringiendo” el tipo
de soluciones que se considerar´ n como v´ lidas.
a a
Todas las soluciones a un problema que satisfagan las restricciones existentes
(de cualquier tipo), se consideran ubicadas dentro de la zona factible. De tal
forma, podemos decir que el espacio de b´ squeda de un problema se divide en la
u
regin (o zona) factible y la no factible. La figura 1.3 ilustra la diferencia entre la
zona factible y no factible de un problema
Para concluir este primer cap´tulo, mencionaremos que existe una clase es-
ı
pecial de problemas que tambi´ n ser´ n de inter´ s para este curso, en los cuales
e a e
37
38. las variables de decisi´ n son discretas y las soluciones suelen presentarse en la
o
forma de permutaciones. A estos problemas se les denomina de optimizaci´ n o
combinatoria (p. ej. el problema del viajero).
1.5 Problemas propuestos
1. Para los siguientes pares de funciones, determine el valor entero m´ s peque˜ o
a n
de n ≥ 0 para el cual la primera funci´ n se haga mayor o igual a la segunda
o
funci´ n (la de la derecha). En cada caso, muestre la forma en que obtuvo el
o
valor de n:
a) n2 , 10n
b) 2n , 2n3
c) n2 /log2 n, n(log2 n)2
d) n3 /2, n2.81
2. Busque en un libro de m´ todos num´ ricos informaci´ n sobre alguna de las
e e o
siguientes t´ cnicas para resolver ecuaciones trascendentes de una sola vari-
e
able (elija s´ lo uno): Bisecci´ n (o Bolzano), Newton-Raphson, Regla Falsa
o o
o Secante. Se recomienda consultar el siguiente libro:
Richard L. Burden y J. Douglas Faires, An´ lisis Num´ rico, 6a. Edici´ n, In-
a e o
ternational Thompson Editores, 1998.
a) Usando como base el seudo-c´ digo del m´ todo, implem´ ntelo en C/C++
o e e
(la funci´ n a resolverse puede proporcionarse directamente dentro del c´ digo
o o
del programa). Incluya el c´ digo fuente en su tarea.
o
b) Dos escaleras se cruzan en un pasillo, tal y como se muestra en la figura 1.4.
Cada escalera est´ colocada de la base de una pared a alg´ n punto de la
a u
pared opuesta. Las escaleras se cruzan a una altura H arriba del pavimento.
Dado que las longitudes de las escaleras son x1 = 20 m y x2 = 30 m, y
que H = 8 m, encontrar A, que es el ancho del pasillo, usando el programa
escrito en el inciso anterior (una soluci´ n real es suficiente). Imprima las
o
38
39. x2
x1
H
A
Figura 1.4: Escaleras entrecruzadas del problema 2.b.
iteraciones efectuadas por su programa al resolver este problema.
Bonificaci´ n. El problema del inciso b) tiene m´ s de una soluci´ n real. En-
o a o
cuentre al menos una soluci´ n real m´ s (distinta de la reportada en el inciso
o a
anterior). Adicionalmente, encuentre una soluci´ n real que sea v´ lida pero
o a
que no tenga sentido reportar dada la interpretaci´ n f´sica del problema.
o ı
Discuta brevemente acerca de esto.
3. Muestre las 2 primeras iteraciones del m´ todo de ascenso empinado al min-
e
imizar f = 2x2 + x2 usando el punto inicial (1, 2).
1 2
4. Lea el cap´tulo 1 del siguiente libro (las fotocopias se proporcionar´ n en
ı a
clase) para resolver las preguntas de esta secci´ n:
o
Zbigniew Michalewicz & David B. Fogel, How to Solve It: Modern Heuris-
tics, Springer, Berlin, 2000.
39
40. 1. Mencione al menos 2 razones por las cuales un problema del mundo real
puede no ser resuelto f´ cilmente. NO USE ninguna de las razones enumer-
a
adas en la p´ gina 11 del cap´tulo proporcionado.
a ı
2. Supongamos que la optimizaci´ n de una funci´ n f requiere de 10 vari-
o o
ables de decisi´ n xi (i = 1, . . . , 10), cada una de las cuales tiene el rango:
o
−50 ≤ xi ≤ 50.
a) Si xi puede tomar s´ lo valores enteros, ¿cu´ l es el tama˜ o del espacio de
o a n
b´ squeda de este problema?
u
b) Si xi puede tomar valores reales y usaremos una precisi´ n de ocho lu-
o
gares decimales, ¿cu´ l es el tama˜ o del espacio de b´ squeda del problema?
a n u
3. Defina las restricciones r´gidas (hard constraints) y las restricciones flex-
ı
ibles (soft constraints) con sus propias palabras. Comp´ relas entre s´.
a ı
40