Está en la página 1de 21

Traducido del inglés al español - www.onlinedoctranslator.

com

Observe el gran parecido entre Hill-Climbing y Gradient Ascent. La única diferencia real es que
Hill-Climbing es más generalRetocar En cambio, la operación debe depender de un estocástico
enfoque (parcialmente aleatorio) para buscar mejores soluciones candidatas. A veces
encuentra peores cerca, a veces encuentra mejores.
Podemos hacer que este algoritmo sea un poco más agresivo: crear norte "retoques ”a una solución candidata
de una sola vez, y luego posiblemente adopte la mejor. Este algoritmo modificado se llamaAscenso más empinado
Escalada de colinas, porque al muestrear todo alrededor de la solución candidata original y luego elegir la mejor,
esencialmente estamos probando el gradiente y avanzando directamente hacia él.

Algoritmo 5 Ascenso más empinado Escalada de colinas

1: norte ← número de ajustes deseados para muestrear el gradiente

2: S ← alguna solución candidata inicial


3: repetir
4: R ← Tweak (Copiar (S))
5: por n - 1 veces hacer
6: W ← Tweak (Copiar (S))
7: si Calidad(W) > Calidad(R) luego
8: R ← W
9: si Calidad(R) > Calidad(S) luego
10: S ← R
11: Hasta que S es la solución ideal o nos hemos quedado sin tiempo
12: regreso S

Una variación popular, que yo doy Ascenso más empinado Escalada de colinas con reemplazo, es no
molestarse en comparar R para S: en su lugar, solo reemplazamos S directamente con R. Por supuesto, esto corre el riesgo
de perder nuestra mejor solución de la ejecución, por lo que aumentaremos el algoritmo para mantener la solución mejor
descubierta hasta ahora escondida, en una variable de reserva llamadaMejor. Al final de la carrera, volvemosMejor. En casi
todos los algoritmos futuros usaremos el almacenamiento enMejor tema, ¡así que acostúmbrate a verlo!

Algoritmo 6 Ascenso más empinado Escalada de colinas con reemplazo


1: norte ← número de ajustes deseados para muestrear el gradiente

2: S← alguna solución candidata inicial


3: Mejor ← S
4: repetir
5: R ← Tweak (Copiar (S))
6: por n - 1 veces hacer
7: W ← Tweak (Copiar (S))
8: si Calidad(W) > Calidad(R) luego
9: R ← W
10: S ← R
11: si Calidad(S) > Calidad(Mejor) luego
12: Mejor ← S
13: Hasta que Mejor es la solución ideal o nos hemos quedado sin tiempo
14: regreso Mejor

18
2.1.1 El significado de Retocar

La inicialización, Copiar, retocar, y (en menor medida) las funciones de evaluación de la aptitud definen
colectivamente la representación de su solución candidata. Juntos estipulan de qué se compone su
solución candidata y cómo funciona.
¿Cómo sería una solución candidata? Podría ser un vector; o una lista de objetos de longitud
arbitraria; o un conjunto desordenado o colección de objetos; o un árbol; o un gráfico. O cualquier
combinación de estos. Todo lo que parezca apropiado para su problema. Si puede crear las cuatro
funciones anteriores de manera razonable, está en el negocio.
Una representación simple y común para las soluciones candidatas, a la que nos ceñiremos por ahora, es la
misma que se usa en los métodos de gradiente: a fivector de longitud fija de números con valores reales.
Crear un vector aleatorio de este tipo es fácil: simplemente elija números aleatorios dentro de los límites elegidos. Si
los límites sonmin y max inclusive, y la longitud del vector es l, podríamos hacer esto:

Algoritmo 7 Genere un vector aleatorio de valor real


1: min ← valor mínimo deseado del elemento del vector
2: max ← valor máximo deseado del elemento del vector

3: ~v ← un nuevo vector 〈v1, v2...vl〉


4: por I de 1 a l hacer
5: vI ← número aleatorio elegido uniformemente entre min y max inclusivo
6: regreso ~v

Para Retocar un vector podríamos (como una de las muchas posibilidades) agregar una pequeña cantidad de ruido
aleatorio a cada número: de acuerdo con nuestra definición actual de Retocar, asumamos por ahora que este ruido no es
mayor que un valor pequeño. A continuación, se muestra una forma sencilla de agregar ruido aleatorio delimitado y
distribuido uniformemente a un vector. Para cada ranura del vector, si se lanza una moneda de probabilidadpag sale cara,
encontramos un ruido aleatorio uniforme acotado para agregar al número en esa ranura. En la mayoría de los casos
mantenemospag = 1.

Algoritmo 8 Convolución uniforme limitada


1: ~v ← vector 〈v1, v2...vl〉 ser convolucionado
2: pag ← probabilidad de agregar ruido a un elemento en el vector . A menudo pag = 1

3: r ← rango medio de ruido uniforme


4: min ← valor mínimo deseado del elemento del vector
5: max ← valor máximo deseado del elemento del vector

6: por I de 1 a l hacer
7: si pag ≥ número aleatorio elegido uniformemente de 0.0 a 1.0 luego
8: repetir
9: norte ← número aleatorio elegido uniformemente de -r para r inclusivo
10: Hasta que min ≤ vI + norte ≤ max v
11: I ← vI + norte

12: regreso ~v

19
Ahora tenemos una perilla que podemos girar: r, el tamaño del límite en Retocar. Si el tamaño es muy pequeño,
entonces Hill-Climbing marchará hasta una colina local y no podrá dar el salto a la siguiente colina porque el límite es
demasiado pequeño para que pueda saltar tan lejos. Una vez que esté en la cima de una colina, donde sea que salte
será peor que donde está ahora, así que se queda quieto. Además, la velocidad a la que sube la colina estará limitada
por su pequeño tamaño. Por otro lado, si el tamaño es grande, Hill-Climbing rebotará mucho. Es importante destacar
que cuando está cerca de la cima de una colina, tendrá dificultades para converger al pico, ya que la mayoría de sus
movimientos serán tan grandes como para sobrepasar el pico.
Así, los tamaños pequeños del límite se mueven lentamente y quedan atrapados en los óptimos locales; y los
tamaños grandes en el límite rebotan demasiado frenéticamente y no pueden converger rápidamente para afinar la
parte superior de los picos. Observe cuán similar es esto aα utilizado en Gradient Ascent. Esta perilla es una forma de
controlar el grado deExploración versus explotación en nuestro Hill-Climber. Los algoritmos de optimización que
realizan mejoras en gran medida locales sonexplotando el gradiente local, y se cree que los algoritmos que en su
mayoría deambulan al azar explorar el espacio. Como regla general:igual que utilizar un algoritmo altamente
explotador (es más rápido), pero cuanto más "feo" sea el espacio, más no tendrá más remedio que utilizar un
algoritmo más exploratorio.

2.2 Algoritmos de optimización global de un solo estado

A algoritmo de optimización global es uno que, si lo ejecutamos el tiempo suficiente, finalmente find el óptimo
global. Casi siempre, la forma en que se hace es garantizando que, en el límite, se visitarán todas las ubicaciones en
el espacio de búsqueda. Los algoritmos de un solo estado que hemos visto hasta ahora no pueden garantizar esto.
Esto se debe a nuestra definición (por el momento) deRetocar: para "hacer un cambio pequeño, limitado, pero
aleatorio". Retocar nunca haría grandes cambios. Si estamos atrapados en un óptimo local suficientemente amplio,
Retocar puede que no sea lo suficientemente fuerte como para sacarnos de ella. Por lo tanto, la
los algoritmos hasta ahora han sido algoritmos de optimización local.
En su lugar, hay muchas formas de construir un algoritmo de optimización global. Empecemos con el
el más simple posible: Búsqueda aleatoria.

Algoritmo 9 Búsqueda aleatoria


1: Mejor ← alguna solución candidata aleatoria inicial
2: repetir
3: S ← una solución candidata aleatoria
4: si Calidad(S) > Calidad(Mejor) luego
5: Mejor ← S
6: Hasta que Mejor es la solución ideal o nos hemos quedado sin tiempo
7: regreso Mejor

La búsqueda aleatoria es extrema en exploración (y optimización global); en contraste, Hill-Climbing


