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

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

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

Transkript

1 VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY FAKULTA INFORMAČNÍCH TECHNOLOGIÍ ÚSTAV INFORMAČNÍCH SYSTÉMŮ FACULTY OF INFORMATION TECHNOLOGY DEPARTMENT OF INFORMATION SYSTEMS EVOLUČNÍ ŘEŠENÍ RUBIKOVY KOSTKY DIPLOMOVÁ PRÁCE MASTER S THESIS AUTOR PRÁCE AUTHOR Bc. ALEŠ KOLLNER BRNO 2010

2 VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY FAKULTA INFORMAČNÍCH TECHNOLOGIÍ ÚSTAV INFORMAČNÍCH SYSTÉMŮ FACULTY OF INFORMATION TECHNOLOGY DEPARTMENT OF INFORMATION SYSTEMS EVOLUČNÍ ŘEŠENÍ RUBIKOVY KOSTKY EVOLUTION SOLUTION TO RUBIK S CUBE DIPLOMOVÁ PRÁCE MASTER S THESIS AUTOR PRÁCE AUTHOR VEDOUCÍ PRÁCE SUPERVISOR Bc. ALEŠ KOLLNER Ing. JIŘÍ JAROŠ BRNO 2010

3 Abstrakt Tato diplomová práce se zabývá problematikou řešení hlavolamu Rubikovy kostky. Popisuje hlavolam Rubikovy kostky s nejznámějšími metodami pro jeho složení. Hlavní náplní této práce je navrhnutí evoluční metody, která pro libovolnou konfiguraci kostky povede k jejímu složení. Práce rovněž zakódování problému, navržený evoluční algoritmus a jeho správného nastavení, implementaci. V závěru práce jsou zhodnoceny dosažené výsledky a provedeno srovnání s již existujícími metodami Klíčová slova Rubikova kostka, metoda vrstva za vrstvou, metoda Fridrich, evoluce, jednobodové křížení, uniformní křížení, mutace, proporcionální selekce, turnajová selekce, fitness funkce, evaluace, generace, jedinec. Abstract This thesis deals with solving of the Rubik's cube. It describes the Rubik's cube and the famous methods for its composition. The main goal of this work is to propose an evelutionary method that for any configuration of blocks will lead to its composition. The theis describes the problem encoding, the proposed evelutionary algorithm and its proper configuration and deployment. The achieved results are commented on and compared with other known mehtods in conclusions. Keywords Rubik's Cube, layer by layer method, Fridrich method, evolution, one-point crossover, uniform crossover, mutation, roulette wheel selection, tournament selection, fitness function, evaluation, generation, individual. Citace Kollner Aleš: Evoluční řešení Rubikovy kostky. Brno, 2010, diplomová práce, FIT VUT v Brně.

4 Evoluční řešení Rubikovy kostky Prohlášení Prohlašuji, že jsem tuto diplomovou práci vypracoval samostatně pod vedením Ing. Jiřího Jaroše. Uvedl jsem všechny literární prameny a publikace, ze kterých jsem čerpal. Aleš Kollner Poděkování Na tomto místě bych rád poděkoval Ing. Jiřímu Jarošovi za odborné vedení a trpělivost při vedení mé diplomové práce. Aleš Kollner, Tato práce vznikla jako školní dílo na Vysokém učení technickém v Brně, Fakultě informačních technologií. Práce je chráněna autorským zákonem a její užití bez udělení oprávnění autorem je nezákonné, s výjimkou zákonem definovaných případů.

5 Obsah Obsah... 1 Úvod Rubikova kostka Matematika Rubikovy kostky Složení Rubikovy kostky Vrstva po vrstvě Složení druhé vrstvy Složení poslední vrstvy Nejdříve rohy pak hrany (metoda ortega) Další metody Nejlepší řešení Evoluce a evoluční algoritmus Schéma evolučního algoritmu Základní pojmy evolučních algoritmů Zakódování problému Binární reprezentace problému Permutační reprezentace problému Počáteční populace Evaluace individuí Selekce Proporcionální selekce (ruleta) Lineární uspořádání Exponenciální uspořádání Turnajová selekce Pravděpodobnostní výběr Generování potomků Křížení Mutace Obnova populace Ukončení genetického algoritmu Optimální nastavení genetického algoritmu Robustnost Klamné problémy Využití evolučních algoritmů

6 3 Implementace Zakódování problému Výpočet fitness funkce Počáteční populace Vytváření nových potomků Strom Rekombinace rodičů Mutace Konvergence populace Zbytečné tahy Nastavení parametrů evoluce Ovládání programu Dosažené výsledky Problémy bránící řešení Rozložení téměř složené kostky Délka řešení jedince Závěr Literatura Přílohy

7 Úvod Rubikova kostka je velmi oblíbený hlavolam po celém světě. Většina z nás se již s tímto hlavolamem setkala a snažila se tento hlavolam složit. Jen málokdo má tolik nadání složit napoprvé kostku, první složení může zabrat několik dní, ale jsou i tací, kterým se to vůbec nemusí povézt. Postupem času při skládání člověk přijde na mechanismy jak dojít k cíli. Pro Rubikovu kostku existuje velké množství popsaných návodů, které krok za krokem popisují jednotlivé posloupnosti pohybů kostkou. Návody ke skládání se liší počtem algoritmů k zapamatování a časem složení. Nejznámější algoritmy jsou v této práci popsány. Ve své práci pro řešení hlavolamu používám evoluční metody, založené na principech Darwinovy biologické evoluce. Vznik většího počtu jedinců, než je okolní prostředí schopné uživit, má za následek vznik konkurence a boje o přežití. Pokud ve skupině existují dědičné odchylky, potom v rámci dané populace přežijí jedinci s výhodnějšími odchylkami a budou se dále rozmnožovat na úkor jedinců s méně vhodnými vlastnostmi. Díky tomu přežijí nejsilnější jedinci, takže se biologický druh postupně adaptuje na okolí. [6] Na principu biologické evoluce byl popsán evoluční algoritmus, který se stal základem mé práce, proto je jedna kapitola práce věnovaná evolučnímu algoritmu. Základním kamenem jsou operátory křížení a mutace. Křížením vznikají noví potomci z rodičů kombinací jejich genetických informací. Mutace slouží jako prvek náhody, která změní část genetické informace jedince. Pomocí teoretických základů jsem se snažil implementovat systém, který bude řešit Rubikovu kostku evolucí. Neméně důležitou části dokumentu jsou experimenty nad náhodně zamíchanou kostkou. Závěrem celé práce je shrnutí dosažených výsledků a případné nedostatky navrženého řešení evoluční kostky. Diplomová práce nenavazuje na semestrální projekt 3

8 1 Rubikova kostka Rubikovu kostku vynalezl v roce 1974 maďarský sochař Ernő Rubik, který působil jako profesor architektury na budapešťské univerzitě aplikovaného umění. Ernő Rubik se snažil najít pro své studenty vhodný učební nástroj, který by jim pomohl rozvíjet jejich schopnosti a představivost. Na jaře roku 1975 Rubik pojmenoval svůj hlavolam magická kostka a získal maďarský patent. Hlavolam si v rodné zemi získal velkou oblibu. V roce 1979 Rubik podepíše smlouvu s firmou Ideal Toy o společné výrobě, a proto může být kostka vyvážena do západního světa již pod názvem Rubikova kostka. Popularita hlavolamu nadále celosvětově rostla, zejména v 70. a 80. letech dvacátého století je hitem. Do roku 2009 bylo vyrobeno a prodáno více jak 300 miliónu kusů. [10] Rubikova kostka je mechanický hlavolam. Nejběžnější typ kostky 3x3x3 je krychle o straně 55 milimetrů a váhou 110 gramů. Kostka vypadá jako by byla složena z 27 menších kostek, ve skutečnosti je jich 26 (obrázek 1.1), ve středu kostky je šestiramenný prostorový kříž. Vlastně jednotlivé kostičky v Rubikově kostce nejsou opravdové krychličky. Obrázek 1.1. Rubikova kostka. [6] Máme tu šest kostiček středů, které jsou ve středu jednotlivých stran a ty jsou navzájem pevně spojeny ke kříži. Středy se mohou otáček kolem vlastní osy. Středy jsou s křížem spojeny pomocí pružinek, které přitlačují ostatní kostičky a drží kostku pohromadě. Středy mají na vnější straně barevnou nálepku, která určuje barvu stěny. Barvy na kostce jsou 4

9 obvykle bílá, červená, modrá, žlutá, oranžová a zelená. Někdy je místo červené hnědá barva. Originální Rubikova kostka má dané i rozložení barev na kostce bílá naproti žluté, červená naproti oranžové a modrá naproti žluté. Dále máme 12 hranových kostiček, které mají dvě nálepky o různých barvách. Vyčerpány jsou všechny kombinace, kromě barvy na protilehlých stranách. Posledním druhem kostiček jsou rohové, kterých je 8 a mají tři nálepky. Celá soustava kostky je pohyblivým mechanismem, který umožňuje pohyb libovolnou stěnou kostky o násobky 90 stupňů. Barva středu tedy závazně určuje barvu stěny. 1.1 Matematika Rubikovy kostky Klasická Rubikova kostka 3x3x3 má 6 barev a 54 barevných nálepek. Celkový počet možných konfigurací Rubikovy kostky je Jak k tomuto číslu dojdeme, je popsáno dále. Středy stěny rubikovy kostky mají pevně danou pozici, proto je celkový počet možných konfigurací vypočítáván vynásobením počtu možných uspořádání rohových kostek počtem možných uspořádání hran. Rubikova kostka má 8 rohů, takže počet možných uspořádání rohů se rovná 8! tedy možností. Každý roh kostičky má 3 možnosti orientace barevných nálepek, takže 8! musíme vynásobit 3 8. Pokud je kostka téměř kompletně složená, tak se počet možných umístnění zmenšuje. Pokud umístníme do Rubikovy kostky 7 rohů. A zbývá nám umístnit poslední roh, tak ten již má předem určenou orientaci. Tudíž místo 3 8 možností máme 3 7 možností. Takže celkový počet variací umístnění rohů je: 3! 3 7 = = Kostka má 12 hran, takže celkový počet možností je 12!, což je Na rozdíl od rohů není možné vyměnit dvě hrany mezi sebou, aniž bychom neovlivnili další hranu. Takže pokud jsou už umístněny všechny hrany kromě dvou posledních, tyto hrany mají jen jedno možné uspořádání. Proto počet možností dělíme 2, dostáváme Každá hrana má dvě orientace, takže musíme vynásobit 2 12, tedy Toto číslo se musí také upravit. Při umístnění 10. hrany si předposlední hrana může vybrat orientaci, ale poslední hrana zaujme pevnou pozici ve vztahu k předposlední hraně. Takže máme jen 2 11 tedy 2048 kombinací danou orientací. Takže hrany mají celkově možností umístění: [7] x2048 = Takže celkový počet možných uspořádání Rubikovy kostky je: x =

10 1.2 Složení Rubikovy kostky Cílem hlavolamu je složení kostky do stavu, kdy každá stěna je složena z kostiček jedné barvy. K dosažení cíle vede mnoho možností a každý člověk k tomuto problému může přistupovat zcela individuálně. Může si vytvořit svoji vlastní metodu, pomocí které z libovolné konfigurace kostku složí. Existuje již ale mnoho systematických metod, díky kterým může kostku vyřešit kdokoliv. Tyto metody se liší především průměrným počtem tahů potřebných na složení, principem a množstvím různých algoritmů, které je potřeba si zapamatovat. Nejznámější metodou je skládání vrstva po vrstvě (layer by layer). [9] Nejprve si musíme vysvětlit značení pohybů kostkou. Celou kostkou můžeme libovolně otáčet, a proto jednotlivé stěny kostky označujeme podle polohy vůči pozorovateli. Standardně se pro zapisování tahů používají velká počáteční písmena dle názvů stran v angličtině: přední stěna F (front) levá stěna L (left) pravá stěna R (right) zadní stěna B (back) horní stěna U (up) dolní stěna D (down) Příslušnou stěnou lze otočit o 90 na dvě strany. Tady se udržuje konvence, pro pohyb po směru hodinových ručiček necháváme samostatné označení stěny. Pokud je za písmenem i (z anglického inverted) tak to znamená, že danou stranou otočíme proti směru hodinových ručiček. F přední stěnou kostky otočíme o 90 po směru hodinových ručiček Fi přední stěnou kostky otočíme o 90 po směru hodinových ručiček V různých algoritmech se můžeme setkat s rozdílným značením tahů. Pro pohyb po směru hodinových ručiček se používá také F+. Tah proti směru hodinových ručiček se označuje také F, F-. Tahy pro otáčení celé kostky se značí velkým písmenem C a za ním je první písmeno anglického názvu strany kam chceme kostkou otočit (CL, CR, CD, CU). Otáčení kostky nemá vliv na správnost složení, ale všechny algoritmy pro složení kostky jsou brány vůči přední stěně kostky. Pohyby otáčení kostkou slouží k nastavení správné přední stěny, na kterou jsou tyto pravidla aplikovány s požadovaným výsledkem. Existují tahy, které otáčejí pouze střední vrstvou kostky. První znak se označuje velkým písmenem M, za kterým následuje první znak z anglického názvu stěny, která by kopírovala směr střední vrstvy po směru hodinových ručiček (obrázek 1.2). Tahy prostřední vrstvou můžeme nahradit dvěma tahy stěnou a otočením kostky např. MU nahradíme tahy Ui, D a otočením kostky CL. 6

11 Obrázek 1.2: Grafické znázornění tahů 7

12 1.2.1 Vrstva po vrstvě Metoda vrstva po vrstvě je nejjednodušší metoda vůbec. Stačí se naučit 6 algoritmů, pomocí kterých lze poskládat kostku z jakékoliv počáteční pozice. Tato metoda je určena především pro ty, kteří chtějí tento hlavolam složit bez ohledu na čas a počet tahů s co nejmenšími nároky na zapamatování postupu. Jak z metody vyplývá, skládáme jednu vrstvu a až po jejím dokončení začneme skládat následující vrstvu. Na začátku si zvolíme stěnu a s ní barvu, kterou začneme skládat. [10] [9] Složení první vrstvy Složení první vrstvy není příliš obtížný úkol, který zvládne po chvíli experimentů každý. Musí se ale dát pozor na správnost umístnění rohů a hran. Pokud se na složenou stranu podíváte z boku, celý horní řádek musí mít stejnou barvu. K správnému složení první vrstvy vedou dva kroky. Složení kříže pro složení kříže neexistuje definovaný návod. Přidáváme okraje kříže jeden po druhém, až nám na horní straně vznikne kříž. Je důležité si uvědomit, že nezáleží jen na nálepkách kříže, ale aby i zbývající barvy těchto hran odpovídaly středům jednotlivých bočních stěn. Abyste docílili takového stavu, není nutné si pamatovat speciální postupy a stačí jen se trochu zamyslet. Důležité je určit která stěna v obrázcích používaných v této kapitole je přední stěna kostky. Na obrázku 1.3 má přední stěna oranžovou barvu středu. Obrázek 1.3: Správně složený kříž Složení rohů dalším krokem je umístnění správných rohů do horní vrstvy (obrázek 1.4). V levé části je znázorněno, jak musíme mít kostku natočenou. Přední pravý spodní roh musí být složen ze žluté, zelené a oranžové nálepky. Roh chceme umístnit do horního pravého rohu. Kostička rohu může být libovolně pootočená, ale musí být na správném místě. Aplikujeme posloupnost tahů RiDiRD. Pokud nemá pravý horní roh přední stěny správně otočené nálepky, znovu opakujeme tahy. Ke správnému umístnění rohu do horní vrstvy použijeme pravidlo RiDiRD jednou, třikrát a pětkrát. Tímto způsobem umístníme všechny rohy horní stěny. 8

