Алгоритъм на светулката

От testwiki
Версия от 04:38, 27 февруари 2019 на imported>BotNinja ({{lang-en}} => {{lang|en}})
(разл) ← По-стара версия | Текуща версия (разл) | По-нова версия → (разл)
Направо към навигацията Направо към търсенето

Алгоритъмът на светулката (Шаблон:Lang) е метаевристичен алгоритъм, предложен за първи път от британския математик Син-Шъ Ян през 2008 година. Алгоритъмът се прилага за оптимизация на бенчмарк функции и използва популационно търсене, т.е. кандидат-решенията използват като градивни блокове части от различни решения.

Биологична метафора

Алгоритъмът е вдъхновен от поведението на светулките, което използва биолуминесценция като форма на комуникация с други светулки, за търсене на храна и за отблъскване на хищници. Поведението им съдържа характеристики на интелигентност в рояк (swarm intelligence) чрез самоорганизация и децентрализирано вземане на решения. Биолуминесценцията служи и да сигнализрат при търсенето на партньор, като яркостта е индикатор за приспособимостта на мъжките екземпляри.[1]

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

За нуждите на алгоритъма, се приема, че светулките са безполови, а поведението им се заключава в три основни правила:

  1. Светулката бива привличана от други светулки (без значение от техния пол),
  2. Привлекателността на една светулка е пропорционална на яркостта ѝ и намалява при увеличаването на разстоянието между светулките, и
  3. Видът на целевата функция определя яркостта на светулката.

Допускането при алгоритъма е, че популация от n кандидат-решения на една оптимизационна задача са агенти от вида на светулката. Тези агенти представляват вектори от размерност d, представляваща променливите на задачата. Качеството (оптималността) на всяко решение xi=[xi1,xi2,,xid] се оценява посредством фитнес функция f(xi),i=1,,n. Всеки агент „свети“ пропорционално на качеството си, което заедно с привлекателността му (β), определя колко силно привлича други агенти от рояка.

Два други потребителски дефинирани параметъра са стойността на максималната привлекателност (β0) и коефициента на абсорбция (γ), който определя вариацията на привлекателността на светулката с увеличението на разстоянието до светулката, с която тя комуникира.[2]

Псевдокод

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

1  Parameters: n,β0,γ
2  Initialise the fireflies population xi randomly
3  Compute f(x)
4  while stop condition not met do
5     imin=argminif(xi)
6     ximin=argminxif(xi)
7     for i=1 to n do
8        for j=1 to n do
9           if  f(xj)<f(xi) then {Move firefly i towards j}
10             Calculate distance rj
11             Obtain attractiveness: ββ0eγrj
12             Generate a random solution ui
13             for k=1 to d do
14                xi,k=(1β)xi,k+βxj,k+ui,k
15             end for
16          end if
17       end for
18    end for
19    Generate a random solution u
20    for k=1 to d do {Best firefly moves randomly}
21       ximin,k=ximin,k+uk
22    end for
23    Compute xi
24    Find the current best
25 end while
26 Postprocess results and visualisation

Източници

  1. Kar, A.K. Bio inspired computing – A review of algorithms and scope of applications. Expert Systems with Applications, Volume 59 Issue C, October 2016, Pages 20-32 (ResearchGate)
  2. 2,0 2,1 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.