(Algoritmo 4), conRetocar configurado para hacer cambios muy pequeños y nunca hacer grandes, puede verse
como el extremo en la explotación (y la optimización local). Pero hay formas de lograr una explotación
razonable y aún tener un algoritmo global. Considere la siguiente técnica popular, llamadaEscalada con
reinicios aleatorios, a medio camino entre los dos. Hacemos Hill-Climbing durante un cierto período de
tiempo aleatorio. Luego, cuando se acabe el tiempo, comenzamos de nuevo con una nueva ubicación aleatoria
y volvemos a hacer Hill-Climbing durante un período de tiempo aleatorio diferente.7 Etcétera. El algoritmo:

7Compare con Gradient Ascent with Restarts (Algoritmo 3) y considere por qué estamos haciendo reinicios aleatorios ahora en lugar de reinicios
basados en gradientes. ¿Cómo sabemos que ahora estamos en la cima de una colina?

20
Unimodal Aguja en un pajar

Ruidoso Engañoso
(o "montañoso" o "rocoso")

Figura 6 Cuatro funciones de calidad de ejemplo.

Algoritmo 10 Escalada con reinicios aleatorios


1: T ← distribución de posibles intervalos de tiempo

2: S ← alguna solución candidata aleatoria inicial


3: Mejor ← S
4: repetir
5: tiempo ← tiempo aleatorio en el futuro cercano, elegido de T
6: repetir
7: R ← Tweak (Copiar (S))
8: si Calidad(R) > Calidad(S) luego
9: S ← R
10: Hasta que S es la solución ideal, o tiempo ha terminado, o se nos ha agotado el tiempo total
11: si Calidad(S) > Calidad(Mejor) luego
12: Mejor ← S
13: S ← alguna solución candidata aleatoria
14: Hasta que Mejor es la solución ideal o nos hemos quedado sin tiempo total
15: regreso Mejor

Si los intervalos de tiempo elegidos al azar son generalmente extremadamente largos, este algoritmo es básicamente un gran
escalador de colinas. Del mismo modo, si los intervalos son muy cortos, básicamente estamos haciendo una búsqueda aleatoria
(reiniciando a nuevas ubicaciones aleatorias cada vez). Las longitudes de intervalo moderadas abarcan toda la gama entre los dos.
Eso es bueno, ¿verdad?
Eso depende. Considere la Figura 6. La primera figura, etiquetadaUnimodal, es una situación en la que Hill-
La escalada es casi óptima y la búsqueda aleatoria es una muy mala elección. Pero para la figura
etiquetadaRuidoso, Hill-Climbing es bastante malo; y, de hecho, se espera que la búsqueda aleatoria

21
tan bien como puedas (sin saber nada sobre las funciones de antemano). La diferencia es que en
Unimodal Existe una fuerte relación entre la distancia (a lo largo del X eje) de dos soluciones candidatas
y su relación en calidad: las soluciones similares son generalmente similares en calidad y las soluciones
diferentes no tienen ninguna relación per se. En elRuidoso situación, no existe una relación como esta:
incluso las soluciones similares tienen una calidad muy diferente. Esto a menudo se conoce como el
suavidad criterio para que la búsqueda local sea efectiva.
Sin embargo, esto no es suficiente. Considere la figura etiquetadaAguja en un pajar, para el cual Random
La búsqueda es la única forma real de hacerlo, y Hill-Climbing es bastante pobre. ¿Cuál es la diferencia entre
esto yUnimodal? Después de todo,Aguja en un pajar es bastante suave. Para que la búsqueda local sea
efectiva debe haber ungradiente informativo que generalmente conduce a las mejores soluciones. De hecho,
puede hacer muchopoco informativo ¡Pendientes para las que la escalada es espectacularmente mala! En la
figura etiquetadaEngañoso, Hill-Climbing no solo no encontrará fácilmente el óptimo, sino que también
alejarse de lo óptimo.
Por lo tanto, existen algunos tipos de problemas en los que es mejor realizar pequeños cambios codiciosos a
nivel local; y otros problemas en los que es mejor realizar cambios grandes, casi aleatorios. Los algoritmos de
búsqueda global abarcan esta gama, y lo hemos visto antes:Exploración versus explotación. Una vez más, como
regla general:igual que utilizar un algoritmo altamente explotador (es más rápido), pero cuanto más "feo" sea el
espacio, más no tendrá más remedio que utilizar un algoritmo más exploratorio.
Aquí hay algunas formas de crear un algoritmo de búsqueda global, además de enfoques para ajustar la exploración
frente a la explotación dentro de ese algoritmo:

• Ajustar el procedimiento de modificación Retocar ocasionalmente realiza cambios grandes y aleatorios.

Por qué esto es global Si ejecuta el algoritmo el tiempo suficiente, esta aleatoriedad causará Retocar
para eventualmente probar todas las soluciones posibles.

Exploración versus explotación Cuanto más grandes, cambios aleatorios, más exploración.

• Ajustar el procedimiento de selección Cambie el algoritmo para que pueda bajar colinas al
menos parte del tiempo.
Por qué esto es global Si ejecuta el algoritmo el tiempo suficiente, bajará suficientes colinas para que
eventualmente encuentre la colina correcta para subir.

Exploración versus explotación Cuanto más a menudo bajes colinas, más exploración.

• Ir a algo nuevo De vez en cuando, comience desde una nueva ubicación.


Por qué esto es global Si prueba suficientes ubicaciones nuevas, eventualmente llegará a una colina que tiene el pico
más alto.

Exploración versus explotación Cuanto más a menudo reinicie, más exploración tendrá.

• Utilice una muestra grande Pruebe muchas soluciones candidatas en paralelo.

Por qué esto es global Con suficientes soluciones candidatas en paralelo, es probable que una de ellas esté en
el pico más alto.

Exploración versus explotación Más soluciones candidatas paralelas, más exploración.

Veamos algunos optimizadores globales adicionales. Nos centraremos en lo que estoy llamandoun solo estado
optimizadores que solo mantienen alrededor de una solución candidata a la vez. Es decir: ninguna muestra grande.

22
2.3 Ajuste del procedimiento de modificación: (1 + 1), (1+λ), y 1, λ)

Estos tres algoritmos de nombres extraños son formas de nuestros procedimientos de escalada con
variaciones del Retocar operación para garantizar la optimización global. En realidad, son casos degenerados
del más general (µ, λ) y (µ + λ) algoritmos evolutivos discutidos más adelante (en la Sección 3.1).
El objetivo es simple: construir un Retocar operación que tiende para modificar en pequeñas formas pero
de vez en cuando realiza cambios más importantes, y pueden realizar cualquier cambio posible. En su mayoría escalaremos colinas,
pero también tendremos la capacidad de, ocasionalmente, saltar lo suficiente como para aterrizar en otros picos. Y existe una
posibilidad, por pequeña que sea, de que el escalador tenga suerte yRetocar aterrizará justo en el óptimo.
Por ejemplo, imagina que volvemos a representar soluciones
en forma de vectores de longitud fija de números reales.
5
Anteriormente nuestro enfoque deRetocaring vectores fue
Convolución Uniforme Acotada (Algoritmo 8). La palabra clave es 4

encerrado: requería que eligieras entre ser lo suficientemente


3
pequeño para afinar los picos locales y ser lo suficientemente
grande para escapar de los óptimos locales. Pero unGaussiano8 2

(o Normal, o curva de campana) distribución norte(µ, σ2) 1

te permite hacer ambas cosas: normalmente genera números


0
pequeños, pero a veces genera números grandes. A menos que esté -1 - 0,5 0 0,5 1

acotado, una distribución gaussiana seráde vez en cuando hacen Figura 7 Tres distribuciones normales o gaussianas
números muy grandes de hecho. La distribución requiere dos norte(µ, σ2) con la media µ = 0 y la varianza
σ2 ajustado a σ2 = 0,005: ——, σ2 = 0.02: - - -, y
parámetros: la mediaµ (generalmente 0) y varianza σ2. El grado en
σ2 = 0,1: - - - -.
que enfatizamos los números pequeños sobre los grandes.
se puede controlar simplemente cambiando la varianza σ2 de la distribución.
Podemos hacer esto agregando a cada número en el vector algo de ruido aleatorio bajo una distribución gaussiana con
una media µ = 0. Esto se llama Convolución gaussiana.9 La mayor parte del ruido estará cerca de 0, por lo que los valores
vectoriales no cambiarán mucho. Pero los valores ocasionales pueden ser bastante elevados.

