OSTRAVSKÁ UNIVERZITA V OSTRAVĚ PŘÍRODOVĚDECKÁ FAKULTA KATEDRA MATEMATIKY Adaptace v algoritmu diferenciální evoluce Doktorská disertační práce Autor: Mgr. Radka Poláková Vedoucí práce: doc. Ing. Josef Tvrdík, CSc. 2014
UNIVERSITY OF OSTRAVA FACULTY OF SCIENCE DEPARTMENT OF MATHEMATICS Adaptation in differential evolution algorithm Ph.D. Thesis Author: Mgr. Radka Poláková Supervisor: doc. Ing. Josef Tvrdík, CSc. 2014
Já, níže podepsaná studentka, tímto čestně prohlašuji, že text mnou odevzdané závěrečné práce v písemné podobě i na CD nosiči je totožný s textem závěrečné práce vloženým v databázi DIPL2. Prohlašuji, že předložená práce je mým původním autorským dílem, které jsem vypracovala samostatně. Veškerou literaturu a další zdroje, z nichž jsem při zpracování čerpala, v práci řádně cituji a jsou uvedeny v seznamu použité literatury. V Ostravě dne 14. 8. 2014 podpis studentky...................
Děkuji mému vedoucímu práce docentu Josefu Tvrdíkovi za podnětné rady při výzkumu během doktorského studia i při tvorbě této závěrečné práce. Velký dík patří také mé rodině, která se mnou měla během sepisování práce velikou trpělivost a která mi v tomto procesu byla neocenitelnou podporou. V neposlední řadě také děkuji mému tatínkovi za přečtení práce a pomoc při odstranění jazykových chyb. Radka Poláková
ABSTRAKT Optimalizace je úloha objevující se ve spoustě oblastí lidské činnosti. Jedním z velmi úspěšných stochastických algoritmů pro globální optimalizaci je relativně mladý algoritmus diferenciální evoluce. Jedná se o algoritmus jednoduchý a populární. Efektivita tohoto algoritmu však velmi záleží na nastavení jeho vstupních parametrů. Často se stává, že při jeho praktickém použití je největším problémem nastavení vhodných hodnot vstupních parametrů. Z tohoto důvodu se od vzniku algoritmu objevila v literatuře řada návrhů adaptivních verzí tohoto algoritmu. Vzhledem k tomu, že existují různě náročné optimalizační problémy a také, že každý z adaptivních návrhů se jeví jako vhodný jen pro nějakou podskupinu optimalizačních problémů, stále vznikají nové verze algoritmu. Úkolem disertační práce je studium algoritmu diferenciální evoluce, existujících adaptivních mechanismů navržených k adaptaci jeho řídících parametrů a konvergence tohoto algoritmu. Dalším z cílů práce je vlastní návrh na adaptaci parametrů algoritmu nebo modifikace algoritmu, která zvýší jeho efektivitu. Kapitola 1 je úvodem do problematiky, kapitola 2 zpřesňuje cíle disertační práce, kapitola 3 se věnuje definici problému globální optimalizace. Kapitola 4 obsahuje krátký přehled nejznámějších optimalizačních algoritmů. V kapitole 5 je podrobně popsán samotný algoritmus diferenciální evoluce. V kapitolách 6 a 7 jsou popsány nejznámější adaptivní verze a modifikace algoritmu diferenciální evoluce. Kapitola 8 se věnuje základním otázkám konvergence algoritmu diferenciální evoluce. V kapitole 9 je popsáno porovnávání efektivity optimalizačních algoritmů. V kapitole 10 je uvedena definice optimalizačního problému s vázanými extrémy a popis některých známých mechanismů k řešení problémů tohoto typu. Kapitola 11 se věnuje
původním výsledkům autorky, porovnáním stávajících adaptivních verzí studovaného algoritmu a návrhům vlastních adaptivních verzí a modifikací diferenciální evoluce. Klíčová slova: globální optimalizace, stochastický algoritmus, diferenciální evoluce, adaptace v diferenciální evoluci, konvergence diferenciální evoluce, globální optimalizace s vázanými extrémy.
ABSTRACT As optimization is the task appearing in many fields of human activity, the global optimization deserves an attention of computer scientists since 1980s. There are many stochastic algorithms that perform the global optimization task. Differential evolution algorithm is simple yet very powerful stochastic algorithm for the global optimization that is relatively young. It is well-known, that efficiency of any stochastic algorithm strongly depends on the setting of its control parameters. It is often the case that the setting of suitable values of input parameters is the most time-consuming process in real-world global optimization problems. It was the motivation for development of several adaptive versions of differential evolution that have appeared in literature recently. As there are various optimization problems and each adaptive design is suitable only to a certain subset of optimization problems, new versions of the differential evolution algorithm are appearing permanently in literature. The aim of the thesis is to study the existing adaptive mechanisms proposed for differential evolution algorithm and the problem of convergence of this algorithm. Additional aim of the thesis is to propose a novel adaptation mechanism which increases the efficiency of differential evolution. Chapter 1 is introduction, Chapter 2 specifies the aims of thesis more precisely, and Chapter 3 formulates the definition of the global optimization problem. Chapter 4 provides a brief survey of evolutionary algorithms. The algorithm of differential evolution is described in detail in Chapter 5. The state-of-the-art of adaptive versions and the modifications of differential evolution algorithm are described in Chapters 6 and 7. Chapter 8 addresses basic questions about convergence of the differential evolution
algorithm. Experimental comparison of efficiency of optimization algorithms is explained in Chapter 9. The definition of constrained optimization problem and the description of some known methods for solving of these problems are introduced in Chapter 10. Chapter 11 provides origin results of author, new proposals of adaptive versions and modifications of the algorithm are presented and experimentally compared with existing adaptive versions of differential evolution. Keywords: global optimization, stochastic algorithm, differential evolution, adaptation in differential evolution, convergence of differential evolution algorithm, global optimization of constrained problems.
Obsah 1 Úvod 17 2 Cíle disertační práce 19 3 Problém globální optimalizace 20 4 Evoluční algoritmy 22 5 Diferenciální evoluce (DE) 24 5.1 Mutace.............................. 27 5.2 Křížení............................... 31 5.2.1 Binomické křížení.................... 31 5.2.2 Exponenciální křížení.................. 32 6 Adaptace parametrů 36 6.1 Adaptace parametrů DE..................... 36 6.2 Algoritmus jde.......................... 38 6.3 Soutěživá DE........................... 41 6.4 Algoritmus JADE........................ 46 6.5 Algoritmus SADE........................ 49 6.6 Algoritmus EPSDE........................ 52 6.7 Algoritmus CoDE......................... 55 6.8 Algoritmus SHADE....................... 57 6.9 Adaptace velikosti populace v DE............... 61 7 Algoritmus ODE 64 8 Konvergence algoritmu diferenciální evoluce 67 15
9 Porovnávání efektivity algoritmů, sady testovacích problémů 71 10 Optimalizační problémy s vázanými extrémy 78 10.1 Některé mechasnismy pro algoritmy k optimalizaci problémů s vázanými extrémy.................. 80 10.2 Algoritmy pro optimalizační problémy s vázanými extrémy založené na DE.............. 83 11 Původní výsledky 88 11.1 Porovnání EPSDE a soutěživé DE............... 88 11.2 Efektivita adaptivních verzí DE, aplikace ODE na adaptivní verze DE............................. 95 11.3 Navržené adaptivní přístupy v DE............... 102 11.3.1 Comp3jDE........................ 102 11.3.2 Soutěživá DE s oživením populace........... 110 11.4 Návrhy algoritmů pro optimalizační problémy s vázanými extrémy....................... 116 12 Závěr a zhodnocení práce 123 Použitá literatura 125 Seznam prací autorky 136 Seznam obrázků 139 Seznam tabulek 140 Seznam algoritmů 142 16
1 Úvod V mnoha oborech lidské činnosti se řeší tzv. problém globální optimalizace. Podstatou tohoto problému je minimalizovat nebo maximalizovat nějakou známou funkci. Často se jedná o funkce, pro které nelze použít analytický způsob hledání optima, např. když funkce není diferencovatelná. V takovéto situaci existuje možnost použít nějaký stochastický optimalizační algoritmus a pokusit se nalézt optimum pomocí něho. Jedním ze stochastických algoritmů řešících problém globální optimalizace je i diferenciální evoluce. Jedná se o relativně mladý stochastický algoritmus, byl navržen Stornem a Pricem v roce 1995 [49, 50], tento algoritmus patří mezi algoritmy evoluční. Experimentální výzkumy ukazují, že jde o algoritmus, který často konverguje (najde přijatelné řešení problému) rychleji, než jiné stochastické algoritmy. Jeho rychlost konvergence, a tedy i efektivita, však silně závisí na nastavení parametrů. Pokusné nastavování parametrů algoritmu na hodnoty vhodné pro aktuálně řešený problém může být zdlouhavé a navíc k efektivitě algoritmu mohou v každé fázi evoluce přispívat různá nastavení algoritmu. Od navržení algoritmu byla z těchto důvodů předložena spousta jeho adaptivních variant či modifikací. Z nichž nejznámější a v praxi nejpoužívanější jsou [6, 30, 43, 44, 55, 59, 71, 79]. Diferenciální evoluce byla původně navržena jako algoritmus pro řešení jednoduchých optimalizačních problémů, tedy problémů, jejichž jedinou podmínkou pro hledaný extrém je definice oblasti, v níž se má extrém nacházet, přesto však existují také modifikace algoritmu určené k řešení optimalizačních problémů s vázanými extrémy [3, 20, 28, 52], tedy optimalizační problémy, u nichž je hledaný globální extrém kromě oblasti v níž má být nalezen, omezen ještě dalšími podmínkami, které musí splňovat. 17
V předkládané práci je podrobně popsán algoritmus diferenciální evoluce a jeho nejznámější adaptivní varianty [6, 30, 43, 44, 55, 59, 71, 79]. Dále je zde popsán vlastní návrh na adaptaci parametrů algoritmu diferenciální evoluce v kap. 11.3.1 a také návrh úpravy algoritmu lépe využívající poskytnutý výpočetní čas v kap. 11.3.2. V práci jsou dále popsány vlastní návrhy úpravy algoritmu diferenciální evoluce pro řešení optimalizačních problémů s vázanými extrémy. Autorka se v práci věnuje také diskuzi otázek konvergence algoritmu diferenciální evoluce. 18
2 Cíle disertační práce Této disertační práci byly při zadávání vytýčeny následující cíle. Studium algoritmu diferenciální evoluce. Studium dříve navržených adaptivních verzí algoritmu diferenciální evoluce. Studium konvergence algoritmu diferenciální evoluce a jevů s ní souvisejících. Návrh alternativního adaptivního přístupu v diferenciální evoluci. Implementace navrženého přístupu a jeho porovnání na testovacích problémech s dříve navrženými přístupy. 19
3 Problém globální optimalizace Problém globální optimalizace je problém nalezení souřadnic takového bodu v definičním oboru funkce, ve kterém má funkce globální extrém neboli globální optimum, tedy globální minimum či globální maximum. Úlohu nalezení globálního minima můžeme formulovat následovně. Mějme reálnou funkci f : S R, S R d. (1) Funkci f nazýváme účelovou funkcí, d je dimenze problému. Omezíme se na situaci, kdy globální minimum hledáme ve spojité oblasti d S = [a j, b j ]; a j < b j, j = 1, 2,..., d (2) j=1 a účelovou funkci f umíme vyhodnotit v každém bodě x z oblasti S. Bod x je bod globálního minima účelové funkce f v oblasti S, jestliže pro něj platí x S f(x ) f(x). (3) Spočívá-li problém optimalizace v nalezení bodu globálního maxima, jednoduše úlohu maximalizace účelové funkce f(x) převedeme na úlohu minimalizace funkce g(x) = f(x). Existují obecně známé analytické postupy, jak nalézt řešení takto definovaného problému a zdálo by se, že jeho řešení bude vždy jednoduché. Často je ale nutné řešit optimalizační problém pro účelovou funkci, pro níž je použití analytické metody obtížné nebo zcela nemožné. Jedná se o účelové funkce, které mají v řešené oblasti více lokálních minim, nebo účelové funkce, které nejsou diferencovatelné. 20
Analýza problému globální optimalizace [1] ukazuje, že neexistuje deterministický algoritmus pro řešení obecné úlohy tohoto problému v polynomiálním čase. K řešení optimalizačního problému se proto využívají stochastické algoritmy, zejména evolučního typu. Stochastické algoritmy nenaleznou přesné řešení problému globální optimalizace, ale dokáží se k řešení problému většinou přiblížit s přijatelnou přesností. 21
4 Evoluční algoritmy Nedeterministický algoritmus využívající náhodu, zkušenost, intuici a analogii se nazývá stochastický algoritmus nebo také heuristika. Takový algoritmus však na rozdíl od deterministického algoritmu nezajišt uje nalezení řešení. Stochastické algoritmy se používají také k řešení optimalizačních problémů. Stochastické algoritmy k řešení optimalizačních problémů však nezaručují poskytnutí přesného řešení takového problému, často jsou ale schopné se k tomuto řešení přiblížit a poskytnout tak řešení sice nepřesné, ale prakticky použitelné. Heuristiky k řešení optimalizačních problémů často vznikají na základě znalostí týkajících se přírodních nebo sociálních systémů, většina z nich v sobě obsahuje jakousi formu procesu učení. Z běžně známých stochastických optimalizačních algoritmů v sobě proces učení neobsahuje pouze algoritmus slepého náhodného prohledávání [19]. Algoritmus simulovaného žíhání [19] je modelem pomalého ochlazování tuhého tělesa, algoritmus tabusearch [19] modeluje hledání předmětu člověkem. Velká část stochastických optimalizačních algoritmů pracuje najednou se skupinou potenciálních řešení problému, tedy s více body z prohledávaného prostoru S současně. Každý z těchto bodů mění svou polohu v prohledávaném prostoru a posouvá se tak vždy na lepší pozici vzhledem k pozici předchozí a vzhledem k typu optimalizační úlohy. Mezi stochastické algoritmy využívající poznatků výzkumů různých sociálních skupin patří např. PSO [10], SOMA [78], algoritmus mravenčí kolonie [12] a také algoritmus ABC [18]. Algoritmus PSO využívá znalostí získaných studiem ptačích a rybích hejn. Algoritmus SOMA modeluje chování smečky divokých zvířat pronásledující kořist a algoritmus mravenčí kolonie 22
využívá k hledání optima model chování a spolupráce mravenců v mraveništích. Algoritmus ABC pracuje jako model včelího roje. Další třídou stochastických algoritmů řešících optimalizační problém a pracujících najednou se skupinou potenciálních řešení problému, tedy s více body z prohledávaného prostoru S současně, jsou algoritmy evoluční. Tyto algoritmy jsou v podstatě jednoduchými modely evoluční teorie vývoje populací, využívají poznatků předních vědců v oblasti biologie a genetiky, Johanna Gregora Mendela a Charlese Darwina. Množina potenciálních řešení se v nich nazývá populace. Populace se v těchto algoritmech vyvíjí z generace na generaci s využitím operátorů křížení, mutace, výběru a migrace. Každý prvek populace je v každém okamžiku běhu algoritmu jedním z možných řešení optimalizačního problému. K evolučním algoritmům se řadí např. genetické algoritmy [19], evoluční strategie [19], evoluční programování [19], řízené náhodné prohledávání, tzv. algoritmus CRS [42] a také algoritmus diferenciální evoluce. 23
5 Diferenciální evoluce (DE) Diferenciální evoluce (DE) [16, 41, 49, 50] je efektivní a velmi jednoduchý algoritmus. Vzhledem k jeho jednoduchosti a s ní spojené jednoduchosti jeho implementace se jedná o v praxi velmi široce využívaný algoritmus. Algoritmus DE byl navržen v polovině devadesátých let, jedná se tedy o relativně mladý algoritmus. Těší se poměrně vysokému zájmu nejen po stránce využití k řešení konkrétních optimalizačních problémů, ale i po stránce využití při vývoji nových algoritmů řešících optimalizační problém. DE pracuje s uspořádanou N-ticí bodů z prohledávané oblasti S, které se říká populace bodů a bývá označována P. Každý z bodů populace P je adeptem na řešení optimalizačního problému. Populace bodů se za běhu algoritmu vyvíjí. Tedy z g-té generace populace P se vyvine (g+1)-ní generace populace P. Na proces vývoje populace může být nazíráno i tak, že každý prvek populace se vyvíjí hledá si v po sobě jdoucích generacích populace neustále lepší a lepší umístění v prohledávané oblasti S, tedy posouvá se do místa s nižší hodnotou účelové funkce f (za předpokladu její minimalizace). Vývoj prvků populace a tedy vývoj populace probíhá s využitím evolučních operátorů mutace, křížení a výběru. Přesněji, nejdříve se vytvoří počáteční generace P 0 populace P, která se skládá z N bodů. Každý z bodů počáteční generace P 0 je vybrán náhodně (s využitím rovnoměrného rozdělení) z oblasti S. Ve všech bodech, které se takto stanou prvky počáteční generace populace P, se spočítá hodnota účelové funkce f. Poté se opakuje cyklus, v jehož těle se k aktuální generaci P g populace bodů P vytváří nová generace Q g. Když je Q g kompletní, stává se Q g následující generací P g+1 populace. Opakování cyklu probíhá až do splnění ukončovací podmínky. 24
Nová generace Q g se uvnitř zmíněného cyklu tvoří následujícím způsobem. Ke každému bodu x i aktuální generace P g je vytvořen pokusný bod (konkurent) y, který vznikne postupnou aplikací operací mutace a křížení s využitím některých bodů P g. Poté je vyhodnocena účelová funkce f v tomto nově získaném bodě y. Do nové generace Q g populace pak vstupuje lepší (ve smyslu řešené optimalizace) z dvojice: původní bod x i, jeho konkurent y. Tedy platí-li podmínka f(y) f(x i ), vstupuje do nové generace Q g populace nově vytvořený bod y, v opačném případě do generace Q g vstupuje původní bod x i, tedy y jestliže f(y) f(x i,g ) x i,g+1 = jinak. x i,g (4) Diferenciální evoluce je v pseudokódu zapsána v Algoritmu 1. 25
Algoritmus 1 Diferenciální evoluce 1: vygeneruj počáteční generaci P 0 = (x 1, x 2,..., x N ) populace P ; 2: vypočítej hodnotu účelové funkce ve všech bodech generace P 0 ; 3: g=0; 4: repeat 5: Q g = P g ; 6: for i = 1 to N do 7: vytvoř pokusný bod y k bodu x i ; 8: vypočítej hodnotu účelové funkce v bodě y; 9: if f(y) f(x i ) then 10: do Q g vlož na místo bodu x i bod y; 11: end if 12: end for 13: P g+1 = Q g ; 14: g=g+1; 15: until ukončovací podmínka; 26
Pokusný bod y, tzv. konkurent, k bodu x i se v DE vytváří pomocí operací mutace a křížení. Společně s návrhem algoritmu bylo předloženo několik druhů mutace a dva typy křížení [49, 50], další návrhy na mutace se objevily v pozdějších pracech různých autorů [17, 41, 79]. Při vytváření konkrétního pokusného bodu y se využívá jeden konkrétní typ mutace a jeden konkrétní typ křížení. Mutací vznikne mutant u, křížením pak z mutanta u a původního bodu x i vznikne pokusný bod y. Kombinaci konkrétního typu mutace a konkrétního typu křížení budeme nazývat DE-strategií. DEstrategii lze jednoznačně popsat zkratkou ve tvaru DE/a/b/c, kde a je použitý typ mutace, b je počet diferencí náhodně vybraných bodů (r 2 r 3 apod.) přičítaných v mutaci a, c je zkratka použitého křížení. Parametr příslušející k operaci mutace, resp. křížení budeme označovat F, resp. CR. Při splnění ukončovací podmínky se cyklus v němž se opakuje tvorba další generace populace P ukončí a výstupem algoritmu je pak nejlepší bod poslední vytvořené generace populace P, nejlepší ve smyslu optimalizačního problému. Tedy za předpokladu minimalizace účelové funkce f je řešením problému ten prvek poslední vytvořené generace populace P, v němž je hodnota účelové funkce f nejnižší. 5.1 Mutace Mutací vzniká k bodu x i populace jeho mutant u. Pro DE bylo navženo mnoho typů operace mutace [17, 50, 41, 79]. Zde uvádíme jen některé z nich. Předpokládejme, že r 1, r 2, r 3, r 4, r 5 jsou navzájem různé body, náhodně vybrané z aktuální generace P g populace, různé od bodu x i, F > 0 je vstupní parametr, x best je nejlepší bod aktuální generace P g populace. Tedy x best je takový bod aktuální generace P g populace, že pro něj platí, že hodnota 27
7 6 u 5 r 1 4 x 2 3 2 r 2 1 r 3 0 0 1 2 3 4 5 6 7 x 1 Obrázek 1: Mutace rand/1 v prostoru dimenze d = 2 účelové funkce f je v něm menší nebo rovna hodnotám účelové funkce v ostatních bodech aktuální generace P g populace. Typy mutace: rand/1 [50] u = r 1 + F (r 2 r 3 ) (5) Tato mutace je v praxi nejčastěji používanou mutací. Jak mutace pracuje, je zřejmé z obrázku 1. rand/2 [50] u = r 1 + F (r 2 r 3 ) + F (r 4 r 5 ) (6) Mutace rand/2 je téměř shodná s mutací rand/1, jen se v ní k náhodně vybranému bodu r 1 z aktuální generace P g populace přičítají F -násobky 28
dvou diferenčních vektorů na rozdíl od mutace rand/1, kde se k vektoru r 1 přičítá pouze F -násobek jediného diferenčního vektoru. best/1 [50] u = x best + F (r 1 r 2 ) (7) best/2 [50] u = x best + F (r 1 r 2 ) + F (r 3 r 4 ) (8) V mutacích best/1 a best/2 se F -násobek resp. F -násobky diferenčních vektorů nepřičítají k náhodně vybranému bodu, ale k nejlepšímu bodu populace x best. current-to-best/1 [13] u = x i + F (x best x i ) + F (r 1 r 2 ) (9) current-to-best/2 [13] u = x i + F (x best x i ) + F (r 1 r 2 ) + F (r 3 r 4 ) (10) V mutacích current-to-best/1 a current-to-best/2 je zahrnuto tzv. aritmetické křížení, a proto se v DE používají také samostatně, bez dalšího křížení. Pak negenerují mutanta u, ale přímo pokusný bod y. Aritmetickým křížením vzniká ze dvou bodů bod třetí takovou lineární kombinací, že součet koeficientů v lineární kombinaci je roven 1, zde x i + F (x best x i ) = (1 F ) x i + F x best. rand-to-best/1 [50, 43] u = r 1 + F (x best r 1 ) + F (r 2 r 3 ) (11) 29
rand-to-best/2 [50] u = r 1 + F (x best r 1 ) + F (r 2 r 3 ) + F (r 4 r 5 ) (12) randrl/1 [17] u = r 1 + F (r 2 r 3) (13) Mutace randrl/1 vychází z mutace rand/1. V mutaci randrl/1 se, na rozdíl od mutace rand/1, tři body náhodně vybrané z aktuální generace P g populace setřídí podle hodnoty účelové funkce a k nejlepšímu z nich (ve smyslu optimalizační úlohy) se přičte F -násobek vektoru, který vznikne rozdílem zbývajících dvou bodů z vybrané trojice bodů. Platí tedy, že f(r 1 ) f(r 2 ), f(r 3 ), a současně platí, že (r 1, r 2, r 3 ) je permutací (r 1, r 2, r 3 ). Kaelo a Ali v [17] experimentálně ověřili, že využití mutace randrl/1 ve srovnání s mutací rand/1 zvyšuje rychlost výpočtu algoritmu DE až o 30% a to bez snížení spolehlivosti výpočtu. current-to-rand/1 [30] y = x i + rand(0, 1) (r 1 x i ) + F (r 2 r 3 ) (14) rand(0, 1) je náhodné číslo z rovnoměrného rozdělení na intervalu (0, 1). V tomto typu mutace je také zahrnuto tzv. aritmetické křížení. Většinou se při jejím použití žádné další křížení neaplikuje, mutace current-to-rand/1 tudíž přímo generuje pokusný bod y. current-to-pbest/1 [79] u = x i + F (x pbest x i ) + F (r 1 r 6 ) (15) 30
x pbest je náhodně vybraný bod z podmnožiny aktuální generace P g populace, která obsahuje 100p% lepších prvků. p (0, 1] je vstupní parametr a jeho autory doporučená hodnota je p (0.05, 0.2] ([79]). Bod r 6 se náhodně vybírá z P g A, kde A je archív, do něhož se ukládají body, které byly v populaci nahrazeny svými (úspěšnými) konkurenty. 5.2 Křížení Křížením se v DE vytváří pokusný bod y, potomek rodičů mutanta u a bodu populace x i a to záměnou některých souřadnic bodu x i za hodnoty příslušných souřadnic mutanta u. V diferenciální evoluci se používají dva typy křížení, binomické a exponenciální, oba navržené Stornem a Pricem [50]. Binomické křížení je v praktických aplikacích DE používáno častěji než křížení exponenciální. 5.2.1 Binomické křížení Binomické křížení DE/././bin probíhá podle následujícího předpisu: u j jestliže U j CR nebo j = l y j = x ij jestliže U j > CR a zároveň j l, (16) j {1, 2,... d}. l je náhodně vybraný prvek z {1, 2,..., d}. U j, j {1, 2,... d} jsou rovnoměrně rozdělené nezávislé náhodné proměnné z [0, 1]. CR [0, 1] je vstupní parametr, parametr křížení, ovlivňující počet souřadnic bodu y, které jsou převzaty z mutanta u. Všimněme si, že tento počet je vždy nejméně 1, dokonce i když CR = 0. Tzn., že při vytváření bodu y z bodu x i je vždy zajištěna změna alespoň jedné souřadnice bodu x i. 31
Z předpisu, kterým se toto křížení řídí, je zřejmé, že křížené souřadnice bodu x i jsou náhodně vybírány z rovnoměrného rozdělení. Schematicky je binomické křížení znázorněno na obrázku 2. Označíme-li p m pravděpodobnost, že se hodnota jedné konkrétní souřadnice bodu x i změní na hodnotu odpovídající souřadnice mutantu u, pak můžeme říct, že tato pravděpodobnost p m je u binomického křížení v lineárním vztahu s parametrem křížení CR. Vztah mezi touto dvojicí parametrů odvodila Zaharie v [74, 76] a lze jej vyjádřit následujícím výrazem. p m = CR (1 1/d) + 1/d. (17) x i x i,1 x i,2 x i,3 x i,4 x i,5 x i,6 x i,7 x i,8 x i,9 x i,10 u u 1 u 2 u 3 u 4 u 5 u 6 u 7 u 8 u 9 u 10 y u 1 x i,2 u 3 x i,4 u 5 x i,6 x i,7 u 8 x i,9 x i,10 Obrázek 2: Binomické křížení (d = 10) 5.2.2 Exponenciální křížení Exponenciální křížení DE/././exp pracuje následujícím způsobem. Počáteční pozice křížení p 0 se vybere náhodně z množiny {1, 2,..., d}, L po sobě jdoucích souřadnic (za d-tou souřadnicí následuje první) je převzato z mutanta u, ostatní souřadnice přecházejí do pokusného bodu y z původního bodu x i. Pravděpodobnost nahrazení první složky v posloupnosti 1, 2,..., L, tj. složky na pozici p 0 je rovna CR. Pravděpodobnost nahrazení k-té složky 32
v posloupnosti 1, 2,..., L (L d) klesá exponenciálně s rostoucím k. Exponenciální křížení je schematicky znázorněno na obrázku 3. Křížení tohoto typu je velmi podobné dvoubodovému křížení z genetických algoritmů [19]. x i x i,1 x i,2 x i,3 x i,4 x i,5 x i,6 x i,7 x i,8 x i,9 x i,10 u u 1 u 2 u 3 u 4 u 5 u 6 u 7 u 8 u 9 u 10 y x i,1 x i,2 x i,3 x i,4 x i,5 u 6 u 7 u 8 u 9 x i,10 Obrázek 3: Exponenciální křížení (d = 10) Vztah mezi pravděpodobností křížení p m (pravděpodobnost, že se hodnota jedné konkrétní souřadnice bodu x i změní na hodnotu odpovídající souřadnice mutantu u) a vstupním parametrem CR je pro exponenciální křížení nelineární a závisí také na dimenzi problému d. Vztah mezi těmito třemi veličinami Zaharie odvodila v [74, 76] a je popsán následující rovnicí CR d dp m CR + dp m 1 = 0. (18) Vztah proměnné p m a parametru křížení CR je pro d = 30 graficky znázorněn na obrázku 4. Je zřejmé, že je-li p m [1/d, 1] má polynom (18) v intervalu [0, 1] jediný kořen. Je-li p m = 1/d, pak CR = 0 a v takovém případě, by se pokusný bod y rovnal původnímu bodu x i, což je nežádoucí. V druhém krajním bodě intervalu [1/d, 1] je situace následující, pro p m = 1 je CR = 1 a křížení pak pracuje tak, že mutant u zcela nahradí původní bod x i, do pokusného bodu přechází všechny souřadnice mutantu u. Naposledy zmíněné lze získat také binomiálním křížením s parametrem CR = 1. Tento fakt je 33
1 0.9 0.8 0.7 0.6 exponenciální CR 0.5 0.4 0.3 binomické 0.2 0.1 0 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 p m Obrázek 4: Porovnání závislosti CR na pravděpodobnosti mutace p m pro binomické a exponenciální křížení, d = 30 34
potřeba si uvědomovat především při současném použití obou typů křížení v případných navrhovaných adaptivních verzích algoritmu DE. 35
6 Adaptace parametrů Eiben [14] zavádí dělení řízení hodnot parametrů evolučních algoritmů na následující tři typy: deterministické způsob řízení hodnot parametrů, ve kterém se uplatňují pravidla pro nastavení hodnot závislá např. na čase, tzn. již před spuštěním algoritmu víme, že parametr bude např. na začátku běhu algoritmu mít hodnotu vysokou, uprostřed běhu algoritmu hodnotu nižší a na konci běhu algoritmu nejnižší; k nastavení hodnot parametrů se využívají deterministická pravidla a nevyužívá se žádná forma zpětné vazby z vyhledávacího procesu, adaptivní tento typ řízení hodnot parametrů využívá zpětnou vazbu z vyhledávacího procesu, tedy parametry jsou upravovány za základě hodnot charakteristik popisujících okamžitý stav vyhledávacího procesu, samo-adaptivní toto řízení hodnot parametrů spočívá v tom, že parametry se vyvíjí spolu s prvky populace, parametry jsou zakódovány spolu s prvky populace, na takto zakódované parametry jsou společně s body aplikovány evoluční operátory; takový systém vede k tomu, že lepší hodnoty parametrů generující lepší jedince body přežívají spolu s těmito lepšími body. 6.1 Adaptace parametrů DE Parametry algoritmu diferenciální evoluce jsou: velikost populace N, typ mutace, parametr mutace F, typ křížení, parametr křížení CR a ukončovací podmínka. Efektivita algoritmu při řešení konkrétního optimalizačního 36
problému velmi závisí na nastavení jeho parametrů a to jak na zvolené DEstrategii (kombinaci konkrétní mutace a konkrétního typu křížení) použité ke generování pokusného bodu, tak i na hodnotách parametrů F a CR a na velikosti populace N. Storn a Price doporučovali nastavit F = 0.8 a CR = 0.5. Oni sami ale již v práci, která DE představovala [50], používali 0.5 F 1 a 0 CR 1. Také velikost populace N v některých testovacích úlohách nastavovali nižší než sami doporučovali, tedy nižší než 10d. Zaharie odvodila kritický interval pro řídící parametry DE, zajišt ující fakt, že průměrný populační rozptyl bude neklesající [73]. Ukázala, že platí vztah 2pF 2 2p N + p2 N > 0 (19) kde p = max(1/d, CR). Z tohoto vztahu pak plyne, že průměrný populační rozptyl (střední hodnota populačního rozptylu) bude neklesající, jestliže F > 1/N. Praktický význam tohoto výsledku je ale omezený, poněvadž nepřináší zásadně novou informaci ve srovnání s obvykle užívanou minimální hodnotou F = 0.5. Ze zkušeností plyne, že různým optimalizačním problémům odpovídá různé optimální nastavení parametrů DE. Je samozdřejmě možné pokusit se toto optimální nastavení parametrů algoritmu DE pro řešení konkrétního optimalizačního problému nalézt metodou pokus-omyl, tento proces však bývá velmi zdlouhavý. Navíc často různým fázím vyhledávacího procesu odpovídá různé optimální nastavení DE. Další možnost tedy je měnit hodnoty parametrů za běhu algoritmu, případně je přizpůsobit aktuální situaci ve vyhledávacím procesu, nebo je nechat vyvíjet z generace na generaci společně s body populace, tedy možnost parametry DE nějakým způsobem adaptovat. 37
Fakta, týkající se nejednotných doporučení k nastavení parametrů algoritmu DE, velká časová náročnost nalezení vhodných hodnot parametrů DE před jeho aplikací na konkrétní optimalizační problém a fakt, že různým fázím vyhledávacího procesu mohou odpovídat různá optimální nastavení vedly ke vzniku mnoha různých adaptivních verzí algoritmu DE. Ve zbývající části této kapitoly uvádíme ty z nich, které se řadí k nejznámějším. V prvních sedmi následujících podkapitolách jsou popsány adaptivní verze DE, ve kterých se adaptuje DE-strategie, hodnoty parametrů mutace a křížení, případně obojí. Závěr kapitoly se věnuje adaptaci velikosti populace. 6.2 Algoritmus jde Tento samo-adaptivní přístup v DE navrhli Brest a kol. v [6]. Je v něm použita jediná DE-strategie, a to strategie DE/rand/1/bin a adaptují se pouze hodnoty parametrů F a CR. Hodnoty těchto dvou parametrů jsou na začátku procesu hledání optima inicializovány náhodně pro každý bod x i (1 i N) počáteční generace populace a žijí s příslušným jedincem populace. V každé další generaci mohou být změněny s pravděpodobnostmi τ 1 a τ 2. Pokud tato změna nastane a s využitím nových hodnot parametrů F a CR je vytvořen úspěšný pokusný bod y, nová kombinace hodnot parametrů se stává novou kombinací hodnot parametrů příslušných k danému bodu x i, tedy bodu, který je nyní roven úspěšně vytvořenému pokusnému bodu y. V opačném případě, tj. s využitím nových hodnot parametrů F a CR je vytvořen pokusný bod y, který není úspěšný, pak hodnoty parametrů F a CR příslušné k bodu x i zůstávají nezměněny, tedy s bodem x i přežívají dál staré hodnoty parametrů F a CR. 38
Každá nová hodnota parametru křížení CR je zde vybírána z rovnoměrného rozdělení na intervalu [0, 1] a každá nová hodnota parametru mutace F z rovnoměrného rozdělení na intervalu [F l, F u ], kde F l a F u jsou vstupní parametry algoritmu. Autoři doporučují nastavit je takto: τ 1 = τ 2 = 0.1 a F l = 0.1 a F u = 0.9. Samo-adaptivní verze diferenciální evoluce jde je v pseudokódu zapsána v Algoritmu 2. 39
Algoritmus 2 jde 1: vygeneruj počáteční generaci P 0 = (x 1, x 2,..., x N ) populace P ; 2: vypočítej hodnotu funkce f ve všech bodech generace P 0 ; 3: přiřad ke každému bodu x i dvojici parametrů F a CR; 4: g=0; 5: repeat 6: Q g = P g ; 7: for i = 1 to N do 8: uchovej původní hodnoty parametrů F a CR bodu x i ; 9: s pravděpodobností τ 1 změň F bodu x i ; 10: s pravděpodobností τ 2 změň CR bodu x i ; 11: vytvoř pokusný bod y k bodu x i, použij jeho F a CR; 12: vypočítej hodnotu účelové funkce v bodě y; 13: if f(y) f(x i ) then 14: do Q g vlož na místo bodu x i bod y; 15: else 16: pro x i nastav F a CR na původní hodnoty; 17: end if 18: end for; 19: P g+1 = Q g ; 20: g=g+1; 21: until ukončovací podmínka; 40
6.3 Soutěživá DE Tento adaptivní přístup v DE navrhnul v roce 2006 Tvrdík, [59, 60]. Pracuje se v něm s několika konkrétními nastaveními algoritmu DE. Tato nastavení spolu v průběhu hledání řešení optimalizačního problému soutěží. Čím je nastavení úspěšnější, tím má větší šanci být vybráno ke generování aktuálně potřebného pokusného bodu y. V tomto přístupu se neadaptuje velikost populace N. Podrobný popis mechanismu adaptace následuje. Mějme H nastavení algoritmu DE. Před každým vytvořením pokusného bodu y se vybere náhodně jedno z těchto H nastavení. Každé z H nastavení DE může být vybráno s pravděpodobností q h, 1 h H. h-té nastavení DE je úspěšné, generuje-li pokusný bod y k původnímu bodu x i aktuální generace populace P takový, že f(y) f(x i ). Pravděpodobnosti q h jsou upravovány podle podílů úspěchů všech H nastavení v předchozích krocích takto: q h = n h + n 0 H k=1 (n, h {1, 2,..., H} (20) j + n 0 ) n h je aktuální počet úspěchů h-tého nastavení, n 0 > 1 je konstanta zabraňující příliš velkým změnám q h způsobeným náhodným úspěchem h-tého nastavení DE. Když se nějaká z q h (h {1, 2,..., H}) sníží tak, že platí q h < δ pro δ > 0 (δ je vstupní parametr algoritmu), pak jsou hodnoty q h (h {1, 2,..., H}) znovu nastaveny na své počáteční hodnoty, q h = 1/H, h {1, 2,..., H}, a také hodnoty n h, 1 h H jsou znovu nastaveny na 0. Tímto se předchází degeneraci procesu adaptace. Vstupními parametry algoritmu soutěživé DE tedy jsou: velikost populace N, parametry soutěže δ a n 0 a sada použitých nastavení DE (DEstrategie spolu s hodnotami parametrů F a CR), z níž pak plyne hodnota parametru H. Soutěživá DE je v pseudokódu zapsána v Algoritmu 3. 41
Algoritmus 3 Soutěživá DE 1: vygeneruj počáteční generaci P 0 = (x 1, x 2,..., x N ) populace P ; 2: vypočítej hodnotu funkce f ve všech bodech generace P 0 ; 3: nastav pravděpodobnosti q h na hodnoty 1/H; 4: g=0; 5: repeat 6: Q g = P g ; 7: for i = 1 to N do 8: vyber z H-nastavení DE s ohledem na q h (h = 1, 2,..., H); 9: vytvoř y k bodu x i s použitím vybraného nastavení DE; 10: vypočítej hodnotu účelové funkce v bodě y; 11: if f(y) f(x i ) then 12: do Q g vlož na místo bodu x i bod y; 13: zvětši příslušnou četnost úspěchů n h o 1; 14: přepočítej pravděpodobnosti q h ; 15: end if 16: end for 17: P g+1 = Q g ; 18: g=g+1; 19: until ukončovací podmínka; 42
Doporučená nastavení parametrů algoritmu soutěživé DE jsou: n 0 = 2, δ = 1/(5 H); velikost populace autor doporučuje nastavit v rozmezí od N = 20 do N = 5 d pro problémy s menší dimenzí a N 100 pro problémy s větší dimenzí. Na doporučeních týkajících se výběru nastavení DE soutěžících v tomto algoritmu se pracuje od jeho navržení [34, 59, 62, 63]. Podle autora se zatím nejefektivněji jeví varianta algoritmu nazvaná b6e6rl [59]. Tato varianta algoritmu soutěživé DE využívá 12 různých nastavení DE, platí tedy, že H = 12. Polovina z těchto 12-ti nastavení DE využívá DE-strategii DE/randrl/1/bin a druhá polovina DE-strategii DE/randrl/1/exp. V polovině z šesti nastavení využívajících DE-strategii DE/randrl/1/bin je parametr F nastaven na hodnotu 0.5 a ve zbývající polovině na hodnotu 0.8. Stejně tak v polovině z šesti nastavení využívajících DE-strategii DE/randrl/ 1/exp je parametr F nastaven na hodnotu 0.5 a ve zbývající polovině na hodnotu 0.8. Každé ze tří použitých nastavení DE využívajících tutéž DEstrategii a tutéž hodnotu parametru F se liší nastavením hodnoty parametru CR. Pro binomální křížení jsou, jak s hodnotou 0.5, tak s hodnotou 0.8 parametru F, použity tyto tři hodnoty parametru CR: 0, 0.5, 1. Pro křížení exponenciální jsou, jak s hodnotou 0.5, tak s hodnotou 0.8 parametru F, použity tři hodnoty parametru CR: CR1, CR2, CR3. Hodnoty CR1, CR2, CR3 jsou kořeny polynomu (18) pro p m postupně nastavené na p m1, p m2, p m3, kde p m2 = 1 + 1/d 2, p m1 = 1/d + p m 2 2, p m3 = p m 2 + 1. (21) 2 Hodnoty p m1, p m2, p m3 jsou znázorněny na obrázku 5 vyjadřujícím závislost CR a p m pro d = 30. Přehledně jsou nastavení DE použitá v b6e6rl popsána v tabulce 1. 43
1 0.9 0.8 0.7 0.6 CR 0.5 0.4 0.3 0.2 p m1 p m2 p m3 0.1 0 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 p m Obrázek 5: Závislost CR na pravděpodobnosti mutace p m pro exponenciální křížení a hodnoty p m1, p m2, p m3, d = 30 44
Tabulka 1: Nastavení DE soutěžící v b6e6rl h h-té nastavení DE použitá DE-strategie F CR 1 DE/randrl/1/bin 0.5 0 2 DE/randrl/1/bin 0.5 0.5 3 DE/randrl/1/bin 0.5 1 4 DE/randrl/1/bin 0.8 0 5 DE/randrl/1/bin 0.8 0.5 6 DE/randrl/1/bin 0.8 1 7 DE/randrl/1/exp 0.5 CR1 8 DE/randrl/1/exp 0.5 CR2 9 DE/randrl/1/exp 0.5 CR3 10 DE/randrl/1/exp 0.8 CR1 11 DE/randrl/1/exp 0.8 CR2 12 DE/randrl/1/exp 0.8 CR3 Algoritmus b6e6rl se v červnu 2013 zúčastnil soutěže organizované v rámci mezinárodního kongresu CEC2013 [68]. Algoritmy soutěžily za podmínek definovaných v [24] na třech úrovních dimenze, d = 10, d = 30 a d = 50. Účastníků soutěže, kteří splnily všechny stanovené podmínky, bylo celkem 21. Algoritmy založené na diferenciální evoluci se umístily na 4. [54], 7. [8], 8. [2], 9. [33], 10. [68], 11. [77], 14. [5], 15. [15] a 18. [11] místě. Algoritmus b6e6rl se tedy v této soutěži umístil na 10. místě. Nejúspěšnější adaptivní verzí DE v této soutěži byla varianta nazvaná SHADE. Této adaptivní verzi DE se budeme věnovat v kapitole 6.8. 45
6.4 Algoritmus JADE Algoritmus JADE [79] autorů Zhanga a Sandersona, je další z adaptivních verzí algoritmu diferenciální evoluce. V tomto přístupu se adaptují hodnoty parametrů F a CR, pracuje se v něm s jedinou DE-strategií DE/current-topbest/1/bin a využívá se archív A. Mutace current-to-pbest/1 (15) je jakýmsi zobecněním mutace current-to-best/1 (9), při jejímž využití má diferenciální evoluce sklony k předčasné konvergenci (kap. 8). Praděpodobnost nastoupení tohoto jevu se autoři algoritmu JADE pokusili snížit zavedením archívu A a výběru jednoho z bodů množiny 100p% lepších prvků populace, který nahrazuje využití pouze jediného nejlepšího prvku populace. p (0, 1] je vstupní parametr a autory doporučená hodnota je p (0.05, 0.2]. Archív A je inicializován jako prázdná množina a během procesu hledání optima se do něj ukládá každý bod x i populace, k němuž byl vytvořen úspěšný pokusný bod y a který byl tudíž v populaci právě tímto pokusným bodem nahrazen. Archív A je po každé generaci upraven tak, aby jeho velikost byla nejvýše N. Případné zmenšení rozsahu archívu A se provádí vypuštěním potřebného počtu prvků, vypouštěné prvky jsou vybrány náhodně. Adaptace parametrů F a CR se provádí následujícím způsobem. Hodnoty obou parametrů jsou v každé generaci populace nezávisle generovány pro každý bod x i aktuální generace populace P g samostatně. Hodnoty parametru CR jsou generovány z normálního rozdělení se střední hodnotou µ CR a směrodatnou odchylkou 0.1, po vygenerování jsou ořezány do intervalu [0, 1]. Hodnoty parametru F jsou generovány z Cauchyho rozdělení s parametry (µ F, 0.1). Je-li vygenerovaná hodnota F > 1, F je nastaveno na hodnotu F = 1, v případě, že vygenerovaná hodnota F < 0, se F generuje znovu. V každé generaci se do množiny S CR uloží všechny úspěšné hodnoty 46
parametru CR a do množiny S F všechny úspěšné hodnoty parametru F. Obě množiny jsou na začátku vytváření každé jednotlivé generace znovu vyprázdněny (S CR =, S F = ). Hodnoty µ CR a µ F jsou na začátku běhu algoritmu nastaveny na hodnotu 0.5 a po každé generaci jsou upravovány s využitím hodnot uložených v množinách S CR a S F následujícím způsobem. µ CR (1 c) µ CR + c mean A (S CR ), µ F (1 c) µ F + c mean L (S F ), (22) kde c je parametr algoritmu, c [0, 1], mean A je aritmetický průměr, neboli Lehmerův průměr (23) prvního řádu, tj. mean L1 (24), a mean L je Lehmerův průměr druhého řádu, tj. mean L2 (25). Lehmerův průměr druhého řádu je ve výpočtu nové hodnoty µ F na rozdíl od výpočtu nové hodnoty µ CR, kde je použit Lehmerův průměr prvního řádu, zřejmě použit kvůli faktu, že hodnoty z množiny S F jsou hodnoty generované z Cauchyho rozdělení, toto rozdělení nemá střední hodnotu a aritmetický průměr je odhadem střední hodnoty. Lehmerův průměr řádu ρ je pro y = (y 1, y 2,..., y n ) definován takto: n s=1 mean Lρ (y) = (y s) ρ n s=1 (y. (23) ρ 1 s) Lehmerův průměr řádu 1 pro množinu S F (mean L1 (S F )) je tedy definován takto: mean L1 (S F ) = F F S F F S F 1 (24) a je roven aritmetickému průměru. Lehmerův průměr řádu 2 pro množinu S F (mean L2 (S F )) je definován následovně: F S mean L2 (S F ) = F F 2 F S F F. (25) Struktura právě popsané adaptivní varianty diferenciální evoluce je v pseudokódu zapsána v Algoritmu 4. 47
Algoritmus 4 JADE 1: vygeneruj počáteční generaci P 0 = (x 1, x 2,..., x N ) populace P ; 2: vypočítej hodnotu funkce f ve všech bodech generace P 0 ; 3: inicializuj archív A = ; 4: nastav parametr µ F Cauchyho rozdělení (µ F = 0.5); 5: nastav parametr µ CR normálního rozdělení (µ CR = 0.5); 6: g=0; 7: repeat 8: Q g = P g ; 9: vyprázdni množinu S F (S F = ); 10: vyprázdni množinu S CR (S CR = ); 11: for i = 1 to N do 12: vyber F z Cauchyho rozdělení (Cauch(µ F, 0.1)); 13: vyber CR z normálního rozdělení (N(µ CR, 0.1)) ; 14: vytvoř y k bodu x i (s využitím DE/current-to-pbest/1/bin); 15: vypočítej hodnotu účelové funkce f v bodě y; 16: if f(y) f(x i ) then 17: x i vlož do archívu A; 18: do Q g vlož na místo bodu x i bod y; 19: hodnotu F vlož do S F ; 20: hodnotu CR vlož do S CR ; 21: end if 22: end for 23: if velikost A je větší než N then 24: zmenši archív (na velikost N); 25: end if 26: uprav µ F (pro Cauchyho rozdělení, s využitím S F ); 27: uprav µ CR (pro normální rozdělení, s využitím S CR ); 28: P g+1 = Q g ; 29: g=g+1; 30: until ukončovací podmínka; 48
6.5 Algoritmus SADE V této adaptivní verzi algoritmu DE [43] se adaptují DE-strategie tvorby pokusného bodu y i hodnoty parametrů mutace a křížení a to vzhledem k jejich předcházejícím úspěchům v rámci evoluce. V algoritmu se využívá sada K DE-strategií, která zahrnuje strategie s různými charakteristikami. Před generováním pokusného bodu y se vybere jedna ze strategií z uvedené sady K DE-strategií a to v závislosti na aktuálních pravděpodobnostech výběru strategií p k, 1 k K, které se upravují podle úspěchů strategií v LP předchozích generacích. Pravděpodobnosti p k, 1 k K jsou inicializovány na hodnotu 1/K a v průběhu evoluce se upravují následujícím způsobem. V každé generaci G se zjist uje počet úspěšných pokusných bodů generovaných k-tou strategií ns k,g a také počet pokusných bodů neúspěšně vygenerovaných k-tou strategií nf k,g. Tyto hodnoty se pamatují z posledních LP generací a uchovávají se v tzv. paměti úspěchů a neúspěchů. Po prvních LP generacích (naplňování paměti) se v každé další generaci pravděpodobnosti p k výběru strategií upraví na základě obsahu pamětí úspěchů a neúspěchů. Pro každou generaci G, G > LP, je pak pravděpodobnost výběru k-té strategie p k,g = S k,g K m=1 S m,g (26) kde S k,g = G 1 g=g LP ns k,g G 1 g=g LP ns k,g + G 1 g=g LP nf k,g + ɛ, 1 k K, (27) S k,g reprezentuje podíl pokusných bodů úspěšně generovaných k-tou strategií za posledních LP generací. Nastavení ɛ = 0.01 předchází možnosti 49
nulového podílu úspěchů. Zřejmě větší podíl úspěchů v předchozích LP generacích vede k větší pravděpodobnosti aplikování dané DE-strategie v generaci G. Dále se v algoritmu SADE adaptivně nastavují hodnoty parametrů F a CR. Hodnoty parametru F se generují z normálního rozdělení N(0.5, 0.3). Hodnoty parametru CR k, k = 1, 2,..., K se vybírají z normálního rozdělení N(CRm k, 0.1), CRm k se zde upravuje na základě hodnot CR k, které vedly v předchozích generacích ke generování úspěšného pokusného bodu. CRm k je pro každou z použitých DE-strategií (k = 1, 2,..., K) inicializována na hodnotu 0.5. Posledních LP hodnot CR k, které vedly v přechozích generacích ke generování úspěšného pokusného bodu k-tou DE-strategií se ukládá do paměti CRMemory k. Po inicializaci paměti se hodnoty CRm k upravují tak, že se nastaví na hodnotu, která je rovna mediánu hodnot uložených v danou chvíli v paměti CRMemory k. V SADE, navrženém, popsaném a testovaném v [43], Qin, Huang a Suganthan použili následující čtveřici DE strategií: DE/rand/1/bin, DE/randto-best/2/bin, DE/rand/2/bin, DE/current-to-rand/1. Využity byly tedy mutace rand/1 (5), rand-to-best/2 (12), rand/2 (6), current-to-rand/1 (14) a pouze binomické křížení (kap. 5.2.1). Struktura adaptivní varianty SADE je v pseudokódu popsána v Algoritmu 5. 50
Algoritmus 5 SADE 1: vygeneruj počáteční generaci P 0 = (x 1, x 2,..., x N ) populace P ; 2: vypočítej hodnotu funkce f ve všech bodech generace P 0 ; 3: nastav pravděpodobnosti p k, k = 1, 2,..., K na hodnoty 1/K; 4: inicializuj CRm k = 0.5 pro k = 1, 2,..., K; 5: inicializuj pamět úspěchů a neúspěchů; 6: inicializuj CRMemory k ; 7: inicializuj počítadla generací G = 0, g = 0; 8: repeat 9: Q g = P g ; 10: G = G + 1; 11: nastav ns k,g = 0, nf k,g = 0 pro k = 1, 2,..., K; 12: for i = 1 to N do 13: vyber r (1 r K) s ohledem na p k, k = 1, 2,..., K; 14: vygeneruj hodnotu F z normálního rozdělení N(0.5, 0.3); 15: if pamět CRMemory r je dostatečně velká then 16: uprav CRm r ; 17: end if 18: vygeneruj hodnotu CR z N(CRm r, 0.1); 19: vytvoř pokusný bod y k bodu x i ; 20: vypočítej hodnotu účelové funkce f v bodě y; 21: if f(y) f(x i ) then 22: do Q g vlož na místo bodu x i bod y; 23: zvětši příslušné ns r,g o 1; 24: ulož aktuální CR do CRMemory r ; 25: else 26: zvětši příslušné nf r,g o 1; 27: end if 28: end for 29: P g+1 = Q g ; 30: ulož ns k,g a nf k,g pro k = 1, 2,..., K; 31: if G > LP then 32: spočítej S k,g a p k,g pro k = 1, 2,..., K; 33: p k = p k,g pro k = 1, 2,..., K; 34: end if 35: g=g+1; 36: until ukončovací podmínka; 51
6.6 Algoritmus EPSDE Tento samo-adaptivní přístup navrhl Mallipeddi a kol. v roce 2011 [30]. Jedná se o přístup, u kterého se předpokládá existence množiny možných hodnot parametru F, množiny možných hodnot parametru CR a množiny možných DE-strategií. Připomeňme, že DE-strategií je míněna kombinace konkrétní mutace a konkrétního křížení. Do množiny možných DE-strategií se zařazují takové DE-strategie, o kterých je známo, že mají navzájem různé charakteristiky. V tomto přístupu se neadaptuje velikost populace N. Adaptace v algoritmu EPSDE spočívá v tom, že pro každý bod x i počáteční generace populace P je náhodně vybrána DE-strategie z množiny možných DE-strategií, hodnota parametru F z množiny možných hodnot tohoto parametru a hodnota parametru CR z množiny možných hodnot parametru CR. Takto vytvořená trojice parametrů DE (DE-strategie, F, CR) se stává trojicí parametrů příslušnou k bodu x i. Pro každý bod x i populace se pak pokusný bod y tvoří s využitím trojice parametrů k němu příslušné. V případě, že se takto vytvoří úspěšný pokusný bod y, tento bod y nahradí v populaci původní bod x i a stává se tak novým x i. Trojicí parametrů příslušnou k tomuto novému x i zůstává trojice parametrů DE právě přepsaného původního bodu x i. V opačném případě, tedy v případě, že pokusný bod y není úspěšný, se bodu x i přiřadí nová trojice parametrů jedním z následujících způsobů. Bud se vygeneruje stejně jako se to provádělo v počáteční generaci populace, nebo je nová trojice parametrů náhodně vybrána z trojic parametrů uložených v paměti úspěšných trojic parametrů. Každá z uvedených možností má stejnou pravděpodobnost. Každá úspěšná trojice parametrů se ukládá do paměti úspěšných trojic parametrů. Velikost této paměti je omezena hodnotou LP. S pamětí 52
úspěšných trojic parametrů se pracuje následovně. Na začátku vyhledávacího procesu je prázdná. Pokud má pamět úspěšných trojic parametrů při vkládání nějaké úspěšné trojice, zatím neobsažené v této paměti, již LP prvků, nová úspěšná trojice nahrazuje v paměti náhodně vybranou v ní uloženou trojici parametrů. LP je vstupní parametr algoritmu a doporučené nastavení je LP = N. Struktura právě popsané adaptivní varianty diferenciální evoluce je v pseudokódu zapsána v Algoritmu 6. Konkrétní varianta algoritmu EPSDE popsaná v [30] pracuje se třemi DE-strategiemi v množině možných DE-strategií. Jsou to DE/best/2/bin, DE/rand/1/bin, DE/current-to-rand/1/-. Množina možných hodnot parametru F je rovna množině {0.4, 0.5, 0.6, 0.7, 0.8, 0.9}. Množina možných hodnot parametru CR je rovna množině {0.1, 0.2, 0.3, 0.4, 0.5, 0, 6, 0.7, 0.8, 0.9}. 53
Algoritmus 6 EPSDE 1: vygeneruj počáteční generaci P 0 = (x 1, x 2,..., x N ) populace P ; 2: vypočítej hodnotu funkce f ve všech bodech generace P 0 ; 3: přiřad ke každému bodu trojici parametrů (DE-strategie, F, CR); 4: připrav pamět k ukládání úspěšných trojic parametrů; 5: g=0; 6: repeat 7: Q g = P g ; 8: for i = 1 to N do 9: vytvoř y k x i, použij jeho trojici (DE-strategie, F, CR); 10: vypočítej hodnotu účelové funkce f v bodě y; 11: if f(y) f(x i ) then 12: do Q g vlož na místo bodu x i bod y; 13: trojici param. bodu x i vlož do paměti úspěšných trojic parametrů; 14: else 15: k x i přiřad novou trojici parametrů; 16: end if 17: end for 18: P g+1 = Q g ; 19: g=g+1; 20: until ukončovací podmínka; 54
6.7 Algoritmus CoDE Algoritmus CoDE navrhl v roce 2011 Wang a kol. [71]. Tento adaptivní přístup je založen na velmi jednoduchém systému adaptace parametrů DE, DE-strategie a hodnot parametrů F a CR. Také zde se neadaptuje velikost populace N. V této verzi adaptace v DE je k dispozici r DE-strategií a r dvojic parametrů (F,CR), adaptace probíhá následovně. Vždy, při potřebě vytvoření nového pokusného bodu y, se vytvoří r pokusných bodů y 1,y 2,..., y r, každý s využitím jiné DE-strategie z r možných společně s náhodně vybranou dvojicí hodnot parametrů F a CR z r možných dvojic. Jako definitivní pokusný bod y se vybere a použije nejlepší z těchto r pokusných bodů, ve smyslu řešené optimaližační úlohy. V případě minimalizace dané účelové funkce, ten bod, v němž je hodnota účelové funkce nejnižší. V algoritmu popsaném a testovaném v [71] je r = 3 a jsou použity DE-strategie: DE/rand/1/bin, DE/rand/2/bin, DE/current-to-rand/1/- a dvojice hodnot parametrů (F,CR): (1,0.1), (1,0.9), (0.8,0.2). Strukturu adaptivní varianty CoDE zachycuje Algoritmus 7. Adaptivní variantou diferenciální evoluce CoDE se velmi podrobně zabývá Tvrdík v článku [64]. Důvodem tohoto výzkumu je velmi nepřesný a nejednoznačný popis algoritmu CoDE v [71]. V [64] je popsáno několik variant algoritmu CoDE, porovnány jsou na základní testovací sadě (kap. 9), podle provedených experimentů je nejefektivnější variantou verze označovaná v [64] CoDE0, která vznikla díky nepřesnému popisu původního návrhu adaptace. Tento fakt svědčí o tom, že výkonné stochastické algoritmy pro globální optimalizaci nemusí vznikat pouze na základě spojení optimalizačních prostředků, pro jejichž využití existuje racionální vysvětlení. 55
Algoritmus 7 CoDE 1: vygeneruj počáteční generaci P 0 = (x 1, x 2,..., x N ) populace P ; 2: vypočítej hodnotu účelové funkce ve všech bodech generace P 0 ; 3: g=0; 4: repeat 5: Q g = P g ; 6: for i = 1 to N do 7: vytvoř pokusné body y 1,y 2,..., y r k bodu x i ; 8: vypočítej hodnoty funkce f v bodech y 1,y 2,..., y r ; 9: jako y vyber nejlepší z bodů y 1,y 2,..., y r ; 10: if f(y) f(x i ) then 11: do Q g vlož na místo bodu x i bod y; 12: end if 13: end for 14: P g+1 = Q g ; 15: g=g+1; 16: until ukončovací podmínka; 56
6.8 Algoritmus SHADE Další adaptivní verzí diferenciální evoluce je algoritmus SHADE [55]. Jedná se o velmi mladý algoritmus, který navrhli Tanabe a Fukanaga v roce 2013. SHADE vychází z adaptivní verze JADE (kap. 6.4), používá všechny prostředky adaptace implementované v JADE (strategii DE/current-to-pbest /1/bin, archív A, adaptaci parametrů F a CR). V SHADE se však adaptace parametrů F a CR navíc opírá o tzv. historickou kruhovou pamět. Jedná se vlastně o dvě kruhové paměti, v každé z nich je vždy uloženo posledních k nově vypočítaných prvních parametrů jednoho z využívaných rozdělení pravděpodobnosti. Tyto paměti se označují M F a M CR, velikost obou pamětí je rovna H, autory doporučená hodnota je H = N. Na začátku procesu vyhledávání jsou paměti nastaveny takto: M Fj = 0.5, M CRj = 0.5, 1 j H. Každá z hodnot uložená do pamětí M F a M CR během vyhledávacího procesu je spočítána z hodnot parametru F (v případě M F ) nebo z hodnot parametru CR (v případě M CR ) úspěšně použitých v průběhu vytváření jediné generace populace P. Další věc, kterou se algoritmy JADE a SHADE liší, je nastavení parametru p pro mutaci current-to-pbest/1. V JADE je p nastaveno na konstantní hodnotu, naopak v SHADE se p před každým dalším vytvořením pokusného bodu y nastaví na novou hodnotu. Tato hodnota je vždy vybrána z rovnoměrného rozdělení na intervalu [1/N, 0.2]. Podobně jako v JADE, také v SHADE se před každým vytvoření nového pokusného bodu y generují nové hodnoty parametrů F a CR a to následovně. Vybere se náhodně index r, 1 r H, hodnota parametru F je pak náhodné číslo z Cauchyho rozdělení s parametry M Fr a 0.1 (Cauchy(M Fr, 0.1)) a hodnota parametru CR je generována z normálního rozdělení s parametry 57
M CRr a 0.1 (N(M CRr, 0.1)). Je-li pokusný bod y vytvořený s využitím těchto hodnot úspěšný, pak se příslušná hodnota parametru F uloží do množiny S F a hodnota parametru CR se uloží do množiny S CR. Tímto způsobem se stejně jako v JADE uloží všechny v jedné generaci úspěšně použité hodnoty parametrů F a CR. Na začátku výpočtu nové generace se S F a S CR rovnají. Po vytvoření celé této nové generace populace P se z hodnot uložených v množinách S F a S CR vypočítají nové hodnoty prvních parametrů příslušných rozdělení µ F a µ CR, které se uloží na aktuální k-tou pozici v kruhových pamětech M F a M CR. Hodnoty těchto prvních parametrů použitých pravděpodobnostních rozdělení µ F a µ CR, které se v JADE počítají jako průměry, se v algoritmu SHADE počítají jako vážené průměry a váží se velikostí rozdílu hodnoty účelové funkce v pokusném bodě y a hodnoty účelové funkce v bodě x i, který byl v populaci tímto úspěšným pokusným bodem y nahrazen. Hodnoty M Fk a M CRk se po ukončení vytváření nové generace počítají pouze v případě, že byl během této generace vytvořen alespoň jeden úspěšný pokusný bod, pak S F = {F 1, F 2,..., F SF } a S CR = {CR 1, CR 2,..., CR SF }. Poznamenejme, že platí S F = S CR. M Fk = mean WL (S F ) když S F, (28) M CRk = mean WA (S CR ) když S CR, (29) mean WL je vážený Lehmerův průměr řádu 2, tj. mean WL (S F ) = SF m=1 w m F 2 m SF m=1 w m F m, (30) a mean WA je vážený Lehmerův průměr řádu 1 (vážený aritmetický průměr), tj. mean WA (S CR ) = S CR m=1 w m CR m, (31) 58
kde a w m = f m SCR h=1 f h (32) f m = f(x m ) f(y m ), (33) y m je úspěšný pokusný bod a x m je bod populace, který byl bodem y m nahrazen. Na začátku výpočtu algoritmu je k = 1. V případě, že se do kruhových pamětí po ukončení vytváření dané generace zapisuje, k se po tomto zápisu nastaví o jedničku vyšší. V případě, že takto zvýšené k je větší než H, se k nastaví na hodnotu 1. S archívem A se v SHADE pracuje podobně jako v JADE. Do archívu se ukládá každý bod x i jehož pokusný bod y byl úspěšný, tedy lepší než x i. Při každém vepisování bodu do archívu A, který již dosáhl své maximální velikosti, se vybere náhodně prvek archívu A a ten je přepsán nově vkládaným bodem x i. Adaptivní varianta diferenciální evoluce SHADE je zapsána v pseudokódu v Algoritmu 8. 59
Algoritmus 8 SHADE 1: vygeneruj počáteční generaci P 0 = (x 1, x 2,..., x N ) populace P ; 2: vypočítej hodnotu účelové funkce f ve všech bodech generace P 0 ; 3: H = N (velikost historických kruhových pamětí M F a M CR ); 4: inicializuj archív A = ; 5: M F = (0.5,..., 0.5) (pro první parameter Cauchyho rozdělení), M CR = (0.5,..., 0.5) (pro první parameter normálního rozdělení); 6: k = 1; 7: g = 0; 8: repeat 9: S F =, S CR =, Q g = P g ; 10: for i = 1 to N do 11: vyber r náhodně z {1, 2,..., H}; 12: generuj F z Cauch(M Fr, 0.1) a CR z rozdělení N(M CRr, 0.1) ; 13: generuj p z rovnoměrného rozdělení na intervalu [1/N, 0.2]; 14: vytvoř y pro x i, použij strategii DE/current-to-pbest/1/bin; 15: spočítej f(y); 16: if f(y) f(x i ) then 17: do Q g vlož na místo bodu x i bod y; 18: end if 19: if f(y) < f(x i ) then 20: vlož x i do archívu A; 21: vlož F do S F a CR do S CR ; 22: end if 23: end for 24: if S F then 25: spočítej novou hodnotu prvního parametru pro obě rozdělení, ulož je do M Fk a M CRk ; 26: zvětši k o jedničku; 27: if k > H then 28: k = 1; 29: end if 30: end if 31: P g+1 = Q g ; 32: g=g+1; 33: until ukončovací podmínka; 60
6.9 Adaptace velikosti populace v DE Mezi adaptivní verze algoritmu diferenciální evoluce, ve kterých se adaptuje parametr velikost populace N, patří např. algoritmus nazvaný dynnp-de, který užívá mechanismus redukce velikosti populace [7]. Algoritmus dynnp- DE i mechanismus redukce velikosti populace navrhli v roce 2008 Brest a Maučecová. Mechanismus redukce velikosti populace pracuje následovně. Algorimus začne pracovat s populací velikosti N, po určitém čase t (po provedení t výpočtů účelové funkce) se velikost populace zmenší na polovinu původní velikosti, tedy N N/2. Po dalším časovém úseku délky t se velikost populace opět zmenší na polovinu a tento proces se stále opakuje až do využití celkového času poskytnutého algoritmu k výpočtu. Využitý princip zmenšování velikosti populace vychází z myšlenky, že v počátečních fázích výpočtu je zapotřebí dostatečně prozkoumat prohledávanou oblast S, zatímco v pozdějších fázích výpočtu algoritmu je již důkladné prohledávání celé oblasti S méně důležité a tudíž není zapotřebí tak veliká populace. V pozdějších fázích výpočtu lze využít populaci s menším počtem prvků a tím dovolit algoritmu, aby vytvořil více generací populace a měl tak možnost nalézt řešení přesnější. Tedy, čas T poskytnutý k výpočtu algoritmu je rozdělen na N p stejných částí, T/N p = t, hodnota parametru N p je rovna počtu navzájem různých hodnot parametru velikosti populace, které se rozhodneme v algoritmu využít. Algoritmus začne pracovat s populací velikosti N a po t-výpočtech účelové funkce upraví velikost populace na polovinu její aktuální velikosti N N/2. Tato úprava probíhá tak, že se populace P = (x 1, x 2,..., x N ) rozdělí na dvě podpopulace, P 1 = (x 1, x 2,..., x N/2 ) a P 2 = (x N/2+1, x N/2+2,..., x N ) a z těchto dvou podpopulací se vytvoří nová populace P, která bude tvořena 61
N/2 prvky. Prvkem nové populace P bude vždy lepší z dvojice x i a x N/2+i, pro 1 i N/2. Uvedený mechanismus redukce velikosti populace lze využít v jakékoli modifikaci či adaptivní verzi DE. V práci [57] navrhl Teo dvě verze samo-adaptivního mechanismu adaptace velikosti populace N v algoritmu differenciální evoluce. V první z nich využil metodiku absolutního kódování velikosti populace N, algoritmus nazval DESAP-Abs. V druhé využil metodiku relativního kódování velikosti populace N a algoritmus nazval DESAP-Rel. V obou navržených algoritmech se adaptuje nejen velikost populace N, ale i parametry mutace a křížení η F a η CR. K adaptaci velikosti populace je v obou verzích algoritmu použit pomocný parametr π. Oba algoritmy DESAP se chovají velmi podobně. S každým prvkem populace se vždy uchovávají i hodnoty η F, η CR a π. Na začátku běhu algoritmu se provede inicializace všech proměnných, vytvoří se počáteční populace o velikosti N = 10 d, parametry η F a η CR každého bodu populace se nastaví na náhodnou hodnotu z rovnoměrného rozdělení na intervalu [0, 1]. V algoritmu DESAP-Abs se π pro každého jedince populace nastaví na hodnotu N +c zaokrouhlenou na celé číslo, c je náhodná hodnota z normovaného normálního rozdělení N(0, 1). V algoritmu DESAP-Rel se pro každý prvek populace parametr π nastaví na hodnotu vybranou náhodně z rovnoměrného rozdělení na intervalu [ 0.5, 0.5]. Po provedení inicializace se v cyklu opakuje vytváření nové generace populace bodů až do vyčerpání času přiděleného běhu algoritmu (do splnění ukončovací podmínky). Nová generace populace se tvoří v cyklu po jednom prvku až do dosažení aktuální hodnoty parametru velikosti populace N. Každý z prvků se vytvoří následujícím způsobem. Nejdříve se vyberou náhodně tři prvky aktuální populace s indexy β 1, β 2 a β 3. Pak se s pravděpodobností η β 1 CR provede křížení jak vybraných bodů, tak jejich parametrů η F, η CR i π. Vytvoří se 62
tak nový bod y se svými hodnotami parametrů η F, η CR a π. Pak se provede mutace tohoto bodu y i jeho parametrů η F, η CR, π s pravděpodobností η β 1 F. Následně se jako prvek nové populace vybere lepší z bodů x β1 a y. Po vytvoření populace o velikosti N se spočítá nová hodnota parametru velikosti populace N n. Pro DESAP-Abs je N n rovna aritmetickému průměru z hodnot parametrů π všech bodů aktuální populace zaokrouhleného na celé číslo. Pro algoritmus DESAP-Rel se spočítá průměr π z hodnot parametrů π všech prvků aktuální generace populace P a N n se pak rovná hodnotě N(1 + π) zaokrouhlené na celé číslo. Jeli N n < N, pak se do další generace přesouvá pouze N n nejlepších prvků právě vytvořené populace. Je-li N n > N, pak se do právě vytvořené populace navíc (N n N)-krát přidá její nejlepší bod. Nakonec se změní hodnota parametru N na novou hodnotu, tj. na N n. Algoritmus se vrací na začátek cyklu a začne generovat další generaci populace P. Po otestování obou navržených modifikací DE adaptujících velikost populace a porovnání jejich účinnosti s účinností konvenční DE s různými nastaveními velikosti populace jejich autor vyslovil závěr, že účinnost konvenční DE a DE s adaptací velikosti populace jím navrženou je v podstatě srovnatelná. Teo dále konstatoval [57], že použití absolutního kódování v algoritmu DESAP vede k větší stabilitě výsledků než použití relativního kódování. 63
7 Algoritmus ODE Kromě mnoha adaptivních verzí algoritmu DE existují i jiné modifikace tohoto algoritmu. Jednou z nich je algoritmus ODE, který vznikl spojením DE a mechanismu OBL (z anglického: Opposition-based Learning). Tuto modifikaci algoritmu DE navrhl v roce 2008 Rahnamayan a kol. [44]. Při jejím návrhu se autoři nechali vést následující myšlenkou. Při řešení optimalizačního problému začne DE pracovat s populací počátečních řešení problému (náhodně vybraných z oblasti S) a snaží se tuto populaci zlepšovat směrem k optimálnímu řešení problému. Proces vyhledávání skončí, když populace splňuje předem danou ukončovací podmínku. Délka výpočtu algoritmu DE záleží, kromě jiného, na bodech vybraných pro počáteční generaci populace a např. na jejich vzdálenosti od skutečného řešení problému. Prověřením takzvaných protějších řešení může výpočet začít s vhodnějšími body z oblasti S a tudíž je šance na zkrácení výpočtu algoritmu, tedy na zvýšení rychlosti jeho konvergence. Stejnou myšlenku je možné aplikovat v každé z generací populace P. K přesnému popisu algoritmu ODE je nutné zavést pojmy protější číslo, protější bod a protější množina. Je-li x [a, b] reálné číslo, protějším číslem x čísla x v intervalu [a, b] budeme nazývat číslo x = a + b x. Je-li x = (x 1, x 2,..., x d ) bod d- dimenzionální oblasti Z = d j=1 [a j, b j ]; a j < b j, j = 1, 2,..., d, tedy x j R, x j [a j, b j ], j = 1, 2,..., d. Protějším bodem x bodu x vzhledem k oblasti Z budeme nazývat bod x = ( x 1, x 2,..., x d ), když x j je protější číslo čísla x j v intervalu [a j, b j ], j, 1 j d. Protější množinou OM množiny M vzhledem k oblasti Z budeme nazývat množinu protějších bodů všech bodů množiny M vzhledem k oblasti Z. 64
Popisovaná modifikace diferenciální evoluce ODE je v pseudokódu zapsána v Algoritmu 9. Algoritmus ODE [44] pracuje podobně jako algoritmus DE. Jen s tím rozdílem, že po vytvoření počáteční generace P 0 populace se vytvoří její protější množina OP 0 vzhledem k oblasti S a pro definitivní počáteční generaci populace P se použije N nejlepších z 2N bodů sjednocení množin P 0 a OP 0. Podobně se provede prověření protějších bodů po vytvoření každé další generace populace P s pravděpodobností J r, tentokrát však vzhledem k dynamické oblasti, v níž se nachází body aktuální generace populace P. Tato oblast se generuje jako nejmenší d-dimenzionální kvádr v němž leží body aktuální generace populace P. J r je vstupní parametr algoritmu a jeho autory doporučovaná hodnota je J r = 0.3. Na základě experimentálních porovnání Rahnamayan, Tizhoosh a Salama v práci [44] vyslovili závěr, že algoritmus ODE je vhodnější pro řešení optimalizačních problémů vyšších dimenzí. Celkový závěr uvedené práce je konstatování, že ODE je na autory použité sadě testovacích problémů efektivnější nebo alespoň stejně efektivní jako DE. Z výsledků práce [70] je ale patrné, že aplikací mechanismu OBL na zde testované adaptivní verze diferenciální evoluce se jejich efektivita nezvýší. 65
Algoritmus 9 ODE 1: vygeneruj počáteční generaci P 0 = (x 1, x 2,..., x N ) populace P ; 2: vypočítej hodnotu účelové funkce ve všech bodech generace P 0 ; 3: vygeneruj protější množinu OP 0 k množině bodů P 0 vzhledem k oblasti S; 4: vypočítej hodnoty účelové funkce ve všech bodech množiny OP 0 ; 5: vyber N nejlepších bodů z P 0 OP 0 a vytvoř tak definitivní počáteční generaci P 0 populace P ; 6: g=0; 7: repeat 8: Q g = P g ; 9: for i = 1 to N do 10: vytvoř pokusný bod y k bodu x i ; 11: vypočítej hodnotu účelové funkce v bodě y; 12: if f(y) f(x i ) then 13: do Q g vlož na místo bodu x i bod y; 14: end if 15: end for 16: P g+1 = Q g ; 17: g=g+1; 18: if rand(0, 1) < J r then 19: vytvoř protější množinu OP g k množině bodů P g ; 20: nová P g je množina N nejlepších bodů P g OP g ; 21: end if 22: until ukončovací podmínka; 66
8 Konvergence algoritmu diferenciální evoluce Konvergencí algoritmu DE se rozumí jeho přibližování se k řešení při běhu pro konkrétní optimalizační problém, tedy podoba závislosti chyby řešení na čase. Čas se v tomto případě nejčastěji udává v jednotkách počtu výpočtů optimalizované účelové funkce. Prvním z důvodů pro výběr této jednotky k měření času v oblasti optimalizačních algoritmů je častá jednoduchost těchto algoritmů a s tím související fakt, že výpočet hodnoty účelové funkce pak bývá jednou z časově nejnáročnějších operací optimalizačního algoritmu. Druhým důvodem pro výběr této jednotky pro měření času je potřeba možnosti porovnání optimalizačních algoritmů běžících na různých počítačích, případně v jiných prostředích. Konvergencí algoritmu DE se ale také rozumí tzv. teoretická konvergence algoritmu. Tento termín popisuje fakt, kdy za předpokladu nekonečného času poskytnutého výpočtu algoritmu, tedy nekonečného počtu možných provedení výpočtu optimalizované funkce, neboli nekonečného počtu G vytvořených generací populace P se nalezené řešení x G daného optimalizačního problému blíží skutečnému bodu globálního minima x optimalizované účelové funkce f s pravděpodobností 1. lim P (x G x ) = 1, (34) G x G je řešení algoritmu v G-té generaci populace P. S konvergencí DE, tak jako i jiných evolučních algoritmů, úzce souvisí jevy stagnace a předčasná konvergence. Tyto dva pojmy se v pracech týkajících se evolučních algorimů běžně používají, přestože jejich význam nebyl přesně stanoven. V oblasti teoretického výzkumu algoritmu diferenciální evoluce se také často zmiňuje pojem diverzita populace a s ní související 67
pojmy populační průměr a populační rozptyl [75]. Populace bodů v DE je množina d-rozměrných vektorů. Populace se vyvíjí v každém z d rozměrů nezávisle na ostatních rozměrech, proto je možné uvažovat pouze jediný z rozměrů a populaci vnímat jako jednorozměrnou náhodnou veličinu. Pak lze uvažovat i populační průměr a populační rozptyl. Pojem diverzita populace pak souvisí s populačním rozptylem, se snižujícím se populačním rozptylem se snižuje diverzita populace a naopak. Pojmy stagnace a předčasná konvergence se nejčastěji používají v následujícím významu. Pojem stagnace se pojí s výpočtem evolučního algoritmu pro konkrétní optimalizační problém a popisuje situaci, kdy se populace bodů neblíží (nekonverguje) k žádnému bodu, populace tedy neztratila diverzitu, ale nijak se dál nevyvíjí. Tzn. existuje G-tá generace P G populace P a platí, že každá z generací P G+1, P G+2, P G+3,... populace P následujících po G-té generaci P G je s generací P G totožná. Riziko nastoupení tohoto jevu při běhu DE ovlivňuje spousta faktorů. Jsou to hodnoty řídících parametrů DE, tedy N, F, CR, použitá strategie (kombinace mutace a křížení), ale i tvar účelové funce f a aktuální složení populace. Účelová funkce je však při řešení konkrétního optimalizačního problému dána a aktuální složení populace velmi závisí na náhodě. Uživatel je tedy schopen řídit pouze výběr strategie a hodnoty parametrů N, F a CR. Uvažujme zde nastavení DE s DE-strategií DE/rand/1/bin. Nastavením vhodné, tj. dostatečně vysoké, hodnoty parametru N lze stagnaci, jak v [21] uvádějí Lampinen a Zelinka, úspěšně předcházet. Nastoupení tohoto jevu totiž do značné míry souvisí s počtem všech možných různých pokusných bodů y, které lze k bodu x i vytvořit. Tento počet zase velmi úzce souvisí s počtem bodů v populaci. Čím menší je hodnota parametru N, tím větší je riziko stagnace algoritmu DE. V souvislosti s možností objevení se jevu stagnace se také nedoporučuje 68
volit hodnotu parametru mutace F rovnu 1, hodnotu parametru křížení CR se doporučuje volit různou od hodnot 0 a 1 [21]. Totiž, při nastavení CR = 0 lze z každé náhodně vybrané trojice bodů populace r 1, r 2, r 3 k bodu x i vytvořit pouze d různých pokusných bodů. Při nastavení CR = 1 se počet různých pokusných bodů y vytvořených k bodu x i pomocí vybrané trojice r 1, r 2 a r 3 dokonce rovná 1. Nastavení F = 1 (opět za předpokladu nastavení DE s DE-strategií DE/rand/1/bin) také snižuje počet možných různých pokusných bodů y k bodu x i v aktuální populaci. Představme si situaci, že se k bodu x i jako r 1, r 2, r 3 poprvé vybere uspořádaná trojice bodů (x A, x B, x C ) a jindy uspořádaná trojice bodů (x B, x A, x C ). Pak v případě, že F = 1, platí x A + F (x B x C ) = x B + F (x A x C ) a tedy dva různě vytvořené pokusné body se rovnají. Z výše uvedeného plyne, že nastavení F = 1 se z hlediska stagnace nedoporučuje, protože také snižuje počet všech možných různých pokusných bodů y, které lze k danému bodu x i vytvořit. Pojem předčasná konvergence se používá pro jev, který je charakterizován tím, že populace ztratila diverzitu a konverguje (blíží se) k bodu lokálního optima, nebo k jinému bodu, který není globálním optimem. Na tomto místě je zapotřebí zmínit, že důkaz teoretické konvergence algoritmu diferenciální evoluce zatím v literatuře nebyl předložen. Co se týká důkazu teoretické konvergence jiných stochastických optimalizačních algoritmů, tak např. v [65] Mišík předložil důkaz teoretické konvergence algoritmu CRS se soutěžícími heuristikami. Uvažujme algoritmus slepého náhodného prohledávání, jednoduchou úvahou lze ukázat, že se také jedná o teoreticky konvergentní optimalizační algoritmus. Otázkou však zůstává to, jak důležitá je existence formálního důkazu konvergence optimalizačního algoritmu pro jeho praktické využití. Vezměme tedy např. algoritmus slepého 69
náhodného prohledávání, který je teoreticky konvergentní, tento fakt však nijak nezvyšuje efektivitu tohoto algoritmu při jeho praktickém použití pro konkrétní optimalizační problém. 70
9 Porovnávání efektivity algoritmů, sady testovacích problémů Podle tzv. No Free Lunch teorému [72] neexistuje univerzálně nejlepší optimalizační algoritmus. Tzn., neexistuje optimalizační algotimus, který by v porovnání s ostatními pracoval nejefektivněji při řešení jakéhokoli optimalizačního problému. I tento fakt vede k neustálému zdokonalování existujících optimalizačních algoritmů a vývoji dalších nových. Protože existuje spousta optimalizačních algoritmů a stále vznikají další, existuje i potřeba je porovnávat, resp. porovnávat jejich efektivitu. K porovnávání efektivity optimalizačních algoritmů se využívají testovací problémy, častěji sady takovýchto testovacích problémů. Sadou testovacích problémů je množina optimalizačních problémů, u kterých je známo řešení. Pro každý z množiny optimalizačních problémů je definována účelová funkce f, d- rozměrná prohledávaná oblast S a bod x, který je bodem globálního minima účelové funkce f v oblasti S. Testovací problémy, resp. sady testovacích problémů se pak využívají tak, že všechny porovnávané algoritmy necháme po řadě řešit všechny testovací problémy, zpravidla v několika úrovních dimenze. Testované algoritmy jsou algoritmy stochastické, proto každý z porovnávaných algoritmů necháme každý z testovacích optimalizačních problémů řešit n-krát. Poté přichází na řadu statistické porovnání dosažených výsledků jednotlivých algoritmů pro každý z testovacích problémů. Experimentální porovnání dvou nebo více optimalizačních algoritmů se nejčastěji provádí na některé z širší komunitou uznávaných testovacích sad optimalizačních problémů. V každé z testovacích sad bývají obsaženy různě složité optimalizační problémy, a to jak z hlediska modality účelové funkce 71
f (unimodální i multimodální), tak i z hlediska její separability (separabilní i neseparabilní). Unimodální funkcí se rozumí funkce f, která má v prohledávané oblasti S jediné lokální minimum a to je tedy i globálním minimem. Multimodální funkcí se rozumí funkce, která má v prohledávané oblasti více než jedno lokální minimum. Funkce f je separabilní, když existují funkce f 1, f 2,..., f d a platí: d f(x) = f(x 1, x 2,..., x d ) = f j (x j ). (35) V opačném případě se jedná o funkci neseparabilní. Jedna z dříve často využívaných testovacích sad optimalizačních problémů sestává z šesti testovacích problémů. Jedná se o optimalizační problémy, které řeší optimalizační problém s účelovými funkcemi známými pod jmény De Jong, Ackley, Griewangk, Rastrigin, Schwefel, Rosenbrock. Uvedené optimalizační problémy jsou definovány následovně (účelová funkce f, prohledávaná oblast S, bod globálního minima x, hodnota účelové funkce v bodě globálního minima f(x )): j=1 První De Jongova funkce (unimodální, separabilní) d f(x) = x 2 j (36) j=1 x j [ 5.12, 5.12], x = (0, 0,..., 0), f(x ) = 0 Ackleyho funkce (multimodální, neseparabilní) f(x) = 20 exp 0.2 1 d x 2 j d j=1 72
exp 1 d d cos 2πx j + 20 + exp(1) (37) j=1 x j [ 30, 30], x = (0, 0,..., 0), f(x ) = 0 Griewankova funkce (multimodální, neseparabilní) f(x) = d x 2 d j 4000 j=1 j=1 x j [ 400, 400], x = (0, 0,..., 0), f(x ) = 0 ( ) xj cos + 1 (38) j Rastriginova funkce (multimodální, separabilní) f(x) = 10d + d [x 2 j 10 cos (2πx j )] (39) j=1 x j [ 5.12, 5.12], x = (0, 0,..., 0), f(x ) = 0 Rosenbrockova funkce (unimodální, neseparabilní) d 1 f(x) = [100(x 2 j x j+1 ) 2 + (1 x j ) 2 ] (40) j=1 x j [ 2048, 2048], x = (1, 1,..., 1), f(x ) = 0 Schwefelova funkce (multimodální, separabilní) f(x) = d j=1 x j [ 500, 500], x = (s, s,..., s), s = 420.9687, f(x ). = 418.982887 d x j sin x j (41) 73
60 40 f(x) 20 5 0 0 0 5 x 2 5 5 x 1 Obrázek 6: Část grafu První De Jongovy funkce, d = 2 25 20 15 f(x) 10 5 30 0 20 x 2 10 0 0 10 x 1 20 30 Obrázek 7: Část grafu Ackleyho funkce, d = 2 74
2.5 2 1.5 f(x) 1 0.5 20 0 10 x 2 0 0 5 10 15 20 x 1 Obrázek 8: Část grafu Griewankovy funkce, d = 2 80 60 f(x) 40 20 0 4 x 2 2 0 0 1 2 x 1 3 4 5 Obrázek 9: Část grafu Rastriginovy funkce, d = 2 75
1500 f(x) 1000 500 0 2 1.5 1 0.5 0 0 0.5 1 1.5 2 x 2 x 1 Obrázek 10: Část grafu Rosenbrockovy funkce, d = 2 Obrázek 11: Část grafu Schwefelovy funkce, d = 2 76