Optimalizace hejnem částic

Z Wikipedie, otevřené encyklopedie

Optimalizace hejnem částic (z anglického Particle Swarm Optimization, používá se zkratka PSO) je optimalizační meta-heuristická technika v oboru umělé inteligence inspirovaná chováním hejna ptáků při hledání potravy. Poprvé ji popsali Kennedy a Eberhart v roce 1995.[1] Řadíme ji k dalším technikám používajících inteligenci hejna.

Každá částice je definována svoji polohou, rychlostí a pamětí předchozích úspěchů při hledání. Částice jsou ovlivňovány ostatními úspěšnějšími částicemi hejna. Algoritmus počítá pohyb hejna v diskrétních časových krocích a neustále upravuje hodnoty popisující částice.

Ačkoliv je PSO poměrně nová technika, získala na popularitě při řešení různých optimalizačních úloh. Mezi její hlavní výhody patří snadná implementace a rychlá konvergence k optimu pro širokou škálu účelových funkcí.[2]

Popis algoritmu[editovat | editovat zdroj]

Dle Clerca neexistuje žádný standardní PSO[3], ve svém článku však odkazuje na verzi Standard PSO 2007[4], jejímž je sám autorem. Implementace Standard PSO jsou na Particle Swarm Central[5] uveřejňovány s motivací, aby vznikl jednotný základ, se kterým mohou vědci vytvářet srovnání. V dalším popisu budeme vycházet právě z této verze.

Popis Standard PSO 2007[editovat | editovat zdroj]

Na počátku máme hejno částic, částice jsou náhodně rozmístěny v prohledávacím prostoru. Velikost hejna se obvykle volí , kde značí dimenzi prohledávacího prostoru. Každá částice si pamatuje svoji nejlepší polohu (tj. bod, kde částice dosáhla maximální resp. minimální hodnoty účelové funkce). Dále se používá průběžné globální optimum částicemi v okolí částice : . Částici přiřazujeme její polohu a rychlost v čase . Počáteční a volíme více méně náhodně. Předpokládá se ještě znalost omezení prohledávacího prostoru, prohledávacím prostorem je obvykle buď hyperkrychle nebo D-dimenzionální kvádr.

Algoritmus při svém běhu iteruje jeden výpočtový krok, který je jádrem celého PSO. Výpočtový krok se iteruje buď po danou dobu (konstantně-krát), nebo dokud není nalezeno přijatelné optimum (nejedná se tedy o skutečné optimum, ale o přibližné řešení). V průběhu algoritmu mohou částice opustit vyhledávací prostor. V závislosti na naší volbě pak lze pozici částic uvnitř prostoru vynutit, nebo naopak částice nechat, ale přiřadit jim například nulovou hodnotu účelové funkce.

Zásadní vlastností částic je jejich sociální chování, čímž se myslí komunikace mezi částicemi o jimi nalezených hodnotách účelové funkce. Každá částice se však nedorozumívá s každou, ale pouze se svým vybraným okolím. Okolí je zde pouze topologický pojem a vůbec nesouvisí s pozicemi částic v prostoru (tak tomu je až v různých modifikacích PSO). Na počátku se každá částice o každé jiné částici rozhodne s pravděpodobností , zda bude od částice přebírat informace. Tedy zda . Toto okolí se však po každém kroku může změnit. Volíme si, zda chceme reinicializovat všechna spojení částic po každé úspěšné, nebo každé neúspěšné iteraci. Iteraci považujeme za úspěšnou, pokud se nám podařilo zlepšit doposud nejlepší známé řešení.

Další použité značení[editovat | editovat zdroj]

  • – účelová funkce, kterou se snažíme maximalizovat
  • – první kognitivní/konfidenční koeficient, doporučená hodnota:
  • – druhý kognitivní/konfidenční koeficient, doporučená hodnota:
  • – náhodné číslo z rovnoměrného rozdělení na intervalu od včetně do včetně.
  • – omezení prohledávacího prostoru v dimenzi

Inicializace algoritmu[editovat | editovat zdroj]

  • pro každou částici
    1. – náhodně rozmístíme částice v prostoru
    2. – přidělíme jim vektory rychlosti
    3. – a řekneme, že předchozí nejlepší pozice je ta aktuální
    4. pro každou částici
      • Pokud je potom

Výpočetní krok[editovat | editovat zdroj]