Algoritmo 11 Convolución gaussiana


1: ~v← vector 〈v1, v2...vl〉 ser convolucionado
2: pag ← probabilidad de agregar ruido a un elemento en el vector . A menudo pag = 1

3: σ2 ← varianza de la distribución normal para convolucionar con . Normal = Gaussiano


4: min ← valor mínimo deseado del elemento del vector
5: max ← valor máximo deseado del elemento del vector

6: por I de 1 a l hacer
7: si pag ≥ número aleatorio elegido uniformemente de 0.0 a 1.0 luego
8: repetir
9: norte ← número aleatorio elegido de la distribución normal norte(0, σ2)
10: Hasta que min ≤ vI + norte ≤ max v
11: I ← vI + norte

12: regreso ~v

8Karl Friedrich Gauss, 1777–1855, niño genio, físico y posiblemente el matemático más importante de todos los tiempos.
9Un competidor popular con convolución gaussiana es mutación polinomial, de Kalyanmoy Deb y Samir Agrawal,
1999, Un enfoque de penalización niched para el manejo de restricciones en algoritmos genéticos, en Actas de la Conferencia Internacional
sobre Redes Neuronales Artificiales y Algoritmos Genéticos, páginas 235–243, Springer. Advertencia: la mutación polinomial tiene muchas
variantes. Uno popular es de Kalyanmoy Deb, 2001,Optimización multiobjetivo mediante algoritmos evolutivos, Wiley.

23
(1 + 1) es el nombre que le damos a la escalada básica (algoritmo 4) con esta probabilidad modificada
Retocar. (1+λ) es el nombre que le damos a un ascenso más empinado-escalada (algoritmo
5). Y(1, λ) es el nombre que le damos al ascenso más empinado con reemplazo modificado (algoritmo 6). Estos
nombres pueden parecer crípticos ahora, pero tendrán más sentido más adelante (en la Sección 3.1).
Resulta que la convolución gaussiana no nos da una sola
perilla nueva (σ2) para ajustar la exploración frente a la Ruido en Retocar
explotación, pero dos perillas. Considere el algoritmo de Bajo alto
ascenso más empinado-escalada con reemplazo (algoritmo
Exploratorio

Muestras
Pocos
6), donde el valornorte especificó cuántos hijos se generan a

partir de la solución candidata principal a través de Retocar.
Muchos explotadores
En la versión "global" de este algoritmo, (1, λ), El valor de norte
interactúa con σ2 de una manera importante: si σ2 es grande tabla 1 Descripción simplista de la interacción de
(ruidoso), entonces el algoritmo buscará ubicaciones más locas: dos factores y su efecto en la exploración frente a
la explotación. Los factores son: grado de ruido
pero un valor alto de norte eliminará agresivamente a los
en elRetocar operación; y las muestras tomadas
pobres candidatos descubiertos en esos lugares. Esto es porque antes de adoptar una nueva solución candidata.
sinorte es bajo, un candidato de mala calidad puede ser el mejor
de El norte examinado; pero sinorte es alto, esto es mucho menos probable. Así mientrasσ2 está presionando para una mayor
exploración (en el extremo: búsqueda aleatoria), un alto valor de norte está presionando por una mayor explotación. norte
es un ejemplo de lo que luego se llamará presión de selección. La Tabla 1 resume esta interacción. Muchos
generadores de números aleatorios proporcionan instalaciones para seleccionar números aleatorios en
distribuciones normales (gaussianas). Pero si el tuyo no lo hace, puedes hacer dos números aleatorios
gaussianos a la vez usando elMétodo polar Box-Muller-Marsaglia.10

Algoritmo 12 Muestra de la distribución gaussiana (método polar de Box-Muller-Marsaglia)


1: µ ← media deseada de la distribución normal . Normal = Gaussiano
2: σ2 ← varianza deseada de la distribución normal

3: repetir
4: X ← número aleatorio elegido uniformemente de -1,0 a 1,0
5: y ← número aleatorio elegido uniformemente de -1,0 a 1,0 . X y y debe ser independiente
6: w ← X2 + y2
7: Hasta <1
que 0 < w√ . De lo contrario, podríamos dividir por cero o sacar la raíz cuadrada de un número negativo.

8: gramo ← µ + xσ -2 en ww . Es σ, es decir, σ2. Además, tenga en cuenta queen es Iniciar sesiónmi

9: h ← µ + yσ -2 en w w . Igualmente.

10: regreso gramo y h. Este método genera dos números aleatorios a la vez. Si lo desea, solo use uno.

Algunos generadores de números aleatorios (como java.util.Random) solo proporcione números


aleatorios gaussianos de la distribución normal estándar norte(0, 1). Puede convertir estos números a
Distribución gaussiana para cualquier media µ y varianza σ2 o desviación estándar σ te gusta muy simplemente:

norte(µ, σ2) = µ + σ2norte(0, 1) = µ + σnorte(0, 1)

10El método se describió por primera vez en George Edward Pelham Box y Mervin Muller, 1958, Una nota sobre la generación de
desviaciones normales aleatorias, Los anales de la estadística matemática, 29 (2), 610–611. Sin embargo, la forma polar del método, como se
muestra aquí, se suele atribuir al matemático George Marsaglia. Existe un método más rápido, pero no más simple, con un nombre excelente
y adecuado: elMétodo Zigurat.

24
2.4 Recocido simulado
Recocido simulado fue desarrollado por varios investigadores a mediados de la década de 1980, pero
tiene un linaje famoso, derivado de la Algoritmo de metrópolis, desarrollado por los ex científicos del
Proyecto Manhattan Nicholas Metropolis, Arianna y Marshall Rosenbluth, y Augusta y Edward Teller en
1953.11 El algoritmo varía de Hill-Climbing (algoritmo 4) en su decisión de cuándo reemplazar
S, la solución candidata original, con R, su hijo recién retocado. Específicamente: siR es mejor que
S, siempre reemplazaremos S con R como siempre. Pero siR es peor que S, podemos todavía reemplazar S con R
con cierta probabilidad PAG(t, R, S):
Calidad(R)-Calidad(S)
PAG(t, R, S) = mi t

dónde t ≥ 0. Es decir, el algoritmo a veces va cuesta abajo. Esta ecuación es interesante de dos formas. Tenga
en cuenta que la fracción es negativa porqueR es peor que S. Primero, siR es mucho peor que S, la fracción es
mayor, por lo que la probabilidad es cercana a 0. Si R está muy cerca de S, la probabilidad es cercana a 1. Por lo
tanto, si R no es mucho peor que S, todavía seleccionaremos R con una probabilidad razonable.
En segundo lugar, tenemos un parámetro ajustable t. Sit está cerca de 0, la fracción es nuevamente un número grande,
por lo que la probabilidad es cercana a 0. Si t es alta, la probabilidad es cercana a 1. La idea es establecer inicialmente
t a un número alto, lo que hace que el algoritmo se mueva a cada solución recién creada, independientemente de lo buena
que sea. Estamos haciendo unCaminata aleatoria en el espacio. Luegot disminuye lentamente, eventualmente a
0, momento en el que el algoritmo no hace más que escalar una colina.

Algoritmo 13 Recocido simulado


1: t ← temperatura, inicialmente un número alto

2: S ← alguna solución candidata inicial


3: Mejor ← S
4: repetir
5: R ← Tweak (Copiar (S))
Calidad(R)-Calidad(S)
6: si Calidad(R) > Calidad(S) o si un número aleatorio elegido de 0 a 1 < mi t luego
7: S ← R
8: Disminución t
9: si Calidad(S) > Calidad(Mejor) luego
10: Mejor ← S
11: Hasta que Mejor es la solución ideal, se nos ha acabado el tiempo o t ≤ 0
12: regreso Mejor

La tasa a la que disminuimos t se llama el algoritmo calendario. Cuanto más nos estiramos
el horario, cuanto más se asemeja el algoritmo a una caminata aleatoria y más exploración hace.

