Harmony Search algoritmus alkalmazása anyagáramlási feladatok tervezésénél
|
|
- Natália Fülöpné
- 8 évvel ezelőtt
- Látták:
Átírás
1 Harmony Search algoritmus alkalmazása anyagáramlási feladatok tervezésénél Diplomamunka V0K13Q 2014
2 Tartalomjegyzék I. Előszó...3 II. A vállalatok átalakulása...5 III. A MATLAB bemutatása...7 III.1. A MATLAB programnyelv jellemzése...8 III.2. MATLAB parancsok...9 III.3. MATLAB változók IV. A Harmónia keresési algoritmus IV.1. Metaheurisztikák IV.2. Harmony Search algoritmus V. A függvény optimalizáló program V.1. A HSM program felépítése sorok alapján: V.2. ET funkciófájl leírása V.3. A függvény optimalizáló program használata IV.3.1. Egyszerű 5 változós tesztfüggvény V.3.2. Goldstein és Price 1. függvény V.3.3. Rosenbrock függvény V.4. A HSH program VI. Hátizsák probléma VI.1. A hátizsák probléma megoldása VI.2. A hátizsák probléma megoldása a MATLAB programmal: VI.3. A HZF program leírása sorok alapján: VII. Az utazóügynök probléma VII.1. Tesztfeladat az utazóügynök problémára: VII.2. Az utazó ügynök problémát megoldó tesztelése VII.3. Az UF program leírása sorokra bontva: VII.4. TAV funkciófájl leírása: VIII. A gyártani vagy vásárolni ( make or buy ) döntések VIII.1. A make or buy döntések ismertetése VIII.2. Előnyök és hátrányok VIII.3. Make or buy döntés költségszámítása VIII.3.1. Saját gyártás költsége VIII.3.2. Vásárolt alkatrész költsége VIII.4. A döntés kimenetele a nyereség szempontjából VIII.6. A make or buy döntéssegítő program bemutatása
3 VIII.7. A MOB nevű program leírása sorok alapján: VIII.8. Az MM funkciófájl leírása IX. Paraméterek helyes beállítás a HS programban IX.1. A HMCR helyes beállítása IX.2. A PAR és BW értékeinek helyes beállítása IX.3. A lépésszám helyes megválasztása IX.4. Kiindulópontok és határpontok X. Összefoglalás XI. Summary XII. Irodalomjegyzék Köszönetnyilvánítás Mellékletek A függvény optimalizáló program (HSM.m) forráskódja A függvény tartomány optimalizáló program (HSH.m) forráskódja ET funkciófájl forráskódja Hátizsák probléma megoldó program (HZF.m) forráskódja: Az utazóügynök probléma megoldó program (UT.m) forráskódja TAV funkciófájl forráskódja Make or buy döntéssegítő program (MOB.m) forráskódja Az MM funkciófájl forráskódja
4 I. Előszó A diplomamunkám témája a Harmony Search Meta-heurisztikus optimalizáló algoritmus bemutatása, felhasználása, vizsgálata és továbbfejlesztése. Az eredetileg függvényoptimalizálásra kitalált algoritmust három különböző anyagmozgatási feladatra sikerült átültetnem. A hátizsák és az utazóügynök probléma megoldására és a make or buy döntéshozatal segítésére speciális programokat hoztam létre a Harmony Search algoritmus alapján, MATLAB programozási nyelven. Mivel ezt az algoritmust függvények optimalizálására dolgozták ki, ezért kézenfekvő volt, hogy a különböző problémákat, amelyekre programot készítettem, egyenletekre vezessem vissza. Ekkor tudjuk az algoritmusból kihozni a lehető legtöbbet. Az egyenletté alakítást és annak megoldását általában a funkciófájlok végzik. Az első fejezetekben egy áttekintést láthatunk a vállalatok stratégiáinak változásáról az elmúlt évszázadban, majd egy rövid ismertető következik a MATLAB program előnyeiről és használatáról. A 4. fejezetben ismertetem a metaheurisztikák működését és a Harmony Searh algoritmus elméletét. Majd utána az algoritmus gyakorlati alkalmazását mutatom be két általam készített programon. A 6. fejezettől a 8.-ig a három anyagmozgatási feladatot és ezek megoldását részletezem. Először a hátizsák probléma kerül terítékre, amelynél el kell dönteni, hogy egy meghatározott befogadóképességű helyre hogyan lehet a lehető legtöbb tárgyat elhelyezni úgy, hogy számunkra a legnagyobb értékkel bírjon. Másodiknak az utazó ügynök probléma kerül bemutatásra, amelyben azt kell megoldani, hogy a lehető legrövidebb úton, vagy költséggel jussunk el minden helyszínre egy előre meghatározott helyről úgy, hogy kétszer sehol se forduljunk meg. Utolsónak a Make or Buy döntés segítésére kitalált megoldásomat részletezem, aminél azt határozzuk meg, hogy egy szerelési fában mely 3
5 alkatrészeket vásároljuk és melyeket gyártsuk úgy, hogy számunkra a legkedvezőbb helyzet alakuljon ki. Az Utolsó fejezetben a Harmony Search algoritmus alapparamétereinek a helyes beállításairól készítettem javaslatokat, amelyek segítségével a programok hatékonyságát növelhetjük. A diplomamunkám anyagából két cikket is készítettem az Advanced Logistic Systems nevű folyóiratba, amelyek közül egy már meg is jelent és egy megjelenés alatt áll. 4
6 II. A vállalatok átalakulása Az elmúlt évszázadban a termelői piac helyét átvette a szolgáltatói piac. Ennek hátránya az volt, hogy a termékeket, szolgáltatásokat és azok tulajdonságait nem azok kínálói, hanem egyre inkább annak vásárlói határozták meg. A különböző vállalatok között vagy szorosabb kötelék alakult ki, vagy versenytársakká váltak. A piaci verseny arra ösztönözte a vállalatokat, hogy jó minőségű árut vagy szolgáltatást állítsanak elő minél olcsóbban és azokat sikeresen minél nagyobb profittal adják el. A vállalatoknak, hogy életben maradjanak az alábbi lehetőségek közül kellett választaniuk: egyedi, speciális termék vagy szolgáltatás előállítása, mellyel a piacon monopolhelyzetet teremthetnek, a versenytársak kizárása a piacról, kiadások csökkentése, veszteségek csökkentése, pazarlások megszüntetése, nyereség maximalizálása, új technológiák kifejlesztése, optimalizált gép, eszköz, helység elhelyezés. Ezek közül a legtöbben a pazarlásokat és a kiadásokat csökkentették, optimalizálták a gépek és eszközök elrezését valamint új költséghatékonyabb technológiákat fejlesztettek ki. A legtöbb vállalat nem tudott monopolhelyzetet szerezni a piacon, ezért versenyhelyzet alakult ki közöttük, ezáltal rá lettek kényszerítve, hogy csökkentsék az áraikat és ezzel együtt a kiadásaikat is. A 20. század közepéig erre csak tapasztalati úton, ipari kémkedéssel vagy kísérletezéssel tudtak megoldást találni. Ezek viszont vagy nem voltak elég hatékonyak és/vagy nagyon költségesek voltak. A számítógépek megjelenésével és elterjedésével azonban a mérnökök számára egy új korszak kezdődött. Amit eddig papíron számoltak napokon keresztül, azt a számítógépek percek alatt elvégezték. Megjelentek specifikus tervező, elemző, 5
7 optimalizáló programok, amelyek segítségével a termékeket és szolgáltatásokat sokkal egyszerűbb lett megtervezni, elemezni, hatékonyabbá és olcsóbbá tenni. Már csak azokat a termékeket kellett elkészíteni, amelyet a programmal megfelelőnek ítéltek és nem kellett minden egyes változatot legyártani és megvizsgálni. A különböző szolgáltatásokat pedig sokkal hatékonyabbá, gyorsabbá és olcsóbbá lehetett tenni köszönhetően a rengeteg optimalizáló programnak. Gondoljunk csak a mai fuvarozó vállalatokra! Régen minden fuvart egyenként papíron számoltak ki, és ha valahol változtatni kellett, az egészet újra kellett kezdeni előlröl. A mai fuvarszervező szoftverek másodpercek alatt több száz járműnek az optimális szállítási útvonalát tervezik, figyelembe véve a távolságokat, a szállítandó anyag minőségét, mennyiségét és egyéb speciális tulajdonságait. Emellett a különböző felvételi és lerakási pontok nyitvatartását, az útvonalak forgalmi tulajdonságait, a berakodási sorret, üzemanyag fogyasztást, a pihenőidőket és még rengeteg egyéb adatot. Ez a mennyiségű adat egy szoftver számára olyan optimalizálási feladatot alkot, ahol a változók száma akár a több százat is elérheti. Egy egyenletrszer csak akkor oldható meg egzakt módon, ha van legalább annyi különálló, egymásból nem leszármaztatható egyenlet, mint amennyi változó van. Általában a különféle optimalizáló szoftverek nem relkeznek ezzel a feltétellel, így kimondható, hogy ezekre az egyenletekre nem tudnak előre meghatározott lépésben pontos megoldást nyújtani. Ennek következtében ezek a szoftverek olyan algoritmusokat használnak, amelyek csak megközelítik az elméleti pontos értéket annyira, hogy számunkra ne legyen jelentősége annak, hogy a tényleges vagy egy közelített értékel dolgozunk. A 70-es évektől számos algoritmust dolgoztak ki, hogy megoldja a különböző mérnöki optimalizálási problémákat. A legtöbb algoritmus lineáris vagy nem-lineáris programozási módszerek alapján működik jelentős mennyiségű változó adattal. Az ilyen numerikus algoritmusok nagyon jó stratégiával relkeznek, hogy a globális optimumot egyszerűen és gyorsan találják meg. Viszont nagyon sok algoritmusnak van egy jelentős hibája. Ha nem jól választjuk meg a kiindulópontot, akkor egy bonyolultabb feladatnál, ahol több optimum is létezik, akkor a keresés könnyen csapdába eshet, leragadhat egy lokális optimum pontnál és nem a legjobb eredményt kapjuk meg. 6
8 III. A MATLAB bemutatása A MATLAB (jelentése: matrix laboratory ) egy speciális, programrszer, amely numerikus számítások elvégzésére lett kifejlesztve. Az elnevezés emellett egy magas szintű programozási nyelvet is jelent. A The MathWorks által kifejlesztett programrszer alkalmas: numerikus analízis, mátrixalgebra, jelfeldolgozás, optimalizálás, irányítási rszerek, grafikus ábrázolási feladatok megoldására. A MATLAB-ot az 1970-es évek elején az Új-Mexikói Egyetem Számítástudományi Intézetének akkori elnöke, Cleve Moler kezdte el fejleszteni. Kezdetben csak a diákjai munkáját szerette volna megkönnyíteni, hogy ezen keresztül el tudják érni a LINPACK és EISPACK csomagokat Fortran tudás nélkül. Hamarosan elterjedt más egyetemek hallgatói és munkatársai között is, így erős érdeklődésre tett szert az alkalmazott matematikával foglalkozók körében. Jack Little, a Molernél tett látogatása során felismerte a MATLAB-ban lévő lehetőségeket 1983-ban. Utána nem sokkal csatlakozott Molerhez és Steve Bangert-hez, majd újraírták a MATLAB-ot C nyelven és, megalapították a The MathWorks-öt 1984-ben. Az újabb verziókat a c nyelv mellett Javaban is készítik. Ezek az újraírt könyvtárak JACKPAC néven váltak ismerté ben a MATLAB-ot ismét újraírták, hogy újabb módszereket alkalmazzon a mátrixokkal való műveletekre, ebből született a LAPACK csomag. [1] 1984 és 2012 között a MATLAB program nyelvnek számos verzióját fejlesztették ki. Állandó tökéletesítésének köszönhetően jelenleg a világ egyik legjobb terméke a numerikus számítások területén ben, hivatalos információk alapján, a MATLAB több, mint 1 millió felhasználóval relkezett. 7
9 Bár a szoftver kizárólag numerikus, a MuPAD csomag hozzáadásával képes matematikai kifejezéseket grafikusan is megjeleníteni. A MATLAB először az irányítástechnikával foglalkozók körében lett alkalmazva, de gyorsan elterjedt más területeken is. Manapság szintén használatos még az oktatásban (különösen a lineáris algebra és numerikus analízis szemléltetésében) és népszerű még a képfeldolgozással foglalkozó kutatók között is. [1] III.1. A MATLAB programnyelv jellemzése Az egész MATLAB programrszer a MATLAB nyelv köré épül, amit néha M-code-nak vagy egyszerűen M-nek hívnak. A MATLAB program lényeges jellemzője, hogy a bennük lévő valamennyi változó globális. A legegyszerűbb módja az M-code fordításának az, hogy a fordítandó programot begépeljük a >> prompt után, a Command Windowban, amely a MATLAB felület része. Ebben az esetben a MATLAB egy interaktív matematikai burokként fog működni. Ha az M-code több sorból áll, a MATLAB Editort használatával akár saját függvényt is készíthetünk. A változókat a MATLAB nyelvben az értékadó operátorral lehet deklarálni, ami az =. A MATLAB egy dinamikusan típusos nyelv, ami azt jelenti, hogy a változókat típusdeklaráció nélkül is lehet használni, kivéve ha szimbolikus objektumnak szánjuk őket. A változók az értékeiket kaphatják konstansokból, számításokból vagy egy függvény visszatérési értékéből is. [1] A MATLAB egy Mátrix Laboratórium, így többféle kényelmes megadási módját kínálja a vektoroknak, mátrixoknak és többdimenziós tömböknek. A MATLAB nyelvben (ahogy a matematikában is) a tömbök és mátrixok indexelése 1-től kezdődik. A legtöbb programozási nyelvben ez leggyakrabban 0-tól történik. A mátrixokat az elemek felsorolásával is meg lehet adni szóközzel vagy veszővel elválasztva úgy, hogy 8
10 a listát szögletes zárójelek között helyezzük el. A pontosvessző azt jelenti a felsorolásban, hogy az utána álló elemek a következő sorba kerüljenek. A kerek zárójelek használatával al-mátrixok is megjeleníthetőek. [9] Más programozási nyelvekkel ellentétben, ahol a pontosvessző (;) választja el egymástól a parancsokat, a MATLAB-ban, a parancsok kiírása függ tőle. Ha egy parancs végén pontosvessző szerepel, akkor nem kerül kiíratásra. Ellenkező esetben kiíródik. Ha egy parancs vagy függvény nem relkezik visszatérési értékkel, akkor ugyanaz történik a pontosvessző megléte vagy hiánya esetén is. A plot függvény segítségével 2 dimenzióban ábrázolhatunk függvényeket, ahol az x tömb tartalmazza a megjelenítő tartományt, az y tömb pedig a függvényt. [1] III.2. MATLAB parancsok A MATLAB parancsokat (utasításokat) utasítássorokban kell megadni. Egy parancssor több, a ";"-pontosvessző jellel elválasztott utasítást is tartalmazhat. Az adott utasítás(ok) az "ENTER"- billentyű megnyomásának hatására kerül(nek) végrehajtásra. Célszerű egy adott feladathoz tartozó parancssorokat előbb egy M-file formátumban megírni (pl. a MATLAB saját szövegszerkesztőjével), azt elmenteni saját munkaterületünkre majd utána az adott M- file-t meghívással futtatni. Egy utasítássor szerkezetében a hozzárelés ("="-egyenlőség) jelének bal oldalán általában a kiszámításra kerülő változó neve (a kívánt eredmény) szerepel, míg jobb oldalán az utasítás neve, amit zárójelben az utasítás végrehajtásához szükséges változó nevek kísérnek. Ha a baloldali rész hiányzik, a program az eredményt az "ans" nevű mátrixban közli és tárolja mindaddig, amíg újabb, hasonló értékszámítás nem történik. [1] A MATLAB utasítások célja a különböző műveletek eredményeinek a meghatározása. Az eredmény az utasításokban szereplő változó(k) értékváltozásaként jelentkezik. A MATLAB változók értékei az alábbi alapvető műveletek nyomán változhatnak: 9
11 a) aritmetikai, algebrai, logikai és relációs műveletek, b) MATLAB matematikai függvényszámítások, c) speciális MATLAB utasítások, d) M-file típusú meghívások, e) MEX-file típusú meghívások. III.3. MATLAB változók A MATLAB-ban a változók típusára nincs külön definíció. A mátrix mérete és típusa a beírt értékek alapján automatikusan képződik. MATLAB mátrix műveletekre specializált szoftver. Műveleteihez az adatokat mátrix formában kell megadni illetve a változókat, mint mátrixtömböket lehet kezelni. Egy munkafolyamat megkezdésekor a felhasználó a változókat egyszerű megnevezéssel és/vagy értékhozzáreléssel tudja meghatározni. Az így meghatározott változók a továbbiakban bármilyen matematikai összefüggésben szerepelhetnek. Az egyszer meghatározott (nevesített) változók a munkafolyamat végéig (a "quit", az "exit" vagy a "clear" utasításokig) rezidensen maradnak a MATLAB munkaterületen, tehát bármikor előhívhatók. [9] Egy munkafolyamat során bármikor új változók is meghatározhatók. A változókhoz tartozó értékeket (mátrixtömböket) el lehet (lemezre) menteni a "save" parancs segítségével vagy elő lehet azokat hívni a "load" parancs segítségével. Adott MATLAB utasításokat, parancsokat mindig az ENTER billentyű lenyomásával érvényesítünk. Nagyon hosszú munkafolyamat vagy kiterjedt számítások során sok változó név összegyűlhet. A MATLAB listát vezet a változókról, amelyet a "who" paranccsal lehet lekérdezni. Fontos, hogy következetes, logikus jelőlési módot használjunk, mert még így is megtörténhet, hogy nehezen tudjuk utólag azonosítani az egyes változókat. [1] 10
12 IV. A Harmónia keresési algoritmus A Harmony Search algoritmus a számítási intelligenciák és metaheurisztikák területéhez tartozik. [3] A számítási intelligencia vagy régebbi nevén al-szimbolikus technika a Mesterséges Intelligenciakutatás speciális alterülete, ahol a technológia csak arra fókuszál, hogy a végeredmény minél tökéletesebb legyen. Ezt az ágát az AI kutatásnak nagyjából lefedi az öt legnagyobb alkalmazkodó és intelligens rszer [2]: Evolúciós számítások, Raj intelligencia (Rész Raj és Hangya Kolónia optimalizálás), Fuzzy rszerek, Mesterséges immunrszerek, Mesterséges neurális hálózatok. Ezek mellett található még rengeteg kisebb, nem annyira elterjedt elmélet. Ezek közé tartozik részben a Harmony Search technológia is. IV.1. Metaheurisztikák Metaheurisztikák a neve az olyan algoritmusok gyűjtőtáborának, amelyek az úgynevezett Koszos Mesterséges Intelligenciák csoportjába tartoznak ahol csak a kimenetel tökéletességére alapozzák stratégiájukat. Ebben a helyzetben a heurisztika egy olyan algoritmus, amely megkeresi azt a megoldást, ami már elég jó ahhoz, hogy már ne okozzon gondot annak a bizonyítása, hogy a megoldás optimális vagy sem. A heurisztikus módszerek nagy hangsúlyt fektetnek a pontosságra, minőségre és a számítógép (tárhely és futási idő) lehető legjobb kihasználására. [3] Úgy, mint a heurisztikák, a metaheurisztikák is egy algoritmust tartalmaznak egy általános keretben, amiket néhány kisebb változtatással sok különböző problémára lehet alkalmazni. 11
13 A metaheurisztika célja, hogy egy vagy több heurisztikus módszert építsen magába egy magasabb szintű stratégia eléréséhez (innen ered a meta az elején). Az eljárás a metaheurisztikában olyan, mint egy fekete doboz, nem lehet teljes mértékben minden körülményt, információt megismerni vagy megszerezni, de már kevés információból is képes a metaheurisztika eldönteni, hogy meghagyja, vagy kicseréli egy másik eljárásra. [3] Egy eljárás lehet akár egy olyan egyszerű lépés, mint a változók manipulálása, vagy akár egy másik összetettebb metaheurisztika is. Például létezik olyan metaheurisztika is, amely tartalmazza az iterált helyi keresést, a tabu keresést, a genetikus algoritmust, a hangya kolónia optimalizálót és a szimulált megközelítést. C. Blum és A. Roli megfogalmazták a metaheurisztikák 9 legfontosabb tulajdonságát [10]: 1. A metaheurisztikák csak stratégiák a keresési eljárás irányításához. 2. A cél az, hogy minél hatékonyabban vizsgálják át a keresési térrészt, hogy megtalálják a lehető legjobb megoldást. 3. A metaheurisztikát képező algoritmusok köre nincs korlátolva, a legegyszerűbb helyi kereső algoritmusoktól a komplex tanulási eljárásokig bármit tartalmazhat. 4. A metaheurisztika algoritmusai közelítő és általában nem determinisztikus eljárások. 5. Lehetnek benne olyan mechanizmusok, amelyek elkerülik a keresés beragadását egy térrészre (lokális optimum probléma). 6. A metaheurisztika alapfogalmait csak egy absztrakt, összefoglaló szinten lehet leírni. 7. A metaheurisztikák nem probléma specifikusak. 8. Egy magasabb szintű stratégia által vezérelve egy metaheurisztika átveheti egy heurisztika terület specifikus tudását. 9. A mai fejlett metaheurisztikus keresések felhasználhatnak más keresési tapasztalatokat (elmentve valamilyen memória formájában) a keresésük segítéséhez. 12
14 A legtöbb mérnöki optimalizálási algoritmus lineáris vagy nemlineáris programozási módszeren alapul. Ezeknek az algoritmusoknak viszont van egy nagy hibájuk: ha több optimális pont van, aminek a kiválasztása függ a kezdőponttól, akkor az algoritmus nem mindig az optimum pontot választja ki. Léteznek már úgynevezett hiperheurisztikák is, amelyek kiemelt szerepet szentelnek azokra a heurisztikákra, amelyek offline vagy online módon meg tudják változatni a paramétereiket úgy, hogy ennek hatására javuljon a számítási munka hatékonyság vagy a megoldás. A hiperheurisztikák olyan magas szintű stratégiákat alkalmaznak, mint a gépi tanulás és módosítják a keresés viselkedését aszerint, hogy melyikkel lehet az adott esetben jobb eredményt generálni. [3] Optimalizálásnak nevezzük azt az eljárást, amikor egy problémára olyan megoldást keresünk és választunk ki több lehetséges változat közül, amely a célfüggvényt a lehető legjobban kielégíti. A költségek észrevehető minőségromlás nélküli csökkentését nevezzük költség szerinti optimalizálásnak. Lehetséges célfüggvények: összköltség min anyagmozgatási munka min szállítási távolság min átfutási idő min anyagmozgatás tevékenységek időtartama min gépek, eszközök, munkaerő kihasználtsága max anyag, energia felhasználás min egyenletes anyagáram Ezen kívül még rengeteg célfüggvény létezik, de az első és legfontosabb egy vállalat számára mindig az összköltség minimalizálása. 13
15 IV.2. Harmony Search algoritmus Nemrégiben Z.W. Geem, J.-H. Kim és G.V. Loganathan kifejlesztettek egy olyan metaheurisztikus algoritmust, amelyet a zenei életből vett tökéletesség vagy más néven harmónia megteremtése alapján készítettek el és a Harmónia Keresési (Harmony Search) algoritmus nevet adták neki. A harmonikus zene az optimalizált megoldás vektornak és a zenészek az improvizációikkal a lokális és globális kereső rszereknek felelnek meg. Az algoritmus alapja a zenei harmónia keresés, amelyet sztochasztikus véletlenszerű elemekkel épít fel, a megszokott gradiens elemek helyett, amivel a járulékos szükségtelen számítások is eltűnnek. Különféle mérnöki optimalizációs problémára, matematikai függvények minimalizálására, maximalizálására és magasépítésben is használható eljárás. A metaheurisztikus algoritmusok egyesítik szabályos és véletlenszerű természeti jelenségeket. Ezek közé sorolható az evolúciós vagy genetikai algoritmus, amelyet szintén a természet inspirált és számos tudományos területen alkalmazzák. A harmóniakeresési algoritmus is ezeken a természeti jelenségeken, még pedig a zene harmóniáján nyugszik. Zenés előadások célja, hogy megtalálják kellemes harmónia által meghatározott esztétikai standardot, ahogy az optimalizálási folyamat célja, hogy megtalálja a globális megoldás által meghatározott célt. A zene harmóniája egy optimalizált megoldásvektor és a zenész improvizációs technikája egy lokális és globális keresési séma az optimalizálási technikában. Az algoritmus nem igényel kezdőértéket a döntési változóknak. Az alappillérei a Harmónia Memória Figyelési Arány (Harmony Memory Considering Rate, röviden HMCR) és a Hangmagasság Szabályzó Arány (Pitch Adjust Rate, röviden PAR). Az esztétikai minőséget a különböző hangszerek hangmagassága és azok aránya határozza meg, ahogy egy eredményt a célfüggvény és változóinak értéke ad meg. A HS algoritmus alapját olyan zenék adják, ahol a zenei előadást a zenész improvizációval kívánja feldobni. Ilyen zenei irányzat például a JAZZ. [2] 14
16 1. ábra: Zenészek és változók Forrás: Kang Seok Lee, Zong Woo Geem (2005): A new meta-heuristic algorithm for continuous engineering optimization: harmony search theory and practice. A fenti ábrán látszik, ahogy több zenész, más-más hangszerrel és hangmagassággal a tökéletes zenei harmóniára törekszik, úgy több változó is az optimális értékre törekszik. Ha az összes hangmagasság közül a legjobbat, amivel a legszebben hangzott a zene minden zenész megjegyzi, akkor a következő alkalommal, már azt fogja alkalmazni és egyre kimagaslóbb lesz a zenei élmény. Ugyanígy működik a harmónia keresés algoritmusa is, ha megjegyezzük az eredeti változók értékeit és változtatunk valamin, ami ha jobb eredményt mutat, akkor az újat használjuk inkább. Így lépésenként egyre jobb megoldást kapunk. A lépéseket pedig addig ismételjük, amíg meg nem találjuk a tökéletes harmóniát, az optimális megoldást. [2] A HS algoritmus 5 lépésből áll: 1. Meg kell adni az optimalizálási problémát és az algoritmus paramétereit. 2. El kell készíteni a Harmónia Memória mátrixot (HM). 3. Meg kell alkotni (improvizálni) egy új harmónia változatot. 4. Be kell illeszteni az új harmóniát a Harmónia Memória mátrixba. 5. Ismételni kell a 3. és 4. lépést, amíg el nem érjük a tökéletes harmóniát. 15
17 A lépéseket az alábbi módon lehet felírni: 2. ábra: A Harmony Search elmélete Forrás: Kang Seok Lee, Zong Woo Geem (2005): A new meta-heuristic algorithm for continuous engineering optimization: harmony search theory and practice. Az alábbi folyamatábra a 3. lépést fejti ki bővebben és a programomat is ezek a képletek alapján alkottam meg kisebb változtatásokkal. 3. ábra: A Harmony Search algoritmus leírása Forrás: Kang Seok Lee, Zong Woo Geem (2005): A new meta-heuristic algorithm for continuous engineering optimization: harmony search theory and practice. 16
18 V. A függvény optimalizáló program Az alábbi programokat MATLAB-ban készítettem a fent bemutatott elmélet alapján. Ezeket a programokat úgy alkottam meg, hogy a lehető legjobban kövessék az elméletet, de javításokat és fejlesztéseket is eszközöltem rajtuk, hogy minél jobban kihasználja az algoritmusban rejlő lehetőségeket. A függvény optimalizáló programnál, amelynek a HSM.m nevet adtam a fent közölt elméletet próbáltam minél pontosabban megírni, ami majd az alapját adja a speciális optimálási feladokra írt algoritmusoknak. V.1. A HSM program felépítése sorok alapján: sor: Az alábbi alap paramétereket itt kéri a program a további számolásokhoz: alsó és felső kezdőpont (tol; ig {- }) minimum (0) vagy maximum (1) keresést végzünk iteráció szám (i N) változók száma (xek N) HMCR (0 1) PAR (0 1) bw (0 1) Harmónia Memória mérete (yek N) sor: A Harmónia Memória mátrixot (H) egy random generátorral elkészítjük, úgy hogy olyan értékeket generálunk véletlenszerűen az állapottérben, amely a két kezdőpont közé esik (tol; ig). A H mátrix oszlopa a változók számának ( xek ) felel meg, a sora pedig a változatok számának ( yek ). Ezután a program az ET nevű funkciófájlban található 17
19 egyenleten lefuttatja a különböző változatokat és a megoldásokat egy függőleges F vektorba menti le sor: Az előre beállított iterációs számmal a program for ciklust futtat le, amely magába foglalja az optimalizálási algoritmust. Minden lépésben a meghatározott arányokat figyelembe véve kiválaszt egy módszert a három közül, amelyikkel próbál minél jobb eredményt alkotni. Ha sikerül a futtatás végén kedvezőbb megoldást találnia, mint a H mátrixban található legrosszabb megoldás, akkor az új változatot helyettesíti a legrosszabb helyére és a megoldását is lecseréli az F vektorban. Ha viszont rosszabb eredményt alkot, akkor változatlanul hagy mindent sor: Ha a HMCR és PAR értéke is nagyobb, mint két különböző random szám, akkor ebben a részben leprogramozott módszer fog optimalizálni. Ennek a módszernek a lényege, hogy random generátorral minden változóra meghatározzuk, hogy a H mátrixban található változatokból melyikből emelje ki az adott változót. Amint ilyen módon összerakta az új változatot, megvizsgáltatjuk a funkció fájllal, hogy jobb értéket ad-e, mint a kiemelt változat. Ha igen, akkor kicseréljük a H mátrixban találhatót az újra, ha nem akkor mindent hagyunk változatlanul sor: Ha a HMCR értéke nagyobb, de a PAR értéke kisebb, mint két különböző random szám akkor ez a módszer fog ebben a lépésben érvényesülni. Ennél a módszernél majdnem ugyanaz játszódik le, mint az előzőnél annyi különbséggel, hogy nem csak összeválogatjuk a változókat, de kicsit meg is változtatjuk azokat. Azt, hogy ez a változtatás mekkora értékkel történik, arról csak annyit ír a HS elmélete, hogy valamilyen számot hozzáadunk vagy kivonunk. Ha csak egy konkrét számot adnánk hozzá, akkor lehet, hogy ez a szám egy kis idő után túl nagy lenne a finomításhoz, vagy az elején túl kicsi ahhoz, hogy az állapottér megfelelő részét elérje. Én ezért egy többszörösen dinamikusan mozgó bw -t találtam ki. 18
20 Először el kell döntenie a programnak random szám alapján hogy az eredeti bw -t használja- e vagy a lépésszám előrehaladtával egy redukált bw-t alkalmaz inkább. Erre azért van szükség, mert az elején nagyobb szabadságot kell adni a programnak, hogy a megfelelő minimumpont közeli értékeket találjon, de ha ez megvan, folyamatosan finomítania kell a változókat, a minél pontosabb kereséshez. Miután kiválasztotta melyiket szeretné alkalmazni, meg kell határozni minden lépésben azokat az értékeket, amennyivel megváltoztatja a változókat. Ezt az alábbi képlet alapján számolja ki: Minden futtatásnál megvizsgálja, hogy a különböző változóknál melyik a legnagyobb és legkisebb érték, és a kettejük különbségét szorozza meg a 2*bw számmal és egy random értékkel 0 és 1 között. Így akármilyen kis tartományban is mozog már a finomítás, mindig lehet rajta javítani. Ez után a program véletlenszerűen eldönti, hogy hozzáadja vagy kivonja-e a változóból a fent megkapott értéket és megkapjuk az új változatot sor: Az utolsó módszer akkor lép életbe, ha a HMCR értéke kisebb, mint egy random szám. Ennek a módszernek az alapja egy teljesen új változat generálása, amely csak minimálisan függ a már meglévő változatoktól [3]: D(1,m)=max(H(:,m))-min(H(:,m)); MH(1,m)=min(H(:,m)); A(1,m)=MH(1,m)+(D(1,m)/n)*round(rand(1)*(m-1)); 19
21 ahol: D: a változók értékei közötti legnagyobb különbség, MH: a változók közül a legkisebb érték, A: az új változat vektora, n: az aktuális lépésszám. Miután megalkotta a program az új változatot megvizsgáljuk, hogy jobb-e mint a H mátrix legrosszabb változata. Ha igen akkor kicseréljük rá az imént kapott vektort, ha nem akkor semmin nem változtatunk sor: Ebben a szakaszban minden lépésben kirajzoltatunk két pontot egy gráfra. Az egyik pont piros színű és az aktuális legjobb eredményt mutatja, a másik kék színű és az megoldásmátrix (F) átlagát reprezentálja. A for ciklus után a feliratozza a gráfot, és kiíratja az eredményeket. V.2. ET funkciófájl leírása Ennek a fájlnak nagy szerepe van a főprogramban, mivel ez számolja ki a különböző változatok eredményeit. Igazából itt a fájl mindössze két elemet tartalmaz, amit egy példán keresztül mutatok be: function [ E ] = ET( Q ) E=(Q(1,2)-Q(1,1)^2)^2+(1-Q(1,1))^2; Az első sor tartalmazza azt, hogy ez egy funkció fájl és az E a kimeneti érték, azaz a megoldás. Emellett a nevét a fájlnak ET és a bemeneti értéket, azaz a Q vektort, amely tartalmazza egy változat változóit. 20
22 A második sor az egyenletet foglalja magába. Az egyenletet viszont nem mindegy, hogy írjuk le. Az eredménynek mindig elől kell állnia és E a neve. A változókat is speciálisan kell megadni, a változó neve mindig Q(1,X), ahol az X a változószáma. Legyen két változónk: A és B. Az alábbi képletet akarjuk optimalizálni: Az A változót vesszük az 1 -es változónak ezért innentől Q(1,1) jelölést használunk helyette és így a B változó a 2 -es változó, aminek a jelölése Q(1,2). Így a képletet az alábbi módon kell átírni, hogy a program tudja futtatni: E=(Q(1,1)*Q(1,2)-Q(1,1)^2)^2+sqrt((1-Q(1,1))*Q(1,2)) Ezeket a szabályokat és a megfelelő MATLAB parancsokat felhasználva szinte bármilyen nehézségű egyenletet képes optimalizálni a program, ha jól van megadva. 21
23 V.3. A függvény optimalizáló program használata IV.3.1. Egyszerű 5 változós tesztfüggvény Elsőnek egy viszonylag egyszerű függvénnyel próbálkoztam. Ez a függvény öt darab változót tartalmaz, de csak egy globális minimum pontja létezik: Ennek a képletnek a minimum optimális megoldása az található. értékeknél A program futtatásának alapparaméterei: kiindulási érték: iterációs szám: 3000 HMCR: 0,8 PAR: 0,2 bw: 0,3 változók száma: 5 harmónia memória mérete: 40 22
24 A program a futtatás után az alábbi adatokat és ábrát adta ki: 4. ábra: 5 változós tesztfüggvény Forrás: saját Az ábrán található sok színből a piros reprezentálja a legjobb változat eredményét, és a többi szín a legjobb változat változóinak az értékét. Amint látszik, az értékek szépen konvergálnak az optimum ponthoz, azaz a 0 értékhez. A piros téglalapban található két eredményvektort a futtatás után kaptuk meg. Az atlagok vektor a futtatás után a Harmónia Memória mátrix (H) és a Megoldásvektor (F) átlagértékeit mutatja. A minek vektor a H mátrix és az F vektor legjobb eredményeit foglalja magába. Mindkét vektornál a 6 számból az első a megoldás a maradék a változók értékei sorba rezve. Ebből is látható, hogy a program legalább 4 tizedes pontossággal meg tudta határozni az optimális helyet az adott feltételek mellett. 23
25 V.3.2. Goldstein és Price 1. függvény A második tesztet a Goldstein és Price 1. függvényen végeztem. Ez a függvény nagyon mozgalmas, ahogy azt a 3D-s ábrán is látni lehet. Egy 6 6 egységnyi területen akár 10 6 nagyságrű eltérések is lehetnek a magassági értékekben. A függvényben 2 változó szerepel, de összesen 4 minimum ponttal relkezik, amelyeket a kontúr ábrán fekete keresztekkel jelöltem. A Goldstein és Price 1. függvény: A globális minimumpontja az pont felé egy M -et írtam. pontban található. A kontúr ábrán e felé a Emellett még található három minimumpont: 24
26 5. ábra: A Goldstein és Price függvény kontúr képe Forrás: saját 6. ábra: A Goldstein és Price függvény 3D-s képe Forrás: saját 25
27 Megoldás (log(f)) Miskolci Egyetem A futtatás alapparaméterei: kiindulási érték: iterációs szám: 3000 HMCR: 0,8 PAR: 0,15 bw: 0,25 változók száma: 2 harmónia memória mérete: 30 A futtatás eredményei: 10 Minimumpont keresés Iteráció szám (log(n)) 7. ábra: A Goldstein és Price függvény optimumának keresése Forrás: saját A fenti ábrából is jól látható, hogy az optimum pontot már kb. 10 3,2, azaz 1600 lépés után megtalálta a legjobb értéket (piros pontok) és az átlagértéket (kék pontok) is. 26
28 A program az alábbi eredményeket írta ki: Valtozok = Megoldas = Ebből is látszik, hogy az algoritmus 3000 lépés alatt 10-7 futtatásnál. pontosságot ért el ennél a V.3.3. Rosenbrock függvény A harmadik tesztet a Rosenbrock függvénnyel végeztem, amely egy globális minimumponttal relkező kétváltozós függvény: Tudjuk, hogy ennek a függvénynek a globális minimuma az pontban található, amelyet a kontúrábrán fekete kereszttel jelöltem. Mivel ennek a függvénynek az alapja egy negyedfokú függvény, ezért már nagyon kis értékeknél is kiemelkedően magas megoldás tartozhat hozzá. Amint az a 3D-s ábrán is látszik egy 4 4 egységnyi területen a legnagyobb és legkisebb érték közötti különbség több mint
29 8. ábra: A Rosenbrock függvény 3D-s képe Forrás: saját 9. ábra: A Rosenbrock függvény kontúr képe Forrás: saját 28
30 Ez a teszt két alapbeállítást is vizsgál: 1. Mi történik akkor, ha nem jól állítjuk be a kezdő értékeket (az optimum pont (1,1) nem esik a kezdőértékek ( ) közé) 2. Milyen megoldást ad két különböző iterációs érték (jelenleg és értékekkel futtattam le a programot) A futtatás alapparaméterei: kiindulási érték: iterációs szám: és HMCR: 0,85 PAR: 0,2 bw: 0,2 változók száma: 2 harmónia memória mérete: 40 A futtatás eredményei: 1. tesztfuttatás es iterációs számmal: A program által kiírt eredmények: Valtozok = Megoldas = e-05 29
31 Megoldás (log(f)) Miskolci Egyetem 6 Minimumpont keresés Iteráció szám (log(n)) 10. ábra: A Rosenbrock függvény optimumának keresése 1000-es iteráció számnál Forrás: saját 2. tesztfuttatás es iterációs számmal: A program által kiírt eredmények: Valtozok = Megoldas = e-19 30
32 Megoldás (log(f)) Miskolci Egyetem 10 Minimumpont keresés Iteráció szám (log(n)) 11. ábra: A Rosenbrock függvény optimumának keresése es iteráció számnál Forrás: saját Amint az a fenti két ábrán is megfigyelhető, hogy az első futtatás es iterációs lépésig jutott, amely alatt a változókat csak es, a megoldást pedig es pontossággal határozta meg. Ennek a futtatásnak az időtartama kb. 30 másodperc volt. A második futtatás annyiban tért el az előzőtől, hogy ott tízszer nagyobb iterációs számot adtam meg, azaz et. Ez a futtatás bár sokkal több ideig tartott, (kb. 4 perc) az eredményei is sokkal jobbak lettek. A változókat es, míg a megoldást es pontossággal tudta meghatározni. Ezekből a futtatásokból is látszik, hogy megfelelő beállításokkal a program és a HS módszer is alkalmazható optimalizálási feladatokra. 31
33 V.4. A HSH program Ez a program ugyanazokkal az alapokkal és algoritmusokkal működik, mint a függvényoptimalizáló program, csak itt kiinduló értékek helyett, határértékeket állítunk be. Minden egyes változóra meg tudunk adni egy olyan tartományt, amelyből a változó értéke nem léphet ki, ezáltal nem a globális optimum pontot fogja keresni a program, hanem egy helyi, lokális optimumot. A határértékeket a program a futtatás legelején kéri és két vízszintes vektor formájában kell megadni neki. Az alsó határérték vektor (I) tartalmazza azokat az értékeket, amelynél kisebb értéket a változó nem vehet fel. A felső határérték vektor (J) pedig azokat az értékeket tartalmazza, amelynél nagyobb értéket nem vehet fel a változó. A többi paramétert ugyanúgy kell a programnak megadni, mint a HSM esetében egy kivétellel, a változók számát a program automatikusan határozza meg, a két határérték vektor hosszából. Az optimalizálási algoritmusok leírása csak annyiban változott, hogy belekerültek olyan szabályzó elemek, amelyek nem engedik a változókat kilépni az előre definiált tartományukból. A tesztfüggvény alapját szintén a Goldstein és Price 1. függvény fogja adni, viszont jelen esetben leredukáljuk a keresési tartományt úgy, hogy a globális optimum pont X(0,-1) ne essen bele. A változóknak a keresési tartományát az alábbi határértékekkel határoztam meg: Ezt a keresési tartományt az alábbi ábrán be is jelöltem egy piros téglalappal. Amint látszik a területre két lokális minimumpont is esik: 32
34 Ezek közül az első pont az optimális megoldása a feladatnak, amely fölé a kontúrképen M -et írtam. 12. ábra: A Goldstein és Price függvény kontúrképe határértéken belüli optimalizálásnál Forrás: saját Az alábbi alapadatokkal indítottam a programomat: Alsó határérték: [1 2] Felső határérték [0 1] iterációs szám: HMCR: 0,8 PAR: 0,2 bw: 0,3 változók száma: 2 harmónia memória mérete: 40 33
35 Megoldás (log(f)) Miskolci Egyetem A futtatás eredménye: 3 Minimumpont keresés Iteráció szám (log(n)) 13. ábra: A Goldstein és Price függvény határétékes optimumkeresés menete Forrás: saját A program által kiírt eredmények: Valtozok = Megoldas = Az ábrából és a futtatás eredményeiből is látszik, hogy egy viszonylag kis iteráció számnál is nagyfokú pontosságot lehet elérni. Az változókat 10-8, a megoldást pedig pontossággal határozta meg a program. 34
36 VI. Hátizsák probléma Ez probléma már régen foglalkoztatja a matematikusokat. A kérdés az, hogy ha van egy hátizsákunk és rengeteg apróságunk, van-e módszer annak eldöntésére, hogy melyeket válasszunk ki úgy, hogy a hátizsák minél jobban megteljen és minél többet érjen a számunkra a benne lévő tárgyak összessége. Első olvasáskor is érezhető, hogy ha hatalmas hátizsák van birtokunkban és rengeteg kisebb nagyobb aprósággal akarjuk telezsúfolni, akkor a próbálgatós módszer elég sok ideig fog tartani. A próbálgatások biztos módszerét követve 2 n lehetőséget végig próbálva biztosan eredményre jutunk, ahol n a hátizsákba helyező tárgyaink száma. Ez 10 elemnél nem is tart túl sokáig, hiszen csak 1024 próbálkozásra van szükségünk. Ellenben, ha már néhány száz elemet kell végig próbálni, akkor már egy meglehetősen bonyolult problémának számit. [4] 14. ábra: Hátizsák probléma Forrás: Adott egy V térfogatú hátizsák, valamint n darab tárgy, melyek térfogata rre. A csomagok közül szeretnénk néhányat kiválasztani úgy, hogy a lehető legjobban kitöltsék a hátizsákot, de össztérfogatuk ne haladja meg a hátizsák befogadóképességét. Azaz keressünk egy olyan vektort (X), amely reprezentálja, hogy az adott tárgy bekerül-e a hátizsákba vagy sem. Exponenciálisan növekvő időigényével a próbálkozások módszere csak nagyon kis elemszám esetén alkalmazandó. Ezek helyett inkább más módszereket, algoritmusokat alkalmaznak, amiknek az időigénye jóval kisebb, viszont az eredmény nem annyira biztos, mint a próbálgatások módszerénél. 35
37 VI.1. A hátizsák probléma megoldása Egy egyszerű 10 elemes hátizsákproblémán fogom bemutatni a programom működését. Az alábbi adatokkal indulunk: Tudjuk, hogy a hátizsák 34 egység férőhellyel relkezik. Tíz elemünk van, amiből úgy szeretnénk elhelyezni benne a lehető legtöbbet, hogy a legjobb összértéket kapjuk. Elem Helyigény (H) Érték (E) E/H , , , , , , , , , ,17 Sum táblázat: Hátizsák tesztfeladat alapadatai Forrás: saját Az Érték/Helyigény (E/H), a Sum (H) és a Sum (E) már számolt adat, a program futtatásához ezeket nem kell megadni. Az egyik legegyszerűbb megoldási módszer: Az E/H szerint csökkenő sorrbe rakjuk az értékeket, majd fentről lefelé a helyigényt és az értéket összeadjuk. Ahol a helyigény túllépi a hátizsák férőhelyét, azt már nem helyezzük el benne, csak az előtte állókat. Jelenleg a helyigény a 6. elemnél már túllépi a megengedettet, ezért a hátizsákba csak az első 5 elem fér. Ezek név szerint a 2, 3, 6, 7, 9 -es elemek, melyek összesen 348 értékkel és 30 helyigénnyel relkeznek. 36
38 Sorr Helyigény (H) Érték (E) E/H Sum(H) Sum (E) , , , , , , , , , , Sum táblázat: Hátizsák tesztfeladat egyszerű megoldása Forrás: saját Ez az eljárás képes az optimális elhelyezést megadni, de csak abban az esetben, ha felhasználja az összes relkezésre álló szabad helyet. Jelenleg azonban a tárgyak csak 30 egységnyi helyet foglalnak el a 34 férőhelyből. Ezáltal előfordulhat, hogy létezik ennél jobb megoldás is. Mivel ez egy általam kitalált feladat, amit úgy alkottam meg, hogy ne lehessen optimálisan megoldani az egyszerűbb módszerrel, ezért az alábbi megoldás az optimális: Sorr Helyigény (H) Érték (E) E/H Sum(H) Sum (E) , , , , , , , , , , Sum táblázat: Hátizsák tesztfeladat optimális megoldása Forrás: saját 37
39 Ha a 2-es számú elemet eltávolítjuk a helyéről és berakjuk utolsónak, megváltozik a sorr, és a hátrébb lévők eggyel előrébb kerülnek. Így már 6 elem fér be a hátizsákba, amik a következőek: 3, 5, 6, 7, 9, 10. Ebben az esetben az elemek teljesen kitöltik a hátizsák térfogatát és az összérték is nagyobb lett, pontosan 379. Ha jól működik a program, akkor az imént kapott eredményt fogjuk megkapni a futtatás után is. VI.2. A hátizsák probléma megoldása a MATLAB programmal: A program a futtatás elején négy adatot kér: értékvektort (A), helyigény vektort (C), szabad helyek számát (B), iteráció számot (i). A két vektort és a szabad helyek számát már az előző módszerben definiáltuk, most mindössze az a dolgunk, hogy az értékeket két négyszögletű zárójel közé legalább egy szóközzel és elválasztó írásjelek használata nélkül megadni a programnak. Az iteráció számot saját magunknak kell megadni, az alapján, hogy mennyi elemmel dolgozunk. Jelen esetben ilyen kis elemszámnál elég az 2000-es iterációs érték is. Amint lentebb látjuk, a program megadta a darabszámnál, hogy melyik elemet helyezzük el a hátizsákban, ezt 1 -es számmal jelöli, és melyiket hagyjuk ki, ezt 0 -val mutatja. A helyfoglalas mátrixban az elemek egyenkénti helyigényét láthatjuk, amelyek bekerültek a hátizsákba. Az ertek mátrix pedig ezeknek az elemeknek az értékét adja meg külön-külön. Az osszes_helyfoglalas összeadta a helyfoglalás mátrix második sorát és itt látható, hogy jelenleg a 34 szabad helyből mindet ki tudta tölteni, azaz valószínűleg ez az optimális elhelyezés. 38
40 Az ossz_ertek összeadta az ertek mátrix második sorát és meghatározta a teli hátizsák teljes értékét. Az alábbi eredményeket produkálta a program: Amint látható, valóban létezik jobb megoldás, viszont az eltérés nem nagymértékű. Körül belül 9% az egyszerű módszer és a program által készített megoldás között. Minél nagyobb az elemszám, annál kisebb az eltérés. 10%-nál nagyobb eltérés a fentebb bemutatott egyszerű módszerrel is csak nagyon kicsi elemszámnál, vagy az elemek közötti nagy tulajdonságbeli eltérésnél tud adódni. Az alábbi ábrán a kék pontok a variációk közül az aktuális legjobb értéket, a piros pontok pedig a variációk átlag értékét mutatják. Az ábráról leolvasható, hogy már 600-as iterációs számnál megtalálta az optimális megoldást a program, 1200-nál pedig az összes variáció megerősíti ezt. 39
41 Megoldás (F) Miskolci Egyetem 400 Hátizsák feladat Iteráció szám (n) 15. ábra: Hátizsák probléma optimalizálása Forrás: saját VI.3. A HZF program leírása sorok alapján: A HZF.m fájl tartalmazza a hátizsák optimalizáló programot 1 8. sor: Adatok bevitelére szolgál. Itt kell megadni a következő értékeket: - elemek értéke (A), - elemek helyigénye (C), - férőhely (B), - iteráció szám (i), - HMCR megadása (HMCR), - változatok megadása (yek). 40
42 9 19.sor: A program véletlenszerűen generál yek mennyiségű változatot, amit egy Q mátrixba ment le, majd minden változatra kiszámolja az összértéket és az összes helyigényt sor A program ellenőrzi, hogy az egyes változatok összes helyigényei kevesebbek-e, mint a maximális kapacitás (B). Ha több helyet foglalnak, mint amennyi adott, akkor a változat összes változóját 0 -val helyettesítjük sor: Az optimalizálási folyamat itt történik, a megadott iterációszámnak megfelelő lépésben. Először megkeressük a legkisebb összértékű változatot, ha több ugyanolyan értékű van, akkor a sorban a legelsőt és megjelöljük a helyét (y). Ez után eldöntjük, hogy melyik optimalizáló algoritmust használjuk ebben a lépésben. A döntést végző arányszámot (HMCR) a program elején állítottuk be sor: Ha a random szám, amit a program a 33. sorban meghatározott, kisebb, mint a HMCR érték, akkor a Másoló algoritmus fog ebben a lépésben optimalizálni. Ha azt szeretnénk, hogy ez az algoritmus végezzen több munkát, adjunk a HMCR -nek nagyobb értéket. Ebben a részben a program a már meglévő változatok változóiból rak össze egy új változatot, majd megvizsgálja azt, hogy jobb összértéket mutat-e, mint az, amelyiket ki akarja cserélni, és hogy a helyigénye kevesebb-e, mint a szabad helyek száma. Ha mindkettő teljesül, akkor a program kicseréli a kiválasztott változatot az újra, ha valamelyik vagy egyik sem teljesül, akkor pedig változatlanul hagy mindent sor Ha a HMCR értéke kisebb, mint a 33. sorban a random szám, akkor egy teljesen új változatot generál a program, amelyet utána le is tesztel az előző algoritmusnál leírt módon, és ha megfelelőnek tartja, az új változatot kicseréli a már kiválasztottal. 41
43 67 69.sor A program minden lépés után a legjobb értéket kék pontként, az átlagértéket pedig piros pontként jeleníti meg a diagramon sor A kapott eredmények megfelelő kiírása a feladata ennek a résznek. 42
44 VII. Az utazóügynök probléma Az utazó ügynök problémája egy kombinatorikai optimalizálási feladat. A bonyolultságelmélet NPnehéz szinten kezeli ezt a feladatot. Ez annyit jelent, hogy a nem-determinisztikus polinomiális jellegű problémák közül a bonyolultak osztályába tartozik. Az utazó ügynök problémával matematika szinten először Sir William Rowan Hamilton és Thomas Penyngton Kirkman foglalkoztak a 19. század elején. Viszont a probléma első általános változatát csak az 1930-as évektől kezdtél el komolyabban vizsgálni. Olyan nagy egyetemeken is folytak kutatások erre a témára, mint a Harvardon, ahol a legjelentősebb eredményeket Karl Menger érte el vagy a Princetonon Hassler Whitney és Merrill M. Flood. [8] 16. ábra: Utazóügynök probléma eredete Forrás: Adott n számú város és az azokat összekötő utak valamilyen jellegzetes számszerűsíthető tulajdonsága, mint például a légvonalbeli távolságuk, szállítójárművel megtehető távolságuk vagy az utazás költsége. Az utazó ügynökünknek úgy kell az összes várost bejárnia, hogy egy várost csak egyszer érint és egy adott városból kell indulnia ahova az utazás végén visszatér. A feladatunk az, hogy meghatározzuk a fenti kritériumok alapján a legrövidebb vagy legolcsóbb útvonalat. Ha n darab városunk van, és minden városból el lehet jutni bármelyikbe, akkor könnyen belátható, hogy ezt egy gráfként ábrázolva egy teljes gráfot kapunk, aminek minden csúcsa össze van kötve minden más csúccsal. Hamilton körnek nevezzük azt a kört egy gráfban, amelyik egy csúcsból kiindulva és visszaérkezve az élek mentén érintkezik minden más ponttal, úgy hogy egyiken sem halad át kétszer. 43
45 Be van bizonyítva, hogy n csúccsal relkező teljes gráfban Hamilton kör fedezhető fel. Viszont mivel már tudjuk a kiindulópontot, ezért a lehetséges Hamilton körök száma az n -ed részére csökken, azaz Emiatt az utazóügynök feladatban is ennyi út lehetséges és ezek közül kell nekünk kiválasztani a lehető legjobbat. [8] Ezek alapján, ha van 13 városunk, mint amennyi a példafeladatban is szerepel, különböző úton lehetséges teljesen bejárni. Az utazóügynök probléma általános leírása [11]: 44
46 VII.1. Tesztfeladat az utazóügynök problémára: A MATLAB-ban készült programom teszteléséhez az alábbi tesztfeladatot használom, mert nagyon könnyen ellenőrizhető a megoldás. Az alább található pontok koordinátáik alapján egy körre illeszkednek, ilyenkor az ideális út könnyen belátható és kiszámítható, ugyanis jó közelítéssel megegyezik a kör kerületével plusz a centrum és hozzá legközelebb eső pont távolságával. Minimális eltérés azért tapasztalható, mert a pontok közötti távolságok nem körívek, hanem egyenesek. A városokat egy 50 egységnyi sugarú körre helyeztem, amelyből meghatározható a várható minimális út. A pontok neveit és koordinátáit az alábbi táblázat tartalmazza: Városok sorszáma X Y 1 (C) táblázat: Helyszínek koordinátái Forrás: saját 45
Konjugált gradiens módszer
Közelítő és szimbolikus számítások 12. gyakorlat Konjugált gradiens módszer Készítette: Gelle Kitti Csendes Tibor Vinkó Tamás Faragó István Horváth Róbert jegyzetei alapján 1 LINEÁRIS EGYENLETRENDSZEREK
RészletesebbenM-Fájlok létrehozása MATLAB-ban
M-Fájlok létrehozása MATLAB-ban 1 Mi az M-fájl Annak ellenére, hogy a MATLAB rendkívül kifinomult és fejlett számológépként használható, igazi nagysága mégis abban rejlik, hogy be tud olvasni és végrehajtani
RészletesebbenMegerősítéses tanulás 7. előadás
Megerősítéses tanulás 7. előadás 1 Ismétlés: TD becslés s t -ben stratégia szerint lépek! a t, r t, s t+1 TD becslés: tulajdonképpen ezt mintavételezzük: 2 Akcióértékelő függvény számolása TD-vel még mindig
RészletesebbenSzámítógép és programozás 2
Számítógép és programozás 2 6. Előadás Problémaosztályok http://digitus.itk.ppke.hu/~flugi/ Emlékeztető A specifikáció egy előfeltételből és utófeltételből álló leírása a feladatnak Léteznek olyan feladatok,
RészletesebbenMátrixjátékok tiszta nyeregponttal
1 Mátrixjátékok tiszta nyeregponttal 1. Példa. Két játékos Aladár és Bendegúz rendelkeznek egy-egy tetraéderrel, melyek lapjaira rendre az 1, 2, 3, 4 számokat írták. Egy megadott jelre egyszerre felmutatják
RészletesebbenSzámítógépes döntéstámogatás. Genetikus algoritmusok
BLSZM-10 p. 1/18 Számítógépes döntéstámogatás Genetikus algoritmusok Werner Ágnes Villamosmérnöki és Információs Rendszerek Tanszék e-mail: werner.agnes@virt.uni-pannon.hu BLSZM-10 p. 2/18 Bevezetés 1950-60-as
RészletesebbenHORVÁTH ZSÓFIA 1. Beadandó feladat (HOZSAAI.ELTE) ápr 7. 8-as csoport
10-es Keressünk egy egész számokat tartalmazó négyzetes mátrixban olyan oszlopot, ahol a főátló alatti elemek mind nullák! Megolda si terv: Specifika cio : A = (mat: Z n m,ind: N, l: L) Ef =(mat = mat`)
RészletesebbenSzimuláció RICHARD M. KARP és AVI WIGDERSON. (Készítette: Domoszlai László)
Szimuláció RICHARD M. KARP és AVI WIGDERSON A Fast Parallel Algorithm for the Maximal Independent Set Problem című cikke alapján (Készítette: Domoszlai László) 1. Bevezetés A következőkben megadott algoritmus
RészletesebbenOptimumkeresés számítógépen
C Optimumkeresés számítógépen Az optimumok megtalálása mind a gazdasági életben, mind az élet sok más területén nagy jelentőségű. A matematikában számos módszert dolgoztak ki erre a célra, például a függvények
Részletesebben11. Előadás. 11. előadás Bevezetés a lineáris programozásba
11. Előadás Gondolkodnivalók Sajátérték, Kvadratikus alak 1. Gondolkodnivaló Adjuk meg, hogy az alábbi A mátrixnak mely α értékekre lesz sajátértéke a 5. Ezen α-ák esetén határozzuk meg a 5 sajátértékhez
RészletesebbenTovábbi programozási esetek Hiperbolikus, kvadratikus, integer, bináris, többcélú programozás
További programozási esetek Hiperbolikus, kvadratikus, integer, bináris, többcélú programozás Készítette: Dr. Ábrahám István Hiperbolikus programozás Gazdasági problémák optimalizálásakor gyakori, hogy
RészletesebbenBranch-and-Bound. 1. Az egészértéketű programozás. a korlátozás és szétválasztás módszere Bevezető Definíció. 11.
11. gyakorlat Branch-and-Bound a korlátozás és szétválasztás módszere 1. Az egészértéketű programozás 1.1. Bevezető Bizonyos feladatok modellezése kapcsán előfordulhat olyan eset, hogy a megoldás során
RészletesebbenAlgoritmusok Tervezése. 6. Előadás Algoritmusok 101 Dr. Bécsi Tamás
Algoritmusok Tervezése 6. Előadás Algoritmusok 101 Dr. Bécsi Tamás Mi az algoritmus? Lépések sorozata egy feladat elvégzéséhez (legáltalánosabban) Informálisan algoritmusnak nevezünk bármilyen jól definiált
RészletesebbenLINEÁRIS PROGRAMOZÁSI FELADATOK MEGOLDÁSA SZIMPLEX MÓDSZERREL
LINEÁRIS PROGRAMOZÁSI FELADATOK MEGOLDÁSA SZIMPLEX MÓDSZERREL x 1-2x 2 6 -x 1-3x 3 = -7 x 1 - x 2-3x 3-2 3x 1-2x 2-2x 3 4 4x 1-2x 2 + x 3 max Alapfogalmak: feltételrendszer (narancs színnel jelölve), célfüggvény
RészletesebbenProgramozási segédlet
Programozási segédlet Programozási tételek Az alábbiakban leírtam néhány alap algoritmust, amit ismernie kell annak, aki programozásra adja a fejét. A lista korántsem teljes, ám ennyi elég kell legyen
RészletesebbenAlgoritmusok és adatszerkezetek 2.
Algoritmusok és adatszerkezetek 2. Varga Balázs gyakorlata alapján Készítette: Nagy Krisztián 1. gyakorlat Nyílt címzéses hash-elés A nyílt címzésű hash táblákban a láncolással ellentétben egy indexen
Részletesebben1. Alapok. #!/bin/bash
1. oldal 1.1. A programfájlok szerkezete 1. Alapok A bash programok tulajnképpen egyszerű szöveges fájlok, amelyeket bármely szövegszerkesztő programmal megírhatunk. Alapvetően ugyanazokat a at használhatjuk
RészletesebbenFeladatunk, hogy az alábbiakban látható tízgépes elrendezésre meghatározzuk az operátorok optimális kiosztását a vevői igények függvényében.
Kosztolányi János Operátorkiosztás tervezése Feladatunk, hogy az alábbiakban látható tízgépes elrendezésre meghatározzuk az operátorok optimális kiosztását a vevői igények függvényében. Első lépésként
RészletesebbenBASH script programozás II. Vezérlési szerkezetek
06 BASH script programozás II. Vezérlési szerkezetek Emlékeztető Jelölésbeli különbség van parancs végrehajtása és a parancs kimenetére való hivatkozás között PARANCS $(PARANCS) Jelölésbeli különbség van
RészletesebbenAlgoritmuselmélet. Legrövidebb utak, Bellmann-Ford, Dijkstra. Katona Gyula Y.
Algoritmuselmélet Legrövidebb utak, Bellmann-Ford, Dijkstra Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem 3. előadás Katona Gyula Y. (BME
RészletesebbenKeresés képi jellemzők alapján. Dr. Balázs Péter SZTE, Képfeldolgozás és Számítógépes Grafika Tanszék
Keresés képi jellemzők alapján Dr. Balázs Péter SZTE, Képfeldolgozás és Számítógépes Grafika Tanszék Lusta gépi tanulási algoritmusok Osztályozás: k=1: piros k=5: kék k-legközelebbi szomszéd (k=1,3,5,7)
RészletesebbenA MATLAB alapjai. Kezdő lépések. Változók. Aktuális mappa Parancs ablak. Előzmények. Részei. Atomerőművek üzemtana
A MATLAB alapjai Kezdő lépések - Matlab Promt: >> - Help: >> help sqrt >> doc sqrt - Kilépés: >> quit >> exit >> Futó script leállítása: >> ctrl+c - Változók listásása >> who >> whos - Változók törlése
RészletesebbenMŰSZAKKIOSZTÁSI PROBLÉMÁK A KÖZÖSSÉGI KÖZLEKEDÉSBEN
infokommunikációs technológiák MŰSZAKKIOSZTÁSI PROBLÉMÁK A KÖZÖSSÉGI KÖZLEKEDÉSBEN Készítette: Árgilán Viktor, Dr. Balogh János, Dr. Békési József, Dávid Balázs, Hajdu László, Dr. Galambos Gábor, Dr. Krész
RészletesebbenEuroOffice Optimalizáló (Solver)
1. oldal EuroOffice Optimalizáló (Solver) Az EuroOffice Optimalizáló egy OpenOffice.org bővítmény, ami gyors algoritmusokat kínál lineáris programozási és szállítási feladatok megoldására. Szimplex módszer
RészletesebbenSzámítógépes képelemzés 7. előadás. Dr. Balázs Péter SZTE, Képfeldolgozás és Számítógépes Grafika Tanszék
Számítógépes képelemzés 7. előadás Dr. Balázs Péter SZTE, Képfeldolgozás és Számítógépes Grafika Tanszék Momentumok Momentum-alapú jellemzők Tömegközéppont Irányultáság 1 2 tan 2 1 2,0 1,1 0, 2 Befoglaló
RészletesebbenKeresési algoritmusok, optimalizáció
Keresési algoritmusok, optimalizáció Az eddig tanultakból a mostani részben gyakran használt (emiatt szükséges az ismeretük) programozási ismeretek: függvények létrehozása, meghívása (ld. 3. óra anyagában)
RészletesebbenSapientia - Erdélyi Magyar TudományEgyetem (EMTE) Csíkszereda IRT- 4. kurzus. 3. Előadás: A mohó algoritmus
Csíkszereda IRT-. kurzus 3. Előadás: A mohó algoritmus 1 Csíkszereda IRT. kurzus Bevezetés Az eddig tanult algoritmus tipúsok nem alkalmazhatók: A valós problémák nem tiszta klasszikus problémák A problémák
RészletesebbenI. LABOR -Mesterséges neuron
I. LABOR -Mesterséges neuron A GYAKORLAT CÉLJA: A mesterséges neuron struktúrájának az ismertetése, neuronhálókkal kapcsolatos elemek, alapfogalmak bemutatása, aktivációs függvénytípusok szemléltetése,
Részletesebben1.1.1 Dátum és idő függvények
1.1.1 Dátum és idő függvények Azt már tudjuk, hogy két dátum különbsége az eltelt napok számát adja meg, köszönhetően a dátum tárolási módjának az Excel-ben. Azt is tudjuk a korábbiakból, hogy a MA() függvény
RészletesebbenIntelligens Rendszerek Elmélete IRE 4/32/1
Intelligens Rendszerek Elmélete 4 IRE 4/32/1 Problémamegoldás kereséssel http://nik.uni-obuda.hu/mobil IRE 4/32/2 Egyszerű lények intelligenciája? http://www.youtube.com/watch?v=tlo2n3ymcxw&nr=1 IRE 4/32/3
RészletesebbenAndó Mátyás Felületi érdesség matyi.misi.eu. Felületi érdesség. 1. ábra. Felületi érdességi jelek
1. Felületi érdesség használata Felületi érdesség A műszaki rajzokon a geometria méretek tűrése mellett a felületeket is jellemzik. A felületek jellemzésére leginkább a felületi érdességet használják.
Részletesebben8. Előadás. Megyesi László: Lineáris algebra, , oldal. 8. előadás Mátrix rangja, Homogén lineáris egyenletrendszer
8. Előadás Megyesi László: Lineáris algebra, 51. 56., 70. 74. oldal. Gondolkodnivalók Elemi bázistranszformáció 1. Gondolkodnivaló Most ne vegyük figyelembe, hogy az elemi bázistranszformáció során ez
Részletesebben26. MINIMÁLIS KÖLTSÉGŰ UTAK MINDEN CSÚCSPÁRRA
26. MINIMÁLIS KÖLTSÉGŰ UTAK MINDEN CSÚCSPÁRRA Az előző két fejezetben tárgyalt feladat általánosításaként a gráfban található összes csúcspárra szeretnénk meghatározni a legkisebb költségű utat. A probléma
RészletesebbenKözönséges differenciál egyenletek megoldása numerikus módszerekkel: egylépéses numerikus eljárások
Közönséges differenciál egyenletek megoldása numerikus módszerekkel: egylépéses numerikus eljárások Bevezetés Ebben a cikkben megmutatjuk, hogyan használhatóak a Mathematica egylépéses numerikus eljárásai,
RészletesebbenA PiFast program használata. Nagy Lajos
A PiFast program használata Nagy Lajos Tartalomjegyzék 1. Bevezetés 3 2. Bináris kimenet létrehozása. 3 2.1. Beépített konstans esete.............................. 3 2.2. Felhasználói konstans esete............................
RészletesebbenA számok kiíratásának formátuma
A számok kiíratásának formátuma Alapértelmezésben a Matlab négy tizedesjegy pontossággal írja ki az eredményeket, pl.» x=2/3 x = 0.6667 A format paranccsal átállíthatjuk a kiíratás formátumát. Ha több
RészletesebbenÁltalános algoritmustervezési módszerek
Általános algoritmustervezési módszerek Ebben a részben arra mutatunk példát, hogy miként használhatóak olyan általános algoritmustervezési módszerek mint a dinamikus programozás és a korlátozás és szétválasztás
RészletesebbenGauss-Seidel iteráció
Közelítő és szimbolikus számítások 5. gyakorlat Iterációs módszerek: Jacobi és Gauss-Seidel iteráció Készítette: Gelle Kitti Csendes Tibor Somogyi Viktor London András Deák Gábor jegyzetei alapján 1 ITERÁCIÓS
RészletesebbenDr. habil. Maróti György
infokommunikációs technológiák III.8. MÓDSZER KIDOLGOZÁSA ALGORITMUSOK ÁTÜLTETÉSÉRE KIS SZÁMÍTÁSI TELJESÍTMÉNYŰ ESZKÖZÖKBŐL ÁLLÓ NÉPES HETEROGÉN INFRASTRUKTÚRA Dr. habil. Maróti György maroti@dcs.uni-pannon.hu
RészletesebbenFirst Prev Next Last Go Back Full Screen Close Quit
Többváltozós függvények (2) First Prev Next Last Go Back Full Screen Close Quit 1. Egyváltozós függvények esetén a differenciálhatóságból következett a folytonosság. Fontos tudni, hogy abból, hogy egy
RészletesebbenMatematikai modellezés
Matematikai modellezés Bevezető A diasorozat a Döntési modellek című könyvhöz készült. Készítette: Dr. Ábrahám István Döntési folyamatok matematikai modellezése Az emberi tevékenységben meghatározó szerepe
RészletesebbenVállalati modellek. Előadásvázlat. dr. Kovács László
Vállalati modellek Előadásvázlat dr. Kovács László Vállalati modell fogalom értelmezés Strukturált szervezet gazdasági tevékenység elvégzésére, nyereség optimalizálási céllal Jellemzői: gazdasági egység
RészletesebbenMéretlánc átrendezés elmélete
1. Méretlánc átrendezés elmélete Méretlánc átrendezés elmélete Egyes esetekben szükség lehet, hogy arra, hogy a méretláncot átrendezzük. Ezeknek legtöbbször az az oka, hogy a rajzon feltüntetett méretet
RészletesebbenAlgoritmusok bonyolultsága
Algoritmusok bonyolultsága 5. előadás http://www.ms.sapientia.ro/~kasa/komplex.htm 1 / 27 Gazdaságos faváz Kruskal-algoritmus Joseph Kruskal (1928 2010) Legyen V = {v 1, v 2,..., v n }, E = {e 1, e 2,...,
RészletesebbenOrvosi készülékekben használható modern fejlesztési technológiák lehetőségeinek vizsgálata
Kutatási beszámoló a Pro Progressio Alapítvány számára Budapesti Műszaki és Gazdaságtudományi Egyetem Villamosmérnöki és Informatikai Kar Mérnök informatika szak Orvosi készülékekben használható modern
RészletesebbenMiskolci Egyetem Gépészmérnöki és Informatikai Kar Informatikai Intézet Alkalmazott Informatikai Intézeti Tanszék
Miskolci Egyetem Gépészmérnöki és Informatikai Kar Informatikai Intézet Alkalmazott Informatikai Intézeti Tanszék 2016/17 2. félév 8. Előadás Dr. Kulcsár Gyula egyetemi docens Kereső algoritmusok alkalmazása
RészletesebbenTáblázatok kezelése. 1. ábra Táblázat kezelése menüből
Táblázat beszúrása, létrehozása A táblázatok készítésének igénye már a korai szövegszerkesztőkben felmerült, de ezekben nem sok lehetőség állt rendelkezésre. A mai szövegszerkesztőket már kiegészítették
RészletesebbenTovábbi forgalomirányítási és szervezési játékok. 1. Nematomi forgalomirányítási játék
További forgalomirányítási és szervezési játékok 1. Nematomi forgalomirányítási játék A forgalomirányítási játékban adott egy hálózat, ami egy irányított G = (V, E) gráf. A gráfban megengedjük, hogy két
RészletesebbenKétfázisú szimplex algoritmus és speciális esetei
5. gyakorlat Kétfázisú szimplex algoritmus és speciális esetei. Emlékeztető Standard alak, áttérés Standard alak Minden feltétel et tartalmaz csak. A célfüggvényünket maximalizáljuk. A b vektor (jobb oldalon
RészletesebbenS Z Á L L Í T Á S I F E L A D A T
Döntéselmélet S Z Á L L Í T Á S I F E L A D A T Szállítási feladat meghatározása Speciális lineáris programozási feladat. Legyen adott m telephely, amelyeken bizonyos fajta, tetszés szerint osztható termékből
RészletesebbenMesterséges Intelligencia. Csató Lehel. Csató Lehel. Matematika-Informatika Tanszék Babeş Bolyai Tudományegyetem, Kolozsvár 2007/2008
Matematika-Informatika Tanszék Babeş Bolyai Tudományegyetem, Kolozsvár 007/008 Az Előadások Témái Bevezető: mi a mesterséges intelligencia... Tudás reprezentáció i stratégiák Szemantikus hálók / Keretrendszerek
Részletesebben15. LINEÁRIS EGYENLETRENDSZEREK
15 LINEÁRIS EGYENLETRENDSZEREK 151 Lineáris egyenletrendszer, Gauss elimináció 1 Definíció Lineáris egyenletrendszernek nevezzük az (1) a 11 x 1 + a 12 x 2 + + a 1n x n = b 1 a 21 x 1 + a 22 x 2 + + a
RészletesebbenFEGYVERNEKI SÁNDOR, Valószínűség-sZÁMÍTÁs És MATEMATIKAI
FEGYVERNEKI SÁNDOR, Valószínűség-sZÁMÍTÁs És MATEMATIKAI statisztika 10 X. SZIMULÁCIÓ 1. VÉLETLEN számok A véletlen számok fontos szerepet játszanak a véletlen helyzetek generálásában (pénzérme, dobókocka,
RészletesebbenOnline algoritmusok. Algoritmusok és bonyolultságuk. Horváth Bálint március 30. Horváth Bálint Online algoritmusok március 30.
Online algoritmusok Algoritmusok és bonyolultságuk Horváth Bálint 2018. március 30. Horváth Bálint Online algoritmusok 2018. március 30. 1 / 28 Motiváció Gyakran el fordul, hogy a bemenetet csak részenként
RészletesebbenSZÁMÍTÁSOK A TÁBLÁZATBAN
SZÁMÍTÁSOK A TÁBLÁZATBAN Az Excelben az egyszerű adatok bevitelén kívül számításokat is végezhetünk. Ezeket a cellákba beírt képletek segítségével oldjuk meg. A képlet: olyan egyenlet, amely a munkalapon
RészletesebbenKinek szól a könyv? A könyv témája A könyv felépítése Mire van szükség a könyv használatához? A könyvben használt jelölések. 1. Mi a programozás?
Bevezetés Kinek szól a könyv? A könyv témája A könyv felépítése Mire van szükség a könyv használatához? A könyvben használt jelölések Forráskód Hibajegyzék p2p.wrox.com xiii xiii xiv xiv xvi xvii xviii
Részletesebben1. Előadás Lineáris programozás
1. Előadás Lineáris programozás Salamon Júlia Előadás II. éves gazdaság informatikus hallgatók számára Operációkutatás Az operációkutatás az alkalmazott matematika az az ága, ami bizonyos folyamatok és
RészletesebbenRobotok inverz geometriája
Robotok inverz geometriája. A gyakorlat célja Inverz geometriai feladatot megvalósító függvények implementálása. A megvalósított függvénycsomag tesztelése egy kétszabadságfokú kar előírt végberendezés
RészletesebbenKövetelmények Motiváció Matematikai modellezés: példák A lineáris programozás alapfeladata 2017/ Szegedi Tudományegyetem Informatikai Intézet
Operációkutatás I. 2017/2018-2. Szegedi Tudományegyetem Informatikai Intézet Számítógépes Optimalizálás Tanszék 1. Előadás Követelmények, teljesítés feltételei Vizsga anyaga Előadásokhoz tartozó diasor
RészletesebbenKövetelmények Motiváció Matematikai modellezés: példák A lineáris programozás alapfeladata 2017/ Szegedi Tudományegyetem Informatikai Intézet
Operációkutatás I. 2017/2018-2. Szegedi Tudományegyetem Informatikai Intézet Számítógépes Optimalizálás Tanszék 1. Előadás Követelmények, teljesítés feltételei Vizsga anyaga Előadásokhoz tartozó diasor
RészletesebbenEllenőrző kérdések. 36. Ha t szintű indexet használunk, mennyi a keresési költség blokkműveletek számában mérve? (1 pont) log 2 (B(I (t) )) + t
Ellenőrző kérdések 2. Kis dolgozat kérdései 36. Ha t szintű indexet használunk, mennyi a keresési költség blokkműveletek számában mérve? (1 pont) log 2 (B(I (t) )) + t 37. Ha t szintű indexet használunk,
RészletesebbenMATLAB alapismeretek I.
Alkalmazott Informatikai Intézeti Tanszék MŰSZAKI INFORMATIKA Dr.Dudás László 0. MATLAB alapismeretek I. A MATLAB bemutatása MATLAB filozófia MATLAB modulok A MATLAB felhasználói felülete MATLAB tulajdonságok
RészletesebbenBoronkay György Műszaki Középiskola és Gimnázium
Boronkay György Műszaki Középiskola és Gimnázium 2600 Vác, Németh László u. 4-6. (: 27-317 - 077 (/fax: 27-315 - 093 WEB: http://boronkay.vac.hu e-mail: boronkay@vac.hu Levelező Matematika Szakkör 2014/2015.
Részletesebben12. előadás. Egyenletrendszerek, mátrixok. Dr. Szörényi Miklós, Dr. Kallós Gábor
12. előadás Egyenletrendszerek, mátrixok Dr. Szörényi Miklós, Dr. Kallós Gábor 2015 2016 1 Tartalom Matematikai alapok Vektorok és mátrixok megadása Tömbkonstansok Lineáris műveletek Mátrixok szorzása
RészletesebbenMathematica automatikusan dolgozik nagy pontossággal, például 3 a 100-dik hatványon egy szám 48 tizedes jeggyel:
Mathematica mint egy számológép Használhatja a Mathematica-t, mint egy közönséges számológépet, begépelve egy kifejezést, és a SHIFT + ENTER gombok egyidejű lenyomása után a Mathematica kiszámítja és megadja
RészletesebbenKOVÁCS BÉLA, MATEMATIKA II.
KOVÁCS BÉLA, MATEmATIkA II 3 III NUmERIkUS SOROk 1 Alapvető DEFInÍCIÓ ÉS TÉTELEk Végtelen sor Az (1) kifejezést végtelen sornak nevezzük Az számok a végtelen sor tagjai Az, sorozat az (1) végtelen sor
RészletesebbenFüggvények növekedési korlátainak jellemzése
17 Függvények növekedési korlátainak jellemzése A jellemzés jól bevált eszközei az Ω, O, Θ, o és ω jelölések. Mivel az igények általában nemnegatívak, ezért az alábbi meghatározásokban mindenütt feltesszük,
RészletesebbenTartalomjegyzék. Tartalomjegyzék... 3 Előszó... 9
... 3 Előszó... 9 I. Rész: Evolúciós számítások technikái, módszerei...11 1. Bevezetés... 13 1.1 Evolúciós számítások... 13 1.2 Evolúciós algoritmus alapfogalmak... 14 1.3 EC alkalmazásokról általában...
RészletesebbenMATEMATIKA ÉRETTSÉGI TÍPUSFELADATOK MEGOLDÁSAI KÖZÉP SZINT Függvények
MATEMATIKA ÉRETTSÉGI TÍPUSFELADATOK MEGOLDÁSAI KÖZÉP SZINT Függvények A szürkített hátterű feladatrészek nem tartoznak az érintett témakörhöz, azonban szolgálhatnak fontos információval az érintett feladatrészek
RészletesebbenSZÁLLÍTÁSI FELADAT KÖRUTAZÁSI MODELL WINDOWS QUANTITATIVE SUPPORT BUSINESS PROGRAMMAL (QSB) JEGYZET Ábragyűjtemény Dr. Réger Béla LÉPÉSRŐL - LÉPÉSRE
SZÁLLÍTÁSI FELADAT KÖRUTAZÁSI MODELL WINDOWS QUANTITATIVE SUPPORT BUSINESS PROGRAMMAL (QSB) JEGYZET Ábragyűjtemény Dr. Réger Béla LÉPÉSRŐL - LÉPÉSRE KÖRUTAZÁSI MODELL AVAGY AZ UTAZÓÜGYNÖK PROBLÉMÁJA Induló
RészletesebbenMegoldások a mintavizsga kérdések a VIMIAC04 tárgy ellenőrzési technikák részéhez kapcsolódóan (2017. május)
Megoldások a mintavizsga kérdések a VIMIAC04 tárgy ellenőrzési technikák részéhez kapcsolódóan (2017. május) Teszt kérdések 1. Melyik állítás igaz a folytonos integrációval (CI) kapcsolatban? a. Folytonos
RészletesebbenSCILAB programcsomag segítségével
Felhasználói függvények de niálása és függvények 3D ábrázolása SCILAB programcsomag segítségével 1. Felhasználói függvények de niálása A Scilab programcsomag rengeteg matematikai függvényt biztosít a számítások
RészletesebbenÁRAMKÖRÖK SZIMULÁCIÓJA
ÁRAMKÖRÖK SZIMULÁCIÓJA Az áramkörök szimulációja révén betekintést nyerünk azok működésébe. Meg tudjuk határozni az áramkörök válaszát különböző gerjesztésekre, különböző üzemmódokra. Végezhetők analóg
RészletesebbenFirst Prev Next Last Go Back Full Screen Close Quit. Matematika I
Matematika I (Analízis) Készítette: Horváth Gábor Kötelező irodalom: Ács László, Gáspár Csaba: Analízis 1 Oktatási segédanyagok és a tantárgyi követelményrendszer megtalálható a http://rs1.szif.hu/ horvathg/horvathg.html
RészletesebbenLáthatósági kérdések
Láthatósági kérdések Láthatósági algoritmusok Adott térbeli objektum és adott nézőpont esetén el kell döntenünk, hogy mi látható az adott alakzatból a nézőpontból, vagy irányából nézve. Az algoritmusok
RészletesebbenMesterséges Intelligencia MI
Mesterséges Intelligencia MI Problémamegoldás kereséssel - csak lokális információra alapozva Pataki Béla BME I.E. 414, 463-26-79 pataki@mit.bme.hu, http://www.mit.bme.hu/general/staff/pataki Lokálisan
RészletesebbenLakóház tervezés ADT 3.3-al. Segédlet
Lakóház tervezés ADT 3.3-al Segédlet A lakóház tervezési gyakorlathoz főleg a Tervezés és a Dokumentáció menüket fogjuk használni az AutoDesk Architectural Desktop programból. A program centiméterben dolgozik!!!
RészletesebbenRekurzió. Dr. Iványi Péter
Rekurzió Dr. Iványi Péter 1 Függvényhívás void f3(int a3) { printf( %d,a3); } void f2(int a2) { f3(a2); a2 = (a2+1); } void f1() { int a1 = 1; int b1; b1 = f2(a1); } 2 Függvényhívás void f3(int a3) { printf(
RészletesebbenKOVÁCS BÉLA, MATEMATIKA I.
KOVÁCS BÉLA MATEmATIkA I 6 VI KOmPLEX SZÁmOk 1 A komplex SZÁmOk HALmAZA A komplex számok olyan halmazt alkotnak amelyekben elvégezhető az összeadás és a szorzás azaz két komplex szám összege és szorzata
Részletesebbenopenbve járműkészítés Leírás az openbve-hez kapcsolódó extensions.cfg fájl elkészítéséhez
Leírás az openbve-hez kapcsolódó extensions.cfg fájl elkészítéséhez 1. oldal openbve járműkészítés Leírás az openbve-hez kapcsolódó extensions.cfg fájl elkészítéséhez A leírás az openbve-hez készített
RészletesebbenC programozási nyelv Pointerek, tömbök, pointer aritmetika
C programozási nyelv Pointerek, tömbök, pointer aritmetika Dr. Schuster György 2011. június 16. C programozási nyelv Pointerek, tömbök, pointer aritmetika 2011. június 16. 1 / 15 Pointerek (mutatók) Pointerek
RészletesebbenBevezető. Mi is az a GeoGebra? Tények
Bevezető Mi is az a GeoGebra? dinamikus matematikai szoftver könnyen használható csomagolásban az oktatás minden szintjén alkalmazható tanításhoz és tanuláshoz egyaránt egyesíti az interaktív geometriát,
RészletesebbenOPERÁCIÓKUTATÁS, AZ ELFELEDETT TUDOMÁNY A LOGISZTIKÁBAN (A LOGISZTIKAI CÉL ELÉRÉSÉNEK ÉRDEKÉBEN)
OPERÁCIÓKUTATÁS, AZ ELFELEDETT TUDOMÁNY A LOGISZTIKÁBAN (A LOGISZTIKAI CÉL ELÉRÉSÉNEK ÉRDEKÉBEN) Fábos Róbert 1 Alapvető elvárás a logisztika területeinek szereplői (termelő, szolgáltató, megrendelő, stb.)
RészletesebbenNormák, kondíciószám
Normák, kondíciószám A fizika numerikus módszerei I. mf1n1a06- mf1n2a06 Csabai István Lineáris egyenletrendszerek Nagyon sok probléma közvetlenül lineáris egyenletrendszer megoldásával kezelhetı Sok numerikus
RészletesebbenFüggvények Megoldások
Függvények Megoldások ) Az ábrán egy ; intervallumon értelmezett függvény grafikonja látható. Válassza ki a felsoroltakból a függvény hozzárendelési szabályát! a) x x b) x x + c) x ( x + ) b) Az x függvény
RészletesebbenFelvételi tematika INFORMATIKA
Felvételi tematika INFORMATIKA 2016 FEJEZETEK 1. Természetes számok feldolgozása számjegyenként. 2. Számsorozatok feldolgozása elemenként. Egydimenziós tömbök. 3. Mátrixok feldolgozása elemenként/soronként/oszloponként.
RészletesebbenSzinkronizmusból való kiesés elleni védelmi funkció
Budapest, 2011. december Szinkronizmusból való kiesés elleni védelmi funkció Szinkronizmusból való kiesés elleni védelmi funkciót főleg szinkron generátorokhoz alkalmaznak. Ha a generátor kiesik a szinkronizmusból,
RészletesebbenA Markowitz modell: kvadratikus programozás
A Markowitz modell: kvadratikus programozás Losonczi László Debreceni Egyetem, Közgazdaság- és Gazdaságtudományi Kar Debrecen, 2011/12 tanév, II. félév Losonczi László (DE) A Markowitz modell 2011/12 tanév,
Részletesebbenangolul: greedy algorithms, románul: algoritmi greedy
Mohó algoritmusok angolul: greedy algorithms, románul: algoritmi greedy 1. feladat. Gazdaságos telefonhálózat építése Bizonyos városok között lehet direkt telefonkapcsolatot kiépíteni, pl. x és y város
RészletesebbenMio Technology Limited www.mio-tech.be C510, C710. Gyors használati utasítás a Mio Map v3 programhoz. Magyar
Mio Technology Limited www.mio-tech.be C510, C710 Gyors használati utasítás a Mio Map v3 programhoz Magyar 2 A Fő menü Amikor a Mio Map elindul, a fő menü jelenik meg. Innen lehet elérni a Mio Map minden
Részletesebben19. AZ ÖSSZEHASONLÍTÁSOS RENDEZÉSEK MŰVELETIGÉNYÉNEK ALSÓ KORLÁTJAI
19. AZ ÖSSZEHASONLÍTÁSOS RENDEZÉSEK MŰVELETIGÉNYÉNEK ALSÓ KORLÁTJAI Ebben a fejezetben aszimptotikus (nagyságrendi) alsó korlátot adunk az összehasonlításokat használó rendező eljárások lépésszámára. Pontosabban,
RészletesebbenC++ programozási nyelv
C++ programozási nyelv Gyakorlat - 13. hét Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet Soós Sándor 2004. december A C++ programozási nyelv Soós Sándor 1/10 Tartalomjegyzék Objektumok
RészletesebbenSZOFTVERES SZEMLÉLTETÉS A MESTERSÉGES INTELLIGENCIA OKTATÁSÁBAN _ Jeszenszky Péter Debreceni Egyetem, Informatikai Kar jeszenszky.peter@inf.unideb.
SZOFTVERES SZEMLÉLTETÉS A MESTERSÉGES INTELLIGENCIA OKTATÁSÁBAN _ Jeszenszky Péter Debreceni Egyetem, Informatikai Kar jeszenszky.peter@inf.unideb.hu Mesterséges intelligencia oktatás a DE Informatikai
RészletesebbenAlgoritmuselmélet. Bonyolultságelmélet. Katona Gyula Y.
Algoritmuselmélet Bonyolultságelmélet Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem 12. előadás Katona Gyula Y. (BME SZIT) Algoritmuselmélet
RészletesebbenA lineáris programozás alapjai
A lineáris programozás alapjai A konvex analízis alapjai: konvexitás, konvex kombináció, hipersíkok, félterek, extrém pontok, Poliéderek, a Minkowski-Weyl tétel (a poliéderek reprezentációs tétele) Lineáris
RészletesebbenNavigáci. stervezés. Algoritmusok és alkalmazásaik. Osváth Róbert Sorbán Sámuel
Navigáci ció és s mozgástervez stervezés Algoritmusok és alkalmazásaik Osváth Róbert Sorbán Sámuel Feladat Adottak: pálya (C), játékos, játékos ismerethalmaza, kezdőpont, célpont. Pálya szerkezete: akadályokkal
RészletesebbenBetBulls Opciós Portfolió Manager
BetBulls Opciós Portfolió Manager Ennek a modulnak a célja, hogy ügyfeleinknek lehetőséget biztosítson virtuális számlanyitásra és részvény, valamint opciós pozíciók vásárlására, eladására a naponta frissülő,
RészletesebbenGibbs-jelenség viselkedésének vizsgálata egyszer négyszögjel esetén
Matematikai modellek, I. kisprojekt Gibbs-jelenség viselkedésének vizsgálata egyszer négyszögjel esetén Unger amás István B.Sc. szakos matematikus hallgató ungert@maxwell.sze.hu, http://maxwell.sze.hu/~ungert
RészletesebbenBevezetés a programozásba. 5. Előadás: Tömbök
Bevezetés a programozásba 5. Előadás: Tömbök ISMÉTLÉS Specifikáció Előfeltétel: milyen körülmények között követelünk helyes működést Utófeltétel: mit várunk a kimenettől, mi az összefüggés a kimenet és
RészletesebbenGenetikus algoritmusok
Genetikus algoritmusok Zsolnai Károly - BME CS zsolnai@cs.bme.hu Keresőalgoritmusok osztályai Véletlent használó algoritmusok Keresőalgoritmusok Kimerítő algoritmusok Dinamikus programozás BFS DFS Tabu
Részletesebben