OPTIMALIZACE PÁŘENÍM VČELÍ KRÁLOVNY



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

Jak se matematika poučila v biologii

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

Metaheuristiky s populacemi

ČVUT FEL X36PAA - Problémy a algoritmy. 5. úloha - Seznámení se se zvolenou pokročilou iterativní metodou na problému batohu

Genetické algoritmy. Informační a komunikační technologie ve zdravotnictví

jednoduchá heuristika asymetrické okolí stavový prostor, kde nelze zabloudit připustit zhoršují cí tahy Pokročilé heuristiky

11. Tabu prohledávání

Algoritmy pro spojitou optimalizaci

ROZHODOVACÍ PROCEDURY A VERIFIKACE PAVEL SURYNEK, KTIML

Markov Chain Monte Carlo. Jan Kracík.

PŘEDNÁŠKA 03 OPTIMALIZAČNÍ METODY Optimization methods

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

Navrženy v 60. letech jako experimentální optimalizační metoda. Velice rychlá s dobrou podporou teorie

Emergence chování robotických agentů: neuroevoluce

Úvod do stochastických optimalizačních metod (metaheuristik) Moderní metody optimalizace 1

Numerické metody a programování. Lekce 8

Swarm Intelligence. Moderní metody optimalizace 1

12. Globální metody MI-PAA

VYUŽITÍ PRAVDĚPODOBNOSTNÍ METODY MONTE CARLO V SOUDNÍM INŽENÝRSTVÍ

Úvod do optimalizace, metody hladké optimalizace

VUT Brno Fakulta informačních technologií Simulační nástroje a techniky (SNT) 2014/2015 Vehicle routing problem Ant colony

Gramatická evoluce a softwarový projekt AGE

Časová a prostorová složitost algoritmů

Ant Colony Optimization 1 / 26

Dijkstrův algoritmus

Evolučníalgoritmy. Dále rozšiřována, zde uvedeme notaci a algoritmy vznikléna katedře mechaniky, Fakulty stavební ČVUT. Moderní metody optimalizace 1

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

A0M33EOA: Evoluční optimalizační algoritmy

OPTIMALIZACE. (přehled metod)

Evoluční výpočetní techniky (EVT)

3. pracovní list: Jméno: Včely žijí ve společenství, které nazýváme:, opustí-li najednou úl, pak mu říkáme:.

Vyhledávání. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 21.

ZÁPADOČESKÁ UNIVERZITA V PLZNI FAKULTA STROJNÍ BAKALÁŘSKÁ PRÁCE. 2016/2017 Monika Knolová

Seminář z umělé inteligence. Otakar Trunda

Optimalizace obecný úvod. [proč optimalizovat?] Formalizace problému. [existují podobné problémy?]

Seznámení se se zvolenou pokročilou iterativní metodou na problému batohu

Úloha - rozpoznávání číslic

Vyhledávání. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 12.

Masarykova univerzita. Fakulta informatiky. Evoluce pohybu

Úvod do mobilní robotiky AIL028

OPTIMALIZAČNÍ ÚLOHY. Modelový příklad problém obchodního cestujícího:

Genetické programování

Programovací jazyk Pascal

Kombinatorická minimalizace

Lineární klasifikátory

Hledání správné cesty

3. úloha - problém batohu metodami branch & bound, dynamické programování, heuristika s testem

7. Heuristické metody

METODY DOLOVÁNÍ V DATECH DATOVÉ SKLADY TEREZA HYNČICOVÁ H2IGE1

NP-ÚPLNÉ PROBLÉMY. Doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky, FIT České vysoké učení technické v Praze

Datové struktury 2: Rozptylovací tabulky

Úvod do mobilní robotiky NAIL028

Grafové algoritmy. Programovací techniky

Grafové algoritmy. Programovací techniky

Dynamické datové struktury III.

Základy umělé inteligence

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

Státnice odborné č. 20

České vysoké učení technické v Praze Fakulta elektrotechnická. Diplomová práce Přepínání metaheuristik. Aleš Kučík

Užití systému Matlab při optimalizaci intenzity tepelného záření na povrchu formy

2. úkol MI-PAA. Jan Jůna (junajan)

3. Třídy P a NP. Model výpočtu: Turingův stroj Rozhodovací problémy: třídy P a NP Optimalizační problémy: třídy PO a NPO MI-PAA

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

Poslední nenulová číslice faktoriálu

Matematické modelování dopravního proudu

Dynamické programování

Ctislav Fiala: Optimalizace a multikriteriální hodnocení funkční způsobilosti pozemních staveb

Test webového prohlížeče v Amazon Kindle Wi-Fi 3G

4EK213 Lineární modely. 10. Celočíselné programování

VYUŽITÍ METOD PŘÍMÉHO HLEDÁNÍ OPTIMA PŘI PREDIKTIVNÍM ŘÍZENÍ

Hledání extrémů funkcí

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

7. Rozdělení pravděpodobnosti ve statistice

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY

Zobrazte si svazy a uspořádané množiny! Jan Outrata

Výroková a predikátová logika - II

MOŽNOSTI OPTIMALIZACE VE STAVEBNICTVÍ

Náhodné (statistické) chyby přímých měření

Základy algoritmizace. Pattern matching

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY

Semestrální práce z předmětu X37CAD (CAD pro vysokofrekvenční techniku)

Jednofaktorová analýza rozptylu

Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague

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

Popis zobrazení pomocí fuzzy logiky

Algoritmizace diskrétních. Ing. Michal Dorda, Ph.D.

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

Programování. s omezujícími podmínkami. SAT a lokáln. Algoritmus GSAT. Algoritmus GSAT. Roman Barták

ÚPRAVA METODY FLEXIBILNÍHO SIMPLEXU PRO ŘEŠENÍ PROBLÉMŮ GLOBÁLNÍ OPTIMALIZACE Miroslav Provazník

Princip optimalizačních metod inspirovaných přírodou

7. přednáška Systémová analýza a modelování. Přiřazovací problém

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

12 Metody snižování barevného prostoru

Trénování sítě pomocí učení s učitelem

Algoritmizace prostorových úloh

FAKULTA INFORMAČNÍCH TECHNOLOGIÍ

Algoritmizace Dynamické programování. Jiří Vyskočil, Marko Genyg-Berezovskyj 2010

Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague

ČVUT FEL X36PAA - Problémy a algoritmy. 4. úloha - Experimentální hodnocení algoritmů pro řešení problému batohu

Transkript:

ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE FAKULTA ELEKTROTECHNICKÁ DIPLOMOVÁ PRÁCE OPTIMALIZACE PÁŘENÍM VČELÍ KRÁLOVNY Tomáš Čeleda Vedoucí diplomové práce: Doc. Ing. Jiří Lažanský CSc. Praha 2011

ii

Abstrakt Práce se zabývá popisem relativně nového metaheuristického optimalizačního algoritmu inspirovaného rozmnožováním včel (Honey Bees Mating Optimization HBMO). Obsahuje detailní popis algoritmu a shrnutí jeho dosavadních úspěšných aplikací. HBMO algoritmus byl v rámci práce implementován a byly provedeny experimenty na problému splnitelnosti Booleovských formulí (3-SAT), různých spojitých problémech a problému obchodního cestujícího. Experimenty byly prováděny s různými kombinacemi vstupních parametrů a výsledky byly vzájemně porovnávány. Dosažené výsledky byly porovnány s tradičnějšími metodami optimalizace a výsledky v literatuře. Vzájemné porovnávání různých algoritmů bylo prováděno na základě nejlepšího dosaženého řešení za daný počet vyhodnocení účelové funkce. Díky tomu je možné použít dosažené výsledky pro další práce. Abstract This work deals with a relatively new metaheuristic algorithm called Honey Bees Mating Optimization (HBMO). It contains a detailed description of the algorithm and it s summarized successful applications. The algorithm has been implemented and many experiments have been performed on various types of problems including propositional satisfiability problems (3-SAT), problems with real variables (like Rosenbrock function) and the traveling salesman problem. Various combinations of input parameters have been tested to obtain optimal performance. Results have been compared with other more conventional optimization methods. Comparison is based on best solution found in given number of utility function evaluations, so it is possible to use results for further comparison in later work. iii

Poděkování Děkuji svému vedoucímu práce Doc. Ing. Jiřímu Lažanskému CSc. za podporu, cenné rady a připomínky při vypracování této diplomové práce. Chtěl bych také poděkovat svým rodičům za jejich celoživotní podporu. iv

v

Obsah 1. Úvod... 1 2. Popis algoritmu... 2 2.1 Úvod... 2 2.2 Inspirace přírodou... 2 2.2.1 Struktura včelstva... 2 2.2.2 Rozmnožování včel... 2 2.2.3 Svatební let... 2 2.3 Optimalizační algoritmus inspirovaný pářením včel... 3 2.3.1 Inicializace... 4 2.3.2 Svatební let... 5 2.3.3 Křížení a nová populace... 6 2.3.4 Vylepšení populace pomocí dělnic... 7 2.3.5 Nahrazení královny... 8 2.3.6 Implementace algoritmu pro řešení konkrétního problému... 8 3. Metodika testování... 9 4. Aplikace na problém splnitelnosti booleovských klauzulí... 10 4.2 Implementace HBMO pro 3-SAT... 10 4.2.1 Reprezentace a výpočet zdatnosti... 10 4.2.2 Svatební let... 11 4.2.3 Operátor křížení... 11 4.2.4 Dělnice... 11 4.3 Algoritmus WalkSAT... 12 4.4 Výsledky... 13 5. Optimalizace spojitých funkcí... 19 5.1 Implementace HBMO pro reálné funkce... 19 5.1.1 Reprezentace a výpočet zdatnosti... 19 5.1.2 Svatební let... 19 5.1.3 Operátor křížení... 20 5.1.4 Dělnice... 20 5.2 Rosenbrockův algoritmus... 22 5.3 Diferenciální evoluce... 23 5.4 Experimenty a výsledky... 23 vi

5.4.1 Konfigurace algoritmů pro srovnávací testy... 24 5.4.2 Rozšířená Rosenbrockova funkce... 24 5.4.3 Rastriginova funkce... 28 5.4.4 Ackleyho funkce... 29 5.4.5 Fletcher-Powellova funkce... 31 6. Řešení problému obchodního cestujícího... 34 6.1 Stochastický problém obchodního cestujícího... 34 6.2 Implementace HBMO pro TSP... 36 6.2.1 Reprezentace a výpočet zdatnosti... 36 6.2.2 Operátor mutace přepojením... 37 6.2.3 Operátor mutace RuinAndRecreate... 37 6.2.4 Svatební let... 38 6.2.5 Operátor křížení... 39 6.2.6 Dělnice... 40 6.2.7 Algoritmus HBMO-TSP v pseudokódu... 41 6.3 Implementace umělé mravenčí kolonie pro TSP... 42 6.4 Výsledky TSP... 43 7. Testovací platforma... 45 8. Náměty pro další práci... 46 9. Závěr... 47 10. Použitá literatura... 48 A. Obsah CD... 51 B. Použití programu... 52 C. Implementace nového optimalizačního problému do frameworku... 55 vii

1. Úvod Řešením optimalizačního problému je najít mezi přípustnými řešeními to nejlepší řešení. Formálněji, najít řešení v oblasti přípustných řešení, které je minimem (nebo maximem) účelové funkce nebo se tomuto řešení alespoň nejvíce přiblížit [1]. Nalezení takového řešení je pro některé problémy velmi obtížné. Prostor přípustných řešení může být velmi rozsáhlý. Problém vysvětlíme na problému obchodního cestujícího [2]. Úkolem obchodního cestujícího je navštívit zákazníky v mnoha různých městech. Mezi městy jsou silnice. Problém cestujícího je nalézt takové pořadí měst, aby celková ujetá vzdálenost byla co nejmenší. Pokud bude cestující mít za úkol navštívit měst, existuje jejich různých permutací. Je zcela vyloučené postupně spočítat délku všech možných cesty a vybrat z nich tu nejkratší. Pro řešení takto náročných problémů se používají heuristické algoritmy, které sice nezaručují nalezení nejlepšího řešení, ale dokážou najít řešení, které je jen o málo horší než hledané optimum, a najdou je za přijatelně krátkou dobu. Během posledních dvou dekád se přírodou inspirované přístupy stávají stále oblíbenějšími při návrhu pokročilých informačních systémů. Mezi nejúspěšnější přírodou inspirované algoritmy pro optimalizaci při řešení komplexních problémů patří ty, které jsou inspirované úspěšným organizovaným chováním živočichů nebo mikroorganismů. Jde například o Particle swarm optimization inspirované chováním hejn ptáků [3] nebo ryb [4] nebo Ant Colony Optimization inspirované chováním mravenců při vyhledávání a sběru potravy [5]. Před několika lety byl objeven nový algoritmus inspirovaný chováním společenského hmyzu nazvaný Optimalizace pářením včelí královny (Honey Bees Mating Optimization zkráceně HBMO) [6]. Od té doby byl algoritmus úspěšně aplikován na různé optimalizační problémy [6] [7] [8]. Tato práce si klade za cíl shrnout již dosažené poznatky a experimentálně ověřit jejich účinnost na vybrané skupině dalších optimalizačních problémů. 1 / 59

2. Popis algoritmu 2.1 Úvod HBMO je metaheuristický algoritmus, který se částečně podobá genetickému algoritmu. Při implementaci pro konkrétní typ problému je zvolena vhodná reprezentace jeho řešení a do HBMO algoritmu jsou zapojeny konkrétní metody křížení a mutace vhodné pro daný problém a zvolenou reprezentaci. HBMO může být použit na celou řadu optimalizačních problémů. Optimalizační problém může obsahovat spojité nebo diskrétní vstupní proměnné, může být kombinatorickým problémem nebo třeba kombinací spojitého a kombinatorického problému. Pro funkci algoritmu je podstatné to, že existuje tzv. účelová funkce, jejímž vstupem je jedno řešení problému a výstupem je číselné vyjádření kvality řešení (tzv. zdatnost řešení). Jedná se tedy o black-box optimalizaci, neboť algoritmus nevidí do vnitřní struktury problému. Jedinou informací, kterou má algoritmus k dispozici, jsou hodnoty účelové funkce pro řešení, která sám vygeneroval. HBMO algoritmus tedy funguje tak, že postupně generuje různá řešení, ty ohodnocuje prostřednictvím účelové funkce a pamatuje si vždy nejlepší doposud nalezené řešení. Toto řešení je pak výsledkem celého optimalizačního procesu. 2.2 Inspirace přírodou 2.2.1 Struktura včelstva Kolonie včel medonosných se typicky skládá z královny, dělnic, trubců a larev. V rozmnožování (alespoň u některých druhů, například u evropského Apis mellifera) hrají hlavní úlohu královny specializující se na kladení vajíček. Dělnice mají ve včelím roji mnoho úloh. Mimo jiné se starají o larvy. Larvy se rodí z oplodněných nebo neoplodněných vajíček. Z oplodněných se rodí budoucí dělnice nebo královny, z neoplodněných budoucí trubci [6]. Trubci jsou haploidní samci, kteří nesou stejný genom jako jejich matka, pokud nedojde k jeho změně vlivem náhodné mutace. Dělnice je vlastně potenciální matka, které však nebylo dáno vyrůstat v buňce takové velikosti a s takovou stravou, aby se jí dovyvinuly pohlavní orgány, a tak je má zakrnělé [9]. 2.2.2 Rozmnožování včel Nová včelí kolonie může být založena dvěma způsoby. První způsob se nazývá založení migrací. Probíhá tak, že samička schopná rozmnožování postaví hnízdo, naklade vajíčka a krmí larvy. Po dospění prvního vrhu nastává dělba práce, královny se specializují na kladení vajíček a dělnice na péči o larvy [10]. Včelí královna po svém vylíhnutí odletí na svůj svatební let, při kterém se páří s trubci. Druhým způsobem je takzvané rojení. Při rojení je kolonie založena jednou nebo více královnami v doprovodu skupiny dělnic pocházejících z původní kolonie. Dělba práce začíná okamžitě po založení kolonie. 2.2.3 Svatební let Rojení včelstva začíná tanečkem královny, která poté odletí daleko od hnízda pářit se s trubci. Během jednoho typického svatebního letu se královna spáří se sedmi až dvaceti trubci [11]. Při každém páření je semenný váček (spermatheca) královny obohacen o vzorek spermatu trubce. Takto se vytváří soubor dědičných informací pro nově vznikající kolonii. Pro oplodnění každého vajíčka, které královna 2 / 59