11Nicholas Metropolis, Arianna Rosenbluth, Marshall Rosenbluth, Augusta Teller y Edward Teller, 1953, Ecuación de cálculos de estado por
máquinas de computación rápida, Revista de física química, 21, 1087–1091. Y sí, Arianna y Marshall estaban casados, al igual que Augusta y
Edward. Ahoraesa es ¡un papel! Esta pandilla también desarrolló elMétodo Monte Carlo ampliamente utilizado en simulación. Edward Teller
más tarde se convirtió en un gran defensor de las pruebas nucleares y se cree que fue una de las inspiraciones del Dr. Strangelove. Para hacer
que este nudo de Gordion sea aún más complicado, el nieto de Augusta y Edward, Eric Teller, que se conoce como Astro Teller, ¡hizo un buen
trabajo temprano en Programación Genética (Sección 4.3)! Astro también desarrolló la programación neuronal estructurada en gráficos:
consulte la página 72.
Un artículo posterior sobre el recocido simulado que lo estableció como un algoritmo de optimización real es Scott Kirkpatrick,
Charles Daniel Gelatt Jr. y Mario Vecchi, 1983, Optimización por recocido simulado, Ciencias, 220 (4598), 671–680.

25
El recocido simulado recibe su nombre de recocido, un proceso de enfriamiento de metal fundido. Si tu
Deje que el metal se enfríe rápidamente, sus átomos no tienen la oportunidad de asentarse en una red apretada y se congelan en
una configuración aleatoria, lo que da como resultado un metal quebradizo. Si disminuimos la temperatura muy lentamente, los
átomos tienen tiempo suficiente para asentarse en un cristal fuerte. No es sorprendente,t medio temperatura.

2.5 Búsqueda tabú

Búsqueda tabú, de Fred Glover,12 emplea un enfoque diferente para hacer exploración: mantiene un historial
de soluciones candidatas recientemente consideradas (conocido como el lista tabú) y se niega a volver a esas
soluciones candidatas hasta que estén lo suficientemente lejos en el pasado. Por lo tanto, si subimos una
colina, no tenemos más remedio que bajar por el otro lado porque no se nos permite quedarnos o regresar a
la cima de la colina.
El enfoque más simple para la búsqueda tabú es mantener un lista tabú L, de una longitud máxima l,
de las soluciones candidatas que hemos visto hasta ahora. Siempre que adoptemos una nueva solución candidata, se
incluirá en la lista tabú. Si la lista tabú es demasiado grande, eliminamos la solución candidata más antigua y ya no es
tabú reconsiderar. La búsqueda tabú generalmente se implementa como una variación del ascenso más empinado
con reemplazo (algoritmo 6). En la versión siguiente, generamosnorte niños retocados, pero solo considere los que
actualmente no son tabú. Esto requiere algunas pequeñas comprobaciones sutiles:

Algoritmo 14 Búsqueda tabú


1: l ← Longitud máxima deseada de la lista tabú
2: norte ← número de ajustes deseados para muestrear el gradiente

3: S ← alguna solución candidata inicial


4: Mejor ← S
5: L ← {} una lista tabú de longitud máxima l . Implementado como cola de primero en entrar, primero en salir

6: Enqueue S dentro L
7: repetir
8: si Largo(L) > l luego
9: Eliminar el elemento más antiguo de
10: LR ← Tweak (Copiar (S))
11: por n - 1 veces hacer
12: W ← Tweak (Copiar (S))
13: / L y calidad(W) > Calidad(R) o R ∈ L) luego
si W ∈
14: R ← W
15: si R ∈
/ L luego
dieciséis: S ← R
17: Enqueue R dentro L
18: si Calidad(S) > Calidad(Mejor) luego
19: Mejor ← S
20: Hasta que Mejor es la solución ideal o nos hemos quedado sin tiempo
21: regreso Mejor

12"Tabu" es una ortografía alternativa para "tabú". Glover también acuñó la palabra “metaheurística” y desarrolló Scatter Search con Path
Relinking (Sección 3.3.5). Tabu Search apareció por primera vez en Fred Glover, 1986, Caminos futuros para la programación de enteros y
enlaces a la inteligencia artificial,Investigación de Computación y Operaciones, 5, 533–549.

26
Tabu Search realmente solo funciona en espacios discretos. ¿Qué pasa si su espacio de búsqueda son números con
valores reales? Solo en situaciones verdaderamente excepcionales visitará dos veces el mismo punto real en el espacio, lo
que hará que la lista tabú sea inútil. En esta situación, un enfoque es considerar una solución para ser miembro de una lista
si es "suficientemente similar" a un miembro existente de la lista. La medida de la distancia de similitud dependerá de usted.
Consulte la Sección 6.4 para obtener algunas ideas.
Aun así, el gran problema con Tabu Search es que si su espacio de búsqueda es muy grande, y
particularmente si es de alta dimensionalidad, es fácil quedarse en el mismo vecindario, de hecho en la misma
colina, incluso si tiene un gran tamaño. lista tabú. Puede que haya demasiadas ubicaciones. Un enfoque
alternativo es crear una lista tabú no de soluciones candidatas que haya considerado antes, sino decambios
que ha realizado recientemente en determinadas funciones. Por ejemplo, imagine que está encontrando una
solución a un problema gráfico como el Problema del vendedor ambulante (consulte la Sección 8). Modifica
una solución candidata para crear una nueva eliminando el bordeA y agregando bordes B y Cy decide adoptar
la nueva solución. En lugar de colocar la solución en la lista tabú, coloca lacambios que hiciste
en la lista. A, B, y C cada uno entra en la lista. Ahora, por un tiempo, mientras piensa en nuevos ajustes, no puede ni
siquiera considerar agregar o eliminarA, B, o C. Son tabú por ahora. Para implementar esto, el gran cambio que
necesitaremos hacer está en la naturaleza de la cola que actúa como nuestra lista tabú. La cola ya no puede ser
una simple cola de primero en entrar, primero en salir porque un número variable de cosas entrarán en la cola en
cualquier paso de tiempo. En su lugar, lo implementaremos como un conjunto de tuplas.〈X, D〉
dónde X es una función que cambiamos (por ejemplo, "Edge A"), y D es la marca de tiempo de cuando hicimos el
cambio. Además, ya no podemos simplemente probar la membresía en la cola. En cambio, tendremos que entregar
la cola alRetocar operación, para que sepa qué cambios no está permitido realizar. Así nuestra versión revisada:
Tweak (Copiar (...), L). Llamo al nuevo algoritmoBúsqueda tabú basada en características.

Algoritmo 15 Búsqueda tabú basada en características

1: l ← longitud deseada de la cola


2: norte ← número de ajustes deseados para muestrear el gradiente

3: S ← alguna solución candidata inicial


4: Mejor ← S
5: L ← {} . L contendrá tuplas de la forma 〈X, D〉 dónde X es una característica y D es una marca de tiempo
6: C ← 0
7: repetir
8: C ← C + 1
9: Eliminar de L todas las tuplas de la forma 〈X, D〉  . Los viejos
10: dónde c - d> l R ← Tweak (Copiar (S), L) . Tweak no cambiará a una función en L
11: por n - 1 veces hacer
12: W ← Tweak (Copiar (S), L)
13: si Calidad(W) > Calidad(R) luego
14: R ← W
15: S ← R
dieciséis: por cada característica X modificado por Tweak para producir R de S hacer
17: L ← L ∪ {〈X, C〉}
18: si Calidad(S) > Calidad(Mejor) luego
19: Mejor ← S
20: Hasta que Mejor es la solución ideal o nos hemos quedado sin tiempo
21: regreso Mejor

27
La búsqueda tabú basada en características es algo diferente de las otras técnicas descritas aquí en que se basa
en la identificabilidad y separabilidad de características encontrado en las soluciones candidatas, en lugar de
considerar cada solución candidata como un elemento atómico excepto por Retocar propósitos. Veremos que esta
noción se usa más intensamente en Optimización combinatoria (Sección 8).

2.6 Búsqueda local iterada