13 1.2.2 Složení druhé vrstvy Obrázek 1.4: Skládání rohů první vrstvy Nyní celou kostkou otočíme složenou vrstvou dolů, aby se nám s ní lépe pracovalo. Složenou stranu už nemusíme zobrazovat, protože se nám už nebude měnit. V tomto kroku se snažíme umístnit 4 hrany do střední vrstvy tak, abychom jí správně zkompletovali. Hrany musí být umístněny se správnou orientací. Pro názornost si zvolíme složení hrany mezi červeno-žlutou. Pokud je hledaná hrana v horní vrstvě kostky, mohou nastat dvě možnosti (obrázek 1.5). Levá část obrázku, kdy potřebujeme hranu otočit doprava od středu, aplikujeme pravidlo URUiRiUiFiUF. V druhém zobrazeném případu potřebujeme hranu otočit doleva od středu. To provedeme posloupností tahů UiLiULUFUiFi. Tento postup aplikujeme pro všechny zbylé hrany druhé vrstvy. Obrázek 1.5: Skládání druhé vrstvy V některých případech může nastat situace, kdy již hrana druhé vrstvy je na správné pozici, ale nálepky jsou opačně než by měli být. Pokud máme špatně orientovanou hranu na přední straně kostky vpravo, použijeme pravidlo URUiRiUiFiUF. Pokud vlevo aplikujeme UiLiULUFUiFi, tímto způsobem dostaneme kostičku do vrchní vrstvy, kde ji již umíme správně umístnit Složení poslední vrstvy Skládá se z několika dílčích kroků. Prvním krokem je složení kříže na horní stěně. Kostka se musí nacházet v jednom ze stavů (obrázek 1.6), kde jsou zleva zobrazeny stavy kostky, které můžeme postupně procházet aplikací pravidel FRURiUiFi, dokud nám nevznikne kříž. Je důležité, aby byla kostka vždy správně otočena, jako je na obrázcích. 9

14 Obrázek 1.6: Kříž poslední vrstvy Další krok je složení hran horní vrstvy. Horní stěnu si otočíme tak, aby přední horní hrana byla správně orientována (obrázek 1.7). A aplikujeme pravidlo RURiURUURi, po tomto kroku si zkontrolujeme, zda se změnil počet správně poskládaných hran horní vrstvy, pokud nedošlo ke změně, tak dále pokračujeme stejným pravidlem. Občas se stává, že se složí pouze dvě hrany sousedních stěn. V tomto případě kostku otočíme směrem doprava tak, aby první správně složená hrana vrchní vrstvy byla na pravém boku kostky. Poté opět aplikujeme pravidlo RURiURUURi. Obrázek 1.7: Složení hran horní vrstvy Umístnění rohů na správné místo, bez ohledu na orientaci nálepek. K tomuto kroku používáme jediné pravidlo URUiLiURiUiL. Pokud není ani jeden roh na správném místě, může aplikovat na kostku pravidlo. V případě, že máme jeden roh správně umístněný, musíme kostku otočit tak, aby byl správný roh v pravém, horní rohu přední stěny a posléze aplikujeme pravidlo, do doby než budou všechny rohy správně. Obrázek 1.8: Správné umístnění rohů 10

15 Správná orientace rohů je to poslední krok při skládáni Rubikovy kostky. K tomuto kroku využijeme pravidlo RiDiRD, které jsme používali již při skládání rohů první vrstvy. Pokud máme nějaký roh správně orientován, tak kostku musíme otočit tak, aby správný roh byl na nahoře vpravo na pravé straně kostky (obrázek 1.9). Nyní použijeme pravidlo RiDiRD tolikrát, až bude pravý horní roh přední stěny správně orientován. Neotáčíme celou kostkou, pouze otáčíme horní stěnu proti směru hodinových ručiček, dokud nenarazíme na další špatně orientovaný roh. Na špatný roh aplikujeme pravidlo RiDiRD. Pokud již jsou všechny horní rohy správně složené, stačí správně otočit jednotlivé vrstvy a máme kostku složenou. Obr. 1.9: Správná orientace rohů 1.3 Nejdříve rohy pak hrany (metoda ortega) Tato metoda je jedna z nejrychlejších způsobů jak složit kostku. Ke svému složení používá 15 algoritmů. Je nejvýhodnější v poměru výkonu, kdy s malým množstvím algoritmů rychle dosáhne složení kostky. Při této metodě je průměrně potřeba 75 tahů ke složení kostky. Metoda se skládá z několika kroků [8]: Složení jednoho kříže jak již z názvu metody vyplívá, začínají se skládat rohy. Zvolíme si barvu, kterou budeme skládat. Musíme vytvořit kříž ze čtyř rohů a středu stěny (obrázek 1.10). Na tento krok nejsou dány žádné postupy. Obrázek 1.10: Složený kříž Složení kříže na druhé straně kostku otočíme, aby složený kříž byl na spodní straně. Po otočení kostkou, máme různé možnosti, jak mohou být kostky rozloženy (obrázek 1.11). 11

16 Obrázek 1.11: Možnosti rozložení kostiček Pod každou kostkou je uvedena posloupnost tahů, které vedou ke složení kříže rohů na horní straně. Při použití těchto posloupnosti tahů, nedojde k poškození již složeného kříže na spodní straně. Zde se zavádí konvence pro nové značení tahů, R2 znamená, že bude proveden tah R dvakrát za sebou. Srovnání rohů umístníme rohy na správné místo, tím nám vzniknou kříže rohů na všech stranách. Obrázek 1.12: Algoritmy pro srovnání rohů Umístnění hran do dolní a horní vrstvy Obrázek 1.13: Algoritmy pro umístnění horní a vrchní vrstvy 12

17 Umístnění hran ve střední vrstvě Obrázek 1.14: Algoritmy pro umístnění hran ve střední vrstvě 1.4 Další metody Metoda Jessica Fridrich Je nejrychlejší způsob skládání Rubikovy kostky vůbec, pomocí této metody bylo překonáno několik světových rekordů. Aktuální světový rekord skládání Rubikovy kostky drží Erik Akkersdijk s časem 7,08 sekundy [15]. Velkou nevýhodou této metody je 120 algoritmů, které si musí člověk zapamatovat. Kostku touto metodou lze složit v průměru 55 tahy. [8] Obrázek 1.15: Hlavní kroky metody Fridrich Metoda Lars Petrus Tato metoda spočívá ve vytvoření tzv. pracovního rohu 2x2x2, který se pak v dalším kroku rozšíří na 2x3x2, poté se zorientují zbylé hrany a následně se rozšíří na 3x3x2. Výhodou této metody je, že ze všech zmíněných potřebuje na složení nejméně tahů. Je u ní ovšem větší problém vidět kroky dopředu a neztrácet tolik času prohlížením kostky a plánováním dalšího kroku. [8] 1.5 Nejlepší řešení Podle prováděných výzkumů na výkonných počítačích může být Rubikova kostka z jakéhokoliv stavu vrácena do správné polohy za ne více než 26 pohybů. Dva studenti bostonské university Daniel Kunkle a Gene Cooperman provedli v roce 2007 výzkum, kde pomocí superpočítače dokázali vypočítat konečné řešení hlavolamu za 63 hodin. Studenti použili dvoukrokovou techniku výpočtů. Nejdříve naprogramovali počítač tak, aby přišel na jednu z napůl vyřešených variant. Věděli, že jakoukoli z patnácti tisíc úloh vyřeší několika tahy. Výsledky 13

18 ukázaly, že jakákoliv zamíchaná kostka může být vyřešena na maximálně 29 pohybů, ve většině případů stačí jen 26 nebo méně tahů. Poté se studenti zaměřili na případy, k jejichž řešení je potřeba největší počet tahů. Těch bylo v poměru k ostatním minimální množství. Počítač se poté zabýval možnostmi, jak nejrychleji tyto kostky složit. Superpočítač dokázal, že všechny problémové kostky lze složit za 26 pohybů nebo méně. Studenti byli zatím poslední, kdo se pokusil o dosažení takzvaného God's Number [14], což je minimální počet pohybů, které stačí k vyřešení jakékoliv Rubikovy kostky. Teoretičtí matematici tuto hranici stanovali na pohybů. 14

19 2 Evoluce a evoluční algoritmus Základ evoluce položil roku 1859 Charles Darwin, kdy poprvé publikoval knihu O vzniku druhů přirozeným výběrem čili zachováním vhodných odrůd v boji o život. Darwinova teorie je založena na přírodním výběru a vzniku většího počtu jedinců, než je okolní prostředí schopné uživit. To má za důsledek vznik konkurence a boj o přežití. Pokud v generaci existují dědičné odchylky, potom v rámci dané populace přežijí jedinci s výhodnějšími odchylkami a budou se s větší pravděpodobností rozmnožovat na úkor jedinců s méně vhodnými vlastnostmi. Díky tomu přežívají pouze nejsilnější jedinci, a celý biologický druh se přizpůsobí okolí, ve kterém žije. Darwin přišel s myšlenkou, že přírodním výběrem nelze vše vysvětlit, takže přišel s teorií o vlivu používání, nečinnosti a dědičnosti vlastností získaných transmutací druhů. [6] Základní kameny Darwinovy teorie: populace je geneticky různorodá, proměnlivost populace je náhodná vzhledem k prostředí. populace mají neomezenou kapacitu růstu, ale prostorové zdroje jsou omezené a proto přežívají pouze nejsilnější jedinci. Potomky plodí převážně nejlépe vybavení jedinci, a tím přenášejí své genetické informace do další generace Biologická evoluce populace v průběhu generací obsahuje tři komponenty [2]: Přirozený výběr proces, ve kterém jedinci lépe adaptovaní na prostředí (vyšší fitness) vstupují do procesu reprodukce s vyšší pravděpodobností jak jedinci s malým ohodnocením. Náhodný genetický drift náhodné události v životě jedinců ovlivňují populaci. Mezi tyto události můžeme zahrnout např. náhodné mutace genetického materiálu, nebo náhodná smrt jedince s velkou fitness hodnotou předtím, než měl možnost zúčastnit se reprodukčního procesu. Náhodné efekty genetického driftu jsou významné hlavně pro menší populace Reprodukční proces z rodičů se vytvářejí potomci. Genetické informace potomků jsou tvořeny vzájemnou výměnou genetické informace rodičů. Nejčastější způsob je, že se náhodně vyberou části informací dvou jedinců, z kterých je poté složená genetická informace potomka. Tento proces se jmenuje křížení, a vzhledem k tomu že se vyskytuje u všech složitějších organizmů, můžeme usuzovat, že zvyšuje rychlost a účinnost evoluce. 15

20 Sjednocením poznatků matematické teorie populační genetiky, Darwinovy teorie přírodního výběru aplikované na experimentální i přírodní populace, moderní genetiky, systematiky a paleontologie vzniká ucelená teorie evoluce. Evoluční mechanismy, které příroda prověřila dlouhodobým vývojem, lze velice úspěšně aplikovat i na technické problémy, a to zejména takové, které jsou složité nebo těžko popsatelné matematickými metodami. Evoluční algoritmy jsou velice účinné optimalizační algoritmy, které vycházejí ze znalostí přírodní genetiky a jejích zákonů. Počátky využití principů evoluce k řešení úloh technického charakteru sahají do období 50. let dvacátého století, kdy se vyvinula oblast informatiky, kterou dnes souhrnně nazýváme evoluční algoritmy. Tato oblast se dělí na čtyři základní směry[2][6]: Evoluční strategie slouží k optimalizaci reálných parametrů průmyslových zařízení. Evoluční strategie využívá jako primární operátory především kódování pomocí reálných čísel, mutace, křížení a selekci. Genetické programování využívá metod podobných biologické evoluci při vytváření počítačových programů, které co nejlépe řeší danou úlohu. Řešení je v podobě počítačových programů a fitness funkce je daná jako míra úspěšnosti řešení. Za zakladatele metodologie se považuje John R. Koza a jeho kniha Genetic Programming: On the Programming of Computers. Evoluční programování technika, při níž se aplikují náhodné mutace na konečné automaty reprezentující řešení problému. Pochází z roku 1966, kdy ji ve svém díle Artificial Intelligence through Simulated Evolution prezentovali autoři L.J. Fogel, A. J.Owens a M. J.Walsch. Genetické algoritmy dnes pravděpodobně nejužívanější přístup. Genetické algoritmy byly představeny v publikaci Adaptation in Natural and Artificial Systems, kterou v roce 1975 napsal John H. Holland. [6] Evoluční algoritmus je pojem, pod kterým jsou zahrnuty různé stochastické algoritmy, které mají společné rysy [2]: Používají populaci kandidátních řešení, která umožňuje paralelní přístup k prohledávání. K vytváření nových řešení používají biologií inspirované operátory, které kombinují řešení existující v daném čase. Evoluční algoritmy se inspirovaly v přírodě a přírodních vědách. Snaží se napodobit evoluci takovým způsobem, jakým probíhá v přírodě. Jako teoretický podklad užívají Mendlovu teorii genetiky a Darwinovu teorii přirozeného výběru. Průkopníkem v oblasti evolučních algoritmů je John Holland, který studoval elementární procesy v populaci. [6] Na základě svého výzkumu navrhnul evoluční algoritmus, který pracuje s populací jedinců, přičemž každý z těchto jedinců reprezentuje vhodným způsobem zakódované řešení daného problému. 16

21 Hledání optimálního řešení probíhá formou soutěže v rámci populace postupně se vyvíjejících řešení. Abychom mohli posoudit, kteří členové populace mají větší šanci se podílet na dalším vývoji hledaného řešení, musíme mít možnost jedince kvantifikovat. Mluvíme o ohodnocení (fitness) míře kvality, vhodnosti či reprodukční schopnosti jedince. Jedinci s vyšší hodnotou fitness mají větší šanci přežít déle a podílet se na vytváření následující generace. Použitím technik křížení a mutace potom vzniká nová generace individuí, ve které jsou vlastnosti jedinců částečně zděděny po rodičích a částečně ovlivněny náhodnými mutacemi v procesu reprodukce. Opakujeme-li tento evoluční cyklus v dostatečném počtu generací, můžeme získat populaci s jedinci, kteří mají dostatečné či optimální řešení daného problému. Evoluční proces v sobě zahrnuje značný díl náhodnosti, a proto každý běh příslušného algoritmu nemusí vézt k optimálnímu řešení a může uváznout v suboptimálním řešení. Proces vývoje populace může vlivem náhodnosti zdegenerovat a nejlepší jedinec může reprezentovat pouze lokální optimum, které může být značné odlišné od globálního řešení. Proto se chování genetických algoritmů na konkrétní úloze obvykle popisuje prostřednictvím statistik, které shrnují nejlepší, nejhorší hodnoty sledovaných ukazatelů.[2][3] Evoluční algoritmy využívají celé populace řešení z prohledávaného prostoru namísto jediného počátečního řešení. Tato skutečnost podstatně ovlivňuje celkovou robustnost algoritmu a současně přímo vybízí k paralelizaci vlastního výpočtu. Základní schéma genetického algoritmů bez dalších modifikací je slepým algoritmem[6], protože kromě ohodnocení jedinců v populaci nevyužívá žádné apriorní informace či znalost vážící se ke konkrétnímu problému. To z něj dělá na jednu stranu velmi obecný a univerzální nástroj, na druhé straně je zřejmé, že právě toto ignorování specifických vlastností konkrétního problému znamená, že algoritmus nebude schopen konkurovat speciální algoritmům, které jsou navrženy pro daný problém. Kombinací evolučních algoritmů a používaných speciálních technik, kdy využitím robustnosti genetického algoritmu a doplněním o know-how konkrétního algoritmu pro daný problém, je možné dosáhnout velmi zajímavých výsledků např. memetické algoritmy [18]. 17

22 2.1 Schéma evolučního algoritmu Princip činnosti popsaný v předcházející kapitole, můžeme zapsat pomocí jednoduchého pseudokódu: Nastavení počítadla populace t=0; Inicializace populace P(t); Ohodnocení populace P(t); Začátek cyklu Inkrementace počítadla populace t:=t+1; P (): = Selekce populace P(t); Rekombinace P (t); Mutace P (t); Ohodnoceni P (t); Obnova populace P(t) Konec cyklu (ukončovací kritérium) Při návrhu evolučního algoritmu je třeba řešit následující etapy [4]: zakódování problému musíme správně popsat problém, který řeší evoluční algoritmus. Správnost zakódování ovlivňuje kvalitu celého evolučního běhu. počáteční populace - vygenerování náhodné počáteční populace, která má být geneticky různorodá, aby obsáhla největší část řešeného problému evaluace individuí ohodnocení kvality jedinců. selekce výběr jedinců, kteří budou mít možnost se podílet na reprodukci a svoji genetickou informaci předají do další generace. rekombinace reprodukce vybraných rodičů, kdy dochází ke genetické výměně informací mezi rodiči. Vznikají potomci rodičů, kteří mají genetickou informací z obou rodičů. U evolučních algoritmů slouží k rekombinaci křížení. mutace náhodná změna genetické informace jedince, je prováděna s malou pravděpodobnostní. obnova populace výběr jedinců populace, kteří přežijí a přenesou svoji genetickou informaci do další generace. Do další generace přecházejí s větší pravděpodobností kvalitnější jedinci lépe přizpůsobeni řešenému problému. ukončení algoritmu - nastavení podmínek, při kterých evoluční algoritmus skončí. Jednotlivé etapy jsou detailněji popsány v dalších kapitolách. 18

