Algoritmo de búsqueda de armonía

Busca la armonía

El algoritmo de búsqueda de armonía se inspiró en la improvisación de los músicos de jazz. Específicamente, el proceso por el cual los músicos (que nunca antes habían actuado juntos) refinan rápidamente su improvisación individual a través de la variación que da como resultado una armonía estética.

Cada músico corresponde a un atributo en una solución candidata en el dominio, y el tono y el rango de cada instrumento corresponden a los límites y restricciones de la variable de decisión. La armonía entre músicos se considera una solución candidata completa en un momento dado, y la apreciación estética de la armonía por parte del público representa la función de costo específica del problema. Los músicos buscan la armonía en el tiempo a través de pequeñas variaciones e improvisaciones, lo que se traduce en una mejora sobre la función de costes.

El objetivo de la búsqueda de la armonía es utilizar las buenas soluciones candidatas ya descubiertas para influir en la creación de nuevas soluciones candidatas hacia la ubicación de los óptimos. 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 problema.

La memoria de las soluciones candidatas es inicialmente aleatoria, y un criterio de aceptación codicioso solo se utiliza para admitir nuevas soluciones candidatas si tienen un valor objetivo mejorado, reemplazando a un miembro existente.

busca la armonía

El ajuste de un tono seleccionado en la memoria de búsqueda de armonía es generalmente lineal, por ejemplo, para la optimización continua de funciones:
x = x + rango * e
donde rango es un parámetro de usuario (ancho de banda de altura) para controlar el tamaño de los cambios, ye es un número uniformemente aleatorio en [-1; 1].

El algoritmo de búsqueda de armonía fue diseñado como un método de optimización generalizada para un mejoramiento continuo, discreto y restringido y se ha aplicado a muchos tipos de problemas de optimización.

Memoria de armonía con una tasa (HMCR) en [0; 1] controla el uso de la información de la memoria de armonía o la generación de un tono aleatorio. Como tal, controla la tasa de convergencia del algoritmo y normalmente se configura en [0,7; 0,95]. La tasa de ajuste de altura (PAR) en [0; 1] controla la frecuencia de afinación de los tonos seleccionados en la memoria de armonía, normalmente configurada en [0,1; 0,5]. Los valores altos pueden hacer que la búsqueda converja prematuramente. La tasa de ajuste del tono y el método de ajuste (cantidad de ajuste o ancho del traste) generalmente son fijos, y tienen un efecto lineal a lo largo del tiempo.

Al crear una nueva armonía, las agregaciones de tonos se pueden llevar a través de los músicos a la memoria de la armonía. Actualizar la memoria de armonía es generalmente un proceso codicioso, aunque se pueden usar otras consideraciones como la diversidad cuando se reemplaza la armonía más similar.