Heuristiky UNIVERZITA PALACKÉHO V OLOMOUCI KATEDRA MATEMATICKÉ ANALÝZY A APLIKACÍ MATEMATIKY. Vypracovala:



Podobné dokumenty
Obsah. Zelinka: UI v problémech globální optimalizace BEN technická literatura 3


6. T e s t o v á n í h y p o t é z

Simulované žíhání jako nástroj k hledání optimálního řešení

BAKALÁŘSKÁ PRÁCE. Numerické metody jednorozměrné minimalizace

1. Úvod do genetických algoritmů (GA)

2. RBF neuronové sítě

VYSOKÁ ŠKOLA EKONOMICKÁ V PRAZE. Optimalizace trasy při revizích elektrospotřebičů

Funkce zadané implicitně

GRAFY A GRAFOVÉ ALGORITMY

IB108 Sada 1, Příklad 1 Vypracovali: Tomáš Krajča (255676), Martin Milata (256615)

Analytické programování v C#

Masarykova univerzita. Fakulta informatiky. Evoluce pohybu

UNIVERSITA PALACKÉHO V OLOMOUCI PŘÍRODOVĚDECKÁ FAKULTA. KATEDRA MATEMATICKÉ ANALÝZY A APLIKACÍ MATEMATIKY školní rok 2009/2010 BAKALÁŘSKÁ PRÁCE

Skalární součin je nástroj, jak měřit velikost vektorů a úhly mezi vektory v reálných a komplexních vektorových prostorech.

Dnešní program odvozování v Bayesovských sítích exaktní metody (enumerace, eliminace proměnných) aproximační metody y( (vzorkovací techniky)

Biologicky inspirované výpočty: evoluční algoritmy

Regresní a korelační analýza

zejména Dijkstrův algoritmus pro hledání minimální cesty a hladový algoritmus pro hledání minimální kostry.

Reference 10. Předpokládejme stavový popis spojitého, respektive diskrétního systému

Analýza spolehlivosti tlakové nádoby metodou Monte Carlo

Jak se matematika poučila v biologii

Vícekriteriální hodnocení variant metody

Jak pracovat s absolutními hodnotami

Genetické algoritmy. Vysoká škola ekonomická Praha. Tato prezentace je k dispozici na:

Břetislav Fajmon, UMAT FEKT, VUT Brno. Poznámka 1.1. A) první část hodiny (cca 50 minut): představení všech tří metod při řešení jednoho příkladu.

Gramatická evoluce a softwarový projekt AGE

Organizační pokyny k přednášce. Matematická statistika. Přehled témat. Co je statistika?

Jazyk matematiky Matematická logika Množinové operace Zobrazení Rozšířená číslená osa

MATEMATIKA IV - PARCIÁLNÍ DIFERENCIÁLNÍ ROVNICE - ZÁPISKY Z. Obsah. 1. Parciální diferenciální rovnice obecně. 2. Kvaazilineární rovnice prvního řádu

2 Spojité modely rozhodování

(Auto)korelační funkce Statistické vyhodnocování exp. dat M. Čada ~ cada

Petr Chvosta. vlevo, bude pravděpodobnost toho, že se tyč na počátku intervalu τ B nachází nad vpravo

Řešení problému vážené splnitelnosti booleovské formule pokročilou iterativní metodou

Matematika a ekonomické předměty

Optimalizační algoritmy inspirované chováním mravenců

Kapitola 11. Vzdálenost v grafech Matice sousednosti a počty sledů

Metody operačního výzkumu cvičení

Zada ní 1. Semina rní pra ce z pr edme tu Matematický software (KI/MSW)

Matice se v některých publikacích uvádějí v hranatých závorkách, v jiných v kulatých závorkách. My se budeme držet zápisu s kulatými závorkami.

Základní spádové metody

Skalár- veličina určená jedním číselným údajem čas, hmotnost (porovnej životní úroveň, hospodaření firmy, naše poloha podle GPS )

Matematická statistika

Evoluční algoritmy. Podmínka zastavení počet iterací kvalita nejlepšího jedince v populaci změna kvality nejlepšího jedince mezi iteracemi

