Slovenská technická univerzita Fakulta informatiky a informačných technológií Ilkovičova 3, Bratislava 4 Bc. Peter Bartalos Simulované žíhanie

Podobné dokumenty
SRPkapitola06_v1.docx

Inteligentné rozhodovacie systémy Heuristické prehľadávanie SP Október, 2018 Katedra kybernetiky

Úvodná prednáška z RaL

Informačné technológie

Paralelné algoritmy, cast c. 3

Aplikace matematiky- záverečná práca Juraj Bodík 28. septembra 2017 Definície Žena - objekt ohodnotený celým číslom. Každé dve ženy sa dajú porovnat a

Pokrocilé programovanie XI - Diagonalizácia matíc

Metódy dokazovanie v matematike 1 Základné pojmy Matematika exaktná veda vybudovaná DEDUKTÍVNE ZÁKLADNÉ POJMY základy každej matematickej teórie sú in

Vybrané kapitoly zo štatistickej fyziky - domáce úlohy Michal Koval 19. mája 2015 Domáca úloha č. 1 (pochádza z: [3]) Systém pozos

Snímka 1

1 Portál pre odborné publikovanie ISSN Heuristický adaptívny PSD regulátor založený na miere kmitavosti Šlezárová Alexandra Elektrotechnika

PowerPoint Presentation

Detekcia akustických udalostí v bezpečnostných aplikáciách

III. Diferenciálny počet funkcie viac premenných (Prezentácia k prednáškam, čast B) Matematická analýza IV (ÚMV/MAN2d/10) RNDr. Lenka Halčinová, PhD.

SocialInsects

Podpora metód operačného výskumu pri navrhovaní systému liniek doc. RNDr. Štefan PEŠKO, CSc. Katedra matematických metód, Fa

Teória pravdepodobnosti Zákony velkých císel

STRUČNÝ NÁVOD KU IP-COACHU

Microsoft Word - 06b976f06a0Matice - Uzivatelska Dokumentacia

Cvičenie 9 Riešené príklady 1. Príklad min f(x 1, x 2 ) = x x x 1 s.t. x 1 80 x 1 + x Pre riešenie úlohy vykonáme nasledujúce kroky

Matej Kendera - PDF, word, lucene, java

2.5. Dotyčnica krivky, dotykový kužeľ. Nech f je krivka a nech P V (f) (t.j. m P (f) 1). Ak m P (f) = r a l je taká priamka, že I P (f, l) > r, potom

Matematický model činnosti sekvenčného obvodu 7 MATEMATICKÝ MODEL ČINNOSTI SEKVENČNÉHO OBVODU Konečný automat predstavuje matematický model sekvenčnéh

Microsoft Word - mnohouholnik.doc

Paralelné algoritmy, cast c. 2

bakalarska prezentacia.key

Priebeh funkcie

Slovenská technická univerzita v Bratislave Fakulta informatiky a informačných technológií Ilkovičova 2, , Bratislava 4 Internet vecí v našich ž

Informačná a modelová podpora pre kvantifikáciu prvkov daňovej sústavy SR

NÁVRH UČEBNÝCH OSNOV PRE 1

STRUČNÝ NÁVOD KU IP-COACHU

Tomáš Jelínek - včely vyhľadávanie

Štruktúra Modelu Výsledky odhadu Záver Trh práce v krajinách strednej Európy: Small Search and Matching Model Martin Železník Národná Banka Slovenska

Elektronický ukazovateľ polohy s batériou Návod na použitie

Zadanie_1_P1_TMII_ZS

Centrum vedecko-technických informácií, Odbor pre hodnotenie vedy, Oddelenie pre hodnotenie publikačnej činnosti Vyhľadávanie a práca so záznamami - C

Analýza sociálnych sietí Geografická lokalizácia krajín EU

Klasická metóda CPM

17. medzinárodná vedecká konferencia Riešenie krízových situácií v špecifickom prostredí, Fakulta špeciálneho inžinierstva ŽU, Žilina, máj 2

Úvod do lineárnej algebry Monika Molnárová Prednášky 2006

NSK Karta PDF

Pokrocilé spracovanie obrazu - Fourierová transformácia

Jadrova fyzika - Bc.

Paralelné algoritmy, cast c. 3

Prenosový kanál a jeho kapacita

