¿Qué es el algoritmo ABC?

En informática e investigación de operaciones, el algoritmo de colonia de abejas artificiales ( ABC ) es un algoritmo de optimización basado en el comportamiento inteligente de alimentación del enjambre de abejas, propuesto por Karaboga en 2005.

En el algoritmo ABC, hay tres tipos de abejas: abejas empleadas, abejas espectadoras y abejas exploradoras. Las abejas empleadas buscan comida alrededor de la fuente de alimento en su memoria; mientras tanto, comparten la información de estas fuentes de alimentos a las abejas espectadoras. Las abejas espectadoras tienden a seleccionar buenas fuentes de alimentos de las encontradas por las abejas empleadas. La fuente de alimento que tiene mayor calidad (aptitud) tendrá una gran posibilidad de ser seleccionada por las abejas espectadoras que la de menor calidad. Las abejas exploradoras se traducen de unas pocas abejas empleadas, que abandonan sus fuentes de alimentos y buscan otras nuevas.

En el algoritmo ABC, la primera mitad del enjambre consiste en abejas empleadas, y la segunda mitad constituye las abejas espectadoras.

El número de abejas empleadas o las abejas espectadoras es igual al número de soluciones en el enjambre. El ABC genera una población inicial aleatoriamente distribuida de soluciones de SN (fuentes de alimentos), donde SN denota el tamaño del enjambre.

Deje que [math] {\ displaystyle X_ {i} = \ {x_ {i, 1}, x_ {i, 2}, \ ldots, x_ {i, n} \}} [/ math] represente la [math] { \ displaystyle i ^ {th}} [/ math] solución en el enjambre, donde [math] {\ displaystyle n} [/ math] es el tamaño de la dimensión. Cada abeja empleada [math] {\ displaystyle X_ {i}} [/ math] genera una nueva solución candidata [math] {\ displaystyle V_ {i}} [/ math] en la vecindad de su posición actual como la siguiente ecuación:

[matemáticas] {\ displaystyle V_ {i_ {k}} = X_ {i_ {k}} + \ Phi _ {i_ {k}} \ times (X_ {i_ {k}} – X_ {j_ {k}}) }[/mates]

Donde [math] {\ displaystyle X_ {j}} [/ math] es una solución candidata seleccionada al azar ([math] {\ displaystyle i \ neq j} [/ math]), [math] {\ displaystyle k} [/ math] es un índice de dimensión aleatorio seleccionado del conjunto [math] {\ displaystyle \ {1,2, \ ldots, n \}} [/ math] y [math] {\ displaystyle \ Phi _ {i_ {k} }} [/ math] es un número aleatorio dentro de [math] {\ displaystyle [-1,1]} [/ math]. Una vez que se genera la nueva solución candidata [math] {\ displaystyle V_ {i}} [/ math], se utiliza una selección codiciosa. Si el valor de aptitud de [math] {\ displaystyle V_ {i}} [/ math] es mejor que el de su padre [math] {\ displaystyle X_ {i}} [/ math], entonces actualice [math] {\ displaystyle X_ {i}} [/ math] con [math] {\ displaystyle V_ {i}} [/ math]; de lo contrario, mantenga [math] {\ displaystyle X_ {i}} [/ math] sin cambios. Después de que todas las abejas empleadas completen el proceso de búsqueda; Comparten la información de sus fuentes de alimentos con las abejas espectadoras a través de bailes ondulantes. Una abeja espectadora evalúa la información de néctar de todas las abejas empleadas y elige una fuente de alimento con una probabilidad relacionada con su cantidad de néctar. Esta selección probabilística es realmente un mecanismo de selección de rueda de ruleta que se describe a continuación como la ecuación:

[matemáticas] {\ displaystyle P_ {i} = {\ frac {fit_ {i}} {\ sum _ {j} {fit_ {j}}}}} [/ math]

Donde [math] {\ displaystyle fit_ {i}} [/ math] es el valor de aptitud de la solución [math] {\ displaystyle i ^ {th}} [/ math] en el enjambre. Como se ve, cuanto mejor sea la solución [math] {\ displaystyle i} [/ math], mayor será la probabilidad de que se seleccione la fuente de alimento [math] {\ displaystyle i ^ {th}} [/ math]. Si no se puede mejorar una posición sobre un número predefinido (llamado límite) de ciclos, entonces se abandona la fuente de alimento. Suponga que la fuente abandonada es [math] {\ displaystyle X_ {i}} [/ math], y luego la abeja exploradora descubre una nueva fuente de alimento para ser reemplazada por [math] {\ displaystyle i ^ {th}} [/ matemáticas] como la ecuación a continuación:

[matemáticas] {\ displaystyle X_ {i_ {k}} = lb_ {j} + rand (0,1) \ times (ub_ {j} -lb_ {j})} [/ math]

Donde [math] {\ displaystyle rand (0,1)} [/ math] es un número aleatorio dentro de [math] {\ displaystyle [0,1]} [/ math] basado en una distribución normal y [math] {\ displaystyle lb, ub} [/ math], son los límites inferior y superior de la dimensión [math] {\ displaystyle i ^ {th}} [/ math], respectivamente.