Szolnoki Tudományos Közlemények XIV. Szolnok, 2010.
Oláh Béla1
FLOW-SHOP TERMELÉSÜTEMEZÉSI FELADATOKAT MEGOLDÓ GENETIKUS ALGORITMUS ÉRZÉKENYSÉGVIZSGÁLATA Jelen tudományos munka célkitűzése a szerző által már korábban elkészített és publikált permutáció flow-shop termelésütemezési feladatokat megoldó genetikus algoritmus (GA) paraméter-érzékenységvizsgálata. A dolgozat az algoritmus által használt különböző genetikus operátorok (klónozás, keresztezés és mutáció operátor) egymáshoz viszonyított arányainak vizsgálatára terjed ki, valamint a populáció méretének és az iteráció számának módosítása által adott eredmények összehasonlítására a megoldások optimum-közeli hatékonyságának függvényében, illetve különböző paraméter-érzékenységvizsgálatok elvégzésére, mint a kiválasztási stratégiák módosítása által adott gépi holtidő értékek összehasonlítására. A szerző megvizsgálja, hogy a paraméterek adott értékénél hogyan változik a program teljesítménye, értékeli a kapott eredményeket és összefüggéseket keres, melyek segítségével a genetikus algoritmus hatékony alkalmazása lehetséges. A kutatás gyakorlati jelentőségű eredménye annak kiderítése lesz, hogy a különböző méretű feladatoknál milyen beállításokban érdemes az egyes genetikus paramétereket használni, továbbá hogy milyen arányban érdemes az egyes genetikus operátorokat használni, a minél hamarabbi és minél inkább optimum-közeli megoldások szolgáltatása végett. SENSITIVITY ANALYSIS OF A GENETIC ALGORITHM FOR THE FLOW-SHOP SCHEDULING PROBLEMS The main goal of this scientific work is the sensitivity analysis of the author’s own genetic algorithm (GA) for the permutation flow-shop scheduling problems. This paper covers the analysis of the proportion of the different genetic operators (cloning, crossover and mutation operator) used by the algorithm and the comparison of the results given by choosing of the different selection strategies as well as by modification of the population size and the iteration number in function of the efficiency of the near optimal solutions. The author analyzes how the efficiency of the algorithm changes by some values of the genetic parameters, evaluates the obtained results and searches for relations that help to apply the GA more effectively and efficiently. The practical importance of the research results is to determine in what setting the genetic parameters have to be used in order to supply near optimal solutions to problems of different sizes at the fastest possible time.
1
Szolnoki Főiskola Műszaki és Gépészeti Tanszék, főiskolai tanársegéd,
[email protected] A cikket lektorálta: Prof. Dr. Pokorádi László, Debreceni Egyetem egyetemi tanár, műszaki tudomány kandidátusa
gép
A FLOW-SHOP ÜTEMEZÉSI PROBLÉMA MEGFOGALMAZÁSA
A
B
C
D
állás idők p1
p2
p1
p3
p4
p2
p3
p1
p2
p1
p5
holtidők p4
p5
p3
p4
p2
p3
p5
p4
p5
átfutási idő
idő
1. ábra. A permutáció flow-shop ütemezés Gantt-diagramja
Adott n számú termék, amelyeken m számú különböző munkafolyamatot kell elvégezni. A technológiai útvonal, ami az összes termékre nézve azonos, valamint a műveleti idők előre adottak. Meg kell határozni a termékeknek azt a sorrendjét a gépeken, amely bizonyos előre megadott szempontok szerint optimális. Ilyen a gyakorlatban is használt logisztikai célfüggvények a következők lehetnek (1. ábra): minimális átfutási idő; technológiai berendezések maximális kihasználása (holtidők minimálása); minimális gyártásközi készletek (termékek állásidejének minimálása).
A GENETIKUS ALGORITMUS ISMERTETÉSE A genetikus algoritmusok fogalmát először Holland [Holland 1975] vezette be. A genetikus algoritmusok tervezése során az evolúciót tekinthetjük mintaképnek. Kezdetben nem optimálisan megírt, vagy paraméterezett programok keresztezések során a természetes kiválasztódás elve alapján fejlődnek, és a tapasztalat szerint közelítenek egy jó megoldáshoz. Nagyon jól alkalmazhatók bizonyos optimalizálási problémákhoz. A genetikus algoritmus [Michalewicz 1996] lényege, hogy rendelkezik a lehetséges megoldások egy populációjával, a populáción értelmezett a kiválasztási folyamat – amely az egyedek alkalmasságán alapul – és értelmezett néhány genetikus operátor (2. ábra). Definiáljuk a következőket: egyed: a termékek sorszámát tartalmazza, tehát egy teljes sorrendet; populáció: az egyedek összessége; fitnesz (alkalmasság): egy egyed jóságát számszerűen ábrázoló adat; klónozás: a régi populáció nagyobb alkalmassággal rendelkező egyedeinek az új populációba történő másolása; keresztezés: két (szülő) egyed genetikus anyagának egy részét kicseréli, ezáltal hozva létre új egyedeket; mutáció: apró véletlenszerű változások az egyed genetikus anyagában.
4
Induló populáció generálása
Kiértékelő függvény
További optimalizálás
nem
Legjobb egyed
igen
eredmény
Start Kiválasztás
Új populáció generálása Klónozás
Mutáció
Keresztezés
2. ábra. A genetikus algoritmus folyamatábrája [Pohlheim 2009]
Az induló populáció készítése esetünkben a lehetséges megoldások véletlenszerűen kiválasztott halmazát jelenti. A szelekció nem az egyedeken, hanem a populációkon működik. A legismertebb, és a szerző által is használt fajtái: véletlen (random selection) kiválasztás: a legegyszerűbb, ámde a legkevésbé hatékony szelekció. Gyakorlatilag az aktuális populációból véletlenszerűen választ szülőket. Legnagyobb hátránya, hogy nem veszi figyelembe azt a darwini alapelvet, miszerint a rátermettebb egyedek nagyobb eséllyel érvényesülnek az egyedlétrehozásban; rulett-kerék (roulette wheel selection) kiválasztás: az egyik legrégebbi, és leginkább használt szelekciós operátor. Egy egyed kiválasztásának valószínűsége annál magasabb, minél nagyobb a rátermettsége a populáción belül (rátermettség-arányos szelekció). A rulett-kerék kiválasztás úgy működik, mintha az egyedeket egy rulett-kerék cikkelyeihez rendelnénk, ahol a cikkelyek nagysága a fitnesz értékkel arányos. Ahol a „golyó” megáll a pörgetés után, az az egyed kiválasztásra kerül; legjobb egyed (best selection) kiválasztás: fitnesz érték alapján sorbarendezzük az egyedeket, és az első k darabot választjuk ki. A genetikus algoritmus is – mint oly sok más a tudományban – a természettől kölcsönzött ötlet alapján működik [Goldberg 1989]. Az életben évmilliók során kialakulnak azok az egyedek, amelyek legjobban alkalmazkodtak az élőhelyükhöz, amelyek fennmaradása biztosított. Ezek az egyedek genetikus állományukat – és ezzel jó tulajdonságaikat – továbbadják utódaiknak, biztosítva ezzel a populáció fennmaradását. Néha mutációk – véletlenszerű változások – adódnak a genetikus állományban. Az új egyedekben új tulajdonságok jelennek meg, amelyek vagy jobbak az eredetinél – és így az egyedek életben maradnak, tovább örökítve jó tulajdonságaikat –, vagy rosszabbak, s így elpusztulnak. Jelen tanulmány készítője ezt a folyamatot próbálta átírni számítógépre a termelésütemezési problémák megoldására.
5
A SZÁMÍTÓGÉPES PROGRAM BEMUTATÁSA A 3. ábra a program – ami Borland Delphi 5-tel [Benkő 2000; Cantu 2000] íródott – felhasználói felületét mutatja. A dialógusablakban a konstans jellegű paraméterek találhatók. Első lépésben beállítjuk a megmunkálni kívánt termékek, valamint a megmunkáló berendezések mennyiségét. Ezután a genetikus algoritmushoz szükséges alapadatokat állíthatjuk be tetszés szerint (populáció mérete, iterációk száma, a keresztezés, a mutáció és a klónozás aránya, kiválasztási stratégia). Az optimalizáló célfüggvényt a megfelelő választógomb bekapcsolásával választhatjuk ki. Ezután a program beállítja az időmátrix fejléceit a megadott gépek és termékek számának megfelelően. A felhasználó három különböző feltöltés közül választhat, úgymint gépi feltöltés, kézi adatbevitel és a Fájl/Betöltés menüponttal fájlból való betöltés is lehetséges. A programban a Módszerek menüpontból nyíló legördülő menüből választhatjuk ki, hogy a probléma megoldására alkalmas algoritmusok közül melyikkel óhajtjuk megoldani a feladatot. Természetesen így össze lehet hasonlítani a különböző módszerek hatékonyságát a kapott eredmények függvényében, melyet a dolgozat készítője korábbi tudományos munkássága alatt, már megtett [Oláh 2005].
3. ábra. A program felhasználói felülete
A genetikus algoritmus esetében egy kromoszóma a termékek tetszőleges sorrendjét jelenti, ez lesz az adatok helyes reprezentációja. A kiválasztódást alapbeállításban egyszerű fitnesz szerinti rendezéssel oldjuk meg, és a magasabb fitnesszel rendelkező egyedeket választjuk ki, de lehetőség van véletlenszerű, illetve a rulett-kerék szisztémának megfelelő kiválasztásra is. A GA megírása során két keresztező eljárást alkalmazott a szerző egyenlő arányban, úgymint 6
a Cycle-Crossover (CX) [Oliver et al. 1987] és az Order-Crossover (OX) [Davis 1985], valamint négy mutáció operátort (reciprocal exchange, simple inversion, swap és displacement) használt fel szintén egyenlő arányban. Kiértékeléskor a maximális út megkeresésére alkalmas Bellmann-Pontrjagin-féle optimalizálási elvre [Tóth 1990] épülő a szerző által kidolgozott algoritmusba [Oláh 2009] történik a behelyettesítés.
4. ábra. A genetikus algoritmus futási eredménye
Genetikus algoritmus segítségével megoldva egy feladatot az iteráció előrehaladtával a grafikonon nagyon szépen nyomon követhető a legjobb egyed célfüggvény szerinti értéke valamint a populáció átlagértéke is (4/a. ábra). A legjobb egyed piros színnel (alsó görbe), míg az átlagérték kékkel (felső görbe) szerepel a grafikonon a jobb követhetőség érdekében. Mivel előfordulhat, hogy egy szülőt alacsonyabb fitnesz-értékű utód vált fel, így a populáció átlagértéke emelkedhet is. Ezzel szemben a legjobb egyed fitnesz-értéke monoton csökkenő függvénnyel ábrázolható. Az információs ablakban (4/b. ábra) az algoritmus futása közben folyamatosan kiírásra kerül az iterációk száma, valamint a legjobb egyedhez tartozó átfutási-, holt- és állásidők egyaránt. Az iterációk befejeztével megjelenik a legjobb egyedhez tartozó sorrend is. Az iteratív működés következtében több időre van szükségünk egy optimálishoz közeli megoldás eléréséhez, mint más heurisztikus esetben, viszont lényegesen jobb eredmény érhető el. A generációk számának növekedésével a legjobb egyed átlagos fitnesz-értéke egyre jobban megközelíti az optimális értéket, amely a vizsgált paramétertérben egy többé-kevésbé erős konvergenciát mutat. A feladat fitnesz-értékeit ábrázoló grafikonon megfigyelhető, hogy a GA végül olyan állapotba jutott, amelyben mind a legjobb individuum alkalmasság-értéke, mind pedig a populáció átlagos fitnesz-értéke a kezdeti rohamos javulás után beállt. A programban lehetőség van a genetikus algoritmussal történő optimalizálás leállítására a leállít gomb megnyomásával. Ilyenkor a program megerősítést kér a felhasználótól az optimalizálás megszakítására. Az igen elfogadása után az információs ablakba kiíródnak az addig előállított legjobb egyed adatai. A nem gombon kattintva a közelítés tovább folytatódik a kívánt iterációig, vagy egy újabb leállításig.
ÉRZÉKENYSÉGVIZSGÁLATOK A tanulmány készítőjének korábbi vizsgálatai során [Oláh 2005], amikor is az egyes termelésütemezési feladatokat megoldó módszerek hatékonyságát hasonlította össze, a genetikus
7
algoritmus paraméterei alapbeállításon szerepeltek a futtatások alatt. Már akkor is felvetődött a kérdés, vajon hogyan módosul a GA hatékonysága az egyes beállított értékeinek megváltoztatása által. Ezen dolgozat ennek megválaszolását tűzte ki célul. A kiválasztási stratégiák vizsgálata az iteráció-szám függvényében Ahogy az egy-egy futtatás alatt – a program által kirajzolva – is látható az iterációk növekedésével a legjobb egyed monoton csökkenő értékeket vesz fel, tehát fejlődik. Természetesen egyazon (esetünkben 20 gépes, 25 termékes) permutáció flow-shop termelésütemezési feladatra többször elvégezve a vizsgálatot hasonló görbét kell kapnunk. Az 5. ábrán feltüntetett iteráció-számok mindegyikére 30-szor lefuttatott genetikus algoritmus által szolgáltatott célfüggvény (jelen esetben holtidő) értékek átlagai a populáció méretének (150) változatlanul hagyása mellett 4%-os klónozást, 16%-os mutációt és 80%-os keresztezést használva a három különböző szelekciós operátor esetén a következőképpen alakultak. A grafikon alsó görbéje már egy másik publikációban [Oláh 2010] is bemutatásra került, és már akkor felmerült, vajon hogyan módosulnak a kapott eredmények a különböző kiválasztási stratégiák alkalmazásával. Ezen az ábrán a program által kezelt mindhárom kiválasztási szisztémára (best, random, rulett) lefuttatott eredmények kerültek ábrázolásra, ezzel is szemléltetve, hogyan változnak a holtidő-értékek, ha nemcsak a legjobb egyedeket választjuk ki szülőknek, hanem a rulett-kerék szelekciót, vagy a random kiválasztási stratégiát alkalmazzuk éppen. 4550 4450 holtidő
4350 random 4250 4150 rulett
best
4050 3950 0
100
200
300
400
500
600
700
800
900
1000
iterációszám
5. ábra. Holtidő-értékek az iteráció-szám függvényében különböző kiválasztási stratégiák esetén
Az ábrán látható koordináta rendszer vízszintes tengelyén az iterációk száma (0-1000-ig) van feltüntetve, míg a függőleges tengelyen a gépi holtidő értékek szerepelnek. A görbék hiperbolikus jellege jól kivehető, ami abból adódik, hogy a kezdeti lépések során rohamos javulás figyelhető meg (különösen igaz ez a best szelekció esetére), majd a generációk számának növekedésével a legjobb individuum átlagos fitnesz-értéke egyre jobban megközelíti az optimumot és ebből kifolyólag már egyre lassabb a javulás mértéke. Egyértelműen megállapítható, hogy a véletlen kiválasztás adja a leggyengébb eredményeket – ahogy az várható is volt –, míg a rulett-kerék szelekció közel 1%-kal mindig jobb megoldásokat szolgáltat ugyanannyi iterációt követően.
8
Az is kijelenthető, hogy a best kiválasztódás eredményezi a legjobb megoldásokat a leggyorsabban. A legjobb egyedek reprodukciója által 100 iteráció után már átlagosan 9,2% a javulás az induló iteráció utáni eredményekhez képest, míg ugyanezen érték alig (mindössze 12,25%-ra) emelkedett a következő 900 lépés során. A rulett-kerék kiválasztási mechanizmus alkalmazásával a GA által adott megoldások átlaga, több mint 5,5%-ot csökkent a 100. populáció után a kezdeti lépésekhez képest, míg a random szelekció esetén alig öt százalék ugyanezen érték. Ugyanakkor ezer iteráció után már mindkét esetben 10% körüli javulásokat kapunk. Valószínű, hogy kellő számú lépés után a két gyengébb kiválasztás is hasonló eredményeket produkálna, mint a best, csak azoknak az időbeni lefolyása sokkal tovább tartana, amit nem biztos, hogy egy optimalizálás során ki tudunk várni. A populációméretre vonatkozó vizsgálatok Felmerül azonban a kérdés, vajon mi a helyzet, ha nem az iterációk számát, hanem a populáció méretét változtatjuk. Akkor is ez a tendencia figyelhető meg a célfüggvény értékének kirajzoltatásakor? Következő vizsgálat ennek a kérdésnek a megválaszolására szolgál. Ugyanarra a 25 termékes feladatra elvégezve a vizsgálatot 30 futtatás utáni holtidő értékek átlagai a populáció méretének függvényében az iteráció-szám (150) változatlanul hagyása mellett a korábbi beállításokat megtartva, csak a legjobb kiválasztási stratégiát használva hasonló jellegű görbét adtak. A 6. ábra vízszintes tengelyén az alkalmazott populáció mérete (5-1500-ig), míg a függőlegesen továbbra is a gépi holtidő-érték van feltüntetve. 4325 4275
holtidő
4225 4175 4125 4075 4025 3975 0
250
500
750
1000
1250
1500
populáció-méret
6. ábra. A genetikus algoritmus által szolgáltatott holtidő-értékek a populációméret függvényében
A görbe – előzőhöz hasonló – hiperbolikus jellege a vízszintes tengely arányos skálázásának következtében most is szépen megmutatkozik. Jól látszik, hogy a generációk számának növekedésével ez esetben is egyre lassabb a csökkenés mértéke (a 100 egyedes populáció alkalmazása közel 4,3%-ot javít az 5 egyedszámú halmaz eredményeihez képes, míg az 1000es már 7,4%-ot). Tehát igazolódni látszik az az elmélet is, hogy minél nagyobb populációt alkalmazunk azonos iteráció-szám mellett, annál jobb célfüggvény érték érhető el. Persze gyorsan meg kell jegyezni, hogy ennek komoly ára van, hiszen minél nagyobb a populáció mérete, annál lassabb is lesz a program futása. Tehát nem biztos, hogy ugyanakkora futásidő (műveletszám) mellett egy kisebb populáció és ezzel arányosan nagyobb lépésszám alkalma-
9
zásával nem érnénk el jobb eredményt. A következő vizsgálódás épp ennek a kiderítésére hivatott. Azonos futásidőre vonatkozó vizsgálatok a feladat méretének függvényében Továbbra is ugyanazon feladatra a GA által 30 futtatás után szolgáltatott holtidő-értékek átlagai a populáció méretének függvényében ugyanakkora futásidő alatt a 7. ábrán látható módon alakulnak. 4350 4300 4250 4200 4150 4100 4050 1500
1000
750
500
375
250
150
100
75
50
7. ábra. Holtidő-értékek a populációméret függvényében azonos futásidő és 25 termék esetén
Az azonos műveletszám úgy érhető el, hogy az alkalmazott populáció mérete és az iteráció (lépésszám) szorzata állandó (esetünkben 15.000), azaz ugyanannyi individuum lesz a teljes vizsgálatba bevonva. Tehát míg 1500 terméksorrendet tartalmazó populáció esetén mindössze 10 iteráció után, 250-es populációméretnél 60 lépés után, addig 50 egyednél 300 generáció után állítjuk le a program futását. A diagramban a koordináta rendszer vízszintes tengelyén az alkalmazott populáció mérete csökkenő sorrendben (1500-50-ig) adott, míg a függőleges tengelyen továbbra is a gépi holtidő értékek vannak nyilvántartva. Nagyon jól látszik az ábrán, igazolván a szerző sejtését, hogy azonos futásidő alatt nem feltétlen a nagy populáció-méret jelenti a jó megoldást. Sőt a populáció méretének 150-ig történő csökkenésével folyamatosan javulnak a holtidő-értékek, és ezután is csak csekély mértékű növekedés következik be (az 50 egyedet tartalmazó populáció mindössze 0,56%-kal eredményez rosszabb megoldásokat a 150-eshez képest). A minimum ugyan 150 populációnál (és ezáltal 100 iteráció után) adódik, de ez a vizsgált értékek nem folytonos mivoltát figyelembevéve nem feltétlenül ott is van, hiszen az optimum 100 és 250 között bárhol lehet. Erre további vizsgálatok szükségesek, amit a későbbiekben el is végez a szerző, de ez a dolgozat inkább csak a sejtés igazolására szolgál. Az azonban már most is kijelenthető, hogy inkább a kisebb nagyságú populációkat érdemes preferálni az optimumközeli megoldások hatékony megtalálása végett. Azt, hogy más méretű feladatok esetén mekkora populációnagyságot érdemes alkalmazni, további vizsgálatok szükségesek. A következőkben más termékszámú (kisebb és nagyobb) feladatokra is lefuttatjuk a programot, hogy azok során hol ígérkezik a legkisebb célfüggvényérték. Kevesebb termék ütemezése esetén kisebb, míg nagyobb feladatoknál nagyobb populációméret várható optimumnak.
10
Lássuk először egy továbbra is 20 gépes, de már csak 10 termékes permutáció flow-shop termelésütemezési feladatra a genetikus algoritmus által 30 futtatás után szolgáltatott holtidőértékek átlagait a populáció nagyságának függvényében 15.000 egyed kiértékelése esetén az eddig is alkalmazott beállításokat használva (8. ábra). 3530 3525 3520 3515 3510 3505 3500 3495 3490 3485 3480 1500
1000
750
500
375
250
150
100
75
50
8. ábra. Holtidő-értékek a populációméret függvényében azonos futásidő és 10 termék esetén
A grafikonon szépen kirajzolódik az optimum helye, ahol ugyanakkora műveletszám mellett a legjobb eredményt szolgáltatja a program. Meglepetésünkre viszont nem a kisebb populációméretek irányába tolódott el a célfüggvény-érték minimuma – ahogy azt várni lehetett volna –, hanem épp az ellenkező irányba. Ahogy az az ábráról is leolvasható 10 termékes feladatoknál a 250 egyedszámú populáció nagyság a legkedvezőbb, de gyakorlatilag 150 és 375 közötti egyedszám esetén is viszonylag elfogadható holtidő értékeket kapunk, ugyanakkor az előző példával ellentétben az 50 individuumot tartalmazó halmaz esetén már jelentős eltérés mutatkozik. A meglepő eredmények birtokában kíváncsian várjuk, hogyan alakul az optimum, ha nem csökkentjük, hanem növeljük az ütemezni kívánt termékek számát és ezzel a keresési teret egyaránt. Most egy továbbra is 20 gépes, de már 50 termékes termelésütemezési feladatra vizsgáljuk az ábrán feltüntetett populációméretek mindegyikére 30-szor lefuttatott GA által szolgáltatott holtidő-értékek átlagait ugyanakkora futásidő alatt és az eddigiekkel megegyező feltételek mellett. Ezen a diagramon is egyértelműen megtalálható a keresett optimum. Az előző feladat kapcsán már nem váratlan, hogy most a kisebb populációméretek irányába tolódott el a célfüggvény-érték minimuma. A legkedvezőbb holtidő-értékek a 100 fős populáció esetén adódtak, amelyek pontosan 10,6%-kal jobbak, mint az 1500 egyedszám eredménye.
11
5600 5500 5400 5300 5200 5100 5000 4900 1500
1000
750
500
375
250
150
100
75
50
9. ábra. Holtidő-értékek a populációméret függvényében azonos futásidő és 50 termék esetén
Nézzünk következőnek egy még nagyobb, egészen pontosan 75 termékes feladatot, amelynél a genetikus algoritmus által szolgáltatott holtidő-értékek átlagai a populáció méretének függvényében a következőképpen alakultak. 6200 6050 5900 5750 5600 5450 5300 1500
1000
750
500
375
250
150
100
75
50
10. ábra. Holtidők a populációméret függvényében azonos futásidő és 75 termék esetén
Az alábbi diagramon is – az eddigiekhez hasonlóan – fellelhető a keresett minimum érték, ami most még inkább a kisebb populációnagyságok irányába tolódott el. A legkedvezőbb holtidő átlagértékek a 75 individuumot számláló populáció esetén adódtak (bár ehhez nagyon közeli értékeket szolgáltatott az algoritmus a 100 és az 50 egyedszámú populációknál is), amely eredmények több mint 12%-kal jobbak, mint az 1500-as populáció esetén. Végül egy továbbra is 20 gépes, de már 99 termékes feladatot teszünk vizsgálódásunk tárgyává, ahol a GA által adott gépi holtidő átlagok a 11. ábrán megjelenítettek szerint alakultak. A grafikont szemrevételezve megállapítható, hogy a korábbiaktól eltérően most nincs növekvő szakasza a görbének, az végig monoton csökkenő, így a legkisebb célfüggvény-érték a példánál az általunk vizsgált legkisebb (50) populációméretnél adódott, amely közel 13,8%kal jobb, mint az 1500-as populációk átlaga. Érdemes lenne elvégezni jelen 99 termékből álló ütemezési feladat vizsgálatát egy 50-nél kevesebb individuumot tartalmazó halmazra is, de sajnos a példák során használt klónozás-keresztezés-mutáció arányok ezt most nem teszik lehetővé.
12
7200 7000 6800 6600 6400 6200 6000 1500
1000
750
500
375
250
150
100
75
50
11. ábra. Holtidők a populációméret függvényében azonos futásidő és 99 termék esetén
Az előző diagramokon is látható a genetikus algoritmus által a best kiválasztási operátort alkalmazva, 4%-os klónozást, 16%-os mutációt és 80%-os keresztezést használva azonos műveletszámot feltételezve (az iteráció-szám és populációméret függvényében) különböző méretű feladatok (más-más termékszám) esetén szolgáltatott holtidő-értékeket táblázatos formában az 1. táblázat tartalmazza. best iteráció 10 15 20 30 40 60 100 150 200 300
4-16-80 populáció 1500 1000 750 500 375 250 150 100 75 50
job10 holtidő 3527 3510 3502 3497 3492 3488 3490 3496 3500 3505
job25 holtidő 4319 4282 4255 4215 4188 4154 4109 4122 4126 4132
job50 holtidő 5517 5440 5373 5286 5227 5144 5024 4932 5004 5083
job75 holtidő 6134 6086 5994 5862 5779 5619 5501 5411 5391 5413
job99 holtidő 7023 6988 6893 6707 6629 6450 6362 6265 6138 6056
1. táblázat Holtidő-értékek a populációméret, az iteráció- és a termékszám függvényében azonos futásidő alatt
Egyetlen diagramban (a vízszintes és a függőleges tengelyen továbbra is a populáció nagysága, valamint a holtidők, míg a harmadik dimenzióban az adott feladat termékszámai szerepelnek) ábrázolva az eddigi eredményeket (12. ábra), jól látható – piros vonallal be is jelöltük –, hogy a feladat méreteinek növekedésével nem az általunk várt növekedés, hanem éppen ellenkezőleg, csökkenés mutatkozik az optimális populációnagyságra, ugyanakkora futásidőt feltételezve.
13
12. ábra. Holtidő-értékek a populációméret és termékszám függvényében azonos műveletszám mellett
A genetikus operátorok arányára vonatkozó vizsgálatok Felvetődik egy másik kérdés is, vajon hogyan alakulnak a görbék, ha a fixnek vett 4%-os klónozást, 16%-os mutációt és 80%-os keresztezést módosítjuk. Következő vizsgálatunk a rekombinációs (keresztezés) műveletet teljes egészében kihagyja, és csak a kiválasztott legjobb individuumok klónozásával valamint mutációjával állítja elő a következő populációt. Miután már az előző fejezetben meghatároztuk az azonos egyedszámú vizsgálatnál legjobban alkalmazható populáció-méret és iteráció-szám viszonyokat, ezért most csak azokat használjuk. Ugyanazon 20 gépes, 25 termékes ütemezési feladatra a GA által 30 futtatás után szolgáltatott holtidő-értékek átlagai 100 egyedszámú populációt és a legjobb kiválasztási szisztémát tekintve, a klónozás és a mutáció arányának függvényében 150 iteráció után a következőképpen alakultak (13. ábra). A vízszintes tengelyen az alkalmazott klónozás aránya, míg a függőlegesen továbbra is a holtidők szerepelnek. Az ábrából jól kivehető, hogy a másolás arányának 30%-ig történő növelésével folyamatosan javulnak a holtidő-értékek, majd egy kezdeti lassú emelkedés után (50-60% fölött) viszont rohamos mértékű romlás következik be (a 95%-os klónozás már közel 8%-kal eredményez rosszabb megoldásokat az optimumhoz képest).
14
4400 4300 4200 4100 4000 3900 3800 1
2
4
5 10 15 20 25 30 33 40 50 60 75 80 85 90 95
13. ábra. A GA által szolgáltatott holtidő-értékek a klónozás-mutáció arányának függvényében
Megállapítható, hogy a genetikus algoritmus a klónozás operátor 10 és 60% közötti értéke esetén eredményezte a legkisebb holtidő értékeket keresztezést nem használva. A minimumot ugyan a 30%-os másolás (és ezáltal 70%-os mutáció) jelentette, de ez az általunk vizsgált arányok nem folytonos mivoltát figyelembevéve nem feltétlenül ott is van, hiszen az optimum 25 és 40% között bárhol lehet. Erre további vizsgálatok szükségesek, amit a későbbiekben a szerző el is végez, de ez a dolgozat inkább csak a jelleggörbe meghatározására szolgál. Kijelenthető azonban, hogy a kisebb arányú klónozást érdemes előnyben részesíteni az optimumközeli megoldások hatékony megtalálása végett. Természetesen érdemes elvégezni az alábbi vizsgálatokat a keresztező operátor és a klónozás viszonyaira is, hogy azok esetén hol ígérkezik a legkisebb célfüggvény-érték, tehát amikor csak a kiválasztott legjobb egyedek klónozása és keresztezése révén állítjuk elő a soronkövetkező populációt. Az eddig is vizsgált feladatra a program által szolgáltatott holtidő-értékek átlagai 100 individuumot tartalmazó populációt és a best kiválasztási stratégiát tekintve, a klónozás és a keresztezés arányának függvényében 150 generáció után a következőképp alakultak (14. ábra). 4500 4450 4400 4350 4300 4250 4200 4150 4100 1 2 4 5 10 15 20 25 30 33 40 50 60 67 75 80 85 90 95 96 98
14. ábra. Holtidő-értékek a klónozás-keresztezés arányának függvényében
A vízszintes tengelyen továbbra is az alkalmazott klónozás aránya (1-98%-ig), míg a függőleges tengelyen a holtidők szerepelnek. Az ábrán jól kivehető, hogy a másolás arányának 30%-ig történő növelésével folyamatosan csökkennek a holtidő-értékek, majd 85%-ig viszonylagos állandóság tapasztalható, ami után viszont – az előző ábrán is már látott – roha15
mos mértékű romlás következik be (a 98%-os klónozás már közel 6,5%-kal eredményez roszszabb megoldásokat a 85%-hoz képest). Megállapítható, hogy a genetikus algoritmus a klónozás operátor 25 és 85% közötti értéke esetén szolgáltatta a legkisebb célfüggvény-értékeket mutációt nem használva. A minimumot ugyan a 75%-os másolás (és ezáltal 25%-os keresztezés) jelentette, de ez nem feltétlenül pontos, hiszen az optimum 25 és 85% között bárhol lehet. Erre szintén további vizsgálatok szükségesek. Kijelenthető azonban, hogy az előzőekkel ellentétben most nem feltétlen a kisebb arányú klónozást érdemes preferálni az optimum-közeli megoldások hatékony megtalálása végett. Már most meghatározható, hogy a keresztezés és a mutáció arányát inkább az utóbbi javára érdemes növelni. Természetesen – még mielőtt bármit is kinyilvánítanánk – el kell végezni az alábbi vizsgálatokat a keresztező és a mutáció operátor egymáshoz viszonyított arányaira is egy fix klónozást feltételezve, hogy azok esetén hol ígérkezik a legjobb megoldás. Ugyanazon feladatra 30 futtatás után szolgáltatott holtidő-értékek átlagai a mutáció és a keresztezés arányának függvényében, tíz százalékos klónozást használva a következőképpen alakultak (15. ábra). 4125
4105
4085
4065
4045
4025 1
2
4
5 10 15 20 23 25 30 33 40 50 57 60 65 67 70 75 80 85 86 88 89
15. ábra. Holtidő-értékek a mutáció-keresztezés arányának függvényében 10%-os klónozásnál
A vízszintes tengelyen az alkalmazott mutáció aránya (1-89%-ig), míg a függőlegesen a holtidők szerepelnek. A hiányzó 0 érték az előző esetet szemlélteti 10%-os klónozást és 90%os keresztezést alkalmazva, míg a 90%-os mutáció az azt megelőző vizsgálat eredménye lenne 10%-os klónozásnál keresztezést nem használva. Az ábráról leolvasható, hogy a mutáció arányának 57%-ig történő növelésével folyamatosan javulnak az algoritmus által szolgáltatott célfüggvény-értékek (az 57%-os mutáció használata már négy százalékkal eredményez jobb megoldásokat a mutáció nélküli esethez képest), ezután viszont folyamatos, de csekély mértékű gyengülés következik be. A mutáció operátor 40 és 75% közötti értéke esetén eredményezte a program a legkisebb holtidő értékeket tíz százalékos másolást feltételezve. Nyilvánvalóan meg lehetne vizsgálni a 10%-tól eltérő klónozás esetén is a fenti grafikon alakulását, de az már most is kijelenthető, hogy a mutációt nagyobb arányban érdemes használni a keresztezés rovására az optimum-közeli megoldások gyors meglelése végett, ami egy kicsit természetellenesnek tűnhet. A dolgozat szerzőjének további célja összehasonlítani a program által kezelt négy különböző mutáció operátor, illetve két keresztező operátor egymáshoz viszonyított keresési jóságát a szolgáltatott eredmények függvényében.
16
FELHASZNÁLT IRODALOM [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12]
[13] [14]
BENKŐ T.: Programozzunk Delphi 5 rendszerben, Computerbooks, Budapest, 2000. CANTU M.: Delphi 5 Mesteri szinten, I.-II. kötet, Kiskapu Könyvesbolt, 2000. DAVIS L.: Job Shop Scheduling with Genetic Algorithms. International Conference on Genetic Algorithms and their Applications, Erlbaum, 1985. 136–140. o. GOLDBERG D. E.: Genetic Algorithms in Search, Optimization and Machine Learning, Addison-Wesley, 1989. HOLLAND J. H.: Adaptation in Natural and Artificial Systems: An Introductory Analysis with Applications to Biology Control, and Artificial Intelligence, The University of Michigan Press, 1975. MICHALEWICH Z.: Genetic Algorithms + Data Structures = Evolution Programs, Springer, 1996. OLÁH B.: A flow shop ütemezési probléma optimalizálására szolgáló algoritmusok összehasonlítása. OGÉT 2005 XIII. Nemzetközi Gépész Találkozó, Szatmárnémeti, 2005. 268–272. o. OLÁH B.: Genetikus algoritmus vs. megerősítéses tanulás, Szolnoki Tudományos Közlemények IX. 2005. OLÁH B.: Genetic algorithm vs. Reinforcement learning, Chapter 80 in DAAAM International Scientific Book 2009, Vol. 8, Published by DAAAM International, Vienna, Austria, 2009. 831–844. o. OLÁH B.: Genetikus algoritmus érzékenységvizsgálata, Műszaki Tudomány az Észak-Alföldi Régióban 2010, Nyíregyháza, 2010. 157–162. o. OLÁH B.: Genetikus algoritmus érzékenységvizsgálata a populáció méretének függvényében, ECONOMICA (A Szolnoki Főiskola Tudományos Közleményei), Szolnok, 2010. 4–10. o. OLIVER I. M.—SMITH D. J.—HOLLAND J. R. C.: A Study of Permutation Crossover Operators on the Traveling Salesman Problem. 2nd International Conference on Genetic Algorithms, Lawrence Erlbaum Associates, Hillsdale, New Jersey, 1987. 224–230. o. POHLHEIM H.: Evolutionary Algorithms, 2009. http://www.geatbx.com/docu/algindex.html TÓTH I.: Operációkutatás I., Tankönyvkiadó, Budapest, 1990.
17