V praxi pracujeme s daty nominálními (nabývají pouze dvou hodnot), kategoriálními (nabývají více

POHYBY TĚLESA V ODPORUJÍCÍM PROSTŘEDÍ

KGG/STG Statistika pro geografy

Algoritmus Minimax. Tomáš Kühr. Projektový seminář 1

8. Posloupnosti, vektory a matice

A0M15EZS Elektrické zdroje a soustavy ZS 2011/2012 cvičení 1. Jednotková matice na hlavní diagonále jsou jedničky, všude jinde nuly

3. Středoškolská stereometrie v anaglyfech

Matematika I Lineární závislost a nezávislost

Západočeská univerzita v Plzni. Fakulta aplikovaných věd Katedra matematiky. Geometrie pro FST 1. Pomocný učební text

Implementace A* algoritmu na konkrétní problém orientace v prostoru budov

Metoda Monte Carlo, simulované žíhání

Katedra kybernetiky skupina Inteligentní Datové Analýzy (IDA) 9. dubna Filip Železný (ČVUT) Vytěžování dat 9.

Lineární programování

Markov Chain Monte Carlo. Jan Kracík.

Některé zákony rozdělení pravděpodobnosti. 1. Binomické rozdělení

ACTA UNIVERSITATIS AGRICULTURAE ET SILVICULTURAE MENDELIANAE BRUNENSIS SBORNÍK MENDELOVY ZEMĚDĚLSKÉ A LESNICKÉ UNIVERZITY V BRNĚ

Umělá inteligence I. Roman Barták, KTIML.

Elektrotechnická fakulta

5. Maticová algebra, typy matic, inverzní matice, determinant.

Modely diskrétní náhodné veličiny. Jiří Neubauer. Katedra ekonometrie, FVL, UO Brno kancelář 69a, tel

2.1 Podmínka typu case Cykly Cyklus s podmínkou na začátku Cyklus s podmínkou na konci... 5

ENVIRONMENTÁLNÍ OPTIMALIZACE KOMŮRKOVÉ ŽELEZOBETONOVÉ DESKY

Informatika Algoritmy

Cyklické změny v dynamice sluneční konvektivní zóny

+ ω y = 0 pohybová rovnice tlumených kmitů. r dr dt. B m. k m. Tlumené kmity

MINISTERSTVO ŠKOLSTVÍ, MLÁDEŽE A TĚLOVÝCHOVY. Učební osnova předmětu MATEMATIKA. pro studijní obory SOŠ a SOU (13 15 hodin týdně celkem)

3. Matice a determinanty

Několik poznámek na téma lineární algebry pro studenty fyzikální chemie

LBP, HoG Ing. Marek Hrúz Ph.D. Plzeň Katedra kybernetiky 29. října 2015

(n, m) (n, p) (p, m) (n, m)

K přednášce NUFY028 Teoretická mechanika prozatímní učební text, verze Spojitá prostředí: rovnice struny Leoš Dvořák, MFF UK Praha, 2014

DETEKCE DISKREDIBILITY SENZORU U KOTLE NA BIOMASU OPTIMALIZAČNÍMI ALGORITMY

Genetické algoritmy a jejich praktické využití

skladbu obou směsí ( v tunách komponenty na 1 tunu směsi):

Y36BEZ Bezpečnost přenosu a zpracování dat. Úvod. Róbert Lórencz. lorencz@fel.cvut.cz

KATEDRA INFORMATIKY UNIVERZITA PALACKÉHO LINEÁRNÍ ALGEBRA 1 OLGA KRUPKOVÁ VÝVOJ TOHOTO UČEBNÍHO TEXTU JE SPOLUFINANCOVÁN

5. Lokální, vázané a globální extrémy

Implementace numerických metod v jazyce C a Python

ZÁKLADY PROGRAMOVÁNÍ. Mgr. Vladislav BEDNÁŘ , 5.1 a 5.2 8/14

Matematika pro kombinované studium BOZO. Konzultace pátá. RNDr. Libuše Samková, Ph.D. pf.jcu.cz

Matematika pro studenty ekonomie

REGRESNÍ ANALÝZA V PROSTŘEDÍ MATLAB

3.2 Rovnice postupné vlny v bodové řadě a v prostoru

1. Alternativní rozdělení A(p) (Bernoulli) je diskrétní rozdělení, kdy. p(0) = P (X = 0) = 1 p, p(1) = P (X = 1) = p, 0 < p < 1.

ROZPOZNÁVÁNÍ AKUSTICKÉHO SIGNÁLU ŘEČI S PODPOROU VIZUÁLNÍ INFORMACE

Matematika I: Aplikované úlohy

Fyzikální korespondenční seminář MFF UK

Projekční algoritmus. Urychlení evolučních algoritmů pomocí regresních stromů a jejich zobecnění. Jan Klíma

Matice. Přednáška MATEMATIKA č. 2. Jiří Neubauer. Katedra ekonometrie FEM UO Brno kancelář 69a, tel

Studentská tvůrčí a odborná činnost STOČ 2015

Algoritmus pro hledání nejkratší cesty orientovaným grafem

Princip řešení soustavy rovnic

Pracovní text a úkoly ke cvičením MF002

Hledání extrémů funkcí

Lenka Zalabová. Ústav matematiky a biomatematiky, Přírodovědecká fakulta, Jihočeská univerzita. zima 2012

Drsná matematika IV 7. přednáška Jak na statistiku?

Transkript:

UNIVERZITA PALACKÉHO V OLOMOUCI PŘÍRODOVĚDECKÁ FAKULTA KATEDRA MATEMATICKÉ ANALÝZY A APLIKACÍ MATEMATIKY BAKALÁŘSKÁ PRÁCE Heuristiky Vedoucí bakalářské práce: Mgr. Jaroslav Marek, Ph.D. Rok odevzdání: 2008 Vypracovala: Lucie Koděrová ME, III. ročník

Prohlášení Prohlašuji, že jsem tuto bakalářskou práci vypracovala samostatně za odborného vedení Mgr. Jaroslava Marka Ph.D. Dále prohlašuji, že veškeré podklady, ze kterých jsem čerpala, jsou uvedeny v seznamu literatury. V Olomouci dne 8. dubna 2008

Poděkování Ráda bych poděkovala Mgr. Jaroslavu Markovi, Ph.D. za jeho trpělivost, úsilí, rady a čas, který mi věnoval při konzultacích.

Obsah Úvod 4 1 Globální optimalizace 5 1.1 Metody klasické optimalizace.................... 5 1.2 Řešení optimalizačních úloh pomocí stochastických algoritmů... 6 1.3 Problematika využívání stochastických algoritmů......... 7 1.4 Evoluční algoritmy.......................... 8 2 Testovací funkce 9 3 Algoritmy pro globální optimalizaci 12 3.1 Genetické algoritmy.......................... 12 3.2 Slepé prohledávání.......................... 13 3.3 Horolezecký algoritmus........................ 14 3.4 Algoritmus SOMA.......................... 15 3.5 Diferenciální evoluce (DE)...................... 17 3.6 Metoda simulovaného žíhání..................... 18 3.6.1 Fyzikální interpretace žíhání tuhého tělesa......... 18 3.6.2 Metropolisův algoritmus................... 19 3.6.3 Simulované žíhání....................... 20 3.6.4 Simulované žíhání s elitizmem................ 22 3.6.5 Paralelní simulované žíhání................. 22 3.7 Vlastní algoritmus RYPOŠ...................... 23 4 Aplikace heuristik 28 5 Testování uvedených algoritmů praktická část 29 6 Závěr 36 Literatura 38 Přílohy 40

Úvod Optimalizační problémy jsou s naším běžným životem provázány pevněji, než by se mohlo zdát. Setkáme se s nimi například při hledání nejvhodnějších dokumentů obsahujících požadované informace, při objevování nejzajímavějších informací v dostupných datech, rozmisťování strojů ve výrobní hale tak, aby zabíraly co nejméně místa, a při dalších činnostech, kdy můžeme výsledné hodnoty získat pouze empiricky. Optimalizací rozumíme postup zaměřený na nalezení určitého vyhovujícího řešení nějaké úlohy. Protože deterministické algoritmy mnohdy při řešení úlohy globální optimalizace selhávaly, začaly být nahrazovány algoritmy heuristickými. Moderní informatika se při navrhování nových algoritmů, postupů a metod inspiruje v okolním světě, převážně v přírodě. Darwinova evoluční teorie posloužila odborníkům jako základ evolučních algoritmů, které tvoří aktuální problematiku informatiky a numerické matematiky. Počítačové simulace evolučních algoritmů mohou vědcům pomoci získat odpovědi na různé důležité otázky z biologie, psychologie, sociologie atd. Vznikly také evoluční algoritmy, které svoji inspiraci nehledaly v živé přírodě, ale ve fyzice. Patří mezi ně metoda simulovaného žíhání (Simulated Annealing, SA), která vychází z představ evoluce termodynamických systémů. Objasnění principu metody simulovaného žíhání a její implementace je jedním z cílů této bakalářské práce. Hlavním úkolem je obeznámit čtenáře s problémem stochastické optimalizace, zmínit problémy spojené s použitím stochastických algoritmů pro hledání globálních extrémů (slepého prohledávání, horolezeckých algoritmů, zakázaného hledání, simulovaného žíhání, genetických algoritmů, diferenciální evoluci). Potřeba porovnat úspěšnost jednotlivých algoritmů vedla k zavedení tzv. testovacích funkcí. V práci provedeme vyhodnocení úspěšnosti uvedených algoritmů na těchto testovacích funkcích (např. Ackleyho funkce, De Jongova funkce, Griewangkova funkce, Rastrigova funkce, Rosenbrockovo sedlo, Schwefelova funkce). V práci navrhneme vlastní algoritmus a prozkoumáme jeho úspěšnost. 4

1. Globální optimalizace Při řešení problému globální optimalizace (podrobněji popsáno např. v [1]) hledáme pro danou účelovou funkci f : D R, D R d, (1) bod x tak, aby x = arg min x D f(x). (2) Bod x* se nazývá globální minimum. Pro jednoduchost budeme uvažovat, že D je souvislá množina tvaru D = d a i, b i, a i < b i, i = 1,..., d. (3) i=1 Pod pojmem heuristika budeme chápat nedeterministické pravidlo, které z bodů více či méně náhodně generované populace vytváří posloupnost bodů, které aproximují globální minimum. 1.1. Metody klasické optimalizace Než se začneme zabývat stochastickými metodami optimalizace minima, zmíníme nejprve základní klasické metody pro řešení těchto úloh. Klasickými metodami se rozumí takové, které se opírají o podmínky optimality (podrobně je studováno např. ve skriptech [2]). Pro diferencovatelnou funkci f stanovíme stacionární body, tj. všechna řešení rovnice grad f(x) = 0. Ty z nich, v nichž je Hessova matice pozitivně definitní, jsou body minima. Hessova matice má tvar ( ) f(x) H = i, j = 1,..., n. (4) x i x j Pozitivně definitní je taková matice A, pro kterou platí: x Ax > 0 pro každý nenulový vektor x R d, všechna vlastní čísla matice A jsou kladná, 5

všechny hlavní minory M 1, M 2,..., M d matice A jsou kladné. Poznámka. Minor příslušný k prvku a i,j matice A je determinant matice A i,j, kterou získáme z matice A odstraněním i-tého řádku a j-tého sloupce. Pokud nemáme podrobnější informace o účelové funkci f, každá z následujících metod určuje v případě optimalizace bez omezení lokální řešení. Metody pro řešení úloh nepodmíněné optimalizace rozdělujeme do tří kategorií podle požadavků na hladkost funkce f. Metody přímého výběru nevyžadují výpočty derivací. Speciální spádové metody vyžadují výpočet gradientů (např. metoda největšího spádu, kvazinewtonovské metody). Newtonova metoda vyžaduje výpočet druhých derivací. Protože případy globální optimalizace řešíme často především v praxi, je velmi důležité zabývat se také teoretickou stránkou, všeobecnou úlohou globální optimalizace. Mnohdy velmi jednoduchá formulace celého optimalizačního problému může být matoucí a vyvolávat dojem, že určení deterministického algoritmu řešícího všeobecnou úlohu globální optimalizace je jednoduché. Ve skutečnosti analýza ukazuje, že takovýto deterministický algoritmus neexistuje. Dále budeme tedy uvažovat pro řešení těchto problémů stochastické algoritmy. 1.2. Řešení optimalizačních úloh pomocí stochastických algoritmů Alternativou pro řešení složitých optimalizačních příkladů je použití stochastických algoritmů, především evolučních algoritmů, jejichž popularita stále roste. Tak zvané heuristické metody jsou vesměs založeny na principu postupného zlepšování řešení. Tyto algoritmy nám sice umožní nalézt globální optimum, ale v průběhu hledání nejsme schopni určit ani vzdálenost aktuálně dosaženého řešení od globálního optima, ani s jakou pravděpodobností může být globálního optima dosaženo. 6

Evoluční algoritmy jsou typické svojí robustností schopností řešit obtížné optimalizační úlohy, nebo úlohy, ve kterých potřebujeme o něčem rozhodnout. Lze je charakterizovat vlastnostmi jako je multimodálnost a multikriteriálnost. Jejich nasazení je efektivní v úlohách, které lze definovat následovně: Prostor řešení je příliš rozsáhlý a chybí odborná znalost, která by umožnila zúžit prostor slibných řešení. Nelze provést matematickou analýzu problému. Tradiční metody selhávají. Jde o úlohy s mnohačetnými extrémy, kritérii a omezujícími podmínkami. Evoluční algoritmy mají v praxi široké použití v různorodých odvětvích od strojového plánování až po ekonomii a psychologii. Je však třeba poukázat na jisté nevýhody evolučních algoritmů. 1.3. Problematika využívání stochastických algoritmů Úlohy, které jsou pro nás deterministicky neřešitelné, nám pomáhají vyřešit stochastické algoritmy. Tím se sice dozvíme výsledek složitého úkolu, ale musíme vzít na vědomí, že používání heuristických metod je spojeno s problémy ovlivňujícími kvalitu řešení. Tato podkapitola vychází ze zdroje [3]. Na rozdíl od jiných optimalizačních metod stanovují evoluční algoritmy optimum dané funkce pouze na základě práce s jejími funkčními hodnotami. Získání těchto funkčních hodnot bývá často hodně nákladné a časově náročné. Blíží se proto k optimu velmi pomalu vzhledem k jiným optimalizačním metodám, které navíc využívají ještě informace o gradientu cílové funkce, případně o jejích druhých derivacích. Pokud ovšem známe z předchozích zkušeností hodnoty cílové funkce, můžeme pro optimalizaci sestrojit aproximaci založenou na základě této databáze. Původní funkci potom používáme pouze pro ověřování výsledků získaných pomocí její aproximace. Tímto postupem můžeme docílit snížení nákladů na testování. Dále bychom si měli před užitím evolučního algoritmu uvědomit, že daný konkrétní typ algoritmu se hodí pro řešení jen určitého okruhu problémů. Evoluční 7

algoritmy nejsou tedy vhodné pro řešení všech úloh. Neměli bychom proto také zapomínat na škálu klasických metod (např. uvedených v kapitole 1.1), které jsou schopny vyřešit řadu optimalizačních úloh s relativně nízkou výpočetní náročností. Shrnutí nevýhod evolučních algorimů: Pro mnohé úlohy je typická velká časová náročnost. Nelze otestovat, zda se jedná o globální optimum. Pro příliš rozsáhlé úlohy poskytují řešení příliš vzdálená od optima. Ukončení optimalizace je předem určené na základě časového limitu nebo stagnace kriteriální funkce. 1.4. Evoluční algoritmy Evoluční algoritmy jsou algoritmy založené na základě Darwinovy evoluční teorie vývoje populací. Vycházejí tedy z poznatků převzatých z života v přírodě a aplikují zákonitosti, které použil Darwin ve své teorii. Populací chápeme všeobecné vyjádření sledu generací. Při práci s populacemi využívají evoluční algoritmy také evolučních operátorů: selekce, křížení a mutace. selekce předpokládáme, že nejsilnější jedinci z populace mají větší pravděpodobnost přežít a předat své vlastnosti, křížení dva nebo více jedinců z populace si vymění informace a vzniknou noví jedinci, kteří kombinují vlastnosti rodičů, mutace informace zakódovaná v jedinci může být náhodně změněna. Předpis evolučního algoritmu bez explicitní mutace (viz [1]): procedura EA vygenerujeme P (populaci o N bodech náhodně vybranou z D) repeat najdeme nejhorší bod v P, x worst, s nejlepší hodnotou f zkopírujeme M nejlepších bodů z P do nové populace Q, 1 M < N repeat 8

repeat vygenerujeme nový zkušební bod y podle heuristiky aplikované na P until f(y) x worst zapisujeme nové zkušební body do Q until Q není tvořeno N body nahradíme P za Q dokud není splněna ukončovací podmínka end Za heuristiku zde považujeme libovolné nedeterministické pravidlo generující nový bod y D, většinou tím míníme postup užívající evoluční operátory, který z bodů v generaci P vygeneruje nový bod y D. 2. Testovací funkce Pro testování spolehlivosti a úspěšnosti algoritmů jsou využívány speciální testovací funkce, jejichž hodnotu globálního minima známe a u nichž je úloha optimalizace extrému velmi složitá. Pro praktické testování bylo použito těchto šest funkcí: Ackleyho funkce, první De Jongova funkce, Griewangkova funkce, Rastrigova funkce, Rosenbrockovo sedlo (Druhá De Jongova funkce) a Schwefelova funkce. Jejich funkční předpisy, definiční obory a reálné hodnoty minima jsou převzaté z [4] a jsou uvedeny u jednotlivých grafů (viz obr. 2.1 a) f)), které byly vykresleny pomocí Matlabu vždy pro případ Dim = d = 2. 9

