Алгоритъм на прилепа

От testwiki
Версия от 16:41, 2 февруари 2020 на imported>Vodenbot (ненужни интервали в скоби)
(разл) ← По-стара версия | Текуща версия (разл) | По-нова версия → (разл)
Направо към навигацията Направо към търсенето

Алгоритъмът на прилепа (Шаблон:Lang) е метаевристичен алгоритъм за глобална оптимизация, вдъхновен от ехолокационното поведение на насекомоядните прилепи с вариращи честоти и височина на издавания звук.[1][2] Алгоритъмът на прилепа е разработен през 2010 година от британския математик Син-Шъ Ян, [3] разработил също и метаевристичните алгоритми на светулката (firefly algorithm), на кукувицата (cuckoo search) и на опрашването (flower pollination algorithm).

Описание на алгоритъма

Метафората за ехолокацията на прилепите, използвана в тази биологично вдъхновена изчислителна парадигма, може да се резюмира по следния начин: Всеки виртуален „прилеп“ (агент) се движи на случаен принцип със скорост vi до позиция (решение) xi с вариращи параметри честота (дължина на вълната) и височина на издавания звук Ai. Докато търси и открива плячката си, прилепът променя честотата, височината и пулсацията r. Търсенето на решение става по-интензивно при локално случайно блуждаене. Изборът на най-добро решение продължава докато не бъдат удовлетворени определени критерии за край. Алгоритъмът основно използва техника за настройване на честотата, контролираща динамичното поведение на рояк от прилепи, и намира баланс между проучване и експлоатация (exploration and exploitation), контролирайки настройките на зависимите от алгоритъма параметри.

Детайлно въведение в метаевристичните алгоритми, включително алгоритъма на прилепа, е дадено от Ян [4] с предоставено демо на Matlab/Octave.[5] Демо на Matlab е налично и от портала Matlab exchange.[6]

Псевдокод

Алгоритъмът на прилепа е обобщен като псевдокод по следния начин.[7]

1  Parameters: n,α,γ
2  Initialise the bats population xi and vi randomly
3  Define pulse frequency fi at xi
4  for i = 1 to n do
5     Initialise pulse rates ri and loudness Ai
6  end for
7  Compute f(xi)
8  Find the current best x*
9  while stop condition not met do
10    for i = 1 to n do
11       Generate new solutions by adjusting:
12          Frequency: fi=fmin+(fmaxfmin)β,β[0,1]
13          Velocity: vit=vit1+(xtx*t)fi
14          Location: xt=xit1+vit
15       if rand>ri then
16          Select a solution among the best solutions
17          Generate a local solution around the selected best solution
18       end if
19       Generate a new solution by flying randomly
20       if rand<Ai  &  f(xi)<f(x*)
21          Accept the new solutions
22          Increase: ri : rit+1=ri0[1exp(γt)]
23          Decrease: Ai : Ait+1=αAi
24       end if
25    end for
26    Find the current best x*
27 end while
28 Postprocess results and visualisation

Източници

  1. J. D. Altringham, Bats: Biology and Behaviour, Oxford University Press, (1996).
  2. P. Richardson, Bats. Natural History Museum, London, (2008)
  3. Шаблон:Cite journal
  4. Yang, X. S., Nature-Inspired Metaheuristic Algorithms, 2nd Edition, Luniver Press, (2010).
  5. Шаблон:Cite journal
  6. Bat algorithm (demo), Xin-She Yang, 20 юли 2012
  7. Parpinelli, R. S., Lopes, H. S. New inspirations in swarm intelligence: a survey. Int. J. Bio-Inspired Computation, Vol. 3, No. 1, 2011, 1-16.

Шаблон:Превод от