23 Obrázek 2.1: Grafické schéma evolučního algoritmu. [5] 2.2 Základní pojmy evolučních algoritmů Gen nositelem genetické informace, elementární jednotka informace. Je základní stavební jednotkou chromosomu. Gen může nabývat předem stanoveného množiny hodnot. Každý gen udává hodnotu jedné vstupní proměnné. Chromosom jedinec, individuum populace. Chromosom se dělí na jednotlivé geny. Aby mohl gen určovat příslušnou vlastnost, musí mít možnost nabývat různých hodnot. Většinou se pro chromosomy používá binární kódování, ve kterém jsou zakódovány parametry. Chromosom obsahuje vždy jedno stavové řešení problému. Každý chromosom je ohodnocen fitness funkcí, která je definována jako zobrazení chromosomu do oblasti kladných reálných čísel.[1] Populace soubor individuí, se kterými pracuje evoluční algoritmus. Populace je tvořená konečným počtem chromosomu. Generace soubor jedinců v konkrétním čase (populace v čase). Za čas zde považujeme počet generací od spuštění algoritmu. Genotyp představuje kódovaný zápis řešení. Fenotyp dekódovaný typ řešení, např. binárně zakódované celé číslo 1011, tak fenotypem je dekadická hodnota

24 2.3 Zakódování problému Zakódování a reprezentace problému je první krok při vytváření evolučního algoritmu. Je potřeba zvolit vhodný kód k reprezentaci vlastností jednotlivých řešení, tedy zvolit, jakých hodnot mohou jednotlivé geny nabývat a co budou tyto hodnoty reprezentovat. Správná volba způsobu zakódování problému je velmi důležitá pro úspěch či neúspěch řešení konkrétního problému. Nejjednodušším a nejčastěji používaným řešením je binární zakódování problému. Často se používají i řetězce celých či reálných čísel nebo symbolů z nějaké abecedy. Kromě řetězců lze řešení kódovat do podoby stromu. To je vhodné pro některé úlohy, ale může to znamenat složitější implementaci operátorů genetického algoritmu Binární reprezentace problému Binární kódování znamená, že každý gen může nabývat jen dvou různých stavů: 0 nebo 1. V tomto případě bude tedy počáteční populaci tvořit množina náhodně vygenerovaných binárních řetězců dané délky. Při kódování reálných proměnných do binární podoby dochází ke ztrátě rozlišovací schopnosti. Při návrhu chromosomu je nutné znát obor hodnot a také rozlišovací schopnost vstupních parametrů. Pro všechny vstupní proměnné je vhodné určit minimální přesnost, podle které stanovíme počet genů, které proměnná v chromosomu obsadí. Snažíme se vytvářet co nejkratší chromosomy. Při vytvoření delších individuí se snižuje rychlost konvergence při řešení problému, protože hledáme optimální hodnotu pro více bitů Permutační reprezentace problému Permutační kódování znamená další možnost kódování problému, typický příklad použití je pro TSP problémy [16] - např. problém obchodního cestujícího, pro nalezení nejkratší cesty. Musíme používat zvláštní genetické operátory. K zakódování se používá množina genů pevné délky. Jednotlivé geny mohou nabývat hodnot celého čísla určující cestu. 2.4 Počáteční populace Každý evoluční algoritmus potřebuje znát způsob, jakým může na počátku běhu inicializovat populaci, tzn. jak má vygenerovat první sadu jedinců, od nichž se bude celý vývoj odvozovat. Často se používá náhodná inicializace, která však není vhodná například při práci s omezeními, kdy není třeba populaci naplnit jen nějakými libovolnými jedinci, ale je vhodné vytvořit ji z přístupných jedinců. Aby v iniciální populaci nebyly nesmyslné chromosomy s nulovou hodnotou pro další výpočet. V určitých případech je proto nutné vytvořit vlastní způsob inicializace populace pro konkrétní řešený problém. Počáteční populace totiž musí obsahovat dostatek informací, ze kterých by 20

25 genetický algoritmus mohl vyvinout kvalitní řešení, takže by měla rovnoměrně pokrývat celý stavový prostor. Při generování jedinců lze využít i nějaké znalosti o problému a vygenerovat některé jedince tak, aby byly co nejblíže očekávanému optimálnímu řešení. 2.5 Evaluace individuí Evaluace je ohodnocení jednotlivých členů generace pomocí fitness hodnoty. Správná volba ohodnocení jedince populace fitness je důležitá pro správnou evoluci. Hodnota fitness hraje důležitou roli při evoluci, jak při selekci jedinců pro další reprodukci, tak při obnově populace. V těchto krocích je úspěšnost výběru závislá na hodnotě fitness jedince. Fitness je v biologii definována jako relativní schopnost přežít a reprodukovat se v daném prostředí a populaci. [6] Hodnota fitness vyjadřuje kvalitu řešení, čím je hodnota fitness větší, tím je dané řešení problému reprezentované jedincem perspektivnější lepší. Proto ohodnocení jedinců musíme správně zvolit, aby byly správně ohodnoceny všechny možnosti řešeného problému. Nejobecnějším vyjádřením je hrubá fitness, která je vždy udávána v hodnotách přirozených řešenému problému. Standardizovaná hodnota fitness je vyjádřením hrubé hodnoty fitness do podoby, v které je stále menší numerická hodnota fitness žádanější. Výpočet fitness bývá často velmi časově náročný. Chybná specifikace fitness funkce může genetický algoritmus znehodnotit, neboť může vézt k tomu, že algoritmus bude ve skutečnosti optimalizovat vzhledem k jiným požadavkům, než chceme. 2.6 Selekce Operátor selekce vytváří novou populaci P (t) výběrem jednotlivců s možným opakováním ze staré populace P(t). Je třeba vyřešit otázku, jak vybírat z populace jedince vhodné k další reprodukci. Selekční mechanismus musí imitovat proces přirozeného výběru, kde má silnější jedinec větší šanci být vybrán. Pokud tuto podmínku splníme, potomstvo kvalitních jedinců se bude vyznačovat ještě lepšími vlastnostmi a tedy i vyšším ohodnocením. Na druhou stranu však selekční kritérium musí být zvoleno i tak, aby v populaci vybraných jedinců byla zachována dostatečná rozmanitost. Pokud kritérium bude favorizovat jen nejsilnější jedince, můžeme lehce dojít k situaci, že individua s relativně vyšším ohodnocením velice rychle převládnou v celé populaci. Dramaticky se tím sníží rozmanitost v populaci, a tím může dojít ke ztrátě určitých genetických informací. Dramaticky se tím sníží rozmanitost v populaci, možnosti pro další evoluci mohou být silně omezené a populace může předčasně konvergovat k lokálnímu řešení. Je-li naopak výběrové kritérium příliš volné, evoluční proces bude postupovat jen velmi pomalu a algoritmus bude často pracovat po mnoho generací, aniž by bylo možné zaznamenat jakýkoliv pokrok k řešení problému. Selekční intenzita (selekční tlak) je vyjádřena následujícím vztahem [4]: 21

26 I = M M σ (2.1) Kde M označuje průměrnou hodnotu fitness v populaci před selekcí, a M prúměrnou hodnotu fitness funkce po selekci, a σ je rozptyl fitness hodnot před selekcí. Čím vyšší je selekční tlak, tím rychleji algoritmus konverguje populace po selekci obsahuje více jedinců s vysokou fitness. Zároveň s tím vzrůstá nebezpečí předčasné konvergence do lokálního optima. Pro tuto situaci byl zaveden termín take over time, který označuje počet generací, které jsou zapotřebí, aby selekce zaplnila celou populaci N jedinců nejlepším chromosomem při neúčasti rekombinačního a mutačního operátoru. Ztráta variability je měřítkem ztráty genetického materiálu. Během selekce není část chromosomů z populace vybrána. Tyto chromosomy však také obsahují informaci. Právě jejich ztráta zvyšuje riziko předčasné konvergence genetického algoritmu. Ztráta variability je měřítkem ztráty genetického materiálu. Během selekce není část chromosomů z populace vybrána. Tyto chromosomy však také obsahují informaci. Právě jejich ztráta zvyšuje riziko předčasné konvergence genetického algoritmu. Ztráta variaci P d je poměr chromosomů, které nebyly vybrány k celkovému počtu chromosomů v populaci. [4] Selekčních algoritmů a jejich modifikací je celá řada. Nejčastěji používané algoritmy, které poskytují použitelné výsledky, jsou následující: proporcionální selekce lineární uspořádání exponenciální uspořádání turnajová selekce Proporcionální selekce (ruleta) Princip ruletové selekce je jednoduchý, v každé generaci přidělíme na pomyslném ruletovém kole každému jedinci tak velký výsek, který odpovídá hodnotě jeho fitness. Pak toto ruletové kolo roztočíme a při každém zastavení získáme jednoho jedince, na jehož políčku se kulička zastavila. Pravděpodobnost výběru i-tého jedince z populace je dána následující pravděpodobnosti: p i = f i N j=0 f j (2.2) [3] Cílem selekce rodičů je dát větší šanci těm členům populace, kteří mají lepší ohodnocení a dosahují lepších výsledků v řešení problému. Pravděpodobnost výběru jedince je závislá na jeho fitness hodnotě. To může ale působit i kontraproduktivně, pokud se v populaci objeví jedinec s výrazně vyšší hodnotou fitness funkce, je populace postupně nahrazována potomky tohoto rodiče. Až nakonec všechny členy populace budou tvořit jedinci s velice podobnými vlastnosti a evoluce dosáhne lokálního maxima. Aby k této situaci tak často nedocházelo, je vhodné původní 22

27 vyhodnocování fitness funkce upravit, aby redukovala rozdíl mezi kvalitou nejlepšího a nejhoršího individua. Nejčastěji se používá metoda komprimace fitness funkce.[4] Která původní fitness upraví podle předpisu: f i = f i + β t (2.3) [4] kde β je nejhorší fitness v aktuální t-generaci. Touto úpravou vznikne jiné procentuální rozložení jedinců na kole rulety. Názorný příklad vidíte na obrázku 2.2, kde se snížilo procentuální zastoupení jedince D, z původních 54% na 46%. Naproti tomu ostatním individuím podíl na ruletě vzrostl. Obrázek 2.2: Porovnání procentuálního rozložení fitness s komprimovanou fitness Lineární uspořádání Lineární uspořádání potřebuje setříděnou populaci podle fitness tak, aby nehorší jedinec měl index 1 a nejlepší index N. Potom pravděpodobnost výběru je dána vztahem: P lin rank i = 2 s N 2i s 1 + N N 1 i 1,2,., N (2.4)[4] kde s je selekční tlak. [4] Exponenciální uspořádání Od lineárního uspořádání se liší pouze tím, že pravděpodobnost výběru není v populaci rozložena lineárně, ale s exponenciální závislostí. Index N má jedinec s nejlepší fitness. Pravděpodobnost výběru í-tého individua je dán vztahem: 23

28 P exp rank i = 1 e i c i 1,2,., N (2.5)[4] Parametr c volíme v rozsahu 0 < c < 1. Změnou parametru c lze docílit vhodného selekčního tlaku při nízké ztrátě variability. Algoritmus exponenciální uspořádání patří k nejlepším způsobům selekce potomků. Nevýhodou stejně jako u předchozího lineárního uspořádání je potřeba seřazení jedinců podle ohodnocení. [4] Turnajová selekce Tato metoda dosahuje dobrých výsledků, které jsou blízké metodě exponenciálnímu spořádání. Výhodou této metody je její vlastní jednoduchost a absence potřeby na setřídění populaci, proto je turnajová selekce velmi používána. [4] Princip této metody selekce spočívá v náhodném vybírání t jedinců generace, kteří jsou pak porovnáváni mezi sebou. Do další generace postupuje nejlepší jedinec z těchto t vybraných. Tento postup opakujeme N-krát, kde N je počet jedinců v populaci Pravděpodobnostní výběr Metoda výběru je kombinací předchozích metod, a to proporcionální selekce a turnaje. Nejdříve jsou pomocí rulety vybráni dva jedinci populace, na které se poté aplikuje turnajová selekce. Dále postupuje silnější z těchto dvou jedinců. 2.7 Generování potomků Křížení je hlavním motorem genetického algoritmu, a proto jeho správná volba může být rozhodující pro nalezení řešení. Mutace slouží zejména ke zkoušení variant, které vzniknou klasickým křížením, a také k udržení určité různorodost populace Křížení Operátor křížení se používá pro genetické algoritmy a je základním operátor pro evoluci populace. Křížení bývá často předmětem protichůdných názorů, neboť u některých vědců má nepatřičný biologický podklad. Zastánci genetických algoritmů vyzdvihují obvykle přínos křížení pro výměnu informací mezi jedinci. Odpůrci GA naopak považují křížení za rozbíjení bloků bitů a operátor křížení aplikují stejně jako mutaci s velmi malou pravděpodobností. Operátor křížení je v rodičovské populaci aplikován s pravděpodobnosti P c = 0,7, tzn. 70% jedinců nové populace vznikne křížením rodičů, zbytek populace tvoří původní rodiče, či jejich mutace. [3] Pří křížení dochází ke kombinaci genů dvou rodičovských jedinců, z kterých vzniknou dva noví potomci. Na počátku křížení je vybrán bod křížení. Bod je vhodné vybrat s ohledem na způsob 24

29 kódování informace v jedinci, aby nedocházelo k rozbíjení stavebních bloků. Při křížení nemusí docházet vždy ke kopírování genů, ale můžeme použít různé funkce, které kopírované hodnoty upraví (např. průměrování genů) Jednobodové křížení (one-point crossover) Popíšeme si nejjednodušší a nejpoužívanější typ křížení jednobodové křížení. Vychází z biologické analogie, kdy se křížení může uskutečnit nad jedním nebo více chromosomy a tak záleží na náhodném výběru bodu, odkud se začíná křížit. Obecně je definováno pro dva řetězce stejné délky. Pro náhodnou dvojici jedinců generace A a B a náhodně vybereme bod křížení. Prvního potomka získáme konkatenací genů do bodu křížení z rodiče A a zbývajících genů z rodiče B. Druhého potomka získáme přesně opačně. Vznikají tak dva noví potomci, kteří obsahují z každého rodiče část genetické informace.[6] Obrázek 2.3: Jednobodové křížení Vícebodové křížení (multi-point crossover) Na rozdíl od předchozího křížení zde máme více bodu křížení, a vyměňujeme geny mezi těmito body. Může být více úseků chromosomu, mezi kterými probíhá výměna. U části potomků může dojít ke zvýšení fitness funkce. Tito jedinci se díky kvůli svojí kvalitě dostanou do nové populace s větší pravděpodobností.[6] Obrázek 2.4: Vícebodové křížení 25

30 Uniformní křížení (uniform crossover) Představuje další alternativu rekombinačního operátoru. Tento operátor vygeneruje masku z bitové 0 a 1. Masku postupně prochází společně s chromosomy rodičů, pokud je v masce nastavena 1, tak vymění chromosomy mezi potomky. Pokud je 0, tak překopíruji bez změny chromosomy z rodičů do potomků. Uniformní křížení bývá odmítáno pro příliš velké rozvracení kódu podle teorie stavebních bloků. Na druhou stranu ale uniformní křížení přináší do populace žádanou různorodost a tím genetický algoritmus je výhodný při řešení složitějších vícerozměrných funkcí s více lokálními extrémy. Uniformní křížení je silnou zbraní v boji proti předčasné konvergenci algoritmu. Prostor potenciálních řešení úlohy je prohledáván mnohem intenzivněji než v případě jednobodového křížení.[4][5] Obrázek 2.5: Uniformní křížení Cut and splace křížení Velice specifický a ne přiliž častou používaný operátor křížení, nejčastěji se používá v messy genetických algoritmem. Výsledkem operace cut and splice dvou chromosomů jsou dva nové chromosomy, které mohou mít rozdílný počet genů než rodiče. Součet genů obou chromosomů zůstává nezměněn. Vygenerujeme bod křížení - řezu (cut), pokud chromosomy mají rozdílnou délku, bod křížení nemusí být dostupný pro oba rodičovské chromosomy, tak se aplikuje pouze na delšího z nich. Situace je znázorněna ve spodní části obrázku 2.6 [11] Obrázek 2.6. Příklad křížení cut and splace 26