naklade, je náhodně vybrána směs spermatu z královnina semenného váčku [11]. Z vajíček se líhnou larvy, o které pak pečují dělnice. Všechny trubci během zimy umírají, ať už se předtím s královnou spářili, či nikoli. 2.3 Optimalizační algoritmus inspirovaný pářením včel Optimalizační algoritmus inspirovaný pářením včel (Honey bees mating optimization, dále jen HBMO) navrhl H. A. Abbass v roce 2001 a aplikoval jej na problém splnitelnosti booleovských formulí [6]. Nejprve si jeho princip vysvětlíme stručně, detailům se budeme věnovat dále v této kapitole. V algoritmu vystupují královny (queens), jako hlavní nositelky dědičné informace. Dědičná informace neboli genotyp představuje jedno z řešení optimalizačního problému. Způsob, jakým je řešení do genotypu zakódováno, nazýváme reprezentace a závisí na typu optimalizačního problému. Kvalitu nalezeného řešení nazýváme zdatnost (fitness). Čím je lepší řešení, tím vyšší je zdatnost. Způsob výpočtu zdatnosti je rovněž specifický pro každý optimalizační problém. Algoritmus modeluje svatební let královny jako sled diskrétních událostí, při kterých se královna setkává s trubci (drones). Zda se královna s trubcem spáří, záleží na zdatnosti jeho genotypu. Genotyp trubce je v každém kroku královny určitým způsobem vygenerován (konkrétní mechanizmus jeho generování se liší v závislosti na řešeném problému). Pokud má genotyp trubce dostatečně vysokou zdatnost, královna se s trubcem spáří. Při spáření se genotyp trubce přidá do semenného váčku (dále jen spermatéky) královny. Po dokončení svatebního letu královna klade vajíčka, z nichž se líhnou larvy (broods). Oplodněné vajíčko vznikne zkřížením genotypu královny a náhodně vybraného genotypu trubce obsaženého v královnině spermatéce. O plod se starají dělnice (workers). Úloha dělnic je na rozdíl od reálného včelího roje pro účely algoritmu omezena pouze na péči o plod. Dělnice zde nenese žádnou dědičnou informaci. Každá dělnice představuje jeden algoritmus, který se pomocí lokálního prohledávání snaží vylepšit nové řešení. Pravděpodobnost, že bude dělnice vybrána pro vylepšování, je dána její zdatností. Vyšší šanci má zdatnější dělnice. Zdatnost dělnice je dána jejími minulými úspěchy při vylepšování řešení. Při každém vylepšení potomka se zdatnost dělnice zvýší a tím se i zvýší pravděpodobnost, že bude příště vybrána pro další vylepšování. Pokud je některé nové řešení lepší než královna, stává se z něj nová královna a stará královna je odstraněna. Celý cyklus se opakuje dalším svatebním letem královen. Zjednodušené schéma algoritmu je na obrázku 2.1. Nyní probereme jednotlivé části algoritmu podrobněji. Celý algoritmus v pseudokódu je uveden na straně 6. 3 / 59

algoritmus přírodní proces start náhodně vygeneruj určitý počet počátečních řešení každé řešení je vylepšeno náhodně vybranou dělnicí (lokálním prohledáváním) počáteční utvoření hnízda řešení jsou porovnána a nejlepší z nich jsou vybrány jako královny Každá královna se pohybuje prostorem řešení. V každém kroku královna potkává trubce. Pokud je trubec dostatečně zdatný, jeho genotyp je přidán do spermatéky královny královna vyletí z hnízda na svatební let a páří se s trubci Genotypy trubců v královnině spermatéce se zkříží s genotypem královny. Tím jsou vygenerováni noví potomci královna klade vajíčka Dělnice se snaží vylepšit nové potomky pomocí lokálního prohledávání dělnice pečují o plod a krmí plod mateří kašičkou Královny, které jsou méně zdatné než nejlepší noví jedinci, jsou novými jedinci nahrazeny méně zdatná královna je vytlačena z úlu zdatnější královnou NE byla dosažena koncová podmínka ANO konec Obr. 2.1 Diagram algoritmu optimalizace pářením včelí královny 2.3.1 Inicializace Na počátku jsou inicializovány dělnice. Zdatnost každé z nich je inicializována na hodnotu 1. Poté je náhodně vygenerována populace nových jedinců. Každý jedinec představuje jedno náhodně inicializované řešení. Počet jedinců je dán parametrem algoritmu počet nových jedinců. Genotyp každého z nich je posléze vylepšen náhodně zvolenou dělnicí. Nejlepší jedinci se poté stanou 4 / 59

královnami. Počet královen je dalším parametrem algoritmu. Větší počet královen by měl zajistit větší diverzitu populace, může však zpomalit rychlost konvergence k nejlepšímu řešení. 2.3.2 Svatební let Na počátku každé iterace HBMO algoritmu provedou všechny královny nezávisle na sobě svůj svatební let (mating flight). Svatební let je reprezentován jako sled pohybů královny stavovým prostorem. Po každém kroku svatebního se královna setká s trubcem. Pokud je zdatnost trubce dostatečná, královna se s ním spáří. Tím se genetická informace trubce přidá do královnina semenného váčku (spermatéky). Průběh svatebního letu se podobá činnosti algoritmu simulované žíhání (simulated annealing) [12]. Na počátku letu jsou inicializovány proměnné: rychlost a energie královny. Jejich počáteční hodnoty závisí na řešené úloze. V Abbassově článku [6] je navrženo na počátku každého letu vygenerovat počáteční hodnoty obou proměnných náhodně z rovnoměrného rozdělení v intervalu. Proměnná je obdoba teploty v simulovaném žíhání. Ovlivňuje velikost skoku ve stavovém prostoru a pravděpodobnost přijmutí trubce k páření. Maximální počet kroků svatebního letu je omezen energií královny, která se po každém kroku o trochu sníží. Let je ukončen poté, co energie klesne pod prahovou hodnotu nebo pokud je spermatéka již plná. Velikost spermatéky je nastavena vstupním parametrem. Genotyp trubce je vygenerován na základě aktuální polohy královny ve stavovém prostoru. Královna se spáří s trubcem s pravděpodobností, která je vypočtena podle akceptační podmínky (6.9). (2.1) Pokud je zdatnost trubce vyšší než zdatnost královny, trubec se s královnou spáří vždy. Pokud je zdatnost trubce nižší, pak je pravděpodobnost páření královny s trubcem dána funkcí pravděpodobnosti závisející na aktuální rychlosti královny a na rozdílu zdatností královny a trubce. Pravděpodobnost páření je vysoká při vysoké rychlosti královny. S klesající rychlostí pak pravděpodobnost klesá. Během pohybu stavovým prostorem klesá rychlost královny podle vztahu kde koeficient je vstupním parametrem algoritmu. Vztah (2.2) odpovídá tzv. plánu ochlazování (cooling schedule) z algoritmu simulovaného žíhání. Energie královny se v každém kroku snižuje o podle (2.2), (2.3) (2.4) Pářením se rozumí to, že se královnina aktuální pozice ve stavovém prostoru zakóduje do chromozomu a chromozom se přidá do její spermatéky. Velikost spermatéky je omezená vstupním parametrem algoritmu. Svatební let končí ve chvíli, kdy energie královny klesne pod určitou prahovou hodnotu nebo je její spermatéka plná. 5 / 59

algoritmus HBMO (,,, ) inicializuj dělnice W, každou s unikátní heuristikou a počáteční zdatností inicializuj seznam královen Q for q = 1.. BroodSize do náhodně vygeneruj genotyp nové královny q pomocí náhodně vybrané dělnice w vylepši genotyp q přidej jedince q do Q end for prvních nejlepších královen z zdatnost všech dělnic se zvýší o tolik o kolik dělnice zvýšila zdatnost potomků while not UkončovacíPodmínka do for each pro každou královnu z Q do Random Random //Random je rovnoměrné náhodné rozdělení while and spermatéka není plná do vygeneruj trubce ohodnoť zdatnost trubce if Random then //viz (2.1) přidej jeho genotyp do královniny spermatéky end if end while end for each for b = 1.. BroodSize do vyber královnu q z Q pomocí ruletového kola (velikost slotu ~ zdatnost) náhodně vyber genotyp d ze spermatéky královny q vygeneruj potomka b pomocí zkřížení genotypu d a královny q vyber dělnici w ze seznamu dělnic W pomocí ruletového kola //(velikost slotu rulety ~ zdatnost) dělnice w se pokusí vylepšit potomka b pomocí lokálního prohledávání end for zdatnost všech dělnic se zvýší o tolik o kolik dělnice zvýšila zdatnost potomků while nejlepší potomek je lepší než nejhorší královna do nahraď nejméně zdatnou královnu nejlepším potomkem odstraň nejlepšího potomka ze seznamu potomků end while end while 2.3.3 Křížení a nová populace Po dokončení svatebních letů všech královen nakladou královny vajíčka, ze kterých se líhnou larvy. Z larev vznikne nová populace včel. Počet larev je určen vstupním parametrem. Každý nový jedinec je vytvořen tak, že je nejprve vybrána jedna z královen pomocí ruletového kola (roulette wheel selection), kde velikost slotu je úměrná zdatnosti královny. Výběr pomocí ruletového kola udává pravděpodobnost výběru jedince podle jeho zdatnosti podle (6.9). Takto je zaručeno, že i nejhorší jedinec má šanci být vybrán. 6 / 59

(2.5) Z její spermatéky je pak náhodně vybrán genotyp některého trubce, který se předtím s královnou spářil. Nové řešení je vytvořeno zkřížením genotypu královny a trubce pomocí operátoru křížení, který je specifický pro řešený problém. Příklad jednoduchého operátoru křížení pro problém s binární reprezentací je uveden na obrázku (odkaz). Křížení probíhá tak, že každý bit potomka je s padesátiprocentní pravděpodobností převzat buď z genotypu královny, nebo z genotypu trubce. genotyp královny 1 0 0 1 0 1 0 1 1 0 genotyp trubce 1 0 1 1 1 1 1 0 1 1 X genotyp potomka 1 0 0 1 0 1 1 0 1 1 Obr. 2.2 Princip jednoduchého operátoru křížení pro binární reprezentaci 2.3.4 Vylepšení populace pomocí dělnic Pro účely optimalizačního algoritmu je funkce dělnic, na rozdíl od skutečné včelí kolonie, omezena pouze na péči o larvy. Dělnice je algoritmem reprezentována jako heuristika, která vylepšuje nově nalezená řešení (larvy) opakovaným spouštěním algoritmu lokálního prohledávání. Každá dělnice provádí jinou operaci. Pokud se dělnici podaří jedince vylepšit, je její zdatnost zvýšena. Zdatnost dělnic se kumuluje po celou dobu běhu algoritmu. Pro vylepšení každého jedince je vždy náhodně vybrána jedna dělnice, přičemž pravděpodobnost výběru konkrétní dělnice je přímo úměrná její zdatnosti. Výběr je prováděn pomocí ruletového kola, kde šířka slotu přímo odpovídá zdatnosti dělnice. Dělnice, která je více úspěšná při vylepšování potomků, má tak vyšší šanci být vybrána i příště. Algoritmus se tak částečně adaptuje na vlastnost řešeného optimalizačního problému. Podle [6] je zdatnost dělnice zvýšena jednoduše o rozdíl zdatnosti vylepšovaného jedince před a po vylepšení podle kde je zdatnost dělnice a je rozdíl mezi zdatností řešení před a po vylepšení. Tento přístup vedl u některých problémů k velkému nárůstu zdatnosti v počátečních fázích optimalizace. Pokud by například při prvním točení ruletového kola byla náhodně vybrána dělnice, které se podařilo dosáhnout velkého zlepšení, získala by velmi vysokou zdatnost. Při příštím točení rulety by již šance ostatních dělnic byly velmi malé. Poprvé vylosovaná dělnice však zdaleka nemusela být tou skutečně nejlepší. Například u problému obchodního cestujícího lze dosáhnout zlepšení z počátku velmi snadno, avšak pro řešení blízké optimu je to již velmi obtížné. Dělnice, která by mohla dosahovat výrazného pokroku v pozdější fázi, kdy je hledání optima obtížné, by tak vůbec nemusela dostat šanci. Zvyšování zdatnosti jsme vzhledem k výše popsanému problému upravili na (2.6) (2.7) 7 / 59

kde je celkový počet participujících dělnic. Maximální zvýšení zdatnosti dělnice je takto shora omezen zdatností nejméně zdatné dělnice. Oproti původní implementaci je zdatnost dělnic zvyšována nikoli okamžitě po vylepšení řešení, ale až poté, co je vylepšen genotyp posledního jedince v celé populaci. Tím je dosaženo dalšího snížení pravděpodobnosti prudkého růstu zdatnosti jedné z dělnic na počátku optimalizace. 2.3.5 Nahrazení královny Na konci cyklu je nejméně zdatná královna nahrazena nejlepším nalezeným řešením, které je pak odstraněno ze seznamu řešení. Nahrazování se opakuje tak dlouho, dokud v seznamu nových jedinců není nikdo zdatnější než některá z královen. Celá populace kromě královen je poté odstraněna a algoritmus pokračuje dalšími svatebními lety přeživších královen. 2.3.6 Implementace algoritmu pro řešení konkrétního problému Pro konkrétní optimalizační problém je potřeba zvolit vhodnou reprezentaci (způsob zakódování řešení do genotypu) a metodu výpočtu zdatnosti konkrétního řešení. Dále je třeba zvolit operátor křížení, heuristiky lokálního prohledávání (dělnice) a nastavit vstupní parametry. Tyto již dříve uvedené parametry jsou: počet královen (QueensCount), velikost spermatéky (SpermathecaSize), počet nových jedinců (BroodSize) a koeficient snižování rychlosti královny. 8 / 59