a) Ackleyho funkce D = 30, 30 30, 30, minimum x = (0,..., 0), f(x) = 0 funkční předpis: f(x) = Dim 1 i=1 (20 + e 0.2 0.5(x 2 i 1 x2 i ) e 0.5(cos(2πxi+1)+cos(2πxi)) ) b) První DeJongova funkce D = 5.12, 5.12 5.12, 5.12, minimum x = (0,..., 0), f(x) = 0 funkční předpis: f(x) = Dim i=1 x2 i c) Griewangkova funkce D = 600, 600 600, 600, minimum x = (0,..., 0), f(x) = 0 funkční předpis: f(x) = Dim xi i=1 cos( i + Dim x 2 i i=1 4000 + 1) Obr. 2.1: Testovací funkce, předpisy, globální minima a jejich funkční hodnoty

d) Rastrigova funkce D = 5.12, 5.12 5.12, 5.12, minimum x = (0,..., 0), f(x) = 0 funkční předpis: f(x) = 10 Dim Dim i=1 (x2 i 10 cos(2πx i)) e) Rosenbrockovo sedlo D = 2.048, 2.048 2.048, 2.048, minimum x = (1,..., 1), f(x) = 0 funkční předpis: f(x) = Dim 1 i=1 (100(x 2 i x i+1) 2 + (1 x i ) 2 ) f) Schwefelova funkce D = a, a a, a, a = 500.12, minimum x = (420.97,..., 420.97), f(x) = 418.9829 d funkční předpis: f(x) = Dim i=1 x i sin( x i ) Obr. 2.1: Testovací funkce, předpisy, globální minima a jejich funkční hodnoty

3. Algoritmy pro globální optimalizaci Heuristiky můžeme popsat jako zkratkovitý postup hledání založený na zkušenostech, poskytující řešení v přijatelném čase, ale bez záruky na správný výsledek. Lze je použít, pokud na řešení úlohy neexistuje jednoznačný algoritmus, nebo je hledání pomocí něj příliš zdlouhavé. Vzhledem k obtížnosti problematiky globální optimalizace se mnohdy musíme spokojit pouze s určitou pravděpodobností, že při hledání uspějeme. Záměrem je umět poznat a zkoušet řídit pravděpodobnost správného řešení. Určit, jaké minimální množství pokusů musíme provést, abychom se dostali na přiměřenou hladinu rizika neúspěchu. Existuje celá řada užívaných algoritmů, které pomáhají řešit optimalizační úlohy. Pro bližší seznámení jsem si vybrala metody: genetické algoritmy, slepé prohledávání, horolezecké algoritmy, zakázané hledání, simulované žíhání, diferenciální evoluci a algoritmus SOMA. Princip fungování stochastických algoritmů je dobře popsán ve zdrojích [6], [7] a [12]. 3.1. Genetické algoritmy Genetické algoritmy jsou druhem evolučních algoritmů, jsou nejlépe popsány ve zdrojích [3], [5]. Jejich základní myšlenka spočívá v zakódování informace při hledání tak, aby slabší generace byla v dalším kroku nahrazena lepší generací. Při hledání optima můžeme považovat body na funkci za části dědičného materiálu a potom uplatnit evoluční operátory (křížení, mutace), stejně jako je pozorujeme v přírodě. Řízení heuristiky je možné pomocí parametrizace nebo selekce. Nabízí se zde možnosti jako: Mutaci a křížení lze řídit elitářstvím, řízenou mutací (určíme sílu mutace a její úbytek v průběhu generace), řízením křížení (určíme procentuální část neelitního podílu populace, která se bude křížit). Nastavením maximálního počtu generací. 12

Řízením výběru rodiče na základě jeho fitness (síla, robustnost, ohodnocení). Porovnávání fitness pro snazší nalezení vhodných rodičů pro budoucí generaci. Handicapováním oblasti hledání, o které víme, že zde pravděpodobně globální extrém neleží. Užití vyhledávacího algoritmu na dohledání optima poté, co genetické algoritmy ukončily svou činnost. 3.2. Slepé prohledávání Nejjednodušším způsobem hledání optimálního řešení je jeho náhodné (stochastické) hledání. Vygeneruje se náhodné řešení a toto řešení se vyzkouší, t.j. vyhodnotí se jeho fitness funkce. První řešení je zaznamenáno vždy, dále zaznamenáváme jen ta řešení, kdy je fitness nového nalezeného minima větší než fitness nejlepšího doposud nalezeného. Pokračuje se generováním dalšího řešení a jeho vyzkoušením. Důležitým faktorem je tu náhodnost každé iterace. Každé minimum je nalezeno bez souvislosti s předcházejícími. Mohlo by se zdát, že optimalizace v této formě nemá praktické uplatnění. Této metodě sice chybí cílenost vývoje (tzv. selekční tlak ), ale na druhou stranu se úspěšně vyhýbá problému uváznutí v lokálním minimu, který je typický pro gradientní metody. Vyhovující řešení může být nalezeno na několik málo pokusů, stejně tak nemusí být nalezené vůbec (zvlášť při vícerozměrné úloze). Proto se náhodné prohledávání stavového prostoru používá především na inicializaci některých jiných metod, zejména metod založených na množině řešení (populaci). Popsaný algoritmus má v programu Matlab tento předpis: function [x,fx] = blindsearch(fn name, a, b, t) % vstupní parametry: % fn_name minimalizovaná funkce (M file) % a,b řádek vektorů, hranice prohledávacího prostoru 13

