Está en la página 1de 13

UNIVERSIDAD NACIONAL DE

INGENIERÍA
FACULTAD DE INGENIERÍA ELÉCTRICA Y ELECTRÓNICA
SECCIÓN DE POSTGRADO Y SEGUNDA ESPECIALIZACIÓN

MÉTODO DE
BÚSQUEDA
ARMÓNICA
Patricio Alberto Aramburú Reynaga
TÓPICOS EN SISTEMAS EXPERTOS E INTELIGENCIA ARTIFICIAL
2020-2
EE-81 TÓPICOS EN SISTEMAS EXPERTOS E INTELIGENCIA ARTIFICIAL

INDICE

1. INTRODUCCIÓN:..........................................................................................2
2. INSPIRACIÓN DEL MÉTODO:......................................................................2
3. ESTRATEGIA DEL MÉTODO:......................................................................2
4. PSEUDOCÓDIGO:........................................................................................4
5. DIAGRAMA DE FLUJO:.................................................................................5
6. MÉTODO DE BÚSQUEDA ARMÓNICA MODIFICADO PARA
PROBLEMAS DE OPTIMIZACIÓN CON RESTRICCIONES:.............................6
7. PLANTEAMIENTO DEL PROBLEMA:..........................................................8
8. CÓDIGO EN MATLAB:..................................................................................9
9. RESULTADOS:............................................................................................11
10. CONCLUSIONES:......................................................................................12
11. BIBLIOGRAFÍA:..........................................................................................12

1
EE-81 TÓPICOS EN SISTEMAS EXPERTOS E INTELIGENCIA ARTIFICIAL

MÉTODO DE BÚSQUEDA ARMÓNICA


1. INTRODUCCIÓN:

En términos generales, la optimización es la selección del mejor elemento de un


conjunto continuo o discreto de ítems disponibles con respecto a algún criterio. En el
lenguaje matemático, la formulación de un problema de optimización numérico con
restricciones puede ser expresado como encontrar un conjunto de valores “x”, de
manera que minimicen o maximicen una determinada función f(x), sujeta a
restricciones de desigualdad y/o igualdad.
Donde f(x) es la función objetivo, y “x” es la solución o vector de variables solución. La
función objetivo y las restricciones pueden ser lineales o no lineales.
Diferentes métodos han sido utilizados para resolver esta clase de problemas, con la
metaheurística sobresaliendo entre ellos. Los algoritmos metaheurísticos tienen un
performance remarcable al resolver problemas de optimización no lineales, no
diferenciables o incluso multimodales, los cuales no pueden ser resueltos por métodos
clásicos. La mayoría de los métodos metaheurísticos son inspirados natural o
artificialmente, como los Algoritmos Genéticos (AG), Colonia de Hormigas, Colonia de
Abejas, Evolución Diferencial, y Enjambre de Partículas, por nombrar algunos.
La búsqueda armónica es un algoritmo metaheurístico, el cual basa su operación en el
proceso de improvisación musical. Fue desarrollado por Geem, quien estableció que
una armonía en música es una combinación de sonidos que es agradable al oído
desde punto de vista estético. Entonces, el proceso de buscar la mejor armonía puede
ser considerado tan análogo a encontrar una solución a un problema de optimización,
debido a que ambos procesos tienen la intención de producir el mejor o el óptimo
resultado bajo ciertas condiciones.

2. INSPIRACIÓN DEL MÉTODO:

El método fue propuesto por Geem, Kimm y Loganatham el cual simula como es el
proceso de improvisación de un músico al buscar una armonía determinada sin
experiencia previa de la misma. Por otro lado, otros autores definen que, el método de
búsqueda armónica fue inspirado en la improvisación de los músicos de Jazz.
Especialmente, en el proceso mediante el cual los músicos, quienes nunca han
interactuado antes, ajustan sus propias interpretaciones para que en conjunto suene
una melodía armoniosa.

3. ESTRATEGIA DEL MÉTODO:

En este modelo la estrategia a utilizar es que cada solución candidata es considerada


una “armonía”, y es representada por un vector n-dimensional. La población inicial de
las soluciones es creada de forma aleatoria y almacenada en un vector llamado
Memoria de Armonías (o Harmony Memory). Luego en este vector, mediante
operaciones de re-inicialización aleatoria o de un ajuste (llamado ajuste de “tono”) se
vuelve a generar posibles soluciones. Finalmente se compara cada nueva solución
con la peor solución almacenada en la Memoria de Armonías, si esta nueva solución