Este es el nombre actual de un concepto que ha existido, en muchas formas, desde al menos la década de
1980.13 Es esencialmente una versión más inteligente de Hill-Climbing con reinicios aleatorios. Suponiendo que
le dé suficiente tiempo entre reinicios, siempre que haga un reinicio aleatorio, el escalador termina en algún
óptimo local (posiblemente nuevo). Por lo tanto, podemos pensar en Hill-Climbing with Random Restarts como
una especie de búsqueda aleatoria a través delespacio de optima local. Encontramos un óptimo local
aleatorio, luego otro, luego otro, y así sucesivamente, y finalmente devolvemos el mejor óptimo que hemos
descubierto (¡idealmente, es un óptimo global!)
Búsqueda local iterada (ILS) trata de buscar a través de este espacio de óptimos locales de una manera más
inteligente: intenta escalada estocásticamente en el espacio de los óptimos locales. Es decir, ILS encuentra un óptimo
local, luego busca un óptimo local “cercano” y posiblemente lo adopte en su lugar, luego encuentra un nuevo óptimo
local “cercano”, y así sucesivamente. La heurística aquí es que a menudo puede encontrar mejores óptimos locales
cerca de donde se encuentra actualmente, y caminar de un óptimo local a otro óptimo local de esta manera a
menudo supera al probar nuevas ubicaciones completamente al azar.
ILS logra esto con dos trucos. Primero, ILS no elige nuevas ubicaciones de reinicio completamente al azar. Más bien,
mantiene una especie de óptimo local de "base de operaciones" y selecciona nuevas ubicaciones de reinicio que sonalgo,
aunque no excesivamente, en las proximidades del óptimo local de la “base de operaciones”. Queremos reiniciar lo
suficientemente lejos de nuestra base de operaciones actual para terminar en un nuevo óptimo local, pero no tan lejos como
para elegir nuevas ubicaciones de reinicio esencialmente al azar. Queremos hacer una caminata en lugar de una búsqueda
aleatoria.
En segundo lugar, cuando ILS descubre un nuevo óptimo local, decide si conservar el óptimo local actual
de la “base de operaciones” o adoptar el nuevo óptimo local como la “base de operaciones”. Si siempre
elegimos el nuevo óptimo local, estamos haciendo un recorrido aleatorio (una especie de metaexploración). Si
solo elegimos el nuevo óptimo local si es mejor que el actual, estaremos escalando colinas (una especie de
metaexplotación). ILS a menudo elige algo entre los dos, como se explica más adelante.
Si abstrae estos dos trucos, ILS es muy simple. La única complejidad radica en determinar cuándo se ha
descubierto un óptimo local. Dado que esto a menudo es difícil, emplearé el mismo enfoque aquí que se usó en los
reinicios aleatorios: para configurar un temporizador. Sube una colina por un tiempo, y luego, cuando el
temporizador se apaga, es hora de reiniciar. Obviamente, esto no garantiza que hayamos encontrado el óptimo local
mientras subimos una colina, pero si el temporizador es lo suficientemente largo, es probable que estemos cerca.
El algoritmo es muy sencillo: escale colinas durante un tiempo; luego (cuando se acabe el tiempo)
determine si adoptar el óptimo local recién descubierto o retener el actual "base de operaciones" (el
NewHomeBase14 función); luego, desde nuestra nueva base de operaciones, hagamos un granRetocar
(los Perturbar función), que es ideal solo lo suficientemente grande como para saltar a una nueva colina. El algoritmo tiene
este aspecto:

13Un buen resumen actual de la técnica se puede encontrar en Helena Lourenço, Olivier Martin y Thomas Stützle,
2003, búsqueda local iterada, en Fred Glover y Gary Kochenberger, editores, Manual de metaheurística, páginas 320–353, Springer.
Ellos rastrean la técnica hasta John Baxter, 1981, Evitación de óptimos locales en la ubicación del depósito,Revista de la Sociedad de
Investigación Operativa, 32, 815–819.
14Me inventé ese nombre.

28
Algoritmo 16 Búsqueda local iterada (ILS) con reinicios aleatorios
1: T ← distribución de posibles intervalos de tiempo

2: S ← alguna solución candidata aleatoria inicial


3: H ← S . El óptimo local actual de la "base de operaciones"
4: Mejor ← S
5: repetir
6: tiempo ← tiempo aleatorio en el futuro cercano, elegido de T
7: repetir
8: R ← Tweak (Copiar (S))
9: si Calidad(R) > Calidad(S) luego
10: S ← R
11: Hasta que S es la solución ideal, o tiempo ha terminado, o se nos ha agotado el tiempo total
12: si Calidad(S) > Calidad(Mejor) luego
13: Mejor ← S
14: H ← NewHomeBase (H, S)
15: S ← Perturbar(H)
dieciséis: Hasta que Mejor es la solución ideal o nos hemos quedado sin tiempo total
17: regreso Mejor

Gran parte del pensamiento detrás de las elecciones de Perturbar y NewHomeBase funciones es un arte negro, determinado en
gran parte por la naturaleza del problema particular que se aborda. A continuación se ofrecen algunas sugerencias.
El objetivo de la Perturbar la función es hacer un muy grande Retocar, lo suficientemente grande como para escapar del
óptimo local actual, pero no tan grande como para ser esencialmente una aleatorización. Recuerda que nos gustaría caer
sobre uncercano Cerro. El significado de "suficientemente grande" varía enormemente de un problema a otro.
El objetivo de la NewHomeBase La función es elegir inteligentemente nuevas ubicaciones de inicio. Así
como los algoritmos de optimización global en general se encuentran entre los extremos de la exploración
(búsqueda aleatoria y paseos aleatorios) y la explotación (escalada), elNewHomeBase debe estar en algún
lugar entre estos extremos al considerar entre optima local.15 En un extremo, el algoritmo siempre podría
adoptar el nuevo óptimo local, es decir,

NewHomeBase (H, S) = S