Takto lze popsat výpočetní krok algoritmu v čase , kde může být buď konstanta, nebo naopak není předem známo, protože algoritmus se nezastaví, dokud nenalezne uspokojivé řešení. Na konci každého kroku lze nejlepší řešení určit jako nejúspěšnější z řešení částic .

  1. pro každou částici
    1. spočítej globální optimum ze svého okolí
      • pro každé
        • pokud je potom
    2. pokud je potom
    3. jinak
    4. aktualizujeme polohu částice
      • Chceme-li vynutit omezení prohledávacího prostoru
        • Pro každé
          • Je-li provedeme
          • Je-li provedeme
  2. nakonec aktualizujeme informaci o nejlepší předchozí poloze
    • pro každou částici
      • pokud je potom
  3. V závislosti na (ne)úspěšnosti kroku znovu vytvoříme pro každou částici podobně jako v Inicializace algoritmu v kroku 5

Explorace versus Exploatace[editovat | editovat zdroj]

Technika optimalizace hejnem je meta-heuristika procházení prohledávacím prostorem. Metoda neprochází celý prohledávací prostor a v souvislosti s tím nás často zajímá takzvaný poměr explorace k exploataci. Explorace, neboli prozkoumávání, je tendence částic procházet nové dosud nenavštívené části prohledávacího prostoru. Toho se využívá, aby algoritmus nesklouzl do lokálního optima, neboli předčasně nekonvergoval. Naproti tomu přemíra explorace může vést k tomu, že se dostaneme do blízkosti optimálního řešení, nikdy však nezačneme zkoumat blízké okolí tohoto bodu a v důsledku zbytečně nenalezneme skutečné optimum. Částice tedy musí být schopny provádět i lokální prohledávání, ač to je samo o sobě na počátku nežádoucí. Clerc se ve svém článku zabývá explorací a exploatací v případě PSO[3].

Nejprve je potřeba upřesnit, co je exploatace. Vezmeme-li v úvahu body, které již částice navštívili, a nějaké jejich okolí, pak exploatací nazveme pohyb částice v prostoru, který odpovídá sjednocení těchto okolí. Řekněme, že za okolí bodu budeme považovat všechny body, které leží do vzdálenosti . Můžeme použít například Eukleidovskou metriku. Explorací nazveme pohyb částice mimo toto sjednocení všech okolí navštívených bodů. Nazývejme sjednocená všech okolí navštívených bodů jako exploatační oblast.

Clerc ukazuje, že s rostoucí dimenzí prohledávacího prostoru klesá podíl velikosti exploatační oblasti vzhledem k velikosti celého prohledávacího prostoru. S tím nutně klesá i pravděpodobnost, že se částice posune do této exploatační oblasti. Pokud je tedy dimenze prohledávacího prostoru dostatečně velká, je míra exploatace skoro nulová. Autor upozorňuje, že je nutné dbát velké opatrnosti v případě tvrzení o "vyvážené míře explorace a exploatace", neboť často nemají opodstatnění.

Varianty algoritmu[editovat | editovat zdroj]

PSO je v podstatě velmi jednoduché. Nabízí se však řada otázek a různých modifikací. Například proč by první a druhý konfidenční koeficient a měly nabývat doporučených hodnot. Zajímavé je, že pokud jsou hodnoty významně jiné, často algoritmus předčasně konverguje nebo naopak tendence ke konvergování postrádá. Každý takovýto koeficient vyvolává snahu, abychom se ho zbavili, protože nalezení vhodných hodnot nezřídka vyžaduje mnoho experimentů. Fernández-Martínez a García-Gonzalo ve svém článku[6] se pomocí analogií s fyzikálními ději snaží význam těchto hodnot vysvětlit. Následně navrhují své varianty algoritmu, které tyto koeficienty nevyžadují.

Úpravy koeficientů[editovat | editovat zdroj]

Některé úpravy pouze přidávají koeficienty. Hlavní rovnice algoritmu

v SPSO 2007 se od staršího konceptu PSO například liší koeficientem , který také bývá nazýván inerciální vahou.[2] Často se uvádí dva koeficienty místo jednoho, pak vypadá hlavní rovnice takto:
.

Eberhart a Shi navrhli variantu, kde se s rostoucím časem lineárně zmenšuje, cílem je zajistit lepší konvergenci.[7]

Další variantu navrhli Clerc a Kennedy[8] přidáním takzvaného zkracujícího faktoru (z originálu: constriction factor) :
, kde .
Přitom a vyžaduje se omezení . Naproti tomu je libovolná konstanta z intervalu . Zkracující faktor i faktor inerciální váhy se mnohdy kombinují.