31 2.7.2 Mutace Mutace obecně slouží ke genetické obměně populace, která by křížením mohla ztratit různorodost a tím možnost najít nová řešení pomocí křížení. Mutace někdy přinese nečekané zlepšení, ale také může jedince poškodit. Mutace obvykle probíhá změnou příslušného genu. Zda dojde k mutaci genu, závisí na pravděpodobnosti mutace P m. Pravděpodobnost použití mutace bývá obvykle P m = 0,1%.[3] Většina biologů věří, že právě mutace je oním hnacím motorem evoluce, v níž nové vlastnosti jinak než mutací vzniknout nemohou. Mutace v binární reprezentaci znamená pouze negaci příslušného bitu. Obrázek 2.7: Mutace a výměna dvojice genů 2.8 Obnova populace Způsob obnovy je důležitá součást evolučního algoritmu. Obnova populace by měla zajišťovat přenos kvalitních jedinců do nové generace, ale zároveň musí také zachovávat různorodost populace a umožnit přežití i hůře ohodnocených jedinců, kteří nesou jinou genetickou informaci než nejlepší jedinci. K zajištění těchto funkcí se používají způsoby obnovy [4][6]: Generativní s úplnou obnovou metoda kdy nová populace je tvořena pouze z potomků vzniklých v příslušné generaci. Původní členové generace nejsou pří obnově populace vůbec uvažováni. Tento způsob obnovy populace má analogii v biologii (např. jednoleté rostliny, kdy je populace rostlin každý rok plně obměněna). Potomci zcela nahrazují své rodiče v populaci. Výhodou metody je zachování genetické různorodosti v populaci. Někdy tato metoda může vézt k pomalejší konvergenci, protože dobrá řešení obsažena v rodičích mohou být křížením zničeny a toto řešení v nové populaci nebude obsaženo. Částečná obnova metoda při obnově populace pracuje jak s rodiči tak potomky z populace. Kdy pouze jeden potomek nahradí nejslabšího jedince populace. Častěji se používají různé kombinace těchto dvou způsobů, kdy je část nové populace vybírána z rodičů a posléze zbytek vybrán z potomků. 27

32 Používají se různé techniky obnovy: Turnaj používá se stejný postup při selekci jedinců Elitismus tato metoda preferuje jedince s nejvyšším ohodnocením. Prochází se celá generace a vždy chromosom s nejvyšším ohodnocením je přidán do nové populace. Tímto způsobem postupujeme do doby, než nová generace nebude mít požadovaný počet jedinců. Již jednou vybraného jedince do další generace ignorujeme. Tato metoda může vézt k velké ztrátě genetické rozmanitosti. Faktor přemnožení náhodně je vybrána podmnožina rodičů, kteří budou nahrazeni potomky s podobným genotypem. Vymírání stářím chromosomy si mohou uchovávat svůj biologicky věk. Při překročení maximálního věku chromosomu, již automaticky do další generace nepostupují. 2.9 Ukončení genetického algoritmu Problém ukončení genetického algoritmu můžeme transformovat na problém nalezení globálního optima zkoumané funkce. Pokud známe hodnotu fitness funkce v globálním extrému, běh genetického algoritmu můžeme zastavit, pokud minimálně jeden chromosom populace dosáhnul požadované fitness funkce. Většinou se ale setkáváme s případem, kdy hodnotu fitness funkce v globálním optimu neznáme. Genetický algoritmus ukončíme, pokud již většina jedinců populace konvergovala k nejlepšímu jedinci v populaci. Řešení konvergovalo k lokálnímu maximu, a je malá pravděpodobnost že jedinci, díky operátoru mutace a křížení dojde k nalezení optimálnějšího řešení. Při neznalosti optimálního řešení je výhodné opakované spuštění genetického algoritmu, a pokud nejlepší jedinec končí ve stejném ohodnocení, můžeme řešení považovat za globální maximum. Můžeme mít tedy různé podmínky pro ukončení[4]: Nalezení optimálního řešení genetický algoritmus v průběhu generací konvergoval ke globálnímu optimálnímu řešení. A není důvod dále pokračovat v evoluci, genetický algoritmus je ukončen a vráceno je jeho optimální řešení. Dosažení maximálního počtu generací výpočet je ukončen, pokud počet generací dosáhnul předem stanoveného počtu generací, které jsme si zvolili na začátku algoritmu, a nebo čas výpočtu přesáhnul přidělený strojový čas. Genetické algoritmy mohou řešit složité problémy, a nalezení optimálního řešení může být časově velice náročně, a proto by měl být každý genetický algoritmu omezen časovým kvantem či počtem generací. Pokud bychom jej nijak neomezili, mohli by jedinci populace uváznout v lokálním maximu, z kterého by se již nedostali. Nesplnili by podmínku nalezení optimálního řešení a algoritmus by běžel dál. 28

33 Nedostatečný přírůstek fitness funkce - na základě znalosti konvergenční křivky, která má většinou logaritmický průběh, můžeme odhadnout stav jedinců, ve kterém již nebude docházet k výraznému zvyšování kvality nalezeného řešení. Abychom nevykonávali zbytečně další iterace genetického algoritmu se zanedbatelným přírůstkem fitness funkce, algoritmus ukončíme. Znalost genetického fondu v každé generaci můžeme zjistit počet chromosomů, jejich hodnota fitness funkce je shodná s nejlépe hodnoceným chromosomem v populaci. Výpočet skončí, pokud počet překročil stanovenou mez Optimální nastavení genetického algoritmu Správné nastavení parametrů a operátorů genetického algoritmu je jednou z nejproblematičtějších oblastí genetických algoritmů. Pro stanovení vhodných hodnot často neexistují žádné metody a jejich stanovení závisí pouze na experimentálním zkoušení a zkušenostech programátora. Počet jedinců v populaci je jedním z nejdůležitějších atributů, který musíme nastavit, pokud chceme genetické algoritmy použít. [13] Otázka volby adekvátní velikosti populace je velice obtížná, protože silně závisí na obtížnosti problému. Pokud bude populace příliš malá, GA nemusí mít dostatek informací, aby identifikoval dobré rysy řešení. Velká populace naopak může znamenat plýtvání časem při zpracovávání nepotřebných jedinců, což může vést ke značnému snížení efektivity. Proměnná Význam nastavení Typické hodnoty Velikost populace Malá velikost populace zvyšuje riziko uváznutí v suboptimálním řešení. Přílišná velikost může zpomalit výpočet, aniž by se zvýšila kvalita řešení. Musíme nalézt kompromis. <100 P c Pravděpodobnost křížení, že jedinec postoupí křížení 0,5 <P c <1 P r Pravděpodobnost, že se chromosom dostane do reprodukční části. Jedná se o variantu P c 0,5 <P r <1 P m Pravděpodobnost, že u genu dojde k mutaci 0,01< P m <0,1 Tabulka 2.1: Typické nastavení hodnot 29

34 2.11 Robustnost Evoluční algoritmy jsou typické svojí robustností, schopností řešit obtížné optimalizační a rozhodovací úlohy, které lze charakterizovat vlastnostmi jako je multimodálnost, multikriteriálnost a různými typy omezujících podmínek. Jejich nasazení je efektivní v úlohách, které lze definovat následovně: [4] Prostor řešení je příliš rozsáhlý a chybí expertní znalost, která by umožnila zúžit prostor slibných řešení, Nelze provézt matematickou analýzu problému, Tradiční metody selhávají Jde o úlohy s mnohačetnými extrémy, kriterií a omezujícími podmínkami Evoluční algoritmy mají ale i své nevýhody: Kvalitu řešení lze ohodnotit pouze relativně. Nelze otestovat, zda se jedná o globální optimum Pro mnohé úlohy je typická velká časová náročnost, Pro příliš rozsáhle úlohy poskytuje algoritmus řešení příliš vzdálená od globálního optima Ukončení je na základě časového limitu (počet generací) Klamné problémy Za klamný problém je považován stav, kdy je globální optimální řešení obklopeno průměrnými či podprůměrnými ohodnocení. Pokud se tedy jedinec dostane do blízkosti globálního řešení, nebude s největší pravděpodobností veden do globálního maxima, ale použije nadprůměrné řešení v okolí. Nadprůměrné ohodnocení odvede jedince dál od globálního maxima. Jako příklad jednoduchého klamného problému můžeme posloužit hledání maxima funkce f(x), která je zobrazena na obrázku 2.8. Je zřejmé, že u takto jednoduché funkce i při relativně malé populaci existuje velká pravděpodobnost, že se genetickému algoritmu podaří nalézt maximum již v počáteční náhodně vygenerované populaci. Předpokládáme funkci g(x 1,., x 20 ) je definována nad dvaceti čtyřbitovými řetězci a platí, že: g(x 1,., x 20 ) = f(x 1 ) + + f(x 20 ) (2.6)[6] Pravděpodobnost, že genetický algoritmus nyní najde již v počáteční populaci optimální řetězec (složený z osmdesáti nul), je velmi malá a vzhledem ke způsobu fungování evolučního algoritmu a struktuře problému lze snadno experimentálně ověřit, že evoluční postup bude zaveden spíše do maxima lokálního (řetězec složený z osmdesáti jedniček). [6] 30

35 Obrázek 2.8: Příklad klamné funkce Využití evolučních algoritmů Evoluční algoritmy nacházejí uplatnění všude tam, kde klasické metody analytické či heuristické nedostačují, tedy zejména při řešení složitých nelineárních NP úplných úloh. Používají se v mnoha oblastech inženýrského návrhu a umělé inteligence [4]: Numerická, kombinatorická optimalizace Modelování a identifikace modelu Plánování a řízení Inženýrský návrh Dolování dat Strojové učení a umělá inteligence Velmi známou úlohou je nalezení nejkratší Hamiltonovské cesty v grafu. V praxi se může jednat o řešení logistické úlohy obchodního cestujícího, známé pod zkratkou TSP. Evoluční algoritmy se používají pro numerickou i kombinatorickou optimalizaci, při návrhu obvodů, plánování výroby, strojovém učení, v tvorbě ekonomických, sociálních a ekologických modelů atd. 31

36 3 Implementace V této kapitole je popsán způsob jaký jsem zvolil pro evoluční algoritmus, a jak jsem jednotlivé části algoritmu implementoval. 3.1 Zakódování problému Při řešení hlavolamu je kostka v náhodném stavu a úkolem je zjištění posloupností pohybů, kterými se kostka správně složí. Musí se tedy ukládat všechny tahy kostkou od počáteční konfigurace ale také aktuální stav kostky, aby se mohl ohodnotit fitness funkcí. Stav Rubikovy kostky určuje 54 barevných nálepek a jejich pozice na kostce. S kostkou se může otáčet všemi směry, takže ani středy hran nemají své pevné místo. K reprezentaci jsem si vybral jednorozměrné pole 54 znaků. Kde jednotlivému znaku pole odpovídá pevná pozice na kostce (obrázek 3.1), která je určena držením kostky a je dána přední stěnou natočenou k řešiteli. Obrázek 3.1: Pozice znaků pole v Rubikově kostkce Jednotlivá políčka pole nabývají prvního znaku z anglických názvů barev (White, Blue, Orange, Yellow, Green, Red). Kostka na obrázku 3.1 je tedy jednoznačně určena polem znaků: WRGYOOGBWORBWWGBGRYYBORBYOWROOYYRGRRBBYGBGYBORWGWGYWWO Existuje celá řada možností jak otáčet kostkou, kdy můžeme otáčet jen jednou vrstvou, dvěma či pouze prostřední vrstvou. Pro své řešení jsem si vybral pouze základní skupinu pravidel (obrázek 1.2), která otáčí všemi stěnami po i proti směru hodinových ručiček, z těchto jednoduchých pravidel je možnost poskládat ostatní pohyby kostkou, proto používám jen základní. Otáčení celou kostkou nemá vliv na správnost složení celé kostky, proto otáčení kostkou neuvažuji a nikde neukládám. 32

37 Nyní si můžeme stanovit pojmy evolučního algoritmu gen, chromosom a populace. Chromosom je složen z genů, kde v každém genu je uložen jeden tah kostkou. Celý chromosom je tedy dán geny, které představují posloupnost tahů kostky z počáteční do současné konfigurace. Důležité je dodržovat posloupnost genů tedy pořadí tahů. Pomocí těchto tahů jedince, které se postupně aplikují na počáteční konfiguraci kostky, získáváme novou konfiguraci, ze které se může vypočítat hodnota fitness funkce Výpočet fitness funkce Každý chromosom populace představuje jeden bod v prostoru řešení, a tomuto bodu musí být program schopen vypočítat hodnotu fitness. K ohodnocení konfigurace kostky slouží fitness funkce. Hodnota fitness funkce vyjadřuje kvalitu řešení daného chromosomu. Způsob jak vytvořit správnou fitness funkci se odvíjí podle zadaného problému a požadavků, které od ní očekáváme. Fitness funkce pro Rubikovu kostku by měla vracet hodnotu odpovídající správnosti složení kostky. Maximální hodnotu fitness získá chromosom, který bude mít kostku v konfiguraci, kde všechny stěny jsou jedné barvy. Při vytváření fitness funkce se musí brát zřetel na náročnost výpočtu fitness funkce. Přílišně složité ohodnocení by mohlo brzdit program. Výpočet fitness funkce může být odvozen pouze z vlastností, které máme dané hlavolamem Rubikovy kostky. Kostka se skládá z 6 stěn, každá stěna z 9 kostiček s nálepkou, která může mít 6 různých barev. Ve své práci jsem použil různé možnosti ohodnocení fitness funkce: 1. Základní možnost - všech 54 nálepek hodnoceno samostatně. Každá nálepka se porovnávala se středem strany, na které leží. Pokud nálepka i střed mají stejnou barvu, tak pro nálepku byla hodnota fitness 1, v opačném případě 0. Výsledná fitness funkce je dána součtem všech hodnot nálepek. Fitness funkce nabývá hodnot 6 až 54. Toto ohodnocení fitness funkce je jednoduché, ale z pohledu správnosti ohodnocení celé kostky není příliš vhodné. Nálepky s fitness hodnotou 1 nemusejí být správně na kostce umístněny (obrázek 3.2). Např. horní levý roh přední stěny (bílý střed) je ohodnocený 1, ale tato kostička je špatně umístněna, protože zbylé dvě nálepky rohu nemají správnou barvu. 2. Středy, rohy a hrany ohodnocení fitness funkci využívá faktu, že kostka je složena z mechanických dílů s různým počtem nálepek. Střed 1 nálepka, hrana 2 nálepky a roh má tři nálepky. Těchto mechanických částí je celkem 26, hodnota fitness funkce je v rozmezí 6 až 26. Na rozdíl od předchozí možnosti ohodnocení fitness funkce, je již roh ohodnocen jedničkou pouze v případě, že všechny tři nálepky rohu mají stejnou barvu jako střed příslušné strany, na které leží. Analogicky platí i pro hranu. 3. Zvýhodnění rohů, hran ohodnocení správného rohu či hrany nemusí být stejné. Fitness funkce může správně umístněné hraně přidat větší hodnotu než rohu, a tím dávat větší možnost přežití do další generace chromosomům, které mají více správně umístněných 33

38 hran. Tímto způsobem by se mohli do určité míry preferovat konfigurace, kde by byly umístněny správně kříže na stěnách. 4. Správně složený artefakt kostky fitness funkce zohlední správné složení určitého artefaktu v kostce. Mezi tyto artefakty můžeme řadit například správně složená stěna, kříž ve stěně, správně složené dvě vrstvy kostky atd. Musí se ale volit rozumný nárůst hodnoty za tyto správně složené artefakty. Tento způsob může být časově náročnější. Při hledání artefaktů musíme procházet všechny možnosti, kde by mohly být v kostce umístněný. Obrázek 3.2: Ohodnocení fitness základním způsobem Vhodná volba fitness funkce může ovlivnit rychlost a úspěšnost nalezení optimálního řešení. Naopak nevhodná volba může evoluční řešení degradovat a optimální řešení nemusí být nikdy nalezeno. Příklad ohodnocení fitness funkcí chromosomu populace je na obrázku 3.3. Chromosom je určen svými geny R-U-D-L-U- a také počáteční konfigurací kostky. V tomto příkladu je použit způsob ohodnocení fitness středů, rohů a hran. 34

39 3.1.2 Počáteční populace Obrázek 3.3: Příklad ohodnocení chromosomu fitness funkcí Počáteční populace by měla být co nejvíce rozmanitá, aby pokryla co největší šíři problému vycházející z načtené konfigurace Rubikovy kostky. Proto počáteční populace nevzniká zcela náhodně, ale má určité omezení. Část chromosomu bude obsahovat menší množství tahů, aby byla schopná lépe řešit Rubikovu kostku, které od správného složení je pár tahů. Zbytek chromosomu populace bude obsahovat větší množství náhodně generovaných tahů, které nám poskytnou řešení kostky vzdálenější od původní konfigurace. 35

