• Nem Talált Eredményt

főiskolai tanársegéd Szolnoki Főiskola

Műszaki és Agrárgazdálkodási Intézet Műszaki és Gépészeti Tanszék 5000 Szolnok, Tiszaligeti sétány 14.

olahb@szolf.hu

Kivonat: Jelen tudományos munka célkitűzése egy általam már korábban elkészített és publikált permutáció flow-shop termelésütemezési feladatokat (FSSP) megoldó genetikus algoritmus (GA) keresztező operátorainak érzékenységvizsgálata. Dolgozatom az algoritmus által használt különböző keresztező operátorok, mint a Cycle-Crossover (CX) és az Order-Cycle-Crossover (OX) összehasonlítására terjed ki a megoldások optimum-közeli hatékonyságának függvényében. Megvizsgálom, hogy az egyes keresztező eljárások adott arányánál hogyan változik a program teljesítménye, értékelem a kapott eredményeket és összefüggéseket keresek, melyek segítségével a genetikus algoritmus hatékonyabb alkalmazása lehetséges. Témaválasztásom gyakorlati jelentőségű eredménye annak kiderítése lesz, hogy milyen arányban érdemes az egyes keresztező operátorokat használni, a minél hamarabbi és minél inkább optimum-közeli megoldások szolgáltatása végett.

Kulcsszavak: genetikus algoritmus, ütemezés, holtidő, keresztezés, klónozás

Abstract: The main goal of this scientific work is the sensitivity analysis of crossover operators of my own genetic algorithm (GA) for the permutation flow-shop scheduling problems (FSSP). This paper covers the comparison of the different crossover operators such as Cycle-Crossover (CX) and Order-Crossover (OX) used by the algorithm in function of the efficiency of the near optimal solutions. I analyze how the efficiency of the algorithm changes by some values of the crossover operators, I evaluate the obtained results and I search for relations that help to apply the GA more effectively and efficiently. The practical importance of my research results is to determine in what setting the crossover operators have to be used in order to supply near optimal solutions at the fastest possible time.

Keywords: genetic algorithm, scheduling, idle time, crossover, cloning

1. A FLOW-SHOP ÜTEMEZÉSI PROBLÉMA MEGFOGALMAZÁSA

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 (1. ábra).

Ilyen a gyakorlatban is használt logisztikai célfüggvények az alábbiak lehetnek:

- 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).

p1 p2 p3 p4 p5

p1 p2 p3 p4 p5

p1 p2 p3 p4 p5

p1 p2 p3 p4 p5

idő A

B

C

D

gép

átfutási idő

állás idők holtidők

1. ábra Egy permutáció flow-shop ütemezés Gantt-diagramja 2. A GENETIKUS ALGORITMUS ISMERTETÉSE

A genetikus algoritmusok fogalmát Holland [3] vezette be, tervezésük során az evolúciót tekinthetjük mintaképnek. Kezdetben nem optimálisan megírt, vagy paraméterezett programok a természetes kiválasztódás elve alapján fejlődnek, és közelítenek egy jó megoldáshoz. A genetikus algoritmus 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).

Induló populáció generálása

Start

Kiértékelő függvény

További

optimalizálás nem

igen

Legjobb egyed

eredmény Kiválasztás

Klónozás

Keresztezés Mutáció

Új populáció generálása

2. ábra A genetikus algoritmus folyamatábrája [12]

A GA is – mint oly sok más a tudományban – a természettől kölcsönzött ötlet alapján működik [2].

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. Ezt a folyamatot írtam át számítógépre a termelésütemezési problémák megoldására.

3. A SZÁMÍTÓGÉPES PROGRAM BEMUTATÁSA

A program felhasználói felületén a dialógusablakban a konstans jellegű paraméterek találhatók.