Varianty topologií[editovat | editovat zdroj]

Hojná skupina variant PSO používá různé topologie mezi částicemi. Záměrem je dosáhnout možnosti aplikovat PSO na úlohy vyžadující multimodální optimalizaci, nebo prosté zlepšení konvergence. Někdy se rozděluje celé hejno (swarm) do menších podhejn (subswarm). Hlavní hejno pak mívá jinou topologii než jakou používají podhejna.

Model gbest[editovat | editovat zdroj]

Model gbest vychází ze zkráceniny global best, tedy globálního optima. V tomto modelu komunikuje každá částice s každou. Tato topologie však obvykle trpí problémem s předčasnou konvergencí.

Model lbest[editovat | editovat zdroj]

Název tohoto modelu pochází ze zkráceniny local best, tedy lokálního optima. Graf, který popisuje komunikaci mezi částicemi (tj. vrcholy jsou částice a hrany představují fakt, že částice komunikuje s jinou částicí) odpovídá kružnici. V tomto modelu se informace o globálním optimu šíří nejpomaleji. Pokud tedy je globálních optim více, mají částice topologicky vzdálenější více času konvergovat ke svému optimu.

von Neumannův model[editovat | editovat zdroj]

V tomto modelu odpovídá graf popisující komunikaci čtvercové mřížce. Každá částice tedy komunikuje se 4 svými sousedy. Typicky se von Neumannův model aplikuje na hlavní hejno a na jednotlivá podhejna se pak používá topologie lbest nebo gbest.

Použití Nik[editovat | editovat zdroj]

Nikování (z anglického Niching) vychází názvem z terminologie týkající se přírody (nika), kde se rozděluje hejno částic do jednotlivých menších populací. Tato technika se snaží zabránit konvergence celé populace ke globálnímu maximu. Jedná se o jednu z nejranějších metod používaných k multimodální optimalizaci genetických algoritmů, není však známo mnoho jejích aplikací na PSO.

NichePSO[editovat | editovat zdroj]

Název lze volně přeložit jako Niková optimalizace hejnem částic. Metoda používá sledování vývoje účelové funkce pro každou částici. Pokud se hodnota této funkce po nějakou dobu nemění. Je částice zařazena do vlastní niky, budeme ji říkat zakládající částice. Spolu s ní je do niky zařazen její nejbližší soused (použije se eukleidovská metrika). Každé nice se spočítá její poloměr , který odpovídá vzdálenosti mezi dvěma jejími nejvzdálenějšími členy. Tato vzdálenost se používá při absorbování nových částic a spojování nik. Pokud se nějaká částice dostane do vzdálenosti menší nebo rovné od zakládající částice niky, bude do niky přidána. Pokud se přiblíží k sobě dvě niky, tedy vzdálenost jejich zakládajících částic klesne pod součet poloměrů nik, budou tyto niky spojeny. Pokud nějaká nika dosáhla optima, může její poloměr klesnout k nule. Pak se jako její poloměr považuje malá prahová hodnota.

NichePSO nevyžaduje znalost počtu optim účelové funkce, ani žádnou informaci o velikosti niky. Potřebuje však parametr, který určuje po jaké době částice zakládá vlastní niku. Zároveň je nutné určit prahovou hodnotu.

Použití druhů[editovat | editovat zdroj]

Používání druhů v rámci genetických algoritmů poprvé představil Li a kolektiv[9] Tato metoda vybírá silné jedince (podle jejich hodnoty účelové funkce) a používá je jako semena (z anglického seeds) vlastních skupin nazývaných druhy. Všechny částice, které jsou od vybraného semena do nějaké vzdálenosti jsou pak přiřazeny k vybranému semenu, patří s ním do jednoho druhu.

Li v roce 2004 aplikoval druhy i v PSO.[10] Hlavní myšlenkou je, že v rámci každého druhu nahradí semeno globální optimum pro ostatní částice. Lze tedy na tento algoritmus nazírat jako na modifikaci SPSO 2007, kde se před každým iteračním krokem nejprve přepočtou okolí podle následujícího postupu:

  1. Setřídíme částice do posloupnosti , kde platí (stejně jako výše, je účelová funkce a poloha částice v prohledávacím prostoru; hodnotu účelové funkce se snažíme maximalizovat).
  2. Buď množina druhů
  3. Dokud existuje takové, že částice nepatří do žádného druhu, opakuj:
    1. Vezmi nejmenší takové, že částice nepatří do žádného druhu
    2. Buď množina všech částic takových, že nepatří do žádného druhu a platí . Speciálně tedy
    3. , všechny částice z tedy nyní patří do jednoho druhu