3. Metodika testování Optimalizační algoritmus obvykle během své činnosti konverguje směrem k lokálnímu optimu. Konvergence se může zastavit předčasně v lokálním optimu. Pro porovnávání úspěšnosti různých algoritmů při řešení jednoho problému budeme porovnávat jejich nejlepší dosažená řešení v závislosti na počtu vyhodnocení účelové funkce. V mnoha článcích o heuristických algoritmech se uvádí nejlepší řešení nalezené za určitou dobu běhu algoritmu. Čas běhu algoritmu však silně ovlivňuje mnoho faktorů jako hardware, na kterém experiment běží, jazyk, ve kterém byl algoritmus implementován, a detaily vlastní implementace. Z tohoto důvodu je téměř nemožné, aby někdo jiný experiment zopakoval a získal obdobné výsledky. Abychom tomuto problému předešli, soustředili jsme se na měření počtu vyhodnocení účelové funkce, což je atribut invariantní vůči implementačním detailům. Vlastností všech heuristických algoritmů je, že jejich konkrétní běh je silně ovlivněn náhodou. Abychom potlačili vliv náhody na výsledky, opakovali jsme každý experiment padesátkrát za sebou se stejnými parametry. Při posuzování výsledků se budeme primárně soustředit na nejlepší a nejhorší běh a na medián z těchto padesáti běhů. 9 / 59

4. Aplikace na problém splnitelnosti booleovských klauzulí První aplikace algoritmu HBMO byla provedena Husseinem Abbassem na problému 3-SAT roku 2001 [6]. Pokusili jsme se algoritmus implementovat znovu, provést experimenty a výsledky porovnat s původní implementací. Problém splnitelnosti booleovských klausulí (boolean satisfiability problem, zkráceně SAT) spočívá v rozhodnutí, zda mohou být do výrokové formule dosazeny takové hodnoty, aby tato formule byla vyhodnocena jako pravdivá. Podmnožinou SAT problémů je problém 3-SAT, u kterého jsou všechny klausule zapsány v konjunktivní normální formě (conjunctive normal form CNF) a všechny klausule obsahují právě 3 literály. Pro 3-SAT problém bylo dokázáno Stephenem Cookem, že je NP-úplný (NPcomplete) [13]. Problém nejlépe vysvětlíme na jednoduchém příkladu. Nechť máme 3-SAT problém o 4 proměnných a 6 klausulích. Nalezení řešení takového problému je snadné. Existuje několik řešení. Jedním takovým řešením je například. Obtížnost řešení 3-SAT problému závisí na fenoménu zvaném fázový přechod (phase transition) [13]. Fázový přechod je definován poměrem mezi počtem klausulí (omezujících podmínek) a počtu proměnných. Nalezení řešení pro problémy před fázovým přechodem je snadné, problémy za fázovým přechodem jsou většinou nesplnitelné. Těžké SAT problémy se nacházejí kolem oblasti fázového přechodu. Poměr byl pro problém s literály v jedné klausuli stanoven na [14]: (4.1) Pro 3-SAT problém bylo experimentálně zjištěno, že jeho fázový přechod nastává při poměru klausulí na jeden literál [15]. Existují dva přístupy k řešení problému splnitelnosti: úplné a neúplné. První typ používá úplné prohledávání a garantuje nalezení řešení, pokud takové řešení existuje. Takové postupy však mohou být použity pouze na malé problémy, neboť čas potřebný pro úplné prohledání roste s velikostí problému exponenciálně. Druhý typ naopak negarantuje nalezení řešení, ale je rychlý a vhodný pro rozsáhlé problémy. 4.2 Implementace HBMO pro 3-SAT Při implementaci HBMO algoritmu řešící 3-SAT problém jsme se snažili co nejvíce přiblížit k původní implementaci popsané v článku [6]. V této kapitole postupně probereme, jakým způsobem je v algoritmu reprezentováno řešení, jak se počítá jeho zdatnost a jak pracují operátory křížení a lokálního prohledávání. 4.2.1 Reprezentace a výpočet zdatnosti Genotyp jedince je reprezentován polem binárních hodnot o délce rovné počtu proměnných obsažených v problému. Zdatnost genotypu je počítána jako poměr počtu splněných klausulí k celkovému počtu klausulí. 10 / 59

č ě ý í ý č í é (4.2) 4.2.2 Svatební let V každém hlavním cyklu algoritmu provede nejprve každá královna svůj svatební let. Rychlost a energie královny je inicializována před začátkem svatebního letu náhodně v intervalu. Na počátku letu je také náhodně vygenerován genotyp trubce. Pohyb královny prostorem řešení je uskutečňován po krocích a je dán rychlostí, která udává pravděpodobnost prohození každého bitu v genotypu trubce v každém kroku. Po uskutečnění kroku je vyhodnocena zdatnost trubce a královna se s trubcem s pravděpodobností spočtenou podle (6.9) spáří. Spářením se genotyp trubce přidá do semenného váčku královny. Let končí, jakmile je královnin semenný váček plný (jeho maximální velikost je dána vstupním parametrem ), nebo pokud energie královny klesne pod prahovou hodnotu, kterou jsme stanovili na. Po skončení svatebních letů všech královen je vygenerován určitý počet potomků (počet je definován vstupním parametrem ). Pro vygenerování potomka je nejprve vybrána jedna z královen na základě její zdatnosti. Výběr probíhá pomocí ruletového kola (roulette wheel selection), jehož každý slot proporcionálně odpovídá zdatnosti královny. Ze spermatéky vybrané královny je náhodně vybrán jeden genotyp, který je následně zkřížen s genotypem královny a utvoří tak nového jedince. 4.2.3 Operátor křížení Přesný způsob křížení není v původní Abbassově práci popsán zcela jednoznačně. Jisté je, že je taktéž inspirovaný přírodou, kde reální trubci jsou vždy haploidní a potomek vždy obsahuje rovný podíl genomu trubce a královny. Operátor křížení jsme implementovali tak, že každý bit genotypu potomka je převzat vždy s padesátiprocentní pravděpodobností z genotypu královny nebo trubce. Poloha bitu je vždy zachována. Jedná se tedy o nejjednodušší možný binární operátor křížení, jehož činnost je znázorněna na obrázku 2.2. 4.2.4 Dělnice Dělnice se pokoušejí vylepšovat nově narozené jedince lokálním prohledáváním. Každá dělnice představuje jeden algoritmus lokálního prohledávání. V naší implementaci bylo těchto algoritmů použito celkem pět. Jsou to WalkSAT, náhodná procházka (RandomWalk), náhodné prohození (RandomFlip), náhodný nový (RandomNew) a jednobodové křížení (1PointCrossover). Heuristika náhodné prohození při každém pokusu neguje hodnotu náhodně vybrané proměnné. Heuristika náhodný nový vymění genotyp potomka za nový náhodně vygenerovaný genotyp. Jednobodové křížení zkříží v náhodně vybraném bodě genotyp potomka s náhodně vygenerovaným genotypem. Křížení probíhá stejným způsobem, jako křížení genotypu královny a trubce popsané výše. Náhodná procházka náhodně vybere v každém kroku jednu nesplněnou klauzuli a zneguje jednu (náhodně vybranou) proměnnou, kterou vybraná klausule obsahuje. Algoritmus WalkSAT je popsán v následujícím odstavci. 11 / 59

algoritmus HBMO-SAT(,,, ) inicializuj dělnice W, každou s unikátní heuristikou a počáteční zdatností inicializuj seznam královen Q for q = 1.. BroodSize do náhodně vygeneruj genotyp nové královny q pomocí náhodně vybrané dělnice w vylepši genotyp q přidej jedince q do Q end for prvních nejlepších královen z zdatnost všech dělnic se zvýší o tolik o kolik dělnice zvýšila zdatnost potomků while not UkončovacíPodmínka do for each pro každou královnu z Q do Random Random / vygeneruj náhodný genotyp trubce D //Random je rovnoměrné náhodné rozdělení while and spermatéka není plná do změň každý bit genotypu trubce d s pravděpodobností p ohodnoť zdatnost trubce d if Random then //viz (2.1) přidej jeho genotyp do královniny spermatéky end if rychlost end while end for each for i = 1.. počet nových potomků do vyber královnu q z Q pomocí ruletového kola (velikost slotu ~ zdatnost) náhodně vyber genotyp d ze spermatéky královny q vygeneruj potomka b pomocí zkřížení genotypu d a královny q vyber dělnici w ze seznamu dělnic W pomocí ruletového kola // (velikost slotu rulety ~ zdatnost) dělnice w se pokusí vylepšit potomka b pomocí lokálního prohledávání zdatnost dělnice w se zvýší o hodnotu o kterou dělnice zvýšila zdatnost b end for zdatnost všech dělnic se zvýší o tolik o kolik dělnice zvýšila zdatnost potomků while nejlepší potomek je lepší než nejhorší královna do nahraď nejméně zdatnou královnu nejlepším potomkem odstraň nejlepšího potomka ze seznamu potomků end while end while 4.3 Algoritmus WalkSAT Algoritmus WalkSAT řeší SAT problém metodou lokálního prohledávání. Algoritmus pracuje tak, že v každém cyklu vybere náhodně jednu nesplněnou klausuli a znegováním jedné její proměnné zajistí její splnění. Existuje mnoho variant tohoto algoritmu lišící se strategií výběru proměnné. Převzali jsme implementaci uvedenou v literatuře [16]. Algoritmus používá vstupní parametr pravděpodobnost náhodné procházky. Jeho hodnotu jsme nastavili na. 12 / 59

Algoritmus je v pseudokódu níže. Při použití algoritmu jako lokálního prohledávání prováděného dělnicí je algoritmus lehce upravuje tak, že počáteční řešení není generováno náhodně, ale je to nový jedinec, který má být dělnicí vylepšen. algoritmus WalkSAT(pravděpodobnostNáhodnéProcházky, početiterací) ohodnocení GenerujNáhodnéOhodnocení for č í do náhodně vyber jednu nesplněnou klausuli z ohodnocení if Random(0,1) < pravděpodobnostnáhodnéprocházky then neguj náhodně vybranou proměnnou vybrané klausule else neguj tu proměnnou vybrané klausule která vyústí v minimální počet nesplněných klausulí end if end for 4.4 Výsledky Pokusili jsme se zopakovat experimentální výsledky z článku [6]. Bylo rovnoměrně vygenerováno 50 různých 3-SAT problémů. Fázový přechod pro 3-SAT nastává okolo poměru 4,3 mezi počtem klausulí a počtem proměnných. Všechny generované problémy měly 50 proměnných a 215 klausulí. Nacházely se tak v oblasti fázového přechodu. Všechny problémy jsou tím pádem těžké a není u nich zaručeno, zda existuje jejich řešení. Experimentovali jsme s různými konfiguracemi parametrů podobně jako H. Abbass [6]. Díky tomu pak bylo možné naše výsledky porovnat s původními. Jako počet královen ( ) byly voleny hodnoty 1 a 5. Jako velikost spermatéky ( ) jsme volili hodnoty 7, 14, 21 a 40. Jako počet nových jedinců v každé generaci ( ) byly voleny hodnoty 30, 60 a 90. Po vytvoření potomka provedla vybraná dělnice vždy 100 pokusů o jeho vylepšení. Počet svatebních letů nebyl omezen. Omezen byl pouze maximální počet vyhodnocení klauzulí a to na hodnotu 120 000. Koeficient úbytku rychlosti královny během letu ( ) byl zvolen na hodnotu 0,9. Algoritmus byl spuštěn desetkrát na každý z padesáti vygenerovaných problémů. Úspěšnost algoritmu je měřena vždy jako průměrný počet problémů, pro které bylo nalezeno přípustné ohodnocení formulí, z celkového počtu padesáti vygenerovaných problémů. Vzájemné srovnávání bylo vždy prováděno na základě dosaženého výsledku po dosažení určitého počtu vyhodnocení. 13 / 59

0 6000 12000 18000 24000 30000 36000 42000 48000 54000 60000 66000 72000 78000 84000 90000 96000 102000 108000 114000 120000 Počet vyřešených problémů (z celkem 50ti) 0 6000 12000 18000 24000 30000 36000 42000 48000 54000 60000 66000 72000 78000 84000 90000 96000 102000 108000 114000 120000 Počet vyřešených problémů (z celkem 50ti) 30,0 25,0 20,0 15,0 10,0 5,0 0,0 3SAT problém - 1 královna Počet vyhodnocení klausulí BroodSize=30, SpermathecaSize=7, BroodSize=60, SpermathecaSize=7, BroodSize=90, SpermathecaSize=7, BroodSize=30, SpermathecaSize=14, BroodSize=60, SpermathecaSize=14, BroodSize=90, SpermathecaSize=14, BroodSize=30, SpermathecaSize=21, BroodSize=60, SpermathecaSize=21, BroodSize=90, SpermathecaSize=21, BroodSize=30, SpermathecaSize=40, Obr. 4.1 Porovnání výkonů s různými parametry HBMO-SAT 1 královna 30,0 25,0 20,0 15,0 10,0 5,0 0,0 3SAT problém - 5 královen Počet vyhodnocení klausulí BroodSize=30, SpermathecaSize=7, BroodSize=60, SpermathecaSize=7, BroodSize=90, SpermathecaSize=7, BroodSize=30, SpermathecaSize=14, BroodSize=60, SpermathecaSize=14, BroodSize=90, SpermathecaSize=14, BroodSize=30, SpermathecaSize=21, BroodSize=60, SpermathecaSize=21, BroodSize=90, SpermathecaSize=21, BroodSize=30, SpermathecaSize=40, Obr. 4.2 Porovnání výkonů s různými parametry HBMO-SAT 5 královen 14 / 59

Z grafů 4.1 a 4.2 je patrné, že nastavení parametrů, ani nemá na chování algoritmu velký vliv. Rychlost konvergence je přibližně stejná a velmi podobný je i počet vyřešených problémů po provedení 120 000 vyhodnocení klausulí (viz. tabulka 4.1). Počet vyřešených problémů se ve všech případech blížil hodnotě 24. Je tedy velmi pravděpodobné, že právě 24 vygenerovaných SAT problémů má řešení z celkových 50. Tabulka 4.1 Počet nalezených řešení pro různé kombinace parametrů Velikost semenného váčku 7 7 7 14 14 14 21 21 21 40 40 40 Počet nových jedinců 20 60 100 20 60 100 20 60 100 20 60 100 Počet řešeních - 1 královna 24,0 23,9 23,8 23,9 23,7 24,0 23,8 23,9 23,9 23,9 23,8 23,8 Počet řešeních - 5 královen 24,0 24,0 24,0 24,0 24,0 24,0 24,0 24,0 24,0 24,0 24,0 24,0 Pro další experimenty a srovnávání byla vybrána konfigurace s těmito parametry:,,, Tato kombinace byla vybrána z toho důvodu, že s ní algoritmus dosáhl 24 vyřešených problémů za nejnižším počtem vyhodnocení klausulí. Zajímavým výsledkem je výsledná zdatnost dělnic po ukončení algoritmu. Ta určuje, nakolik se které heuristice lokálního prohledávání dařilo vylepšovat vygenerovaná řešení. Tabulka 4.2 Porovnání výkonů různých dělnic Název heuristiky lokálního prohledávání RandomFlip RandomNew RandomWalk WalkSat 1PointCrossover Zdatnost po ukončení algoritmu Z tabulky 4.2 je patrné, že nejúspěšnějšími dělnicemi byly heuristiky WakSAT a RandomWalk. Zkusili jsme tedy porovnat výsledky těchto dvou algoritmů s HBMO. Oba algoritmy byly spuštěny na náhodně vygenerované řešení a provedly 100 mutací. Poté byl algoritmus restartován a proces se opakoval. Vždy bylo zaznamenáno nejlepší nalezené řešení. Porovnání algoritmů je patrné na grafu 4.3. Z grafu je patrné, že množinu 3-SAT problémů s 50 proměnnými a 215 klausulemi řeší všechny tři algoritmy stejně úspěšně. 15 / 59

