Algorithme de Recherche d'harmonie

L’algorithme de recherche d’harmonie s’est inspiré de l’improvisation des musiciens de jazz. Plus précisément, le processus par lequel les musiciens (qui n’ont peut-être jamais joué ensemble auparavant) affinent rapidement leur improvisation individuelle par le biais de la variation résultant en une harmonie esthétique.

Chaque musicien correspond à un attribut dans une solution candidate dans le domaine, et la hauteur et la plage de chaque instrument correspondent aux limites et contraintes de la variable de décision. L’harmonie entre les musiciens est considérée comme une solution candidate complète à un moment donné, et l’appréciation esthétique de l’harmonie par le public représente la fonction de coût spécifique du problème. Les musiciens recherchent l’harmonie dans le temps à travers de petites variations et improvisations, ce qui se traduit par une amélioration par rapport à la fonction de coût.

L’objectif est d’utiliser les bonnes solutions candidates déjà découvertes pour influencer la création de nouvelles solutions candidates vers la localisation des optima. Ceci est réalisé en créant stochastiquement des solutions candidates par étapes, où chaque composant est soit tiré au hasard d’une mémoire de solutions de haute qualité, ajusté à partir de la mémoire de solutions de haute qualité, soit assigné au hasard dans les limites du problème. La mémoire des solutions candidates est initialement aléatoire, et un critère d’acceptation gourmand n’est utilisé pour admettre de nouvelles solutions candidates que si elles ont une valeur objective améliorée, en remplacement d’un membre existant.

Le réglage d’une hauteur (pitch) sélectionnée dans la mémoire d’harmonie est généralement linéaire, par exemple pour l’optimisation continue des fonctions :
x = x + plage * e
où plage est un paramètre utilisateur (largeur de bande de hauteur) pour contrôler la taille des changements, et e est un nombre uniformément aléatoire dans [-1; 1].

L’algorithme a été conçu comme une méthode d’optimisation généralisée pour une optimisation continue, discrète et contrainte et a été appliqué à de nombreux types de problèmes d’optimisation.

La mémoire d’harmonie avec un taux (HMCR) dans [0; 1] contrôle l’utilisation des informations de la mémoire d’harmonie ou la génération d’une hauteur aléatoire. En tant que tel, il contrôle le taux de convergence de l’algorithme et est généralement configuré dans [0.7; 0,95]. Le taux d’ajustement de hauteur (PAR) dans [0; 1] contrôle la fréquence de réglage des hauteurs sélectionnées dans la mémoire d’harmonie, généralement configurées dans [0,1; 0,5]. Des valeurs élevées peuvent entraîner une convergence prématurée de la recherche. Le taux d’ajustement de la hauteur tonale et la méthode d’ajustement (quantité d’ajustement ou largeur de frette) sont généralement fixes, ayant un effet linéaire dans le temps.

Lors de la création d’une nouvelle harmonie, des agrégations de hauteurs peuvent être prises à travers les musiciens dans la mémoire de l’harmonie. La mise à jour de la mémoire d’harmonie est généralement un processus gourmand, bien que d’autres considérations telles que la diversité puissent être utilisées lorsque l’harmonie la plus similaire est remplacée.