Algorithme des abeilles

L’algorithme des abeilles s’inspire du comportement de recherche de nourriture des abeilles mellifères. Les abeilles collectent le nectar de vastes zones autour de leur ruche (plus de 10 kilomètres). Il a été observé que les colonies d’abeilles envoient des abeilles pour recueillir le nectar des parcelles de fleurs par rapport à la quantité de nourriture disponible à chaque parcelle. Les abeilles communiquent entre elles à la ruche via une danse qui informe les autres abeilles de la ruche quant à la direction, la distance et la cote de qualité des sources de nourriture.

Les abeilles collectent le nectar des parcelles de fleurs comme source de nourriture pour la ruche. La ruche envoie des éclaireurs qui localisent des parcelles de fleurs, qui retournent ensuite à la ruche et informent d’autres abeilles sur la fitness et l’emplacement d’une source de nourriture via une danse. L’éclaireur retourne au champ de fleurs avec des abeilles suiveuses. Un petit nombre d’éclaireurs continuent de rechercher de nouvelles sources, tandis que les abeilles revenant des sources de fleurs continuent de communiquer sur leur qualité.

L’objectif de traitement de l’information de l’algorithme est de localiser et d’explorer de bons sites dans un espace de recherche donnée. Des éclaireurs sont envoyés pour échantillonner au hasard dans le domaine de définition et localiser les bons sites. Les bons sites sont exploités via l’application d’une recherche locale, où un petit nombre de bons sites sont explorés plus que les autres. Les bons sites sont continuellement exploités, bien que de nombreux éclaireurs soient envoyés à chaque itération à la recherche de bons sites supplémentaires.

L’algorithme suivant fournit un pseudocode de l’algorithme des abeilles pour minimiser une fonction de coût.

L’algorithme des abeilles a été développé pour être utilisé avec des problèmes d’optimisation de fonction continue et combinatoire. La variable Patchsize est utilisée comme taille de voisinage. Par exemple, dans un problème d’optimisation de fonction continue, chaque dimension d’un site serait échantillonnée avec x_i plus ou moins que (rand()*Patchsize). La variable Patchsize est diminuée à chaque itération, généralement d’une valeur constante (telle que 0,95). Le nombre de sites d’élite (EliteSites_num) doit être < le nombre de sites (Sites_num), et le nombre d’abeilles d’élite (EliteBees_num) est traditionnellement < le nombre d’autres abeilles (OtherBees_num).