0 8000 16000 24000 32000 40000 48000 56000 64000 72000 80000 88000 96000 104000 112000 120000 128000 136000 144000 152000 160000 168000 176000 184000 192000 200000 208000 216000 224000 232000 240000 248000 Počet vyřešených problémů (z celkem 50ti) 30 Průměrný počet nalezených řešení pro 50 různých 3SAT problémůs 50 proměnnými a 215 klausulemi 25 20 15 10 HBMO WalkSAT Random Walk 5 0 Počet vyhodnocení klausulí Obr. 4.3 Porovnání HBMO-SAT s WalkSAT a RandomWalk pro 500 3-SAT problémů s 50 proměnnými a 215 klausulemi Pokusili jsme se porovnat naše výsledky s výsledky dosaženými H. Abbassem [6]. Porovnávali jsme průměrný počet problémů, pro které bylo nalezeno přípustné řešení, po provedení 120 000 různých ohodnoceních. Průměrný počet nalezených řešení z celkem 50 problémů je v tabulce 4.3. Aby byly výsledky porovnatelné, byly hodnoty zprůměrovány pro všechny testované velikosti spermatéky stejně jako je tomu v původní práci. Z tabulky 4.3 je patrné, že námi dosažené výsledky jsou výrazně lepší. Porovnání výkonů HBMO algoritmu s WalkSATem v článku [6] dopadlo také výrazně odlišně. V článku se uvádí, že WalkSAT nenalezl ani jedno přípustné řešení pro ani jeden problém. To neodpovídá našim závěrům, kdy samotný algoritmus WalkSAT fungoval pro problém s 50 proměnnými stejně dobře, jako HBMO. Příčinou by mohla být odlišná implementace algoritmu WalkSAT. Pokud by implementace WalkSAT použitá v článku [6] obsahovala chybu, negativně by to ovlivnilo jak výsledky samotného restartovaného algoritmu WalkSAT, tak výsledky HBMO algoritmu, v němž WalkSAT je používán jako heuristika lokálního prohledávání. Tabulka 4.3 Průměrné počty nalezených řešení -porovnání s Abbass MBO SAT *6] Počet potomků Naše implementace Abbass [6] Počet královen Počet královen 1 5 1 5 20 23,8 23,9 2,3 2,3 60 23,8 24,0 5,3 1,0 100 23,8 24,0 4,3 0,7 Zkusili jsme stejné tři algoritmy spustit na jinou množinu 50 náhodně vygenerovaných 3-SAT problémů o 100 proměnných a 430 klausulích. A jinou množinu 50 problémů o 200 proměnných 860 klausulích. Výsledky jsou vidět na grafech 4.4 (100 proměnných) a 4.5 (200) proměnných. Aby porovnání bylo férovější, restartovali jsme algoritmy WalkSAT a RandomWalk jednou po 100 cyklech a jednou po 500 cyklech. V grafech jsou výsledky označeny koncovkami 100 It a 500 It. 16 / 59

0 357500 715000 1072500 1430000 1787500 2145000 2502500 2860000 3217500 3575000 3932500 4290000 4647500 5005000 5362500 5720000 6077500 6435000 6792500 7150000 7507500 7865000 8222500 8580000 8937500 9295000 9652500 počet nalezených řešení 0 8000 16000 24000 32000 40000 48000 56000 64000 72000 80000 88000 96000 104000 112000 120000 128000 136000 144000 152000 160000 168000 176000 184000 192000 200000 208000 216000 224000 232000 240000 248000 Počet vyřešených problémů (z celkem 50ti) 25 Průměrný počet nalezených řešení pro 50 různých 3SAT problémůs 100 proměnnými a 430 klausulemi 20 15 10 5 HBMO WalkSAT 500 It WalkSAT 100 It Random Walk 500 It Random Walk 100 It 0 Počet vyhodnocení klausulí Obr. 4.4 Průměrný počet nalezených řešení pro 50 různých 3-SAT problémů s 100 proměnnými a 430 klausulemi 7 Průměrný počet nalezených řešení pro 50 různých 3SAT problémůs 200 proměnnými a 860 klausulemi 6 5 4 3 2 1 HBMO WalkSAT 500 It Random Walk 500 It 0 Počet vyhodnocení klausulí Obr. 4.5 Průměrný počet nalezených řešení pro 50 různých 3-SAT problémů s 200 proměnnými a 860 klausulemi Z grafů je patrné, že pro 3-SAT problémy s 50 proměnnými fungují všechny tři porovnávané algoritmy stejně dobře. U problémů se 100 proměnnými je již náhodná procházka, která restartuje po 100 iteracích v nevýhodě, neboť pravděpodobnost nalezení řešení během 100 negování proměnné je malá. Lokální prohledávání restartující až po 500 iteracích však funguje obstojně. 17 / 59

U problémů s 200 proměnnými již algoritmy WalkSAT a RandomWalk konvergovaly pomaleji než HBMO-SAT. Za povšimnutí stojí, že heuristika RandomWalk měla o trochu lepší výsledky než více informovaná heuristika WalkSAT. 18 / 59

5. Optimalizace spojitých funkcí V této kapitole se zabýváme hledáním globálního minima funkcí s reálnými parametry. Implementace algoritmu musí počítat s tím, že není znám gradient účelové funkce. Funkce musí mít omezený definiční obor, aby bylo možno vygenerovat počáteční hodnoty populace. 5.1 Implementace HBMO pro reálné funkce HBMO Algoritmus pro spojité problémy vychází z implementace HBMO pro 3-SAT problém. Na rozdíl od řešení SAT problému, kde se zdatnost jedince pohybuje v intervalu, se zdatnost jedince pro spojitou funkci pohybuje o dvacet a více řádů. Z tohoto důvodu bylo nutné implementovat určité části odlišně. Liší se samozřejmě také použité operátory lokálního prohledávání, operátor křížení a částečně se liší implementace svatebního letu. 5.1.1 Reprezentace a výpočet zdatnosti Řešení je reprezentováno jako pole čísel s plovoucí desetinnou čárkou, jehož délka se rovná počtu parametrů funkce. Každé číslo představuje jeden parametr účelové funkce. Zdatnost se počítá jako záporná hodnota z hodnoty účelové funkce. Při výběru královny podle zdatnosti se pak používá ruletové kolo vybírající nikoli přímo úměrně jeho zdatnosti, ale podle jeho pořadí. Každé řešení má na ruletě slot o velikosti, kde označuje pořadí daného řešení (číslováno od 0), pokud jsou všechna řešení, ze kterých se provádí výběr, setříděna podle své zdatnosti od nejlepšího k nejhoršímu. 5.1.2 Svatební let Původní implementace, ve které se genotyp trubce generuje před počátkem letu zcela náhodně, nedávala uspokojivé výsledky, neboť byla velmi malá pravděpodobnost, že královna narazí na alespoň trochu zdatného trubce, se kterým by se mohla spářit. Na základě tohoto poznatku jsme algoritmus modifikovali tak, že před počátkem letu se genotyp trubce vygeneruje prostým zkopírováním genotypu náhodně vybrané královny. V každém kroku letu je genotyp trubce zmutován přičtením hodnoty k jeho jedné náhodně vybrané proměnné. Hodnota je spočtena podle vztahu kde je nová proměnná královny. Ta je při vzniku královny inicializována parametrem. Během letu se mění v každém kroku v závislosti na tom, zda se královna v tomto kroku spářila či nikoli. Pokud se spářila, hodnota se zčtyřnásobí. Pokud ne, hodnota se vydělí dvěma. V kroku, ve kterém se královna nespáří, je genotyp trubce vygenerován znovu zkopírováním genotypu náhodně vybrané královny. Genotyp trubců je tak více podobný genotypu královen, čímž potenciálně hrozí ztráta diverzity populace. Při experimentech se však ukázalo, že tento problém na vybraných účelových funkcích nenastává. Podmínku páření bylo potřeba také upravit vzhledem k velkým rozsahům zdatností jedinců. Pokud by například královna měla zdatnost a trubec zdatnost, byl by absolutní rozdíl zdatností sice malý a podle (2.1) by nejspíše ke spáření došlo, přitom relativní rozdíl obou zdatností je devět řádů, což je velmi mnoho. Z tohoto důvodu jsme kritérium páření královny s trubcem upravili na (5.1) 19 / 59

(5.2) Rozdíl zdatností je navíc vydělen zdatností královny, čímž se problém s velkým rozsahem zdatností vyřeší. 5.1.3 Operátor křížení Pro generování potomků se používá operátor křížení, který hodnotu každé proměnné potomka vypočte jako vážený aritmetický průměr proměnných se stejným indexem z obou jeho rodičů podle kde je i-tá proměnná prvního rodiče, je i-tá proměnná druhého rodiče a U je náhodně vygenerovaná hodnota z rovnoměrného rozdělení. 5.1.4 Dělnice Dělnice jsou reprezentovány dvěma algoritmy lokálního prohledávání. První dělnicí je Rosenbrockův algoritmus [17] [18], který je podrobně popsán dále v textu. Druhou dělnicí je algoritmus, který se v každém svém kroku pokusí nahradit jednu hodnotu řešení novou hodnotou získanou z rovnoměrného náhodného rozdělení z celého definičního oboru účelové funkce pro daný parametr. Pokud je modifikované řešení lepší, je přijato a dále je pokračováno od tohoto řešení. Zvyšování zdatnosti dělnic na základě jejich úspěchů při vylepšování potomků bylo rovněž pozměněno. Pokud se dělnice snaží o zlepšení neúspěšně, je její zdatnost snížena o dvě procenta. (5.3) (5.4) Poznamenejme, že je celkový počet dělnic a je rozdíl zdatnosti řešení před a po pokusu o jeho zlepšení. 20 / 59

algoritmus HBMO-Real (,,, ) inicializuj dělnice W, každou s unikátní heuristikou a počáteční zdatností inicializuj seznam královen Q for q = 1.. do náhodně vygeneruj genotyp královny q pomocí náhodně vybrané dělnice w vylepši genotyp královny přidej královnu q do Q end for prvních nejlepších královen z zdatnost všech dělnic se zvýší o tolik o kolik dělnice zvýšila zdatnost potomků while not UkončovacíPodmínka do for each pro každou královnu z Q do Random Random / //Random je rovnoměrné náhodné rozdělení vytvoř trubce zkopírováním genotypu náhodně vybrané královny while and spermatéka není plná do Random Random ohodnoť zdatnost trubce if Random then //viz (5.2) přidej genotyp trubce do královniny spermatéky else //mutace i-té proměnné trubce resetuj genotyp trubce zkopírováním genotypu náhodně vybrané královny end if end while end for each for do vyber královnu q z Q pomocí ruletového kola (velikost slotu ~ pořadí náhodně vyber genotyp d ze spermatéky královny q vygeneruj potomka pomocí zkřížení genotypu d a královny q podle (5.1) vyber dělnici w ze seznamu dělnic W pomocí ruletového kola (velikost slotu ~ zdatnost) dělnice w se pokusí vylepšit potomka b pomocí lokálního prohledávání end for zdatnost všech dělnic se zvýší o tolik o kolik dělnice zvýšila zdatnost potomků while nejlepší potomek je lepší než nejhorší královna do nahraď nejméně zdatnou královnu nejlepším potomkem odstraň nejlepšího potomka ze seznamu potomků end while end while 21 / 59

5.2 Rosenbrockův algoritmus Rosenbrockův algoritmus [17] je klasický algoritmus pro lokální prohledávání, který si zachovává nejlepší doposud nalezené řešení a prohledává jeho okolí. Jeho výhodou je, že se automaticky adaptuje na okolí bodu prohledávání dynamicky mění velikost kroku a směr prohledávání. Pro prostor prohledávání s dimenzí se model okolí sestává z vektorů, které tvoří ortonormální bázi a multiplikátorů, které určují velikost kroku. V každé iteraci provede algoritmus sérii pokusů o nalezení lepšího řešení ve směrech vektorů ortonormální báze. Pokud je v jednom směru nalezeno, v příští iteraci se pro tento směr zvětší velikost kroku dle parametru. Pokud lepší řešení není nalezeno, bude v příštím kroku hledáno řešení na opačné straně a velikost kroku bude pro tento vektor zmenšena podle parametru. Jakmile je v jednom směru báze zaznamenán pokrok a v opačném směru nikoli, je provedeno otočení ortonormální báze tak, aby první vektor nové báze byl rovnoběžný s vektorem mířícím od bodu, kde bylo prováděno poslední otočení báze, do bodu současného řešení. Všechny multiplikátory jsou resetovány na hodnoty 1. Pro otáčení báze je použita Gram-Smidtova ortonormalizační procedura [19]. algoritmus Rosenbrock(, ) InicializujPočátečníŘešení Inicializuj ortonormální bázi Inicializuj multiplikátory na hodnotu while not UkončovacíPodmínka do for do úspěch neúspěch if then else úspěch end if end while neúspěch end if end for if úspěch and neúspěch then //pokud bylo alespoň v jednom směru postup a v jiném ne OtočOrtonormálníBázi ) Inicializuj multiplikátory na hodnotu end while Algoritmus má dva parametry. Pro nastavení zvětšení kroku v jedné dimenzi slouží parametr, pro zmenšování kroku parametr. Nastavili jsme parametry na nejobvykleji používané hodnoty a podle článku [18]. Při použití Rosenbrockova algoritmu jakožto dělnice v rámci HBMO je algoritmus mírně upraven tak, že se na jeho prvním řádku řešení neinicializuje náhodně, ale vezme se z genotypu potomka, který má být vylepšen. 22 / 59

5.3 Diferenciální evoluce Pro porovnání výsledků na reálných funkcích jsme implementovali heuristický algoritmus zvaný diferenciální evoluce (differential evolution, zkráceně DE) [20]. Jde o multiagentní optimalizační algoritmus určený pro reálné funkce. Princip činnosti algoritmu je založen na uchovávání populace řešení (agentů). Tito agenti se pohybují ve stavovém prostoru na základě jednoduchého vzorce, který kombinuje pozice ostatních agentů v populaci. Pokud je nová pozice agenta lepší než stávající pozice, je agent přesunut na tuto novou pozici. Pokud není, je nové řešení jednoduše ignorováno. Tento proces je opakován, dokud není splněna ukončovací podmínka [21]. algoritmus DE(,, ) //každý agent reprezentuje řešení Inicializuj náhodně populaci agentů podle parametru velikost populace while not UkončovacíPodmínka do for each agent v populaci do vyber náhodně tři agenty,, tak, aby,,, nebyli stejní Random ) // je náhodně zvolený index je dimenze vygeneruj nového agenta for do Random( ) //rovnoměrné rozdělení na intervalu if or then else end if end for if then end if end for end while Algoritmus pracuje se třemi parametry. Je to parametr diferenciální váha, pravděpodobnost křížení a velikost populace. Použili jsme parametry doporučené v pracích [20; 22]:. Tyto parametry by podle literatury [21] měly být poměrně imunní vůči tzv. problému uvíznutí. Problém uvíznutí spočívá v tom, že v každém kroku algoritmu existuje pouze omezené množství možných kandidátů na nové řešení. Pokud není možné na základě současných řešení vygenerovat žádné lepší řešení, algoritmus uvázne. 5.4 Experimenty a výsledky Vybrali jsme několik testovacích účelových funkcí z testovací množiny navržené Eibenem a Bäckem [23]. Tato množina obsahuje množství dobře definovaných funkcí, na kterých náš algoritmus otestujeme. U každé funkce hledáme její globální minimum. Všechny použité testovací funkce jsou navrženy tak, aby jejich hodnota v globálním minimu byla 0. Vzhledem k nepřesnostem, které vznikají v počítačích při výpočtech s pohyblivou desetinnou čárkou, budeme hodnoty v intervalu považovat za hodnotu 0. Účelové funkce lze charakterizovat na základě jejich vlastností jako je modalita, separabilita a pravidelnost rozmístění jejich minim. Funkce byly vybrány tak, aby byly pokryty významné kombinace těchto vlastností. 23 / 59

