Você está na página 1de 35

Marcelo Apolo E.

Csar Menndez C.
Nelson Ruz
William Snchez V.

HARMONY SEARCH
Es un algoritmo meta heurstico (tambin
conocido como algoritmo de clculo suave o
algoritmo evolutivo), el cual imita el proceso
de improvisacin musical.

HARMONY SEARCH
La msica (del griego: [] -

mousik [tchn], "el arte de las musas") es,


segn la definicin tradicional del trmino, el
arte de organizar sensible y lgicamente una
combinacin coherente de sonidos y silencios
utilizando los principios fundamentales de la
meloda, la armona y el ritmo, mediante la
intervencin de complejos procesos psicoanmicos.

Elementos de la msica
La organizacin coherente de los sonidos y los

silencios (segn una forma de percepcin) nos da


los parmetros fundamentales de la msica, que
son la meloda, la armona y el ritmo.
La meloda es un conjunto de sonidos.
La armona, bajo una concepcin vertical de la
sonoridad, y cuya unidad bsica es el acorde,
regula la concordancia entre sonidos que suenan
simultneamente y su enlace con sonidos vecinos.
La mtrica, se refiere a la pauta de repeticin a
intervalos regulares, y en ciertas ocasiones
irregulares, de sonidos fuertes o dbiles y silencios
en una composicin.
El ritmo, es el resultado final de los elementos
anteriores, a veces con variaciones muy notorias.

FACTORES DE
COMPARACION
Conjunto de Msicos Variables de Decisin
Rango de Afinacin Rango de Valores
Armona Solucin de vectores
Esttica Funcin Objetivo
Prctica Iteracin
Experiencia Matriz de memoria

Procedimientos de Harmony
Search
1. Parmetros de inicializacin
2. Harmony Memory
3. Nueva Armona
4. Actualizacin de Harmony Memory
5. Criterio de Verificacin y Terminacin

Parmetros de
Inicializacin
Minimizar o Maximizar F(X)
Sujeto
; i=1,2, ,N

N es el nmero de variables de decisin


K es el nmero de candidatos de las variables

de decisin.

HARMONY MEMORY
INICIAL

Nueva Armona Vector


Harmony
El nuevo vector Harmony x =
Dicho vector esta dado por tres reglas:
1.Seleccin Aleatoria
2.Se debe considerar HM
3.Se debe hacer un ajuste (Ajuste de Tono)

Vector Harmony
SELECCIN ALEATORIA
Partimos de que el msico puede entonar
cualquier nota del pentagrama y que tiene
grabada la meloda en su memoria (HM).

Vector Harmony
SELECCIN ALEATORIA

Donde

Ajuste de Tono
Una vez que obtuvimos el nuevo tono (Vector

Harmony), el msico puede ajustar an mas el


paso, probando con notas vecinas.

Ejemplo: Sol su vecindad es La o Fa


En este caso Do puede ajustar a Re

Ajuste de Tono
Donde
se obtiene del HM y
simo elemento de
.

es el K-

m es el ndice de la vecindad
;
Para variables discretas m vara entre 1 y -1

Actualizacin de Harmony
Memory

Si x =
tiene una
mejor respuesta en la funcin objetivo,
lo reemplazamos en la Harmony Memory.

Presentacin del Algoritmo


Harmony Search
Defina Funcin Objetivo F(x)
Defina Harmony Memory (Raccept)
Defina Ajuste de Tono (Rap)
Generar Harmony Memory con armonas aleatorias
While (t <Maximo_Numero_Iteraciones)
While (i <=Numero_Variables)
If (U [0,1 ] <Raccept)
Elegir un valor del Harmony Memory por la variable i
If (U [0,1] <Rap)
Ajustar el valor mediante la adicin de cierta cantidad
End If
Else
Elegir un valor aleatorio
End If
End While
Aceptar el new Harmony si es mejor
End While
Buscar la actual mejor solucin
End

Aplicaciones y
Comparaciones
con
otros
Diseo de Estructuras
Modelos

Aplicaciones y
Comparaciones
con
otros
Problemas de Logstica de Transportes
Modelos

Aplicaciones y
Comparaciones
con
otros
Diseo de Redes de Aguas
Modelos

Aplicaciones y
Comparaciones
con
otros
Diseo de Redes de Aguas en Gran Escala
Modelos

Aplicaciones y
Comparaciones
con
otros
Operaciones de Represas
Modelos

Aplicaciones y
Comparaciones
con
otros
Optimizar parmetros de Calibracin
Modelos
Hidrolgicas

Aplicaciones y
Comparaciones
con
otros
Conservacin Ecolgica
Modelos

Conclusiones
El HS no requiere de clculos complejos, por

lo tanto siempre esta libre de divergencia.


El HS no requiere ajustes de valor inicial para
las variables de decisin.
El HS puede manejar variables discretas, as
como variables continuas, mientras que las
tcnicas basadas en gradiente solo pueden
manejar continuas.

EJERCICIO DE
APLICACION

OBS:

PASO 1
Generar una Harmony Memory

X1

X2

X3

F(X)

13

16

PASO 2

Recordar Bucles y Sentencias de

Decisin
Seguir los pasos del algoritmo, lo volvemos a anunciar

