Harmony search

From Wikipedia, the free encyclopedia
Jump to: navigation, search

In computer science and operations research, harmony search (HS) is a phenomenon-mimicking algorithm (also known as metaheuristic algorithm, soft computing algorithm or evolutionary algorithm) inspired by the improvisation process of musicians. In the HS algorithm, each musician (= decision variable) plays (= generates) a note (= a value) for finding a best harmony (= global optimum) all together. The Harmony Search algorithm has the following merits:

  • HS does not require differential gradients, thus it can consider discontinuous functions as well as continuous functions.
  • HS can handle discrete variables as well as continuous variables.
  • HS does not require initial value setting for the variables.
  • HS is free from divergence.
  • HS may escape local optima.
  • HS may overcome the drawback of GA's building block theory which works well only if the relationship among variables in a chromosome is carefully considered. If neighbor variables in a chromosome have weaker relationship than remote variables, building block theory may not work well because of crossover operation. However, HS explicitly considers the relationship using ensemble operation.
  • HS has a novel stochastic derivative applied to discrete variables, which uses musician's experiences as a searching direction.
  • Certain HS variants do not require algorithm parameters such as HMCR and PAR, thus novice users can easily use the algorithm.

Contents

[edit] Basic Harmony Search Algorithm

Harmony search tries to find a vector \mathbf{x} which optimizes (minimizes or maximizes) a certain objective function.

The algorithm has the following steps:

Step 1: Generate random vectors (\mathbf{x}^1, \ldots, \mathbf{x}^{hms}) as many as hms (harmony memory size), then store them in harmony memory (HM).


\mathbf{HM} =
\begin{bmatrix}
x^1_1 & \cdots & x^1_n & | & f(\mathbf{x}^1)\\
\vdots & \ddots & \vdots & | & \vdots\\
x^{hms}_1 & \cdots & x^{hms}_n & | & f(\mathbf{x}^{hms})\\
\end{bmatrix}.

Step 2: Generate a new vector \mathbf{x}'. For each component x^'_i,

  • with probability hmcr (harmony memory considering rate; 0 ≤ hmcr ≤ 1), pick the stored value from HM: x^'_i \leftarrow x^{int(u(0, 1)*hms)+1}_i
  • with probability 1 − hmcr, pick a random value within the allowed range.

Step 3: Perform additional work if the value in Step 2 came from HM.

  • with probability par (pitch adjusting rate; 0 ≤ par ≤ 1), change x^'_i by a small amount: x^'_i \leftarrow x^'_i + \delta or x^'_i \leftarrow x^'_i - \delta for discrete variable; or x^'_i \leftarrow x^'_i + fw \cdot u(-1, 1) for continuous variable.
  • with probability 1 − par, do nothing.

Step 4: If \mathbf{x}^' is better than the worst vector \mathbf{x}^{Worst} in HM, replace \mathbf{x}^{Worst} with \mathbf{x}'.

Step 5: Repeat from Step 2 to Step 4 until termination criterion (e.g. maximum iterations) is satisfied.

The parameters of the algorithm are

  • hms = the size of the harmony memory. It generally varies from 1 to 100. (typical value = 30)
  • hmcr = the rate of choosing a value from the harmony memory. It generally varies from 0.7 to 0.99. (typical value = 0.9)
  • par = the rate of choosing a neighboring value. It generally varies from 0.1 to 0.5. (typical value = 0.3)
  • δ = the amount between two neighboring values in discrete candidate set.
  • fw (fret width, formerly bandwidth) = the amount of maximum change in pitch adjustment. This can be (0.01 × allowed range) to (0.001 × allowed range).

It is possible to vary the parameter values as the search progresses, which gives an effect similar to simulated annealing.

Parameter-setting-free researches have been also performed. In the researches, algorithm users do not need tedious parameter setting process.

[edit] Other Related Algorithms

Harmony search lies in the fields of:

Other evolutionary computing methods include:

Other metaheuristic methods include:

Other stochastic methods include:

[edit] References

[edit] General Information

[edit] Theory of Harmony Search

[edit] Applications in Computer Science

[edit] Applications in Engineering

  • Fuzzy Data Clustering: Malaki, M.,Pourbaghery, JA, A Abolhassani, H. A combinatory approach to fuzzy clustering with harmony search and its applications to space shuttle data, Proceedings of the SCIS & ISIS,17–21,2008.
  • Offshore Structure Mooring: Ryu, S., Duggal, A.S., Heyl, C. N., and Geem, Z. W. Mooring Cost Optimization via Harmony Search, Proceedings of the 26th International Conference on Offshore Mechanics and Arctic Engineering (OMAE 2007), ASME, San Diego, CA, USA, June 10-15 2007.
  • Ecological Conservation: Geem, Z. W. and Williams, J. C. Ecological Optimization Using Harmony Search, Proceedings of American Conference on Applied Mathematics, Harvard University, Cambridge, MA, USA, March 24-26, 2008.

[edit] Source Codes

  • Improved Harmony Search (MATLAB) [1]
  • Hybrid HS-SQP (Visual C++) [2]
  • Multiobjective Harmony Search (C#) [3]
  • Other HS Variants [4]
Personal tools
Namespaces
Variants
Actions
Navigation
Interaction
Toolbox
Print/export