% t číslo iterace % výstupní parametry: % fx nalezená minimální funkční hodnota % x hledáním nalezeného minima d=length(a); fx=realmax; for i = 1 : t y=a+(b-a).*rand(1,d); fy= feval(fn name, y); if fy < fx x=y f(x)=f(y) end end 3.3. Horolezecký algoritmus Slepý algoritmus můžeme dále proměnit na tzv. horolezecký algoritmus (hill climbing), kde se iteračně hledá nejlepší lokání řešení v určitém okolí, a to je v dalším kroku použito jako střed nové oblasti. Základním principem horolezeckého algoritmu je tedy prohledání lokálního okolí nejlepšího nalezeného řešení (nebo náhodně vygenerovaného řešení na začátku optimalizace). Namísto náhodného hledání dalšího řešení se použije nejlepší doposud nalezené řešení (střed oblasti), ve kterém se vytvoří určitá malá změna (např. změníme 5 % parametrů tohoto řešení). Nový bod se přijme, pokud je lepší než ten, ze kterého vznikl. Pokud je horší, opět se provede jiná malá změna nejlepšího řešení. Z principu průběhu horolezeckého algoritmu je patrná silná závislost mezi předcházejícím a novým řešením. Horolezecké algoritmy jsou typické rychlým zjištěním lokálního extrému, ve kterém uváznou, pokud se v prohledávaném okolí nenachází lepší řešení. Proto se horolezecké metody při optimalizaci používají na dotáhnutí do extrému řešení 14

nalezeného jinou metodou. Jiné varianty horolezeckého algoritmu jsou horolezecký algoritmus s učením a zakázané hledání (tabu search). Průběh horolezeckého algoritmu (viz [8], str. 43): procedura horolezecký algoritmus begin generování P (populace o N bodech náhodně vybranou z D) repeat localpoint = false náhodně z populace vyber bod v a urči jeho funkční hodnotu repeat vyber všechny nové body z okolí v c vyber bod v n ze sady nových bodů s nejmenší hodnotou if hodnota v n lepší než hodnota v c then hodnota v c = v n else localpoint = true until localpoint t=t+1 if v c je lepší než nejlepší bod v then hodnota v = v c until t=max end 3.4. Algoritmus SOMA Optimalizační algoritmus SOMA (Self-Organizing migrating algorithm), jehož autorem je Ivan Zelinka (viz [4]), je charakteristický především prací s populací řešení, uplatňují se v něm strategie soutěže a spolupráce. V algoritmu SOMA se nevytváří žádní noví jedinci, dochází pouze k jejich přemisťování ve stavovém prostoru. Samoorganizace prostoru, o které se hovoří v názvu algoritmu, vzniká v důsledku vzájemného působení jedinců populace v průběhu jejich pohybu. 15

V Algoritmu SOMA chápeme souřadnice jedince ve stavovém prostoru jako hodnoty parametrů, což umožňuje dobrou geometrickou interpretovatelnost a detailní vykreslení průběhu algoritmu. Vycházíme z náhodného počtu jedinců, u kterých vyhodnotíme jejich fitness. Na základě té se určí nejlepší jedinec lídr. Pak vytvoříme další populaci, ve které se každý jedinec mimo lídra pokusí najít vhodnější polohu v prostoru skoky určité délky po přímce směrem k vůdci. Skoky mají normální rozdělení se střední hodnotou, kterou je délka skoku, a rozptylem, který způsobuje nárůst diverzity v populaci. Po absolvování celé cesty se jedinec v další populaci usadí na nejvýhodnějším místě z celé trasy. Obr. 3.1: Znázornění průběhu algoritmu SOMA, viz [9] Migrace jedince (A) směrem k lídrovi (L). Jedinec se pohybuje skoky a ohodnocuje každou pozici (prázdné kroužky), na kterou skočí. Po průchodu celé trajektorie se usadí na té pozici, která měla nejlepší ohodnocení (viz obr. 3.1, bod B). Původní populaci tvoří modré body a červený lídr. Variací algoritmu SOMA je mnoho, uvedeme zde jen dvě základní: All-to-one Všichni k jedinému. Základní variace algoritmu, kdy všichni jedinci z populace migrují k statickému lídrovi. All-to-All Všichni ke všem. V této variaci neexistuje lídr, každý jedinec migruje ke všem ostatním, což zvyšuje výpočetní náročnost, prohledávaný prostor 16

a pravděpodobnost nalezení globálního extrému. Dalšími variantami jsou například: All-to-One-Rand Všichni k jedinému náhodně, All-To-All-Adaptive Adaptivně všichni ke všem, Clusters Svazky. Jednotlivé varianty jsou popsány v [4] a [9]. 3.5. Diferenciální evoluce (DE) Nová populace Q je v algoritmu diferenciální evoluce vytvářena tak, že pro každý bod ze staré populace P se vytvoří jeho potenciální konkurent y. Do nové populace zahrneme ten z této dvojice bodů, který má nižší funkční hodnotu. Zkřížíme-li bod u a bod x i tak, že kterýkoliv prvek x ij nahradíme hodnotou u j s pravděpodobností C, získáme nového potenciálního konkurenta y. Nejčastěji používané postupy na generování nového bod u jsou: Postup RAND, který generuje bod u ze třech bodů ze staré populace podle vztahu: u = r 1 + F (r 1 r 3 ), (5) kde r 1, r 2 a r 3 jsou navzájem různé body náhodně vybrané z populace P mimo aktuálního bodu x i, F je vstupný parametr. Heuristika BEST využívá modifikace bodu x best, nejlepšího bodu z populace P podle vztahu: u = x best + F (r 1 + r 2 r 3 r 4 ), (6) kde r 1, r 2, r 3 a r 4 jsou vzájemně různé náhodně vybrané body z populace P různé od aktuálního bodu x i od bodu x best s nejnižší funkční hodnotou v P. F > 0 je vstupní parametr. Nový vektor y vznikne křížením vektoru u a náhodně vybraného vektoru x tak, že každá složka x i je přepsána hodnotou u i s pravděpodobností C. C 0, 1 je další vstupní parametr heuristiky. { ui pro U < C nebo i = j y i = x i jinak i = 1, 2,..., d, (7) Kde U je náhodná veličina rovnoměrně rozdělená na intervalu 0, 1) a j je náhodně 17

vybraný index složky vektoru zabezpečující přepis alespoň jedné složky vektoru x při jakékoliv volbě hodnoty C. Agoritmus DE je vhodný pro použití především díky poměrně výpočetně nenáročnému generování bodu y i celkové jednoduchosti. Velkou pozornost musíme ale věnovat výběru vstupních hodnot F a C, na které je algoritmus velmi citlivý. Žádná z těchto heuristik nezaručuje, že vygenerovaný bod y bude ležet v D. Pokud nastane tento případ, je aplikována tzv. perturbace, která zrcadlově překlopí souřadnici y i a, b. 3.6. Metoda simulovaného žíhání Doposud byly v této práci zmíněny pouze algoritmy, jejichž princip je založen na poznatcích z biologie. Metoda simulovaného žíhání (Simulated Annealing, ozn. SA) patří mezi stochastické optimalizační algoritmy, které mají základ ve fyzice. Počátkem 80. let přišli Kirkpatrick, Gelatt, Vecchi a Černý s myšlenkou, že problém hledání globálního minima funkce lze realizovat podobným způsobem jako žíhání tuhého tělesa. Tento princip nazvali metodou simulovaného žíhání. Metoda simulovaného žíhání je velmi dobře zpracovaná ve zdrojích [6], [7], [10], [12]. 3.6.1. Fyzikální interpretace žíhání tuhého tělesa Termín žíhání označuje ve fyzice proces, při kterém je těleso vyhřáté v peci na vysokou teplotu a postupným pomalým ochlazováním (= žíháním) se odstraňují vnitřní defekty tělesa. Vlivem vysoké teploty se částice dané látky v tělese náhodně uspořádají v prostoru (těleso je roztopené). Pravděpodobnost zániku defektů krystalické mřížky je při vysoké teplotě velmi velká. Pomalým ochlazováním potom docílíme také snižování pravděpodobnosti vzniku nových defektů. Při postupném ochlazování se částice ustalují do rovnovážné polohy, čímž celková energie tělesa a tím i defektovost klesá. Je-li proces ochlazování dostatečně pomalý, potom je za každé teploty T žíhané těleso v rovnovážném stavu. Tento stav popisuje Boltzmannovo rozdělení 18