Esto resulta esencialmente en una caminata aleatoria desde el óptimo local al óptimo local. En el otro
extremo, el algoritmo solo podría usar el nuevo óptimo local si es de igual o mayor calidad que el
anterior, es decir,
{
S si Calidad (S) ≥ Calidad(H)
NewHomeBase (H, S) =
H de lo contrario

Esto se traduce, más o menos, en una especie de escalada entre los óptimos locales. La mayoría de las heurísticas de ILS
intentan encontrar un término medio entre los dos. Por ejemplo, ILS podría escalar una colina a menos que no haya visto un
nuevoy mejor solución en un tiempo, momento en el que comienza a hacer caminatas al azar por un tiempo. Hay otras
opciones, por supuesto: podríamos aplicar un enfoque de recocido simulado paraNewHomeBase, o una especie de
procedimiento de búsqueda tabú.

15Por tanto, esta función es realmente una meta-heurístico. ¡Finalmente un uso válido del término!

29
Mezclar y combinar Los algoritmos descritos en esta sección no están escritos en piedra. Hay muchas
formas de mezclarlos y combinarlos, o desarrollar otros enfoques por completo. Por ejemplo, no es
descabellado usar Hill-Climbing con reinicios aleatorios mezclados con un estilo (1 + 1)Retocar
operación. También puede construir versiones de Steepest Ascent de los reinicios aleatorios. La búsqueda tabú
se puede realizar en (1,λ) estilo. O construye unRetocar procedimiento que disminuye lentamente la
convolución gaussiana σ2 según una temperatura de estilo de recocido simulado. Etcétera. Sea imaginativo.

30
3 métodos de población

Los métodos basados en la población difieren de los métodos anteriores en que mantienen alrededor de un
muestra de soluciones candidatas en lugar de una única solución candidata. Cada una de las soluciones está
involucrada en el ajuste y la evaluación de la calidad, pero lo que evita que esto sea solo un escalador paralelo es que
las soluciones candidatas afectancómo otros candidatos escalarán en la función de calidad. Esto podría suceder ya
sea por buenas soluciones que provoquen el rechazo de soluciones deficientes y la creación de otras nuevas, o por
hacer que se eliminen.Retocared en la dirección de las mejores soluciones.
Puede que no sea sorprendente que la mayoría de los métodos basados en poblaciones roben conceptos de la
biología. Un conjunto de técnicas particularmente popular, conocido colectivamente comoComputación evolutiva
(EC), toma prestado generosamente de la biología, la genética y la evolución de poblaciones. Un algoritmo elegido de
esta colección se conoce comoAlgoritmo evolutivo (EA). La mayoría de los EA se pueden dividir engeneracional
algoritmos, que actualizan toda la muestra una vez por iteración, y estado estable
algoritmos, que actualizan la muestra con algunas soluciones candidatas a la vez. Los EA comunes
incluyenAlgoritmo genético (GA) y Estrategias de evolución (ES); y hay versiones generacionales y de
estado estacionario de cada uno. Hay bastantes subalgoritmos de sopa de letras más.
Debido a que están inspirados en la biología, los métodos de AE tienden a usar (y abusar) de términos de la genética y la
evolución. Debido a que los términos son tan frecuentes, los usaremos en esta y en la mayoría de las secciones posteriores.

Definición 1 Términos comunes usados en la computación evolutiva

individual una solución candidata


niño y padre a niño es el Retocared copia de una solución candidata (su padre)
población conjunto de soluciones candidatas
aptitud física calidad
paisaje de fitness función de calidad
valoración o evaluación de la aptitud Calcular la aptitud de un individuo que selecciona individuos en
selección función de su aptitud. RetocarEn g. Esto a menudo se piensa como
mutación reproducción "asexual". un especialRetocar que toma a dos padres,
recombinación o cruce intercambia secciones de ellos y (generalmente) produce dos hijos.
Esto a menudo se piensa como reproducción "sexual".

cría producir uno o más hijos de una población de padres a través de


un proceso repetido de selección y Retocaring (típicamente
mutación o recombinación)
genotipo o genoma la estructura de datos de un individuo, tal como se utiliza durante la
cromosoma reproducción de un genotipo en forma de un vector de longitud fija una
gene posición de ranura particular en un cromosoma
alelo un entorno particular de un gen
fenotipo cómo opera el individuo durante la evaluación de la aptitud
Generacion un ciclo de evaluación de la aptitud, reproducción y reensamblaje de la
población; o la población produjo cada uno de esos ciclos

Las técnicas de Computación Evolutiva son generalmente técnicas de remuestreo: se generan o revisan
nuevas muestras (poblaciones) en función de los resultados de las más antiguas. A diferencia de,Optimización
de Enjambre de partículas, en la Sección 3.5, es un ejemplo de mutación dirigida método, donde las
soluciones candidatas en la población se modifican, pero no se produce un remuestreo per se.

31
El algoritmo de cálculo evolutivo generacional básico primero construye una población inicial, luego itera a
través de tres procedimientos. Primero, esevalúa la aptitud de todos los individuos de la población. En
segundo lugar, utiliza esta información de aptitud pararaza una nueva población de niños. En tercer lugar,
Uniones los padres y los niños de alguna manera para formar una nueva población de próxima generación, y el ciclo
continúa.

Algoritmo 17 Un algoritmo evolutivo generacional abstracto (EA)


1: PAG ← Construir población inicial
2: Mejor← 2 . 2 significa "nadie todavía"
3: repetir
4: EvaluarFitness (PAG)
5: por cada individuo PAGI ∈ PAG hacer
6: si Mejor = 2 o Fitness (PAGI) > Aptitud física(Mejor) luego . Recuerde, el fitness es solo calidad
7: Mejor ← PAGI

8: PAG ← Entrar(PAG, Raza(PAG))


9: Hasta que Mejor es la solución ideal o nos hemos quedado sin tiempo
10: regreso Mejor

Observe que, a diferencia de los métodos de estado único, ahora tenemos una EvaluarFitness función. Esto se
debe a que, por lo general, necesitamos todos los valores de aptitud de nuestros individuos antes de poderRaza ellos.
Así que tenemos una determinada ubicación en el algoritmo donde se calcula su aptitud.
Los algoritmos evolutivos difieren entre sí en gran medida en la forma en que realizan el Raza y Entrar
operaciones. losRaza La operación generalmente tiene dos partes: Seleccionar padres de la población anciana,
entonces Retocaringlos (por lo general Mutante o Recombinar ellos de alguna manera) para hacer hijos. losEntrar
La operación generalmente reemplaza completamente a los padres con los hijos, o incluye a los padres aptos junto
con sus hijos para formar la próxima generación.dieciséis

Inicialización de población Todos los algoritmos descritos aquí básicamente utilizan los mismos procedimientos de
inicialización, por lo que vale la pena dar algunos consejos. La inicialización normalmente solo crea algunosnorte
individuos al azar. Sin embargo, si sabe algo sobre las posibles regiones "buenas" iniciales del espacio, podría
parcialidad la generación aleatoria a tender para generar individuos en esas regiones. De hecho, podrías
semilla la población inicial en parte con individuos de su propio diseño. Tenga cuidado con estas técnicas: a
menudo, aunquepensar usted sabe dónde están las áreas buenas, es muy probable que no lo sepa. No ponga
todos los huevos en una canasta: incluya un grado significativo de aleatoriedad uniforme en su inicialización.
Más sobre esto más adelante cuando hablemos de representaciones (en la Sección 4.1.1).

También vale la pena reforzar la diversidad garantizando que cada individuo de la población
inicial sea único. Cada vez que crea un nuevo individuo, no escanee a toda la población para ver si
ese individuo ya ha sido creado: eso esO(norte2) y necio. En su lugar, cree una tabla hash que
almacene individuos como claves y cualquier cosa arbitraria como valores. Cada vez que crea un
individuo, verifique si ya está en la tabla hash como clave. Si es así, tíralo y haz otro. De lo contrario,
agregue el individuo a la población y póngalo en la tabla hash. Esa esO(norte).

dieciséisAunque suele ser más sencillo que esto, el Entrar La operación se puede considerar como una especie de procedimiento de
selección, eligiendo entre los hijos y los padres para formar la próxima generación. Esta vista general de laEntrar operación a menudo se
llama selección de supervivencia, mientras que la parte de selección del Raza operación a menudo se llama selección de los padres.

32
3.1 Estrategias de evolución
La familia de algoritmos conocida como Estrategias de evolución (ES) fueron desarrollados por Ingo Rechenberg y
Hans-Paul Schwefel en la Universidad Técnica de Berlín a mediados de la década de 1960.17 ES emplea un
procedimiento simple para seleccionar individuos llamado Selección de truncamiento, y (por lo general) solo usa la
mutación como Retocar operador.
Entre los algoritmos ES más simples se encuentra el (µ, λ) algoritmo. Comenzamos con una población de (típicamente)λ
número de individuos, generado aleatoriamente. Luego iteramos de la siguiente manera. Primero evaluamos la aptitud de
todos los individuos. Luego eliminamos de la población todos menos elµ fittest (esto es todo lo que hay para la selección de
truncamiento). Cada una de lasµ fiLos individuos de prueba llegan a producir λ/µ niños a través de una mutación ordinaria.
Todo dicho que hemos creadoλ nuevos hijos. NuestroEntrar El funcionamiento es sencillo: los hijos simplemente reemplazan
a los padres, que son descartados. La iteración continúa de nuevo.
En breve, µ es el número de padres que sobreviven, y λ es el número de niños que µ
los padres hacen en total. Darse cuenta deλ debe ser un múltiplo de µ. Los profesionales de EE suelen referirse a su
algoritmo mediante la elección deµ y λ. Por ejemplo, siµ = 5 y λ = 20, entonces tenemos una “(5, 20) Estrategia de
evolución”. Aquí está el pseudocódigo del algoritmo:

Algoritmo 18 los (µ, λ) Estrategia de evolución


1: µ ← número de padres seleccionados
2: λ ← número de hijos generados por los padres

3: PAG ← {}
4: por λ veces hacer . Construir población inicial
5: PAG ← PAG ∪ {nuevo individuo al azar}
6: Mejor← 2
7: repetir
8: por cada individuo PAGI ∈ PAG hacer
9: EvaluarFitness (PAGI)
10: si Mejor = 2 o Fitness (PAGI) > Aptitud física(Mejor) luego
11: Mejor ← PAGI

12: Q ← los µ individuos en PAG cuya aptitud () es mayor . Selección de truncamiento


13: PAG ← {}. La unión se realiza simplemente reemplazando PAG con los niños
14: por cada individuo Qj ∈ Q hacer
15: por λ/µ veces hacer
dieciséis: PAG ← PAG ∪ {Mutar (Copiar (Qj))}

17: Hasta que Mejor es la solución ideal o nos hemos quedado sin tiempo
18: regreso Mejor

Tenga en cuenta el uso de la función Mudar en lugar de Retocar. Recuerde que los métodos basados en la
población tienen una variedad de formas de realizar la Retocar operación. Los dos grandes sonmutación, que es
como el Retocars lo hemos visto antes: convertir un solo individuo en un nuevo individuo a través de un cambio
aleatorio (generalmente pequeño); yrecombinación o Transversal, en el que varios (normalmente dos) individuos se
mezclan y emparejan para formar hijos. Usaremos estos términos en los algoritmos de ahora en adelante. para
indicar el Retocar realizado.

17Ingo Rechenberg, 1973, Evoluciónestrategia: Optimierung technischer Systeme nach Prinzipien der biologischen Evolution,
Fromman-Holzbook, Stuttgart, Alemania. ¡En alemán!

33
Los (µ, λ) tiene tres botones con los que podemos ajustar la exploración frente a la explotación.
La Figura 8 muestra el efecto de las variaciones con estas operaciones.

• La talla de λ. Esto esencialmente controla el tamaño de la muestra para cada población, y es básicamente
lo mismo que elnorte variable en escalada de pendiente más empinada con reemplazo. En el extremo,
comoλ enfoques ∞, el algoritmo se acerca a la exploración (búsqueda aleatoria).

• La talla de µ. Esto controla cómoselectivo el algoritmo es; valores bajos deµ con respecto a λ
empujar el algoritmo más hacia la búsqueda explotadora, ya que solo los mejores individuos sobreviven.

• El grado en que se realiza la mutación. SiMudar tiene mucho ruido, entonces los niños nuevos caen lejos
del árbol y son bastante aleatorios independientemente de la selectividad de µ.

El segundo algoritmo de estrategia de evolución se llama (µ + λ). Se diferencia de (µ, λ) en solo uno
respeta el Entrar operación. Recuerde que en (µ, λ) los padres simplemente son reemplazados por los hijos de
la próxima generación. Pero en (µ + λ), la próxima generación está formada por µ padres más el λ nuevos hijos.
18 Es decir, los padres compiten con los niños la próxima vez. Así, la próxima y todas las generaciones
sucesivas sonµ + λ en tamaño. El algoritmo tiene este aspecto:

Algoritmo 19 los (µ + λ) Estrategia de evolución


1: µ ← número de padres seleccionados
2: λ ← número de hijos generados por los padres

3: PAG ← {}
4: por λ veces hacer . O quizás λ + µ. Consulte la nota a pie de página 18, página 34.

5: PAG ← PAG ∪ {nuevo individuo al azar}


6: Mejor ← 2
7: repetir
8: por cada individuo PAGI ∈ PAG hacer
9: EvaluarFitness (PAGI)
10: si Mejor = 2 o Fitness (PAGI) > Aptitud física(Mejor) luego
11: Mejor ← PAGI

12: Q ← los µ individuos en PAG cuya aptitud () es mayor


13: PAG ← Q . La operación Join es la única diferencia con (µ, λ)
14: por cada individuo Qj ∈ Q hacer
15: por λ/µ veces hacer
dieciséis: PAG ← PAG ∪ {Mutar (Copiar (Qj))}

17: Hasta que Mejor es la solución ideal o nos hemos quedado sin tiempo
18: regreso Mejor

Los (µ + λ) El algoritmo puede reevaluar el µ padres junto con sus λ niños. Si su función de fitness es
determinista, no es necesario que haga eso: simplemente mantenga sus valores de fitness originales.

18Es común de usar µ + λ individuos iniciales en lugar de los λ He elegido usar aquí. Sospecho que el razonamiento detrás del uso
µ + λ es que de esta manera cada población tendrá µ + λ individuos. Pero esto tiene una desventaja: asumir una función de aptitud
determinista (para que no tenga que reevaluar laµ padres cada vez), esto significa la primera generación
evalúa µ + λ individuos, pero las generaciones sucesivas solo evalúan λ individuos, lo cual es un poco raro y también
inconsistente con el (µ, λ) Estrategia de evolución. Elija su veneno: es bastante menor.

34
Operaciones de cría

Generación 4

Generacion 3
(1, 2) Estrategia de evolución

Generacion 2

Generacion 1

Individuos seleccionados para reproducirse

Personas no seleccionadas

(1, 8) Estrategia de evolución (4, 8) Estrategia de evolución

Figura 8 Tres (µ, λ) Variaciones de la estrategia de evolución. Cada generación,µ los individuos son seleccionados para reproducirse, y cada
uno puede crear λ/µ niños, lo que resulta en λ niños en total.

Generalmente hablando, (µ + λ) puede ser más explotador que (µ, λ) porque los padres de alta aptitud persisten
en competir con los niños. Esto tiene riesgos: un padre suficientemente en forma puede derrotar a otros miembros
de la población una y otra vez, eventualmente causando que toda la población se debilite.converger
prematuramente a los descendientes inmediatos de ese padre, momento en el que toda la población ha quedado
atrapada en el óptimo local que rodea al padre.
Si tú lo piensas, (µ + λ) se asemeja a Steepest Ascent Hill-Climbing en que ambos permiten que
el padre compita contra los hijos por la supremacía en la siguiente iteración. Mientras que (µ, λ)
se asemeja a la escalada más empinada con reemplazo en que los padres son reemplazados por los
mejores hijos. Esto es más que una coincidencia: los escaladores son esencialmente casos degenerados
de los algoritmos ES. Recuerda que con la derechaRetocar operador, la escalada simple se convierte en
el algoritmo (1 + 1), la escalada más empinada con reemplazo se convierte en (1, λ), y el ascenso más
empinado se convierte en (1 + λ). Armado con la explicación de los algoritmos anteriores, debería ser un
poco más claro por qué es así.

3.1.1 Programación evolutiva y de mutaciones


Las estrategias de evolución históricamente emplean una representación en forma de un vector de longitud
fija de números con valores reales. Normalmente, estos vectores se inicializan utilizando algo similar al
algoritmo 7. La mutación se realiza normalmente utilizando la convolución de Gass (algoritmo 11).
La convolución gaussiana está controlada en gran medida por la varianza de distribución σ2. El valor deσ2
es conocido como el tasa de mutación de un ES, y determina el ruido en el Mudar operación. ¿Cómo se
elige un valor paraσ2? Puede preseleccionar su valor; o quizás podría disminuir lentamente el valor; o
podrías intentar cambiar adaptativamenteσ2 basado en las estadísticas actuales del sistema. Si el sistema
parece ser demasiado explotador, podría aumentarσ2 para forzar más exploración (o también
disminuirla para producir más explotación). Esta noción de cambiarσ2 es conocido como un
tasa de mutación adaptativa. En general, taladaptado Los operadores de cría se ajustan a sí mismos con el tiempo, en
respuesta a las estadísticas obtenidas de la ejecución de optimización.19

19Las estrategias de evolución también se han asociado durante mucho tiempo con operadores autoadaptativos que se optimizan
estocásticamente junto con los individuos. Por ejemplo, los individuos pueden contener sus propios procedimientos de mutación que ellos
mismos pueden mutar junto con el individuo.

35
Una vieja regla para cambiar σ2 adaptativamente se conoce como el Regla de un quinto, de Ingo Rechenberg,20
y dice así:

• Si más de 1 5 los niños están más en forma que sus padres, entonces también estamos explotando los óptimos locales
mucho, y deberíamos incrementar σ2.

• Si es menos de 1 5 los niños están más en forma que sus padres, entonces estamos explorando demasiado y
debería disminuir σ2.

• Si exactamente 1 5 los niños están más en forma que sus padres, no cambies nada.

Esta regla se derivó de los resultados de experimentos con el (1 + 1) ES en ciertos problemas de prueba
simples. Puede que no sea óptimo para situaciones más complejas, pero es un buen punto de partida.
No tienes que hacer ES solo con vectores. De hecho, un poco antes que ES, Larry Fogel en la National
Science Foundation (Washington DC) desarrolló un enfoque casi idéntico y luego lo desarrolló en San Diego.21
La técnica, llamada Programación evolutiva (EP), se diferencia de ES en dos aspectos. Primero,
históricamente solo usó un (µ + λ) estrategia con µ = λ. Es decir, se eliminó a la mitad de la población y luego a
esa mitad se le llenó de niños. En segundo lugar, EP se aplicó a la mayoría de las representaciones. Desde el
principio, Fogel estuvo interesado en la evolución de las estructuras gráficas (específicamente los autómatas
de estado finito, de ahí la "programación"). Por lo tanto, laMudar La operación tomó la forma de agregar o
eliminar un borde, agregar o eliminar un nodo, volver a etiquetar un borde o un nodo, etc.

Estas operaciones son razonables siempre que tengan dos características. Primero, para garantizar que el algoritmo
permanezca global, debemos garantizar que, con alguna pequeña probabilidad, un padre pueda produciralguna niño. En
segundo lugar, debemos conservar la característica quegeneralmente Hacemos pequeña cambios que probablemente no se
desvíen significativamente de la aptitud física; y solo ocasionalmente hacergrande cambios en el individuo. El grado en el
que tendemos a hacer pequeños cambios podría ser ajustable, comoσ2 era. Llegaremos a estos problemas de
representación para las soluciones candidatas en detalle en la Sección 4.

3.2 El algoritmo genético


los Algoritmo genético (GA), a menudo denominado algoritmos genéticos, fue inventado por John Holland en la
Universidad de Michigan en la década de 1970.22 Es similar al (µ, λ) Estrategia de evolución en muchos aspectos: se
repite a través de la evaluación de la aptitud, la selección y reproducción, y el reensamblaje de la población. La
principal diferencia está en cómo se llevan a cabo la selección y la reproducción: mientras que las Estrategias de
Evolución seleccionan a todos los padres yluego crear todos los hijos, el algoritmo genético selecciona poco a poco
algunos padres y genera algunos hijos hasta que se hayan creado suficientes hijos.
Para reproducirse, comenzamos con una población de niños vacía. Luego seleccionamos dos padres
de la población original, los copiamos, los cruzamos entre sí y mutamos los resultados. Esto forma dos
hijos, que luego sumamos a la población infantil. Repetimos este proceso hasta que la población infantil
esté completamente llena. Aquí está el algoritmo en pseudocódigo.

20También en su texto de estrategias de evolución (ver nota al pie 17, página 33).
21La disertación de Larry Fogel fue sin duda la primera tesis de este tipo, si no el primer trabajo importante, en el campo de la computación
evolutiva. Lawrence Fogel, 1964,Sobre la organización del intelecto, Doctor. tesis, Universidad de California, Los Ángeles.
22El libro de Holland es uno de los más famosos en el campo: John Holland, 1975, Adaptación en sistemas naturales y artificiales, Prensa de
la Universidad de Michigan.

36
Algoritmo 20 El algoritmo genético (GA)
1: popsize ← tamaño de población deseado . Esto es básicamente λ. Hazlo parejo.

2: PAG ← {}
3: por popsize veces hacer
4: PAG ← PAG ∪ {nuevo individuo al azar}
5: Mejor ← 2
6: repetir
7: por cada individuo PAGI ∈ PAG hacer
8: EvaluarFitness (PAGI)
9: si Mejor = 2 o Fitness (PAGI) > Aptitud física(Mejor) luego
10: Mejor ← PAGI

11: Q ← {} . Aquí es donde comenzamos a desviarnos de (µ, λ)


12: por popsize/ 2 veces hacer
13: Padre PAGa ← SelectWithReplacement (PAG) Padre PAGB
14: ← SelectWithReplacement (PAG) Niños Ca, CB ← Cruzado
15: (Copiar (PAGa), Dupdo(PAGB))
dieciséis: Q ← Q ∪ {Mudar(Ca), Mudar(CB)}
17: PAG ← Q . Fin de la desviación
18: Hasta que Mejor es la solución ideal o nos hemos quedado sin tiempo
19: regreso Mejor

Aunque se puede aplicar a cualquier tipo de vector (y de hecho a muchas representaciones), el GA operaba
clásicamente sobre vectores de longitud fija de valores booleanos, al igual que los EE a menudo se aplicaban a los de Florida
valores de coma flotante. Por un momento, seamos pedantes sobre la generación de nuevos individuos. Si el individuo es un
vector de valores de punto flotante, la creación de un nuevo vector aleatorio podría hacerse como en ES (es decir, mediante
el algoritmo 7). Si nuestra representación es un vector booleano, podríamos hacer esto:

Algoritmo 21 Generar un vector de bits aleatorio


1: ~v ← un nuevo vector 〈v1, v2...vl〉
2: por I de 1 a l hacer
3: si 0,5 > un número aleatorio elegido uniformemente entre 0.0 y 1.0 inclusive luego
4: vI ← cierto
5: demás

6: vI ← falso
7: regreso ~v

3.2.1 Cruce y mutación

Tenga en cuenta lo similar que es el algoritmo genético a (µ, λ), excepto durante la fase de cría. Para realizar la reproducción,
necesitamos dos funciones nuevas que no habíamos visto antes:Seleccionar con reemplazo y Transversal;
más por supuesto Mudar. Empezaremos con Mudar. La mutación de un vector de valor real se puede hacer con la
convolución gaussiana (algoritmo 11). ¿Cómo podríasMudar un vector booleano? Una forma sencilla es
mutación bit-flip: marcha por el vector y lanza una moneda de cierta probabilidad (a menudo 1 /l, dónde
l es la longitud del vector). Cada vez que la moneda salga cara, dale la vuelta al bit:

37
Algoritmo 22 Mutación Bit-Flip
1: pag ← probabilidad de voltear un poco . A menudo pag se establece en 1 /l

2: ~v ← vector booleano 〈v1, v2...vl〉 ser mutado

3: por I de 1 a l hacer
4: si pag ≥ número aleatorio elegido uniformemente de 0.0 a 1.0 inclusive luego
5: vI ← ¬(vI)
6: regreso ~v

Transversal es la característica distintiva del algoritmo


genético.23 Implica mezclar y combinar partes de dos padres
1 1 0 0 1 0 0 1
para formar hijos. Cómo se hace esa mezcla y combinación
depende de la representación de los individuos. Hay tres Intercambio Intercambio Intercambio Intercambio Intercambio

formas clásicas de hacer crossover en vectores:


Un punto, Dos puntos, y Cruce uniforme. Digamos que el 0 0 1 0 1 1 0 0
vector es de longitudl. Cruce de un punto
elige un número C entre 1 y l, inclusive, e intercambia todos los C
índices ≥ C, como se muestra en la Figura 9. El algoritmo:
Figura 9 Cruce de un punto.
Algoritmo 23 Cruce de un punto
1: ~v← fiprimer vector 〈v1, v2...vl〉 ser cruzado
~ ← segundo vector 〈w1, w2...wl〉 ser cruzado
2: w

3: C ← entero aleatorio elegido uniformemente de 1 a l inclusivo


4: si C 6= 1 luego
5: por I de C para l hacer
6: Intercambia los valores de vI y wI
7: regreso ~v y w~

Si C = 1 no ocurre ningún cruce. Este crossover vacío 1 1 0 0 1 0 0 1


ocurre con 1 l probabilidad. Si prefieres controlar
esta probabilidad, puede elegir C de entre 2 a l inclusive y Intercambio Intercambio Intercambio

decida por su cuenta cuándo ocurrirá el cruce.


El problema con el cruce de un punto radica en la posible 0 0 1 0 1 1 0 0
enlace entre los elementos del vector (consulte la página 40
siguiente). Observe que la probabilidad de quev1 y C D
vl se romperá debido al cruce, ya que casi cualquier elección de C lo Figura 10 Cruce de dos puntos.
haré. De manera similar, la probabilidad de quev1 y v2 voluntad
romperse es bastante pequeño, ya que C debe ser igual a 2. Si la organización de su vector fue tal que los elementos v
1y vl Si tuvieras que trabajar bien en tándem para conseguir un buen estado físico, estarías constantemente
rompiendo buenos pares que el sistema descubría. El cruce de dos puntos es una forma de solucionar el problema
de la epistasis y el enlace: simplemente elijados números C y De intercambiar los índices entre ellos. La Figura 10 da
la idea general, y el pseudocódigo se muestra a continuación:

23Aunque desde hace mucho tiempo también se ha utilizado de diversas formas con las estrategias de evolución.

38

También podría gustarte