40 3.2 Vytváření nových potomků Pro vytváření potomků jsem ve své práci zvolil dva přístupy. První způsob je vytváření stromové struktury potomků. Stromová struktura vytváří větší množství řešení o různých délkách, z kterých se vybírají jen nejlepší řešení, které budou tvořit nové potomky. Druhý způsob je klasický přístup evolučního algoritmu, kdy pomoci křížení a mutací se vytvářejí generace potomků Strom První způsob vytváření potomků je použití stromové struktury. Kdy pro každého rodiče vybraného k reprodukci je vytvořena stromová struktura potomků (obrázek 3.4). Kořen stromu je vybraný rodič, ke kterému se přidávají rekurzivně listy s náhodnými tahy, tímto způsobem se vytvoří strom podle zadaných parametrů. Každý uzel stromu, jak vnitřní tak vnější, obsahuje dvě hodnoty: Tah náhodně vygenerovaný tah kostkou Hodnota fitness ohodnocení konfigurace Řešení kostky není dáno pouze tahem uloženým v uzlu stromu, ale je dána všemi tahy rodiče a tahy uzlů, kterými musíme projít od kořene k aktuálnímu uzlu. Cestou stromem vyhodnocujeme tahy dané jednotlivými uzly, kterými procházíme. Na obrázku 3.4 pro nejlevější prvek v hloubce 3 je vyznačená cesta i složení těchto tahů. Pomocí tahů získáme aktuální konfiguraci kostky, která je vyhodnocena fitness funkci a hodnota uložena do uzlů. Obrázek 3.4: Stromová struktura Počet náhodně vygenerovaných řešení je dán nastavením parametrů: Počet listů kolik listů má vnitřní uzel stromu Hloubka stromu 36

41 Počet všech prvků stromu je dán vztahem: h l i i=1 (3.1) kde l je počet listů každého uzlu, h hloubka stromu. Při nastavení vetší hodnoty listů či hloubky, bude generován strom s velkým množstvím řešení Rubikovy kostky (obrázek 3.5), které se musí všechny vyhodnocovat. Zvyšujeme tím šanci na nalezení optimálnějšího řešení z rodiče, ale značně zvyšujeme náročnost výpočtu. Proto musíme zvolit kompromis, mezi možností nalezení lepšího řešení a časovou náročností výpočtu. Obrázek 3.5: Nárůst počtů uzlů stromu na zadaných parametrech Vytváření potomků stromem jsem chtěl využít pro přechod mezi lokálním maximem a dalším lepším řešením, mezi kterými jsou horší tahy z pohledu fitness funkce. Na obrázku 3.4 první zleva je zachycena konfigurace kostky, která se nachází v lokálním maximu fitness hodnoty. Pokud z této konfigurace kostky uděláme jakýkoliv tah, vždy se zhorší hodnota fitness (pozn. pro tento případ je zvolena fitness funkce, která odpovídá počtu správně složených kostiček). Při generování stromu s hloubkou minimálně 4 může ve stromové struktuře vzniknout cesta, složená z tahů F+U-U-F- (obrázek 3.6). Pro ohodnocení konfigurace kostky vzniklé z této cesty stromem získáme lepší hodnotu fitness, než která měla rodičovská populace. 37

42 Obrázek 3.6: Cesta ve stromu Způsob vytváření potomků stromem dává hodně potencionálních potomků, ale z těchto potomků je vybráno pouze několik nejlepších řešení, a ty jsou po reprodukci předány jako noví potomci. Po vybrání nových potomků je nad těmito prvky provedena s určitou pravděpodobností křížení a mutace Rekombinace rodičů Druhý způsob vytváření potomku je klasický přístup evolučního algoritmu, kdy je použito operátoru křížení k vytváření nových potomků. Aby při operaci křížení nedocházelo k rekombinaci pouze silnějších rodičů, je vždy jeden chromosom ke křížení pevně dán (postupně se prochází selektovaní rodiče). Druhý chromosom je vybírán ze selektovaných rodičů náhodně. Na tyto dva jedince je aplikováno křížení a výsledek je novým potomkem. Program používá různé způsoby křížení s nastavenou pravděpodobností, tak aby bylo dosaženo co nejlepších výsledků. Křížení se většinou používá pro jedince populace stejné délky, kdy je výsledek této operace jasný viz kapitola křížení Křížení vytváří pouze jednoho nového potomka. V případu chromosomů různé délky mám implementované funkce křížení způsobem viz. obrázek 3.7. Chromosomem A je vždy ten, který je pevně dán. Při uniformním křížení se vytváří maska, podle které se přenášejí geny do potomka. Maska má délku shodnou s délkou kratšího jedince. Pokud je A delší než B, tak rozdíl v této délce je vložen do chromosomu potomka. 38

43 Obrázek 3.7: Implementace křížení Při evoluci dochází často ke konvergenci populace, kde v populaci převáží jedinci se stejným genotypem. Při křížení dvou rodičů se stejným genotypem, vznikne vždy potomek shodný s genotypem rodičů. V tomto případě je křížení nedostačující pro vznik potomků s novou genetickou informací. Proto je zavedena další operace kombinace rodičů (obrázek 3.8). V každém z rodičů je náhodně vybrán bod. Z prvního chromosomu se použije začátek jedince do náhodného bodu a z druhého rodiče je vybrána část od náhodného bodu do konce. Složením těchto dvou částí genů vzniká potomek. Obrázek 3.8: Kombinace rodičů Poslední operace pro vytváření potomků rekombinací je přidávání či odebírání tahů. Potomka vytvoříme nakopírováním všech genů rodiče. Při operaci přidání tahů záleží na počtu genů. Pokud je počet genů chromosomu malý, tak je na konec přidáno více náhodných tahů. Při větší délce chromosomu potomka je přidán pouze jeden tah. Tímto způsobem je ošetřeno vytváření zbytečně dlouhých chromosomů. Pro mazání tahů je situace opačná, čím má více potomek genů, tím více jich je odebráno. Při menším počtu genů potomka, je odebrán jeden či žádný gen. Neodstraňují se geny pouze z konce, ale náhodně jsou vybrány z celé délky jedince. 39

44 Při rekombinaci rodičů může být použito 6 různých způsobů vytvoření potomků: jednobodové, vícebodové, uniformní křížení, kombinace, přidání nebo odebírání tahů. Vždy ale může být použit právě jeden způsob rekombinace rodičů. V programu je možnost nastavení pravděpodobnosti výskytů nebo i zakázání jednotlivých operací, tak získáme vytváření nových potomků požadovaným způsobem. 3.3 Mutace Operátor mutace je aplikován na selektované rodiče a jejich nově vzniklé potomky. Mutace postupně prochází všechny geny chromosomu, na které s určitou pravděpodobností aplikuje mutaci, kdy se za původní vybraný gen vybere náhodný tah. Nepoužívám pouze klasickou jednobodovou mutaci, ale také výměnu genů. Kdy se vyberou náhodně dva geny chromosomu, které si vzájemně vymění své hodnoty. Mutaci využívám také v případě konvergence populace k lokálnímu maximu, kdy aplikuji mutaci s větší pravděpodobností a snažím se předejít uváznutí. 3.4 Konvergence populace Při spuštění evolucí nad náhodnými konfiguracemi kostky docházelo k rychlé konvergenci jedinců populace, kdy v populaci převládli jedinci s podobným či shodným genotypem. Chromosomy populace s vyšší hodnotou fitness, mají vyšší pravděpodobnost při selekci populace k další reprodukci a také při obnově populace. Tímto způsobem dochází v populaci k převaze jedinců se stejným genotypem a vymírání jedinců s horšími vlastnostmi. Přílišná konvergence populace není vhodná pro řešení hlavolamu Rubikovy kostky, proto jí program předchází po určitém množství generací použitím operátoru mutace s vyšší pravděpodobností. Čím více populace konverguje, tím větší pravděpodobnost výskytu operace mutace. 3.5 Zbytečné tahy Evoluční algoritmus je založena na prvku náhodnosti, při náhodném generování nových tahů, mutaci či křížení, může dojít k poskládání tahů do posloupnosti, kdy můžeme část posloupnosti genů odstranit, aniž by to mělo vliv na výslednou konfiguraci kostky. Odstranění zbytečných tahů se neprovádí v každé generaci, ale pouze při uváznutí v lokálním maximu, či až v poslední generaci při hodnocení výsledků. Kombinace pohybů kostkou, které nemají vliv na konfiguraci, může být více. Program odstraňuje pouze tyto základní možnosti (za X můžeme dosadit libovolnou stěnu, tah X je po směru, Xi proti směru hodinových ručiček): 40

45 XXi dva po sobě následující tahy jednou stěnou v opačném směru XXX tři pohyby stěnou ve stejném směru, můžeme nahradit jediným pohybem stěnou v opačném směru Xi XYXi Y je stěna protilehlá straně X, proto pohyb Y neovlivní tah XXi, a tudíž tyto tahy můžeme vynechat Určitou nevýhodou by mohlo být odstranění kombinace tahů, které by při křížení či mutaci mohli vézt ke vzniku lepších jedinců. Odstranění zbytečných tahů vede ke zkrácení délky chromosomu a určitému zrychlení jeho zpracování. 3.6 Nastavení parametrů evoluce Před spuštěním vlastního řešení problému, musí být správně zvoleny všechny parametry evolučního algoritmu. Nastavení všech parametrů je zobrazeno v příloze C. Nastavení parametrů můžeme rozdělit do jednotlivých částí: Základní nastavení - velikost populace hraje důležitou roli pro úspěšné vyřešení problému. Při příliš malé velikosti populace, nebude mít populace možnost obsáhnout všechny genetické informace řešeného problému, a některé důležité elementy mohou být vynechány. Menší velikost populace vede k rychlejší konvergenci řešení. Počet potomků určuje, kolik má každý selektovaný jedinec při reprodukci potomků. Selekce určuje způsob výběru jedinců a procentuální výběr označuje, kolik procent chromosomu populace bude vybráno k reprodukci. Obrázek 3.9: Nastavení parametrů populace Nastavení reprodukce záleží na vybraném způsobu reprodukce. Při reprodukci pomocí vytváření stromu (obrázek 3.10), nastavujeme hloubku stromu a počet listů každého uzlu. Další položkou je nastavení typu křížení a pravděpodobnosti křížení a mutace, které nastanou nad nejlepšími potomky stromu. 41

46 Obrázek 3.10: Nastavení reprodukce pomocí stromů Druhým typem reprodukce je rekombinace potomků pomocí křížení. Při této reprodukci můžeme používat více typu křížení současně. Nastavené hodnoty nejsou procentuální šancí, s jakou operace nastane. Použije se součet všech nastavených hodnot, ze kterého podíl jednotlivých hodnot činí procentuální šanci na provedení operace. Vždy se provede jen jedna operace, za kterou může s procentuální šancí proběhnout bodová mutace nebo permutace (výměna dvou genů) chromosomu. Obrázek 3.11: Nastavení reprodukce pomocí rekombinace Obnova populace (obrázek 3.12) zde se nastavuje typ obnovy, zda budou do nové populace vybráni pouze chromosomy z nových potomků nebo i z původních členů populace. Pokud je částečná obnova, tak se nastavuje i procentuální zastoupení rodičů v nové populaci. Způsob obnovy určuje, jakým způsobem budou vybírány chromosomy do nové populace. Nastavení výstupu - abychom mohli vytvářet závěry z evoluce, je potřeba provádět několik běhů evoluce nad konkrétními daty. Abychom nemuseli opakovaně zadávat stejné parametry evoluce, máme možnost nastavit počet evolucí, která určuje počet běhů evoluce nad stejnou konfigurací kostky a se shodnými parametry evoluce. Nalezení řešení může znamenat velké množství generací, a výpis všech generací do výstupního souboru by obsahoval velké množství dat, proto je možnost volby kroku, po kterých budou data o generaci zapsána do souboru. Poslední položkou v nastavení je konvergence, ta určuje počet generací, kdy se nezlepší průměrná hodnota fitness populace a dojde k využití mutace s větší pravděpodobností či vynucenému křížení celé populace. 42

47 Obrázek 3.12: Nastavení obnovy populace a výstupu evoluce Ukončení evolučního algoritmu nastane pouze v případě vyřešení zadané konfigurace, či dosažení maximálního množství generací. Nastavení vhodných hodnot parametrů evoluce je popsáno v kapitole 5. 43

48 4 Ovládání programu Celý program je navržen tak, aby byl co nejpřehlednější a uživatelsky příjemný. Při spuštění se otevře hlavní okno programu (příloha A), které nám umožní načtení konfigurace kostky ze souboru, úpravu již načtené konfigurace, spuštění editoru a evoluční řešení. Editor Rubikovy kostky (příloha B) slouží k vytváření konfigurací. Editor umožňuje několik způsobů vytváření konfigurací: - naklikání konfigurace do šablony Rubikovy kostky postupně vkládáme jednotlivé díly kostky s předem danými nálepkami. - úprava složené kostky správně složená kostka se upraví posloupností uživatelových tahů, které ji libovolně zamíchají. - náhodné generování tahů nastaví se počet tahů, které se náhodně vyberou a postupně se aplikují na složenou kostku. Pokud zvolíme větší množství vygenerovaných řešení, tak se rovnou uloží do souboru a do druhého se uloží řešení. Vytvořené konfigurace můžeme přidávat do seznamu, který můžeme posléze uložit do souboru. Takto získáme libovolné konfigurace kostek, které můžeme načíst v hlavním okně programu a spouštět nad nimi evoluční řešení. V každém souboru může být načteno větší množství konfigurací, a proto si můžeme mezi těmito konfiguracemi vybírat. Při spuštění evolučního řešení nad vybranou konfiguraci kostky, se nám zobrazí okno pro nastavení všech potřebných parametrů (příloha C), po jejich nastavení můžeme spustit řešení. Řešení může být časově velice náročné, průběh řešení je zobrazen v hlavičce hlavního okna. Po ukončení evoluce je výsledek vypsán v hlavním okně a vypsána cesta k soboru, kde je uložena průběh celé evoluce. Formát souboru je zobrazen v příloze E. 44

49 5 Dosažené výsledky V průběhu všech testů jsem u každé generace sledoval tři metriky: fitness hodnotu nejlepšího chromosomu, průměrná hodnota fitness všech chromosomu a rozptyl (střední kvadratická odchylka) všech chromosomů od průměrné hodnoty. Rozptyl je dán vzorcem: n σ = 1 (x n i E x ) 2 (5.1)[17] i=1 kde x i je fitness hodnota jedince, E(x) je průměrná fitness hodnota populace, n počet členů populace. Hodnota fitness se vždy pohybuje v intervalu 6 až y, kde y záleží na typu fitness funkce. Pokud nebude uvedeno jinak, tak používaná fitness funkce pro ohodnocení je shodná s možností 2 středy, hrany a rohy v kapitole Parametry evolučního algoritmu: Délka výpočtu: 500 Velikost populace: 10 Selekce: Ruleta, 80% Reprodukce: Rekombinace, jednobodové 100, přidání tahů 10, smazání tahů 10, mutace 2% Obnova: Částečná, Turnaj, 70% Cíl: Vliv náhodnosti Obrázek 5.1: Průměrná fitness populace 45

50 Rozptyl fitness hodnoty Graf průběhu výpočtu odpovídá tomu, co lze od evolučního algoritmu očekávat. Z počátku je vývoj populace rychlý, později ale rychlost změn v populaci klesá, může jít jen o mírné vylepšování či stagnaci. Skokových změn průměrné fitness je jen několik a to nepříliš velkých. Z naměřených hodnot je také zřejmé, že kvalita počáteční generace nemá výrazný vliv na konečný výsledek evoluce. Generace s horší fitness ohodnocením počáteční populací může dříve dosáhnout lepších výsledků. Obrázek 5.2: Nejlepší fitness Pokud se podíváme na průběh průměrné fitness hodnoty v populacích (obrázek 5.1), vidíme, že sledují hodnoty nejlepšího ohodnoceni fitness (obrázek 5.2). Tedy že kvalitní jedinci se v populaci šíří rychle. Neustále dochází k drobným výkyvům, ale stále si odpovídají. Rozdíl mezi nejlepší a průměrnou fitness v populacích brzo na začátku výpočtu klesne a pak se pohybuje v relativně nízkých hodnotách. Rozptyl populace určuje různorodost populace, největší přírůstek rozptylu má za následek mutace, a případná hypermutace jako prevence uváznutí Běh 1 Běh 2 Běh 3 Běh 4 Běh 5 Běh 6 Běh 7 Obrázek 5.3: Rozptyl populace 46