pravděpodobnosti toho, že při teplotě T je těleso ve stavu i s energií E i. kde T je Boltzmannova konstanta a W T (E i ) = 1 Q(T ) e Ei kt, (8) Q(T ) = i e E i kt, (9) když i v sumě reprezentuje všechny stavy tělesa. S klesající teplotou T preferuje Boltzmannovo rozdělení stavy s nižší energií. V případě, že se teplota blíží k nule, má stav s minimální energií nenulovou pravděpodobnost. Existuje analogie tohoto přírodního procesu s procesem řešení optimalizačních problémů. 3.6.2. Metropolisův algoritmus Postup simulovaného žíhání je založen na simulování fyzikálních procesů probíhajících při odstraňování defektů krystalické mřížky. Je to zároveň také varianta horolezeckého algoritmu, v němž jsou heuristické kroky směrem k horšímu řešení řízeny s určitou pravděpodobností. V roce 1953 navrhl N. Metropolis se svými kolegy jednoduchý algoritmus založený na metodě Monte Carlo, která funguje na tomto principu: Nechť je daný aktuální stav systému, určený polohou částic tělesa. Potom jsou částice jemně posunuty a tím je způsobena malá náhodná symetrická porucha (tj. pravděpodobnost změny stavu A na stav B vlivem poruchy, musí být stejná jako změna stavu B na A). Poruchy jsou generovány dokud rozdíl energií aktuálního a porušeného stavu E není nezáporný. Potom je pravděpodobnost přijetí porušeného stavu do dalšího procesu určena vztahem P r = min ) (1, e ( E) kt. (10) Toto pravidlo přijetí porušeného stavu nazýváme Metropolisovým kritériem. Řídíme-li se tímto kritériem a aplikujeme-li jej na velký počet poruch, dostaneme systém tepelné rovnováhy. Tato forma metody Monte Carlo se nazývá Metropolisův algoritmus. Malá náhodná změna řešení (perturbation) potom odpovídá 19

kmitání částic při žíhání tuhého tělesa a ochlazování je postupné snižování pravděpodobnosti, se kterou v dalším kroku akceptujeme horší řešení. Účelem Metropolisova algoritmu je především zabránit uváznutí v lokálním extrému tím, že za určitých podmínek přijmeme za lepší řešení i to, které má mírně nižší fitness funkci než předcházející nejlepší řešení. 3.6.3. Simulované žíhání Simulované žíhání je variantou horolezeckého algoritmu, v němž kroky heuristiky směřují k horšímu řešení s určitou pravděpodobností. Je to sekvence Metropolisových algoritmů s postupným snižováním teploty, přičemž vycházíme vždy z výstupů předcházejícího běhu Metropolisova algoritmu. Na začátku optimalizačního procesu můžeme tento algoritmus přirovnat k stochastickému prohledávání stavového prostoru, ale v závěru průběhu je již spíše verzí horolezeckého algoritmu. Implementace Metropolisova algoritmu (viz [8]): procedura Metropolisuv algoritmus(input: x ini, k max, T ; output : x out ); begin k = 0; x = x ini ; while k < k max do begin k =k+1; x = O pertur (x); P r = min(1, exp( (f(x ) f(x))/t ); end if náhodné číslo P r then x = x end x out = x V algoritmu x ini označuje počáteční stav, k max je maximální počet kroků, O pertur (x) reprezentuje malou změnu ze stavu x do stavu x. V algoritmu se použije Metropolisovo kritérium za teploty T a výstupem je poslední stav x out. 20

Algoritmus Simulovaného žíhání (obsahuje výše uvedený Metropolisův algoritmus) lze popsat takto: procedura Simulovane zihani(input : T min, T max, k max, α; output : x opt ); begin x ini = náhodně vygenerovaný vektor z D; T = T max ; while T > T min do begin Metropolisuv algoritmus (x ini, x out, k max, T ); x ini = x out T = αt end end x opt = x out Algoritmus je zahájen vygenerováním počátečního stavu x ini a maximální teplotou T max. Cyklus while se opakuje se snižující teplotou k max krát. Výstupem je konečný zamrzlý stav x out. Parametr α volíme z intervalu 0 < α < 1 a jde o koeficient snižování teploty. Algoritmus je ukončen, pokud je teplota snížena na minimum a za této teploty již není žádný stav s vyšší funkční hodnotou, který bychom mohli akceptovat. Fyzikální systém okolní podmínky energie základní stav rychlost ochlazování teplota obezřetné žíhání Optimalizační problém množina přípustných řešení hodnotící funkce optimalizační podmínka lokální vyhledávání kontrolní parametr simulované žíhání Tab. 3.1: Tabulka ekvivalentů fyzikálního a optimalizačního pojetí (viz [8]) 21

3.6.4. Simulované žíhání s elitizmem Za simulované žíhání s elitizmem považujeme pozměněnou variantu základního simulovaného žíhání s tím rozdílem, že za počáteční stav považujeme nejlepší řešení, které bylo zjištěno při předchozích průbězích za vyšší teploty. V původní verzi byl počátečním stavem výsledný stav předchozího Metropolisova algoritmu při stejné teplotě T. Nevýhody této varianty: nedostatečně velká konstanta k max, pro diskrétní kroky teploty není Metropolisův algoritmus v tepelné rovnováze, protože vlivem změněné počáteční podmínky může pro nižší teploty nastat stav, kdy výsledné řešení Metropolisova algoritmu odpovídá lokálnímu minimu, které se liší od globálního minima. 3.6.5. Paralelní simulované žíhání Tato verze obecného simulovaného žíhání je vyjímečná svou úspěšností i při řešení složitých kombinatorických problémů, kdy by obecná verze neuspěla. Základní myšlenka spočívá v aplikaci simulovaného žíhání na množinu P stavů x, x, x,..., které jsou sladěny tak, že Metropolisovy algoritmy probíhají ve všech současně se stejnou teplotou. V práci se stavy zde používáme operaci křížení převzatou z genetických algoritmů. Nechť existují dva rodičovské stavy x = (x 1, x 2,..., x N ) a x = (x 1, x 2,..., x N ) délky N. Jejich křížením potom získáme potomky definované takto: z = (x 1, x 2,..., x r, x r+1,... x N), (11) z = (x 1, x 2,..., x r, x r+1,... x N ), (12) kde r je náhodně vybraný bod křížení, 1 < r < N. Zda jsou nové stavy akceptovány, řeší Metropolisův algoritmus aplikovaný zvlášť na páry (x, z) a (x, z ). Akceptujeme-li pomocí MA nový stav z, obnovíme množinu P nahrazením z za x. 22

Výsledkem je nejlepší řešení z množiny P, tj. množiny řešení vycházející z dokončeného simulovaného žíhání. Paralelní simulované žíhání znázorňuje následující obrázek. Na jednotlivé stavy znázorněné černými obdélníky jsou aplikované nezávislé Metropolisovy algoritmy se stejnou teplotou T. Interakce mezi stavy je znázorněna šipkami, probíhá s malou pravděpodobností 0 < P cross << 1. Obr. 3.2: Znázornění paralelního simulovaného žíhání. 3.7. Vlastní algoritmus RYPOŠ Při vytváření vlastního algoritmu jsme vycházeli z chování australského hlodavce rypoše žijícího v podzemních chodbách pod povrchem pouště. Rypoš patří mezi živočišné druhy tvořící kolonie se sociálním uspořádáním a hierarchií podobnou hmyzu. V kolonii se rozmnožuje jen jedna samice královna, k páření má několik plodných samců a zbytek kolonie tvoří nerozmnožující se dělníci. Z toho vyplývá, že dělníci jsou více spřízněni s královnou, než sami se sebou, a jejich rozmnožování je nevýhodné. Naopak královna rodí efektivní potomstvo nesoucí veškeré v populaci se vyskytující geny. Tím se zároveň zvyšuje úspěšnost i četnost kolonie Obr. 3.3: Rypoš lysý. 23

Princip fungování algoritmu RYPOŠ: Nejprve náhodně vygenerujeme původní populaci o 10 jedincích (žlutá kolečka). Poté vybíráme místa, kde mohou vzniknout hnízda (červený čtverec). První hnízdo je zvoleno v prvním generovaném bodě populace, jako další jsou zaznamenána jen ta hnízda, která mají lepší funkční hodnotu, než v historii nalezené hnízdo. Ostatní žluté body se stávají dělníky, kteří se budou starat o shánění potravy pro kolonii. Dále je náhodně vygenerována královna (modrá hvězdička). Královna si vybírá ženicha (hnízdo, bílý čtverec) podle dvou hledisek: buď zvolí takové hnízdo, které je nejblíž (ženichovy feromony na ni působí nejvíce, je jejímu srdci nejblíž). Nebo zvolí hnízdo v bodě s nejnižší funkční hodnotou, protože tento ženich je pro ni nejlepší, je nejbohatší. Je také středem pro generování další populace. Královna má s ženichem 10 potomků (modrá kolečka), kteří jsou v našem případě generováni z normálního rozdělení kolem vybraného hnízda. Všechny potomky z jednoho vrhu posouváme o stejnou vzdálenost (disperzi) závislou na pořadí vrhu (číslu iterace). V případě, že noví potomci leží mimo definiční obor (prohledávaný prostor), jsou pomocí funkce zrcad, která je vlastně středovou souměrností, překlopeny podle hnízda zpět do našeho definičního oboru. Nyní máme k dispozici 20 jedinců, ale pro tak velkou kolonii by v okolí nebyl dostatek hlíz, a proto musí ti jedinci, kteří nejsou dost dobří (mají nejhorší funkční hodnotu) odejít. Královna již splnila svou funkci a také kolonii opouští. Máme tedy opět kolonii nejlepších 10 rypošů složenou z jedinců původní populace i z přeživších potomků (světle modrá kolečka). Nyní se opět náhodně objeví (vygeneruje) královna a cyklus rození probíhá znovu dokola. Pro zachování integrity s ostatními algoritmy bylo generováno vždy v každé iteraci 10 bodů a náš cyklus byl ukončen po 20 vrzích. Jako 24

aproximace minima (řešení) je vyhodnocen jedinec s nejlepším hnízdem ze všech iterací. Pro ilustraci zde uvádíme grafické znázornění průběhu algoritmu RYPOŠ při testování Schwefelovy funkce. Z 20 iterací jsou na obr. 3.4 zobrazeny 1., 5., 10., 15. a 20. iterace. Oscilace mezi vybranými hnízdy je způsobena možností volby způsobu, kterým může královna vybrat hnízdo. Zabraňujeme tak uváznutí v lokálním extrému. Na obr. 3.5 je krabičkový diagram pro funkce Ackleyho, první De Jongovu, Griewangkovu, Rastrigovu a pro Rosenbrockovo sedlo vytvořený z funkčních hodnot získaných testováním algoritmu RYPOŠ. Schwefelova funkce byla z tohoto diagramu vynechána, protože naměřené odchylky od funkční hodnoty reálného minima byly příliš vysoké v porovnání s daty z testování ostatních funkcí. Na ose y by bylo příliš velké rozpětí mezi krajními hodnotami a diagram by byl nepřehledný. V porovnání s jinými algoritmy je ale Schwefelova funkce otestováná algoritmem RYPOŠ se srovnatelnými výsledky. Větší odchylky jsou dány složitostí funkce. 25

Schwefelova funkce 1. iterace algoritmu RYPOŠ 5. iterace algoritmu RYPOŠ 10. iterace algoritmu RYPOŠ 15. iterace algoritmu RYPOŠ Schwefelova funkce: f(x) = Dim i=1 x i sin( x i ) D = a, a a, a, a = 500.12 minimum x = (420.97,..., 420.97), f(x) = 418.9829 d nalezená aproximace minima: ( 259.9673, 427.2054), f(x) = 519.0165 20. iterace algoritmu RYPOŠ Obr. 3.4: Populace v několika iteracích u algoritmu RYPOŠ

Krabičkový diagram 1 Ackleyova funkce 2 DeJongova funkce 3 Griewangkova funkce 4 Rastringova funkce 5 Rosenbrockovo sedlo Obr. 3.5: Výsledek testování algoritmu RYPOŠ 27

4. Aplikace heuristik V posledních letech se rozmohlo používání heuristik v různých oblastech vědy od psychologie, informatiky, matematiky až po ekonomii a jiné podobné vědy. V ekonomii se heuristiky používají zejména na zjišťování minimálních nákladů spojených s určitým výkonem. Časté je také jejich využití v logistických úlohách, kde se může jednat o zefektivnění umístění skladů, centrálních středisek nebo jiných základen tak, aby náklady na dopravu do odbytových míst byly co nejnižší. K výpočtu je třeba zjistit souřadnice odbytových míst a vektor vah, kterým jsou počty cest uskutečněných do odbytových cílů. Hledáme souřadnice (x, y) pro umístění skladu. Funkci, jejíž minimum budeme zjišťovat, získáme načítáním euklidovských vzdáleností bodů, ve kterých jsou umístěna odbytová místa, a imaginárního bodu pro umístění skladu (x, y) násobených příslušnou složkou z vektoru vah. Pro určení minima této funkce můžeme použít libovolný algoritmus (heuristiku). V oblasti behaviorální ekonomie se aplikují heuristiky na problém rozhodování nakupujících. V tradiční ekonomii je předpoklad plné informovanosti buď o ceně a umístění na trhu nebo o pravděpodobnosti rozdělení cen na trhu. V určitých případech, kdy nakupující vstupuje na specifický trh pouze velmi nepravidelně (trh zboží dlouhodobé spotřeby, nebo naopak trh práce),tyto předpoklady neplatí. V behaviorální ekonomii rozlišujeme tři heuristiky pro řešení tohoto problému popsané ve zdroji [11]: Přizpůsobivou heuristiku (prvotní ideu výše přijatelné ceny měnící se v závislosti na aktuálních cenách objevených během hledání řešení), Bargainovu heuristiku (ideu o výši přijatelné ceny založené na určitém rozptylu od odhadované průměrné ceny získané z cen objevených během hledání) a vývojovou heuristiku (myšlenku, že přijmeme takovou cenu, která je rovná předpovídané ceně nalezené v dalším kroku zvýšenou o hodnotu tohoto kroku). Heuristiky lze použít také například v teorii portfolia, kde je můžeme využít ke zjištění optimálního rozložení akcií v portfoliu. Výsledkem minimalizace je vektor vah odpovídající doporučené volbě akcií do portfolia. 28

5. Testování uvedených algoritmů praktická část V programu Matlab 6.1 byly vygenerovány grafy testovacích funkcí uvedených v kapitole 2, spolu se zakreslenými body minima nalezenými slepým vyhledáváním (obr. 5.1), algoritmem simulovaného žíhání (obr. 5.2) a horolezeckým algoritmem (obr. 5.3). Vysvětlení značení a použité parametry: Slepé vyhledávání: žlutá kolečka = body vyhodnocené v průběhu algoritmu jako lepší červené kolečko = algoritmem nalezené minimum (nejlepší bod) Simulované žíhání: bílý čtvereček = náhodně vybraný počáteční bod žlutá kolečka = body vyhodnocené v průběhu algoritmu jako lepší fialový trojúhelník = algoritmem nalezené minimum (nejlepší bod) Parametry: T min = 0,0001, T max = 1000, α = 0,15, k max = 200. (názvy proměnných korespondují se značením použitým v kapitole 3.6 a byly zvoleny náhodně) Horolezecký algoritmus: žluté křížky = body vyhodnocené v průběhu algoritmu jako lepší červené kolečko = algoritmem nalezené minimum (nejlepší bod) U všech algoritmů byly nastaveny parametry tak, aby bylo ve všech iteracích vygenerováno 200 bodů. Např. algoritmus RYPOŠ byl testován pro 20 iterací, ve kterých bylo generováno po 10 bodech. 29

a) Ackleyho funkce b) první De Jongova funkce nalezené minimum x = ( 3.0810, 1.4614), f(x) = 7.5449 c) Griewangkova funkce nalezené minimum x = ( 0.1214, 0.2311), f(x) = 0.0681 d) Rastrigova funkce nalezené minimum x = (7.2641, 42.2653), f(x) = 1.8233 e) Rosenbrockova funkce nalezené minimum x = ( 1.0244, 1.0851), f(x) = 3.7386 f) Schwefelova funkce nalezené minimum x = (0.4348, 0.1898), f(x) = 0.3195 nalezené minimum x = ( 307.0660, 409.6987), f(x) = 701.0586 Obr. 5.1: Iterace a nalezená řešení ve slepém algoritmu

