Blogs

Friday 1 June 2018

Harmony search

Algorithm[edit]

Harmony search tries to find a vector  which optimizes (minimizes or maximizes) a certain objective function.
The algorithm has the following steps:
Step 1: Generate random vectors () as many as  (harmony memory size), then store them in harmony memory (HM).
Step 2: Generate a new vector . For each component ,
  • with probability  (harmony memory considering rate; 0 ≤  ≤ 1), pick the stored value from HM: 
  • with probability , pick a random value within the allowed range.
Step 3: Perform additional work if the value in Step 2 came from HM.
  • with probability  (pitch adjusting rate; 0 ≤  ≤ 1), change  by a small amount:  or  for discrete variable; or  for continuous variable.
  • with probability , do nothing.
Step 4: If  is better than the worst vector  in HM, replace  with .
Step 5: Repeat from Step 2 to Step 4 until termination criterion (e.g. maximum iterations) is satisfied.
The parameters of the algorithm are
  •  = the size of the harmony memory. It generally varies from 1 to 100. (typical value = 30)
  •  = the rate of choosing a value from the harmony memory. It generally varies from 0.7 to 0.99. (typical value = 0.9)
  •  = 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.
  •  (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.

No comments:

Post a Comment