2
EE-81 TÓPICOS EN SISTEMAS EXPERTOS E INTELIGENCIA ARTIFICIAL

es mejor, reemplaza a la anterior, caso contrario no existiría cambio alguno. Este


proceso es repetido hasta cumplir algún criterio de parada. A continuación,
describimos el proceso y su similitud con el proceso de la composición musical.
Composición Musical: Una combinación de notas emitidas en secuencia genera una
armonía, y en el proceso de composición las armonías son modificadas con el objetivo
de mejorar su sonido en una melodía específica. Este ajuste es simulado por el
algoritmo de búsqueda armónica. Cuando los músicos componen música, ellos
improvisan la siguiente nueva armonía, considerando 03 posibles recursos:

 Una armonía previamente usada, que es, una combinación almacenada en su


memoria musical.
 Un ajuste en la armonía previa por un cambio en sus notas.
 Una armonía completamente nueva con notas seleccionadas aleatoriamente.
La búsqueda armónica entonces, integra estas fuentes en 03 métodos para un
proceso de optimización, los cuales son conocidos como: uso de la memoria
armónica, ajuste de tono y aleatorización.
Parámetros: El uso de la memoria armónica se parece a la selección de los individuos
mejor adaptados en los algoritmos genéticos, en el sentido de que la mejor armonía
pasará a formar parte de la nueva memoria armónica. Su eficacia depende de cierta
tasa de aceptación de la memoria armónica, “raccep” ∈ [0, 1], que se escoge al azar de
la memoria armónica. Si esta tasa es demasiado baja, sólo se seleccionarán unas
cuantas armonías y el algoritmo convergerá con demasiada lentitud. En cambio, si la
tasa es alta (≈ 1), casi todas las armonías pasarán a formar parte de la memoria
armónica, dando lugar a soluciones potencialmente erróneas. Lo más usual es tomar
raccep = 0,7 ~ 0,95.

El segundo miembro del Algoritmo de Búsqueda Armónica es el ajuste tonal,


determinado por un ancho de banda “bw”, la tasa “rpa” de ajuste del tono y el
número “g” de improvisaciones. El ancho de banda se refiere a la separación entre los
puntos que dividen arbitrariamente el rango total de los valores de decisión; tiene su
paralelismo en los trastes que dividen la longitud del mástil de la guitarra,
correspondiendo cada uno de ellos a un intervalo de medio tono.

Aunque en música el ajuste tonal conlleve un cambio de frecuencias, en el Algoritmo


de Búsqueda Armónica tan sólo supone una solución ligeramente diferente.
Teóricamente, el tono se puede ajustar de forma lineal o no lineal, pero en la práctica
se utiliza el ajuste lineal, con una probabilidad de raccep*rpa:

Xnuevo = Xviejo ± (2 × raccep − 1) × bw

En la ecuación, Xviejo es el tono existente en la memoria armónica; el tono nuevo


después del ajuste es Xnuevo; y raccep, como ya se vio anteriormente, es un generador de
números aleatorios en el intervalo [0, 1]. Una tasa rpa baja y una anchura de banda bw
estrecha pueden retrasar la convergencia del algoritmo, pues la exploración se limita a
una pequeña región del espacio de búsqueda. Una tasa alta y un amplio bw hacen que
la solución se disperse alrededor de los óptimos potenciales. Generalmente, se utiliza
rpa = 0,1 ~ 0,5.

La tercera componente del algoritmo es la aleatorización, que proporciona un


aumento de la diversidad de las soluciones. El ajuste del tono tiene un papel similar,
pero está limitado a un ámbito local. En cambio, el uso de la aleatoriedad puede

3
EE-81 TÓPICOS EN SISTEMAS EXPERTOS E INTELIGENCIA ARTIFICIAL

conducir al sistema a explorar varias soluciones y encontrar, finalmente, el óptimo


global.

Con una probabilidad de (1-raccep), la aleatorización produce un valor completamente


nuevo, aplicando la siguiente expresión:

Xnuevo = rand (Li, Ui)

En general, el algoritmo es poco sensible a los parámetros, de modo que para obtener
una buena solución no es necesario afinar éstos exhaustivamente. No obstante, como
se ha visto, la tasa de consideración de la memoria armónica y el parámetro rpa
contribuyen en gran medida al hallazgo de soluciones globales y locales,
respectivamente.