a) Ackleyho funkce b) první De Jongova funkce nalezené minimum x = (6.9286, 6.8498), f(x) = 13.0650 c) Griewangkova funkce nalezené minimum x = (0.0376, 0.0745), f(x) = 0.0070 d) Rastrigova funkce nalezené minimum x = (431.3778, 431.4111), f(x) = 93.7802 e) Rosenbrockova funkce nalezené minimum x = (0.0205, 0.0013), f(x) = 0.0839 f) Schwefelova funkce nalezené minimum x = (0.0009, 0.0038), f(x) = 0.9996 nalezené minimum x = (221.5650, 221.5663), f(x) = 0.0057 Obr. 5.2: Iterace a nalezená řešení v simulovaném žíhání

a) Ackleyho funkce b) první De Jongova funkce nalezené minimum x = (0.1013, 0.1114), f(x) = 2.0001 c) Griewangkova funkce nalezené minimum x = ( 0.1353, 0.0150), f(x) = 2.0015 d) Rastrigova funkce nalezené minimum x = (1.1543, 3.0194), f(x) = 11.2813 e) Rosenbrockova funkce nalezené minimum x = (0.0684, 0.0402), f(x) = 2.0026 f) Schwefelova funkce nalezené minimum x = (0.1013, 0.1114), f(x) = 2.0001 nalezené minimum x = (0.1386, 0.2616), f(x) = 2.0230 Obr. 5.3: Iterace a nalezená řešení v horolezeckém algoritmu

Slepé vyhledávání, horolezecký algoritmus, simulované žíhání a algoritmus SOMA (varianta All-to-one) byly testovány 20 na každou z šesti vybraných testovacích funkcí. Data jsou v tabulkách a jsou součástí přílohy. Pro porovnání úspěšnosti jsou z výsledných nalezených funkčních hodnot vytvořeny krabičkové diagramy (obr. 5.4) vyjadřující vhodnost aplikace algoritmu pro danou funkci. Krabičkové diagramy jsou řazeny vždy v pořadí: 1 slepé vyhledávání (BS), 2 simulované žíhání (SA), 3 horolezecký algoritmus (HILL), 4 algoritmus SOMA, 5 algoritmus RYPOŠ. Nejprve připomeneme údaje, které jsou v krabičkovém diagramu znázorňovány. Obr. 5.4: Krabičkový diagram 33

Výsledek testování Ackleyho funkce Výsledek testování první De Jongova funkce Výsledek testování Griewangkova funkce Výsledek testování Rastrigova funkce Výsledek testování Rosenbrockova funkce Výsledek testování Schwefelova funkce Obr. 5.5: Porovnání úspěšnosti algoritmů 34