Další modifikace[editovat | editovat zdroj]

Uvedené modifikace nelze v žádném případě považovat za úplný výčet. Tento obor se neustále vyvíjí a vzniká množství nových poznatků. Níže uvedené modifikace, které byly zařazeny pod tento nadpis lze pak považovat za příklady dalších technik.

Použití mutace[editovat | editovat zdroj]

Za jednoduchou úpravu můžeme považovat přidání mutace do výpočtu PSO, kterou navrhl Esquivel a Coello Coello[11]. Mutace původně patří k operátorům genetických algoritmů, zde se konkrétně používá mutace pracující geny reprezentovanými reálnými čísly. V závislosti na aktuálním čase jsou s určitou pravděpodobností mutovány některé složky polohových vektorů částic. S rostoucím časem klesá střední hodnota takové změny.

Hybridní techniky[editovat | editovat zdroj]

Hybridních technik opět existuje více. Popíšeme zde techniku jednu, která kombinuje PSO s diferenční evolucí, jak ji navrhl Pant a kolektiv.[12] Tento algoritmus pracuje ve dvou fázích. V první fázi je dopočten mutant každé částice stejně jako to provádí diferenční evoluce. Pokud je tento mutant úspěšnější než původní částice, nahradí tuto částici. V opačném případě se s částicí naloží jako v běžném PSO.

Související články[editovat | editovat zdroj]

Reference[editovat | editovat zdroj]

  1. Kennedy, J., Eberhart, R.: Particle swarm optimization; Neural Networks, 1995; Proceedings., IEEE International Conference, vol.4; str. 1942-1948 vol.4; Nov/Dec 1995; doi: 10.1109/ICNN.1995.488968; [1]
  2. a b Barrera, J., Coello, C.A.C.: A Review of Particle Swarm Optimization Methods Used for Multimodal Optimization; Innovations in Swarm Intelligence (2009); str. 9-37
  3. a b Clerc, M.: From Theory to Practice in Particle Swarm Optimization; Handbook of Swarm Intelligence; Springer Berlin Heidelberg 2010; ISBN 978-3-642-17390-5; str. 3-86; Svazek 8; Doi: 10.1007/978-3-642-17390-5_1; [2]
  4. [3]
  5. [4]
  6. Fernández-Martínez, J. L., García-Gonzalo, E.: What Makes Particle Swarm Optimization a Very Interesting and Powerful Algorithm?; Handbook of Swarm Intelligence; Springer Berlin Heidelberg 2010; ISBN 978-3-642-17390-5; str. 37-65; [5]; Doi: 10.1007/978-3-642-17390-5_2
  7. Shi, Y.; Eberhart, R.C.: Empirical study of particle swarm optimization; Evolutionary Computation 1999; CEC 99; Proceedings of the 1999 Congress on, vol.3, no., str.3 vol. (xxxvii+2348); 1999; doi: 10.1109/CEC.1999.785511; [6]
  8. Clerc, M., Kennedy, J.: Evolutionary Computation, IEEE Transactions on In Evolutionary Computation; IEEE Transactions on, Vol. 6, No. 1. (2002); str. 58-73
  9. Li, J.P., Balazs, M.E., Parks, G.T., Clarkson, P.J.: A species conserving genetic algorithm for multimodal function optimization. Evolutionary Computation 10(3); str. 207–234 (2002)
  10. Li, X.: Adaptively choosing neighbourhood bests using species in a particle swarm optimizer for multimodal function optimization; In: Deb, K., et al. (eds.) GECCO 2004; LNCS, vol. 3102; str. 105–116; Springer, Heidelberg (2004)
  11. Esquivel, S.C.; Coello, C.A.C.: On the use of particle swarm optimization with multimodal functions; Evolutionary Computation, 2003; CEC '03; The 2003 Congress on , vol.2, no., str. 1130- 1136 svazek 2, 8-12 Dec. 2003; doi: 10.1109/CEC.2003.1299795; [7]
  12. Pant, M., Thangaraj, R., Grosan, C., Abraham, A.: Hybrid differential evolution - particle swarm optimization algorithm for solving global optimization problems; In: Third International Conference on Digital Information Management (ICDIM 2008); Listopad 2008; str. 18–24 (2008)

Externí odkazy[editovat | editovat zdroj]

PSC. Particle Swarm Central, [8]