While (t <Maximo_Numero_Iteraciones)
While (i <=Numero_Variables)
If (U [0,1 ] <Raccept)
Elegir un valor del Harmony Memory por la variable i
If (U [0,1] <Rap)
Ajustar el valor mediante la adicin de cierta
cantidad
End If
Else
Elegir un valor aleatorio
End If
End While
Aceptar el new Harmony si es mejor

PASO 3
I-sima Iteracin (Para este caso se cumplieron las 2
sentencias If)
Se generaron 2 nmeros aleatorios adicionales de tal manera
que el primero escogi la variable X1 y el 3er rank del mismo.
Como expone el algoritmo se cambio el componente del rank
prximo por un valor de 1. Siempre y cuando la funcin se
X1
X2
X3
F(X)
optimice de acuerdo al criterio del problema.
Rank1

Rank2

12

Rank3

16

I+K Iteracin

(Para este caso se cumplieron las 2 sentencias If)

Se generaron 2 nmeros aleatorios adicionales de tal manera


que el primero escogi la variable X2 y el 3er rank del mismo.
Como expone el algoritmo se debera cambiar el componente del
Rank prximo por un valor de 1. Pero en este caso la funcin
objetivo no optimiza por lo que no escogemos el vector Harmony en la
Harmony Memory.

X1

X2

X3

F(X)

Rank1

Rank2

12

Rank3

16

I+k+J Iteracin (Para este caso se cumplieron las 2 sentencias If)


Se generaron 2 nmeros aleatorios adicionales de tal manera que el
primero escogi la variable X3 y el 2do rank del mismo.
Como expone el algoritmo se cambio el componente del rank prximo
por un valor de 1. Siempre y cuando la funcin se optimice de acuerdo al
criterio del problema. Podamos tomar el rank1 o el Rank 3. De manera
aleatoria se obtuvo el tercero.

X1
Rank
1
Rank
2
Rank
3

X2

X3

F(X)

12

13

I+k+J+L Iteracin (Para este caso se cumplieron las 2 sentencias If)


Se generaron 2 nmeros aleatorios adicionales de tal manera que el
primero escogi la variable X1 y el 2do rank del mismo.
Como expone el algoritmo se cambio el componente del rank prximo por
un valor de 1. Siempre y cuando la funcin se optimice de acuerdo al criterio
del problema. Podamos tomar el Rank1 o el Rank 3. De manera aleatoria se
obtuvo el tercero.
Para la nueva Harmony Memory se debe ordenar los vectores de la matriz de tal
manera que los valores de F(X) sean ascendentes.

X1
Rank1
Rank2
rank3

X2
2
2
4

X3
2
3
3

F(X)
1
4
2

4
12
8

I+k+J+L +H Iteracin (Para este caso se cumplieron las 2 sentencias If)


Se generaron 2 nmeros aleatorios adicionales de tal manera que el primero
escogi la variable X3 y el 2do rank del mismo.
Como expone el algoritmo se cambio el componente del rank prximo por un
valor de 1. Siempre y cuando la funcin se optimice de acuerdo al criterio del
problema. Podamos tomar el Rank1 o el Rank 3. De manera aleatoria se obtuvo
el tercero.
Para la nueva Harmony Memory se debe ordenar los vectores de la matriz de tal
manera que los valores de F(X) sean ascendentes.

X1
Rank1
Rank2
Rank3

X2
2
4
2

X3
2
3
3

F(X)
1
2
3

4
8
7

I+k+J+L +H+G Iteracin (Para este caso se cumplieron las 2 sentencias If)
Se generaron 2 nmeros aleatorios adicionales de tal manera que el
primero escogi la variable X3 y el 3er rank del mismo.
Como expone el algoritmo se cambio el componente del rank prximo por
un valor de 1. Siempre y cuando la funcin se optimice de acuerdo al criterio
del problema.

X1
Rank1
Rank2
Rank3

X2
2
2
4

X3
2
3
3

F(X)
1
2
2

4
4
8

I+k+J+L+H+G+D Iteracin

(Para este caso se cumplieron las 2

sentencias If)
Se generaron 2 nmeros aleatorios adicionales de tal manera que el
primero escogi la variable X2 y el 3er rank del mismo.
Como expone el algoritmo se debera cambiar el componente del Rank
prximo por un valor de 1. Pero en este caso la funcin objetivo no optimiza
por lo que no escogemos el vector Harmony en la Harmony Memory.

X1

X2

X3

F(X)

Rank1

Rank2

Rank3

I+k+J+L+H+G+D+X Iteracin (Para este caso se cumplieron las 2


sentencias If)
Se generaron 2 nmeros aleatorios adicionales de tal manera que el
primero escogi la variable X3 y el 3er rank del mismo.
Como expone el algoritmo se cambio el componente del rank prximo
por un valor de 1. Siempre y cuando la funcin se optimice de acuerdo al
criterio del problema.
Para la nueva Harmony Memory se debe ordenar los vectores de la matriz
de tal manera que los valores de F(X) sean ascendentes.

X1

X2

X3

F(X)

Rank1

Rank2

Rank3

Solucin ptima
Rank 1= (2,3,1)
F(X)=3

X1

X2

X3

F(X)

Rank1

Rank2

Rank3

T= I+k+J+L+H+G+D+X