Vyhodnocení: Podle vzhledu box diagramů můžeme určit, jaký algoritmus byl v našem testování pro každou funkci nejvhodnější. Můžeme sledovat např. jak daleko se nachází medián (určený ze získaných aproximací minima) od známé hodnoty globálního minima. Pokud bychom dle úspěšnosti při testování jednotlivých funkcí měli použité algoritmy ocenit prvním až třetím místem, výsledky by byly následující: Funkce Ackleyho De Jongova Griewangkova Rastrigova Rosenbrockova Schwefelova 1. SOMA SOMA + SA SOMA SA BS SOMA 2. HILL RYPOŠ + BS RYPOŠ SOMA SOMA BS + RYPOŠ 3. RYPOŠ BS RYPOŠ SA Tab. 5.1: Vyhodnocení úspěšnosti algoritmů Z tabulky vyplývá, že z testovaných pěti algoritmů řeší otázku optimalizace nejlépe algoritmus SOMA. Je velmi potěšující, že algoritmus RYPOŠ je spolu je simulovaným žíháním hned na druhém místě. Lze se domnívat, že jeho úspěšnost půjde ještě zvýšit vhodnou volbou parametrů tak, aby byla v průběhu algoritmu volena vhodnější posloupnost bodů s co nejvyšší pravděpodobností konvergující k hledanému minimu. Toto optimální nastavení je u většiny uváděných algoritmů známo nebo odzkoušeno a může to být i důvod jejich větší úspěšnosti. Důležité je, že navržený algoritmus RYPOŠ obstál v konkurenci běžných algoritmů a dokonce nikdy neskončil na posledním (pátém) místě. U Schwefelovy funkce dosvědčil, že dobře řeší i optimalizační úlohu u multimodálních funkcí, aniž by uvízl v lokálním minimu. 35

6. Závěr V bakalářské práci jsme vysvětlili princip fungování jednotlivých stochastických algoritmů. Uvedli jsme také výhody a nevýhody jejich použití a typy úloh, kdy je jejich aplikace nejvhodnější. Dále jsme detailně popsali algoritmus simulovaného žíhání, který je jediný založen na fyzikální analogii. Dále jsme se věnovali testování algoritmů. V programu Matlab 6.1 byly pomocí m-souborů vytvořeny předpisy šesti testovacích funkcí. Pro algoritmus slepého vyhledávání, simulovaného žíhání, horolezeckého algoritmu a algoritmus SOMA jsme vždy dvacetkrát hledali aproximaci globálního minima (při stejném počtu generovaných bodů). Výsledky jsou uvedeny v tabulkách v příloze a byly použity pro vytvoření krabičkových diagramů pro jednotlivé funkce. Účelem bylo zjistit, který z algoritmů pro hledání aproximace globálního minima byl nejvhodnější. Odchylky výsledků od známé hodnoty minima jsou způsobeny především multimodálností funkce a tendencí algoritmů uváznout v lokálním minimu, na což je nejvíce náchylný horolezecký algoritmus, který v průběhu 200 iterací nedosahoval u složitějších funkcí uspokojivých výsledků. Výsledky algoritmu simulovaného žíhání mohou být trochu zklamáním. Zde ale může být problém v nastavení počátečních parametrů, především parametru α, který mění rychlost změny teploty. Úprava parametrů by mohla výsledky zlepšit. Jako nejúspěšnější je možné vyhodnotit algoritmus SOMA, kde byla testována verze All-to-one. Velkou pozornost ale mohou vzbudit i výsledky dosažené novým algoritmem RYPOŠ. Ten je založen na myšlence evolučních algoritmů a jeho průběh je popsán ve třetí kapitole. Hlavním cílem bylo dosahovat uspokojivých výsledků a omezit možnost uváznutí v lokálním minimu, což zabezpečují dvě možnosti volby hnízda. Algoritmus RYPOŠ je podle získaných výsledků srovnatelný s ostatními zde testovaným algoritmy. Výborně řeší optimalizační otázku například i u Schwefelovy funkce, která svým předpisem patří k nejnáročnějším testovacím funkcím. Během zpracování bakalářské práce jsem vylepšila své znalosti programování 36

a prostudovala jsem zajímavou oblast optimalizačních metod. Při zpracování této práce jsem si uvědomila, že i v matematice je prostor pro experimentování. Doufám, že se budu moci tomuto tématu věnovat v rámci diplomové práce na navazujícím studiu. Také doufám, že se mi vhodnou volbou parametrů podaří docílit zpřesnění výsledků a algoritmus RYPOŠ se stane úspěšnějším než ostatní testované a dnes používané algoritmy. 37

Literatura [1] Tvrdík, J.: Porovnání heuristik v algoritmech globální optimalizace. sborník konference Robust, JČMF, 2002, str. 321 332. [2] Míka, S.: Matematická optimalizace. Západočeská univerzita, Plzeň, 1997. [3] Blažek, J., Habibbala, H., Pavliska, V., Vybrané heuristiky pro globální optimalizaci a jejich implementace v Matlabu. http://www.volny.cz/habiballa/publ/matlab05.pdf [citováno 8. 4. 2008]. [4] Zelinka, I., Algoritmus SOMA, testovací funkce. http://www.ft.utb.cz/people/zelinka/soma/ [citováno 8. 4. 2008]. [5] Obitk, M., Genetické algoritmy: Matrice života v počítačích, 2001, http://www.scienceworld.cz/sw.nsf/id/9b80774399f1b837c1256e970-0489aec?opendocument&cast=1 [citováno 8. 4. 2008]. [6] Babjak, J., Optimalizačné algoritmy, 2003, http://www.scienceworld.cz/sw.nsf/id/36e02f629c5bd4d3c1256e970-048c6ed?opendocument&cast=1 [citováno 8. 4. 2008]. [7] Kvasnička, V., Evolučné algoritmy, 2003, http://math.chtf.stuba.sk/evol/prednaskastu.htm [citováno 8. 4. 2008]. [8] Michalewicz, Z., Fogel D. B.: How to solve it: Modern Heuritics. Second, revised and extended edition, Springer-Verlag Berlin Heidelberg, 2004. [9] Babjak, J., Algoritmus SOMA najlepšie, čo doma máme, 2003, http://scienceworld.cz/sw.nsf/id/df1541fd80584131c1256e970048f- A7C?OpenDocument&cast=1 [citováno 8. 4. 2008]. [10] Kalátová, E., Dobiáš, J., Evoluční algoritmy, 2000, http://www.kiv.zcu.cz/studies/predmety/uir/gen alg2/e alg.htm [citováno 8. 4. 2008]. [11] Skořepa, M., Tři heuristiky pro hledání nízké ceny na málo známém trhu, 2007, http://www.ekonomie-management.cz/c.php?a=542 [citováno 8. 4. 2008]. 38

[12] Majer, P., disertační práce Moderní metody rozvrhování výroby, kapitola 3: Metody řešení, 2004. majer.czweb.org/scheduling/30metody reseni.doc [citováno 8. 4. 2008]. 39

Přílohy Na následujících stranách jsou uvedeny výsledky z testování stochastických algoritmů pro hledání aproximace globálního minima. Údaje z přílohy sloužily pro konstrukci krabičkových diagramů. Součástí přílohy je i vložené CD obsahující vytvořené m soubory použitých testovacích funkcí a spouštěcí programy pro jednotlivé algoritmy. Všechny algoritmy jsou původní s výjimkou algoritmu SOMA, jehož varianta All-to-one byla převzata z internetové stránky Ivana Zelinky uvedené ve zdroji číslo [4]. 40