Funkce je multimodální, pokud má dvě nebo více lokálních minim. Hledání minima u multimodální funkce je obtížnější, neboť se algoritmus musí vypořádat s lokálními minimy a nalézt minimum globální. Funkce o parametrech je separabilní, pokud může být upravena jako suma n funkcí, kde každá funkce má jediný parametr [24]. Separabilita funkce úzce souvisí s tzv. epistází neboli vzájemnou provázaností parametrů funkce. Epistáze určuje nakolik je příspěvek jednoho genu ke zdatnosti jedince ovlivněn hodnotami v ostatních genech [24]. Optimalizace na neseparabilních funkcích je obtížnější neboť je nutné měnit hodnotu na dvou a více genech najednou. Naopak u seaparabilních funkcí je možno postupně optimalizovat každou proměnnou zvlášť, čímž se úloha podstatně zjednoduší. U neseparabilních toto možné není. Dalším důležitým faktorem je dimenze problému. Abychom zajistili porovnatelnost výsledků, budeme ve všech testech používat počet proměnných. Všechny testovací funkce mají omezený definiční obor intervalem (box constrained). Meze intervalu byly použity stejné pro všechny parametry funkce. Implementace omezení byla provedena tak, že pokud algoritmus vystoupil z daného omezení, vracela účelová funkce velmi vysoké hodnoty. 5.4.1 Konfigurace algoritmů pro srovnávací testy Porovnávali jsme výkon HBMO algoritmu s restartovaným Rosenbrockovým algoritmem a diferenciální evolucí při optimalizaci spojitých funkcí. Nejprve jsme provedli testy HBMO algoritmu s různými parametry. Na základě dosažených výsledků jsme zvolili kombinaci parametrů a tu jsme poté použili u všech funkcí. Porovnání výsledů jednotlivých parametrů je uvedeno v podkapitolách pro jednotlivé účelové funkce. Pro algoritmus HBMO jsme na základě porovnávání jeho výkonů pro různé parametry zvolili toto nastavení:,,, Parametry algoritmu diferenciální evoluce byly nastaveny na tyto hodnoty: Restartovaný Rosenbrockův algoritmus používal parametry: Rosenbrockův algoritmus je restartován pokaždé, když hodnota všech multiplikátorů klesne pod hodnotu. V tuto chvíli je již velmi pravděpodobné, že se algoritmus dostal do lokálního extrému a pokračování v činnosti by nepřineslo žádný výsledek. 5.4.2 Rozšířená Rosenbrockova funkce Tato funkce rozšiřuje původní Rosenbrockovu funkci o dvou proměnných [17] na funkci o proměnných. Rozšířená Rosenbrockova funkce je nekonvexní neseparabilní unimodální funkce používaná pro testování optimalizačních algoritmů. Globální minimum je uvnitř dlouhého úzkého a hlubokého údolí ve tvaru paraboly. Nalezení údolí je triviální, avšak nalezení globálního minima je obtížné. (5.5) 24 / 59

Obr. 5.1: Rosenbrockova funkce 2D Nejprve jsme porovnali výsledky HBMO algoritmu na Rosebrockově funkci s různým nastavením parametrů. Výsledky jsou zobrazeny v grafech (odkazy). Pro lepší přehlednost jsme zobrazení výsledky rozdělili do dvou grafů na základě parametru počet královen. Z grafů je patrné, že stejně jako při řešení 3-SAT problému nemá nastavení parametrů HBMO algoritmu nějak zásadní vliv na jeho efektivitu. Na základě porovnání efektivity HBMO algoritmu s různými parametry na Rosenbrockově a Ackleyho funkci (ta je popsána v odstavci 5.4.4) jsme zvolili následující konfiguraci:,,, Provedli jsme porovnání HBMO s ostatními dvěma algoritmy. Graf 5.4 porovnává rychlost konvergence. 25 / 59

0 40000 80000 120000 160000 200000 240000 280000 320000 360000 400000 440000 480000 520000 560000 600000 640000 680000 720000 760000 800000 840000 880000 920000 960000 1000000 Nejlepší nalezené řešení 0 40000 80000 120000 160000 200000 240000 280000 320000 360000 400000 440000 480000 520000 560000 600000 640000 680000 720000 760000 800000 840000 880000 920000 960000 1000000 Nejlepší nalezené řešení 1,00E+01 1,00E+00 1,00E-01 Porovnání efektivity při různých parametrech - Rosenbrock 10D, QueensCount=1 SpeedDecay=0,9, BroodSize=20, SpermathecaSize=10, SpeedDecay=0,99, BroodSize=20, SpermathecaSize=10, SpeedDecay=0,9, BroodSize=40, SpermathecaSize=10, SpeedDecay=0,99, BroodSize=40, SpermathecaSize=10, 1,00E-02 1,00E-03 1,00E-04 SpeedDecay=0,9, BroodSize=20, SpermathecaSize=20, SpeedDecay=0,99, BroodSize=20, SpermathecaSize=20, SpeedDecay=0,9, BroodSize=40, SpermathecaSize=20, SpeedDecay=0,99, BroodSize=40, SpermathecaSize=20, SpeedDecay=0,9, BroodSize=20, SpermathecaSize=30, SpeedDecay=0,99, BroodSize=20, SpermathecaSize=30, Počet vyhodnocení účelové funkce Obr. 5.2 Porovnání efektivity HBMO-Real s různými parametry na Rosenbrock 10D, parametr QueensCount = 1 1,00E+01 1,00E+00 Porovnání efektivity při různých parametrech - Rosenbrock 10D, QueensCount=4 SpeedDecay=0,9, BroodSize=20, SpermathecaSize=10, SpeedDecay=0,99, BroodSize=20, SpermathecaSize=10, SpeedDecay=0,9, BroodSize=40, SpermathecaSize=10, 1,00E-01 1,00E-02 SpeedDecay=0,99, BroodSize=40, SpermathecaSize=10, SpeedDecay=0,9, BroodSize=20, SpermathecaSize=20, SpeedDecay=0,99, BroodSize=20, SpermathecaSize=20, SpeedDecay=0,9, BroodSize=40, SpermathecaSize=20, SpeedDecay=0,99, BroodSize=40, SpermathecaSize=20, 1,00E-03 SpeedDecay=0,9, BroodSize=20, SpermathecaSize=30, SpeedDecay=0,99, BroodSize=20, SpermathecaSize=30, 1,00E-04 SpeedDecay=0,9, BroodSize=40, SpermathecaSize=30, SpeedDecay=0,99, BroodSize=40, SpermathecaSize=30, Počet vyhodnocení účelové funkce Obr. 5.3 Porovnání efektivity HBMO-Real s různými parametry na Rosenbrock 10D, parametr QueensCount = 5 26 / 59

0 28600 57200 85800 114400 143000 171600 200200 228800 257400 286000 314600 343200 371800 400400 429000 457600 486200 514800 543400 572000 600600 629200 657800 686400 715000 743600 772200 800800 829400 858000 886600 915200 943800 972400 Nejlnižší nalezená hodnota Rosenbrock 10D HBMO medián HBMO nejlepší HBMO nejhorší Rosenbrock medián Rosenbrock nejlepší Rosenbrock nejhorší 1,00E+01 DE medián DE nejhorší DE nejhorší 1,00E+00 1,00E-01 1,00E-02 1,00E-03 1,00E-04 1,00E-05 1,00E-06 1,00E-07 1,00E-08 1,00E-09 1,00E-10 1,00E-11 1,00E-12 1,00E-13 1,00E-14 Počet vyhodnocení funkce Obr. 5.4 Porovnání rychlosti konvergence algoritmů HBMO-Real, restartovaný Rosenbrock a DE na Rosenbrockově funkci Z grafu 5.4 je patrné, že z počátku HBMO algoritmus zpočátku konverguje rychleji než Rosenbrockův algoritmus, neboť na počátku vygeneruje mnoho řešení a některé z nich je s velkou pravděpodobností blízko globálního optima. U diferenciální evoluce nastával při každém pokusu problém uvíznutí. Nejspíš proto, že funkce není symetrická a směr její konvergence není ve směru hlavních os. Algoritmus vždy úspěšně nalezl údolí funkce, ale selhával při nalezení globálního minima. Tabulka 5.1 Nejlepší dosažené řešení na Rosenbrockově funkci po 1000000 vyhodnoceních Median Min Max HBMO 5,01E-05 6,18E-08 6,25E-04 Rosenbrock 9,54E-06 6,16E-07 0,48E-04 DE 8,77 8,14 8,77 V tabulce 5.1 je porovnání mediánů výsledné zdatnosti dělnic HBMO algoritmu. Není velkým překvapením, že na Rosenbrockově funkci funguje Rosenbrockův algoritmus lépe. Tabulka 5.2 Porovnání mediánů zdatnosti dělnic HBMO algoritmu po optimalizaci funkce Rosenbrock Algoritmus dělnice Zdatnost OneParamRandom 20,0 RosenbrockLocalSearch 290,6 27 / 59

5.4.3 Rastriginova funkce Rastriginova funkce [24] vznikla sečtením sférického členu a modulátoru cos. Její kontura je tvořena množstvím lokálních minim, jejichž hodnoty se směrem od globálního optima zvyšují. Funkce je separabilní a multimodální. cos (5.6) Obr. 5.5: Rastriginova funkce 2D Obr. 5.6: Rastriginova funkce 2D - detail Z grafu 5.7 je patrné, že HBMO algoritmus nalezne globální minimum nejrychleji. Diferenciální evoluce funguje také dobře, neboť využívá vnitřní symetrie funkce. Rosenbrockův algoritmus na Rastriginově funkci nefungoval dobře. Je to dáno tím, že funkce je silně multimodální a algoritmus pokaždé uvízl v lokálním minimu. Tabulka 5.3 Porovnání zdatnosti dělnic HBMO algoritmu po 1000000 vyhodnocení funkce Rastrigin Algoritmus dělnice Zdatnost OneParamRandom 3610,7 RosenbrockLocalSearch 3330,9 28 / 59

Rastrigin 10D HBMO medián HBMO nejlepší HBMO nejhorší Rosenbrock medián Rosenbrock nejlepší Rosenbrock nejhorší DE medián DE nejhorší DE nejhorší 1,00E+01 1,00E+00 1,00E-01 Nejlnižší nalezená hodnota 1,00E-02 1,00E-03 1,00E-04 1,00E-05 1,00E-06 1,00E-07 1,00E-08 1,00E-09 1,00E-10 1,00E-11 1,00E-12 1,00E-13 0 29600 59200 88800 118400 148000 177600 207200 236800 266400 296000 325600 355200 384800 414400 444000 473600 503200 532800 562400 592000 621600 651200 680800 710400 740000 769600 799200 828800 858400 888000 917600 947200 976800 1,00E-14 Počet vyhodnocení funkce Obr. 5.7 Porovnání rychlosti konvergence algoritmů HBMO-Real, restartovaný Rosenbrock a DE na Rastriginově funkci Tabulka 5.4 Nejlepší nalezená řešení na Rastrigin 10D po 1000000 vyhodnoceních Median Min HBMO < 1E-14 < 1E-14 Rosenbrock 14,91 1,92 DE < 1E-14 < 1E-14 Max 5,68E-14 25,82 0 5.4.4 Ackleyho funkce Ackleyho funkce [25] obsahuje exponenciální člen, který pokrývá její povrch množstvím lokálních minim. Funkce je multimodální ale na rozdíl od Rastriginovy funkce není separovatelná [23]. (5.7) 29 / 59

Nejlepší nalezené řešení Obr. 5.8 - Ackleyho funkce 2D Obr. 5.9: Ackleyho funkce 2D - detail Porovnali jsme výkon HBMO algoritmu s různými parametry (viz. 5.10). Rychlost konvergence se pro jednotlivé parametry opět moc neliší. 1,00E+01 1,00E+00 1,00E-01 1,00E-02 1,00E-03 1,00E-04 1,00E-05 1,00E-06 1,00E-07 1,00E-08 1,00E-09 1,00E-10 1,00E-11 1,00E-12 1,00E-13 1,00E-14 Porovnání efektivity při různých parametrech - Ackley 10D QueensCount=1, BroodSize=20, SpermathecaSize=10, QueensCount=4, BroodSize=20, SpermathecaSize=10, QueensCount=1, BroodSize=40, SpermathecaSize=10, QueensCount=4, BroodSize=40, SpermathecaSize=10, QueensCount=1, BroodSize=20, SpermathecaSize=30, QueensCount=4, BroodSize=20, SpermathecaSize=30, QueensCount=1, BroodSize=40, SpermathecaSize=30, QueensCount=4, BroodSize=40, SpermathecaSize=30, Počet vyhodnocení účelové funkce Obr. 5.10 Porovnání výsledků pro různé kombinace parametrů na Rastriginově funkci Porovnali jsme výsledky HBMO algoritmu s ostatními algoritmy. Výsledky jsou na grafu 5.11. 30 / 59

0 28600 57200 85800 114400 143000 171600 200200 228800 257400 286000 314600 343200 371800 400400 429000 457600 486200 514800 543400 572000 600600 629200 657800 686400 715000 743600 772200 800800 829400 858000 886600 915200 943800 972400 Nejlnižší nalezená hodnota Ackley 10D HBMO medián HBMO nejlepší HBMO nejhorší Rosenbrock medián Rosenbrock nejlepší Rosenbrock nejhorší DE medián DE nejhorší DE nejhorší 1,00E+01 1,00E+00 1,00E-01 1,00E-02 1,00E-03 1,00E-04 1,00E-05 1,00E-06 1,00E-07 1,00E-08 1,00E-09 1,00E-10 1,00E-11 1,00E-12 1,00E-13 1,00E-14 1,00E-15 Počet vyhodnocení funkce Obr. 5.11 Porovnání rychlosti konvergence algoritmů HBMO-Real, restartovaný Rosenbrock a DE na Ackleyho funkci Tabulka 5.5 Nejlepší nalezená řešení na Ackley 10D po 1000000 vyhodnoceních Median Min Max HBMO < 1E-14 < 1E-14 < 1E-14 Rosenbrock 18,07 15,45 18,67 DE < 1E-14 < 1E-14 < 1E-14 5.4.5 Fletcher-Powellova funkce Fletcher-Powellova funkce [24] je multimodální a neseparovatelná. Na rozdíl od Rastriginovy a Ackleyho funkce má však tato funkce minima náhodně rozmístěna bez jakékoli symetrie. Lokální minima jsou navíc velmi hluboká, takže pravděpodobnost uvíznutí v některém z nich je vysoká. 31 / 59

