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

Rozměr: px
Začít zobrazení ze stránky:

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

Transkript

1 Č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

2 ii

3 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

4 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

5 v

6 Obsah 1. Úvod Popis algoritmu Úvod Inspirace přírodou Struktura včelstva Rozmnožování včel Svatební let Optimalizační algoritmus inspirovaný pářením včel Inicializace Svatební let Křížení a nová populace Vylepšení populace pomocí dělnic Nahrazení královny Implementace algoritmu pro řešení konkrétního problému Metodika testování Aplikace na problém splnitelnosti booleovských klauzulí Implementace HBMO pro 3-SAT Reprezentace a výpočet zdatnosti Svatební let Operátor křížení Dělnice Algoritmus WalkSAT Výsledky Optimalizace spojitých funkcí Implementace HBMO pro reálné funkce Reprezentace a výpočet zdatnosti Svatební let Operátor křížení Dělnice Rosenbrockův algoritmus Diferenciální evoluce Experimenty a výsledky vi

7 5.4.1 Konfigurace algoritmů pro srovnávací testy Rozšířená Rosenbrockova funkce Rastriginova funkce Ackleyho funkce Fletcher-Powellova funkce Řešení problému obchodního cestujícího Stochastický problém obchodního cestujícího Implementace HBMO pro TSP Reprezentace a výpočet zdatnosti Operátor mutace přepojením Operátor mutace RuinAndRecreate Svatební let Operátor křížení Dělnice Algoritmus HBMO-TSP v pseudokódu Implementace umělé mravenčí kolonie pro TSP Výsledky TSP Testovací platforma Náměty pro další práci Závěr Použitá literatura A. Obsah CD B. Použití programu C. Implementace nového optimalizačního problému do frameworku vii

8 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

9 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 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] 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 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

10 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

11 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 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

12 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í 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

13 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 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