51 Tento první příklad má vysvětlit zákonitosti problému řešení Rubikovy kostky. Řešení konfigurace kostky je složeno pouze ze čtyř tahů B+R+F+L+. Z grafu na obrázku 5.2 vyplívá, že i pro tak jednoduché řešení dosahují evoluce optimálních výsledků v značně rozdílném počtu generací. Nejrychlejší běh evoluce číslo 6 dosáhne správného řešení již ve 22. generaci, naproti tomu běh evoluce 7, která dosáhne řešení v 308. generaci. Průměrný počet generací potřebný k řešení je 65.. Rozdíl v počtu potřebných generací, má za následek velký vliv náhodnosti, který je svázán se všemi etapami evolučního algoritmu. Tahy kostkou jsou v celé práci generovány zcela náhodně. Proto mohou evoluce nad stejnou konfigurací kostky a nastavenými parametry dosahovat velmi rozdílných výsledků. Proto k vyvozování závěrů o problému je vždy potřeba testovat na rozsáhlých datech a větším počtu běhů. U většiny problémů řešených evolucí se maximální fitness zpočátku zlepšuje rychle, a postupně rychlost klesá, jak se blíží k lokálnímu maximu. U problému Rubikovy kostky je situace specifická, protože při jakémkoliv tahu vedoucím ke složení se skokově fitness hodnota zvýší (obrázek 5.2). Protože před posledním pohybem stěnou je 8 kostiček na vrchní straně špatně umístněno. Obrázek 5.4: Poslední tah kostkou Parametry evolučního algoritmu: Délka výpočtu: 500 Velikost populace: 20 a 100 Zamíchaná kostka: 5 tahů Cíl: Velikost populace a rychlost nalezení řešení Cílem tohoto měření je ukázat, že velikost zvolené populace má vliv na rychlost nalezení řešení hlavolamu. Pokud zvolíme větší velikost populace, již v počáteční populaci je šance nalezení lepšího řešení. Populace je schopna nést větší množství různorodé informace, a nedochází k tak rychlé konvergenci řešení. Z obrázku 5.5 je vidět, že průměrné nalezení řešení pro 10 nejlepších evolučních běhů se povede průměrně v 85 generaci pro populaci 20 jedinců. Při použití 100 jedinců populace (obrázek 5.6) se nalezení řešení urychlí a to v průměru na 40 generací. Mezi velikostí populace a rychlostí nalezení řešení není přímá úměra. Při zvětšování populace se dostaneme do stavu, kdy přírůstek jedinců v populaci má minimální vliv na dřívější nalezení řešení. Z provedených testů se jeví jako rozumná velikost populace mezi 50 až 100 jedinci. 47

52 Nejlepší fitness populace Nejlepší fitness populace Běh 1 Běh 2 Běh 3 Běh 4 Běh 5 Běh 6 Běh 7 Běh 8 Běh 9 Běh Obrázek 5.5: Nejlepší fitness populace 20 chromosomů Běh 1 Běh 2 Běh 3 Běh 4 Běh 5 Běh 6 Běh 7 Běh 8 Běh 9 Běh Obrázek 5.6: Nejlepší fitness populace 100 chromosomů 48

53 Fitness Parametry evolučního algoritmu: Délka výpočtu: 100 Velikost populace: 10, 20, 50, 100 a 200 Zamíchaná kostka: 5 tahů Na grafu z obrázku 5.7 můžeme vidět, jak ovlivňuje velikost populace kvalitu nalezeného řešení v prvních 100 generacích evoluce. Pro tento příklad je použita konfigurace kostky, vzniklá otočením pěti tahy L+F+R+B+U+. Interval spolehlivosti je nastaven na 95% Velikost populace Obrázek 5.7: Vliv velikosti populace na kvalitu řešení pro 100 generací Rozdíl kvality řešení mezi velikostí populace 10 a 20 není příliš velký, intervaly spolehlivosti se překrývají a průměrná hodnota je velmi blízko, takže zvětšení populace z 10 na 20 nepřinese požadovanou změnu. Při změně velikosti populace z 20 na 50 je rozdíl kvality řešení významný, jelikož intervaly se nepřekrývají a průměrná hodnota je o dost výš, tak s 95% spolehlivostí dosáhneme s 50 jedinci lepších výsledků jak s 20. Další zvyšování počtu jedinců populace nezlepší řešení, a proto se další přidávání jedinců populace nevyplatí. V tabulce 5.1 je uložena úspěšnost nalezení řešení Rubikovi kostky, pro různé velikosti populace. Čím méně tahů je použito k zamíchání kostky, tím je větší pravděpodobnost nalezení posloupnosti tahů k jejímu opětovnému složení. 49

54 Fitness Velikost populace Úspěšnost Procentuální úspěšnost[%] Řešení nalezeno průměrně v generaci 10 3/ / / / / Tabulka 5.1: Úspěšnost nalezení řešení Parametry evolučního algoritmu: Délka výpočtu: 5000 Velikost populace: 10, 20, 50, 100 a 200 Zamíchaná kostka: 15 tahů Načtená konfigurace použitá v tomto příkladu vznikla posloupnosti 15. tahů : L+L+R+B-B+B+D+F- B-B+R-B-B+F+U. Kvalita výsledného řešení je testována pro 5000 generací, kdy se lépe projeví vliv velikosti populace na kvalitě nalezeného řešení. Z grafu obrázku 5.8 můžeme usoudit, že nejvýhodnější velikost populace pro nalezení kvalitního řešení je velikost Populace Obrázek 5.8: Vliv velikosti populace na kvalitu řešení pro 5000 generací 50

55 Fitness Velikost populace Úspěšnost Procentuální úspěšnost[%] Řešení nalezeno průměrně v generaci 10 0/ / / / / Tabulka 5.2: Úspěšnost nalezení řešení Parametry evolučního algoritmu: Délka výpočtu: 100 Velikost populace: 10, 20, 50, 100 a 200 Zamíchaná kostka: 5 tahů Fitness funkce: základní možnost ohodnocení (kapitola 3.1.1) Velikost populace Obrázek 5.9: Vliv velikosti populace na kvalitu řešení pro 100 generací 5 tahů Velikost populace Úspěšnost Procentuální úspěšnost[%] Řešení nalezeno průměrně v generaci 10 2/ / / / / Tabulka 5.3: Úspěšnost nalezení řešení 51

56 Fitness Parametry evolučního algoritmu: Délka výpočtu: 5000 Velikost populace: 10,20,50,100 a 200 Zamíchaná kostka: 15 tahů Fitness funkce: základní možnost ohodnocení (kapitola 3.1.1) Velikost populace Obrázek 5.10: Vliv velikosti populace na kvalitu řešení pro 5000 generací Velikost populace Úspěšnost Procentuální úspěšnost[%] Řešení nalezeno průměrně v generaci 10 0/ / / / / Tabulka 5.4: Úspěšnost nalezení řešení Pro ohodnocení správnosti složení Rubikovy kostky máme různé možnosti fitness funkce, každá funkce k problému přistupuje odlišným způsobem. K určení lepšího způsobu ohodnocení provedeme větší množství evolucí, s různými nastavenými parametry. Na obrázku 5.11 vlevo je základní možnost ohodnocení fitness funkcí, vpravo je způsob ohodnocení středů, hran a rohů 52

57 Fitness [%] Fitness [%] (kapitola 3.1.1). Bylo spuštěno několik evolucí s počtem generací 100 a rozdílnou velikostí populace. Každá fitness funkce může mít jiný obor hodnot. Proto musíme převézt obory hodnot na jeden interval 0 až 100, kde 100 je pro správně složenou kostku a 0 je pro nejhorší možný stav kostky. Z obrázku nemůžeme jednoznačně určit závěr, která fitness funkce je lepší. Protože kvalita dosaženého řešení se dostatečně neliší a většina je v intervalu odchylek. Také procentuální úspěšnost je podobná Velikost populace Velikost populace Obrázek 5.11: Kvalita řešení na použité fitness funkci pro 100 generací, 5 tahů Na obrázku 5.11 jsou opět zobrazeny tyto dvě fitness funkce, tentokrát pro délku běhu 5000 generací, a kostka je zamíchána 15 tahy. Pokud je kostka zamíchána větším množstvím tahů, není základní způsob ohodnocení fitness funkce efektivní pro opětovné složení. Hlavním problémem je ohodnocení nálepek, které mají správnou barvu, ale nejsou na správném místě a tím stěžují opětovné složení. Pokud porovnáme s úspěšností klasické fitness funkce, vidíme, že tato metoda ohodnocení samostatných nálepek při větší populaci má menší úspěšnost nalezení řešení a kvalita řešení je výrazně menší než klasické ohodnocení střed, roh a hrana.. A proto považuji ohodnocení střed, roh hrana za lepší. 53

58 Fitness [%] Fitness [%] Velikost populace Velikost populace Obrázek 5.11: Kvalita řešení na použité fitness funkci pro 5000 generací, 15 tahů Parametry evolučního algoritmu: Délka výpočtu: 5000 Velikost populace: 50 Zamíchaná kostka: 10 tahů Pravděpodobnost mutace: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 % Operace mutace je jeden ze základních kamenů evoluce, proto testuji různé pravděpodobnosti mutace. Pokud bude mít malou pravděpodobnost, tak se v populaci nebudou jedinci s náhodně upravenými geny. Naopak přílišná pravděpodobnost mutace vede k rozbíjení stavebních bloků jedinců. Pokud pravděpodobnost výskytu mutace nastavíme na 0, tak z tabulky 5.5 můžeme usoudit, že evoluční algoritmus bez mutace nenalezne řešení kostky. Tudíž operace mutace je pro řešení kostky nezbytná. Výskyt mutace je ve většině algoritmů do 1 procenta, ale v případě řešení Rubikovy kostky je výhodnější použít vyšší pravděpodobnost. Protože operace křížení v populaci podobných či stejných genotypů, neprovede velkou změnu genetické informace chromosomu. A proto operace mutace náhodně mění geny a tím může přispět k vylepšení fitness. Z tabulky 5.5 je nejvýhodnější použít mutaci s pravděpodobností kolem 5 procent. Tato pravděpodobnost udává výskyt mutace u celého chromosomu, pro jednotlivé geny je pravděpodobnost vydělena počtem genů jedince. 54

59 Fitness Mutace [%] Procentuální Úspěšnost úspěšnost[%] 0 0/ / / / / / / / / / / Řešení nalezeno průměrně v generaci Tabulka 5.5: Úspěšnost nalezení řešení 10 tahů Parametry evolučního algoritmu: Délka výpočtu: 100, 1000, 5000 Velikost populace: 50 Zamíchaná kostka: 5, 10 tahů Křížení: jednobodové, vicebodové, uniformní a jejich kombinace Jednobodové Vícebodové Uniformní Jednobodové Křížení uniformní Vícebodové uniformní Všechny Obrázek 5.12: Vliv použitého způsobu křížení na kvalitu řešení 100 generací 5 tahů 55

60 Fitness Fitness Jednobodové Vícebodové Uniformní Jednobodové Křížení uniformní Vícebodové uniformní Všechny Obrázek 5.13: Vliv použitého způsobu křížení na kvalitu řešení 1000 generací 10 tahů Jednobodové Vícebodové Uniformní Jednobodové Křížení uniformní Vícebodové uniformní Všechny Obrázek 5.14: Vliv použitého způsobu křížení na kvalitu řešení 5000 generací 10 tahů Operace křížení je základním evolučních algoritmů. Používal jsem jednobodové, vícebodové, uniformní křížení a jejich možné kombinace. Z naměřených hodnot můžeme dojít k závěru, že zvolený typ křížení nemá zásadní vliv na výsledek evolučního řešení, tak jako tomu je u mutace (tabulka 5.5). Uniformní křížení dosahuje srovnatelných výsledků jako zbylé typy křížení. Uniformní křížení se používá zřídka, protože velmi často rozbíjí stavební bloky v chromosomech. V připadě řešení kostky, je tento vliv minimalizován tím, že chromosomy populace mají stejný či velice podobný genotyp. 100 generací 5 tahů 1000 generací 10 tahů 5000 generací 10 tahů Použité křížení Úspěšnost [%] Úspěšnost [%] Úspěšnost [%] Jednobodové Vícebodové Uniformní Jednobodové - uniformní Vícebodové- uniformní Všechny Tabulka 5.7: Úspěšnost nalezení řešení 56

61 Parametry evolučního algoritmu: Délka výpočtu: 100, 500, 1000, 5000, 10000, Velikost populace: 50 Zamíchaná kostka: 5, 10,15, 20 tahů Počet generací evoluce k nalezení řešení je závislý na počáteční konfiguraci kostky. Když konfigurace vznikla zamícháním složené koskty pouze pár tahy, bude řešení nalezeno brzy. Pokud ale k jejímu zamíchání bylo použito velké množství tahů, tak průměrný počet generací k nalezení řešení rychle vzrůstá. Počet Procentuální Řešení nalezeno Úspěšnost generací úspěšnost[%] průměrně v generaci / / / / / / / Tabulka 5.8: Úspěšnost nalezení řešení zamícháno 5 tahů Počet Procentuální Řešení nalezeno Úspěšnost generací úspěšnost[%] průměrně v generaci 100 0/ / / / / / / Tabulka 5.9: Úspěšnost nalezení řešení zamícháno 10 tahů Počet Procentuální Řešení nalezeno Úspěšnost generací úspěšnost[%] průměrně v generaci 100 0/ / / / / / / Tabulka 5.10: Úspěšnost nalezení řešení zamícháno 15 tahů 57

62 Úspěšnost nalezení řešení [%] Počet Procentuální Řešení nalezeno Úspěšnost generací úspěšnost[%] průměrně v generaci 100 0/ / / / / / / Tabulka 5.11: Úspěšnost nalezení řešení zamícháno 20 tahů Pokud získané hodnoty vyneseme do grafu (obrázek 5.15), můžeme z tohoto grafu zjistit kolik potřebuje přibližně délku evoluce, abychom s určitou pravděpodobností dosáhli složení kostky. Metoda evoluce je založená na velké míře náhodnosti, takže nikdy nemáme stoprocentní jistotu, že kostka bude vyřešena v nastaveném množství generací Tahy 5 Tahy 10 Tahy 15 Tahy 20 Obrázek 5.15 : Úspěšnost nalezení řešení hlavolamu Parametry evolučního algoritmu: Délka výpočtu: 100 Velikost populace: 10 Zamíchaná kostka: 5 tahů Rekombinace: strom, hloubka stromu 2, 4, 5, 6, 13, počet listů 2, 4, 5, 6, 13 58

63 Fitness x2 3x3 4x4 5x5 6x6 Hloubka stromu x počet listů Obrázek 5.16 : Úspěšnost nalezení řešení hlavolamu Nevýhoda této metody je velká časová náročnost. Volba vhodné kombinace hodnot je proto velice důležitá (výpočet pro metodu 10x10 běžel 52 hodin). Úspěch metody vytváření potomků je závislý na robustnosti vytvářeného stromu. 5.1 Problémy bránící řešení Hlavolam Rubikovy kostky lze heuristickými metodami složit z libovolného stavu v daném počtu tahů podle zvolené metody. Ale při evolučním řešení jsou určité problémy, které brání úspěšnému složeni kostky Rozložení téměř složené kostky Evolučním řešení kostky nás často dovede do stavu, kdy většina kostiček je již na správném místě, pouze několik kostiček je na špatném místě nebo nejsou správně orientovány. Typický příklad je uveden na obrázku 5.17, kde zbývá jen správně otočit dva rohy. Hodnota fitness pro tuto konfiguraci je 24 a blíží se maximu 26. Pokud se v populaci objeví tento jedinec, nejspíše se genotyp rozšíří mezi další jedince populace. Když provedeme jakýkoliv další tah, vždy se nám výrazně zhorší hodnota 59