Először 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 első fejezetben is említett optimalizáló célfüggvényt a megfelelő választógomb bekapcsolásával választhatjuk ki. 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 akarjuk megoldani a feladatot. Így össze lehet hasonlítani a különböző módszerek hatékonyságát a kapott eredmények függvényében [7, 8].

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 oldom meg, és a magasabb fitnesszel rendelkező egyedeket választom ki, de lehetőség van véletlenszerű, illetve a rulett-kerék mechanizmusnak megfelelő kiválasztásra. A GA megírása során két keresztező eljárást alkalmaztam, úgymint a Cycle-Crossover (CX) [11] és az Order-Crossover (OX) [1]. A program során a reciprocal exchange, a simple inversion, a swap és a displacement mutációkat használtam fel. Kiértékeléskor a maximális út megkeresésére alkalmas általam kidolgozott algoritmusba [6] történik a behelyettesítés.

GA 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 (3/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 helyettesít, í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ó.

3. ábra A genetikus algoritmus futási eredménye

Az információs ablakban (3/b. ábra) az algoritmus futása közben folyamatosan kiírásra kerül az aktuális 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 így lényegesen jobb eredmény érhető el. 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 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 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.

3.1. Az alkalmazott keresztező operátorok Order-Crossover (OX) – Davis javaslata alapján [4]

Először meghatározásra kerül a keresztezési intervallum.

5 7 2 1 9 3 6 8 4 8 6 3 7 1 5 4 2 9 p1 :

p2 :

Az intervallumon belül a gyerekek a szülők pontjait kapják:

1 9 3 7 1 5 o1 :

o2 :

A következő lépésben a o1 (o2) elkészítéséhez p2 (p1) második vágási pontjától kezdve felsorolásra kerülnek a termékek (a vektor utolsó eleme után az első elem jön):

4 2 9 8 6 3 7 1 5 6 8 4 5 7 2 1 9 3

A pontok közül kiesnek azok a pontok, melyek már szerepelnek a gyerekekben.

8 4 2 9 3 6

8 6 7 5 4 2

Ezután a lista pontjai a helyükre kerülnek:

6 7 5 1 9 3 4 2 8 2 9 3 7 1 5 6 8 4 o1 :

o2 :

Cycle-Crossover (CX) – Oliver javaslata alapján [4]

5 7 2 1 9 3 6 8 4 8 6 3 7 1 5 4 2 9 p1 :

p2 :

Kiválasztásra kerül egy hely a p1 szülőben és az ott található kód átkerül az utódba. Legyen például ez a pozíció az 1.

5 o1 :

Ugrás az 1. helyen található p2 értékének megfelelő értékre a p1 szülőben. Itt ismét ugrás a p2

értékének megfelelő helyre, és ezt addig kell folytatni, amíg be nem záródik a kör. Az utódba p1 szülő a körbejárás során érintett értékei kerülnek.

5 2 3 8

o1 :

A hiányzó helyeken p2 szülő megfelelő értékei lesznek.

5 6 2 7 1 3 4 8 9 o1 :

Teljesen hasonlóan állíthatjuk elő a másik gyermeket:

8 7 3 1 9 5 6 2 4 o2 :

4. A KERESZTEZŐ OPERÁTOROK ÖSSZEHASONLÍTÁSA

Korábbi publikációimban [5, 7, 9, 10] már megvizsgáltam a termelésütemezési feladatokat megoldó különböző módszerek hatékonyságát, elvégeztem a genetikus algoritmus paraméter-érzékenységvizsgálatát, illetve összevetettem a szoftver által is kezelt mutáció operátorok eredményességét. Ezen dolgozatban a program által is használt két keresztező operátor összehasonlítását tűztem ki célul.

Vizsgálataimat természetesen ugyanazon (esetemben 20 gépes, 25 termékes) permutáció flow-shop termelésütemezési feladatra végzem el, melyek alatt a mutáció műveletet teljes egészében elhagyom, és csak a kiválasztott legjobb individuumok klónozásával valamint keresztezésével állítom elő a soronkövetkező populációt. Ezzel biztosítva, hogy az eredmények fejlődése csak a keresztezésnek legyen betudható, ami egyértelmű összehasonlítást tesz lehetővé. Első lépésben a keresztezés során a program által használt két keresztező operátort (Cycle-Crossover és Order-Crossover) fele-fele arányban alkalmazom. A 4. ábrán feltüntetett keresztezési arányok (a populáció 99, 98, 96, …, 2 %-a) mindegyikére a genetikus algoritmus által 30 futtatás után szolgáltatott célfüggvény (jelen esetben holtidő) értékek átlagai 100 egyedszámú populációt és a legjobb kiválasztási stratégiát alkalmazva 150 iteráció után a következőképpen alakulnak.

4100 4150 4200 4250 4300 4350 4400 4450 4500

99 98 96 95 90 85 80 75 70 67 60 50 40 33 25 20 15 10 5 4 2 keresztezés [%]

gépi holtidők

4. ábra A GA által szolgáltatott holtidő-értékek a keresztezés arányának függvényében

A koordináta rendszer vízszintes tengelyén a populációba keresztező eljárással generált utódok aránya van feltüntetve, míg a függőleges tengelyen a gépi holtidő értékek szerepelnek. A diagramon jól látható, hogy a keresztezés arányának 75%-ig történő csökkenésével folyamatosan javulnak a holtidő-értékek, majd egészen 15%-ig kvázi változatlannak mondható, ezután viszont rohamos mértékű emelkedés következik be (a 2%-os keresztezés már átlag 6,5%-kal rosszabb megoldásokat eredményez a 15%-oshoz képest). Megállapítható, hogy a genetikus algoritmus a keresztező operátor 75 és 15% közötti értéke esetén szolgáltatja a legkisebb célfüggvény-értékeket mutációt nem használva. A minimumot (4155) ugyan a 25%-os keresztezés (és ezáltal 75%-os klónozás) jelenti, de ez nem feltétlenül pontos, hiszen az optimum 75 és 15% között bárhol lehet. Erre további vizsgálatok szükségesek. Természetesen el kell végezni az alábbi vizsgálódást azon esetekre is, amikor a keresztezés során teljes egészében csak az egyik, vagy csak a másik keresztező operátort használjuk, hogy azok esetén hol ígérkezik az optimum, illetve melyik operátor produkál jobb eredményeket és mennyivel.

Az előbb is vizsgált feladatra a program által 30 futtatás szolgáltatott holtidő-értékek átlagai az előzőekkel teljesen megegyező beállítások mellett csak Cycle-Crossover (CX) keresztező operátort használva a következőképp alakulnak (5. ábra).

4100 4150 4200 4250 4300 4350 4400 4450 4500

99 98 96 95 90 85 80 75 70 67 60 50 40 33 25 20 15 10 5 4 2 keresztezés [%]

gépi holtidők

5. ábra A GA által szolgáltatott holtidő-értékek csak Cycle-Crossover használata esetén

Megállapítható, hogy jellegében az előzőhöz nagyon hasonló görbét kapunk. Kezdetben a keresztezési arány csökkenésével gyors javulás figyelhető meg, majd 85%-tól egészen 25%-ig a legjobb individuumok átlagos fitnesz-értéke már nem közelíti jobban az optimumot (a minimum 60%-nál adódik 4244 célfüggvény-értékkel), viszont a keresztezési arány 25% alá csökkenésével újra egyre gyengébb megoldásokat ad a program. Összességében kijelenthető, hogy a CX operátor átlag 2%-kal rosszabb eredményeket szolgáltat a mindkét szisztémát egyformán használó keresztezéshez képest.

Ebből a tényből arra lehet gondolni, hogy az Order-Crossover operátor hatékonyabb, mint a CX. Az utolsó elemzés ennek megerősítésére vagy cáfolatára hivatott.

Végül az eddig vizsgált ütemezési feladatra 30 futtatás szolgáltatott holtidő-értékek átlagai az előzőekkel egyező beállítások mellett csak Order-Crossover (OX) keresztező operátort használva a 6.

ábrán látható módon alakulnak. A vízszintes tengelyen továbbra is az alkalmazott keresztezés aránya (99-2%-ig), míg a függőlegesen a holtidők szerepelnek.

4100 4150 4200 4250 4300 4350 4400 4450 4500

99 98 96 95 90 85 80 75 70 67 60 50 40 33 25 20 15 10 5 4 2 keresztezés [%]

gépi holtidők

6. ábra A genetikus algoritmus által szolgáltatott holtidő-értékek csak Order-Crossover használatával A korábbiaktól eltérően már az elején (80%-ig) rohamos fejlődésnek lehetünk tanúi (a 80%-os keresztezés már átlag 4,6%-kal kedvezőbb megoldásokat eredményez a 99%-oshoz képest), majd (20%-ig) az átlagos alkalmasság-érték most is beállt, viszont a végén szerényebb növekedés tapasztalható, mint eddig. A legkisebb holtidő-értékeket (4280) ugyan a 67%-os keresztezés (és ezáltal

33%-os klónozás) jelenti, de a pontos arány 80 és 20% között most is bárhol lehet. Várakozásommal ellentétben azonban a grafikonon megjelenített adatokból az állapítható meg, hogy az OX keresztező operátor nem hogy jobb, mint a CX (és a vegyes) keresztezés, hanem még átlag 1,1 %-kal rosszabb eredményeket is szolgáltat. Ennek tükrében viszont meglepő, hogy amikor fele-fele arányban van alkalmazva a két operátor az átlagos fitnesz-érték jobban közelíti az optimális értéket, mint külön-külön bármelyiknél. Ebből következik, hogy egy adott feladatnál tehát érdemes a keresztező eljárások széles skáláját felhasználni, mert egy gyengébb sem húzza le a másikat, hanem együtt még jobb fejlődés érnek el.

5. ÖSSZEFOGLALÁS

A két keresztező operátort összehasonlítva összességében kijelenthető, hogy a flow-shop ütemezés esetében a jobb megoldást a Cycle-Crossover adja, a rosszabb közelítést pedig az OX produkálja, ami teljesen ellenkezője az utazó ügynök problémánál (TSP) megismert sorrendnek (Oliver mutatta ki, hogy az OX operátor 15%-kal hatékonyabb, mint a CX). Ez az eltérés azzal magyarázható, hogy a TSP-nél a szomszédsági információ számít, addig a FSSP-nél a sorrendi az érdekes. Ezért is van a termékek listájával ábrázolva az ütemezési problémánál a sorrend (sorrendi ábrázolás), ami a legtermészetesebb leírása egy egyednek, egyszerűen felsorolásra kerül a munkadarabok sorszáma a megmunkálás sorrendjében.

További célom összehasonlítani a program által kezelt négy különböző mutáció operátor egymáshoz viszonyított keresési jóságát a szolgáltatott eredmények függvényében.

6. FELHASZNÁLT IRODALOM

[1] DAVIS,L. Job Shop Scheduling with Genetic Algorithms. International Conference on Genetic Algorithms and their Applications, Erlbaum, 1985. p. 136–140.

[2] GOLDBERG,D.E., Genetic Algorithms in Search, Optimization and Machine Learning, Addison-Wesley, 1989.

[3] 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.

[4] MICHALEWICH,Z., Genetic Algorithms + Data Structures = Evolution Programs, Springer, 1996.

[5] 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. p.

268–272.

[6] 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. p.

831–844.

[7] 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. p. 157–162.

[8] 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. p. 4–10.

[9] OLÁH,B., Sensitivity analysis of a genetic algorithm in function of the population size. XXV.

microCAD International Scientific Conference, University of Miskolc, Miskolc, Hungary, 2011. p. 113–118.

[10] OLÁH,B., Flow-shop ütemezési feladatokat megoldó genetikus algoritmus mutáció

operátorainak érzékenységvizsgálata. Miskolci Egyetem Közleményei, 1. kötet (2011) 1. szám, Miskolci Egyetemi Kiadó, Miskolc, 2011. p. 95–102.

[11] OLIVER,I.M.,SMITH,D.J.,HOLLAND,J.R.C., A Study of Permutation Crossover Operators on the TSP. 2nd Int. Conference on Genetic Algorithms, L. Erlbaum Associates Inc., Hillsdale, 1987. p. 224–230.

[12] POHLHEIM,H., Evolutionary Algorithms, 2009., http://www.geatbx.com/docu/algindex.html

ELEKTROMECHANIKUS HAJTÁSLÁNC HIBÁINAK DETEKTÁLÁSA