Výsledky testování slepým algoritmem Algoritm us Test.fce Pokus x= y= F(x,y) Test.fce Pokus x= y= F(x,y) Slepý alg. Ackleyho 1 0.3632-2.1133 5,4260 De Jongova 1-0.1550-0.1637 0.0508 2-3.0810 1,4614 7,5449 2 0.0620-0.3607 0.1339 3-0,8161-0,2364 0,2364 3-0.5258 0.2494 0.3387 4-1,3948-1,8736 5,9277 4-0.1393-0.0403 0.0210 5 1,0005 0,1619 2,5013 5-0.1214 0.2311 0.0681 6-0,7111 1,3539 4,9004 6-0.3900 0.5771 0.4852 7-4,2049 0,9601 7,8581 7 0.0788-0.3288 0.1143 8 0,4616-1,9264 5,3497 8-0.3346 0.1895 0.1479 9-1,9607 1,1104 4,3678 9 0.1581 0.1039 0.0358 10 0,9266 0,9266 3,7555 10-0.3705-0.1080 0.1489 11-2,1708-0,6330 5,8581 11 0.1400-0.1236 0.0349 12 0,8200-0,7244 3,6490 12 0.1404 0.0303 0.0206 13 0,8226 0,1777 2,7803 13 0.1520-0.4471 0.2230 14 0,8905-2,6199 6,5311 14-0.0440-0.0912 0.0103 15-0,2578-0,5345 3,2717 15-0.0741-0.1798 0.0378 16-0,4341-1,0538 3,8584 16 0.1138 0.0622 0.0168 17 0,6671 0,3647 3,6220 17 0.1883 0.2569 0.1014 18 1,1031 1,5053 5,2192 18 0.0875 0.4308 0.1933 19 0,5128 2,5243 6,8893 19 0.0162-0.1217 0.0151 20 0,0951-0,7133 2,7583 20-0.1550-0.1637 0.0508 Test.fce Pokus x= y= F(x,y) Test.fce Pokus x= y= F(x,y) Griew angkova 1-3,7423-45,7564 1,0058 Rastrigova 1-0.1107 1,0445 3,8143 2 79,7761-31,9346 2,5287 2 0.9745 1,0588 2,8735 3-24,8245-13,2400 0,2985 3-1.0336 0,9241 3,2605 4 14,1683-24,1885 1,2241 4-0.0974-0,0069 1,8330 5 10,6785 40,9420 1,4318 5-0,0440-1,0714 3,1375 6 6,5595 41,5458 1,7745 6-0.1063 0,8666 6,2225 7 21,3780-6,1144 0,3087 7 1,0430 0,0188 1,5210 8 52,9471-30,7798 1,0866 8 1,1506-0,0394 5,7811 9-18,3206-41,0559 1,5980 9-0,9810 0,0594 1,7263 10 11,1787-18,6318 1,2991 10-0,0122-0,8850 3,3123 11 37,2206 25,4366 0,6307 11 1,0503 1,0950 4,5256 12-13,0949 11,7197 0,2899 12 1,9774 1,1642 10,2320 13-68,5660-12,2039 1,3735 13 0,9627-1,0488 2,7670 14-54,0189 20,6573 1,3298 14-1,0486 0,1171 4,1622 15-33,3367-57,2827 1,7782 15-0,0835 1,0804 3,7660 16-6,7061 41,3274 1,6579 16 0,9576-2,0139 5,3638 17-26,8076-18,8394 1,1645 17-0,0758 0,9222 3,1402 18-79,4188-36,5616 3,4485 18-1,0163-1,9378 5,5933 19-5,6609 28,0070 1,0958 19 0,9918 1,0115 2,0461 20 52,6668-7,0743 1,0247 20-1,9092 0,0006 5,2304 Test.fce Pokus x= y= F(x,y) Test.fce Pokus x= y= F(x,y) Rosenbrockova 1 0,8719 0,7520 0,0232 Schw efelova 1 197,1848 415,7447-611,8482 2 1,2864 1,6170 0,2253 2 428,8802 432,9852-811,8952 3 1,1487 1,3191 0,0221 3 406,8517 409,0796-795,5805 4 0,9867 1,0311 0,3310 4 393,9384-317,9510-601,7888 5 1,0741 1,1434 0,0159 5 418,5725 436,6416-806,4378 6 1,1997 1,3936 0,2475 6 392,6841 409,8560-726,7498 7 0,4201 0,1497 0,4080 7-289,2336 418,8454-697,0232 8 0,8515 0,6935 0,1220 8 412,5063-293,8434-701,1028 9 1,0097 1,0082 0,0130 9 446,0922-289,7799-621,3824 10 0,9927 1,0053 0,0394 10 452,6938 405,9069-687,4890 11 1,2051 1,5068 0,3400 11 197,5867 433,8188-595,1604 12 0,6849 0,4769 0,1053 12 395,3475 446,6866-677,1049 13 0,7595 0,5428 0,1736 13-295,3429 416,3645-710,3762 14 1,2321 1,5733 0,3577 14 428,6768 436,4530-800,3950 15 0,0683 0,0065 0,8685 15 435,4402 423,3167-810,9720 16 0,9868 0,9809 0,0052 16 413,4558 393,2750-738,8665 17 0,7763 0,6677 0,4722 17 463,0054 424,1833-628,8470 18 1,0373 1,0565 0,0396 18 443,3844 433,0504-757,2156 19 0,5090 0,2713 0,2562 19 400,4458 420,6944-786,3565 20 0,9181 0,8658 0,0591 20-324,2924 428,6373-653,3546 41

Výsledky testování simulovaným žíháním Algoritm us Test.fce Pokus x= y= F(x,y) Test.fce Pokus x= y= F(x,y) SA Ackleyho 1-3.2637 3,2276 9,0526 De Jongova 1 0.0124-0.0109 2.7104e-004 2 0.6001-0,6392 3,9128 2-0.0071-0.0369 0.0014 3-3.7645 3,7859 9,8214 3 0.0088-0.0118 2.1698e-004 4 6,6910-6,6644 14,2941 4-0.0343 0.0022 0.0012 5-0.2120 0,2224 2,0965 5 0.0016 0.0116 1.3773e-004 6-1.1291 1,1424 3,7567 6 0.0111-0.0306 0.0011 7-0.0058-0,0054 0,0175 7 0.0181-0.0024 3.3451e-004 8-4.6094 4,5979 11,8367 8 0.0129 0.0142 3.6833e-004 9-0.7259 0,7061 3,8353 9-0.0101-0.0048 1.2448e-004 10-5.3616 5,3898 12,8744 10-0.0081-0.0046 8.6313e-005 11-0.2755 0,2804 2,6495 11-0.0040-0.0316 0.0010 12 1,5646-1,5686 6,2917 12-0.0065-0.0127 2.0376e-004 13 4,9506-4,9512 10,1953 13 0.0210 0.0294 0.0013 14-0.0159 0,0260 0,0856 14-0.0358 0.0488 0.0037 15 0.1811-0,1927 1,7694 15-0.0300-0.0326 0.0020 16 0.7131-0,6962 3,8602 16-0.0298 0.0008 8.8847e-004 17-0.1124 0,1489 1,1199 17 0.0236 0.0145 7.6410e-004 18 2,5151-2.5028 8,3236 18-0.0247-0.0293 0.0015 19-0.0801 0,1165 0,7515 19 0.0134-0.0320 0.0012 20-8.2188 8,1808 15,0857 20-0.0343-0.0034 0.0012 Test.fce Pokus x= y= F(x,y) Test.fce Pokus x= y= F(x,y) Griew angkova 1 47.3386-47,3343 2,2230 Rastrigova 1 0.0456-0.0416 0.7502 2-252.1487 252,1508 32,1654 2 0.0094 0.0309 0.2062 3-131.8425 131,8713 10,6870 3 0.0531-0.0701 1,5146 4 82.8454-82,8591 4,7613 4 0.0389 0.0325 0.5087 5-555.6741 555,6241 155,5740 5 0.0158 0.0154 0.0965 6-210.0293 210,0112 22,8429 6 0.0189 0.0026 0.0720 7 44.3566-44,3415 2,8992 7-0.0123-0.0213 0.1202 8-173.1653 173,1419 16,1549 8 0.0767-0.0785 2,3423 9 225.9850-225,9586 25,5603 9-0.0125 0.0094 0.0485 10-85.9278 85,9567 4,9343 10 0.0061 0.0054 0.0130 11 374.0921-374,1680 71,1406 11 0.0097 0.0503 0.5160 12-147.1246 147,0671 11,5687 12-0.0063 0.0371 0.2797 13 265.2248-265,2032 35,9808 13-0.0390-0.0321 0.5041 14-484.5962 484,6291 119,0691 14-0.0383-0.0132 0.3249 15 290.9547-290,8896 43,5265 15-0.0250-0.0056 0.1302 16-217.1092 217,0604 24,4264 16 0.0293-0.0228 0.2727 17 113.5963-113,5978 6,6014 17-0.0117 0.0128 0.0594 18 31.8917-31,8654 2,3747 18 0.0270-0.0210 0.2311 19-250.7576 250,7669 31,6317 19-0.0281-0.0130 0.1896 20-16.8098 16,7525 0,9154 20-0.0048 0.0022 0.0056 Test.fce Pokus x= y= F(x,y) Test.fce Pokus x= y= F(x,y) Rosenbrockova 1 0.0174 0,0155 0,9887 Schw efelova 1 368.0793-368.1140 0.3253 2-0.0178-0,0078 1,0424 2 48.1934-48.2152 0.0733 3-0.0246-0,0290 1,1372 3-136.7127 136.6801 0.0972 4-0.0028-0,0050 1,0081 4 54.3259-54.2918-0.0886 5-0.0198-0,0059 1,0439 5 96.3772-96.3549 0.1095 6 0.0115 0,0119 0,9910 6 155.2588-155.2560-0.0168 7 0.0012 0,0021 0,9981 7-93.6210 93.6017-0.0952 8 0.0304 0,0031 0,9405 8 350.5139-350.5672 0.4879 9 0.0009-0,0038 0,9996 9 223.3327-223.3520-0.0908 10 0.0017-0,0035 0,9979 10 36.5281-36.4834-0.1205 11-0.0083-0,0096 1,0259 11 321.8006-321.7717-0.1361 12-0.0011-0,0021 1,0026 12 127.6169-127.5922-0.0177 13 0.0013 0,0017 0,9977 13 59.7471-59.7703 0.0340 14-0.0029 0,0050 1,0083 14-99.2067 99.1890-0.0850 15-0.0060-0,0043 1,0140 15-61.7214 61.7169 0.0045 16 0.0099 0,0150 1,0024 16 359.5775-359.5858 0.0787 17 0.0081 0,0097 0,9932 17-115.6596 115.6748 0.0342 18-0.0025 0,0047 1,0071 18 284.6719-284.6315 0.1720 19-0.0213 0,0041 1,0444 19 206.6814-206.6935-0.0088 20 0.0188 0,0136 0,9803 20-94.6703 94.6741 0.0185 42