64 fitness. Při použití heuristických metod by se použila posloupnost tahů: RiDiRDRiDiRD, a tím by se došlo ke správné orientaci jednoho rohu a zachování všech zbylých kostiček na správném místě. Obrázek 5.17: Konfigurace kostky v lokálním maximu Evoluční algoritmus nemá možnosti, jak docílit požadované změny jako při heuristické metodě. Pro evoluční algoritmus je tento stav lokálním maximem, ve kterém s největší pravděpodobností uvázne. Pokud by se na konec chromosomu náhodným přidáním tahů neumístnila posloupnost tahů RiDiRDRiDiRD, která by otočila roh do správné polohy. Pravděpodobnost této situace je minimální. Při uváznutí v lokálním maximu se použije s větší pravděpodobností mutace na celou populaci. Dojde ke změně konfigurace, a v drtivé většině ke zhoršení fitness funkce. Takže z konfigurace kdy jsme měli téměř složenou kostku, jsme ve stavu, kdy je více špatně umístněných kostiček Délka řešení jedince Každá konfigurace kostky vznikla použitím určitého množství tahů z původně správně složené kostky. Množství použitých tahů je různé, a pokud máme problém zadán pouze konfigurací kostky, musí algoritmus zkoušet nalézt řešení o různých délkách, protože neví kolik je potřeba tahů. Pokud například počáteční konfigurace vznikla použitím tahů U+L+L+F+D+, tak pro tuto konfiguraci by se snažil najít řešení už od délky jedna a výše. Řešení této konfigurace kostky musí mít minimálně 5 tahů. Může nastat opačná situace, kdy celá populace je složena z jedinců, kteří mají větší počet tahů než má optimální řešení kostky např. R-D-L+. V tomto případě algoritmus musí najít chromosom s řešením, kde tahy navíc se vzájemně vyruší např. R-D-D+D-L+, kde provedení tahů D-D+ nemá vliv na výsledek. Pro každou konfiguraci může být nalezeno více řešení. 60

65 6 Závěr Cílem diplomové práce bylo navrhnout a implementovat systém pro řešení hlavolamu Rubikovy kostky evoluční metodou. Při návrhu jsem vycházel ze schématu evolučního algoritmu, který se stal základem celého systému. Zajímavé na evolučních algoritmech je, jak může jednoduchý princip evolučního algoritmu přinášet v praxi nad složitými problémy velmi dobré výsledky. Systém je implementován tak, aby přesně dodržoval princip evolučního algoritmu. Mezi tři hlavní úskalí pro správnou funkci evolučního algoritmu patří správné zakódování řešeného problému, kvalitní ohodnocení fitness funkcí a v neposlední řadě správná volba genetických křížení. K zakódování problému je využito 54 místné pole, kde každá buňka pole odpovídá jedné konkrétní pozici kostičky z Rubikovy kostky a je určena svoji barvou. Rubikova kostka je mechanický hlavolam vytvářející nepřeberné množství kombinací všech svých kostiček, a tomu musí odpovídat volba fitness funkce. Hodnota fitness odpovídá správnosti složení kostky v dané konfiguraci, za fitness funkci jsem zvolil počet správně umístněných součástí kostky. Vyzkoušel jsem různé další způsoby ohodnocení fragmentů kostky, které by napomáhali k nalezení správného řešení. Tímto způsobem by se mohlo ohodnocení fitness funkce přiblížit heuristickým metodám řešení skládání kostky po vrstvách. Evoluční algoritmus byl pro řešení Rubikova hlavolamu optimální, při implementaci jsem nenarazil na žádný větší problém. Druhým krokem bylo správné nastavení hodnot tak, aby evoluční řešení dosáhlo cíle v přiměřeném čase. Musí se zvolit správný kompromis mezi časem řešení a vrácením vhodného výsledku. Očekávaný výsledek je posloupnost pohybů vedoucí ke správnému složení kostky. Každou kombinaci vstupních parametrů evoluce jsem zkoušel důkladným testováním několika běhů evoluce nad vhodně zvolenými konfiguracemi kostek, tak aby byly obsaženy různé stupně složení kostky. Nepodařilo se mi najít kombinaci parametrů, která by pro náhodně zvolenou konfiguraci kostky dokázala najít řešení v přijatelném čase. Pro správnou funkci evoluce je základním kamenem operátor křížení, který je doplněn o mutaci s malou pravděpodobností výskytu. Zkoušel jsem různé způsoby křížení nad populací rodičů. Není to operátor křížení, který ovlivňuje nalezení výsledku, ale hlavní úlohu hraje právě mutace, která náhodně mění jednotlivé geny jedinců populace. Pro dosažení nejlepších výsledků se mi osvědčilo mít nastavenou pravděpodobnost výskytu mutace v rozmezí 2-8%. Při evoluci docházelo velmi často ke konvergenci populace, kdy v populaci dominatní jedinci se stejným genotypem. Pokud k této situaci došlo, docházelo k uváznutí v lokálním maximu a proto také větší pravděpodobnost výskytu mutace. Ke konvergenci dochází při nedostatečné velikosti populace, kde lehce převládne dominantní jedince nad ostatními. Vhodná velikost populace při řešení byla mezi jedinci. Větší množství jedinců již nevedlo ke zvětšení šance na nalezení řešení problému. Mnou navržený a implementovaný evoluční algoritmus nevede vždy ke stoprocentnímu nalezení řešení, ale vždy s určitou pravděpodobností podle nastaveného času evoluce nalezne řešení. Evoluce je založena na náhodě, a 61

66 proto ne vždy je nalezeno řešení. Pokud evoluční řešení nenalezne správné řešení, tak většinou alespoň dospěje do konfigurace, kdy ke správnému složení kostky stačí výměna pozice několika kostiček. Toto je možnost rozšíření diplomové práce, kde by se již na téměř složenou Rubikovu kostku aplikovala heuristická pravidla. 62

67 Literatura [1] Kvasnička, V., Pospíchal, J., Tiňo, P.: Evolučné algoritmy. STU Bratislava, ISBN [2] Zelinka, I., Oplatková, Z., Šeda, M., Ošmara, P., Včelař, F.: Evoluční výpočetní techniky principy a aplikace. BEN, ISBN [3] Sekanina, L.: Evoluční hardware Od automatického generování patentovatelných invencí k sebemodifikujícím se strojům. Academia, ISBN [4] Schwarz Josef, Sekanina Lukáš. Aplikované evoluční algoritmy EVO Studijní opora [5] Richard Satola. Aplikované evoluční algoritmy EVO - Genetické algoritmy [6] Hynek, J.: Genetické algoritmy a genetické programování. Grada, ISBN [6] WWW stránky. [7] WWW stránky. [8] WWW stránky. [9] WWW stránky. Beginner solution to the Rubiks Cube. [10] WWW stránky. [11] WWW stránky. [12] WWW stránky. [13] Harik, G., Cantú-Paz, E., Goldberg, D., Miller, B.: Gambler s Ruin Problem, Genetic Algorithms, and the Sizing of Populations. Technical Report, [14] WWW stránky. [15] WWW stránky. [16] WWW stránky. [17] WWW stránky. [18] WWW stránky. 63

68 7 Přílohy Příloha A Hlavní okno programu Příloha B Editor Rubikovy kostky 64

69 Příloha C Nastavení parametrů evoluce 65

70 Příloha D Porovnání metody vrstva po vrstvě s evolučním řešením Rubikovy kostky 66

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

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

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

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

Genetické algoritmy. Vysoká škola ekonomická Praha. Tato prezentace je k dispozici na: http://www.utia.cas.cz/vomlel/

Genetické algoritmy. Vysoká škola ekonomická Praha. Tato prezentace je k dispozici na: http://www.utia.cas.cz/vomlel/ Genetické algoritmy Jiří Vomlel Laboratoř inteligentních systémů Vysoká škola ekonomická Praha Tato prezentace je k dispozici na: http://www.utia.cas.cz/vomlel/ Motivace z Darwinovy teorie evoluce Přírodní

Více

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

1. Úvod do genetických algoritmů (GA) Obsah 1. Úvod do genetických algoritmů (GA)... 2 1.1 Základní informace... 2 1.2 Výstupy z učení... 2 1.3 Základní pomy genetických algoritmů... 2 1.3.1 Úvod... 2 1.3.2 Základní pomy... 2 1.3.3 Operátor

Více

5.5 Evoluční algoritmy

5.5 Evoluční algoritmy 5.5 Evoluční algoritmy Jinou skupinou metod strojového učení, které vycházejí z biologických principů, jsou evoluční algoritmy. Zdrojem inspirace se tentokrát stal mechanismus evoluce, chápaný jako Darwinův

Více

VÝBĚR A JEHO REPREZENTATIVNOST

VÝBĚR A JEHO REPREZENTATIVNOST VÝBĚR A JEHO REPREZENTATIVNOST Induktivní, analytická statistika se snaží odhadnout charakteristiky populace pomocí malého vzorku, který se nazývá VÝBĚR neboli VÝBĚROVÝ SOUBOR. REPREZENTATIVNOST VÝBĚRU:

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

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

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

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

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

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

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

2015 http://excel.fit.vutbr.cz Kartézské genetické programování s LUT Karolína Hajná* Abstract Tato práce se zabývá problematikou návrhu obvodů pomocí kartézského genetického programování na úrovni třívstupových

Více

12. Lineární programování

12. Lineární programování . Lineární programování. Lineární programování Úloha lineárního programování (lineární optimalizace) je jedním ze základních problémů teorie optimalizace. Našim cílem je nalézt maximum (resp. minimum)

Více

Inovace studia molekulární a buněčné biologie reg. č. CZ.1.07/2.2.00/

Inovace studia molekulární a buněčné biologie reg. č. CZ.1.07/2.2.00/ Inovace studia molekulární a buněčné biologie reg. č. CZ.1.07/2.2.00/07.0354 Tento projekt je spolufinancován Evropským sociálním fondem a státním rozpočtem České republiky Populační genetika (KBB/PG)

Více

1. Statistická analýza dat Jak vznikají informace Rozložení dat

1. Statistická analýza dat Jak vznikají informace Rozložení dat 1. Statistická analýza dat Jak vznikají informace Rozložení dat J. Jarkovský, L. Dušek, S. Littnerová, J. Kalina Význam statistické analýzy dat Sběr a vyhodnocování dat je způsobem k uchopení a pochopení

Více

Data v počítači. Informační data. Logické hodnoty. Znakové hodnoty

Data v počítači. Informační data. Logické hodnoty. Znakové hodnoty Data v počítači Informační data (elementární datové typy) Logické hodnoty Znaky Čísla v pevné řádové čárce (celá čísla) v pohyblivé (plovoucí) řád. čárce (reálná čísla) Povelová data (instrukce programu)

Více

1 Tyto materiály byly vytvořeny za pomoci grantu FRVŠ číslo 1145/2004.

1 Tyto materiály byly vytvořeny za pomoci grantu FRVŠ číslo 1145/2004. Prostá regresní a korelační analýza 1 1 Tyto materiály byly vytvořeny za pomoci grantu FRVŠ číslo 1145/2004. Problematika závislosti V podstatě lze rozlišovat mezi závislostí nepodstatnou, čili náhodnou

Více

STATISTICKÉ ODHADY Odhady populačních charakteristik

STATISTICKÉ ODHADY Odhady populačních charakteristik STATISTICKÉ ODHADY Odhady populačních charakteristik Jak stanovit charakteristiky rozložení sledované veličiny v základní populaci? Populaci většinou nemáme celou k dispozici, musíme se spokojit jen s

Více

"Učení nás bude více bavit aneb moderní výuka oboru lesnictví prostřednictvím ICT ". Základy genetiky, základní pojmy

Učení nás bude více bavit aneb moderní výuka oboru lesnictví prostřednictvím ICT . Základy genetiky, základní pojmy "Učení nás bude více bavit aneb moderní výuka oboru lesnictví prostřednictvím ICT ". Základy genetiky, základní pojmy 1/75 Genetika = věda o dědičnosti Studuje biologickou informaci. Organizmy uchovávají,

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

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

Statistická teorie učení

Statistická teorie učení Statistická teorie učení Petr Havel Marek Myslivec přednáška z 9. týdne 1 Úvod Představme si situaci výrobce a zákazníka, který si u výrobce objednal algoritmus rozpoznávání. Zákazník dodal experimentální

Více

Copyright 2013 Martin Kaňka;

Copyright 2013 Martin Kaňka; Copyright 2013 Martin Kaňka; http://dalest.kenynet.cz Popis aplikace Hlavním cílem aplikace Cubix je výpočet a procvičení výpočtu objemu a povrchu těles složených z kostek. Existují tři obtížnosti úkolů

Více

5 Orientované grafy, Toky v sítích

5 Orientované grafy, Toky v sítích Petr Hliněný, FI MU Brno, 205 / 9 FI: IB000: Toky v sítích 5 Orientované grafy, Toky v sítích Nyní se budeme zabývat typem sít ových úloh, ve kterých není podstatná délka hran a spojení, nýbž jejich propustnost

Více

Genetické algoritmy. a jejich praktické využití. Pavel Šturc. průmyslu, stejně tak je zde uvedeno i několik případů jejich úspěšné implementace.

Genetické algoritmy. a jejich praktické využití. Pavel Šturc. průmyslu, stejně tak je zde uvedeno i několik případů jejich úspěšné implementace. Genetické algoritmy a jejich praktické využití Pavel Šturc Úvod Cílem této práce je seznámit čtenáře se základním principem funkce genetických algoritmů a nastínit jejich možné aplikování do různých odvětví

Více

Základy genetiky populací

Základy genetiky populací Základy genetiky populací Jedním z významných odvětví genetiky je genetika populací, která se zabývá studiem dědičnosti a proměnlivosti u velkých skupin jedinců v celých populacích. Populace je v genetickém

Více

STATISTICKÝ SOUBOR. je množina sledovaných objektů - statistických jednotek, které mají z hlediska statistického zkoumání společné vlastnosti

STATISTICKÝ SOUBOR. je množina sledovaných objektů - statistických jednotek, které mají z hlediska statistického zkoumání společné vlastnosti ZÁKLADNÍ STATISTICKÉ POJMY HROMADNÝ JEV Statistika pracuje s tzv. HROMADNÝMI JEVY cílem statistického zpracování dat je podání informace o vlastnostech a zákonitostech hromadných jevů: velkého počtu jedinců

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

Výhody a nevýhody jednotlivých reprezentací jsou shrnuty na konci kapitoly.

Výhody a nevýhody jednotlivých reprezentací jsou shrnuty na konci kapitoly. Kapitola Reprezentace grafu V kapitole?? jsme se dozvěděli, co to jsou grafy a k čemu jsou dobré. rzo budeme chtít napsat nějaký program, který s grafy pracuje. le jak si takový graf uložit do počítače?

Více

Algoritmus. Cílem kapitoly je seznámit žáky se základy algoritmu, s jeho tvorbou a způsoby zápisu.

Algoritmus. Cílem kapitoly je seznámit žáky se základy algoritmu, s jeho tvorbou a způsoby zápisu. Algoritmus Cílem kapitoly je seznámit žáky se základy algoritmu, s jeho tvorbou a způsoby zápisu. Klíčové pojmy: Algoritmus, vlastnosti algoritmu, tvorba algoritmu, vývojový diagram, strukturogram Algoritmus

Více

Pokročilé operace s obrazem

Pokročilé operace s obrazem Získávání a analýza obrazové informace Pokročilé operace s obrazem Biofyzikální ústav Lékařské fakulty Masarykovy univerzity Brno prezentace je součástí projektu FRVŠ č.2487/2011 (BFÚ LF MU) Získávání

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Í ŘEŠENÍ

Více

Hledání kořenů rovnic jedné reálné proměnné metoda půlení intervalů Michal Čihák 23. října 2012

Hledání kořenů rovnic jedné reálné proměnné metoda půlení intervalů Michal Čihák 23. října 2012 Hledání kořenů rovnic jedné reálné proměnné metoda půlení intervalů Michal Čihák 23. října 2012 Problém hledání kořenů rovnice f(x) = 0 jeden ze základních problémů numerické matematiky zároveň i jeden

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

Inženýrská statistika pak představuje soubor postupů a aplikací teoretických principů v oblasti inženýrské činnosti.

Inženýrská statistika pak představuje soubor postupů a aplikací teoretických principů v oblasti inženýrské činnosti. Přednáška č. 1 Úvod do statistiky a počtu pravděpodobnosti Statistika Statistika je věda a postup jak rozvíjet lidské znalosti použitím empirických dat. Je založena na matematické statistice, která je

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

4EK213 LINEÁRNÍ MODELY

4EK213 LINEÁRNÍ MODELY 4EK213 LINEÁRNÍ MODELY Úterý 11:00 12:30 hod. učebna SB 324 3. přednáška SIMPLEXOVÁ METODA I. OSNOVA PŘEDNÁŠKY Standardní tvar MM Základní věta LP Princip simplexové metody Výchozí řešení SM Zlepšení řešení

Více

Řízení projektů. Konstrukce síťového grafu pro řízení projektů Metoda CPM Metoda PERT

Řízení projektů. Konstrukce síťového grafu pro řízení projektů Metoda CPM Metoda PERT Řízení projektů Konstrukce síťového grafu pro řízení projektů Metoda CPM Metoda PERT 1 Úvod základní pojmy Projekt souhrn činností, které musí být všechny realizovány, aby byl projekt dokončen Činnost

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