(5.8) Hodnoty koeficientů, a se generují náhodně. Pro námi testovanou deseti dimenzionální funkci byly vygenerovány tyto hodnoty: (5.9) Obr. 5.12 Graf Fletcher-Powellovy funkce ve 2D Rosenbrockův algoritmus na této funkci vždy dokonvergoval do jednoho z poměrně kvalitních lokálních minim. Diferenciální evoluce fungovala špatně, neboť funkce není nijak symetrická ani nemá žádnou výraznou strukturu ve směru souřadnicových os, a také vždy uvíznul v lokálním minimu. HBMO 32 / 59

0 85800 171600 257400 343200 429000 514800 600600 686400 772200 858000 943800 1029600 1115400 1201200 1287000 1372800 1458600 1544400 1630200 1716000 1801800 1887600 1973400 2059200 2145000 2230800 2316600 2402400 2488200 2574000 2659800 2745600 2831400 2917200 Nejlnižší nalezená hodnota algoritmus fungoval ze všech tří porovnávaných algoritmů nejlépe a ve většině případů nalezl globální minimum. V některých případech však také uvíznul v lokálním extrému. Fletcher-Powell 10D HBMO medián HBMO nejlepší HBMO nejhorší Rosenbrock medián Rosenbrock nejlepší Rosenbrock nejhorší DE medián DE nejhorší DE nejhorší 1,00E+06 1,00E+05 1,00E+04 1,00E+03 1,00E+02 1,00E+01 1,00E+00 1,00E-01 1,00E-02 1,00E-03 1,00E-04 1,00E-05 1,00E-06 1,00E-07 1,00E-08 1,00E-09 1,00E-10 1,00E-11 1,00E-12 1,00E-13 1,00E-14 Počet vyhodnocení funkce Obr. 5.13 Porovnání rychlosti konvergence algoritmů HBMO-Real, restartovaný Rosenbrock a DE na Fletcher-Powellově funkci Tabulka 5.6 Nejlepší nalezená řešení na Fletcher-Powell 10D po 3000000 vyhodnoceních Median Min Max HBMO < 1E-14 < 1E-14 6,82E+01 Rosenbrock 2,10E-03 1,43E-07 0,69 DE 1,03E+5 4,67E+4 1,57E+5 33 / 59

6. Řešení problému obchodního cestujícího Úkolem obchodního cestujícího je navštívit všechny zákazníky v různých městech. Mezi městy jsou silnice. Problém cestujícího je nalézt takové pořadí měst, aby celková ujetá vzdálenost byla co nejmenší. Města a silnice mohou být modelovány jako neorientovaný úplný vážený graf tak, že města tvoří jeho vrcholy a cesty tvoří jeho hrany. Úlohou je nalézt v grafu Hamiltonův cyklus s nejnižším celkovým ohodnocením hran. Při řešení předpokládáme, že váhy hran splňují trojúhelníkovou nerovnost, což platí u drtivé většiny reálných problémů. 6.1 Stochastický problém obchodního cestujícího Ve článku [8] je popsáno použití modifikovaného HBMO algoritmu pro řešení stochastického problému obchodního cestujícího (Probabilistic Traveling Salesman Problem PTSP). PTSP je rozšířením klasického problému obchodního cestujícího (TSP). Je to patrně nejobecnější stochastický problém hledání nejkratší trasy (stochastic routing problem), který může být definován. V PTSP nastává poptávka v jednom městě během jedné cesty cestujícího s pravděpodobností, nebo nenastává poptávka (s pravděpodobností ). Na rozdíl od klasického problému obchodního cestujícího, kde je úkolem najít nejkratší cestu přes všechna města tak, abychom žádné z měst nenavštívili dvakrát, je v PTSP úkolem minimalizovat předpokládanou vzdálenost apriorní trasy, kde každý zákazník vyžaduje návštěvu jen s určitou pravděpodobností. Apriorní trasu si můžeme představit jako šablonu, ve které je zahrnuta posloupnost návštěv všech zákazníků. V konkrétním případě jsou zákazníci navštěvováni v pořadí daném touto posloupností a ti zákazníci, kteří zrovna nepotřebují být navštíveni, jsou jednoduše přeskočeni. PTSP patří k NP-těžkým problémům [8]. Formulace problému je následující [27]: Nechť je úplný graf s vrcholy. Každý vrchol je asociován s pravděpodobností, která udává, zda vrchol bude obsažen v daném řešení. Nechť je apriorní cesta, pak máme-li instanci problému, která nastane s pravděpodobností a pro navštívení zákazníků vyžaduje ujetí vzdálenosti, pak instance problému dostane váhu ve výpočtu požadované vzdálenosti. Délku cesty označíme jako. Naším úkolem je nalézt takovou apriorní cestu přes všech potenciálních zákazníků, která minimalizuje (6.1) což je součet přes všechny podmnožiny. Pravděpodobnost, že podmnožina zákazníků vyžaduje návštěvu je: (6.2) Uvažujme apriorní cestu. Její očekávaná délka je 34 / 59

(6.3) kde je vzdálenost mezi vrcholy a. V implementaci algoritmu [28] je pro inicializaci místo náhodně vygenerované populace použita populace generovaná metodou Greedy Randomized Adaptive Search Procedure (GRASP) [29] spolu s Expanding Neighborhood Search - GRASP (ENS-GRASP) [30]. Tato metoda generuje přípustná řešení pomocí lokální optimalizace. Výchozí poloha královny je určena nejlepším řešením nalezeným pomocí ENS-GRASP. Tento algoritmus vytváří posloupnost měst tak, že začne z náhodně vybraného města a postupně přidává náhodně další města ležící v omezené vzdálenosti od naposledy přidaného města. Operátor křížení používá formu adaptivní paměti [31] pro uchovávání kvalitních řešení nalezených v minulosti. Pokaždé, když je nalezeno kvalitní řešení, je adaptivní paměť aktualizována. Na rozdíl od klasického HBMO algoritmu, se zde kříží genotyp královny spolu s genotypy všech trubců, kteří předali svoji informaci během páření královně, ještě spolu s genotypem uloženým v adaptivní paměti. Do paměti se přidávají jen úseky řešení, které se vyskytují u více jedinců. Jako heuristika lokálního prohledávání (dělnice) byl použit algoritmus Expanding Neighbourhood Search (ENS) [30]. Tento algoritmus je používán pro řešení kombinatorických problémů s uspokojivými výsledky [28]. Testovací data byla převzata z TSPLIB [32]. Algoritmus byl testován na deseti Euklidovských problémech s rozsahem mezi 51 a 1400 uzly. Byly prováděny experimenty s různou pravděpodobností, že obchodník navštíví daný uzel. Parametry všech algoritmů byly voleny tak, aby počet vyhodnocení účelové funkce byl pro všechny experimenty stejný. Při experimentech měl algoritmus HBMO pro PTSP problém (HBMOPTSP) lepší výsledky než dalších šest metaheuristických algoritmů pro všechny instance problému [8]. Mezi těmito metaheuristikami jsou původní algoritmy GRASP a ENS-GRASP, dále pak jednoduchý Particle Swarm Optimization (PSO) algoritmus, hybridní PSO používající ENS-GRAP (HybPSO) a hybridní Multi Swarm Particle Swarm Optimization používající ENS-GRAP (HybMSPSO). Dále bylo provedeno srovnání s metaheuristikou mravenčí kolonie (Ant Colony Optimization) [27; 33]. Pro čtyři instance, kde je pravděpodobnost 0,1, dává algoritmus mravenčí kolonie pacs [27] lepší řešení. Porovnání výsledků je v tabulce 6.1. Úspěšné použití HBMO algoritmu na PTSP problému dává naději dosažení dalších úspěchů při použití tohoto algoritmu na dalších kombinatorických optimalizačních problémech. 35 / 59

Tabulka 6.1 - Porovnání výsledků HBMO s jinými metaheuristickými přístupy. Převzato z [8] Method kroa1002 HBMOPTSP HybMSPSO HybPSO PSO ENS-GRASP GRASP Tabu Search pacs [27] pacs-s [27] pacs+1-shift [27] pacs-s+1-shift-s [27] pacs+1-shift-t [27] pacs + 1-shift-P [27] TSP-ACO [33] Angle-ACO [33] Depth-ACO [33] HS/1-Shift [33] 16581.64 16581.64 16584.32 16584.32 16584.32 16717.81 16658.46 16605.4 16793.61 17723.7 16679.3 16839.5 16681.61 N/M1 N/M1 N/M1 N/M1 HBMOPTSP HybMSPSO HybPSO PSO ENS-GRASP GRASP Tabu Search pacs [27] pacs-s [27] pacs+ 1-shift [27] pacs-s+1-shift-s [27] pacs+1-shift-t [27] pacs+1-shift-p [27] 9071.72 9074.94 9074.94 9076.23 9079.86 9191.29 9116.64 9039.4 9098.05 11715.1 9161.6 9229.9 9084.80 eil1012 ch1502 Probability = 0.5 455.65 5016.82 455.65 5016.85 455.73 5016.85 457.23 5017.23 455.73 5016.85 465.05 5112.86 461.52 5071.51 470.7 5164.3 476.03 5318.64 500.6 5467.1 460.7 5051.3 491.7 5447.5 465.96 5099.03 467.441 N/M1 463.570 N/M1 460.563 N/M1 463.368 N/M1 Probability = 0.1 200.03 2509.98 200.03 2510.11 200.03 2514.31 201.01 2515.08 200.03 2520.10 203.06 2530.27 202.42 2554.59 199.7 2493.6 201.68 2533.73 283.6 3418.3 236.1 2814.2 209.8 2577.8 201.61 2540.74 d1982 rat7832 12492.62 12527.56 12534.92 12537.26 12538.45 12702.50 12606.23 12745.5 13109.46 13539.7 12613.3 13261.4 13502.58 N/M1 N/M1 N/M1 N/M1 7085.48 7094.87 7094.87 7097.33 7097.85 7299.24 7123.76 7334.1 7423.20 7785.5 7261.4 7427.4 7346.53 N/M1 N/M1 N/M1 N/M1 7490.09 7504.94 7504.94 7512.12 7525.03 7564.90 7525.03 7556.1 7584.43 9312.1 8028.3 7748.7 7650.94 3616.44 3616.44 3618.01 3621.21 3618.01 3737.69 3705.31 3368.9 3472.58 4619.2 3514.5 3488.3 3440.87 1 (nebylo zmíněno) 2 název testovacího problému z TSPLIB [32] 6.2 Implementace HBMO pro TSP Rozhodli jsme se implementovat algoritmus pro řešení klasického problému obchodního cestujícího (Traveling Salesman Problem - TSP). Reprezentace řešení a použité operátory mutace jsou inspirovány řešením popsaným v článku [8]. 6.2.1 Reprezentace a výpočet zdatnosti Každé řešení představuje permutaci měst. Genotyp tvoří pole celých čísel, které udávají čísla měst. Města jsou v poli v tom pořadí, v jakém je má cestující navštívit. Vzdálenost mezi i-tým městem posloupnosti a následujícím městem posloupnosti budeme označovat jako. Pro každé řešení je možno spočíst jeho celkovou délku jako součet velikostí těch hran, které leží vždy mezi dvěma po sobě navštívenými městy (6.9). Je důležité nezapomenout na hranu, po které se cestující vrátí zpět do města, ze kterého cestu započal. (6.4) V článku o aplikaci HBMO algoritmu na PTSP [8] se zdatnost jedince počítá jako rozdíl délky aktuálního řešení a nejhoršího řešení v populaci. Toto řešení však vedlo k tomu, že zdatnost nejlepšího řešení nerostla v průběhu optimalizace monotónně. Výpočet jsme upravili tak, že zdatnost řešení je počítána 36 / 59

jako rozdíl délky trasy tohoto řešení a délky trasy řešení vynásobené koeficientem 1,2. Řešení je první řešení, které je náhodně vygenerované po spuštění optimalizace. Řešení delší než 1,2 násobek délky řešení mají zdatnost 0 a nemají tak šanci být vybrány ruletovou selekcí. Pravděpodobnost, že by takto bylo zahozeno kvalitní řešení, je však malá. Experimentálně jsme zjistili, že při tomto způsobu výpočtu zdatnosti (6.9), dosahuje algoritmus o trochu lepší výsledky, než při výpočtu zdatnosti jako převrácené hodnoty vzdálenosti., (6.5) Generování nového počátečního řešení se provádí tak, že se do posloupnosti přidá náhodně vybrané město. Pak jsou postupně přidávána další města, která jsou vybírána na základě jejich vzdálenosti k naposledy přidanému městu. Výběr dalšího města probíhá vždy náhodně ze skupiny prvních měst, které jsou nejblíže naposledy přidanému městu a dosud nebyla přidána. Parametr byl při experimentech nastaven na hodnotu. 6.2.2 Operátor mutace přepojením Operátor mutace přepojením funguje tak, že obrátí pořadí měst na vybraném úseku posloupnosti. Princip je demonstrován na obrázku 6.1. 4 16 10 15 1 2 8 9 14 12 21 27 23 11 18 4 16 10 15 12 14 9 8 2 1 21 27 23 11 18 Obr. 6.1 Princip mutace přepojením posloupnosti V naší implementaci jsou použity různé varianty tohoto operátoru lišící se ve způsobu, jak jsou vybírány koncové hrany úseku (v obrázku označeny červeně). Varianta SwapTwo reversuje pořadí pouze dvou následujících měst. Dvojice měst je vybrána náhodně. Varianta SwapFour reversuje pořadí na úseku maximální délky 4. Poloha úseku je opět vybrána náhodně. Varianta SwapRandom reversuje zcela náhodný úsek posloupnosti. Varianta SwapByDistance vybere první koncový bod reversovaného úseku pomocí ruletového kola, kde velikost slotu rulety je délka cesty trasy mezi městy v koncové hraně. Tato spojnice mezi městy, podle jejíž délky se vybírá, po prohození zanikne. Druhá koncová hrana je vybrána tak, aby celková trasa po přepojení byla co nejkratší. Jedná se o variantu algoritmu 2-opt [34]. Varianta SwapByDistanceRandomized se podobá SwapByDistance. První město je vybráno stejným způsobem. Druhé město je vybráno pomocí ruletového kola, kde velikost slotu pro každý koncový bod je úměrná zkrácení celkové trasy po přepojení. 6.2.3 Operátor mutace RuinAndRecreate Mutace RuinAndRecreate pracuje tak, že nejprve část řešení zcela zruší a poté ho znovu sestaví. Rušení řešení probíhá tak, že všechna města nacházející se v určité oblasti jsou odebrána z posloupnosti měst, 37 / 59