Por otra parte, este método genera nuevos vectores de soluciones tras considerar
todos los que ya existen en la memoria armónica, mientras que los algoritmos
genéticos sólo consideran los dos vectores “progenitores”. Esta particularidad hace
que sea un algoritmo sumamente flexible, mediante el cual se encuentran mejores
soluciones (de mejor calidad y obtenidas en menor tiempo) que con otros algoritmos
de su misma especie.
Los valores asignados a los parámetros vistos anteriormente confieren fortaleza al
algoritmo, dependen de la aplicación concreta de éste y son cruciales para conseguir
un buen rendimiento del algoritmo y un adecuado equilibrio entre intensificación y
diversificación. Particularmente, la consideración aleatoria del algoritmo permite que se
generen soluciones nuevas y, por tanto, que se amplíe la posibilidad de explorar el
espacio de búsqueda.

4. PSEUDOCÓDIGO:

A continuación, se presenta el pseudocódigo general para el algoritmo de búsqueda armónica.

Definir función objetivo f(x), x= (x1, x2, x3, …xN)

Definir tasa de selección de la memoria armónica raccep;

Definir tasa de ajuste de tono rpa;

Definir rango de ajuste de tono bw;

Generar memoria armónica inicial MA (arreglo (kxN));

While g<máximo número de iteraciones do

While i<=N do

If rand<raccep then

Indice = rand(1,k)

If rand<rpa then

NewH(i)=MA(Indice,i)+bw*rand(-1,1)

else

NewH(i)=MA(Indice, i)

4
EE-81 TÓPICOS EN SISTEMAS EXPERTOS E INTELIGENCIA ARTIFICIAL

else

NewH(i)=rand(Li,Ui)

Reemplazar la nueva armonía por la peor de MA, si esta es mejor, aplicando las condiciones
de factibilidad.

5. DIAGRAMA DE FLUJO:

Se presenta Diagrama de Flujo elaborado para el método de Búsqueda Armónica.

Figura 1.

El método original de Búsqueda Armónica es el representado en la Figura 1, en donde


la Memoria Armónica es la principal estructura de datos. Es una matriz que almacena
en sus filas una selección de las mejores armonías actuales (vectores solución) y
además consta de un tamaño denominado “Tamaño de la Memoria Armónica”. Como

5
EE-81 TÓPICOS EN SISTEMAS EXPERTOS E INTELIGENCIA ARTIFICIAL

se muestra en la Figura 1, los pasos del algoritmo son: (1) Inicializar la memoria
armónica; (2) Improvisar una nueva armonía, que es, generar un nuevo candidato a
vector solución; (3) actualizar la memoria armónica con la nueva armonía, si esta es
apropiada; y (4) retornar al paso (2) hasta que algún criterio de parada haya sido
satisfecho.
Si bien, el método de búsqueda armónica es efectivo para problemas de optimización,
su diseño original no está enfocado directamente en problemas de optimización que
involucren distintas restricciones. Ante ello, nos vemos en la necesidad de modificar el
algoritmo para poder adecuarlo a las necesidades del problema.

6. MÉTODO DE BÚSQUEDA ARMÓNICA MODIFICADO PARA


PROBLEMAS DE OPTIMIZACIÓN CON RESTRICCIONES:

Como sabemos, los nuevos miembros de la memoria armónica son generados por la
memoria armónica existente o de una forma aleatoria. Sin embargo, ello no garantiza
que siempre cumplan las restricciones impuestas. En la Figura 2, se muestra que los
nuevos miembros, los cuales satisfacen todas las restricciones, pueden ser obtenidos
basados en la “prueba y error”. Esta tarea es exhaustiva, especialmente para
funciones de restricción complejas.

Figura 2.
En nuestro método de Búsqueda Armónica Modificado, hacemos uso de aquellos
miembros de la Memoria Armónica que no cumplen las restricciones. La tarea clave es
cómo clasificar los miembros de la Memoria Armónica, de acuerdo con su función
objetivo y el valor de la función restricción. Aquí, los valores de las funciones de
restricción de los miembros de la Memoria Armónica son almacenados juntos con sus
valores de función objetivo en la Memoria Armónica. Los miembros de la Memoria
Armónica están divididos en 02 partes: Miembros Factibles y Miembros Infactibles. Los
primeros satisfacen todas las funciones de restricción, mientras que los últimos no. Así
la caracterización de los miembros de la Memoria Armónica es mejorada: pueden ser