Microsoft PowerPoint - Prog_p08.ppt

8

MO_pred1

Didaktické testy

WP summary

Snímka 1

Snímka 1

Konfigur[PleaseinsertPrerenderUnicode{á}intopreamble]cia dynamick[PleaseinsertPrerenderUnicode{é}intopreamble]ho smerovania na routroch Cisco - Seme

Microsoft Word - Priloha_1.docx

Metrické konštrukcie elipsy Soňa Kudličková, Alžbeta Mackovová Elipsu, ako regulárnu kužeľosečku, môžeme študovať synteticky (konštrukcie bodov elipsy

2

Microsoft Word - zapis-predmetov-AiS

Digitálne technológie v každodennom živote 3. ročník akademický rok 2019/2020 Harmonogram prednášok

Hospodarska_informatika_2015_2016a

Autoregresné (AR) procesy Beáta Stehlíková Časové rady, FMFI UK Autoregresné(AR) procesy p.1/22

O možnosti riešenia deformácie zemského povrchu z pohladu metódy konecných prvkov konference pro studenty matematiky

Microsoft Word - Algoritmy a informatika-priesvitky02.doc

Microsoft Word - Manažment_tagov_tim24_tema12_2017.docx

Pocítacové modelovanie - Šírenie vln v nehomogénnom prostredí - FDTD

Katalóg cieľových požiadaviek k maturitnej skúške

(Manu\341l)

1

PowerPoint Presentation

Klasické a kvantové vĺny na rozhraniach. Peter Markoš, KF FEI STU April 14, 2008 Typeset by FoilTEX

Operačná analýza 2

Microsoft Word - Argumentation_presentation.doc

Preco kocka stací? - o tom, ako sú rozdelené vlastné hodnoty laplasiánu v limite, ked sú velké

Pokrocilé programovanie II - Nelineárne iteracné schémy, chaos, fraktály

Operačná analýza 2

Operačná analýza 2

Genetické algoritmy

Neineárne programovanie zimný semester 2018/19 M. Trnovská, KAMŠ, FMFI UK 1

Pracovný postup pre vypĺňanie údajov elektronického formulára IŠIS pre spravodajskú jednotku 1

Siete vytvorené z korelácií casových radov

Brezina_Gertler_Pekar_2005

1 Rekurencie este raz riesenia niektorych rekurencii z cvik. mame danu rekurenciu napr T (n) = at ( n b ) + k. idea postupu je postupne rozpisovat cle

Súkromné gymnázium, Česká 10, Bratislava INFORMATIKA

9.1 MOMENTY ZOTRVACNOSTI \(KVADRATICKÉ MOMENTY\) A DEVIACNÝ MOMENT PRIEREZU

eKasa

Sila [N] Sila [N] DIPLOMOVÁ PRÁCA Príloha A: Sila v ose skrutky v mieste predpätia P = 0,

Resolution

Prezentace aplikace PowerPoint

Metódy násobenie v stredoveku

Programátorské etudy - Pascal

Ako hrat Burlesque Queen V 1.4

iot business hub whitepaper isdd_em_New.pdf

A 1

Numerické riešenie všeobecnej (klasickej) DMPK rovnice.

Prezentácia programu PowerPoint

Microsoft PowerPoint - Paschenov zakon [Read-Only] [Compatibility Mode]

SK MATEMATICKA OLYMPIADA 2010/ ročník MO Riešenia úloh domáceho kola kategórie Z4 1. Doplň do prázdnych políčok čísla od 1 do 7 každé raz tak,

trafo

Ďalšie vlastnosti goniometrických funkcií

INTERNET BANKING Práca s tokenom VŠETKO, ČO JE MOŽNÉ with.vub.sk, Bank of

Prepis:

Slovenská technická univerzita Fakulta informatiky a informačných technológií Ilkovičova 3, 842 16 Bratislava 4 Bc. Simulované žíhanie pre riešenie pohybu koňa po šachovnici Evolučné algoritmy Case study Odbor: Softvérové inžinierstvo Ročník: 1 Semester: letný Jún, 2006

Obsah 1 Úvod 2 2 Zadanie 2 3 Teoretický úvod 2 4 Riešenie pohybu koňa po šachovnici 4 4.1 Metóda riešenia.......................................... 4 4.2 Výsledky............................................. 6 5 Implementácia 9 Použitá literatúra 11 1

1 Úvod Dokument obsahuje opis riešenia zadania Použite simulované žíhanie pre riešenie pohybu koňa na šachovnici, vypracovaného v rámci skúšky z predmetu Evolučné algoritmy 1. Členenie dokumentu je nasledovné. V prvej kapitole sa nachádza teoretický úvod do simulovaného žíhania, vhodný pre tých, ktorý o tejto problematike nemajú dostatočné znalosti (zdroj textu - [1]). V druhej kapitole je opísaná metóda použitá pri riešení a dosiahnuté výsledky. V poslednej kapitole sa nachádza opis softvérovej implementácie, použitej pri riešení problému. 2 Zadanie Použite simulované žíhanie pre riešenie pohybu koňa na šachovnici, kde zo zadaného pol a máte prebehnút všetky ostatné pol a, pričom na každé pole vstúpite iba raz. Ako druhú čast úlohy riešte rovnaký problém s podmienkou, že sa kôň musí vrátit naspät. Pri riešení použite perturbáciu (mutáciu) toho druhu, že počiatok postupnosti polí do náhodne vybraného počtu polí skopírujete do nového riešenia a zvyšok vygenerujete. Úloha sa dá riešit aj spätným prehl adávaním, ale len pre malé prípady. 3 Teoretický úvod Metóda simulovaného žíhania [1, 2, 3, 4] patrí medzi stochastické optimalizačné algoritmy. Svoj základ má vo fyzike, na rozdiel od iných stochastických optimalizačných algoritmov, ktoré majú svoj základ väčšinou v biológii. Algoritmus simulovaného žíhania je založený na analógii medzi žíhaním tuhých telies a optimalizačným problémom. Počiatkom 80-tych rokov Kirkpatrick, Gelatt a Vecchi a nezávisle Černý dostali geniálny nápad, že problém hl adania globálneho minima môže byt realizovaný podobným spôsobom ako žíhanie tuhého telesa. Na obrázku 1 je znázornená fyzikálna realizácia simulovaného žíhania. Teleso sa vloží do pece (l avý blok), ktorá je vyhriata na vysokú teplotu T max. Teplota sa programovacím zariadením (pravý blok) pomaly znižuje na teplotu T min. Týmto spôsobom sa odstránia štruktúrne defekty vyskytujúce sa v telese. Predpokladajme, že proces ochladzovania je dostatočne pomalý, potom pre každú teplotu T žíhané teleso je v tepelnej rovnováhe, ktorá je opísaná Boltzmanovským rozdelením pravdepodobnosti toho, že pri teplote T je teleso v stave i s energiou E i. w T (E i ) = 1 Q(T ) exp( E i k T ) kde k je Botzmanova konštanta a Q(T ) je normalizačný faktor nazývaný partičná funkcia Q(T ) = i exp( E i k T ) kde sumácia obsahuje všetky stavy i telesa. 1 http://www2.fiit.stuba.sk/ pospichal/prednaskastu06.htm 2

Obrázok 1: Fyzikálna realizácia žíhania Nech teplota T klesá, potom Boltzmanovská distribúcia uprednostňuje stavy s nižšou energiou. V prípade, že teplota sa blíži nule, stav s minimálnou energiou má nenulovú (jednotkovú) pravdepodobnost. Ak je ochladzovanie telesa príliš rýchle (telesu nie je umožnené získat tepelnú rovnováhu pre každú teplotu), defekty v telese môžu zamrznút za vzniku nestabilných štruktúr, ktoré sú vzdialené od mriežkovej štruktúry s najnižšou energiou. Metropolis a spol. navrhli Monte Carlo metódu, ktorá simuluje evolúciu systému tak, že generuje postupnost stavov systému nasledujúcim spôsobom. Nech je daný aktuálny stav systému (určený polohou častíc telesa), potom malá náhodná porucha je generovaná tak, že častice sú jemne posunuté. Ak rozdiel E = E perturbed Ecurrent medzi porušeným stavom a aktuálnym stavom je negatívny ( E perturbed<ec urrent), potom proces pokračuje s novým porušeným stavom. V opačnom prípade, ak E perturbed>ec urrent, pravdepodobnost porušenia stavu P r(perturbed current) = min(1, exp( E/kT )) Toto pravidlo akceptovania porušeného stavu sa nazýva Metropolisovo kritérium. Na obrázku 2 je znázornený priebeh Metropolisovho kritéria P r = min(1, exp( (f f)/t )) pre rôzne teploty, kde f je fixná funkčná hodnota (f = 4) a f je nezávislá premenná braná z intervalu [0, 10]. Pre klesajúce hodnoty teploty T a pre f > f, pravdepodobnost P r 0 ak T 0. K tomu, aby sme formalizovali Metropolisov algoritmus zavedieme nasledujúci formalizmus. Nech je stav systému určený stavovou premennou x (vo všeobecnosti vektor obsahujúci mnoho stavových premenných) a energiou f(x). Proces poruchy stavu x na iný stav x je formálne reprezentovaný operátorom, x = O perturb(x). Stochastický charaker tohto operátora spočíva v náhodnej zmene stavu x na stav x. 3

Obrázok 2: Priebeh Metropolisovho kritéria 4 Riešenie pohybu koňa po šachovnici Táto kapitola je venovaná somotnému riešeniu zadaného problému. V prvej podkapitole obsahuje podrobný opis metódy, ktorou bol problém riešený. Druhá podkapitola sa venuje dosiahnutým výsledkom. 4.1 Metóda riešenia Definovaný problém sme riešili v súlade so zadaním pomocou simulovaného žíhania. Pri riešení sme sa snažili využit aj existujúce metódy a aj nami navrhnuté postupy. Hlavnými zdrojmi informácií pre nás boli [1, 4]. V nasledujúcej časti sa budeme zaoberat presným opisom jednotlivých častí riešenia. Stav systému je reprezentovaný stavovým vektorom. Ten pozostáva z určitého počtu prvkov, pričom každý reprezentuje určitú postupnost krokov pohybu koňa po šachovnici. Na začiatku procesu žíhania, je vygenerovný stav systému tak, že stavový vektor je naplnený generovanými postupnost ami. Generovanie spočíva v postupnom náhodnom generování krokov. Každý pridaný krok je pritom validovaný. Validácia spočíva v testovaní, či sme sa daným krokom nedostali mimo hracieho pol a, alebo na už prejdené políčko. V prípade zlyhania validácie, sa generovanie ukončí. Perturbácia postupnosti spočíva v skopírovaní postupnosti krokov do určitej časti a následnom dogenerovaní postupnosti. Jednou modifikáciou, ktorú sme skúšali, bola úprava pozície po ktorú sa kopíruje. Zmena spočívala v tom, že sme určili hranicu po ktorú sa postupnost skopíruje. Miesto od ktorého sa náhodne dogenerovávala postupnost bola vyberaná len z pozícií nad touto hranicou. Skušali sme túto hranicu volit ako 30%, 50% a 70%. Čim vyžšie bola hranica definovaná, tým rýchlejšie sme získávali lepšie riešenia. Samozrejme bola vyžšia pravdepodobnost, že získané riešenie predstavuje lokálne optimum a znižovala sa šanca dosiahnut požadované globálne optimum. Pri znižovaní teploty sme použili multiplikatívny prístup. Teplota sa pri každom spustení metropolisovho algoritmu upravuje pravidlom T = α T, kde 0 α < 1. Priebeh teploty pri žíhaní je charakterizovaný rýchlejším ochladzovaním na začiatku procesu, ktoré sa následne spomaluje. 4

Pre zabezpečenie tohoto priehebu sme parameter α určovali dvoma spôsobmi. V prvom prípade bol parameter α definovaný ako konštanta. Pri použití konštantnej hodnoty parametra α tento priebeh nemusí byt dostatočne efektívny. Tieto nedostatky sme sa pokúsili riešit dynamickým nastavovaním parametra α pred každým spustením metropolisovho algoritmu. V [4] sa hovorí o spôsobe, kedy sa proces začína pri vel lmi vysokej teplote, následne je prudko ochladený a potom prebieha proces ochladzovania pozvolne. Tento priebeh sme sa snažili vytvorit spomínaným dynamickým nastavovaním hodnoty α. Jeho hodnoty boli určované podl a funkcie zobrazenej na obrázku 3. 1 0.95 0.9 Hodnota α 0.85 0.8 0.75 0.7 0 5 10 15 20 25 30 35 40 45 50 Beh metropolisovho algoritmu Obrázok 3: Priebeh parametra α Použitie opísaného prístupu dynamického nastavovania hotnoty α sa nám ukázal byt prínosný. Výhodou bolo zníženie rizika zlého nastavenia konštantnej hodnoty tohto parametra. Funkciu, ktorou sme ohodnocovali stavový vektor (fitnes), sme konštruovali dvoma spôsobmi. Prvý spôsob bol zameraný na najlepšiu postupnost krokov spomedzi všetkých postupností v stavovom vektore. V druhom prípade boli zahrnuté všetky postupnosti a výsledná fitnes bola založená na priemere zo všetkých postupností. Samostné ohodnotenie postupností bolo založené na pomere počtu zatial dosiahnutých krokov voči počtu krokov potrebných na prejdenie celého pol a. Samozrejme tento prístup je vhodný len na riešenie prvej časti zadania, teda pre prípad, ked sa kôň nemusí vrátit na východiskovú pozíciu. Pre druhú čast zadania, kde sa mal kôň vrátit na pôvodnú pozíciu, bola fitnes upravená tak, aby zahŕňala aj vzdialenost počiatočnej pozície od pozície dosiahnutej po vykonaní nájdenej postupnosti krokov. Pri použití fitnes, ktorá pracovala s priemerom sme nedosiahli dobré výsledky. Všetky uvedené výsledky sa preto budú vzt ahovat na prípad, kedy fitnes závisela len od najlepšej postupnosti v stavovom vektore. Fitnes pre prvú čast zadania bola teda definovaná nasledovne: ( ) nreached f(x) = 1 max, s U(x) n total kde x je stavový vektor, U(x) je množina všetkých postupností v stavovom vektore, n reached je počet dosiahnutých krokov v danej postupnosti z U(x), n total prejdenie celého hracieho pol a. je počet krokov potrebných na 5

Pre druhú čast zadania bola upravená nasledovne: ( ) nreached + diff reached f(x) = 1 max, s U(x) n total + diff max kde diff reached je vzdialenost medzi počiatočnou a koncovou pozíciou koňa. Vzdialenost sa počíta ako súčet absolútnych hodnôt rozdielov horizontálnych a vertikálnych súradníc počiatočnej a koncovej pozície koňa. diff max predstavuje maximálnu možnú vzdialenost medzi počiatočnou a koncovou pozíciou koňa, počítanú ako dvojnásobok vel kosti hracieho pol a bez jednej. Proces žíhania je navrhnutý tak, aby minimalizoval ohodnocovaciu funkciu. Z toho dôvodu sa vo funkcii nachádza odčítavanie od jednej. Vyplýva z toho, že čím nižšie ohodnotenie, tým lepšia postupnost. Kritickou čast ou riešenia problému pomocou simulovaného žíhania je spomínané nastavenie parametrov algoritmu. Ide o nastavenie začiatočnej teploty T max, minimálnej teploty T min a počtu aplikácií metropolisovho algoritmu k max. Spočiatku sme tieto parametre nastavovali viacmenej náhodne. Po získaní poznatkov o chovaní sa procesu pri rôznych hodnotách týchto parametrov sme sa ich snažili nastavit na optimálne hodnoty, ktoré prinášali najlepšie výsledky. Hodnotu T max sme sa snažili nastavit tak, aby približne polovica porušených stavov bola akceptovaná metropolisovým algoritmom. Pri dynamickom nastavovaní parametra α sme volili hodnotu T max vyžšiu. Rýchle ochladzovanie však spôsobilo, že teplota rýchlo dosiahla hodnotu pri ktorej bolo rozhodovanie o akceptovaní stavov blízko optimálne. Ked že našim ciel om bolo získat presne definovanú postupnost krokov, ktorú vieme overit, tak sme hodnotu parametra T min zvolili nulovú. Ukončenie procesu bolo definované nájdením požadovanej postupnosti. Počet aplikácií metropolisovho algoritmu k max sme nastavovali na základe výsledkov pri jednotlivých hodnotách. 4.2 Výsledky V tejto kapitole sa budeme venovat vyhodnoteniu výsledkov, ktoré sme dosiahli pri riešení problému. Výsledky, ktoré budú prezentované sme dosiahli pri nastavení počiatočnej pozície koňa do l avého dolného okraja hracej plochy. Počas testovania procesu žíhania sme odksúšali rôzne kombinácie parametrov algoritmu. Údaje, ktoré budeme d alej uvádzat boli získané pri nastaveniach, ktoré sme považovali za najvhodnejšie. V prvej časti zadania bolo treba riešit pohyb koňa po šachovnici tak, že po prejdení všetkých polí sa kôň nemusí dostat na východiskovú pozíciu. Tento prípad predstavoval omnoho jednoduchší problém ako situácia, ked sa mal kôň dostat na východiskovú pozíciu. Riešenie sme získali po pomerne krátkom čase behu programu. Na obrázku 4 vidíte časový priebeh fitnes pre tento prípad počas niekol kých behov procesu (v grafoch je fitnes pre lepšiu prehl ladnost znázornená ako pomer dosiahnutého výsledku voči finálnemu, žiadanému výsledku). Na horizontálnej osi je zobrazený čas behu programu uvedený v sekundách. Samozrejme táto časová informácia nie je smerodajná v absolútnej miere, ked že doba vykonávania programu je silne závislá od hardvérovej konfigurácie počítača na ktorom program beží a celkových podmienkach prostredia operačného systému. Zaujímavé je porovnávanie s d alšími grafmi, ktoré uvedieme. Pre behy zobrazené na obrázku 4 obsahoval stavový vektor 10 postupností. Z grafu je vidiet, že riešenie bolo nájdené vel mi rýchlo. Zaujímavé je porovnanie s údajmi z grafu z obrázka 5. Pre tieto behy obsahoval 6

stavový vektor 500 postupností. Z porovnania grafov je vidiet, že v druhom prípade trvalo nájdenie riešenia dlhšie, pritom stavový vektor obsahoval 50-krát viac postupností, teda omnoho viac potenciálnych kandidátov na riešenie. Problém však spôsobovalo to, že pre dlhší stavový vektor trvá aj výpočet úmerne dlhšie. Proces simulovaného žíhania je preto tiež pomalší, čím sa odd aluje jeho efektívny účinok. 1 0.9 0.8 0.7 0.6 Fitnes 0.5 0.4 0.3 0.2 0.1 0 0 5 10 15 20 25 30 35 40 45 50 Cas Obrázok 4: Priebeh fitnes 1 0.9 0.8 0.7 0.6 Fitnes 0.5 0.4 0.3 0.2 0.1 0 0 20 40 60 80 100 120 140 160 Cas Obrázok 5: Priebeh fitnes V d alšej časti sa budeme venovat druhej časti zadania, t.j. situácii, ked sa má kôň dostat po prechode všetkých pozícií do východiskovej. Treba si uvedomit, že vyhodnocovacia funkcia je pre tento prípad iné ako v predošlom prípade, čomu treba prispôsobit aj interpretáciu výsledných údajov. Na obrázku 6 vidíme podobne ako v predchádzajúcej časti znázornený priebeh vyhodnocovacej funkcie v čase. Počet postupností v stavovom vektore je opät 10. Z grafu je vidiet, že vývoj fitnes je v tomto prípade o niečo pomalší ako v predchádzajúcom prípade. Vývoj riešenia sa však pozastavuje po dosiahnutí určitého bodu. Po krátkej dobe sa síce nájde nejaká postupnost, 7

avšak hl adanie riešenia, pri ktorom sa kôň po prejdení všetkých políčok ocitne čo najbližšie k východiskovej pozícii je už pozvolné. Dosiahnut maximálnu fitnes sa nám v reálnom čase nedarilo. Rovnako ako v predchádzajúcej časti, aj v tomto prípade sme spravili experimenty pri výrazne vyžších počtoch postupností v stavovom vektore. Dosiahnuté výsledky znova potvrdzujú, že vol ba príliš vysokého počtu postupností nie je vhodná, pozri obrázok 7. 1 0.9 0.8 0.7 0.6 Fitnes 0.5 0.4 0.3 0.2 0.1 0 0 10 20 30 40 50 60 70 80 90 Cas Obrázok 6: Priebeh fitnes 1 0.9 0.8 0.7 0.6 Fitnes 0.5 0.4 0.3 0.2 0.1 0 0 50 100 150 200 250 300 350 Cas Obrázok 7: Priebeh fitnes Štatistické výsledky dosiahnuté v jednotlivých prípadoch behov simulovaného žíhania sú sumarizované v tabul ke číslo 1. V tabul ke sú uvedené minimálne, maximálne a priemerné hodnoty časov, po ktorých bolo dosiahnuté riešenie. Z uvedených údajov je zrejmé, že situácia, ked sa kôň nemusí dostat na východiskovú pozíciu predstavuje omnoho jednoduchší problém. V druhom prípade, ked sa kôň má dostat na východiskovú pozíciu je omnoho náročnejší. Priemerné časové hodnoty, po ktorých sa dosiahol výsledok bol takmer dvojnásobný. Z výsledkov je rovnako vidiet, že odchýlky v jednotlivých behoch algoritmu môžu byt dost vel ké. Tento fakt interpretujeme 8

tak, že v algoritme hrá nezanedbatel nú úlohu náhoda, ktorá spôsobuje, že v jednotlivých behoch môže byt priebeh rozdielny. Tabul ka 1: Štatistiky: časy dosiahnutia riešenia v jednotlivých prípadoch Bez návratu S návratom Dĺžka vektora 10 500 10 500 min 20 50 30 160 max 50 160 90 320 priemer 36 104 58 202 5 Implementácia Nasledujuca kapitola je venovaná implementácii riešenia zadania. Ako implementačný jazyk bol použitý jazyk Java verzie 1.5. Na obrázku 8 je znázornený diagram tried, ktoré boli vytvorené pre riešenie zadania. Hlavná funkcionalita je implementovaná v triede SimmulatedAnnealing. Trieda Observer slúži len na priebežné monitorovanie stavu procesu žíhania. Obrázok 8: Diagram tried Atribútmi triedy SimmulatedAnnealing sú: boardsize - rozmer hracieho pol a x - horizontálna súradnica koňa y - vertikálna súradnica koňa 9

vectorsize - dĺžka vektora reprezentujúci stavovú premennú (počet postupností) V triede sa nachádzajú operácie zabezpečujúce samotný proces žíhania a rôzne pomocné operácie. Základ vykonávania procesu žíhania je tvorený operáciami simulatedannealing a metropolisalgorithm. Význam ostatných operácií je nasledovný: getbeststepsequence - vráti najlepšiu postupnost zo stavového vektora (najdlhšia korektná postupnost ) evaluate - ohodnotí stavový vektor (fitnes) getvalue - ohodnotí jednu postupnost perturbation - perturbácia stavového vektora sequencemutation - perturbácia jednej postupnosti getrandomstatevector - vytvorí náhodný stavový vektor getrandomstepsequence - vytvorí náhodnú korektnú postupnost krokov addnextstep - pridá jeden korektný krok ku existujúcej postupnosti getrandomnextstepsequence - vráti náhodnú postupnost ôsmych rôznych možných krokov koňa (postupnost dĺžky osem) getnewxposition - vypočíta novú horizontálnu pozíciu koňa pre daný krok z danej pozície getnewyposition - vypočíta novú vertikálnu pozíciu koňa pre daný krok z danej pozície issequencereturningtoinitial - zistí, či nájdená postupnost, je taká, že jej koncová pozícia je zhodná s východiskovou getfinalxposition - zistí finálnu horizontálnu pozíciu pre danú postupnost getfinalyposition - zistí finálnu vertikálnu pozíciu pre danú postupnost Trieda Observer je implementovaná ako zvlášt vlákno, ktoré sleduje štatistické premenné a v definovaných intervaloch ich vypíše na konzolu. Pre spustenie procesu žíhania použite metódu main triedy SimulatedAnnealing. 10

Použitá literatúra [1] Kvasnička, V., Pospíchal J., Tiňo P.: Evolučné algoritmy. Slovenská technická univerzita v Bratislove, vydavatel stvo STU, 2000. [2] Laarhoven, P.J.M., Aarts E.H.L.: Simulated annealing. Theory and applications. Reidel, Dordrecht, 1987. [3] Otten, R.H.J.M., Ginneken, L.P.P.P.: Annealing algorithm. Kluwer, Boston, 1989. [4] Simulated Annealing http://www.cs.nott.ac.uk/ gxk/aim/notes/simulatedannealing.doc 11