jako kdyby již neměla být cestujícím navštěvována. Následuje fáze znovusestavení, ve které je každé odebrané město postupně přidáno do posloupnosti na takovou pozici, aby se délka trasy co nejméně prodloužila. Pořadí, v jakém jsou odebraná města přidávána, je náhodné [35]. Oblast rušení je dána kružnicí. Všechna města nacházející se uvnitř této kružnice jsou z cesty odebrána. Středem kružnice je náhodně vybrané město. Poloměr kružnice je spočten podle kde Random je generátor rovnoměrného náhodného rozdělení, je délka hrany mezi vybraným městem a městem následujícím v posloupnosti a je parametrem algoritmu, který určuje velikost mutace. funkce RuinRecreate(původní řešení radiusmod) é ě Random č ě é é ě é ě ů í ř š í 2 * é * Random odebraná města města která mají vzdálenost od vybrané město menší než radius //nové řešení vznikne odeberáním měst z posloupnosti původního řešení nové řešení původní řešení odebraná města for i = 1.. Počet odebraných měst do město náhodně vybereme jedno město z odebraná města //odebereme město z množiny odebraných měst odebraná města odebraná města město vlož město do posloupnosti nové řešení na takovou pozici, aby se celková délka nového řešení zvýšila co nejméně end for return nové řešení (6.6) 6.2.4 Svatební let Před počátkem svatebního letu je energie královny inicializována na hodnotu a rychlost královny na hodnotu (což je délka nejlepšího dosud nalezeného řešení). Koeficient úbytku rychlosti byl nastaven na hodnotu 0,9. V každém kroku svatebního letu je vygenerován genotyp trubce. Pokud by byl genotyp generován stejným způsobem, jako je tomu při generování genotypů královen na počátku algoritmu, trubci by nebyli příliš kvalitní a konvergence by se po několika svatebních letech velmi zpomalila. Trubci jsou tedy podobně, jako je tomu u HBMO pro spojité problémy, generovány z genotypů královen. Genotyp trubec vznikne tak, že v každém kroku letu je ze seznamu královen náhodně vybrána jedna královna a na její genotyp je aplikována mutace. Pokud je vybrána stejná královna, která právě provádí svatební let, je provedena mutace přepojením SwapFour. Pokud je vybrána jiná královna, provádí se mutace SwapTwo. Královna se s vygenerovaným trubcem páří na základě její aktuální rychlosti a zdatnosti trubce. Pravděpodobnost páření se spočte podle (2.1). Potomci se pak generují křížením genotypu královny, která je vybraná ruletou podle její zdatnosti, a genotypu náhodně vybraného z její spermatéky. V případě, že je křížením vzniklý jedinec obsahuje stejnou posloupnost měst jako královna (jeho matka), je genotyp potomka zmutován pomocí operátoru RuinAndRecreate s velkým poloměrem 38 / 59

destrukce. Tímto je zajištěna vysoká pravděpodobnost, že potomek nebude mít shodný genotyp jako královna. Tato podmínka byla přidána pro ošetření stavu, kdy všechny královny zkonvergovaly do lokálního minima a další vývoj optimalizace se zastavil. 6.2.5 Operátor křížení Operátor křížení vytváří genotyp nového jedince z genotypu královny a genotypu trubce pomocí hladové (greedy) strategie. Nejprve náhodně nastaví index v posloupnosti měst. Poté do posloupnosti měst potomka přidá město, které se nachází na nastaveném indexu v posloupnosti náhodně vybraného rodiče. Po této inicializaci je spuštěn cyklus, v němž je v každém jeho kroku index inkrementován a do posloupnosti měst potomka je přidáno jedno město. Snahou je vybrat to město, které je na aktuálním indexu v posloupnosti jednoho z rodičů a je blíže naposledy přidanému městu. Algoritmus musí zajistit, aby nebylo přidáno takové město, které již bylo přidáno. Pokud již byla přidána obě města na aktuálním indexu obou rodičů, je přidáno jakékoli město, které ještě nebylo přidáno a je nejblíže poslednímu přidanému městu. funkce TspGreedyCrossover(královna, trubec) index Random(1, počet měst) //vybereme náhodně město z posloupnosti královny nebo trubce přidané město Random({královna, trubec})[index] //potomek je nová posloupnost do které přidáme první město potomek {přidané město} for i = 1.. počet měst do kandidát královna [index] //přiřadí kandidátu město z posloupnosti královny na pozici dané indexem kandidát trubec [index] if Vzdálenost poslední město, kandidát Vzdálenost poslední město, kandidát ) and potomek kandidát then přidané město kandidát else if potomek kandidát then přidané město kandidát else přidané město nejbližší město od posledního města v posloupnosti potomka end if //přidáme město na konec posloupnosti měst z potomka potomek potomek přidané město end for return potomek 39 / 59