6
EE-81 TÓPICOS EN SISTEMAS EXPERTOS E INTELIGENCIA ARTIFICIAL

ordenados usando sus valores de función objetivo. Sin embargo, para los Infactibles,
el ordenamiento es basado en la dominancia de Pareto de los miembros de la
Memoria Armónica. Un miembro Infactibles de la Memoria Armónica “domina” a otro
miembro, si ninguna de sus valores de la función de restricción es mayor y al menos
uno es menor.
Después que la Memoria Armónica es ordenada, el peor miembro de la Memoria
Armónica x# puede ser seleccionado y comparado con un nuevo candidato a solución
x*. Notemos que x* no tiene que ser factible. Cuando x# es comparado con x*, x*
reemplazará a x# sólo en uno de los siguientes 03 casos:

 x* es factible, y x# es infactible
 Ambos, x* y x# son factibles, y f(x*) < f(x#)
 Ambos, x* y x# son infactibles, y x* domina a x#

Figura 3.

7
EE-81 TÓPICOS EN SISTEMAS EXPERTOS E INTELIGENCIA ARTIFICIAL

7. PLANTEAMIENTO DEL PROBLEMA:

Para la aplicación del método de búsqueda armónica, utilizaremos un problema de


optimización aplicado a un problema típico de la Ingeniería Eléctrica, el cual es la
ejecución de un despacho económico sujeto a restricciones para un conjunto
puramente térmico, el cual se describe a continuación:
Suponga que deseamos determinar el punto operativo económico para 03 unidades
cuando entregan un total de 850 MW. Se especifican los límites de generación de
potencia activa, curva de consumo de combustible y costos de combustible para las 03
unidades.

 Límites de Generación:

Unidad 1 : P1 min =150 MW , P1 max =600 MW .

Unidad 2 : P2 min =100 MW , P 2max =400 MW .

Unidad 3 : P3 min =50 MW , P3 max =200 MW .

 Funciones de Consumo de Combustible


2
H 1 ( MBtu / h ) =510+7.2 P1 +0.00142 P1
2
H 2 ( MBtu / h )=310+7.85 P 2+ 0.00194 P2
2
H 3 ( MBtu/ h )=78+7.97 P3 +0.00482 P3

 Costo de combustible de las unidades:

Unidad 1 :1.1 R /MBtu


Unidad 2 :1.0 R/ MBtu
Unidad 3 :1.0 R/ MBtu
 Funciones de Costo de Producción
2
F 1 ( P 1 )=561+7.92 P1 +0.001562 P1
2
F 2 ( P 2 )=310+7.85 P2 +0.00194 P2
2
F 3 ( P 3 )=78+7.97 P3 +0.00482 P3

 Ecuación de la Demanda

P1 + P2+ P3=850 MW

8
EE-81 TÓPICOS EN SISTEMAS EXPERTOS E INTELIGENCIA ARTIFICIAL

El problema consiste en encontrar los valores óptimos de las potencias de generación


de las 03 unidades que minimicen el costo operativo del sistema eléctrico, sujeto a las
restricciones operativas presentadas.
Entonces, podemos decir que se trata de un problema de optimización, y lo escribimos
de la siguiente forma:
2 2 2
Min: z =561+ 7.92 P1 +0.001562 P1 +310+7.85 P2 +0.00194 P2 +78+7.97 P3 +0.00482 P 3
Sujeto a :
150 MW ≤ P 1 ≤ 600 MW

100 MW ≤ P 1 ≤ 400 MW

50 MW ≤ P 1 ≤ 200 MW

P1 + P2+ P3=850 MW

8. CÓDIGO EN MATLAB:

El código está compuesto por 2 Script elaborados en MATLAB, el primero consiste en


la función “Funcion” que se encarga de definir a la función objetivo y a la función de
restricción de igualdad exigida por el problema, el segundo script consiste en el
algoritmo de la búsqueda armónica “Busqueda Armonica” el cual resuelve el problema
de optimización haciendo uso de la función “Funcion”.

Código “Funcion”
function [funObj,funObj2]=Funcion(x)
funObj=561+7.92*x(1)+0.001562*(x(1))^2+310+7.85*x(2)+0.00194*(x(2))^2+
78+7.97*x(3)+0.00482*(x(3))^2; % Función Objetivo
funObj2=850-(x(1)+x(2)+x(3)); % Restricción de Igualdad en forma de
desigualdad