1.5.2 Číselné soustavy II

1.5.2 Číselné soustavy II .. Číselné soustavy II Předpoklady: Př. : Převeď do desítkové soustavy čísla. a) ( ) b) ( ) 4 c) ( ) 6 = + + + = 7 + 9 + = a) = 4 + 4 + 4 = 6 + 4 + = 9 b) 4 = 6 + 6 + 6 = 6 + 6 + = 6 + + = 69. c) 6 Pedagogická

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

Ú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

NÁHODNÁ ČÍSLA. F(x) = 1 pro x 1. Náhodná čísla lze generovat některým z následujících generátorů náhodných čísel:

NÁHODNÁ ČÍSLA. F(x) = 1 pro x 1. Náhodná čísla lze generovat některým z následujících generátorů náhodných čísel: NÁHODNÁ ČÍSLA TYPY GENERÁTORŮ, LINEÁRNÍ KONGRUENČNÍ GENERÁTORY, TESTY NÁHODNOSTI, VYUŽITÍ HODNOT NÁHODNÝCH VELIČIN V SIMULACI CO JE TO NÁHODNÉ ČÍSLO? Náhodné číslo definujeme jako nezávislé hodnoty z rovnoměrného

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

1. Přednáška. Ing. Miroslav Šulai, MBA

1. Přednáška. Ing. Miroslav Šulai, MBA N_OFI_2 1. Přednáška Počet pravděpodobnosti Statistický aparát používaný ve financích Ing. Miroslav Šulai, MBA 1 Počet pravděpodobnosti -náhodné veličiny 2 Počet pravděpodobnosti -náhodné veličiny 3 Jevy

Více

Prohledávání do šířky = algoritmus vlny

Prohledávání do šířky = algoritmus vlny Prohledávání do šířky = algoritmus vlny - souběžně zkoušet všechny možné varianty pokračování výpočtu, dokud nenajdeme řešení úlohy průchod stromem všech možných cest výpočtu do šířky, po vrstvách (v každé

Více

P R O J E K T O V É Ř Í Z E N Í A M A R K E T I N G 1. Akad. rok 2015/2016, LS Projektové řízení a marketing - VŽ 1

P R O J E K T O V É Ř Í Z E N Í A M A R K E T I N G 1. Akad. rok 2015/2016, LS Projektové řízení a marketing - VŽ 1 P R O J E K T O V É Ř Í Z E N Í A M A R K E T I N G 1 Akad. rok 2015/2016, LS Projektové řízení a marketing - VŽ 1 Vznik a historie projektového řízení Akad. rok 2015/2016, LS Projektové řízení a marketing

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

Soustavy rovnic pro učební obory

Soustavy rovnic pro učební obory Variace 1 Soustavy rovnic pro učební obory Autor: Mgr. Jaromír JUŘEK Kopírování a jakékoliv další využití výukového materiálu je povoleno pouze s uvedením odkazu na www.jarjurek.cz. 1. Soustavy rovnic

Více

Matematika I 2a Konečná pravděpodobnost

Matematika I 2a Konečná pravděpodobnost Matematika I 2a Konečná pravděpodobnost Jan Slovák Masarykova univerzita Fakulta informatiky 24. 9. 2012 Obsah přednášky 1 Pravděpodobnost 2 Nezávislé jevy 3 Geometrická pravděpodobnost Viděli jsme už

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

Neuronové časové řady (ANN-TS)

Neuronové časové řady (ANN-TS) Neuronové časové řady (ANN-TS) Menu: QCExpert Prediktivní metody Neuronové časové řady Tento modul (Artificial Neural Network Time Series ANN-TS) využívá modelovacího potenciálu neuronové sítě k predikci

Více

Úvod do informatiky. Miroslav Kolařík

Úvod do informatiky. Miroslav Kolařík Úvod do informatiky přednáška devátá Miroslav Kolařík Zpracováno dle učebního textu prof. Bělohlávka: Úvod do informatiky, KMI UPOL, Olomouc 2008 Obsah 1 Kombinatorika: princip inkluze a exkluze 2 Počítání

Více

Pravděpodobnost a její vlastnosti

Pravděpodobnost a její vlastnosti Pravděpodobnost a její vlastnosti 1 Pravděpodobnost a její vlastnosti Náhodné jevy Náhodný jev je výsledek pokusu (tj. realizace určitého systému podmínek) a jeho charakteristickým rysem je, že může, ale

Více

Pokrytí šachovnice I

Pokrytí šachovnice I Pokrytí šachovnice I VŠB-TU Ostrava, fakulta FEI Obor: Informatika výpočetní technika Předmět: Diskrétní matematika (DIM) Zpracoval: Přemysl Klas (KLA112) Datum odevzdání: 25.11.2005 1) Abstrakt: Máme

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

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

Náhodné chyby přímých měření Náhodné 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ě pravděpodobná.

Více

1. 5. Minimalizace logické funkce a implementace do cílového programovatelného obvodu CPLD

1. 5. Minimalizace logické funkce a implementace do cílového programovatelného obvodu CPLD .. Minimalizace logické funkce a implementace do cílového programovatelného obvodu Zadání. Navrhněte obvod realizující neminimalizovanou funkci (úplný term) pomocí hradel AND, OR a invertorů. Zaznamenejte

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

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

6 Ordinální informace o kritériích

6 Ordinální informace o kritériích 6 Ordinální informace o kritériích Ordinální informací o kritériích se rozumí jejich uspořádání podle důležitosti. Předpokládejme dále standardní značení jako v předchozích cvičeních. Existují tři základní

Více

Teorie náhodných matic aneb tak trochu jiná statistika

Teorie náhodných matic aneb tak trochu jiná statistika Teorie náhodných matic aneb tak trochu jiná statistika B. Vlková 1, M.Berg 2, B. Martínek 3, O. Švec 4, M. Neumann 5 Gymnázium Uničov 1, Gymnázium Václava Hraběte Hořovice 2, Mendelovo gymnázium Opava

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

Metody síťové analýzy

Metody síťové analýzy Metody síťové analýzy Řeší problematiku složitých systémů, zejména pak vazby mezi jejich jednotlivými prvky. Vychází z teorie grafů. Základní metody síťové analýzy: CPM (Critical Path Method) deterministický

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

Algoritmus. Přesné znění definice algoritmu zní: Algoritmus je procedura proveditelná Turingovým strojem.

Algoritmus. Přesné znění definice algoritmu zní: Algoritmus je procedura proveditelná Turingovým strojem. Algoritmus Algoritmus je schematický postup pro řešení určitého druhu problémů, který je prováděn pomocí konečného množství přesně definovaných kroků. nebo Algoritmus lze definovat jako jednoznačně určenou

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

graficky - užití Cremonova obrazce Zpracovala: Ing. Miroslava Tringelová

graficky - užití Cremonova obrazce Zpracovala: Ing. Miroslava Tringelová Statické řešení zadané rovinné prutové soustavy graficky - užití Cremonova obrazce Zpracovala: Ing. Miroslava Tringelová Určení sil v prutech prutové soustavy - graficky U příkladu viz obr. (1) graficky

Více

9 Kolmost vektorových podprostorů

9 Kolmost vektorových podprostorů 9 Kolmost vektorových podprostorů Od kolmosti dvou vektorů nyní přejdeme ke kolmosti dvou vektorových podprostorů. Budeme se zabývat otázkou, kdy jsou dva vektorové podprostory na sebe kolmé a jak to poznáme.

Více

4.2.4 Orientovaný úhel I

4.2.4 Orientovaný úhel I 44 Orientovaný úhel I Předpoklady: 3508 Definice úhlu ze základní školy: Úhel je část roviny ohraničená dvojicí polopřímek se společným počátečním bodem (konvexní a nekonvexní úhel) Nevýhody této definice:

Více

Necht tedy máme přirozená čísla n, k pod pojmem systém lineárních rovnic rozumíme rovnice ve tvaru

Necht tedy máme přirozená čísla n, k pod pojmem systém lineárních rovnic rozumíme rovnice ve tvaru 2. Systémy lineárních rovnic V této kapitole se budeme zabývat soustavami lineárních rovnic s koeficienty z pole reálných případně komplexních čísel. Uvádíme podmínku pro existenci řešení systému lineárních

Více

VYBRANÉ PARTIE Z NUMERICKÉ MATEMATIKY

VYBRANÉ PARTIE Z NUMERICKÉ MATEMATIKY VYBRANÉ PARTIE Z NUMERICKÉ MATEMATIKY Jan Krejčí 31. srpna 2006 jkrejci@physics.ujep.cz http://physics.ujep.cz/~jkrejci Obsah 1 Přímé metody řešení soustav lineárních rovnic 3 1.1 Gaussova eliminace...............................

Více

63. ročník Matematické olympiády 2013/2014

63. ročník Matematické olympiády 2013/2014 63. ročník Matematické olympiády 2013/2014 Úlohy ústředního kola kategorie P 2. soutěžní den Na řešení úloh máte 4,5 hodiny čistého času. Při soutěži je zakázáno používat jakékoliv pomůcky kromě psacích

Více

Numerická matematika 1

Numerická matematika 1 Numerická matematika 1 Obsah 1 Řešení nelineárních rovnic 3 1.1 Metoda půlení intervalu....................... 3 1.2 Metoda jednoduché iterace..................... 4 1.3 Newtonova metoda..........................

Více

Mezinárodní kolo soutěže Baltík 2010, kategorie C a D

Mezinárodní kolo soutěže Baltík 2010, kategorie C a D Pokyny: 1. Pracovat můžete v ikonkových režimech nebo v režimech C#, ani jedna z variant nebude při hodnocení zvýhodněna. 2. Řešení úloh ukládejte do složky, která se nachází na pracovní ploše počítače.

Více

Generování pseudonáhodných. Ing. Michal Dorda, Ph.D.

Generování pseudonáhodných. Ing. Michal Dorda, Ph.D. Generování pseudonáhodných čísel při simulaci Ing. Michal Dorda, Ph.D. 1 Úvodní poznámky V simulačních modelech se velice často vyskytují náhodné proměnné. Proto se budeme zabývat otázkou, jak při simulaci

Více

IB112 Základy matematiky

IB112 Základy matematiky IB112 Základy matematiky Základy kombinatoriky a kombinatorická pravděpodobnost Jan Strejček Obsah IB112 Základy matematiky: Základy kombinatoriky a kombinatorická pravděpodobnost 2/57 Výběry prvků bez

Více

Barevné formy zebřiček a jejich genetika - část II. příklady

Barevné formy zebřiček a jejich genetika - část II. příklady Barevné formy zebřiček a jejich genetika - část II. příklady Tyto příklady se váží k předchozímu článku o obecných zákonitostech genetiky. K napsaní těchto detailů mne inspiroval jeden dotaz, který určuje

Více

3. Optimalizace pomocí nástroje Řešitel

3. Optimalizace pomocí nástroje Řešitel 3. Optimalizace pomocí nástroje Řešitel Rovnováha mechanické soustavy Uvažujme dvě různé nehmotné lineární pružiny P 1 a P 2 připevněné na pevné horizontální tyči splývající s osou x podle obrázku: (0,0)

Více

Propojení výuky oborů Molekulární a buněčné biologie a Ochrany a tvorby životního prostředí. Reg. č.: CZ.1.07/2.2.00/

Propojení výuky oborů Molekulární a buněčné biologie a Ochrany a tvorby životního prostředí. Reg. č.: CZ.1.07/2.2.00/ Propojení výuky oborů Molekulární a buněčné biologie a Ochrany a tvorby životního prostředí Reg. č.: CZ.1.07/2.2.00/28.0032 Genetika populací Studium dědičnosti a proměnlivosti skupin jedinců (populací)

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

Dynamické programování

Dynamické programování ALG 11 Dynamické programování Úloha batohu neomezená Úloha batohu /1 Úloha batohu / Knapsack problem Máme N předmětů, každý s váhou Vi a cenou Ci (i = 1, 2,..., N) a batoh s kapacitou váhy K. Máme naložit

Více

M - Příprava na 1. zápočtový test - třída 3SA

M - Příprava na 1. zápočtový test - třída 3SA M - Příprava na 1. zápočtový test - třída 3SA Autor: Mgr. Jaromír JUŘEK Kopírování a jakékoliv další využití výukového materiálu je povoleno pouze s uvedením odkazu na www.jarjurek.cz. VARIACE 1 Tento

Více

Chyby měření 210DPSM

Chyby měření 210DPSM Chyby měření 210DPSM Jan Zatloukal Stručný přehled Zdroje a druhy chyb Systematické chyby měření Náhodné chyby měření Spojité a diskrétní náhodné veličiny Normální rozdělení a jeho vlastnosti Odhad parametrů

Více

13 Barvy a úpravy rastrového

13 Barvy a úpravy rastrového 13 Barvy a úpravy rastrového Studijní cíl Tento blok je věnován základním metodám pro úpravu rastrového obrazu, jako je např. otočení, horizontální a vertikální překlopení. Dále budo vysvětleny různé metody

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

Všeobecná rovnováha 1 Statistický pohled

Všeobecná rovnováha 1 Statistický pohled Makroekonomická analýza přednáška 4 1 Všeobecná rovnováha 1 Statistický pohled Předpoklady Úspory (resp.spotřeba) a investice (resp.kapitál), kterými jsme se zabývali v minulých lekcích, jsou spolu s technologickým

Více

2.řada a) složení hranových kostek c) orientace rohových kostek 1 1 d) přehození hranových kostek 1 1 1

2.řada a) složení hranových kostek c) orientace rohových kostek 1 1 d) přehození hranových kostek 1 1 1 Návod je utvořen tak aby skládání nebylo zbytečně komplikované, tzn. neobsahovalo velké množství postupů, krkolomných tahů a různých způsobů držení kostky. Po osvojení a získání jisté zručnosti je možné

Více

Úvod do informatiky. Miroslav Kolařík. Zpracováno dle učebního textu R. Bělohlávka: Úvod do informatiky, KMI UPOL, Olomouc 2008.

Úvod do informatiky. Miroslav Kolařík. Zpracováno dle učebního textu R. Bělohlávka: Úvod do informatiky, KMI UPOL, Olomouc 2008. Úvod do informatiky přednáška čtvrtá Miroslav Kolařík Zpracováno dle učebního textu R. Bělohlávka: Úvod do informatiky, KMI UPOL, Olomouc 2008. Obsah 1 Pojem relace 2 Vztahy a operace s (binárními) relacemi

Více

Dokumentace programu piskvorek

Dokumentace programu piskvorek Dokumentace programu piskvorek Zápočtového programu z Programování II PRM045 Ondřej Vostal 20. září 2011, Letní semestr, 2010/2011 1 Stručné zadání Napsat textovou hru piškvorky se soupeřem s umělou inteligencí.

Více

Geneticky vyvíjené strategie Egyptská hra SENET

Geneticky vyvíjené strategie Egyptská hra SENET Geneticky vyvíjené strategie Egyptská hra SENET Lukáš Rypáček, lukor@atrey.karlin.mff.cuni.cz Abstrakt V tomto dokumentu popíši jeden příklad použití genetických algoritmů pro počítačové hraní her. V tomto

Více

GIS Geografické informační systémy

GIS Geografické informační systémy GIS Geografické informační systémy Obsah přednášky Prostorové vektorové modely Špagetový model Topologický model Převody geometrií Vektorový model Reprezentuje reálný svět po jednotlivých složkách popisu

Více

Základy popisné statistiky

Základy popisné statistiky Základy popisné statistiky Michal Fusek Ústav matematiky FEKT VUT, fusekmi@feec.vutbr.cz 8. přednáška z ESMAT Michal Fusek (fusekmi@feec.vutbr.cz) 1 / 26 Obsah 1 Základy statistického zpracování dat 2

Více

Obsah. Obsah. Předmluva Úvod Část I: Genetické algoritmy Genetický algoritmus krok za krokem...19

Obsah. Obsah. Předmluva Úvod Část I: Genetické algoritmy Genetický algoritmus krok za krokem...19 GENETICKÉ ALGORITMY A GENETICKÉ PROGRAMOV N 5 Obsah Předmluva...9 1. Úvod...13 Část I: Genetické algoritmy...17 2. Genetický algoritmus krok za krokem...19 3. Proč genetické algoritmy fungují?...27 4.

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

Složitost Filip Hlásek

Složitost Filip Hlásek Složitost Filip Hlásek Abstrakt. Příspěvek popisuje dva základní koncepty teoretické informatiky, Turingovy stroje a složitost. Kromě definic důležitých pojmů uvádí také několik souvisejících tvrzení,

Více