14 (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 genotyp trubce X genotyp potomka Obr. 2.2 Princip jednoduchého operátoru křížení pro binární reprezentaci 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

15 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 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 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

16 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

17 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í 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

18 č ě ý í ý č í é (4.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 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 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

19 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

20 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 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

21 Počet vyřešených problémů (z celkem 50ti) 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

22 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í 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 Počet nových jedinců 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

23 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 HBMO WalkSAT Random Walk 5 0 Počet vyhodnocení klausulí Obr. 4.3 Porovnání HBMO-SAT s WalkSAT a RandomWalk pro 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í 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 ,8 23,9 2,3 2, ,8 24,0 5,3 1, ,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

24 počet nalezených řešení 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 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 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

25 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

26 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 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 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

27 (5.2) Rozdíl zdatností je navíc vydělen zdatností královny, čímž se problém s velkým rozsahem zdatností vyřeší 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í 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

28 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

29 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

30 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

31 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 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 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

32 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

33 Nejlepší nalezené řešení 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

34 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 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

35 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 vyhodnocení funkce Rastrigin Algoritmus dělnice Zdatnost OneParamRandom 3610,7 RosenbrockLocalSearch 3330,9 28 / 59

36 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 ,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 vyhodnoceních Median Min HBMO < 1E-14 < 1E-14 Rosenbrock 14,91 1,92 DE < 1E-14 < 1E-14 Max 5,68E-14 25, 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

37 Nejlepší nalezené řešení Obr 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 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 / 59

38 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 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 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 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

39 (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 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

40 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 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 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

41 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

42 (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

43 Tabulka 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] 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] eil1012 ch1502 Probability = N/M N/M N/M N/M1 Probability = d1982 rat N/M1 N/M1 N/M1 N/M N/M1 N/M1 N/M1 N/M (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] 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

44 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 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 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í 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

45 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) 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

46 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 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

47 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

48 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

49 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

50 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 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 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 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

51 Délka nejktratší nalezené trasy Délka nejktratší nalezené trasy Konvergence na eil51 HBMO medián HBMO nejlepší HBMO nejhorší 586 ACO medián ACO nejlepší ACO nejhorší 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ší 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í eil / 59

52 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 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

53 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

54 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

55 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, [Citace: ] [2] WEISSTEIN, E. W. Traveling Salesman Problem. From MathWorld--A Wolfram Web Resource. [Online] [Citace: ] [3] KENNEDY, J. a EBERHART, R. Particle swarm optimization. Neural Networks, Proceedings., IEEE International Conference on. 1995, Sv. 4, stránky [4] Fathian, M., Amiri, B. a Maroosi, A. Application of Honey Bee Mating Optimization Algorithm on Clustering. 2007, Sv. 190, stránky [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 [6] ABBASS, H. A. Marriage in Honey Bees Optimization (MBO): A Haplometrosis Polygynous Swarming Approach. Proceedings of the 2001 Congress on Evolutionary Computation, , Sv. 1, stránky [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 [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) , stránky [9] Jakuš, Miroslav. O včelách. [Online] [Citace: ] [10] Dietz, A. Evolution. Bee genetics and breeding. 1986, stránky [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 [12] KIRKPATRICK, S., GELATT, C. D. a VECCHI, M. P. Optimization by Simulated Annealing. Science. 1983, Sv. 220, stránky [13] COOK, S. The complexity of theorem proving procedures. Proceedings of the Third Annual ACM Symposium on Theory of Computing. 1971, stránky [14] GENT, I. a WALSH, T. The satisfiability constraint gap. Artifical Intelligence. 1996, Sv. 81, 1-2, stránky [15] COOK, S. a MITCHELL, D. Finding hard instances of satisfiability problem: A survey. Satisfiability problem: theory and applications : DIMACS workshop, March 11-13, , Sv. 35, stránky / 59

56 [16] RUSELL, S. a NORVIG, P. Artificial Intelligence: A Modern Approach. 1st edition. New Jersey, USA : Prentice Hall, stránky ISBN [17] ROSENBROCK, H. H. An automatic method for finding the greatest or least value of a function. The ComputerJournal. 1960, Sv. 3, stránky [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 [19] BAU, D. a TREFETHEN, L. N. Numerical linear algebra. SIAM, stránky ISBN [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 [21] ZELINKA, I. Kapitola 6. Diferenciální Evoluce. Umělá inteligence (4), Praha : Academia, stránky [22] PEDERSEN, M. Tuning & Simplifying Heuristical Optimization. Thesis for the degree of Doctor of Philosophy, University of Southampton, [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 [24] DOMINGO, O. B., CÉSAR, H. a NICOLÁS, G. Benchmark Problems. A Crossover Operator for Evolutionary Algorithms Based on Population Features. [Online] [Citace: ] [25] BÄCK, T. Evolutionary Algorithms in Theory and Practice. Oxford University Press, Inc., stránky [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 [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, [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) [29] Feo, T. A. a Resende, M. G. Greedy randomized adaptive search procedure. Journal of Global Optimization. 1995, Sv. 6, stránky [30] Marinakis, Y., Migdalas, A. a Pardalos, P. M. Expanding neighborhood GRASP for traveling salesman problem. Optimization Letters. 2007, Sv. 2, stránky / 59

57 [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 [32] REINELT, G. TSPLIB. Ruprecht-Karls-Universitat Heidelberg. [Online] [Citace: ] [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 [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 [35] SCHRIMPF, G., a další. Record Breaking Optimization Results Using Ruin and Recreate Principle. Journal of Computer Physics. 2000, Sv. 159, stránky [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, [37] FEO, T. A. a RESENDE, M. G. Greedy randomized adaptive search procedure. Journal of Global Optimization. 1995, Sv. 6, 2, stránky [38] REINELT, G. The Travelling Salesman: Computational Solutions for TSP Applications. Springer- Verlag, ISBN: [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 / 59

58 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

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 a databázový server MS SQL 2008 R2. Stačí verze Express volně stažitelná z 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: nebo pomocí SQL Management Studia: 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

60 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

61 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

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

Projekční algoritmus. Urychlení evolučních algoritmů pomocí regresních stromů a jejich zobecnění. Jan Klíma Urychlení evolučních algoritmů pomocí regresních stromů a jejich zobecnění Jan Klíma Obsah Motivace & cíle práce Evoluční algoritmy Náhradní modelování Stromové regresní metody Implementace a výsledky

Více

Jak se matematika poučila v biologii

Jak se matematika poučila v biologii Jak se matematika poučila v biologii René Kalus IT4Innovations, VŠB TUO Role matematiky v (nejen) přírodních vědách Matematika inspirující a sloužící jazyk pro komunikaci s přírodou V 4 3 r 3 Matematika

Více

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

Evoluční algoritmy. Podmínka zastavení počet iterací kvalita nejlepšího jedince v populaci změna kvality nejlepšího jedince mezi iteracemi Evoluční algoritmy Použítí evoluční principů, založených na metodách optimalizace funkcí a umělé inteligenci, pro hledání řešení nějaké úlohy. Populace množina jedinců, potenciálních řešení Fitness function

Více

Metaheuristiky s populacemi

Metaheuristiky s populacemi Metaheuristiky s populacemi 8. března 2018 1 Společné vlastnosti 2 Evoluční algoritmy 3 Optimalizace mravenčí kolonie Zdroj: El-Ghazali Talbi, Metaheuristics: From Design to Implementation. Wiley, 2009.

Více

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

ČVUT FEL X36PAA - Problémy a algoritmy. 5. úloha - Seznámení se se zvolenou pokročilou iterativní metodou na problému batohu ČVUT FEL X36PAA - Problémy a algoritmy 5. úloha - Seznámení se se zvolenou pokročilou iterativní metodou na problému batohu Jméno: Marek Handl Datum: 4. 2. 2009 Cvičení: Pondělí 9:00 Zadání Zvolte si heuristiku,

Více

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

Genetické algoritmy. Informační a komunikační technologie ve zdravotnictví Genetické algoritmy Informační a komunikační technologie ve zdravotnictví Přehled přednášky Úvod Historie Základní pojmy Principy genetických algoritmů Možnosti použití Související metody AI Příklad problém

Více

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

jednoduchá heuristika asymetrické okolí stavový prostor, kde nelze zabloudit připustit zhoršují cí tahy Pokročilé heuristiky Pokročilé heuristiky jednoduchá heuristika asymetrické stavový prostor, kde nelze zabloudit připustit zhoršují cí tahy pokročilá heuristika symetrické stavový prostor, který vyžaduje řízení 1 2 Paměť pouze

Více

11. Tabu prohledávání

11. Tabu prohledávání Jan Schmidt 2011 Katedra číslicového návrhu Fakulta informačních technologií České vysoké učení technické v Praze Zimní semestr 2011/12 MI-PAA EVROPSKÝ SOCIÁLNÍ FOND PRAHA & EU: INVESTUJENE DO VAŠÍ BUDOUCNOSTI

Více

Algoritmy pro spojitou optimalizaci

Algoritmy pro spojitou optimalizaci Algoritmy pro spojitou optimalizaci Vladimír Bičík Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze 10.6.2010 Vladimír Bičík (ČVUT Praha) Algoritmy pro spojitou optimalizaci

Více

ROZHODOVACÍ PROCEDURY A VERIFIKACE PAVEL SURYNEK, KTIML HTTP://KTIML.MFF.CUNI.CZ/~SURYNEK/NAIL094

ROZHODOVACÍ PROCEDURY A VERIFIKACE PAVEL SURYNEK, KTIML HTTP://KTIML.MFF.CUNI.CZ/~SURYNEK/NAIL094 10 ROZHODOVACÍ PROCEDURY A VERIFIKACE PAVEL SURYNEK, KTIML HTTP://KTIML.MFF.CUNI.CZ/~SURYNEK/NAIL094 Matematicko-fyzikální fakulta Univerzita Karlova v Praze 1 ROZHODOVÁNÍ TEORIÍ POMOCÍ SAT ŘEŠIČE (SMT)

Více

Markov Chain Monte Carlo. Jan Kracík.

Markov Chain Monte Carlo. Jan Kracík. Markov Chain Monte Carlo Jan Kracík jan.kracik@vsb.cz Princip Monte Carlo integrace Cílem je (přibližný) výpočet integrálu I(g) = E f [g(x)] = g(x)f (x)dx. (1) Umíme-li generovat nezávislé vzorky x (1),

Více

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

PŘEDNÁŠKA 03 OPTIMALIZAČNÍ METODY Optimization methods CW057 Logistika (R) PŘEDNÁŠKA 03 Optimization methods Ing. Václav Venkrbec skupina obecných modelů slouží k nalezení nejlepšího řešení problémů a modelovaných reálií přináší řešení: prvky konečné / nekonečné

Více

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

Řešení problému vážené splnitelnosti booleovské formule pokročilou iterativní metodou Řešení problému vážené splnitelnosti booleovské formule pokročilou iterativní metodou 1 SPECIFIKACE ÚLOHY Cílem této úlohy bylo použít vybranou pokročilou iterativní metodou pro řešení problému vážené

Více

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

Navrženy v 60. letech jako experimentální optimalizační metoda. Velice rychlá s dobrou podporou teorie Evoluční strategie Navrženy v 60. letech jako experimentální optimalizační metoda Založena na reálných číslech Velice rychlá s dobrou podporou teorie Jako první zavedla self-adaptation (úpravu sebe sama)

Více

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

Emergence chování robotických agentů: neuroevoluce Emergence chování robotických agentů: neuroevoluce Petra Vidnerová, Stanislav Slušný, Roman Neruda Ústav Informatiky, AV ČR Kognice a umělý život VIII Praha 28. 5. 2008 Evoluční robotika: EA & neuronové

Více

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

Úvod do stochastických optimalizačních metod (metaheuristik) Moderní metody optimalizace 1 Úvod do stochastických optimalizačních metod (metaheuristik) Moderní metody optimalizace 1 Efektivita optimalizačních metod Robustní metoda Efektivita Specializovaná metoda Enumerace nebo MC kombinatorický

Více

Numerické metody a programování. Lekce 8

Numerické metody a programování. Lekce 8 Numerické metody a programování Lekce 8 Optimalizace hledáme bod x, ve kterém funkce jedné nebo více proměnných f x má minimum (maximum) maximalizace f x je totéž jako minimalizace f x Minimum funkce lokální:

Více

Swarm Intelligence. Moderní metody optimalizace 1

Swarm Intelligence.   Moderní metody optimalizace 1 Swarm Intelligence http://pixdaus.com/single.php?id=168307 Moderní metody optimalizace 1 Swarm Intelligence Inteligence hejna algoritmy inspirované chováním skupin ptáků, hmyzu, ryb apod. Particle Swarm

Více

12. Globální metody MI-PAA

12. Globální metody MI-PAA Jan Schmidt 2011 Katedra číslicového návrhu Fakulta informačních technologií České vysoké učení technické v Praze Zimní semestr 2011/12 MI-PAA EVROPSKÝ SOCIÁLNÍ FOND PRAHA & EU: INVESTUJENE DO VAŠÍ BUDOUCNOSTI

Více

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

VYUŽITÍ PRAVDĚPODOBNOSTNÍ METODY MONTE CARLO V SOUDNÍM INŽENÝRSTVÍ VYUŽITÍ PRAVDĚPODOBNOSTNÍ METODY MONTE CARLO V SOUDNÍM INŽENÝRSTVÍ Michal Kořenář 1 Abstrakt Rozvoj výpočetní techniky v poslední době umožnil také rozvoj výpočetních metod, které nejsou založeny na bázi

Více

Úvod do optimalizace, metody hladké optimalizace

Úvod do optimalizace, metody hladké optimalizace Evropský sociální fond Investujeme do vaší budoucnosti Úvod do optimalizace, metody hladké optimalizace Matematika pro informatiky, FIT ČVUT Martin Holeňa, 13. týden LS 2010/2011 O čem to bude? Příklady

Více

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

VUT Brno Fakulta informačních technologií Simulační nástroje a techniky (SNT) 2014/2015 Vehicle routing problem Ant colony VUT Brno Fakulta informačních technologií Simulační nástroje a techniky (SNT) 2014/2015 Vehicle routing problem Ant colony František Němec (xnemec61) xnemec61@stud.fit.vutbr.cz 19. července 2015 1 Úvod

Více

Gramatická evoluce a softwarový projekt AGE

Gramatická evoluce a softwarový projekt AGE Gramatická evoluce a softwarový projekt AGE Adam Nohejl Matematicko-fyzikální fakulta Univerzita Karlova v Praze http://nohejl.name/ 4. 4. 2010 Poznámka: Prezentace založené na variantách těchto slajdů

Více

Časová a prostorová složitost algoritmů

Časová a prostorová složitost algoritmů .. Časová a prostorová složitost algoritmů Programovací techniky doc. Ing. Jiří Rybička, Dr. ústav informatiky PEF MENDELU v Brně rybicka@mendelu.cz Hodnocení algoritmů Programovací techniky Časová a prostorová

Více

Ant Colony Optimization 1 / 26

Ant Colony Optimization 1 / 26 GoBack Ant Colony Optimization 1 / 26 Vznik Chování mraveců Double Bridge Experiment Řešení via ACO Metaheuristika 2 / 26 Vznik Vznik Chování mraveců Double Bridge Experiment Řešení via ACO Metaheuristika

Více

Dijkstrův algoritmus

Dijkstrův algoritmus Dijkstrův algoritmus Hledání nejkratší cesty v nezáporně hranově ohodnoceném grafu Necht je dán orientovaný graf G = (V, H) a funkce, která každé hraně h = (u, v) H přiřadí nezáporné reálné číslo označované

Více

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

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 Evolučníalgoritmy Kategorie vytvořená v 90. letech, aby se sjednotily jednotlivémetody, kterévyužívaly evoluční principy, tzn. Genetickéalgoritmy, Evolučnístrategie a Evoluční programování (v těchto přednáškách

Více

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

Optimalizační algoritmy inspirované chováním mravenců Optimalizační algoritmy inspirované chováním mravenců Biologická analogie ACO metaheuristic Ant system a jeho modifikace Specifikace problémů Aplikace Motivace NP-hard problémy časová náročnost nalezení

Více

A0M33EOA: Evoluční optimalizační algoritmy

A0M33EOA: Evoluční optimalizační algoritmy A0M33EOA: Evoluční optimalizační algoritmy Zkouškový test Pátek 8. února 2011 Vaše jméno: Známka, kterou byste si z předmětu sami dali, a její zdůvodnění: Otázka: 1 2 3 4 5 6 7 8 Celkem Body: 1 3 2 1 4

Více

OPTIMALIZACE. (přehled metod)

OPTIMALIZACE. (přehled metod) OPTIMALIZACE (přehled metod) Typy optimalizačních úloh Optimalizace bez omezení Nederivační metody Derivační metody Optimalizace s omezeními Lineární programování Nelineární programování Globální optimalizace

Více

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

Evoluční výpočetní techniky (EVT) Evoluční výpočetní techniky (EVT) - Nacházejí svoji inspiraci v přírodních vývojových procesech - Stejně jako přírodní jevy mají silnou náhodnou složku, která nezanedbatelným způsobem ovlivňuje jejich

Více

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

3. pracovní list: Jméno: Včely žijí ve společenství, které nazýváme:, opustí-li najednou úl, pak mu říkáme:. 3. pracovní list: Jméno: Včely žijí ve společenství, které nazýváme:, opustí-li najednou úl, pak mu říkáme:. V jednom úlu žije až včel. V každém včelstvu je matka, trubců a dělnic. samičkou. Samečkem včel

Více

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

Vyhledávání. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 21. Vyhledávání doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava Prezentace ke dni 21. září 2018 Jiří Dvorský (VŠB TUO) Vyhledávání 242 / 433 Osnova přednášky

Více

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

ZÁPADOČESKÁ UNIVERZITA V PLZNI FAKULTA STROJNÍ BAKALÁŘSKÁ PRÁCE. 2016/2017 Monika Knolová ZÁPADOČESKÁ UNIVERZITA V PLZNI FAKULTA STROJNÍ BAKALÁŘSKÁ PRÁCE 2016/2017 ZÁPADOČESKÁ UNIVERZITA V PLZNI FAKULTA STROJNÍ Studijní program: B 2301 Strojní inženýrství Studijní zaměření: Průmyslové inženýrství

Více

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

Seminář z umělé inteligence. Otakar Trunda Seminář z umělé inteligence Otakar Trunda Plánování Vstup: Satisficing task: počáteční stav, cílové stavy, přípustné akce Optimization task: počáteční stav, cílové stavy, přípustné akce, ceny akcí Výstup:

Více

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

Optimalizace obecný úvod. [proč optimalizovat?] Formalizace problému. [existují podobné problémy?] Optimalizace obecný úvod 1 Optimalizace obecný úvod Motivace optimalizačních úloh [proč optimalizovat?] Formalizace problému [jak obecně popsat optimalizační úlohu?] Klasifikace optimalizačních problémů

Více

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

Seznámení se se zvolenou pokročilou iterativní metodou na problému batohu 4. 12. 213 MI-PAA úkol č. 4 Antonín Daněk Seznámení se se zvolenou pokročilou iterativní metodou na problému batohu 1 SPECIFIKACE ÚLOHY Cílem tohoto úkolu bylo seznámit se s vybranou pokročilou iterativní

Více

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

Úloha - rozpoznávání číslic Úloha - rozpoznávání číslic Vojtěch Franc, Tomáš Pajdla a Tomáš Svoboda http://cmp.felk.cvut.cz 27. listopadu 26 Abstrakt Podpůrný text pro cvičení předmětu X33KUI. Vysvětluje tři způsoby rozpoznávání

Více

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

Vyhledávání. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 12. Vyhledávání doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava Prezentace ke dni 12. září 2016 Jiří Dvorský (VŠB TUO) Vyhledávání 201 / 344 Osnova přednášky

Více

Masarykova univerzita. Fakulta informatiky. Evoluce pohybu

Masarykova univerzita. Fakulta informatiky. Evoluce pohybu Masarykova univerzita Fakulta informatiky Evoluce pohybu IV109 Tomáš Kotula, 265 287 Brno, 2009 Úvod Pohyb je jedním ze základních projevů života. Zdá se tedy logické, že stejně jako ostatní vlastnosti

Více

Úvod do mobilní robotiky AIL028

Úvod do mobilní robotiky AIL028 Pravděpodobnostní plánování zbynek.winkler at mff.cuni.cz, md at robotika.cz http://robotika.cz/guide/umor05/cs 12. prosince 2005 1 Co už umíme a co ne? Jak řešit složitější případy? Definice konfiguračního

Více

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

OPTIMALIZAČNÍ ÚLOHY. Modelový příklad problém obchodního cestujícího: OPTIMALIZAČNÍ ÚLOHY Problém optimalizace v různých oblastech: - minimalizace času, materiálu, - maximalizace výkonu, zisku, - optimalizace umístění komponent, propojení,... Modelový příklad problém obchodního

Více

Genetické programování

Genetické programování Genetické programování Vyvinuto v USA v 90. letech J. Kozou Typické problémy: Predikce, klasifikace, aproximace, tvorba programů Vlastnosti Soupeří s neuronovými sítěmi apod. Potřebuje značně velké populace

Více

Programovací jazyk Pascal

Programovací jazyk Pascal Programovací jazyk Pascal Syntaktická pravidla (syntaxe jazyka) přesná pravidla pro zápis příkazů Sémantická pravidla (sémantika jazyka) pravidla, která každému příkazu přiřadí přesný význam Všechny konstrukce

Více

Kombinatorická minimalizace

Kombinatorická minimalizace Kombinatorická minimalizace Cílem je nalézt globální minimum ve velké diskrétní množině, kde může být mnoho lokálních minim. Úloha obchodního cestujícího Cílem je najít nejkratší cestu, která spojuje všechny

Více

Lineární klasifikátory

Lineární klasifikátory Lineární klasifikátory Lineární klasifikátory obsah: perceptronový algoritmus základní verze varianta perceptronového algoritmu přihrádkový algoritmus podpůrné vektorové stroje Lineární klasifikátor navrhnout

Více

Hledání správné cesty

Hledání správné cesty Semestrální práce z předmětu A6M33AST Závěrečná zpráva Hledání správné cesty Nela Grimová, Lenka Houdková 2015/2016 1. Zadání Naším úkolem bylo vytvoření úlohy Hledání cesty, kterou by bylo možné použít

Více

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

3. úloha - problém batohu metodami branch & bound, dynamické programování, heuristika s testem ČVUT FEL X36PAA - Problémy a algoritmy 3. úloha - problém batohu metodami branch & bound, dynamické programování, heuristika s testem Jméno: Marek Handl Datum: 1. 1. 2009 Cvičení: Pondělí 9:00 Zadání Naprogramujte

Více

7. Heuristické metody

7. Heuristické metody Jan Schmidt 2011 Katedra číslicového návrhu Fakulta informačních technologií České vysoké učení technické v Praze Zimní semestr 2011/12 MI-PAA EVROPSKÝ SOCIÁLNÍ FOND PRAHA & EU: INVESTUJENE DO VAŠÍ BUDOUCNOSTI

Více

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

METODY DOLOVÁNÍ V DATECH DATOVÉ SKLADY TEREZA HYNČICOVÁ H2IGE1 METODY DOLOVÁNÍ V DATECH DATOVÉ SKLADY TEREZA HYNČICOVÁ H2IGE1 DOLOVÁNÍ V DATECH (DATA MINING) OBJEVUJE SE JIŽ OD 60. LET 20. ST. S ROZVOJEM POČÍTAČOVÉ TECHNIKY DEFINICE PROCES VÝBĚRU, PROHLEDÁVÁNÍ A MODELOVÁNÍ

Více

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

NP-ÚPLNÉ PROBLÉMY. Doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky, FIT České vysoké učení technické v Praze NP-ÚPLNÉ PROBLÉMY Doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky, FIT České vysoké učení technické v Praze BI-GRA, LS 2010/2011, Lekce 13 Evropský sociální fond Praha & EU: Investujeme do

Více

Datové struktury 2: Rozptylovací tabulky

Datové struktury 2: Rozptylovací tabulky Datové struktury 2: Rozptylovací tabulky prof. Ing. Pavel Tvrdík CSc. Katedra počítačových systémů Fakulta informačních technologií České vysoké učení technické v Praze c Pavel Tvrdík, 2010 Efektivní algoritmy

Více

Úvod do mobilní robotiky NAIL028

Úvod do mobilní robotiky NAIL028 md at robotika.cz http://robotika.cz/guide/umor08/cs 11. listopadu 2008 1 2 PID Sledování cesty Modely kolových vozidel (1/5) Diferenční řízení tank b Encoder Motor Centerpoint Motor Encoder Modely kolových

Více

Grafové algoritmy. Programovací techniky

Grafové algoritmy. Programovací techniky Grafové algoritmy Programovací techniky Grafy Úvod - Terminologie Graf je datová struktura, skládá se z množiny vrcholů V a množiny hran mezi vrcholy E Počet vrcholů a hran musí být konečný a nesmí být

Více

Grafové algoritmy. Programovací techniky

Grafové algoritmy. Programovací techniky Grafové algoritmy Programovací techniky Grafy Úvod - Terminologie Graf je datová struktura, skládá se z množiny vrcholů V a množiny hran mezi vrcholy E Počet vrcholů a hran musí být konečný a nesmí být

Více

Dynamické datové struktury III.

Dynamické datové struktury III. Dynamické datové struktury III. Halda. Tomáš Bayer bayertom@natur.cuni.cz Katedra aplikované geoinformatiky a kartografie, Přírodovědecká fakulta UK. Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované

Více

Základy umělé inteligence

Základy umělé inteligence Základy umělé inteligence Automatické řešení úloh Základy umělé inteligence - prohledávání. Vlasta Radová, ZČU, katedra kybernetiky 1 Formalizace úlohy UI chápe řešení úloh jako proces hledání řešení v

Více

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

Algoritmus pro hledání nejkratší cesty orientovaným grafem 1.1 Úvod Algoritmus pro hledání nejkratší cesty orientovaným grafem Naprogramoval jsem v Matlabu funkci, která dokáže určit nejkratší cestu v orientovaném grafu mezi libovolnými dvěma vrcholy. Nastudoval

Více

Státnice odborné č. 20

Státnice odborné č. 20 Státnice odborné č. 20 Shlukování dat Shlukování dat. Metoda k-středů, hierarchické (aglomerativní) shlukování, Kohonenova mapa SOM Shlukování dat Shluková analýza je snaha o seskupení objektů do skupin

Více

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

České vysoké učení technické v Praze Fakulta elektrotechnická. Diplomová práce Přepínání metaheuristik. Aleš Kučík České vysoké učení technické v Praze Fakulta elektrotechnická Diplomová práce Přepínání metaheuristik Aleš Kučík Vedoucí práce: Ing. Jan Koutník, Ph.D. Studijní program: Elektrotechnika a informatika,

Více

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

Užití systému Matlab při optimalizaci intenzity tepelného záření na povrchu formy Užití systému Matlab při optimalizaci intenzity tepelného záření na povrchu formy Radek Srb 1) Jaroslav Mlýnek 2) 1) Fakulta mechatroniky, informatiky a mezioborových studií 2) Fakulta přírodovědně-humanitní

Více

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

2. úkol MI-PAA. Jan Jůna (junajan) 3.11.2013 2. úkol MI-PAA Jan Jůna (junajan) 3.11.2013 Specifikaci úlohy Problém batohu je jedním z nejjednodušších NP-těžkých problémů. V literatuře najdeme množství jeho variant, které mají obecně různé nároky

Více

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

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 Jan Schmidt 2011 Katedra číslicového návrhu Fakulta informačních technologií České vysoké učení technické v Praze Zimní semestr 2011/12 MI-PAA EVROPSKÝ SOCIÁLNÍ FOND PRAHA & EU: INVESTUJENE DO VAŠÍ BUDOUCNOSTI

Více

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

Simulované žíhání jako nástroj k hledání optimálního řešení Simulované žíhání jako nástroj k hledání optimálního řešení Michael Pokorný Střední škola aplikované kbernetik s.r.o., Hradecká 5, Hradec Králové pokorn.michael@ssakhk.cz Abstrakt Simulované žíhání je

Více

Poslední nenulová číslice faktoriálu

Poslední nenulová číslice faktoriálu Poslední nenulová číslice faktoriálu Kateřina Bambušková BAM015, I206 Abstrakt V tomto článku je popsán a vyřešen problém s určením poslední nenulové číslice faktoriálu přirozeného čísla N. Celý princip

Více

Matematické modelování dopravního proudu

Matematické modelování dopravního proudu Matematické modelování dopravního proudu Ondřej Lanč, Alena Girglová, Kateřina Papežová, Lucie Obšilová Gymnázium Otokara Březiny a SOŠ Telč lancondrej@centrum.cz Abstrakt: Cílem projektu bylo seznámení

Více

Dynamické programování

Dynamické programování Dynamické programování prof. Ing. Pavel Tvrdík CSc. Katedra počítačových systémů Fakulta informačních technologií České vysoké učení technické v Praze c Pavel Tvrdík, 2010 Efektivní algoritmy (BI-EFA)

Více

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

Ctislav Fiala: Optimalizace a multikriteriální hodnocení funkční způsobilosti pozemních staveb 16 Optimální hodnoty svázaných energií stropních konstrukcí (Graf. 6) zde je rozdíl materiálových konstant, tedy svázaných energií v 1 kg materiálu vložek nejmarkantnější, u polystyrénu je téměř 40krát

Více

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

Test webového prohlížeče v Amazon Kindle Wi-Fi 3G ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE FAKULTA ELEKTROTECHNICKÁ Test webového prohlížeče v Amazon Kindle Wi-Fi 3G Tomáš Gogár 21.3.2011 A4B39TUR - Testování uživatelského rozhraní Obsah Popis přístroje:...

Více

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

4EK213 Lineární modely. 10. Celočíselné programování 4EK213 Lineární modely 10. Celočíselné programování 10.1 Matematický model úlohy ILP Nalézt extrém účelové funkce z = c 1 x 1 + c 2 x 2 + + c n x n na soustavě vlastních omezení a 11 x 1 + a 12 x 2 + a

Více

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

VYUŽITÍ METOD PŘÍMÉHO HLEDÁNÍ OPTIMA PŘI PREDIKTIVNÍM ŘÍZENÍ VYUŽITÍ METOD PŘÍMÉHO HLEDÁNÍ OPTIMA PŘI PREDIKTIVNÍM ŘÍZENÍ P. Chalupa, J. Novák Univerzita Tomáše Bati ve Zlíně Fakulta aplikované informatiky Centrum aplikované kybernetiky Abstrakt Příspěvek se zabývá

Více

Hledání extrémů funkcí

Hledání extrémů funkcí Hledání extrémů funkcí Budeme se zabývat téměř výhradně hledáním minima. Přes nost nalezeného extrému Obecně není hledání extrému tak přesné jako řešení rovnic. Demonstrovat to můžeme na příkladu hledání

Více

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

Zada ní 1. Semina rní pra ce z pr edme tu Matematický software (KI/MSW) Zada ní. Semina rní pra ce z pr edme tu Matematický software (KI/MSW) Datum zadání: 5.. 06 Podmínky vypracování: - Seminární práce se skládá z programové části (kódy v Matlabu) a textové části (protokol

Více

7. Rozdělení pravděpodobnosti ve statistice

7. Rozdělení pravděpodobnosti ve statistice 7. Rozdělení pravděpodobnosti ve statistice Statistika nuda je, má však cenné údaje, neklesejte na mysli, ona nám to vyčíslí Jednou z úloh statistiky je odhad (výpočet) hodnot statistického znaku x i,

Více

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

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY FAKULTA ELEKTROTECHNIKY A KOMUNIKAČNÍCH TECHNOLOGIÍ ÚSTAV AUTOMATIZACE A MĚŘICÍ TECHNIKY FACULTY OF ELECTRICAL ENGINEERING AND COMMUNICATION

Více

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

Zobrazte si svazy a uspořádané množiny! Jan Outrata LatVis Zobrazte si svazy a uspořádané množiny! Jan Outrata Motivace potřeba visualizovat matematické (algebraické) struktury rychle, přehledně a automaticky počítačovými prostředky ruční kreslení je zdlouhavé

Více

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

Výroková a predikátová logika - II Výroková a predikátová logika - II Petr Gregor KTIML MFF UK ZS 2015/2016 Petr Gregor (KTIML MFF UK) Výroková a predikátová logika - II ZS 2015/2016 1 / 18 Základní syntax Jazyk Výroková logika je logikou

Více

MOŽNOSTI OPTIMALIZACE VE STAVEBNICTVÍ

MOŽNOSTI OPTIMALIZACE VE STAVEBNICTVÍ ESKÉ VYSOKÉ U ENÍ TECHNICKÉ V PRAZE Fakulta stavební MOŽNOSTI OPTIMALIZACE VE STAVEBNICTVÍ Studijní program: Stavební inženýrství Studijní obor: Fyzikální a materiálové inženýrství Vypracovala: Ing. Markéta

Více

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

Náhodné (statistické) chyby přímých měření Náhodné (statistické) chyby přímých měření Hodnoty náhodných chyb se nedají stanovit předem, ale na základě počtu pravděpodobnosti lze zjistit, která z možných naměřených hodnot je více a která je méně

Více

Základy algoritmizace. Pattern matching

Základy algoritmizace. Pattern matching Základy algoritmizace Pattern matching 1 Pattern matching Úloha nalézt v nějakém textu výskyty zadaných textových vzorků patří v počítačové praxi k nejfrekventovanějším. Algoritmy, které ji řeší se používají

Více

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

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY FAKULTA STROJNÍHO INŽENÝRSTVÍ ÚSTAV AUTOMATIZACE A INFORMATIKY FACULTY OF MECHANICAL ENGINEERING INSTITUTE OF AUTOMATION AND COMPUTER SCIENCE

Více

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

Semestrální práce z předmětu X37CAD (CAD pro vysokofrekvenční techniku) NÁVRH ÚZKOPÁSMOVÉHO ZESILOVAČE Semestrální práce z předmětu X37CAD (CAD pro vysokofrekvenční techniku) Číslo zadání 32 Jméno: Kontakt: Jan Hlídek hlidej1@feld.cvut.cz ( hlidek@centrum.cz ) ZADÁNÍ: Návrh

Více

Jednofaktorová analýza rozptylu

Jednofaktorová analýza rozptylu I I.I Jednofaktorová analýza rozptylu Úvod Jednofaktorová analýza rozptylu (ANOVA) se využívá při porovnání několika středních hodnot. Často se využívá ve vědeckých a lékařských experimentech, při kterých

Více

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

Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague 1 / 23 Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague 2 / 23 biologové často potřebují najít často se opakující sekvence DNA tyto sekvence bývají relativně krátké,

Více

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

Simulované žíhání jako nástroj k hledání optimálního řešení Simulované žíhání jako nástroj k hledání optimálního řešení Michael Pokorný - Střední škola aplikované kybernetiky s.r.o. - pokorny.michael@ssakhk.cz 21. června 211 Úvod Nedeterministická metoda optimalizace

Více

Popis zobrazení pomocí fuzzy logiky

Popis zobrazení pomocí fuzzy logiky Popis zobrazení pomocí fuzzy logiky diplomová práce Ján Fröhlich KM, FJFI, ČVUT 23. dubna 2009 Ján Fröhlich ( KM, FJFI, ČVUT ) Popis zobrazení pomocí fuzzy logiky 23. dubna 2009 1 / 25 Obsah 1 Úvod Základy

Více

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

Algoritmizace diskrétních. Ing. Michal Dorda, Ph.D. Algoritmizace diskrétních simulačních modelů Ing. Michal Dorda, Ph.D. 1 Úvodní poznámky Při programování simulačních modelů lze hlavní dílčí problémy shrnout do následujících bodů: 1) Zachycení statických

Více

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

Optimalizační algoritmy inspirované chováním mravenců Optimalizační algoritmy inspirované chováním mravenců Motivace a biologická analogie ACO metaheuristic Ant system a jeho modifikace Specifikace problémů vhodných pro ACO Aplikace Motivace NP-hard problémy

Více

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

Programování. s omezujícími podmínkami. SAT a lokáln. Algoritmus GSAT. Algoritmus GSAT. Roman Barták Lokáln lní prohledávání Programování s omezujícími podmínkami Roman Barták Katedra teoretické informatiky a matematické logiky roman.bartak@mff.cuni.cz http://ktiml.mff.cuni.cz/~bartak prochází úplná nekonzistentní

Více

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

ÚPRAVA METODY FLEXIBILNÍHO SIMPLEXU PRO ŘEŠENÍ PROBLÉMŮ GLOBÁLNÍ OPTIMALIZACE Miroslav Provazník UNIVERZITA PARDUBICE Fakulta elektrotechniky a informatiky ÚPRAVA METODY FLEXIBILNÍHO SIMPLEXU PRO ŘEŠENÍ PROBLÉMŮ GLOBÁLNÍ OPTIMALIZACE Miroslav Provazník Bakalářská práce 2016 Prohlášení Prohlašuji:

Více

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

Princip optimalizačních metod inspirovaných přírodou Princip optimalizačních metod inspirovaných přírodou Tomáš Kroupa 20. května 2014 Tento studijní materiál je spolufinancován Evropským sociálním fondem a státním rozpočtem České republiky. Obsah Úkol a

Více

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

7. přednáška Systémová analýza a modelování. Přiřazovací problém Přiřazovací problém Přiřazovací problémy jsou podtřídou logistických úloh, kde lze obecně říci, že m dodavatelů zásobuje m spotřebitelů. Dalším specifikem je, že kapacity dodavatelů (ai) i požadavky spotřebitelů

Více

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

Metoda Monte Carlo, simulované žíhání co byste měli umět po dnešní lekci: integrovat pomocí metody Monte Carlo modelovat jednoduché mnočásticové systémy (Brownův pohyb,...) nalézt globální minimum pomocí simulovaného žíhání Určení čísla metodou

Více

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

12 Metody snižování barevného prostoru 12 Metody snižování barevného prostoru Studijní cíl Tento blok je věnován základním metodám pro snižování barevného rozsahu pro rastrové obrázky. Postupně zde jsou vysvětleny důvody k použití těchto algoritmů

Více

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

Trénování sítě pomocí učení s učitelem Trénování sítě pomocí učení s učitelem! předpokládá se, že máme k dispozici trénovací množinu, tj. množinu P dvojic [vstup x p, požadovaný výstup u p ]! chceme nastavit váhy a prahy sítě tak, aby výstup

Více

Algoritmizace prostorových úloh

Algoritmizace prostorových úloh INOVACE BAKALÁŘSKÝCH A MAGISTERSKÝCH STUDIJNÍCH OBORŮ NA HORNICKO-GEOLOGICKÉ FAKULTĚ VYSOKÉ ŠKOLY BÁŇSKÉ - TECHNICKÉ UNIVERZITY OSTRAVA Algoritmizace prostorových úloh Grafové úlohy Daniela Szturcová Tento

Více

FAKULTA INFORMAČNÍCH TECHNOLOGIÍ

FAKULTA INFORMAČNÍCH TECHNOLOGIÍ VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY FAKULTA INFORMAČNÍCH TECHNOLOGIÍ ÚSTAV POČÍTAČOVÝCH SYSTÉMŮ FACULTY OF INFORMATION TECHNOLOGY DEPARTMENT OF COMPUTER SYSTEMS EVOLUČNÍ MODEL S

Více

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

Algoritmizace Dynamické programování. Jiří Vyskočil, Marko Genyg-Berezovskyj 2010 Dynamické programování Jiří Vyskočil, Marko Genyg-Berezovskyj 2010 Rozděl a panuj (divide-and-conquer) Rozděl (Divide): Rozděl problém na několik podproblémů tak, aby tyto podproblémy odpovídaly původnímu

Více

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

Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague 1 / 40 regula Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague regula 1 2 3 4 5 regula 6 7 8 2 / 40 2 / 40 regula Iterační pro nelineární e Bud f reálná funkce

Více

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

ČVUT FEL X36PAA - Problémy a algoritmy. 4. úloha - Experimentální hodnocení algoritmů pro řešení problému batohu ČVUT FEL X36PAA - Problémy a algoritmy 4. úloha - Experimentální hodnocení algoritmů pro řešení problému batohu Jméno: Marek Handl Datum: 3. 2. 29 Cvičení: Pondělí 9: Zadání Prozkoumejte citlivost metod

Více