Código “Busqueda Armonica”


clc; clear all; close all;
format long;
raccept=0.95; %Se recomienda entre 0.7 y 1
rpa=0.35; %entre 0 y 0.4
var=3; % Numero de Variables
k=2000; % Tamaño de la Memoria Armónica
bw=0.001; % Ajuste de Tono
Low=[150,100,50]; % Límites Inferiores de las Variables
High=[600,400,200]; % Límites Superiores de las Variables
MA=zeros(k,var);
fobj=zeros(k,1); % Función Objetivo
rest=zeros(k,1); % Restricción

for i=1:k % Se inicializa la Memoria Armónica


MA(i,:)=Low+(High-Low).*rand(1,var);
[fobj(i,1),rest(i,1)]=Funcion(MA(i,:));

9
EE-81 TÓPICOS EN SISTEMAS EXPERTOS E INTELIGENCIA ARTIFICIAL

end
MA;
fobj;

for iter=1:1000000 % Se genera la nueva memoria armónica


for i=1:var
ran1=rand(1);
ran2=rand(1);
if ran1<raccept
indexMA=fix(rand(1)*k)+1;
if ran2<rpa
MA_new(i)=MA(indexMA,i)+bw*(2*rand(1)-1);
else
MA_new(i)=MA(indexMA,i);
end
else
MA_new(i)=Low(i)+(High(i)-Low(i))*rand(1);

end

end

OutOfBoundryH=(MA_new>High);
OutOfBoundryL=(MA_new<Low);
MA_new(OutOfBoundryH==1)=2*High(OutOfBoundryH==1)-
MA_new(OutOfBoundryH==1);
MA_new(OutOfBoundryL==1)=2*Low(OutOfBoundryL==1)-
MA_new(OutOfBoundryL==1);

[Nfobj,Nrest]=Funcion(MA_new);

if sum(rest)==0 % Se identifica el peor valor de la función objetivo


[WorstFun,WorstIndex]=max(fobj);
WorstRest=rest(WorstIndex,1);
else
[WorstRest,WorstIndex]=max(rest);
WorstFun=fobj(WorstIndex,1);
end

if Nrest<=0 && WorstRest<=0 % Condiciones de factibilidad


if (Nfobj<WorstFun)
MA(WorstIndex,:)=MA_new;
fobj(WorstIndex)=Nfobj;
rest(WorstIndex)=Nrest;
[WorstFun,WorstIndex]=max(fobj);
end
elseif (Nrest<=0 && WorstRest>0)
MA(WorstIndex,:)=MA_new;
fobj(WorstIndex)=Nfobj;
rest(WorstIndex)=Nrest;
[WorstFun,WorstIndex]=max(fobj);
elseif Nrest>0 && WorstRest>0
if(Nrest<=WorstRest)
MA(WorstIndex,:)=MA_new;
fobj(WorstIndex)=Nfobj;
rest(WorstIndex)=Nrest;
[WorstFun,WorstIndex]=max(fobj);
end
end

10
EE-81 TÓPICOS EN SISTEMAS EXPERTOS E INTELIGENCIA ARTIFICIAL

end

[Optimo,indice]=min(fobj);
Solucion=MA(indice,:);
display(Solucion)
display(Optimo)

9. RESULTADOS:

A continuación, se muestran los resultados obtenidos para 10 evaluaciones del


algoritmo. Se compararon los valores de las potencias resultantes P1, P2, P3 y de la
función costo total de producción (Función Objetivo) con sus valores teóricos producto
de la optimización convencional.
Se consideraron los siguientes parámetros del método:

 Tasa de aceptación: raccept=0.95


 Tasa de ajuste de tono: rpa=0.35;
 Rango de ajuste de tono: bw=0.001
 Número de Variables: var=3;
 Tamaño de la Memoria Armónica k=2000
 Iteraciones: 1000000

