TDK-dolgozat Marcsák Gábor Zoltán
TDK-dolgozat
Marcsák Gábor Zoltán
MISKOLCI EGYETEM GÉPÉSZMÉRNÖKI ÉS INFORMATIKAI KAR
Anyagmozgatási és Logisztikai Tanszék
TUDOMÁNYOS DIÁKKÖRI DOLGOZAT
Internetes optimáló alkalmazás készítése JavaFX
környezetben az utazó ügynök probléma
megoldására
Marcsák Gábor Zoltán
I. éves logisztikai mérnök
MSc szakos hallgató
Konzulens:
Prof. Dr. Jármai Károly
egyetemi tanár
Anyagmozgatási és Logisztikai Tanszék
Miskolc, 2013
Köszönetnyilvánítás
A bemutatott kutató munka 2012 július 1-től 2013 február 28-ig a TÁMOP-
4.2.1.B-10/2/KONV-2010-0001 jelű projekt részeként, további részei 2013 március
1-től aTÁMOP-4.2.2.B-10/1-2010-0008 jelű projekt részeként az Európai Unió
támogatásával, az Európai Szociális Alap társfinanszírozásával valósul meg.
I
Tartalomjegyzék
1 BEVEZETÉS ......................................................................................................... 1
2 A JAVAFX KERETRENDSZER ................................................................................. 2
2.1 MI AZ A JAVAFX? .................................................................................................... 2
2.2 FEJLESZTŐI KÖRNYEZET ............................................................................................. 4
2.3 A KERETRENDSZER FELÉPÍTÉSE .................................................................................... 6
2.3.1 Moduláris felépítés ......................................................................................... 7
2.3.2 Asztali vagy web alkalmazás? ...................................................................... 11
2.3.3 Leírások, forráskódok ................................................................................... 12
3 VIZSGÁLT OPTIMÁLÁSI PROBLÉMÁK ................................................................. 13
3.1 FOLYTONOS MATEMATIKAI FÜGGVÉNYEK GLOBÁLIS SZÉLSŐÉRTÉKEINEK KERESÉSE ................ 13
3.2 HEURISZTIKUS ALGORITMUSOK MATEMATIKAI FÜGGVÉNYEK OPTIMÁLÁSÁRA ...................... 15
3.2.1 Bacterial Foraging ........................................................................................ 16
3.2.1.1 Elméleti háttér .................................................................................................. 16
3.2.1.2 Az algoritmus működése ................................................................................... 17
3.2.1.3 Pszeudokód ....................................................................................................... 17
3.2.2 Differential Evolution .................................................................................... 17
3.2.2.1 Elméleti háttér .................................................................................................. 17
3.2.2.2 Az algoritmus működése ................................................................................... 18
3.2.2.3 Pszedokód ......................................................................................................... 19
3.2.3 Particle Swarm ............................................................................................. 19
3.2.3.1 Elméleti háttér .................................................................................................. 19
3.2.3.2 Az algoritmus működése ................................................................................... 20
3.2.3.3 Pszeudokód ....................................................................................................... 21
3.2.4 Az algoritmusok tesztelése ........................................................................... 22
3.3 AZ UTAZÓ ÜGYNÖK PROBLÉMA ................................................................................ 26
3.3.1 Miért nehéz megoldani az Utazó ügynök feladatot? ................................... 27
3.4 HEURISZTIKUS ALGORITMUSOK AZ UTAZÓ ÜGYNÖK PROBLÉMA MEGOLDÁSÁRA .................. 28
3.4.1 Ant Colony .................................................................................................... 28
3.4.1.1 Elméleti háttér .................................................................................................. 28
II
3.4.1.2 Az algoritmus működése ................................................................................... 29
3.4.1.3 Pszeudokód ....................................................................................................... 29
3.4.2 Simulated Annealing .................................................................................... 30
3.4.2.1 Elméleti leírás .................................................................................................... 30
3.4.2.2 Az algoritmus működése ................................................................................... 31
3.4.2.3 Pszeudokód ....................................................................................................... 31
3.4.3 Tabu Search .................................................................................................. 31
3.4.3.1 Az algoritmus működése ................................................................................... 32
3.4.3.2 Pszeudokód ....................................................................................................... 32
3.4.4 Az Utazó ügynök feladat specifikálása a teszthez ........................................ 33
3.4.5 Az algoritmusok tesztelése, az Utazó ügynök feladat megoldása ............... 34
3.4.5.1 Az algoritmusok paraméterezése ..................................................................... 34
3.4.5.2 Teszteredmények .............................................................................................. 35
3.5 AZ ALGORITMUSOK TOVÁBBFEJLESZTÉSI LEHETŐSÉGEI ................................................... 37
4 ÖSSZEFOGLALÁS .............................................................................................. 38
5 MELLÉKLET ....................................................................................................... 39
5.1 A BACTERIAL FORAGING ALGORITMUS PSZEUDOKÓDJA .................................................. 39
5.1.1 Chemotaxis and Swim .................................................................................. 40
6 IRODALOMJEGYZÉK ......................................................................................... 41
III
Ábrajegyzék
1. ÁBRA: A JAVAFX SCENE GRAPH ...................................................................................................... 4
2. ÁBRA: JAVAFX SCENEBUILDER ........................................................................................................ 5
3. ÁBRA: AZ OPTIMÁLÓ ALKALMAZÁS FUTÁS KÖZBEN .............................................................................. 6
4. ÁBRA: AZ OPTIMÁLÓ ALKALMAZÁS MODULÁRIS FELÉPÍTÉSE ................................................................... 7
5. ÁBRA: MODULÁRIS FELÉPÍTÉS A SCENEGRAPH VONATKOZÁSÁBAN ......................................................... 8
6. ÁBRA: A KERETRENDSZER ÜRES MUNKAFELÜLETTEL ........................................................................... 10
7. ÁBRA: A KERETRENDSZER A KIVÁLASZTOTT LISTAELEMHEZ TARTOZÓ MUNKAFELÜLETTEL ............................ 10
8. ÁBRA: PLATFORM KIVÁLASZTÁSA NETBEANS KÖRNYEZETBEN .............................................................. 11
9. ÁBRA: ACKLEY'S TESZTFÜGGVÉNY .................................................................................................. 14
10. ÁBRA: E. COLI BAKTÉRIUM KOLÓNIA ............................................................................................ 16
11. ÁBRA: A DARWINI EVOLÚCIÓ ...................................................................................................... 18
12. ÁBRA: MADÁRRAJ RENDEZETT MOZGÁSA ...................................................................................... 20
13. ÁBRA: PARTICLE SWARM KERESÉS INDÍTÁSA .................................................................................. 22
14. ÁBRA: PARTICLE SWARM KERESÉS EREDMÉNYE ............................................................................... 23
15. ÁBRA: RASTRIGIN'S TESZTFÜGGVÉNY ............................................................................................ 24
16. ÁBRA: HANGYÁK ÉLELEMKERESÉS KÖZBEN ..................................................................................... 28
17. ÁBRA: TEMPERÁLÁS SORÁN KIALAKULÓ KRISTÁLYSZERKEZET ............................................................. 30
18. ÁBRA: UTAZÓ ÜGYNÖK PROBLÉMA GRÁFJÁNAK MEGJELENÍTÉSE JAVAFX CANVAS VEZÉRLŐVEL ................. 33
19. ÁBRA: A KÖRUTAK KÖLTSÉGÉNEK VÁLTOZÁSA TSP MEGOLDÁS SORÁN ................................................. 36
20. ÁBRA: A KÖRUTAK KÖLTSÉGÉNEK VÁLTOZÁSA ANT COLONY ALGORITMUS PARAMÉTEREZÉSÉVEL ............... 37
Internetes optimáló alkalmazás készítése JavaFX környezetben az utazó ügynök probléma megoldására
1
1 Bevezetés
Az optimálás mindennapi életünk egyik meghatározó tevékenysége. A
legtöbb ember folyamatosan azon dolgozik, hogy az adott feltételek mellett a maga,
vagy mások számára valamilyen szempontból legkedvezőbb kimenetelt válassza ki
egy probléma megoldása során. E mindenki által végzett tudatos vagy tudat alatti
tevékenység az optimálás. A tudományág széleskörű matematikai alapokkal,
módszerekkel rendelkezik. Számos kiváló algoritmust dolgoztak ki a különböző
optimálási problémák megoldására. A számítógépek rohamos fejlődése ellenére
még mindig sok olyan feladat ismert, mely nem megoldható pusztán a számítási
teljesítményre alapozva. A megoldást az informált kereső, úgynevezett heurisztikus
algoritmusok jelentik. Előnyük, hogy nagy bonyolultságú feladatoknál is sok
esetben sikerrel alkalmazhatók. Legfontosabb hátrányuk azonban, hogy nem
garantálható teljes bizonyossággal az optimális megoldás megtalálása [1]. A
különböző heurisztikus algoritmusok a tudomány számos területén korábban
megoldhatatlannak vélt problémák megoldásával bizonyították létjogosultságukat.
A célom egy olyan korszerű web alkalmazás megvalósítása volt, mely egyedülálló
gyűjteménye a modern heurisztikus algoritmusoknak.
A program megvalósításához a napjainkban újdonságnak számító JavaFX
technológiát használtam. Az alkalmazást böngészőből, Interneten keresztül lehet
elérni, így könnyen hozzáférhető bárki számára, aki érdeklődik a témában. Nem
igényel külön telepítést, és további hatalmas előnye a technológiának, hogy
ugyanolyan futási sebesség érhető el a webes felületen, mintha asztali alkalmazásról
lenne szó. Ezen utóbbi jellemző nélkülözhetetlen a számításigényes optimálási
feladatok megoldásához. A megvalósult program fő eleme a keretrendszer, mely
egy felhasználóbarát felhasználói felület. A keretrendszerbe moduláris elven,
komponensenként épülnek a különböző Java nyelven megvalósított optimáló
algoritmusok, így lehetővé téve a program későbbi egyszerű bővítését, fejlesztését.
A felhasználó szabadon állíthatja az optimáló eljárások legtöbb futási paraméterét,
valamint lehetősége van az algoritmusok forráskódjának mentésére, melyet
szabadon átírhat, megváltoztathat.
Internetes optimáló alkalmazás készítése JavaFX környezetben az utazó ügynök probléma megoldására
2
2 A JavaFX keretrendszer
A heurisztikus algoritmusok gyűjteményéhez mindenekelőtt egy
keretrendszert kellett fejlesztenem, mely tárolja, rendszeri azokat. A program
tervezésekor több fontos szempontot vettem figyelembe:
1. Egy Interneten bárki számára könnyen és gyorsan hozzáférhető web
alkalmazást szerettem volna létrehozni, amit nem kell külön telepíteni, böngészőből
használható.
2. A legtöbb heurisztikus algoritmus implementációja sokkal egyszerűbb
modern, objektum orientált paradigmát követő programozási nyelvek segítségével.
Annak ellenére, hogy a nem informált kereső eljárásokhoz viszonyítva kevesebb
számítás árán jutnak eredményre, bonyolult problémák esetén fontos a választott
technológia futási sebessége.
3. Alapvető követelmény a könnyen kezelhető, informatív felhasználói felület.
A beépített heurisztikus algoritmusok története, elméleti leírása és pszeudokódja
egyaránt elérhető kell legyen. A működésük megértése azonban gyakorlati
példákkal szemléltetve sokszor egyszerűbb, ehhez is ki kellett dolgoznom a
megfelelő programrészeket.
4. Fontos volt továbbá, hogy az algoritmusok gyűjteményét könnyen bővíteni
lehessen. A keretrendszer ennek megfelelően egyfajta moduláris struktúrát követ.
Az új tartalom ezáltal könnyen illeszthető a már meglévőhöz.
A fent vázolt szempontok figyelembevételével a viszonylag újnak számító
JavaFX technológiát választottam a megvalósításhoz.
2.1 Mi az a JavaFX?
A JavaFX az amerikai szoftveróriás Oracle Corporation Java alapú szoftver
platformja, melynek segítségével asztali alkalmazások mellett web alkalmazások
(RIA- Rich Internet Application) is fejleszthetők, valamint modern és gyors
grafikus felhasználói interfészt biztosít alkalmazásainkhoz. Az első verziója
(JavaFX 1.0) 2008. December 4-én jelent meg. Kifejlesztését leginkább az
indokolta, hogy egy egységes GUI könyvtárat hozzanak létre a Java projektek
Internetes optimáló alkalmazás készítése JavaFX környezetben az utazó ügynök probléma megoldására
3
számára. A korábban elterjedt megoldások közül a két legnépszerűbb, a SWING és
az AWT (Abstract Windowing Toolkit) a modern kinézet és technológiai
lehetőségek tekintetében egyre kevésbé voltak versenyképesek a konkurens
fejlesztői platformok (.NET, JavaScript, Flash, Android, iOS) GUI könyvtáraival. A
JavaFX technológia tehát a népszerű Java platform új generációs GUI platformja,
mely többek között olyan elvárásoknak is megfelel, mint a gyors alkalmazás
fejlesztés (RAD- Rapid Application Development), a modern grafikus kártyák
hardveres gyorsításának kihasználása, valamint animációk, multimédiás tartalmak
megjelenítése. Mindehhez jól megtervezett, produktív fejlesztői felületet biztosít,
valamint megőrzi a Java technológia egyik legnagyobb előnyeként számon tartott
platformfüggetlenséget. A legnépszerűbb operációs rendszerek, melyeken elérhető a
JavaFX: Windows (Windows XP, Windows Vista, Windows 7, Windows 8),
különböző Linux disztribúciók, Mac OS X. A közeljövőben valószínűleg az egyre
nagyobb népszerűségnek örvendő Android, Windows 8 és iOS alapú mobil
eszközök, táblagépek és okostelefonok is támogatni fogják, mivel elkészítik a
platform ARM processzor architektúrához igazított változatát.
A JavaFX 2.0 előtti verziók egy JavaScript-hez hasonló, JavaFX Script nevű
dekleratív nyelvet használtak. A fordító a JavaFX Script kódot a Java kódhoz
hasonlóan bájtkóddá alakította, amit a Java Virtuális Gép (JVM- Java Virtual
Machine) értelmez. A fejlesztők azonban nem fogadták egyöntetű lelkesedéssel,
hogy a GUI használatához egy új szkript nyelvet is el kell sajátítaniuk, ezért a
JavaFX 2.0 már teljes mértékben Java alapokon nyugszik. Az alkalmazásokat natív
Java könyvtárak használatával készíthetik a fejlesztők. A JavaFX felhasználói
felület egyik fő jellemzője, hogy a különböző felületelemek és vezérlők egy
hierarchikus fa struktúrát (Scene Graph) (1. ábra: A JavaFX Scene Graph) alkotnak.
A fa struktúra paradigma nagymértékben leegyszerűsíti a felhasználói felületek
létrehozását, valamint a komplex vizuális effektek és transzformációk használatát
[2].
A legfrissebb JavaFX verzió a 2.2-es, ami 2012. augusztus 14-én jelent meg,
és szerves részét képezi a Java SE (Standard Edition) fejlesztői platformnak. Az
alkalmazások futtatásához elegendő a JRE (Java Runtime Environment) telepítése.
Internetes optimáló alkalmazás készítése JavaFX környezetben az utazó ügynök probléma megoldására
4
1. ábra: A JavaFX Scene Graph
2.2 Fejlesztői környezet
A JavaFX technológiát számos integrált fejlesztői környezet (IDE- Integrated
Development Environment) támogatja, a hivatalos ajánlás szerint a méltán népszerű
NetBeans-t érdemes használni a kódoláshoz. Nagy mértékben képes gyorsítani és
egyszerűsíteni a fejlesztést, köszönhetően intelligens kódkiegészítő, projekt kezelő
és hibakereső moduljainak. Rendelkezik továbbá beépített verziókövető
lehetőségekkel (Subversion, Mercurial, Git), mely szintén fontos egy nagyobb
projekt sikeres megvalósításához. A felhasználói felület létrehozására JavaFX
esetén alapvetően két módszer létezik:
1. A NetBeans, vagy más IDE használatával az alkalmazás logikával együtt,
Java kódban hozzuk létre a felhasználói felület elemeit.
2. Nagy mértékben leegyszerűsítheti a fejlesztést azon napjainkban egyre
terjedő szemléletmód, mely szerint a felhasználói felület létrehozását
különválasztják a kódolástól. Az Android, iOS és .NET technológiák is hasonló
paradigmát követnek. A JavaFX esetében ezért kidolgoztak egy XML alapú,
Internetes optimáló alkalmazás készítése JavaFX környezetben az utazó ügynök probléma megoldására
úgynevezett FXML leíró nyelvet a
a webfejlesztésben elterjedt CSS (Cascading Style Sheet) stílusleíró nyelv
segítségével könnyen és s
Mindkét megközelítésnek megvan a maga előnye és hátránya. Előbbi esetben
elegendő a Java nyelv ismerete, viszont nagyobb méretű kódot fogunk kapni.
Utóbbi esetben az FXML használata tanulást igényel. A felhasználói felület
létrehozását egy külön fejlesztői eszköz, a JavaFX SceneBuilder támogatja. A
fejlesztő egy grafikus szerkesztőben drag&drop módszerrel készíti a felületet,
ezáltal nem kell kódolnia
automatikusan hozza létre a f
A felület elemeket az FXML
vezérlőfüggvényeik segítségével integrálhatjuk a Java kódba.
Mivel a fejlesztés so
alkalmazásban található gyakorlati példákat és algoritmusokat a felhasználók
egyszerűen letölthessék és módosíthassák, ezért kizárólag Java kódot használtam a
felhasználói felület létrehozásához is. Öss
használt fejlesztői környezet komponensei
1. Java SE (Standard Edition) 7, minimum update 6 verzió
2. NetBeans IDE, minimum 7.0 verzió
Internetes optimáló alkalmazás készítése JavaFX környezetben az utazó ügynök probléma megoldására
5
úgynevezett FXML leíró nyelvet a GUI elmeinek megadásához. Az elemek kinézete
a webfejlesztésben elterjedt CSS (Cascading Style Sheet) stílusleíró nyelv
segítségével könnyen és sokrétűen testre szabható.
Mindkét megközelítésnek megvan a maga előnye és hátránya. Előbbi esetben
elegendő a Java nyelv ismerete, viszont nagyobb méretű kódot fogunk kapni.
Utóbbi esetben az FXML használata tanulást igényel. A felhasználói felület
zását egy külön fejlesztői eszköz, a JavaFX SceneBuilder támogatja. A
fejlesztő egy grafikus szerkesztőben drag&drop módszerrel készíti a felületet,
ezáltal nem kell kódolnia (2. ábra: JavaFX SceneBuilder). A SceneBuilder
automatikusan hozza létre a felhasználói interfész fa struktúráját leíró FXML kódot.
A felület elemeket az FXML-ben definiált azonosítójuk (ID) vagy
vezérlőfüggvényeik segítségével integrálhatjuk a Java kódba.
2. ábra: JavaFX SceneBuilder
fejlesztés során fontos szempont volt, hogy az internetes optimáló
alkalmazásban található gyakorlati példákat és algoritmusokat a felhasználók
egyszerűen letölthessék és módosíthassák, ezért kizárólag Java kódot használtam a
felhasználói felület létrehozásához is. Összefoglalásképpen tehát a fejlesztés során
használt fejlesztői környezet komponensei:
Java SE (Standard Edition) 7, minimum update 6 verzió
NetBeans IDE, minimum 7.0 verzió
Internetes optimáló alkalmazás készítése JavaFX környezetben az utazó ügynök probléma megoldására
elmeinek megadásához. Az elemek kinézete
a webfejlesztésben elterjedt CSS (Cascading Style Sheet) stílusleíró nyelv
Mindkét megközelítésnek megvan a maga előnye és hátránya. Előbbi esetben
elegendő a Java nyelv ismerete, viszont nagyobb méretű kódot fogunk kapni.
Utóbbi esetben az FXML használata tanulást igényel. A felhasználói felület
zását egy külön fejlesztői eszköz, a JavaFX SceneBuilder támogatja. A
fejlesztő egy grafikus szerkesztőben drag&drop módszerrel készíti a felületet,
. A SceneBuilder
elhasználói interfész fa struktúráját leíró FXML kódot.
ben definiált azonosítójuk (ID) vagy
rán fontos szempont volt, hogy az internetes optimáló
alkalmazásban található gyakorlati példákat és algoritmusokat a felhasználók
egyszerűen letölthessék és módosíthassák, ezért kizárólag Java kódot használtam a
zefoglalásképpen tehát a fejlesztés során
Internetes optimáló alkalmazás készítése JavaFX környezetben az utazó ügynök probléma megoldására
2.3 A keretrendszer felépítése
Az internetes optimáló alkalmazás létrehozásával elsődleg
összegyűjtsem a különböző intelligens heurisztikus algoritmusokat, és segítségükkel
olyan problémákat oldjak meg, melyek hagyományos módszerekkel
megoldhatatlanok. Az algoritmusok gyűjteményének egyszerűen bővíthetőnek kell
lennie, az elméleti leírás és pszeudokód mellett pedig gyakorlati példákkal is
szemléltetem a működésüket. Egyfajta interaktív webes tudásgyűjteményt szerettem
volna tehát létrehozni a témában, melyhez a JavaFX platform kiváló alapot
biztosított.
3. ábra
A 3. ábra az internetes optimáló alkalmazást mutatja futás közben. A program
elrendezéséhez az e-könyv olvasó programok (Pl. Adobe Reader, Foxit Reader)
szolgáltak mintául. A különböző v
el, a tartalomjegyzék a bal oldalon található, a tartalom megjelenítésére pedig a
fennmaradó terület szolgál. A program képernyő
intelligensen méretezi magát.
Internetes optimáló alkalmazás készítése JavaFX környezetben az utazó ügynök probléma megoldására
6
A keretrendszer felépítése
Az internetes optimáló alkalmazás létrehozásával elsődleg
összegyűjtsem a különböző intelligens heurisztikus algoritmusokat, és segítségükkel
olyan problémákat oldjak meg, melyek hagyományos módszerekkel
megoldhatatlanok. Az algoritmusok gyűjteményének egyszerűen bővíthetőnek kell
ti leírás és pszeudokód mellett pedig gyakorlati példákkal is
szemléltetem a működésüket. Egyfajta interaktív webes tudásgyűjteményt szerettem
volna tehát létrehozni a témában, melyhez a JavaFX platform kiváló alapot
. ábra: Az optimáló alkalmazás futás közben
az internetes optimáló alkalmazást mutatja futás közben. A program
könyv olvasó programok (Pl. Adobe Reader, Foxit Reader)
szolgáltak mintául. A különböző vezérlők az alsó és felső sávokban helyezkednek
el, a tartalomjegyzék a bal oldalon található, a tartalom megjelenítésére pedig a
fennmaradó terület szolgál. A program képernyőfelbontás
intelligensen méretezi magát.
Internetes optimáló alkalmazás készítése JavaFX környezetben az utazó ügynök probléma megoldására
Az internetes optimáló alkalmazás létrehozásával elsődleges célom, hogy
összegyűjtsem a különböző intelligens heurisztikus algoritmusokat, és segítségükkel
olyan problémákat oldjak meg, melyek hagyományos módszerekkel
megoldhatatlanok. Az algoritmusok gyűjteményének egyszerűen bővíthetőnek kell
ti leírás és pszeudokód mellett pedig gyakorlati példákkal is
szemléltetem a működésüket. Egyfajta interaktív webes tudásgyűjteményt szerettem
volna tehát létrehozni a témában, melyhez a JavaFX platform kiváló alapot
az internetes optimáló alkalmazást mutatja futás közben. A program
könyv olvasó programok (Pl. Adobe Reader, Foxit Reader)
ezérlők az alsó és felső sávokban helyezkednek
el, a tartalomjegyzék a bal oldalon található, a tartalom megjelenítésére pedig a
felbontás függvényében
Internetes optimáló alkalmazás készítése JavaFX környezetben az utazó ügynök probléma megoldására
2.3.1 Moduláris felépítés
Az egyszerű bővíthetőség érdekében egy olyan keretrendszert hoztam létre,
mely moduláris elven épül fel. Kidolgozott módszerem alapja a JavaFX
SceneGraph hierarchikus fa struktúra, mely egyszerűen átlátható és
4. ábra
A 4. ábra az internetes optimáló alkalmazás
színkódok segítségével:
1. A zöld téglalap maga a keretrendszer, mely az alkalmazás gerincét képezi.
Minden komponens ezen belül található. Célom az volt, hogy a tartalom bővítése a
lehető legegyszerűbben kivitelezhető legyen.
2. A sárga téglalappal jelölt elem a program központi vezérlője, mely egyben
tartalomjegyzékként is funkcionál.
3. A piros téglalappal jelölt rész a munka
kiválasztott tartalomnak megfelelően dinamikusan változik.
Internetes optimáló alkalmazás készítése JavaFX környezetben az utazó ügynök probléma megoldására
7
Moduláris felépítés
erű bővíthetőség érdekében egy olyan keretrendszert hoztam létre,
mely moduláris elven épül fel. Kidolgozott módszerem alapja a JavaFX
SceneGraph hierarchikus fa struktúra, mely egyszerűen átlátható és
. ábra: Az optimáló alkalmazás moduláris felépítése
az internetes optimáló alkalmazás moduláris felépítését mutatja
A zöld téglalap maga a keretrendszer, mely az alkalmazás gerincét képezi.
zen belül található. Célom az volt, hogy a tartalom bővítése a
lehető legegyszerűbben kivitelezhető legyen.
A sárga téglalappal jelölt elem a program központi vezérlője, mely egyben
tartalomjegyzékként is funkcionál.
A piros téglalappal jelölt rész a munkafelület, mely a központi vezérlőn
kiválasztott tartalomnak megfelelően dinamikusan változik.
Internetes optimáló alkalmazás készítése JavaFX környezetben az utazó ügynök probléma megoldására
erű bővíthetőség érdekében egy olyan keretrendszert hoztam létre,
mely moduláris elven épül fel. Kidolgozott módszerem alapja a JavaFX
SceneGraph hierarchikus fa struktúra, mely egyszerűen átlátható és menedzselhető.
felépítését mutatja
A zöld téglalap maga a keretrendszer, mely az alkalmazás gerincét képezi.
zen belül található. Célom az volt, hogy a tartalom bővítése a
A sárga téglalappal jelölt elem a program központi vezérlője, mely egyben
felület, mely a központi vezérlőn
Internetes optimáló alkalmazás készítése JavaFX környezetben az utazó ügynök probléma megoldására
5. ábra: Moduláris felépítés a SceneGraph vonatkozásában
Az 5. ábra szintén a moduláris felépítést szemlélteti,
SceneGraph fa struktúra vonatkozásában.
különböző felületelemek hierarchikus elrendezése. A sárga téglalappal jelölt
tartalomjegyzéket a JavaFX TreeView vezérlő biztosítja. A TreeView segítségével
egy többszintű listát jelenítek me
úgynevezett Listener-t. Ha a felhasználó kiválaszt egy listaelemet, a Listener
megkapja a vezérlést, és lehetőség van az esemény lekezelésére. Tegyük fel, a
felhasználó kiválasztja a t
algoritmus elméleti leírása érdekli. A Listener ekkor végrehajtja a kiválasztott
listaelemhez kapcsolódó programkódot. A cél az, hogy a piros téglalappal jelölt
munkafelületen (4. ábra: Az o
az algoritmus elméleti leírása.
A munkafelületet egy Pane
egyik legegyszerűbb tároló a különböző felületelemek számára. Hierarchikus
struktúra lévén, a Pane tárolónak is tetszőleges számú l
Internetes optimáló alkalmazás készítése JavaFX környezetben az utazó ügynök probléma megoldására
8
: Moduláris felépítés a SceneGraph vonatkozásában
szintén a moduláris felépítést szemlélteti, azonban mindezt a
SceneGraph fa struktúra vonatkozásában. Jól látható a keretrendszeren belül a
különböző felületelemek hierarchikus elrendezése. A sárga téglalappal jelölt
tartalomjegyzéket a JavaFX TreeView vezérlő biztosítja. A TreeView segítségével
többszintű listát jelenítek meg, valamint hozzárendelek a
t. Ha a felhasználó kiválaszt egy listaelemet, a Listener
megkapja a vezérlést, és lehetőség van az esemény lekezelésére. Tegyük fel, a
felhasználó kiválasztja a tartalomjegyzékből, hogy a Particle Swarm heurisztikus
algoritmus elméleti leírása érdekli. A Listener ekkor végrehajtja a kiválasztott
listaelemhez kapcsolódó programkódot. A cél az, hogy a piros téglalappal jelölt
: Az optimáló alkalmazás moduláris felépítése
az algoritmus elméleti leírása.
A munkafelületet egy Pane (Pane pageArea) típusú vezérlő adja, mely az
egyik legegyszerűbb tároló a különböző felületelemek számára. Hierarchikus
struktúra lévén, a Pane tárolónak is tetszőleges számú leszármazottja (Children)
Internetes optimáló alkalmazás készítése JavaFX környezetben az utazó ügynök probléma megoldására
: Moduláris felépítés a SceneGraph vonatkozásában
azonban mindezt a
Jól látható a keretrendszeren belül a
különböző felületelemek hierarchikus elrendezése. A sárga téglalappal jelölt
tartalomjegyzéket a JavaFX TreeView vezérlő biztosítja. A TreeView segítségével
g, valamint hozzárendelek a listához egy
t. Ha a felhasználó kiválaszt egy listaelemet, a Listener
megkapja a vezérlést, és lehetőség van az esemény lekezelésére. Tegyük fel, a
artalomjegyzékből, hogy a Particle Swarm heurisztikus
algoritmus elméleti leírása érdekli. A Listener ekkor végrehajtja a kiválasztott
listaelemhez kapcsolódó programkódot. A cél az, hogy a piros téglalappal jelölt
ptimáló alkalmazás moduláris felépítése) megjelenjen
típusú vezérlő adja, mely az
egyik legegyszerűbb tároló a különböző felületelemek számára. Hierarchikus
eszármazottja (Children)
Internetes optimáló alkalmazás készítése JavaFX környezetben az utazó ügynök probléma megoldására
9
lehet, melyeket dinamikusan lehet hozzáadni vagy elvenni a struktúrához. A
Particle Swarm elméleti leírását tartalmazó felületelemet ennek megfelelően
dinamikusan, leszármazottként adom hozzá a munkafelület tárolóhoz.
A SceneGraph segítségével ez könnyedén megvalósítható, a leszármazott
hozzáadása után pedig a felhasználó azonnal láthatja az elérni kívánt tartalmat.
Figyelni kell azonban arra, hogy elvileg egyszerre több leszármazottja is lehet a
munkafelület tárolónak, melyek közül csak az utoljára hozzáadott látszik a
képernyőn, mivel eltakarja a korábban hozzáadott tartalmakat. Annak ellenére, hogy
nem látszanak, a memóriában helyet foglalnak. Ez a jelenség felesleges memória
erőforrás felhasználást jelent, ezért új tartalom hozzáadása előtt mindig kiürítem a
munkafelület tároló leszármazott listáját.
Az új tartalom hozzáadása a fent ismertetett módszerrel egyszerűen
megvalósítható, mindössze egy új listaelemet (TreeItem) kell hozzáadni a
tartalomjegyzékhez, valamint a tartalomjegyzék eseménykezelőjében (Listener)
definiálni kell az új listaelem kiválasztásakor végrehajtandó tevékenységeket. Az
esetek túlnyomó többségében ez a tevékenység munkafelület tartalmának
megváltoztatását jelenti. Ennek megfelelően az utolsó fontos teendő, hogy
létrehozzuk az új tartalomhoz kapcsolódó munkafelület interfészt.
A különböző munkafelület tartalmaknak szintén egy Pane típusú tároló a
kiinduló pontja. Az egyszerűség kedvéért létrehoztam egy Tartalom nevű általános
osztályt, mely a Pane osztály leszármazottja (extends), így annak minden
tulajdonságával és metódusával rendelkezik. Új tartalom létrehozásakor a Tartalom
osztály származtatott osztályát kell létrehozni (Pl. class BacterialForagingUI
extends Tartalom), és ezen belül egyszerűen felépíthető a további felhasználói
felület, valamint a felületelemekhez tartozó alkalmazás logika.
Összefoglalásképpen tehát a 6. ábra a keretrendszert mutatja üres
munkafelülettel. Ha a felhasználó a tartalomjegyzékből kiválasztja a számára
érdekes elemet, a munkafelületen megjelenik a listaelemhez kapcsolódó tartalom (7.
ábra). Az ismertetett moduláris felépítésnek köszönhetően az internetes optimáló
alkalmazás tartalma gyorsan és egyszerűen bővíthető.
Internetes optimáló alkalmazás készítése JavaFX környezetben az utazó ügynök probléma megoldására
6. ábra
7. ábra: A keretrendszer a kiválasztott listaelemhez tartozó munkafelülettel
Internetes optimáló alkalmazás készítése JavaFX környezetben az utazó ügynök probléma megoldására
10
. ábra: A keretrendszer üres munkafelülettel
: A keretrendszer a kiválasztott listaelemhez tartozó munkafelülettel
Internetes optimáló alkalmazás készítése JavaFX környezetben az utazó ügynök probléma megoldására
: A keretrendszer a kiválasztott listaelemhez tartozó munkafelülettel
Internetes optimáló alkalmazás készítése JavaFX környezetben az utazó ügynök probléma megoldására
2.3.2 Asztali vagy web
A JavaFX technológia egyik legnagyobb előnye, hogy asztali és webes
alkalmazások egyaránt létrehozhatók használatával, ráadásul a fejlesztés során nem
szükséges kiemelt figyelmet fordítani arra, hogy mely platformra fejlesztünk. Az
optimáló alkalmazással szemben az egyik fontos követelmény az volt, hogy
Interneten bárki számára könnyen és gyorsan hozzáférhető legyen, amit nem kell
külön telepíteni, böngészőből használható.
létrehozása volt a célom, azonban lehetővé tettem a felhasználók számára, hogy
letölthessék a szoftvert, így asztali alka
szükséges állandó Internet elérés.
8. ábra
A NetBeans fejlesztői környezetben, a Projekt tulajdonságai menüpontban
lehet beállítani, hogy asztali
A Java technológiára jellemző .JAR kiterjesztésű fájl, mely a futtatható programot
tartalmazza, asztali és web
egyetlen különbség, hogy web
Internetes optimáló alkalmazás készítése JavaFX környezetben az utazó ügynök probléma megoldására
11
Asztali vagy web alkalmazás?
A JavaFX technológia egyik legnagyobb előnye, hogy asztali és webes
alkalmazások egyaránt létrehozhatók használatával, ráadásul a fejlesztés során nem
figyelmet fordítani arra, hogy mely platformra fejlesztünk. Az
optimáló alkalmazással szemben az egyik fontos követelmény az volt, hogy
ámára könnyen és gyorsan hozzáférhető legyen, amit nem kell
külön telepíteni, böngészőből használható. Elsősorban tehát web
létrehozása volt a célom, azonban lehetővé tettem a felhasználók számára, hogy
letölthessék a szoftvert, így asztali alkalmazásként is képes működni, melyhez nem
szükséges állandó Internet elérés.
. ábra: Platform kiválasztása NetBeans környezetben
A NetBeans fejlesztői környezetben, a Projekt tulajdonságai menüpontban
lehet beállítani, hogy asztali vagy web alkalmazást szeretnénk létrehozni
A Java technológiára jellemző .JAR kiterjesztésű fájl, mely a futtatható programot
tartalmazza, asztali és web alkalmazások esetében teljes mértékben megegyezik. Az
önbség, hogy web alkalmazás létrehozása során a .JAR fájl mellett
Internetes optimáló alkalmazás készítése JavaFX környezetben az utazó ügynök probléma megoldására
A JavaFX technológia egyik legnagyobb előnye, hogy asztali és webes
alkalmazások egyaránt létrehozhatók használatával, ráadásul a fejlesztés során nem
figyelmet fordítani arra, hogy mely platformra fejlesztünk. Az
optimáló alkalmazással szemben az egyik fontos követelmény az volt, hogy
ámára könnyen és gyorsan hozzáférhető legyen, amit nem kell
Elsősorban tehát web alkalmazást
létrehozása volt a célom, azonban lehetővé tettem a felhasználók számára, hogy
lmazásként is képes működni, melyhez nem
A NetBeans fejlesztői környezetben, a Projekt tulajdonságai menüpontban
alkalmazást szeretnénk létrehozni (8. ábra).
A Java technológiára jellemző .JAR kiterjesztésű fájl, mely a futtatható programot
alkalmazások esetében teljes mértékben megegyezik. Az
a .JAR fájl mellett
Internetes optimáló alkalmazás készítése JavaFX környezetben az utazó ügynök probléma megoldására
12
létrejön egy .HTML (HyperText Markup Language) és egy .JNLP (Java Network
Launching Protocol) kiterjesztésű fájl is.
Ha a három komponenst elhelyezzük egy webszerveren, és a .HTML fájlt
megnyitjuk internet eléréssel egy böngésző segítségével, elindul JavaFX
alkalmazásunk online felületen keresztül. Gyakorlatilag az összes népszerű
böngésző (Internet Explorer, Firefox, Chrome, Safari, Opera) támogatja a
technológiát.
Bonyolult optimálási problémák megoldásakor fontos a megfelelő futási
sebesség. Felmerülhet a kérdés, hogy ha webes felületen keresztül futtatjuk az
optimáló alkalmazást, akkor jelentkezik-e bármi nemű lassulás az asztali módhoz
képest. Ha interneten keresztül megnyitunk egy JavaFX alkalmazást, akkor az
először letöltődik a böngésző gyorsítótárába (cache), majd a helyi gépen a JVM
futtatni kezdi. Az asztali alkalmazáshoz képest tehát csak addig tapasztalható
késlekedés, amíg az alkalmazás letöltődik. Onnantól kezdve ugyanaz a JVM futtatja
a web alkalmazást, ami az asztali alkalmazást is futtatná, ezért kijelenthető, a
számítások gyorsaságát tekintve semmilyen különbséget nem jelent, hogy online
vagy offline módban futtatjuk az optimáló alkalmazást.
2.3.3 Leírások, forráskódok
Az algoritmusokhoz kapcsolódó elméleti leírások, képletek és pszeudokódok
megjelenítésére a HTML formátumot választottam. A JavaFX szerencsére
rendelkezik egy úgynevezett WebView vezérlővel, mely a HTML tartalom
megjelenítésére szolgál. Az algoritmusok, valamint a gyakorlati példák Java
forráskódját a felhasználóknak szintén lehetőségük van a programon belül
böngészni. A moduláris felépítés lehetővé teszi, hogy a különböző gyakorlati
példákat a felhasználók NetBeans projektként menthessék, módosíthassák. Ezek a
független NetBeans projektek tulajdonképpen azon programmodulok, melyeket az
alkalmazás a munkafelületre betölt, miután a tartalomjegyzékből a felhasználó
kiválasztotta a tartalmat.
Internetes optimáló alkalmazás készítése JavaFX környezetben az utazó ügynök probléma megoldására
13
3 Vizsgált optimálási problémák
Az élet számos területén találkozhatunk optimálási problémákkal, legyen szó
mérnöki, informatikai, biológiai, vagy bármilyen egyéb tudományterületről. A [3, 4,
5] forrásművekben a mérnöki tudományterületen felmerülő optimálási problémákra
találhatunk példákat, melyek a nagyszámú változó, feltétel, és bonyolult
célfüggvény vagy célfüggvények miatt csak modern számítástechnikai eszközökkel
oldhatók meg.
A problémák megoldásához szükséges azok matematikai megfogalmazása. A
változókat szokás döntési változóknak nevezni, mely változók értékei alapján a
célfüggvény vagy célfüggvények segítségével meghatározható egy skalár érték. Az
optimálás célja e skalár érték maximálása vagy minimálása. A döntési változók és a
skalár értékére feltételeket definiálhatunk.
Az optimálási probléma sok esetben visszavezethető folytonos matematikai
függvények globális szélsőértékeinek keresésére, ahol a döntési változók a
matematikai függvény dimenzióit adják. Az internetes optimáló alkalmazással ez
volt az első problémakör, amit vizsgáltam. A második az egyik legtöbbet kutatott
optimálási feladat, az utazó ügynök probléma, ezen belül is az egyhurkú
szimmetrikus változat, melynek megoldásához speciális számítási algoritmusok
szükségesek. A dolgozat írásakor összesen 6 heurisztikus algoritmust érhető el az
alkalmazásban, ez a szám azonban folyamatosan bővül.
3.1 Folytonos matematikai függvények globális szélsőértékeinek
keresése
Az egyik leggyakoribb optimálási feladat a folytonos matematikai függvények
globális szélsőértékeinek keresése. Vegyük például az egyik legegyszerűbb
egyváltozós függvényt, melynek képlete:
���� = �� (1)
Az egyetlen döntési változó az �. Tegyük fel, hogy az értéke a [-5; 5]
tartományba eső értékeket vehet fel, ezzel egy, a változóra vonatkozó feltételt
definiáltunk. Keressük e matematikai függvény globális minimum értékét.
Internetes optimáló alkalmazás készítése JavaFX környezetben az utazó ügynök probléma megoldására
A legtöbben valószínűleg azonnal meg tudják mondani, hogy a függvény
globális minimuma az
meghatározása sem jelent nagyobb kihívást, igaz abból mindjárt két darab is van, az
� � �5 és az � � 5 értékeknél. Ha az ember korábban már találkozott ezzel a
függvénnyel, akkor hatalmas előnyt élvez akár a leggyorsabb számítógéppel
szemben is, nevezetesen hogy probléma specifikus ismeretekkel rendelkezik a
vizsgált függvényt illetően.
algoritmusra van szüksége
szerint végigiterál a lehetséges megoldásokon, majd a számítás végén megadja a
megoldást. Az egyváltozós függvény után tekintsünk egy kétváltozós folytonos
függvényt, melynek képlete:
���, �� � �20exp��0.2�0.
Ez alapján valószínűleg már kevesebben tudnák azonnal megmondani, hogy a
függvénynek hol vannak a globális szélsőértékei. A képle
optimálási tesztfüggvényt, a
Internetes optimáló alkalmazás készítése JavaFX környezetben az utazó ügynök probléma megoldására
14
A legtöbben valószínűleg azonnal meg tudják mondani, hogy a függvény
az � � 0 értéknél van. A globális maximum értékének
meghatározása sem jelent nagyobb kihívást, igaz abból mindjárt két darab is van, az
tékeknél. Ha az ember korábban már találkozott ezzel a
függvénnyel, akkor hatalmas előnyt élvez akár a leggyorsabb számítógéppel
szemben is, nevezetesen hogy probléma specifikus ismeretekkel rendelkezik a
vizsgált függvényt illetően. A számítógépnek a feladat megoldásához kereső
algoritmusra van szüksége. Általában analitikus módszerrel valamilyen logika
szerint végigiterál a lehetséges megoldásokon, majd a számítás végén megadja a
Az egyváltozós függvény után tekintsünk egy kétváltozós folytonos
függvényt, melynek képlete:
� 5��� � ���� � exp�0.5�cos�2��� � cos�2����
valószínűleg már kevesebben tudnák azonnal megmondani, hogy a
függvénynek hol vannak a globális szélsőértékei. A képlet egy gyakran használt
optimálási tesztfüggvényt, az Ackley's függvényt (9. ábra) definiálja
9. ábra: Ackley's tesztfüggvény
Internetes optimáló alkalmazás készítése JavaFX környezetben az utazó ügynök probléma megoldására
A legtöbben valószínűleg azonnal meg tudják mondani, hogy a függvény
van. A globális maximum értékének
meghatározása sem jelent nagyobb kihívást, igaz abból mindjárt két darab is van, az
tékeknél. Ha az ember korábban már találkozott ezzel a
függvénnyel, akkor hatalmas előnyt élvez akár a leggyorsabb számítógéppel
szemben is, nevezetesen hogy probléma specifikus ismeretekkel rendelkezik a
dat megoldásához kereső
. Általában analitikus módszerrel valamilyen logika
szerint végigiterál a lehetséges megoldásokon, majd a számítás végén megadja a
Az egyváltozós függvény után tekintsünk egy kétváltozós folytonos
��� � 20 � � (2)
valószínűleg már kevesebben tudnák azonnal megmondani, hogy a
t egy gyakran használt
definiálja [6].
Internetes optimáló alkalmazás készítése JavaFX környezetben az utazó ügynök probléma megoldására
15
Tegyük fel, hogy az � é� � döntési változók [-32,768; 32,768] tartományba
eső értékeket vehetnek fel. A függvény globális minimum a az � = 0, � = 0
pontban található, értéke 0.
Gyakran előfordul, hogy a fentieknél sokkal bonyolultabb matematikai
függvények globális szélsőértékeit keressük. A nagyméretű, sokváltozós problémák
esetében a hagyományos kereső eljárások csődöt mondanak. A lehetséges
megoldások száma túl sok ahhoz, hogy mindegyiket külön megvizsgáljuk. Ebben az
esetben nyújtanak segítséget a heurisztikus algoritmusok.
3.2 Heurisztikus algoritmusok matematikai függvények optimálására
A heurisztika kifejezés a görög heureszisz szóból származik, melynek
jelentése rátalálás. A hagyományos kereső eljárásokkal szemben a heurisztikus
algoritmusok próbálgatással, a korábban megszerzett tapasztalatok felhasználásával
jutnak eredményre. Szokás ezért informált kereső eljárásoknak is nevezni őket.
Mint az a bevezetésben említésre került, hatalmas előnyük, hogy nagy
bonyolultságú problémák esetében is képesek viszonylag rövid idő alatt, kevés
számítás árán eredményt szolgáltatni. Hátrányuk azonban, hogy nem garantálható
teljes bizonyossággal az optimális megoldás megtalálása. Lokális kereső eljárások,
mivel nem vizsgálják a teljes probléma teret, minden lehetséges kimenetelt (sok
esetben ez egyébként is fizikai képtelenség), és a korábban bejárt utat sem tárolják.
Bizonyos korábban szerzett ismereteket azonban eltárolnak, rendelkeznek tehát
probléma specifikus ismeretekkel a megoldás során.
A heurisztikus algoritmusok hatékonyságáról megoszlanak a vélemények.
Korábban megoldhatatlannak vélt problémákra képesek optimális, vagy ahhoz
közeli megoldást adni. Egyesek szerint azonban attól, hogy egy bizonyos
problémára elfogadható megoldást találnak, semmi sem garantálja, hogy egy
hasonló feladatra is jobb megoldást adnak, mint akár egy véletlen kereső
algoritmus. Ezen aggályokat írja le a No-Free-Lunch (Nincs ingyen ebéd) teória,
melyről bővebben a [7] forrásműben olvashat az érdeklődő.
Internetes optimáló alkalmazás készítése JavaFX környezetben az utazó ügynök probléma megoldására
16
3.2.1 Bacterial Foraging
Az első beépített heurisztikus algoritmus a Bacterial Foraging (Baktérium
táplálkozás), ami egy Swarm Intelligence (Rajintelligencia) elven működő eljárás.
A rajintelligencia (kollektív intelligencia) módszerek közös tulajdonsága, hogy
nagyszámú homogén egyed viselkedésmintáin alapulnak. Az alapelv szerint
lehetséges hogy egy individuális egyed nem képes megoldani adott feladatot,
azonban ha nagyszámú egyed csoportot alkot, akkor a csoport kollektív
intelligenciája már elég lehet a feladat sikeres megoldásához [8].
3.2.1.1 Elméleti háttér
Az algoritmust először Liu és Passino írta le [9] 2002-ben, viszonylag újnak
számít a természeti jelenségeken alapuló rajintelligencia stratégiák családjában. Az
E. coli baktériumkolóniák (10. ábra: E. Coli baktérium kolónia) táplálékkereső és
reprodukciós viselkedésmintáin alapul a működése. Az Escherichia Coli az ostoros
baktériumok családjába tartozik. Ostorszerű végtagjai, az úgynevezett flagellumok
segítségével képes az önálló úszásra. Ez a mozgás a kemotaxis, mely során a során
a fő cél a tápanyagban gazdag helyek elérése, továbbá a valamilyen okból
veszélyesnek ítélt helyek elkerülése.
10. ábra: E. Coli baktérium kolónia
Internetes optimáló alkalmazás készítése JavaFX környezetben az utazó ügynök probléma megoldására
17
3.2.1.2 Az algoritmus működése
A Bacterial Foraging lényegében az E. Coli baktériumkolónia egyedei által
végzett kemotaxist másolja a keresés során. Az egyedek hol tudatosan, hol
véletlenszerűen mozognak az egyre jobb megoldást adó pontok felé. A keresést
három egymásba ágyazott ciklus valósítja meg.
A külső ciklus maga a kemotaxis, a baktériumok mozgását megvalósító
szakasz. Evolúciós algoritmusról van szó, az egyedek meghatározott élettartammal
rendelkeznek. Minél jobb pozícióban vannak az adott probléma szempontjából,
annál kevésbé csökken az élettartamuk,
A középső ciklus a reprodukció, minden iteráció során az algoritmus rendezi
az egyedeket élettartam szempontjából, majd a halmazt általában középen ketté
bontva az idősebb baktériumok helyére átmásolja a fiatalabb példányokat, ezzel
szimulálva az osztódást.
A legbelső ciklus az elimináció, amikor véletlenszerű egyedek meghatározott
valószínűséggel likvidálásra kerülnek [10].
3.2.1.3 Pszeudokód
A Bacterial Foraging algoritmus pszeudokódja terjedelmére való tekintettel a
mellékletben található [11].
3.2.2 Differential Evolution
A Differential Evolution (Differenciális Evolúció) egy evolúciós algoritmus,
mely eljárások közös tulajdonsága, hogy Darwin evolúciós elméletén alapul
működésük. Ennek megfelelően központi eleme a természetes kiválasztódás, tehát a
problémára jobb megoldást adó egyedek hozhatnak létre új generációt (Survival of
the fittest theory) [12].
3.2.2.1 Elméleti háttér
Az eljárást Storn és Price dolgozta ki 1995-ben [13]. Az evolúció során
számos faj esetében megfigyelhető, hogy a generációváltásokkal az adott környezet
Internetes optimáló alkalmazás készítése JavaFX környezetben az utazó ügynök probléma megoldására
18
kihívásainak egyre inkább megfelelő egyedek jöttek létre. A leszármazott egyed új
tulajdonságait a szülők tulajdonságainak keresztezéséből kapta.
11. ábra: A darwini evolúció
3.2.2.2 Az algoritmus működése
Először adott számú (N) kiinduló egyedet hozunk létre véletlenszerű
pozíciókban a problématéren belül. Az egyedszám az algoritmus futása során nem
változik. Az iterációk során adott generáció (G index) minden tagjának egy új
leszármazott egyedet (G+1 index) hoz létre keresztezéssel az alábbi differenciáló
képlet (innen ered az algoritmus neve) alapján:
��,��� = ���,� + �(���,�����,�) (3)
���, ���, ��� Véletlenszerűen kiválasztott egyedek
� Mutációs konstans
Ezután összehasonlítja az eredeti és a leszármazott egyed rátermettségét az
adott probléma szempontjából. A rátermettség fitnesz függvény alapján kerül
meghatározásra. A kedvezőbb megoldást adó egyed lesz tagja a következő
generációnak [14].
Internetes optimáló alkalmazás készítése JavaFX környezetben az utazó ügynök probléma megoldására
3.2.2.3 Pszedokód
3.2.3 Particle Swarm
A Particle Swarm (Részecskecsapat módszer) a Bacterial Foraging
algoritmushoz hasonlóan rajintelligencia módszer. Napjaink egyik legígéretesebb
metaheurisztikus optimáló algoritmusa.
3.2.3.1 Elméleti háttér
A Particle Swarm (részecske
Kennedy dolgozta ki [15
nagyszámú egyed mozgásában egyfajta rendezettség figye
egymás helyzetét, bizonyos mértékben pedig e
Internetes optimáló alkalmazás készítése JavaFX környezetben az utazó ügynök probléma megoldására
19
A Particle Swarm (Részecskecsapat módszer) a Bacterial Foraging
algoritmushoz hasonlóan rajintelligencia módszer. Napjaink egyik legígéretesebb
metaheurisztikus optimáló algoritmusa.
Elméleti háttér
A Particle Swarm (részecske-csapat) algoritmust 1995-
15]. Működését a madár és halrajok mozgása inspirálta. A
nagyszámú egyed mozgásában egyfajta rendezettség figyelhető meg. Érzékelik
egymás helyzetét, bizonyos mértékben pedig emlékeznek a korábbi pozíciókra.
Internetes optimáló alkalmazás készítése JavaFX környezetben az utazó ügynök probléma megoldására
A Particle Swarm (Részecskecsapat módszer) a Bacterial Foraging
algoritmushoz hasonlóan rajintelligencia módszer. Napjaink egyik legígéretesebb
-ben Eberhart és
Működését a madár és halrajok mozgása inspirálta. A
lhető meg. Érzékelik
mlékeznek a korábbi pozíciókra.
Internetes optimáló alkalmazás készítése JavaFX környezetben az utazó ügynök probléma megoldására
20
12. ábra: Madárraj rendezett mozgása
3.2.3.2 Az algoritmus működése
A keresés adott számú részecske létrehozásával kezdődik, amik véletlenszerű
kiindulási pontokban helyezkednek el. A részecskék a problématérben az egyre jobb
megoldást adó helyek felé mozognak, a csapatot a legjobb egyedek vezetik.
Tisztában vannak aktuális és addigi legjobb pozíciójukkal, valamint a részecske
csapat addigi legjobb pozíciójával, az új pozíció kiszámításához ezeket is
figyelembe veszi az eljárás. Hogy az adott pozíció mennyire jó az adott keresés
szempontjából, mindig egy fitness függvénnyel határozható meg. Az iterációk során
az alábbi képletek alapján számítható ki a részecskék új pozíciója (4), (5):
��� = × ��� + � × �� �� � × ���� − ���� + � × �� �� � × ��� − ���� (4)
��� = ��� + ���t (5)
��� Részecske sebessége
� Gyorsulás konstans
�� Egyéni súlyozás konstans
�� Szociális súlyozás konstans
��� Részecske eddigi legjobb pozíciója
��� Csapat eddigi legjobb pozíciója
��� Részecske aktuális pozíciója
� Időegység
Internetes optimáló alkalmazás készítése JavaFX környezetben az utazó ügynök probléma megoldására
Az iteráció addig folytatódik, míg nem teljesül valamilyen leállási feltétel.
Evolúciós algoritmusok esetében sokszor nem egyszerű egyértelműen jó leállási
feltételt találni. A Particle Swarm módszernél a feltétel többek között lehet
megszabott számú iteráció végrehajtása, vagy ha a csapat legjobb pozíciója
bizonyos számú iteráció után se
3.2.3.3 Pszeudokód
Internetes optimáló alkalmazás készítése JavaFX környezetben az utazó ügynök probléma megoldására
21
addig folytatódik, míg nem teljesül valamilyen leállási feltétel.
iós algoritmusok esetében sokszor nem egyszerű egyértelműen jó leállási
feltételt találni. A Particle Swarm módszernél a feltétel többek között lehet
megszabott számú iteráció végrehajtása, vagy ha a csapat legjobb pozíciója
bizonyos számú iteráció után sem változott meg [16].
Internetes optimáló alkalmazás készítése JavaFX környezetben az utazó ügynök probléma megoldására
addig folytatódik, míg nem teljesül valamilyen leállási feltétel.
iós algoritmusok esetében sokszor nem egyszerű egyértelműen jó leállási
feltételt találni. A Particle Swarm módszernél a feltétel többek között lehet
megszabott számú iteráció végrehajtása, vagy ha a csapat legjobb pozíciója
Internetes optimáló alkalmazás készítése JavaFX környezetben az utazó ügynök probléma megoldására
3.2.4 Az algoritmusok tesztelése
A heurisztikus algoritmusok működésének gyakorlati szemléltetésére egy és
többváltozós függvényeken végezhető globális minimum és maximum keresést
építettem a programba. A felhasználó választhat
Jong's, Rosenbrock's valley, Rastrigin's, Schwefel's, Easom's) közül, vagy sajátot is
definiálhat.
Egyváltozós függvény esetén a keresés egy
13. ábraán Particle Swarm algoritmussal, 10 darab részecske segítségével végeztem
minimum keresést a Rastrigin's tesztfüggvény egyváltozós változatán. A függvény
abszolút minimuma az x
létrehozása véletlenszerű pozíció
A hullámzó kék vonal a Rastrigin's tesztfüggvény egyváltozós képe. A
függőleges piros vonalak a részecskecsapat egyedei. Leállási feltételként 200 darab
iteráció végrehajtását határoz
algoritmus futásának végére a részecskék szépen elrendeződtek a globális optimum
körül.
Internetes optimáló alkalmazás készítése JavaFX környezetben az utazó ügynök probléma megoldására
22
Az algoritmusok tesztelése
A heurisztikus algoritmusok működésének gyakorlati szemléltetésére egy és
többváltozós függvényeken végezhető globális minimum és maximum keresést
építettem a programba. A felhasználó választhat az öt beépített tesztfüggvény (De
Jong's, Rosenbrock's valley, Rastrigin's, Schwefel's, Easom's) közül, vagy sajátot is
Egyváltozós függvény esetén a keresés egy grafikonon követhető nyomon. A
cle Swarm algoritmussal, 10 darab részecske segítségével végeztem
minimum keresést a Rastrigin's tesztfüggvény egyváltozós változatán. A függvény
x=0 pontnál van. Az algoritmus első lépése a részecskék
létrehozása véletlenszerű pozíciókban.
13. ábra: Particle Swarm keresés indítása
A hullámzó kék vonal a Rastrigin's tesztfüggvény egyváltozós képe. A
függőleges piros vonalak a részecskecsapat egyedei. Leállási feltételként 200 darab
iteráció végrehajtását határoztam meg. Az eredmény a 14. ábra
algoritmus futásának végére a részecskék szépen elrendeződtek a globális optimum
Internetes optimáló alkalmazás készítése JavaFX környezetben az utazó ügynök probléma megoldására
A heurisztikus algoritmusok működésének gyakorlati szemléltetésére egy és
többváltozós függvényeken végezhető globális minimum és maximum keresést
az öt beépített tesztfüggvény (De
Jong's, Rosenbrock's valley, Rastrigin's, Schwefel's, Easom's) közül, vagy sajátot is
grafikonon követhető nyomon. A
cle Swarm algoritmussal, 10 darab részecske segítségével végeztem
minimum keresést a Rastrigin's tesztfüggvény egyváltozós változatán. A függvény
=0 pontnál van. Az algoritmus első lépése a részecskék
A hullámzó kék vonal a Rastrigin's tesztfüggvény egyváltozós képe. A
függőleges piros vonalak a részecskecsapat egyedei. Leállási feltételként 200 darab
. ábraán látható, az
algoritmus futásának végére a részecskék szépen elrendeződtek a globális optimum
Internetes optimáló alkalmazás készítése JavaFX környezetben az utazó ügynök probléma megoldására
14
Az algoritmusok működ
kiterjedően állíthatja a megfelelő vezérlők segítségével.
Kétváltozós függvények esetében bonyolultabb a keresés szemléltetése, mivel
az ábrázoláshoz 3 dimenziós felület leképezése, vagy speciális grafikon sz
Az internetes optimáló
megvalósítása lesz. A következő teszthez Rastrigin's tesztfüggvény kétváltozós
változatát (15. ábra) választottam, melynek leíró képlete:
���, � 10 ∙ 2 � �
A tesztfüggvénynek az
értéke 0.0. A teszt célja a következő kérdések megválaszolása volt:
1. Milyen hatékonysággal találják meg az algoritmus
megoldást?
2. Ha mindhárom algoritmus esetén azonos számú populációt adok meg,
valamint leállási feltételként is ugyanazon iterációs korlátot kapják, akkor
megállapítható, hogy melyik algoritmus működik a leggyorsabban. A leggyorsabb
működés természetesen nem feltétlenül jelent egyúttal leghatékonyabbat is.
Internetes optimáló alkalmazás készítése JavaFX környezetben az utazó ügynök probléma megoldására
23
14. ábra: Particle Swarm keresés eredménye
Az algoritmusok működési paramétereit a felhasználó minden részletre
egfelelő vezérlők segítségével.
Kétváltozós függvények esetében bonyolultabb a keresés szemléltetése, mivel
az ábrázoláshoz 3 dimenziós felület leképezése, vagy speciális grafikon sz
program továbbfejlesztésének egyik fő iránya
A következő teszthez Rastrigin's tesztfüggvény kétváltozós
választottam, melynek leíró képlete:
��� � 10 cos�2��� � �� � 10����2�
A tesztfüggvénynek az x=0.0, y=0.0 helyen van globális minimuma, melynek
értéke 0.0. A teszt célja a következő kérdések megválaszolása volt:
Milyen hatékonysággal találják meg az algoritmusok az optimális
Ha mindhárom algoritmus esetén azonos számú populációt adok meg,
valamint leállási feltételként is ugyanazon iterációs korlátot kapják, akkor
megállapítható, hogy melyik algoritmus működik a leggyorsabban. A leggyorsabb
ermészetesen nem feltétlenül jelent egyúttal leghatékonyabbat is.
Internetes optimáló alkalmazás készítése JavaFX környezetben az utazó ügynök probléma megoldására
ési paramétereit a felhasználó minden részletre
Kétváltozós függvények esetében bonyolultabb a keresés szemléltetése, mivel
az ábrázoláshoz 3 dimenziós felület leképezése, vagy speciális grafikon szükséges.
program továbbfejlesztésének egyik fő iránya e funkció
A következő teszthez Rastrigin's tesztfüggvény kétváltozós
� �� (6)
=0.0, y=0.0 helyen van globális minimuma, melynek
értéke 0.0. A teszt célja a következő kérdések megválaszolása volt:
ok az optimális
Ha mindhárom algoritmus esetén azonos számú populációt adok meg,
valamint leállási feltételként is ugyanazon iterációs korlátot kapják, akkor
megállapítható, hogy melyik algoritmus működik a leggyorsabban. A leggyorsabb
ermészetesen nem feltétlenül jelent egyúttal leghatékonyabbat is.
Internetes optimáló alkalmazás készítése JavaFX környezetben az utazó ügynök probléma megoldására
3. Fejlettebb leállási feltétel definiálásával milyen mértékben növelhető a
hatékonyság?
A tesztelés során minden esetben 100
Leállási feltételként egy kivételtől (PSO*) eltekintve a 400 iterációs határt szabtam
meg. Minden keresést háromszor ismételtem meg, majd a feljegyzett eredmények
átlagát tüntettem fel a táblázatban.
Idő [ms]
PSO 26
PSO* 18
DE 30
BFO 43
Az algoritmusok hatékonyságának elemzéséhez először meg kell
hogy milyen pontosságra van szükségünk. Ha négy tizedesjegy pontosság
Internetes optimáló alkalmazás készítése JavaFX környezetben az utazó ügynök probléma megoldására
24
Fejlettebb leállási feltétel definiálásával milyen mértékben növelhető a
15. ábra: Rastrigin's tesztfüggvény
A tesztelés során minden esetben 100-as nagyságú populációkkal dolgoztam.
Leállási feltételként egy kivételtől (PSO*) eltekintve a 400 iterációs határt szabtam
meg. Minden keresést háromszor ismételtem meg, majd a feljegyzett eredmények
átlagát tüntettem fel a táblázatban.
Idő [ms] x y
26 -7,92*10-10 2,27*10-11
18 3,82*10-10 -6,94*10-10
30 5,17*10-6 -1,25*10-7
43 3,41*10-6 2,18*10-5
1. táblázat
Az algoritmusok hatékonyságának elemzéséhez először meg kell
hogy milyen pontosságra van szükségünk. Ha négy tizedesjegy pontosság
Internetes optimáló alkalmazás készítése JavaFX környezetben az utazó ügynök probléma megoldására
Fejlettebb leállási feltétel definiálásával milyen mértékben növelhető a
yságú populációkkal dolgoztam.
Leállási feltételként egy kivételtől (PSO*) eltekintve a 400 iterációs határt szabtam
meg. Minden keresést háromszor ismételtem meg, majd a feljegyzett eredmények
Fitness
1,40*10-9
8,25*10-9
4,43*10-6
9,63*10-5
Az algoritmusok hatékonyságának elemzéséhez először meg kell határozni,
hogy milyen pontosságra van szükségünk. Ha négy tizedesjegy pontosság
Internetes optimáló alkalmazás készítése JavaFX környezetben az utazó ügynök probléma megoldására
25
megfelelő, akkor megállapítható, hogy mindegyik algoritmus megtalálta az
optimális megoldást. Ellenben ha például nyolc tizedesjegy pontosságú keresésre
van szükség, akkor a Differenciális Evolúció és a Bacterial Foraging esetében
kiválóan megfigyelhető a heurisztikus algoritmusok gyenge pontja. Nagyon közel
vannak az optimális megoldáshoz, de nem azt találták meg. Vélhetően nagyobb
populáció vagy iterációszám javítana a pontosságon.
A leggyorsabb működést a Particle Swarm produkálta, tehát iterációnként a
PSO-nak van a legkisebb számításigénye a vizsgált algoritmusok közül. Érdekes
módon egyben a leghatékonyabb algoritmus is a részecske-csapat volt az adott
tesztkörülmények között.
A táblázatban szereplő PSO* esetében leállási kritériumként iterációs határ
helyett a feltétel az volt, hogy valamennyi részecske legjobb pozíciója egyezzen
meg a globális legjobb pozícióval. Ez átlagosan 307 iteráció után következett be. A
táblázatból leolvasható, hogy a 400 iterációs határhoz képest ez 23,25%-al kevesebb
számítást jelent, ami pontosan megmutatkozik a futási időkben is.
A heurisztikus algoritmusok tesztelése egy igen nehéz és összetett folyamat,
mivel a sok paraméter és nagyszámú változó gyakorlatilag végtelen variációs
lehetőséget jelent.
Internetes optimáló alkalmazás készítése JavaFX környezetben az utazó ügynök probléma megoldására
26
3.3 Az Utazó ügynök probléma
Az Utazó ügynök probléma (TSP- Traveling Salesman Problem) egy
gráfelméleti feladat, elnevezését azonban onnan kapta, hogy egy mindennapi életből
vett példával szokták szemléltetni:
Adott bizonyos számú város, továbbá ismerjük a távolságot minden város
között. Egy ügynök körutat szeretne tenni a városokban úgy, hogy mindegyiket
pontosan egyszer érinti, és az útiköltség a lehető legkisebb legyen. Az útiköltség
egyenesen arányos a városok közötti távolsággal. A feladat tehát olyan útvonal
meghatározása, melynek költsége minimális.
A probléma gráfelméleti megfogalmazása szerint adott egy teljes súlyozott
gráf, és e gráfon keressük a legkisebb összsúlyú Hamilton kört. A gráf csúcspontja a
városok, élei pedig a városokat összekötő utak. Az élek súlyozása az útiköltségnek
felel meg. A gráf teljes, mivel feltételezzük, hogy tetszőleges városból közvetlenül
eljuthatunk bármelyik másikba. A dolgozatban a klasszikus szimmetrikus utazó
ügynök feladattal foglalkozom. A szimmetrikus jelző azt jelenti, hogy az élek
irányítatlanok, és tetszőleges él költsége mindkét irányban ugyanannyi. A
feladatnak létezik asszimetrikus változata, melyről a [17] műben olvashat bővebben
az érdeklődő.
A Utazó ügynök pontos eredetéről megoszlanak a vélemények, a témában már
a XIX. században is készültek publikációk [18]. Az általános változat matematikai
megfogalmazása 1930-ban készült el. Azért bír különösen nagy jelentőséggel, mert
számos gyakorlati alkalmazás vezethető vissza rá. A logisztikában a gyűjtő és
elosztó járatok útvonalának megtervezése (futárszolgálat, kommunális
hulladékszállítás) tipikusan ilyen alkalmazás. Az elektronikai gyártásban is gyakran
előfordul, hogy egy nyákon bizonyos pontokat szeretnénk összekötni úgy, hogy a
kötés hossza a lehető legrövidebb legyen. Az élet számos területén felmerül a TSP,
ezért az egyik legtöbbet kutatott kombinatorikus optimalizálási probléma. A
Springer Link és ScienceDirect tudományos archívumok szerint eddig több mint
20.000 publikáció foglalkozik a témával.
Internetes optimáló alkalmazás készítése JavaFX környezetben az utazó ügynök probléma megoldására
27
3.3.1 Miért nehéz megoldani az Utazó ügynök feladatot?
Az Utazó ügynök problémát úgy lehetne teljes bizonyossággal megoldani, ha
az összes lehetséges körútnak kiszámolnánk a költéségét. Az összes csúcs
lehetséges permutációinak száma n!. Minden permutáció meghatároz egy Hamilton
kört a teljes gráfban. A 2. táblázatban a TSP számítás mérföldkövei szerepelnek,
könnyedén kiszámítható, hogy adott számú csúcspont esetében mennyi lehetséges
megoldás van:
Csúcspontok száma Lehetséges megoldások száma Megoldás éve
5 120 -
10 3628800 -
25 1,55112101*10-25 -
49 város (USA 48 tagállam fővárosa és Washington) 6,08281864*1062 1954
120 város (Nyugat-Németország) 6,68950291*10198 1977
532 telefonközpont (USA AT&T) ? 1987
666 nevezetesség a világon ? 1987
4461 város ? 1988
13509 város (USA) ? 1998
24978 város (Svédország) ? 2004
85900 pont (Integrált áramkör) ? 2006
2. táblázat
A táblázatból leolvasható, hogy viszonylag kis számú csúcspont esetén is
rengeteg lehetséges megoldás létezik. Az Utazó ügynök probléma n méretű bemenet
esetén O(n!) bonyolultságú, ezért nem oldható meg polinomiális időben. A TSP az
NP-nehéz problémák osztályába tartozik, hatékony megoldás nem ismert
nagyszámú csúcspont esetében. Érdekesség, hogy a híres fizikus, Stephen Hawking
szerint a megfigyelhető univerzum nagyságrendileg 1078-1082 atomból áll [19].
Internetes optimáló alkalmazás készítése JavaFX környezetben az utazó ügynök probléma megoldására
28
Nagyságrendileg ugyanennyi lehetséges megoldása van az Utazó ügynök
problémának 60 város esetén. Nyilvánvaló, hogy bizonyos számú város felett az
összes lehetséges megoldás vizsgálata fizikai képtelenség. A megoldást a
heurisztikus algoritmusok jelentik, mivel nagy problémaméret esetén is képesek
optimális, vagy ahhoz közelítő megoldást adni. Az internetes optimáló
alkalmazásba három heurisztikus algoritmust építettem az Utazó ügynök feladat
megoldására.
3.4 Heurisztikus algoritmusok az Utazó ügynök probléma megoldására
3.4.1 Ant Colony
Az Ant Colony (Hangya kolónia) a Bacterial Foraging és Particle Swarm
algoritmusokhoz hasonlóan egy rajintelligencia módszer.
3.4.1.1 Elméleti háttér
A módszert Dorigo dolgozta ki 1992-ben [20], a hangyakolóniák táplálkozási
és kommunikációs viselkedésmintái inspirálták. A hangyák kezdetben
véletlenszerűen keresik az élelmet. Ha valamelyik egyed táplálékot észlel, visszatér
a kolóniához, útja során pedig feromont bocsát ki.
16. ábra: Hangyák élelemkeresés közben
Internetes optimáló alkalmazás készítése JavaFX környezetben az utazó ügynök probléma megoldására
A többi egyed érzékeli a feromont, és a véletlenszerű keresés helyett nagy
eséllyel követni kezdi az utat, valamint szintén feromont bocsájt ki.
megfigyelhető útvonalak alakulnak ki, melyek az optimális pont felé vezetnek. A
feromon egy idő után elpárolog, új utak keresésére kényszerítve az egyedeket.
3.4.1.2 Az algoritmus működése
Az egyre jobb megoldások heurisztikus és probléma specifikus ismeretek
alapján jönnek létre. A probléma specifikus ismereteket a feromonok helyzete és
mennyisége szolgáltatja. A kiinduló permutáció véletlenszerűen jön létre. Ezután
egy ciklus segítségével a h
legkisebb költségű úton próbálnak továbbmenni, az útjukat feromonnal jelzik. A
legkisebb költség mellett a korábban elhelyezett feromonok is befolyásolják a
döntésüket [21].
3.4.1.3 Pszeudokód
Internetes optimáló alkalmazás készítése JavaFX környezetben az utazó ügynök probléma megoldására
29
A többi egyed érzékeli a feromont, és a véletlenszerű keresés helyett nagy
i kezdi az utat, valamint szintén feromont bocsájt ki.
megfigyelhető útvonalak alakulnak ki, melyek az optimális pont felé vezetnek. A
feromon egy idő után elpárolog, új utak keresésére kényszerítve az egyedeket.
Az algoritmus működése
egyre jobb megoldások heurisztikus és probléma specifikus ismeretek
alapján jönnek létre. A probléma specifikus ismereteket a feromonok helyzete és
mennyisége szolgáltatja. A kiinduló permutáció véletlenszerűen jön létre. Ezután
egy ciklus segítségével a hangyák új permutációkat alakítanak ki. Adott városból a
legkisebb költségű úton próbálnak továbbmenni, az útjukat feromonnal jelzik. A
legkisebb költség mellett a korábban elhelyezett feromonok is befolyásolják a
Internetes optimáló alkalmazás készítése JavaFX környezetben az utazó ügynök probléma megoldására
A többi egyed érzékeli a feromont, és a véletlenszerű keresés helyett nagy
i kezdi az utat, valamint szintén feromont bocsájt ki. Egy idő után jól
megfigyelhető útvonalak alakulnak ki, melyek az optimális pont felé vezetnek. A
feromon egy idő után elpárolog, új utak keresésére kényszerítve az egyedeket.
egyre jobb megoldások heurisztikus és probléma specifikus ismeretek
alapján jönnek létre. A probléma specifikus ismereteket a feromonok helyzete és
mennyisége szolgáltatja. A kiinduló permutáció véletlenszerűen jön létre. Ezután
. Adott városból a
legkisebb költségű úton próbálnak továbbmenni, az útjukat feromonnal jelzik. A
legkisebb költség mellett a korábban elhelyezett feromonok is befolyásolják a
Internetes optimáló alkalmazás készítése JavaFX környezetben az utazó ügynök probléma megoldására
30
3.4.2 Simulated Annealing
A Simulated Annealing (Szimulált Hűtés) algoritmus egy fizikai jelenségen
alapuló heurisztika. A rajintelligencia és evolúciós eljárásokhoz hasonlóan a
természet inspirálta kidolgozását.
3.4.2.1 Elméleti leírás
A módszert Kirkpatrick, Gelatt és Vecchi dolgozta ki 1983-ban [22]. A
metallurgiában bizonyos anyagok kedvező tulajdonságokra tesznek szert, ha
felhevítik, majd szabályozott körülmények között lehűtik őket. A folyamat során
átalakul kristályszerkezetük, mivel a felhevített anyagban az atomok képesek
elmozdulni, a hűtési folyamat során pedig új, számukra kedvezőbb pozíciót vesznek
fel (energiaminimumra törekednek).
17. ábra: Temperálás során kialakuló kristályszerkezet [23]
Internetes optimáló alkalmazás készítése JavaFX környezetben az utazó ügynök probléma megoldására
3.4.2.2 Az algoritmus működése
A kiinduló permutáció véletlenszerű
során új permutációt hoz létre a sztochasztikus 2
segítségével. Ezután egy döntési függvény a permutációk költsége alapján
meghatározza, hogy az új permutáció vagy a régi a jobb. Az iter
folyamatosan csökken a hőmérséklet, melynek következtében a döntési függvény
egyre kifinomultabban működik.
3.4.2.3 Pszeudokód
3.4.3 Tabu Search
A Tabu Search (Tabu keresés) egy sztochasztikus elven működő lokális kereső
algoritmus, mely memóriával rendelk
Az eljárást Glover dolgozta ki 1986
Internetes optimáló alkalmazás készítése JavaFX környezetben az utazó ügynök probléma megoldására
31
Az algoritmus működése
A kiinduló permutáció véletlenszerűen jön létre. Az algoritmus az iteráció
során új permutációt hoz létre a sztochasztikus 2-opt lokális kereső algoritmus
Ezután egy döntési függvény a permutációk költsége alapján
meghatározza, hogy az új permutáció vagy a régi a jobb. Az iter
folyamatosan csökken a hőmérséklet, melynek következtében a döntési függvény
egyre kifinomultabban működik.
A Tabu Search (Tabu keresés) egy sztochasztikus elven működő lokális kereső
algoritmus, mely memóriával rendelkezik. Ez a memória az úgynevezett tabu lista.
ást Glover dolgozta ki 1986-ban [24].
Internetes optimáló alkalmazás készítése JavaFX környezetben az utazó ügynök probléma megoldására
Az algoritmus az iteráció
opt lokális kereső algoritmus
Ezután egy döntési függvény a permutációk költsége alapján
meghatározza, hogy az új permutáció vagy a régi a jobb. Az iterációk során
folyamatosan csökken a hőmérséklet, melynek következtében a döntési függvény
A Tabu Search (Tabu keresés) egy sztochasztikus elven működő lokális kereső
ezik. Ez a memória az úgynevezett tabu lista.
Internetes optimáló alkalmazás készítése JavaFX környezetben az utazó ügynök probléma megoldására
3.4.3.1 Az algoritmus működése
Az eljárás egy véletlenszerű induló permutáció létrehozásával kezdődik. A
kiinduló permutáció alapján annak néhány véletlenszerű paraméterének
megváltoztatásával egy új permutációcsoportot hoz létre. Ha a csoportban
bármelyik permutáció kedvezőbb megoldást ad a problémára, akkor onnantól
kezdve az lesz az etalon megoldás. Annak elkerülésére, hogy az algoritmus
fennakadjon egy lokális optimumon,
listára tesszük. Ha a keresés során újra előáll a tabu lista egy eleme, akkor azt
algoritmus tabunak nyilvánítja
eséllyel elkerülhető a lokális optimum.
3.4.3.2 Pszeudokód
Internetes optimáló alkalmazás készítése JavaFX környezetben az utazó ügynök probléma megoldására
32
Az algoritmus működése
Az eljárás egy véletlenszerű induló permutáció létrehozásával kezdődik. A
kiinduló permutáció alapján annak néhány véletlenszerű paraméterének
megváltoztatásával egy új permutációcsoportot hoz létre. Ha a csoportban
bármelyik permutáció kedvezőbb megoldást ad a problémára, akkor onnantól
kezdve az lesz az etalon megoldás. Annak elkerülésére, hogy az algoritmus
fennakadjon egy lokális optimumon, az etalon megoldás bizonyos paramétereit tabu
Ha a keresés során újra előáll a tabu lista egy eleme, akkor azt
tabunak nyilvánítja, és újra próbálkozik. A tabu lista használatával jó
a lokális optimum.
Internetes optimáló alkalmazás készítése JavaFX környezetben az utazó ügynök probléma megoldására
Az eljárás egy véletlenszerű induló permutáció létrehozásával kezdődik. A
kiinduló permutáció alapján annak néhány véletlenszerű paraméterének
megváltoztatásával egy új permutációcsoportot hoz létre. Ha a csoportban
bármelyik permutáció kedvezőbb megoldást ad a problémára, akkor onnantól
kezdve az lesz az etalon megoldás. Annak elkerülésére, hogy az algoritmus
az etalon megoldás bizonyos paramétereit tabu
Ha a keresés során újra előáll a tabu lista egy eleme, akkor azt az
lista használatával jó
Internetes optimáló alkalmazás készítése JavaFX környezetben az utazó ügynök probléma megoldására
3.4.4 Az Utazó ügynök feladat specifikálása a teszthez
A heurisztikus optimáló algoritmusok teszteléséhez a Berlin52 feladatot
választottam a TSPLIB gyűjteményből
csúcspontból álló problémáról van szó. Az optimális
ideális esetben minden algoritmus erre az eredményre jut.
koordináták alapján vannak megadva. A csúcspontok közötti távolságot az
euklideszi távolság segítségével számítom ki, mely a
Koordinátageometriában az xy sík két pontja, (
távolság:
�
Az internetes optimáló alkalmazásba beépítettem egy módszert a gráf
megjelenítésére, amit a 18
vezérlőjét használtam. Az algoritmusok tesztelése során azonban kikapcsoltam a
megjelenítést, hogy az ne befolyásolhassa a futási időt.
18. ábra: Utazó ügynök probl
Internetes optimáló alkalmazás készítése JavaFX környezetben az utazó ügynök probléma megoldására
33
Az Utazó ügynök feladat specifikálása a teszthez
A heurisztikus optimáló algoritmusok teszteléséhez a Berlin52 feladatot
sztottam a TSPLIB gyűjteményből [25]. Mint a neve is mutatja, egy 52
csúcspontból álló problémáról van szó. Az optimális körút költsége 7542 egység,
ideális esetben minden algoritmus erre az eredményre jut. A csúcspontok x és y
vannak megadva. A csúcspontok közötti távolságot az
euklideszi távolság segítségével számítom ki, mely a Pitagorasz tételen alapu
Koordinátageometriában az xy sík két pontja, (x1, y1) és (x2, y2) közötti euklideszi
� � ���� � ��� � �� � �� (7)
Az internetes optimáló alkalmazásba beépítettem egy módszert a gráf
18. ábra szemléltet. A megvalósításhoz a JavaFX Canvas
vezérlőjét használtam. Az algoritmusok tesztelése során azonban kikapcsoltam a
ne befolyásolhassa a futási időt.
: Utazó ügynök probléma gráfjának megjelenítése JavaFX Canvas vezérlővel
Internetes optimáló alkalmazás készítése JavaFX környezetben az utazó ügynök probléma megoldására
A heurisztikus optimáló algoritmusok teszteléséhez a Berlin52 feladatot
Mint a neve is mutatja, egy 52
körút költsége 7542 egység,
A csúcspontok x és y
vannak megadva. A csúcspontok közötti távolságot az
itagorasz tételen alapul.
) közötti euklideszi
Az internetes optimáló alkalmazásba beépítettem egy módszert a gráf
szemléltet. A megvalósításhoz a JavaFX Canvas
vezérlőjét használtam. Az algoritmusok tesztelése során azonban kikapcsoltam a
éma gráfjának megjelenítése JavaFX Canvas vezérlővel
Internetes optimáló alkalmazás készítése JavaFX környezetben az utazó ügynök probléma megoldására
34
A teszteket egy napjainkban középkategóriásnak mondható hordozható
számítógépen végeztem, mely Intel Core I5 3317U típusú processzorral
rendelkezik. Az energiagazdálkodási lehetőségeket kikapcsoltam, a processzor
végig a maximális teljesítményén üzemelt. A gyártói specifikáció szerint ebben az
állapotban 42 GFLOPS (FLOPS- FLoating point Operations Per Second) elméleti
csúcsteljesítményre képes a CPU.
Ez gyakorlatilag azt jelenti, hogy másodpercenként 42 milliárd lebegőpontos
műveletet tud elvégezni [26]. Ha a Berlin52 problémának minden permutációját
vizsgálni szeretném (Brute-force módszer), akkor nagyságrendileg
8,06581752*1067 lehetőséget kellene megvizsgálnom. Ha nagyvonalúan
feltételezzük, hogy egy permutáció megvizsgálása egy lebegőpontos műveletnek
felel meg, akkor is 1,92043274*1057 másodpercig tartana a számítás. Tudva, hogy a
Föld bolygó megközelítőleg 1,43173440*1017 másodperce keletkezett, belátható,
hogy teljes fizikai képtelenség a tudomány jelenlegi állása szerint már 52 csúcspont
esetében is megvizsgálni az összes lehetséges permutációt.
3.4.5 Az algoritmusok tesztelése, az Utazó ügynök feladat megoldása
Az Utazó ügynök probléma megoldása során a fő cél a következő kérdések
megválaszolása volt:
1. Milyen hatékonysággal találják meg a heurisztikus algoritmusok az
optimális megoldást?
2. Ha mindhárom algoritmus esetén azonos számú iterációs korlátot adok meg,
akkor megállapítható, hogy melyik algoritmus működik a leggyorsabban. A
leggyorsabb működés természetesen nem feltétlenül jelent egyúttal
leghatékonyabbat is.
3.4.5.1 Az algoritmusok paraméterezése
• A tesztelés során az Ant Colony és Tabu Search esetében 100-as iterációs
határt szabtam meg
• A Simulated Annealing algoritmus ezzel szemben 10000 iteráción át
számolt. Az értékeket 100 iterációnként mentettem le.
Internetes optimáló alkalmazás készítése JavaFX környezetben az utazó ügynök probléma megoldására
35
• Az Ant Colony összesen 10 hangyával dolgozott.
• A Simulated Annealing algoritmus 100000 fokról indult, a hőmérséklet
változási tényező 0,98.
• A Tabu Search tabu listájába 15 elem fért.
3.4.5.2 Teszteredmények
A tesztelés során a feljegyzett eredményeket az alábbi táblázatban foglaltam
össze:
Idő [ms] Legjobb költség Eltérés az optimumtól
Ant Colony 8048,386 7772 +230
Simulated Annealing 1074,190 7818 +276
Tabu Search 1149,821 8460 +918
3. táblázat
Az algoritmusok hatékonyságának elemzésekor kiválóan megfigyelhető, hogy
egyik sem az optimális megoldást adta vissza. Viszonylag közel vannak az
optimális megoldáshoz, de nem azt találták meg. Vélhetően nagyobb populáció
vagy iterációszám javítana a pontosságon. A legjobb eredményt az Ant Colony
heurisztika szolgáltatta, azonban futási ideje is ennek volt a legnagyobb. A futás
során permutációk költségének változását szemlélteti a 19. ábra.
• Jól látható, hogy a Tabu keresésnél viszonylag egyenletesen csökkent az
érték.
• A Szimulált hűtés futása elején dinamikus költségcsökkentést produkált.
• Az Ant Colony pedig a másik két eljárásnál egy eleve sokkal alacsonyabb
költségszintről indított, azonban a kezdeti értéket nem sikerült szignifikáns
mértékben lejjebb szorítania.
Internetes optimáló alkalmazás készítése JavaFX környezetben az utazó ügynök probléma megoldására
36
19. ábra: A körutak költségének változása TSP megoldás során
A leggyorsabb működést a Simulated Annealing algoritmus produkálta annak
ellenére, hogy 100-szor több iterációt hajtott végre. Kijelenthető, hogy az SA-nak
van a legkisebb számításigénye a vizsgált algoritmusok közül.
A heurisztikus algoritmusok tesztelése egy igen nehéz és összetett folyamat,
mivel a sok paraméter és nagyszámú változó gyakorlatilag végtelen variációs
lehetőséget jelent.
Kipróbáltam mi történik akkor, ha az Ant Colony algoritmus 20 hangyával
200 iteráción keresztül dolgozik. Lényegében tehát megdupláztam a hangyák és az
iterációk számát az előző méréshez képest. A feljegyzett eredmények az alábbi
táblázatban tekinthetők meg.
Idő [ms] Legjobb költség Eltérés az optimumtól
Ant Colony 31712,217 7542 0
4. táblázat
A futási idő közel négyszeresére nőtt, azonban az Ant Colony algoritmus
megtalálta a Berlin52 Utazó ügynök probléma optimális megoldását.
0
5000
10000
15000
20000
25000
30000
35000
1 5 9
13
17
21
25
29
33
37
41
45
49
53
57
61
65
69
73
77
81
85
89
93
97
K
ö
l
t
s
é
g
Iterációszám
Ant Colony
Simulated Annealing
Tabu Search
Internetes optimáló alkalmazás készítése JavaFX környezetben az utazó ügynök probléma megoldására
37
20. ábra: A körutak költségének változása Ant Colony algoritmus paraméterezésével
3.5 Az algoritmusok továbbfejlesztési lehetőségei
A kutatókat folyamatosan foglalkoztatja, hogyan lehetne növelni a
heurisztikus algoritmusok hatékonyságát. Az egyik leggyakoribb megközelítés a
hibrid eljárások kidolgozása. A tesztjeim során is látható volt, hogy a különböző
algoritmusok eltérő keresési karakterisztikát mutatnak, más-más szakaszban voltak
a legerősebbek. A hibrid algoritmusok lényege hogy különböző eljárások erősségeit
ötvözve próbálnak hatékonyabb keresést megvalósítani. Hibrid algoritmusokra
példát a [27] (Simulated Annealing- Tabu Search hybrid), [28] (Particle Swarm- Ant
Colony hybrid) forrásművekben találhatunk.
Az algoritmusok továbbfejlesztésének másik megközelítése az adaptivitás
megvalósítása. A tesztek során konstans paraméterekkel dolgoztam, melyeket az
algoritmus futásának elején adtam meg. Elképzelhető azonban, hogy a keresés egy
bizonyos szakaszában előnyösebb lett volna más értékű paraméter. Az adaptivitás
lényege, hogy az algoritmus futás közben intelligens módon paraméterezi önmagát
az adott problémának megfelelően [29].
Felmerülhet a kérdés, hogy milyen mértékben használható egy elsősorban
folytonos matematikai függvények optimálására kitalált algoritmus például az
6500
7000
7500
8000
8500
9000
1 8
15
22
29
36
43
50
57
64
71
78
85
92
99
106
113
120
127
134
141
148
155
162
169
176
183
190
197
K
ö
l
t
s
é
g
Iterációszám
Ant Colony
Internetes optimáló alkalmazás készítése JavaFX környezetben az utazó ügynök probléma megoldására
38
Utazó ügynök probléma megoldására. A különbség, hogy míg előbbi esetben a
döntési változók lebegőpontos értéket vesznek fel, addig a TSP esetében a
permutációk diszkrét értékekből épülnek fel. A megoldás a lebegőpontos értékek
diszkretizálása, például az SPV (Smallest Position Value) szabály segítségével,
amiről bővebben a [30] forrásműben olvashat az érdeklődő. Az eljárás segítségével
például a Particle Swarm algoritmus is felhasználható az Utazó ügynök probléma
megoldására.
4 Összefoglalás
Dolgozatomban a heurisztikus optimáló algoritmusok működését, és a
használatukban rejlő sokszínű lehetőségeket vizsgáltam. Véleményem szerint a
tudomány és technológia fejlődésével számos új területen merül majd fel az igény a
nagy bonyolultságú, hagyományos eszközökkel megoldhatatlannak tűnő számítási
feladatok elvégzésére. Ez az a problémakör, ahol a metaheurisztikus optimáló
algoritmusok a leginkább erősek.
Célom, hogy tovább bővítsem a web alkalmazásba épített algoritmusok
számát, valamint olyan új gyakorlati példákkal szemléltethessem működésüket,
melyek különböző szerkezetoptimalizálási, logisztikai, operációkutatási
feladatokhoz kapcsolódnak. Szeretném továbbfejleszteni a már meglévő
algoritmusokat adaptív paraméterezéssel, és újfajta hibrid eljárások kidolgozásával,
tesztelésével. A web alkalmazás a http://users.iit.uni-miskolc.hu/~marcsak/ címen
érhető el.
Internetes optimáló alkalmazás készítése JavaFX környezetben az utazó ügynök probléma megoldására
5 Melléklet
5.1 A Bacterial Foraging algoritmus pszeudokódja
Internetes optimáló alkalmazás készítése JavaFX környezetben az utazó ügynök probléma megoldására
39
A Bacterial Foraging algoritmus pszeudokódja
Internetes optimáló alkalmazás készítése JavaFX környezetben az utazó ügynök probléma megoldására
Internetes optimáló alkalmazás készítése JavaFX környezetben az utazó ügynök probléma megoldására
5.1.1 Chemotaxis and Swim
Internetes optimáló alkalmazás készítése JavaFX környezetben az utazó ügynök probléma megoldására
40
Chemotaxis and Swim
Internetes optimáló alkalmazás készítése JavaFX környezetben az utazó ügynök probléma megoldására
Internetes optimáló alkalmazás készítése JavaFX környezetben az utazó ügynök probléma megoldására
41
6 Irodalomjegyzék
[1] JÁRMAI K., IVÁNYI M.: Gazdaságos fémszerkezetek analízise és tervezése,
Műegyetemi kiadó, Budapest, 2001. ISBN 963 4206743
[2] WEAVER J.: Pro JavaFX2 Platform, Appress, 2012. ISBN 978-1430268727
[3] TÍMÁR I.: Műszaki problémák optimális megoldása, A Miskolci egyetem
habilitációs füzetei, Miskolc, 2001.
[4] VIRÁG Z., JÁRMAI K.: Szabványos kör keresztmetszetű többtámaszú tartók
optimális méretezése, GÉP folyóirat, 2013/2. ISSN 0016-8572
[5] ALI M. M., STOREY C. és TORN A.: Application of stochastic global optimization
algorithms to practical problems, Journal of Optimization Theory and Applications,
1997. pp. 545-563
[6] MOLGA M., SMUTNICKI C.: Test functions for optimization needs, 2005,
http://www.zsd.ict.pwr.wroc.pl/files/docs/functions.pdf
[7] WOLPERT D. H., MACREADY W. G.: No free lunch theorems for optimization,
IEEE Transactions on Evolutionary Computation, 1997. pp. 67–82
[8] WOOLLEY A.W., CHABRIS C. F., PENTLAND A., HASHMI N., és T. W.
MALONE: Evidence for a Collective Intelligence Factor in the Performance of
Human Groups, Journal of Science Vol. 330, 2010. pp. 686-688
[9] LIU Y. és PASSINO K. M.: Biomimicry of social foraging bacteria for distributed
optimization: Models, principles, and emergent behaviors, Journal of Optimization
Theory and Applications, 2002. pp. 603–628
[10] PASSINO K. M.: Bacterial foraging optimization, International Journal of Swarm
Intelligence Research, 2010. pp. 1–16
[11] BROWNLEE J.: Clever Algorithms: Nature-Inspired Programming Recipes, Lulu,
2011. ISBN: 978-1-4467-8506-5
[12] DARWIN C.: On the Origin of Species by Means of Natural Selection, or the
Preservation of Favoured Races in the Struggle for Life (1st ed., 1859), London, John
Murray, 2008. ISBN 1-4353-9386-4.
[13] STORN R. és PRICE K.:. Differential evolution: A simple and efficient adaptive
scheme for global optimization over continuous spaces, Technical Report TR-95-
012, International Computer Science Institute, Berkeley, CA, 1995.
Internetes optimáló alkalmazás készítése JavaFX környezetben az utazó ügynök probléma megoldására
42
[14] PRICE K., STORN R. M. ÉS LAMPINEN J. A.:. Differential evolution: A practical
approach to global optimization, Springer, 2005.
[15] KENNEDY J. és EBERHART R. C.:. Particle swarm optimization, In Proceedings
IEEE int’l conf. on neural networks Vol. IV, 1995. pp 1942–1948
[16] HU X., EBERHART R.: Solving Constrained Nonlinear Optimization Problems with
Particle Swarm Optimization, In Proceedings of the 6th World Multiconference on
Systemics, Cybernetics and Informatics (SCI 2002), volume 5. Orlando, USA, IIIS,
2002.
[17] CHEN N. H.: An Ant Colony Optimization and Bayesian Network Structure
Application for the Asymmetric Traveling Salesman Problem, Lecture Notes in
Computer Science Vol. 7198, 2012. pp 74-78
[18] BIGGS N.L., LLOYD E.K., és WILSON R.J.: Graph Theory 1736-1936, Clarendon
Press, Oxford, 1976.
[19] S. HAWKING: A Brief History of Time, Bantam, 10th anniversary edition, 1998.
ISBN: 978-0553380163
[20] DORIGO M.: Optimization, Learning and Natural Algorithms (in Italian). PhD
thesis, Dipartimento di Elettronica, Politecnico di Milano, Milan, Italy, 1992.
[21] DORIGO M. és GAMBARDELLA L. M.: Ant colony system: A cooperative
learning approach to the traveling salesman problem, IEEE Transactions on
Evolutionary Computation, 1997. pp. 53–66
[22] KIRKPATRICK S.: Optimization by simulated annealing: Quantitative studies.
Journal of Statistical Physics, 1983. pp 975–986
[23] ZHANG K., FU Z.: Effects of annealing treatment on phase composition and
microstructure of CoCrFeNiTiAlx high-entropy alloys, Intermetallics Volume 22,
March 2012. pp 24-32
[24] GLOVER F.: Future paths for integer programming and links to artificial
intelligence, Computers and Operations Research, 1986. pp 533–549
[25] TSPLIB: TSP and vehicle routing problem data, Konrad-Zuse-Zentrum fur
Informationstechnik Berlin (ZIB), 1991.
[26] INTEL CORPORATION: Intel® Corei5-3300 Mobile Processor Series, 2013.
http://download.intel.com/support/processors/corei5/sb/core_i5-3300_m.pdf
Internetes optimáló alkalmazás készítése JavaFX környezetben az utazó ügynök probléma megoldására
43
[27] MURAT A., SERPIL E.: A hybrid simulated annealing-tabu search algorithm for the
part selection and machine loading problems in flexible manufacturing systems, The
International Journal of Advanced Manufacturing Technology, 2012.
[28] SERAPIÃO A. B. S., MENDES J. R. P.: Classification of Petroleum Well Drilling
Operations with a Hybrid Particle Swarm/Ant Colony Algorithm, Next-Generation
Applied Intelligence, Lecture Notes in Computer Science Volume 5579, 2009. pp
301-310
[29] LI C.: An adaptive learning particle swarm optimizer for function optimization,
Conference Publications, Leicester, 2009. pp 381-388
[30] TASGETIREN, M.F., SEVKLI, M., LIANG, Y.-C., GENCYILMAZ, G.: Particle
swarm optimization algorithm for single-machine total weighted tardiness problem,
Proceedings of Congress on Evolutionary Computation, Portland, Oregon, USA,
2004. pp 1412–1419