6.2.6 Dělnice Dělnice jsou reprezentovány algoritmy lokálního prohledávání, které se vzájemně liší jen ve způsobu mutace. funkce Improve(řešení, ) for do á mutace ř š í if( á ř š í then ř š í á end if end for return řešení Použité mutace jsou: SwapTwo, SwapFour, SwapRandom, SwapByDistance a třikrát RuinAndRecreate každá s jiným použitým parametrem. Zdatnost dělnic se aktualizuje stejným způsobem jako u implementace algoritmu pro spojité problémy (6.7). (6.7) 40 / 59

6.2.7 Algoritmus HBMO-TSP v pseudokódu algoritmus HBMO-TSP (,,, ) for q = 1.. počet královen do náhodně vygeneruj genotyp královny q //generování probíhá postupným přidáváním měst //první město je vybráno náhodně //další města jsou náhodně vybírána vždy z prvních dvou nejbližších měst pomocí náhodně vybrané dělnice w vylepši genotyp královny přidej královnu q do Q end for prvních nejlepších královen z zdatnost všech dělnic se zvýší o tolik o kolik dělnice zvýšila zdatnost potomků for i = 0.. maximální počet svatebních letů do for each q pro každou královnu z Q do //délka nejlepšího dosud nalezeného řešení / while and spermatéka není plná do //genotyp trubce vznikne zkopírováním genotypu jedné z královen genotyp trubce d náhodně vybraná královna z Q //pokud je genotyp trubce stejný jako královna se kterou se má pářit if then Swap our else SwapTwo end if if Random then //splněna podmínka páření (2.1) přidej genotyp d do spermatéky královny q end if end while end for each for do vyber královnu q z Q pomocí ruletového kola (velikost slotu ~ pořadí náhodně vyber genotyp d ze spermatéky královny q vygeneruj potomka TspGreedy rossover if á then //pokud je genotyp stejný provedeme velkou mutaci end if vyber dělnici ze seznamu dělnic W pomocí ruletového kola //(velikost slotu rulety ~ zdatnost) dělnice se pokusí vylepšit potomka b pomocí lokálního prohledávání přidáme nového potomka do seznamu potomků end for zdatnost všech dělnic se zvýší o tolik o kolik dělnice zvýšila zdatnost potomků while nejlepší potomek je lepší než nejhorší královna do nahraď nejméně zdatnou královnu nejlepším potomkem odstraň nejlepšího potomka ze seznamu potomků end while vymažeme seznam potomků end for 41 / 59

6.3 Implementace umělé mravenčí kolonie pro TSP Pro porovnání výkonu HBMO-TSP jsme implementovali algoritmus umělé mravenčí kolonie (ant colony optimization ACO) na základě prací [36] [5]. Princip tohoto algoritmu je inspirován mravenci při hledání nejkratší cesty mezi potravou a mraveništěm. Svojí cestu označují feromony, které fungují jako paměť prostředí. Při spuštění algoritmu se každé hraně grafu přiřadí hodnota feromonu, která se pak v průběhu optimalizace mění. Algoritmus v každém kroku vygeneruje trasu každého mravence. Počet mravenců je určen vstupním parametrem. Generování trasy začne u náhodně zvoleného města a postupně přidává další města. Město pro přidání je vybráno na základě jeho vzdálenosti od posledního města a na základě síly feromonu na hraně grafu mezi přidávaným a posledním přidaným městem. Pravděpodobnost přidání města, které následuje po naposledy přidaném městě se spočet podle á á (6.8) kde je vstupní parametr nastavující relativní sílu feromonu. Po vygenerování tras všech mravenců je vybrána nejkratší z nich a na základě ní je navýšena hodnota feromonu pro každou hranu, kterou trasa prochází. Tím se zvýší pravděpodobnost, že v budoucnu bude použita část této cesty. Pro hrany, kudy nejkratší trasa neprochází, je hodnota feromonu snížena (tzv. vypařování). Aktualizace feromonových stop probíhá tak, že se na každé hraně mezi městy i a j změní hodnota feromonu. Pokud je tato hrana zahrnuta v nejkratší trase, je hodnota. Pokud není součástí nejlepší trasy, je. Parametr určuje rychlost vypařování feromonu. (6.9) algoritmus ACO-TSP (, ) inicializace feromonu na všech hranách inicializace mravenců while not UkončovacíPodmínka do for each in do Random end while while end while end for each do vybereme z s pravděpodobností Vstupní parametry jsme nastavili podle hodnot uvedených v článku [5]:,, 42 / 59

6.4 Výsledky TSP Testování bylo prováděno na zadání měst převzatého z TSPLIB [32]. Pro testování jsme vybrali problémy eil51 obsahující 51 měst a eil101 obsahující 101 měst. Pro ilustraci jsme zobrazili optimální řešení obou problémů na obrázcích (Obr. 6.2 a Obr. 6.3). Pro problém eil51 má nejkratší známá trasa délku 426, pro problém eil101 délku 629 [32]. Obr. 6.2 Optimální řešení eil51 Obr. 6.3 Optimální řešení eil101 Porovnali jsme několik nastavení parametrů na problému eil51. Zjistili jsme, že nastavení parametrů má opět malý vliv na efektivitu algoritmu. Prezentované výsledky jsou pro tuto konfiguraci: Provedli jsme 50 spuštění HBMO-TSP algoritmu na oba problémy. Algoritmus pokaždé dokonvergoval k nejlepšímu známému řešení během 500000 vyhodnocení délky trasy. Grafy (6.4 a 6.5) ukazují nejlepší, nejhorší a medián konvergence HBMO-TSP algoritmu a ACO-TSP algoritmu pro daný počet vyhodnocení. Grafy pro větší přehlednost neukazují v x-ové ose celý průběh 500000 vyhodnocení, ale jen nejzajímavější část na počátku. Z grafů je patrné, že HBMO-TSP algoritmus si vedl značně lépe než ACO-TSP, který velmi často skončil v lokálním optimu. Je to především díky velmi účinné heuristice RuinAndRecreate. ACO-TSP algoritmus by mohl být vylepšen také zahrnutím nějaké heuristiky lokálního prohledávání. Tabulka 6.2 Porovnání zdatnosti dělnic HBMO-TSP algoritmu po 500000 vyhodnocení problému eil51 Algoritmus dělnice Průměrná zdatnost TwoSwapByDistance 1300,9 ± 579,9 TwoSwapByDistanceRandom 369,3 ± 155,4 TwoSwapFour 104,8 ± 54,2 TwoSwapRandom 92,4 ± 45,7 TspTwoSwapTwo 63,2 ± 38,9 RuinRecreate, step=2 1844,1 ± 729,4 RuinRecreate, step=4 1815,0 ± 690,4 RuinRecreate, step=8 1660,4 ± 667,7 43 / 59

0 1000 2000 3000 4000 5000 6000 7000 8000 9000 10000 11000 12000 13000 14000 15000 16000 17000 18000 19000 20000 21000 22000 23000 24000 25000 26000 27000 28000 29000 Délka nejktratší nalezené trasy 0 1000 2000 3000 4000 5000 6000 7000 8000 9000 10000 11000 12000 13000 14000 15000 16000 17000 18000 19000 20000 21000 22000 23000 24000 25000 26000 27000 28000 29000 Délka nejktratší nalezené trasy Konvergence na eil51 HBMO medián HBMO nejlepší HBMO nejhorší 586 ACO medián ACO nejlepší ACO nejhorší 566 546 526 506 486 466 446 426 Počet vyhodnocení délky trasy Obr. 6.4 Nejlepší dosažené řešení v závislosti na počtu vyhodnocení délky trasy pro zadání eil51 Konvergence na eil101 HBMO medián HBMO nejlepší HBMO nejhorší 977 ACO medián ACO nejlepší ACO nejhorší 927 877 827 777 727 677 627 Počet vyhodnocení délky trasy Obr. 6.5 Nejlepší dosažené řešení v závislosti na počtu vyhodnocení délky trasy pro zadání eil101 44 / 59

7. Testovací platforma Pro testování jsme implementovali testovací platformu v jazyce C#. Platforma umožňuje dávkové zpracování optimalizačních úloh a jejich pozdější vyhodnocování. Je možné tak například zadat spojitou optimalizaci Ackleyho funkce s počty královen 1 a 5, velikostí spermatéky 20 a 40 s tím, že pro každou kombinaci parametrů bude provedeno 50 pokusů. Program pak automaticky provede všechny pokusy a uloží výsledky do relační databáze. Později je možné tyto výsledky analyzovat. Uživatelské rozhraní používá grafické rozhraní Windows Forms. Celá aplikace je napsána pro operační systém Windows, ke svému běhu vyžaduje nainstalovaný.net Framework verze 4.0. Pro ukládání dat byla použita databáze MS SQL 2008. Práce s databází probíhá výhradně přes jednoduchým objektově-relačním mapováním LINQ to SQL. Tabulky databáze jsou díky ní reprezentovány jako silně typové kolekce objektů, na které je možné se dotazovat prostřednictvím technologie LINQ (Language Integrated Natural Query). Výhoda tohoto přístupu spočívá ve snadnosti jeho konfigurace a v tom, že dotazy do databáze jsou kompletně zpracovány překladačem jazyka C# a většina případných chyb je odhalena již během překladu. Aplikace vyžaduje připojení k SQL Serveru pro své spuštění. Podrobnější popis instalace a používání aplikace je uveden v příloze B. Aplikace je navržena objektově. Lze ji snadno rozšiřovat o nové typy optimalizačních problémů a algoritmů. Popis implementace dalších algoritmů je popsán v příloze C. 45 / 59

8. Náměty pro další práci Během práce jsme objevili mnoho způsobů, jak by HBMO algoritmus mohl být modifikován. Například by při výběru genotypu trubce ze spermatéky místo zcela náhodného výběru mohl být použit výběr pomocí ruletového kola nebo pořadová selekce. Obrovský prostor pro vylepšování algoritmu spočívá v implementaci dalších heuristik, které je možno do algoritmu integrovat jakožto dělnice. Utváření nových jedinců a jejich vylepšování dělnicemi spotřebuje podstatnou část z celkového výpočetního času. Značné množství práce je zahozeno tím, že do každého nového cyklu algoritmu přežívají pouze královny a všichni ostatní jedinci jsou odstraněni. Pokud by kromě královen byla v průběhu algoritmu udržována větší generace méně zdatných jedinců, mohla by být využita operátory křížení a mutace nebo pro generování trubců během svatebního letu. Varianta HBMO algoritmu pro spojité problémy by mohla použít heuristiku diferenciální evoluce jakožto jedné z dělnic. Jako populace diferenciální evoluce by se dala použít množina královen sjednocená s množinou jedinců vyřazených v předchozím cyklu algoritmu. Mohl by se tak zlepšit výkon na funkcích s pravidelným rozložením extrémů. 46 / 59

9. Závěr V této práci byly shrnuty výsledky dosažené algoritmem Optimalizace pářením včelí královny. Algoritmus byl implementován a byla otestována jeho efektivita při řešení jak spojitých, tak diskrétních optimalizačních problémů. Při testování algoritmu na problému splnitelnosti booleovských formulí bylo dosaženo lepších výsledků než uvedených v literatuře [6]. HBMO algoritmus byl upraven pro řešení problémů s reálnými proměnnými. Byly provedeny experimenty na účelových funkcích s různými vlastnostmi. Výsledky byly porovnány s diferenciální evolucí a restartovaným Rosenbrockovým algoritmem. HBMO algoritmus dokázal nalézt globální optima na všech testovaných funkcích. Ostatní algoritmy nacházely globální optimum vždy jen na některých funkcích. Restartovaný Rosenbrockův algoritmus nalezne globální optimum, pokud funkce neobsahuje příliš mnoho lokálních extrémů. Diferenciální evoluce funguje dobře na funkcích, které mají minima rovnoměrně rozmístěná a mají výraznou strukturu ve směru souřadnicových os. Dále byla implementována varianta HBMO algoritmu pro řešení problému obchodního cestujícího. Úspěšně byla otestována na několika problémech převzatých z TSPLIB [32]. Výsledky byly výrazně lepší než u algoritmu umělé mravenčí kolonie (ACO). Výrazný rozdíl byl způsoben převážně požitím informované heuristiky RuinAndRecreate v rámci HBMO. Zajímavým zjištěním také je, že efektivita algoritmu se ani u jednoho testovaného typu problému zásadně nemění s různým nastavením parametrů. Jedna z největších výhod HBMO algoritmu spočívá v možnosti použití několika různých heuristik pro lokální prohledávání s tím, že po několika iteracích dává HBMO algoritmus přednost té heuristice, která dosáhla lepších výsledků. Tímto způsobem se algoritmus adaptuje na vlastnosti řešeného problému. Pokud je známo několik různých heuristických přístupů řešení určitého typu problému, a není předem jasné, který přístup bude nejefektivnější, není problém jich implementovat několik a nechat HBMO algoritmus, ať vybere nejlepší heuristiku za nás. V poslední kapitola je věnována námětům na další rozšíření a případná vylepšení algoritmu. 47 / 59

10. Použitá literatura [1] BLACK, P. E. Algorithms and Theory of Computation Handbook. optimization problem, in Dictionary of Algorithms and Data Structures. [Online] U.S. National Institute of Standards and Technology, 27. 04 2009. [Citace: 20. 11 2010.] http://xw2k.nist.gov/dads/html/optimization.html. [2] WEISSTEIN, E. W. Traveling Salesman Problem. From MathWorld--A Wolfram Web Resource. [Online] [Citace: 28. 11 2010.] http://mathworld.wolfram.com/travelingsalesmanproblem.html. [3] KENNEDY, J. a EBERHART, R. Particle swarm optimization. Neural Networks, 1995. Proceedings., IEEE International Conference on. 1995, Sv. 4, stránky 1942-1948. [4] Fathian, M., Amiri, B. a Maroosi, A. Application of Honey Bee Mating Optimization Algorithm on Clustering. 2007, Sv. 190, stránky 1502-1513. [5] DORINGO, M. a GAMBARDELLA, L. M. Ant colony system: a cooperative learning approach to the traveling salesman problem. Evolutionary Computaion. 1997, Sv. 1, 1, stránky 53-66. [6] ABBASS, H. A. Marriage in Honey Bees Optimization (MBO): A Haplometrosis Polygynous Swarming Approach. Proceedings of the 2001 Congress on Evolutionary Computation, 2001. 2001, Sv. 1, stránky 207-214. [7] Haddad, O., Afshar, A. a Marino, M. Honey-Bees Mating Optimization (HBMO) Algorithm: A New Heuristic Approach for Water Resources Optimization. Water Resources Management. 2006. [8] MARINAKIS, Y. a MARINAKI, M. A Hybrid Honey Bees Mating Optimization Algorithm for the Probabilistic Traveling Salesman Problem. IEEE Congress on Evolutionary Computation (CEC 2009). 18. 5 2009, stránky 1762-1769. [9] Jakuš, Miroslav. O včelách. [Online] [Citace: 19. 04 2010.] http://vcely.euweb.cz/central.htm. [10] Dietz, A. Evolution. Bee genetics and breeding. 1986, stránky 3-22. [11] ADAMS, J., a další. Estimation of the number of sex alleles and queen matings from diploid male frequencies in a population of apis mellifera. Genetics. 1977, Sv. 86, stránky 583-596. [12] KIRKPATRICK, S., GELATT, C. D. a VECCHI, M. P. Optimization by Simulated Annealing. Science. 1983, Sv. 220, stránky 671-680. [13] COOK, S. The complexity of theorem proving procedures. Proceedings of the Third Annual ACM Symposium on Theory of Computing. 1971, stránky 151-158. [14] GENT, I. a WALSH, T. The satisfiability constraint gap. Artifical Intelligence. 1996, Sv. 81, 1-2, stránky 59-80. [15] COOK, S. a MITCHELL, D. Finding hard instances of satisfiability problem: A survey. Satisfiability problem: theory and applications : DIMACS workshop, March 11-13, 1996. 1996, Sv. 35, stránky 1-16. 48 / 59

[16] RUSELL, S. a NORVIG, P. Artificial Intelligence: A Modern Approach. 1st edition. New Jersey, USA : Prentice Hall, 1995. stránky 53-122. ISBN 0-13-604259-7. [17] ROSENBROCK, H. H. An automatic method for finding the greatest or least value of a function. The ComputerJournal. 1960, Sv. 3, stránky 175 184. [18] POŠÍK, P. BBOB-Benchmarking the Rosenbrock s Local Search Algorithm. GECCO '09: Proceedings of the 11th annual conference companion on Genetic and evolutionary computation conference. 2009. [19] BAU, D. a TREFETHEN, L. N. Numerical linear algebra. SIAM, 1997. stránky 56-60. ISBN 0898713617. [20] STORN, R. a PRICE, K. Differential evolution - simple and efficient heuristic for global optimization over continuous spaces. Journal of Global Optimization. 1997, Sv. 11, stránky 341-359. [21] ZELINKA, I. Kapitola 6. Diferenciální Evoluce. Umělá inteligence (4), Praha : Academia, 2003. stránky 176-203. [22] PEDERSEN, M. Tuning & Simplifying Heuristical Optimization. Thesis for the degree of Doctor of Philosophy, University of Southampton, 2010. [23] EIBEN, A. E. a BÄCK, T. Empirical investigation of multi-parent recombination operators in evolution strategies. Evolutionary Computation. 1997, Sv. 5, stránky 347-365. [24] DOMINGO, O. B., CÉSAR, H. a NICOLÁS, G. Benchmark Problems. A Crossover Operator for Evolutionary Algorithms Based on Population Features. [Online] 2005. [Citace: 20. 11 2010.] http://www.cs.cmu.edu/afs/cs/project/jair/pub/volume24/ortizboyer05a-html/node6.html. [25] BÄCK, T. Evolutionary Algorithms in Theory and Practice. Oxford University Press, Inc., 1995. stránky 137-148. 978-0-19-509971-3. [26] POWELL, W. B., JAILLET, P. a ODONI, A. Stochastic and dynamic networks and routing. [editor] M. O. Ball, a další. Network Routing, Handbooks in Operations Research and Management Science. 1995, Sv. 8, stránky 141-295. [27] BIANCHI, L. Ant Colony Optimization and Local Search for the Probabilistic Traveling Salesman Problem: A Case Study in Stochastic Combinatorial Optimization. Belgium : Phd. Thesis, University Libre de Bruxelles, 2006. [28] Marinakis, Y. a Marinaki, M. A Hybrid Honey Bees Mating Optimization Algorithm for the Probabilistic Traveling Salesman Problem. IEEE Congress on Evolutionary Computation (CEC 2009). 2009. [29] Feo, T. A. a Resende, M. G. Greedy randomized adaptive search procedure. Journal of Global Optimization. 1995, Sv. 6, stránky 109-133. [30] Marinakis, Y., Migdalas, A. a Pardalos, P. M. Expanding neighborhood GRASP for traveling salesman problem. Optimization Letters. 2007, Sv. 2, stránky 351-361. 49 / 59

[31] Rochat, Y. a Taillard, E. D. Probabilistic diversification and intensification in local search for vehicle routing. Journal of Heuristics. 1995, Sv. 1, stránky 147-167. [32] REINELT, G. TSPLIB. Ruprecht-Karls-Universitat Heidelberg. [Online] [Citace: 28. 04 2010.] http://www.iwr.uni-heidelberg.de/groups/comopt/software/tsplib95/. [33] BRANKE, J. a GUNTSCH, M. Solving the probabilistic TSP with ant colony optimization. Journal of Mathematical Modelling and Algorithms. 2003, Sv. 3, stránky 403-425. [34] VERDEHOEVEN, M. G., AARTS, E. a SWINKELS, P. A parallel 2-opt algorithm for the Traveling Salesman Problem. Future Generation Computer Systems. 1995, Sv. 11, 2, stránky 175-182. [35] SCHRIMPF, G., a další. Record Breaking Optimization Results Using Ruin and Recreate Principle. Journal of Computer Physics. 2000, Sv. 159, stránky 139-171. [36] KUČÍK, A. Přepínání metaheuristik. Praha : Diplomová práce, České vysoké učení technické v Praze, Fakulta elektrotechnická. Vedoucí diplomové práce Jan Koutník, 2010. [37] FEO, T. A. a RESENDE, M. G. Greedy randomized adaptive search procedure. Journal of Global Optimization. 1995, Sv. 6, 2, stránky 109-133. [38] REINELT, G. The Travelling Salesman: Computational Solutions for TSP Applications. Springer- Verlag, 1994. ISBN:3-540-58334-3. [39] MARINAKIS, Y., MIGDALAS, A. a PARDALOS, P. M. Expanding neighborhood GRASP for traveling salesman problem. Computational Optimization and Applications. 2005, Sv. 32, 3, stránky 231-257. 50 / 59

A. Obsah CD K této práci je přiloženo CD, které obsahuje tyto adresáře: bin Release sestavení platformy pro testování db_empty backup prázdné databáze db_tests backup databáze obsahující veškeré testy a jejich výsledky source zdrojové kódy platformy pro testování Dále pak obsahuje text této diplomové práce ve formátu pdf. 51 / 59

B. Použití programu Program vyžaduje pro svůj běh knihovnu.net Framework verze 4.0, který je volně stažitelný z http://msdn.microsoft.com/en-us/netframework/aa569263 a databázový server MS SQL 2008 R2. Stačí verze Express volně stažitelná z http://www.microsoft.com/express/database/. Po nainstalování databázového serveru je nutno přidat databázi. Nejjednodušší způsob získání databáze je použití zálohy prázdné databáze přiložené na CD (soubor \db_empty\empty.bak) a provedení příkazu RESTORE (návod zde: http://www.promotic.eu/cz/pmdoc/subsystems/db/mssql/statmn/restoredatabase.htm nebo pomocí SQL Management Studia: http://msdn.microsoft.com/en-us/library/ms177429.aspx). Program lze nainstalovat jednoduchým zkopírováním z CD. Před jeho spuštěním je třeba nastavit připojení k databázi (connection string). To lze provést v souboru Optimization.Platform.exe.config. Přenastavit je potřeba parametr Data Source na jméno SQL serveru (nejčastěji bývá {jméno počítače}\sqlexpress ) a parametr Initial Catalog na jméno databáze. Po spuštění programu se zobrazí seznam již uložených optimalizačních úloh. Okno se seznamem je na obrázku B.1. Zde je možné vytvářet nové úlohy, spouštět již uložené nebo zobrazovat výsledky již dokončených úloh. Uložené úlohy Nová úloha Nová úloha vytvořená ne stejnou konfigurací jako právě vybraná úloha Obnoví seznam úloh Otevře výsledky vybrané úlohy Spustí vybranou úlohu Smaže vybranou úlohu Přejmenuje vybranou úlohu Obr. B.10.1 Obrazovka programu po jeho spuštění Postup vytvoření a spuštění úlohy je jednoduchý. Po kliknutí na tlačítko New se otevře dialog zobrazený na obrázku B.2. V něm se vybere postupně problém, optimalizační algoritmus a vstupní číselné parametry. Optimalizační problémy a algoritmy nabízené v rozbalovacích seznamech se vyhledají automaticky ze všech dynamických knihoven ležících v adresáři, ze kterého je aplikace spuštěna. Pro porovnávání různých nastavení parametrů je možno v rámci jedné úlohy provést spuštění algoritmu s více konfiguracemi najednou. Do textového pole parametru je možno zadat více hodnot 52 / 59

najednou. To lze provést tak, že se hodnoty zapíšou ve formátu #hodnota1 hodnota2. Text tedy začíná dvojkřížkem # a hodnoty se oddělují svislítkem. Pokud se takto zadá několik různých parametrů, budou provedeny všechny jejich kombinace. Dále je třeba doplnit jméno úlohy a počet opakování spuštění. Úloha je uložena po stisknutí tlačítka Save. Po uložení je možné ji spustit tlačítkem Run v okně se seznamem úloh. Úlohu, která již doběhla, můžeme otevřít tlačítkem Open a prohlížet výsledky v rozhraní na obrázku B.2. Okno obsahuje několik záložek. Záložka Convergence zobrazuje běh s nejrychlejší konvergencí, nejpomalejší konvergencí a průměrem a mediánem všech běhů. Záložka NumResult ukazuje číselné výsledky - například maximální a minimální čas jednoho běhu v milisekundách. Záložky TwoParamTable a ParamComparison slouží pro porovnávání nastavení s různými parametry. TwoParamTable porovnává výsledky pro různé hodnoty dvou parametrů. Nejlepší dosažené řešení za určitý počet vyhodnocení vypíše do matice, kde její sloupce tvoří hodnoty jednoho parametru a řádky hodnoty druhého parametru. ParamComparison porovnává rychlost konvergence (medián ze všech běhů) pro různé konfigurace parametrů. Poslední záložka Trials zobrazuje jednotlivé běhy úlohy. V pravé části okna je přepínání režimu zobrazení. Kromě výchozího nastavení Convergence, které zobrazuje přímo hodnoty účelové funkce, je ještě nastavení SAT, které zobrazuje počet vyřešených SAT problémů tedy počet běhů, které nalezly ohodnocení, pro které je počet nesplněných klausulí nulový. Dále jsou v levé části zobrazeny vstupní parametry algoritmu. Pokud je použita vícenásobná hodnota parametru, je možno zde filtrovat výsledky pro jednotlivé hodnoty. Výběr optimalizačního problému Výběr optimalizačního algoritmu Uloží zadání Název úlohy Vstupní parametry algoritmu. Pokud zadání začíná znakem #, použijí se postupně jednotlivé hodnoty oddělené znakem. V tomto případě je použit parametr BroodSize s hodnotami 20 a 40. Počet opakování se stejnými parametry Obr. B.10.2 Dialog pro vytvoření nové optimalizační úlohy 53 / 59

Počet okrajových hodnot, které budou vyloučeny Hustota výsledné tabulky Způsob zobrazení výsledků Omezí počet výsledků tak, že se zobrazí jen hodnoty pro počty ohodnocení menší než zadaná hodnota Vstupní parametry. U vícenásobného vstupního parametru je možnost filtrování Obr. B.10.3 Okno prohlížeče výsledků 54 / 59