Función Función
P1 Error P2 Error P3 Error Error
P1 P2 P3 Objetivo Objetivo
Teórico Relativo Teórico Relativo Teórico Relativo Relativo
Algoritmo Teórica
400.6 393.2 -2% 326.2 334.6 3% 123.22 122.2 -1% 8194.36000 8194.356126 0.0000%
396.23 393.2 -1% 333.25 334.6 0% 120.54 122.2 1% 8194.72700 8194.356126 -0.0045%
386.61 393.2 2% 336.39 334.6 -1% 126.99 122.2 -4% 8194.60400 8194.356126 -0.0030%
402.41 393.2 -2% 319.82 334.6 4% 127.78 122.2 -5% 8195.29900 8194.356126 -0.0115%
385.17 393.2 2% 348.58 334.6 -4% 116.29 122.2 5% 8195.55000 8194.356126 -0.0146%
395.26 393.2 -1% 337.39 334.6 -1% 117.36 122.2 4% 8194.67800 8194.356126 -0.0039%
385.67 393.2 2% 339.11 334.6 -1% 125.23 122.2 -2% 8194.74000 8194.356126 -0.0047%
391.08 393.2 1% 340 334.6 -2% 118.93 122.2 3% 8194.69000 8194.356126 -0.0041%
392.96 393.2 0% 328.47 334.6 2% 128.56 122.2 -5% 8194.65000 8194.356126 -0.0036%
395.37 393.2 -1% 338.45 334.6 -1% 116.28 122.2 5% 8195.59100 8194.356126 -0.0151%

Se puede notar que existe un margen de error del +/- 5% para los valores de las
Potencias obtenidas, sin embargo, el valor de la función objetivo tiene un error relativo
del orden del +/- 0.005% en promedio. Ante ello podemos decir que, si bien el
algoritmo aún puede mejorarse para determinar los valores exactos de las potencias, o
en su defecto con una mejor precisión, la función objetivo nos da resultados
satisfactorios, siendo este valor el más importante dentro de la optimización, pues
representa el costo de producción mínimo de la operación.

11
EE-81 TÓPICOS EN SISTEMAS EXPERTOS E INTELIGENCIA ARTIFICIAL

10. CONCLUSIONES:

Los algoritmos metaheurísticos desempeñan un papel de primera magnitud en el


campo de la optimización. Al utilizar nuevas técnicas, como la hibridación y la
simulación de procesos naturales y sociales, los algoritmos metaheurísticos han
permitido corregir las debilidades de los heurísticos e identificar las características a
mejorar de estos, los factores que los hacen fuertes o débiles y sus aplicaciones
prácticas.

Las variaciones y/o mejoras desarrolladas al algoritmo de búsqueda armónica son


desarrollos científicos destacados que han solucionado algunas deficiencias originales
del algoritmo original y han mejorado su rendimiento y propiedades de exploración y
explotación. Es de esperar que en el futuro cercano surjan nuevos procesos de
hibridación con otras técnicas metaheurísticas para resolver asuntos de diversas áreas
del saber; también es posible que se use la búsqueda armónica en entornos
metaheurísticos para solucionar problemas discretos y continuos; o que se encuentren
reglas precisas que definan los valores de los parámetros, de acuerdo a las
necesidades específicas del espacio de solución y las restricciones del problema.

El algoritmo de búsqueda armónica ha demostrado ser una poderosa y eficiente


herramienta de optimización que no precisa de cálculos matemáticos complejos para
encontrar soluciones óptimas a problemas determinados. Además, permite adaptar su
estructura y sus parámetros a cada campo de aplicación.

Por otro lado, los algoritmos metaheurísticos carecen de un marco teórico que
proporcione orientaciones analíticas sobre asuntos importantes: ¿Cómo mejorar la
eficiencia para un problema dado? ¿Qué rango y agrupamientos de los parámetros
son los mejores? ¿Qué condiciones se necesitan para garantizar una buena velocidad
de convergencia? ¿Cómo solucionar problemas de optimización con objetivos
múltiples?

Cualesquiera que sean los desafíos, HSA y sus hibridaciones se podrían aplicar a
numerosos a estudios sistemáticos, marcando un camino para futuras investigaciones
y proporcionando alguna guía para nuevas formulaciones algorítmicas.

11. BIBLIOGRAFÍA:

[1] (Studies in Computational Intelligence 191) Xin-She Yang (auth.), Zong Woo
Geem (eds.) - Music-inspired harmony search algorithm Theory and
applications-Springer-Verlag Berlin Heidelberg (2009)

[2] E. A. Portilla-Flores et al.: Enhancing the HS Algorithm Performance on


Constrained Numerical Optimization (2017)

[3] Clever Algorithms Nature-Inspired Programming Recipes Jason Brownlee


(2012)

12

También podría gustarte