ULTRAGYORS KINETIKAI ADATOK DEKONVOLÚCIÓJA EVOLÚCIÓS ALGORITMUSOKKAL Szakdolgozat Kémia Alapszak Dürvanger Zsolt Témavezeto : Dr. Keszei Erno ELTE TTK, Fizikai kémia tanszék Eötvös Loránd Tudományegyetem, Budapest Természettudományi kar Kémiai intézet A védés helye: Fizikai Kémia Tanszék 2013
Köszönetnyilvánítás Ezúton szeretnék köszönetet mondani mindazoknak, akik segítettek a dolgozat elkészítése során. Köszönöm témavezetőmnek, Dr. Keszei Ernőnek az érdekes téma felvetését és a munkám során nyújtott sok segítségét. Köszönöm családomnak és barátaimnak a támogatást, és hogy bármikor fordulhattam hozzájuk segítségért. 1
Tartalomjegyzék 1. A femtokémia 5 1.1 Bevezetés a femtokémiába.......................... 5 1.2 A kétimpulzusos mérési módszer....................... 6 1.3 A detektált adatok értelmezése........................ 7 2. Dekonvolúciós módszerek 11 2.1 Modellfüggő dekonvolúciós eljárások.................... 12 2.2 Modellfüggetlen dekonvolúciós eljárások.................. 13 2.2.1 Lineáris dekonvolúciós módszerek.................. 13 2.2.2 Nemlineáris dekonvolúciós módszerek................ 15 3. Genetikus algoritmusok 17 3.1 A genetikus algoritmusok alapjai....................... 17 3.2 Genetikus algoritmusok felépítése...................... 18 3.2.1 Reprezentáció............................. 18 3.2.2 Kezdeti populáció.......................... 19 3.2.3 Rátermettség............................. 19 3.2.4 Kiválasztás.............................. 19 3.2.5 Keresztezés.............................. 21 3.2.6 Mutáció................................ 22 4. Dekonvolúció genetikus algoritmus alkalmazásával 23 4.1 Az algoritmus................................. 23 4.1.1 Az algoritmus elemei......................... 23 4.1.2 Az algoritmus működése....................... 26 5. Az algoritmus tesztelése 29 5.1 Teszt adatsorok................................ 29 5.2 Az 1. teszt adatsor dekonvolúciója...................... 31 5.3 Fitneszfüggvények és a kiválasztás tesztelése................ 33 5.3.1 Eredeti fitneszfüggvény....................... 33 5.3.2 Sorba rendezéses kiválasztás..................... 34 5.3.3 Boltzmann kiválasztás........................ 34 5.3.4 Összehasonlítás............................ 36 2
5.4 Túl sok iteráció hatása............................ 36 5.5 A felfutás problémája............................. 37 5.6 2. teszt adatsor dekonvolúciója........................ 39 5.7 Valódi kísérleti adatok dekonvolúciója.................... 41 Összefoglaló 42 Summary 43 A. Optimalizált paraméterek 44 A.1 1. teszt adatsor................................ 44 A.2 2. teszt adatsor................................ 45 A.3 3. teszt adatsor................................ 47 Irodalomjegyzék 49 3
Bevezetés A femtokémia a 20. század második felében kialakult tudományág, mely lehetőséget nyújt kémiai reakciók kinetikájának femtoszekundum időfelbontással történő vizsgálatára. Az első kísérleti eredményeket Ahmed H. Zewail kutatócsoportja közölte 1987-ben [1]. Az ekkor még Femtosecond Transition-state Spectroscopy néven bemutatott módszerrel az ICN molekula fotodisszociációját vizsgálták. A ma már femtokémia néven számon tartott tudományág egyik legfontosabb kísérleti módszere a kétimpulzusos módszer. A mérés során lézerimpulzus hatására indul a reakció, majd egy következő lézerimpulzus méri a vizsgált anyagfajta koncentrációját. A mérés során alkalmazott lézerimpulzusok időbeli szélessége összemérhető a vizsgált reakciók lejátszódásához szükséges idővel, tehát sem a gerjesztés, sem a mérés nem pillanatszerű. Ennek következményeként a detektált differenciális optikai denzitás ( OD) függvény konvolúcióval torzított. Azt a folyamatot, melynek során a konvolúcióval torzított mérési adatokból a torzítatlan adatokat megkapjuk, dekonvolúciónak nevezzük. A detektált adatok minden esetben bizonyos mértékben zajjal terheltek. Ennek a zajnak a jelenléte azt eredményezi, hogy a dekonvolúció analitikusan nem végezhető el. A kémiai gyakorlatban legtöbbször alkalmazott eljárásban előre feltételezett reakciómechanizmusból indulnak ki, az egyenletek paramétereit pedig legkisebb négyzetes becsléssel határozzák meg. A módszernek a legnagyobb hátránya, hogy hibás következtetésekhez vezethet az előre felállított modell miatt. Ennek kiküszöbölésére modell-független dekonvolúciós eljárásra van szükség. Az irodalomban számos numerikus dekonvolúciós eljárás ismert, ezek egy része korlátozottan alkalmazható femtokémiai kísérleti adatok dekonvolúciójára [2]. A módszerek alkalmazása során felmerülő problémákra megoldást jelenthet új dekonvolúciós eljárás kidolgozása. Szakdolgozati munkám során olyan kutatásba kapcsolódtam be, melynek célja új dekonvolúciós eljárás kidolgozása genetikus algoritmusok alkalmazásával. Az algoritmus jelenleg fejlesztési fázisban van, melynek során számítógép által előállított adatsorok dekonvolúciójával teszteljük hatékonyságát. Munkám célja az algoritmus további fejlesztése, illetve a használat során beállítandó paraméterek értékének optimalizálása volt. 4
1. fejezet A femtokémia 1.1. Bevezetés a femtokémiába A femtokémia a reakciókinetikának azon ága, melynek célja a kémiai reakciók időbeli lefolyásának femtoszekundum időfelbontású megismerése. A molekularezgések periódusideje 10-100 femtoszekundum nagyságrendű, tehát ilyen időfelbontású mérések során közvetlenül nyerhetünk információkat a kötések átrendeződésének a dinamikájáról. Ez azt jelenti, hogy a femtokémiai mérések segítségével elemi reakciókat vizsgálhatunk és megfigyelhetjük ezen reakciók átmeneti állapotainak kialakulását és eltűnését (átalakulását termékekké). Az így vizsgálható reakciók tehát unimolekulás és bimolekulás reakciók: ABC * [AB C] * AB + C A + BC [ABC] AB + C Az első femtokémiai kísérletet Ahmed H. Zewail kutatócsoportja végezte és az eredményeket 1987-ben közölte [1]. A közleményben a következő unimolekulás reakciót vizsgálták: ICN * [I CN] * I + CN A kísérlet elvének a megértéséhez segítséget nyújt az ABC molekula egyszerűsített potenciális energia felülete, mely az 1.1 ábrán látható. A kísérlet első lépéseként egy λ 1 hullámhosszú lézerimpulzus gerjesztett állapotba hozza a molekulát. Ekkor a molekula az alapállapotot jelölő V 0 potenciális energia felületről átkerül a V 1, disszociatív potenciális energia felületre. A molekula a V 1 potenciális energia felületről tovább gerjeszthető a V 2 disszociatív potenciális energia felületre. A két gerjesztett potenciális energia felület közti energiakülönbség változik a reakció végbemenetele során. Ez használható ki az átmeneti állapot megfigyelésére, amennyiben a gerjesztő lézerimpulzus után egy λ 2 frekvenciájú mérőimpulzust is átbocsátunk a mintán. Az 1.1 ábrán látható, hogy a mérhető abszorbancia görbe lefutása a λ 2 hullámhossztól függ. Ha λ 2 megegyezik a BC végtermék gerjesztéséhez szükséges 5
1.1. ábra. ABC molekula egyszerűsített potenciális energia felülete [3] fény hullámhosszával, akkor a görbe az idő függvényében telítésbe megy, ahogy az összes gerjesztett ABC molekula teljes mértékben disszociál. Ha azonban a λ 2 hullámhossz ennél nagyobb (az energiája tehát kisebb, mint amivel a BC terméket gerjeszthetnénk), akkor egy maximumot tapasztalunk. Ennek oka, hogy ezen a hullámhosszon a [A BC] * átmeneti komplex abszorbeál legnagyobb mértékben. Ugyanezzel magyarázható az is, hogy minél inkább eltoljuk a λ 2 hullámhosszat a kisebb energiák irányába, annál korábban jelentkezik a maximum a görbén. Bimolekulás reakciók vizsgálatakor problémát jelent, hogy a molekulák találkozásához nanoszekundum nagyságrendű időre van szükség. Ez azt eredményezi, hogy nem jelölhető ki pontosan a reakció elindulásának ideje. Erre megoldást jelent van der Waals prekurzor komplexek használata [3]. 1.2. A kétimpulzusos mérési módszer Femtokémiai mérések során a cél tehát a reakciók lefolyásának femtoszekundum időfelbontású detektálása. A leggyakrabban alkalmazott mérési technika a kétimpulzusos (pumpapróba) módszer. Ennek során a mintán egymás után két lézerimpulzust vezetnek keresztül. Az első lézerimpulzus a reakciót indítja el. Ez az impulzus állítja elő a reaktánsokat, melyek a reakció során tovább alakulnak. A következő lézerimpulzussal megmérhető a vizsgálni kívánt anyagfajta koncentrációja. A koncentrációmérés történhet abszorbanciaméréssel vagy lézerindukált fluoreszcencia méréssel is. 6
Ilyen időfelbontásnál problémát jelent a reakcióidő mérése. A detektor nem használható a két impulzus közti idő mérésére, ugyanis a detektorok legnagyobb elérhető működési frekvenciája 1 GHz körül van. Ez azt jelenti, hogy nem képesek nanoszekundumnál kisebb idők mérésére 1. Az ultragyors kinetikai mérésekben ezért az időmérést távolságmérésre vezetik vissza. Az 1.2 ábrán látható, hogy az impulzuslézerből egy impulzus indul el, amit kettéválasztanak. A gerjesztőimpulzus a minta felé megy, míg a mérőimpulzust hosszabb úton vezetik. A két impulzus közötti útkülönbség kódolja a reakcióidőt. A pontos időmérés feltétele így a pontos távolságmérés, mely mikrométercsavarokkal megoldható. A mérést többször egymás után, különböző késleltetésekkel elvégezve információ nyerhető a reakció időbeli lefolyásáról. A mérőberendezés vázlata az 1.2 ábrán látható. 1.2. ábra. A kétimpulzusos mérőberendezés [4] 1.3. A detektált adatok értelmezése Komoly problémát jelent, hogy a használt lézerimpulzusok időbeli szélessége a reakcióidővel összemérhető. A Heisenberg féle határozatlansági reláció értelmében ugyanis az impulzus időbeli és spektrális szélessége közt a következő összefüggés áll fent: ω t h 2, (1.1) ahol ω a spektrális szélességet, t az időbeli kiterjedést jelöli. A reakció elindításához szükséges gerjesztéshez viszonylag szűk spektrális kiterjedésű impulzus használható, ami alsó határt szab az impulzus időbeli kiterjedésének [5]. Ez azt eredményezi, hogy a reakció nem pillanatszerűen indul el és a detektálás sem lehet pillanatszerű. A következőkben ezen hatások következményét ismertetem. A levezetés 1 f = 10 9 s 1, így T = 10 9 s = 1 ns 7
1.3. ábra. A használt jelölések [4] Keszei Ernő dekonvolúcióról szóló cikkében [6] található leírás adaptációjával készült. A jelölések megértéséhez segítséget nyújt az 1.3 ábra. A leírást abszorpciós detektálás esetére mutatom be, de kis módosítással lézerindukált fluoreszcencia detektálásra is alkalmazható. Abszorbancia detektálása esetén a koncentráció meghatározásának alapja a Lambert- Beer törvény: I = I 0 10 ɛlc = I 0 e ln 10ɛlc (1.2) Kis ɛlc esetén a fenti kifejezés 0 körüli Taylor-sorba fejthető, melyben elég az elsőfokú tagig elmenni: I = I 0 I 0 ln 10ɛcl + O(2) (1.3) A kísérlet során jellemzően a differenciális optikai denzitást detektálják: OD = I 0 I I 0 = 1 e ln 10ɛlc (1.4) Kihasználva a sorfejtést: OD ln 10ɛcl (1.5) A gerjesztőimpulzus által létrehozott gerjesztett anyagfajta koncentrációja minden időpillanatban arányos a gerjesztőimpulzus intenzitásával: c g (t) = c(x)i g (t x) dx (1.6) A képletben x fizikai tartalom nélküli, idő dimenziójú integrációs változó. A mérőimpulzus a gerjesztőimpulzust τ késleltetéssel követi. A mérőimpulzus fényének intenzitása a minta előtt Im(t 0 + τ), melyről az egyszerű számolás érdekében feltételezem, hogy 1-re normált függvény, tehát: I 0 m(t + τ) dt = 1 (1.7) 8
A minta után a mérőimpulzus intenzitását a Lambert-Beer törvény írja le: I m (t + τ) = I 0 m(t + τ) e ln 10ɛlcg(t), (1.8) illetve a sorfejtés kihasználásával: I m (t + τ) I 0 m(t + τ)[1 ln 10ɛlc g (t)]. (1.9) A detektor elektronikája túl lassú ahhoz, hogy ilyen kis időfelbontással detektáljon, így válaszjele a mérőimpulzus intenzitásának időbeli integráljával arányos. A minta előtt: S 0 (τ) = K I 0 m(t + τ) dt (1.10) és a minta után: S 0 (τ) = K I m (t + τ) dt. (1.11) A detektált differenciális optikai denzitás ebből következően: Felhasználva az 1.3 és 1.7 egyenleteket: OD = S 0 S S 0 (1.12) OD = I 0 m(t + τ) ln 10ɛlc g (t) dt, (1.13) majd 1.6 felhasználásával OD = ln 10ɛl Im(t 0 + τ) c(x)i g (t x) dx dt. (1.14) Átrendezés után: OD = ln 10ɛl c(x) Im(t 0 + τ)i g (t x) dtdx. (1.15) Bevezetem a következő jelöléseket: Ĩ g ( t) I g (t), (1.16) Ĩ 0 m( t + τ) I 0 m(t + τ). (1.17) 9
Ezeket behelyettesítve az 1.15 egyenletbe: OD = ln 10ɛl c(x) Ĩm( t 0 + τ)ĩg(x t) dtdx (1.18) Bevezetve az y = x t helyettesítést: OD = ln 10ɛl c(x) Ĩm(y 0 + τ x)ĩg(y) dtdx. (1.19) Definíció szerint a korreláció: corr [f, g] f(x + t)g(x) dx (1.20) és a konvolúció: f g f(t)g(τ t) dt. (1.21) Így: tehát: OD = ln 10ɛl ] c(x)corr [Ĩ0 m, Ĩg (τ x) dx, (1.22) ] OD = corr [Ĩ0 m, Ĩg (c ln 10ɛl). (1.23) A korreláció a terjedés irányától független, így ] corr [Ĩ0 m, Ĩg = corr [ I 0m, ] I g (1.24) Az 1.23 egyenletben szereplő konvolúció jobb oldali argumentuma az a OD függvény, amit konvolúció nélkül detektálhatnánk és amiből kinetikai információkat nyerhetünk. Amennyiben a reakcióelegy több, az adott hullámhosszon elnyelő anyagfajtát tartalmaz: OD = corr [ ) ] n Im, 0 I g (ln 10 ɛ k c k l. (1.25) k=1 10
2. fejezet Dekonvolúciós módszerek Az előző alfejezetben bemutattam, hogy a kétimpulzusos módszerrel mért eredményeket konvolúció torzítja. Az eredmények értelmezésének első lépése ezért a torzítatlan OD függvény kinyerése, tehát a dekonvolúció. Ebben az alfejezetben röviden áttekintem a legfontosabb, femtokémiai adatok dekonvolúciójára is használható módszereket. A különböző, modellfüggetlen technikák alkalmazhatóságát femtokémiai kísérleti eredmények dekonvolúciójára Keszei Ernő kutatócsoportja vizsgálta [2]. Mielőtt a különböző technikákat bemutatnám, bevezetek egy egyszerűbb jelölésmódot. Az eredeti 1.25 konvolúciós egyenlet a képfeldolgozás jelöléstechnikáját alkalmazva a következő, egyszerűbb formába írható: i(τ) = o(τ)s(τ t) dt, (2.1) rövidebben:.i = o s (2.2) A 2.2 egyenletben i jelöli a mért, konvolúcióval torzított OD függvényt, ezt képfüggvénynek nevezzük. A torzítatlan OD függvény jele o, neve objektum- vagy tárgyfüggvény, s pedig az ún. effektív impulzust jelöli: s = corr [ I 0 m, I g ]. (2.3) A 2.2 integrálegyenletben szereplő 3 mennyiség közül a mért képfüggvény és az effektív impulzus ismertek, így a feladat a továbbiakban a tárgyfüggvény előállítása. A dekonvolúció során két komoly probléma merül fel. Az első probléma az, hogy az integrálegyenletnek több megoldása is lehet. Ez könnyen belátható. Tegyük fel, hogy az egyenletnek több megoldása van, és ezek a következő módon állíthatók elő: ô(t) = o(t) + w(t) (2.4) 11
Ha létezik olyan w(t) függvény, melyre igaz a következő feltétel: s(τ t)w(t) dt = 0, (2.5) akkor ô(t) a 2.2 egyenlet megoldása lesz. A másik, minden esetben felmerülő probléma a kísérleti zaj, tehát: i(t) = i v (t) + n(t), (2.6) ahol n(t) jelöli a zajt, i v (t) pedig a torzítatlan képfüggvényt. A későbbiekben látni fogjuk, hogy a kísérleti zaj jelenléte lehetetlenné teszi az 1.25 egyenlet analitikus megoldását. 2.1. Modellfüggő dekonvolúciós eljárások A gyakorlatban leggyakrabban alkalmazott dekonvolúciós módszert rekonvolúciónak nevezik. Ennek során a kiértékelés előtt feltételeznek egy kinetikai modellt. A modell alapján felírhatóak a megfelelő differenciálegyenletek, melyeknek a megoldásával megkaphatók a koncentráció-idő függvények. Ezek alapján kiszámolható a modell szerinti OD függvény. Ezt a függvényt beírva az 1.25 egyenletbe megkapható a modell szerinti képfüggvény. Ezzel egy iterációs eljáráshoz jutottunk, melynek célja a Q = i ] 2 w ij [( OD) ij,meas ( OD) ij,calc (2.7) j eltérésnégyzet-összeg minimalizálása. A képletben w ij az adott mérési pont statisztikai súlyát jelenti. A statisztikából ismert [7], hogy: w ij = 1 s 2 [ ( OD) ij ] (2.8) A módszer legnagyobb hátránya, hogy előre feltételezni kell egy kinetikai modellt. Amennyiben a modell nem helyes, a módszerrel kapott eredmények sem lesznek helyesek. A másik hátrány az eljárás számításigénye, ugyanis minden iterációs lépésben el kell végezni a konvolúciót. Mindkét hátrány kiküszöbölhető lenne gyors, modell-független eljárások alkalmazásával. Nem ismert olyan eljárás, mely minden esetben tökéletes eredményt adna, így jelenleg is folynak a kutatások új eljárások kidolgozására. A következő alfejezetben modell-független dekonvolúcióra alkalmas módszereket mutatok be. 12
2.2. Modellfüggetlen dekonvolúciós eljárások 2.2.1. Lineáris dekonvolúciós módszerek Egy dekonvolúciós módszert lineárisnak nevezünk akkor, ha a tárgyfüggvényt úgy állítja elő, hogy csak lineáris műveleteket hajt végre i(t)-n és s(t)-n. A gyakorlatban a i(t)-t és s(t)-t diszkrét adatpontokban ismerjük, így célszerű vektorokként kezelnünk az adatokat. A konvolúció folytonos formája helyett így bevezethetjük a diszkrét konvolúciót: i n = m s n m o m, (2.9) ahol az m index s nem nulla elemein, n pedig a mért adatpontokon fut végig. Az egyenlet így mátrix formába írható: i = So, (2.10) ahol i és o vektorok N számú elemmel, míg S egy N N-es mátrix. A 2.10 egyenlet alapján a dekonvolúció egyszerűen elvégezhető lenne az S mátrix invertálásával. A mátrix tulajdonságai miatt azonban a megoldás nagyon érzékeny a numerikus és a zaj okozta hibákra, mely fluktuációk formájában nyilvánul meg a megoldásban. A dekonvolúció így nem végezhető el ezen a módon. A fellépő fluktuációk kiküszöbölésére iteratív eljárásokat dolgoztak ki. Ezek általános formája: ô (k+1 n = ô (k) n + λ ( i n m s n m ô (k) m ) (2.11) Lineáris módszerek esetén λ független i, s, ô (k) és t értékétől. Hagyományos van Cittert eljárás A hagyományos van Cittert eljárásban a λ relaxációs faktor értéke 1 és ô (0) = i, tehát a tárgyfüggvényt első közelítésben a képfüggvénnyel közelítjük. A módszer minden iterációs lépésben növeli a zajt, így a konvergencia nem érhető el. Ez igaz a többi nemlineáris dekonvolúciós módszerre is [2]. Digitális szűrés A 2.2 egyenlet megoldására egy másik, egyszerű módszert kínál a konvolúciótétel: F(f g) = F(f) F(g), (2.12) 13
ahol F(f) az f függvény Fourier transzformáltját jelöli. Az egyenlet szerint Fourier transzformálni kell a képfüggvényt és az effektív impulzust: I(ν) = F(i(t)), (2.13) majd: S(ν) = F(s(t)), (2.14) O(ν) = 1 I(ν), (2.15) S(ν) ahol O(ν) jelöli a keresett o(t) függvény Fourier transzformáltját. Ebből tehát inverz Fourier transzformációval kapható a keresett, időtérbeli tárgyfüggvény: o(t) = F 1 (O(ν)) (2.16) 1 A folyamatot inverz szűrésnek nevezzük, az inverz szűrő, melyet I(ν)-n alkalmazunk. S(ν) Az S(t) függvény lassan változik az idő függvényében, így az S(ν) függvény a 0-hoz közeli frekvenciáknál tartalmaz csak nem nulla értékeket. Ez azt jelenti, hogy a magasabb frekvenciák tartományában a 2.15 egyenletben nagyon kicsi számokkal kell osztani. A kísérleti zaj általában a nagy frekvenciáknál jelentkezik, így a módszer nagy mértékben felerősíti a zajt. A zajszűrés elve is a fenti tapasztalaton alapszik. Zajszűrés A feladat az O(ν) függvény magas frekvenciájú részeinek levágása anélkül, hogy az eredeti függvényt torzítanánk. A legnagyobb problémát az jelenti, ha az alacsony frekvenciájú, tehát a zajmentes I(ν)-t tartalmazó frekvenciakomponensek átfednek a magas frekvenciájú zaj frekvenciakomponenseivel. Ebben az esetben a zajszűrés csak a függvény kismértékű torzulásával oldható meg. A zajszűrés egy, a magas frekvenciájú tagok levágásánál hatékonyabb módszere a Wiener szűrő használata. Ebben az esetben a zajszűrés a frekvenciatérben történik. Azt az Ô függvényt keressük, melynek az inverz Fourier transzformáltja minimalizálja az eltérésnégyzetösszeget az eredeti, nem ismert o(t) függvénytől. Levezethető [8], hogy ebben az esetben a Wiener-szűrő a következő alakban adható meg: Ô = I 2 I 2 + N 2 S 2 I 1 S (2.17) A zajszűrés egy másik lehetséges módja, hogy a Forurier transzformáció előtt simítjuk a mért I(t) adatsort. Ezekkel a módszerekkel is vigyázni kell, mert torzíthatják a függvényt. 14
2.2.2. Nemlineáris dekonvolúciós módszerek Az előző alfejezetben láttuk, hogy a lineáris dekonvolúciós módszerek nem alkalmazhatók sikerrel femtokémiai kísérleti adatok dekonvolúciójakor. Jobb eredmények kaphatók nemlineáris dekonvolúciós technikákkal, melyek megkötéseket is figyelembe vehetnek. A kísérleti zaj jelenléte miatt fizikailag lehetetlen megoldást is kaphatunk. Ennek elkerülésében segít, ha a dekonvolúció során megköveteljük a módszertől, hogy figyelembe vegye az előzetes ismereteinket. Ilyen előzetes ismeret lehet például, hogy a torzítatlan OD függvény minden mérési pontban pozitív, vagy hogy a gerjesztés előtti minden pontban nulla. Az előzetes ismeretek figyelembe vételének egyik módja, hogy minden iterációs lépésben fizikailag értelmessé tesszük a megoldást. Ha például tudjuk, hogy minden pontban pozitív vagy nulla értéket vesz fel a keresett OD függvény, akkor minden iterációs lépés végén nulla értéket lehet adni a negatív értékeknek. Egy másik lehetséges megoldás, ha a λ relaxációs faktorba építjük be a kényszerfeltételeket. Jansson módszere Jansson módszere jó példa arra az esetre, amikor a kényszerfeltételeket a relaxációs faktorba építik: ahol ô (k+1 n = ô (k) n + r ( ô (k)) [ i n m r ( ô (k)) 2r 0 = r 0 ô max ô min s n m ô (k) m ], (2.18) [ ] ô (k) ômax + ô min. (2.19) 2 Az egyenletben ô max jelöli a fizikailag értelmes legnagyobb, ô min a fizikailag értelmes legkisebb értéket. Gold módszere Ennek a módszernek az érdekessége, hogy az előző technikák additív korrekciói helyett szorzat alakú korrekciót alkalmaz: ô (k+1) n = ô (k) n m i n s n m ô (k) m (2.20) A konvergencia elérésekor a korrekciós tag eltűnik. 15
Bayes dekonvolúció Az iteratív eljárás Gold módszerének a továbbfejlesztése: ô (k+1) n = ô (k) n m s n+m m i n s n m ô (k) (2.21) m 16
3. fejezet Genetikus algoritmusok Az előző alfejezetben bemutatott dekonvolúciós módszerek egyike sem ad minden esetben megfelelő végeredményt ahhoz, hogy femtokémiai kísérleti adatok modellfüggetlen dekonvolúcióját kielégítő eredménnyel elvégezzük vele [6]. Ezért indult el a kutatás, mely genetikus algoritmusok használhatóságát vizsgálja femtokémiai kísérleti adatok dekonvolúciója során. Szakdolgozati munkám során ebbe a kutatásba kapcsolódhattam be. Az algoritmus működésének megértéséhez szükséges, hogy ebben az alfejezetben összefoglaljam a genetikus algoritmusok működésének alapelveit. 3.1. A genetikus algoritmusok alapjai A genetikus algoritmusok olyan számítógépes algoritmusok, melyek különböző keresési, optimalizálási feladatok megoldásához az evolúcióbiológia módszereiről mintázott eszközöket alkalmaznak [9 12]. Az élőlények evolúciójának alapja a környezetükhöz való folyamatos alkalmazkodás. Az evolúció során a fajok folyamatosan fejlődnek, alkalmazkodnak a változó körülményekhez. Ennek az alkalmazkodásnak a legfontosabb eszközei a természetes szelekció és a mutáció. Az élővilágban a környezetükhöz kevéssé alkalmazkodott egyedek túlélésére kicsi esély van. Ebből következik, hogy a rátermettebb egyedeknek több lehetőségük lesz szaporodni, melynek során tulajdonságaik tovább öröklődnek az utódaikra is. Az élőlények evolúciója a genetikus algoritmusok működésének az alapja. Az algoritmus egyszerre több lehetséges megoldást vizsgál, melyeket egyedeknek neveznek. Az élővilágban az egyedek tulajdonságait a DNS kódolja. A DNS molekulák a sejteken belül a hiszton fehérjével alkotott komplexben vannak jelen, melyet kromoszómának nevezünk. A genetikai információk öröklődésében a kromoszómák vesznek részt. Minden kromoszóma nagy számú génből áll, melyeket allélok építenek fel. A genetikus algoritmusban minden egyedet egy kromoszómaszerű karaktersorozat kódol. Az egyedek összessége alkotja a populációt. A genetikus algoritmus működése során ezekre a populációkra genetikus operátorok hatnak, melyek hatására egy új populáció jön létre. Ezek az operátorok a keresztezést és a mutá- 17
ciót valósítják meg. Az így kialakuló populációt új generációnak nevezzük. A természetes szelekció mintájára a genetikus algoritmusok esetén is nagyobb eséllyel kereszteződnek a rátermettebb egyedek. Ennek biztosításához az algoritmus minden egyed esetén meghatározza a rátermettséget (fittséget) és ezt figyelembe veszi a keresztezéshez történő kiválasztáskor. A keresztezés után az egyedek bizonyos valószínűséggel mutáción esnek át. A fent felvázolt folyamatot egymás után többször iterálva az újabb generációk egyedei egyre közelebb kerülnek a keresett megoldáshoz és az algoritmus konvergál. A konvergencia feltételének teljesülése után megoldásként az utolsó generáció legrátermettebb egyedét fogadjuk el. 3.2. Genetikus algoritmusok felépítése Ugyan a genetikus algoritmusoknak nincs általánosan elfogadott definíciója, vannak olyan építőelemek azonban, melyek minden genetikus algoritmusban megtalálhatók [10]. Ilyen közös tulajdonságok, hogy a populációt kromoszómáikkal kódolják, a keresztezéshez történő kiválasztás az egyedek rátermettsége alapján történik, az új generáció az előző generáció egyedeinek keresztezésével jön létre, és az új egyedekre véletlenszerű mutáció hathat. Ebben az alfejezetben ezeket az eszközöket fogom részletesebben bemutatni. 3.2.1. Reprezentáció Egy genetikus algoritmus megírásának első, nagyon fontos lépése a feladathoz illő reprezentáció kiválasztása. A további műveleteket az algoritmus az egyedek reprezentációin végzi, így az algoritmus működését alapjaiban meghatározza a reprezentáció. Alapvető követelmény a reprezentációval szemben, hogy az általa kódolt egyedeken alkalmazhatóak legyenek a genetikus operátorok. A hagyományos és elméleti szempontból legtöbbet vizsgált reprezentáció a bitreprezentáció. Ebben az esetben az egyes allélok a 0 vagy az 1 értéket vehetik fel, tehát minden kromoszómát egy olyan karaktersorozat épít fel, melyet 0 és 1 karakterek alkotnak. Sok probléma megoldható bináris reprezentáció alkalmazásával, de vannak esetek, amikor érdemes más kódolást választani. Lehetőség van arra is, hogy a gének egész vagy lebegőpontos számokat tartalmazzanak. Rendezési feladatok esetén sikerrel alkalmazható a permutációs reprezentáció. Ebben az esetben az egyedet egy számsorozat reprezentálja, mely bizonyos elemeknek egy sorban elfoglalt helyét jelöli. Ez a reprezentáció megfelelő például az ismert utazó ügynök probléma esetén [12]. Vannak problémák, melyek esetén a megfelelő reprezentáció lebegőpontos vagy valós számok sorozatából áll. Erre jó példa, hogy ha az egyes egyedek egy függvénytér elemei. Ezekben az esetekben bináris kódolás alkalmazása nem lenne célszerű. 18
További lehetőség a fa alapú kódolás. melynek lényege, hogy minden kromoszómát adott elemekből felépített fa reprezentál. 3.2.2. Kezdeti populáció Az algoritmus futása során elvégzendő első feladat a kezdeti populáció létrehozása. Sok esetben akkor alkalmazunk genetikus algoritmusokat, amikor semmilyen előzetes ismeretünk nincs a probléma megoldásáról. Ilyenkor a kezdeti populáció elemei véletlenszerűen generálhatók a reprezentációnak megfelelően. Előfordulhat azonban, hogy rendelkezünk előzetes ismeretekkel a lehetséges megoldásokkal kapcsolatban. Ilyen esetben érdemes ezeknek megfelelően generálni a kezdeti populációt, ugyanis jelentősen gyorsítja a konvergenciát, ha az algoritmus a keresési tér megfelelő részéből indul el. Az is előfordulhat, hogy az algoritmus egyáltalán nem találja meg a megfelelő megoldást véletlenszerűen generált kezdeti populáció esetén, míg ha figyelembe vesszük az előzetes ismereteket, akkor sikerrel jár. 3.2.3. Rátermettség Az algoritmus működését döntően befolyásolja, hogy mi alapján határozzuk meg az egyedek rátermettségét. A megoldás jóságának kiszámolása minden probléma esetén különböző módon történik. A fitnesz értékek kiszámolásakor az adott egyed reprezentációja alapján kiszámoljuk a fitnesz függvény értékét. A fitnesz értéknek fontos feladata, hogy az egyes egyedek közti különbséggel arányos legyen a fitnesz értékeik közti különbség. Ennek elérésére szolgál a skálázás. A skálázás feladata gyakran az egyes, hasonló egyedek közti különbség felerősítése [10]. Ez olyan esetekben lehet hasznos, amikor sok iterációs lépés után minden egyed hasonló, mégis szeretnénk fenntartani a kényszert a változásra. 3.2.4. Kiválasztás A megoldás felé haladás elérésének egyik eszköze a természetes szelekciót utánzó kiválasztás. A szelekció során a populáció létszámának megfelelő párt választunk ki, melyeket a következő lépésben keresztezünk egymással. A kiválasztás célja, hogy elősegítse a rátermettebb szülők kereszteződését, hogy ennek eredményeképpen még rátermettebb egyedeket kapjunk. Fontos azonban a diverzitás fenntartása, különben hamar elterjedhetne a populációban egy kiemelkedően magas fitnesz értékkel bíró, de még nem tökéletes egyed és az algoritmus túl hamar konvergálna. A leggyakrabban alkalmazott kiválasztási módszer a fitnesz-arányos kiválasztás. Ennek 19
során a keresztezésre való kiválasztás valószínűsége a fitnesz értékkel arányos, tehát P kival (i) = fitnesz(i) fitnesz(j). (3.1) j Ennek leggyakoribb megvalósítási formája az ún. rulettkerék kiválasztás. Ez úgy képzelhető el, hogy minden egyedhez hozzárendeljük a rulettkerék egy körcikkét úgy, hogy a körcikk területének és a kerék teljes területének az aránya megegyezzen a 3.1 egyenletben definiált aránnyal. Ez után a rulettkereket N alkalommal megforgatjuk, ahol N értéke attól függ, hogy a keresztezést milyen módon oldja meg az adott algoritmus. Minden forgatás után a kerék jele alatti egyedet választjuk ki keresztezésre. A módszer esetén minden egyednek megvan a lehetősége arra, hogy többször is kiválasztásra kerüljön. A fitnesz-arányos kiválasztás egy másik megvalósítási formája, hogy a kereket egy alkalommal forgatjuk meg, de N, egymástól egyenlő távolságra elhelyezkedő jelet helyezünk el a keréken. Ez a sztochasztikus univerzális mintavétel, mely leginkább kis egyedszámú populációk esetén jár előnyökkel a hagyományos rulettkerék kiválasztással szemben. A fitnesz-arányos kiválasztás legnagyobb hátránya, hogy előfordulhat, hogy az első generációk során talál az algoritmus egy kiemelkedő fitnesz értékű megoldást, mely a fitneszarányos kiválasztás hatására nagy valószínűséggel elterjedhet a populációban, gátolva ezzel a keresési tér további felfedezését. Amennyiben fennáll ennek az esélye, érdemes más kiválasztási módszereket is megvizsgálni. A következőkben a további lehetőségek közül mutatom be a fontosabbakat. Az egyik lehetőség a sorba rendező kiválasztás. Ennek alkalmazásakor az egyedeknek először kiszámítjuk a fitnesz értékét, majd az egyedeket sorba rendezzük a fitnesz értékük szerint. Az egyedekhez hozzárendeljük a sorban elfoglalt helyüket. A kiválasztás valószínűsége csak a sorrendben elfoglalt helytől függ. A módszer előnye, hogy az algoritmus futása során végig fenntartja a kényszert jobb megoldások keresésére. Bizonyos esetekben hátrány lehet, hogy így a kiválasztás során nem használjuk fel az egyedek fitnesz értékei közti különbség abszolút értékét. Egy másik megoldás a versengő kiválasztás. Ennek lényege, hogy véletlenszerűen választunk két egyedet a populációból, majd generálunk egy r véletlen számot. Amennyiben ez a véletlen szám nagyobb egy előre meghatározott k paraméternél, a nagyobb fitnesz értékkel rendelkező egyedet választjuk ki, ha r kisebb k-nál, akkor pedig a a kisebb fitnesz értékű egyedet választjuk. Nagy előnye a technikának az előző módszereknél kisebb számításigénye. Lehetőség van arra is, hogy a kiválasztás által generált kényszer mértéke változzon az algoritmus futása során. Ha az első iterációk esetén a kiválasztás megengedőbb, több lehetőséget ad a kevésbé rátermett egyedek keresztezésére, majd később egyre szigorúbb lesz, az előnyös lehet a keresés szempontjából. Ennek az eredménye az lehet, hogy az algoritmus a 20
futás elején kiválasztja a keresési térnek azt a részét, ahol a legjobb megoldás található, majd a további futás során itt megtalálja a megoldást. Ennek egy megvalósítása a Boltzmann kiválasztás. Az egyes egyedekhez hozzárendelhető az a várható érték, mely azt mutatja, hogy az egyedet várhatóan hány alkalommal választjuk ki. A Boltzmann kiválasztás esetén ez a következő: M kival (i, t) = ef(i)/t < e f(i)/t >, (3.2) ahol < e f(i)/t > az egész populációra vett átlagot jelöl. A T hőmérséklet az iterációk során bizonyos program szerint csökken, ezzel a fenti elvet megvalósítva. Hasznosnak bizonyulhat annak biztosítása, hogy az aktuális generáció legrátermettebb egyedének fitnesz értéke ne lehessen alacsonyabb az előző generáció legrátermettebb egyedének fitnesz értékénél. Ez az elitizmus nevű módszerrel érhető el. Ennek során az új generáció egyedei közé bekerül az előző generáció n legrátermettebb egyede és esetleg ezek mutáción átesett változatai. 3.2.5. Keresztezés A szülők kiválasztása után történik az egyedek keresztezése. Ennek megvalósítása nagy mértékben függ az egyedek reprezentációjától. A leggyakrabban alkalmazott bináris reprezentáció esetén a legegyszerűbb keresztezési módszer az egy pontos keresztezés. Ebben az esetben kiválasztunk egy pozíciót, majd a két szülő adott pozíción lévő értékeit megcseréljük, ezzel két új egyedet előállítva. Gyakran fontos lehet, hogy néhány pozíció értéke és sorrendje változatlan maradjon, mert csak így lesz megfelelő a megoldás. Ilyen esetekben az egy pontos keresztezés hátránya, hogy ezeket elronthatja. Ennek kiküszöbölésére alkalmazható a két pontos keresztezés, melynek során két pozíciót választunk ki és a kettő közt található allélokat cseréljük ki. Lebegőpontos és valós számokat tartalmazó reprezentáció esetén alkalmazható az átlagoló keresztezés. Ebben az esetben két szülő keresztezésével egy új egyedet kapunk a következő módon: o i = p 1,i + p 2,i, (3.3) 2 ahol p 1 és p 2 jelöli a szülőket, o a létrejövő új egyedet, i pedig egy adott pozíciót. Az átlagolás történhet fitnesz-súlyozva is: ahol f(i) az i. egyed fitnesz értékét jelöli. o i = f(1)p 1,i + f(2)p 2,i, (3.4) f(1) + f(2) 21
3.2.6. Mutáció A keresztezés során létrejövő új egyedek bizonyos valószínűséggel mutáción esnek át. Az élővilágban a mutáció új genetikai tulajdonságok létrejöttével jár. Sok esetben a mutáció káros, mert kevésbé rátermett egyedeket eredményez, de egyes esetekben pozitívan befolyásolhatja az egyed rátermettségét. A mutáció célja genetikus algoritmusok esetén is megegyezik a mutáció élővilágban betöltött szerepével. Mutáció alatt a keletkezett egyed véletlenszerű, általában kis mértékű módosítását értjük, melynek hatására a keresési tér új részeit ismerheti meg az algoritmus. A keresztezés és a mutáció is új tulajdonságokkal rendelkező egyedek létrejöttét eredményezi, de mindkét operátor fontos az algoritmus megfelelő működéséhez. A mutációs operátor pontos működése nagy mértékben függ a reprezentációtól. 22
4. fejezet Dekonvolúció genetikus algoritmus alkalmazásával Célunk a 2.2 konvolúciós egyenlet megoldása genetikus algoritmus alkalmazásával. Ehhez rendelkezésünkre áll az i képfüggvény és az s impulzusfüggvény, melynek alakja általában ismert. A függvényeket diszkrét mérési pontokban ismerjük, ezeket a pontokat vektorokban tároljuk. A probléma megoldására készülő, genetikus algoritmust használó program működését ebben a fejezetben ismertetem. A program fejlesztése a MATLAB programozási környezetben történik. A könnyebb kezelhetőség érdekében grafikus felület is készül a programhoz. A program legfrissebb, a dolgozatomban bemutatott fejlesztéseket is tartalmazó változatának forráskódja megtalálható a szakdolgozat CD-mellékletén. 4.1. Az algoritmus 4.1.1. Az algoritmus elemei Az előző fejezetben ismertettem a genetikus algoritmusok legfontosabb elemeit, azok célját és lehetséges megvalósításukat. Ebben az alfejezetben azt mutatom be, hogy az általunk fejlesztett programban ezek az elemek hogyan kerültek megvalósításra. Reprezentáció A 2.2 egyenlet megoldásaként az o tárgyfüggvényt keressük, így a populáció egyedeinek a lehetséges megoldásfüggvényeket kell reprezentálniuk. A 2.2 egyenlet megoldása jelen esetben egy olyan vektor, mely diszkrét adatpontokban tartalmazza a dekonvolvált o tárgyfüggvény értékét. A valós reprezentáció lehetővé teszi, hogy az egyedek reprezentációja közvetlenül ez a vektor legyen, ezért az általunk fejlesztett algoritmus valós kódolást használ. 23
Kezdeti populáció Az algoritmus fejlesztésének kezdeti szakaszában voltak kísérletek véletlenszerű kezdeti populáció használatára, de kiderült, hogy véletlenszerűen generált kezdeti populációval nem találja meg a megoldást az algoritmus [11]. Femtokémiai mérési adatok dekonvolúciója esetén azonban viszonylag sokat tudunk előzetesen a megoldás alakjáról, amit ki lehet használni a kezdeti populáció előállítása során. A kezdeti populáció generálásának alapját a mért o tárgyfüggvény képezi. Erre a függvényre hatnak a kezdeti populációt generáló operátorok, melyek létrehozzák a felhasználó által meghatározott számú egyedet [5, 6, 13]. A kezdeti populációt generáló operátorok működésének alapja az, hogy ismerjük a konvolúció hatását. A konvolúció a tárgyfüggvényt időben kiszélesíti, miközben az amplitúdóját csökkenti, kevésbé meredekké teszi a felfutását és a lecsengését és kisimítja a hirtelen változásokat. Az operátorok feladata ennek megfelelően a tárgyfüggvény y irányú megnyújtása, x irányú összenyomása és a felfutás, illetve a lecsengés meredekségének növelése. A kezdeti populációt generáló operátorok mindegyike paraméterezhető a felhasználó által. Megadható a paraméterek minimálisan és maximálisan felvehető értéke, melyek közt a program minden új egyed esetén egy egyenletes eloszlásból vett véletlen számot generál. A továbbiakban ezt a generált számot nevezem az operátor paraméterének. A véletlenszám-generátor igényel egy paramétert, melyet magnak hívunk. Amennyiben két futás során a mag megegyezik, a program minden esetben ugyanazokat a véletlen számokat generálja. Ez a viselkedés a program tesztelése során nagyon hasznos. A véletlenszámgenerátor magját a felhasználó megadhatja. A program külön kezeli a képfüggvény maximum előtti és maximum utáni részét. A függvény maximum előtti részét a p paraméterrel megszorozva növeli az amplitúdóját, majd összenyomja úgy, hogy hossza az eredeti hossz p legyen, ahol p véletlen paraméter. Az összenyomáshoz a program lineáris interpolációt használ. A felfutás meredekségének növeléséhez a program generál egy egyenletesen növekvő számokból álló vektort, melynek hossza a tárgyfüggvény hosszával egyezik meg, legkisebb eleme 0, legnagyobb eleme pedig 1. Ennek az utolsó, a felfutó rész hosszával megegyező részét használjuk, jelölje ezt r. Ha az operátor paramétere p, akkor az operátor hatása: o rise,uj = o rise r p (4.1) A maximum utáni függvényrészt is a maximum előtti résszel analóg módon nyomja össze az algoritmus x irányban. A lecsengés meredekségének növelésére alkalmazott megoldás is hasonló azzal a különbséggel, hogy itt a program csökkenő számsorozatot generál növekvő helyett és annak az elejét használja. Az y irányú nyújtáshoz használt képlet: y(i) = r 1 z max zn z max zn (y 0(i) zn) + zn, (4.2) 24
mely azt is biztosítja, hogy a kettévágott függvény két része illeszkedjen egymáshoz. Az egyenletben r 1 a nyújtás paramétere (mely megegyezik a függvény két része esetén), z max a képfüggvény maximuma, zn a képfüggvény utolsó eleme, y 0 (i) pedig az y irányban még meg nem nyújtott függvény i-edik eleme. A függvény két felének összeillesztése után a függvényt korrigáljuk, hogy a hossza megfelelő legyen, ezzel elkészült a kezdeti populáció egy egyede. A felhasználó megadhatja, ha kiindulási anyag OD függvényét kívánja dekonvolválni. Ebben az esetben a program a függvény maximum utáni 5 pontból álló részét exponenciális lecsengésűvé alakítja és a teljes lefutást meredekebbé teszi, ami sok esetben javítja a kapott végeredményt. Fitneszfüggvény A fitnesz értékek kiszámolásához szükség van az egyes egyedek konvolúciójára az effektív impulzussal, valamint annak összehasonlítására az ismert képfüggvénnyel. A konvolúció után kiszámítható a képfüggvény és a rekonvolvált átlagos négyzetes eltérése: MSE = N m=1 [(ô s) m i m ] 2 N 1 (4.3) Ezt minden egyedre elvégezve egy vektort kapunk. A fitnesz függvényt ezek alapján így írhatjuk fel: fit(i) = 1 min(mse) 2 10 + MSE 2 i, (4.4) ahol min(mse) a populációban előforduló legkisebb MSE értéket jelöli, MSE i pedig a MSE vektor i. elemét. Kiválasztás, keresztezés A keresztezéshez a szülőket fitnesz-arányos kiválasztással választja ki a program. Ennek megvalósítása a rulettkerék kiválasztással történik. Minden új egyedhez két szülőt kell kiválasztani, melyek fitnesz-súlyozott átlagaként áll elő az új egyed. Az új generációk létrehozásakor a program elitizmust alkalmaz, melynek során megtartja az előző generáció legmagasabb fitnesz értékkel rendelkező egyedét és annak meghatározott valószínűséggel mutáción átesett változatát. Mutáció A mutáció a keresztezés után történik a felhasználó által beállítható valószínűséggel. Ennek során az újonnan létrehozott egyedhez egy, a felhasználó által megadott paraméterek alapján véletlenszerűen generált Gauss-függvényt adunk hozzá. A felhasználó megadhatja a 25
függvény maximális amplitúdóját, standard deviációját és tartóját. A megadott paraméterek alapján véletlenszerűen generált Gauss-függvény amplitúdója pozitív és negatív is lehet. A Gauss-függvény amplitúdója a futás során csökken, ahogy az algoritmus konvergál a megoldás felé. Ehhez minden iteráció során a következő faktorral szorozza meg a program a felhasználó által megadott maximális mutációs amplitúdót: MSE f = 1 e 1 exp_error, (4.5) ahol MSE a populáció M SE értékeinek az átlagát, exp_error pedig a kísérleti hiba becslését jelenti. Lehetőség van arra, hogy a mutáció valószínűsége az iterációk során emelkedjen. 4.1.2. Az algoritmus működése Az előző alfejezetben bemutattam, hogy az általunk használt genetikus algoritmusban a genetikus algoritmusok fő elemei milyen módon kerültek megvalósításra. Most röviden ismertetem az algoritmus működését. Az algoritmus a dekonvolúciót három, egymástól elkülönülő fázisban hajtja végre. Az előző alfejezetben láttuk, hogy a kezdeti populáció alapját a mért o tárgyfüggvény képezi. Problémát jelent, hogy a függvény maximum előtti részét összenyomva sem érhető el megfelelően meredek felfutás. Mivel az algoritmus sikeres működése szempontjából elengedhetetlen a megfelelő minőségű kezdeti populáció használata, ezt a problémát korrigálni kell. Ehhez az algoritmus az előző alfejezetben ismertetett kezdeti populáció tagjait egy megfelelőnek talált helyen elvágja (a vágási pont előtti elemeket 0-val teszi egyenlővé). Ezt a vágási pontot határozza meg az algoritmus első két fázisa. Amennyiben a felhasználó ismeri az optimális vágási pontot, az első két fázist kihagyhatja, ebben az esetben a program a felhasználó által megadott vágási pontot használja a harmadik fázis során. 1. fázis A vágási pont első becslését úgy kapjuk, hogy Wiener szűrő segítségével, Fourier transzformáció alkalmazásával dekonvolváljuk a tárgyfüggvényt. Az így kapott függvény első nem nulla eleme és a maximuma közt középen található pont a vágási pont első közelítése. A vágási helyet a program ez után tíz csatornával megnöveli és ezt használja az első fázis kiindulópontjaként. Az első fázis első lépésében a program a meghatározott vágási pont körüli ±5 pontos intervallumban minden vágási ponthoz létrehoz 100-100 egyedet. A kezdeti populáció egyes egyedeihez generált véletlen paramétereket a program elmenti. A kezdeti populáció létrehozása után a megfelelő vágási pontnál elvágja a függvényeket a program. A vágási hely minden esetben véletlenül kerül generálásra a program által választott pont ±d0_std intervallumban, ahol d0_std a felhasználó által megadható paraméter. Az így generált egyedekre kiszámolja a 4.3 egyenletben definiált MSE értéket. A vágási pont új becs- 26
lése ezek után az a vágási hely lesz, melyet megadva vágási pontként a legjobb populáció jött létre. Ha az így kapott vágási pont túl közel van ez eredeti, Wiener-szűrővel kapott érték ±5 intervallum széleihez, akkor a fenti eljárást újra megismétli a program a vágási pont környezetében, ezzel javítva a becslést. A program minden vágási hely esetén elmenti a legjobb megoldás generálásakor használt paramétereket. 2. fázis Az algoritmus 2. fázisának feladata az előző lépésben meghatározott vágási pont további javítása. Ehhez az algoritmus új kezdeti populációkat hoz létre. A kezdeti populáció előállításához szükséges paraméterek generálásakor a program megnézi, hogy az adott vágási ponthoz az előző lépésben milyen paramétereket talált a legjobbnak és azokat használja kis véletlen korrekciókkal. A vágási hely alapja az előző lépésben talált optimális vágási pont. Ennek a ±2 pontos környezetében generál minden ponthoz 50-50 egyedet. A kezdeti populáció generálása után 20 alkalommal fut le maga a genetikus algoritmus, külön-külön mind az 5 vágási pont esetén. Az iterációk száma minden esetben 100. Egy iteráció a következő lépésekből áll: 1. Konvolúció az impulzusfüggvénnyel, MSE vektor számítása, legjobb egyed meghatározása 2. Fitnesz vektor kiszámítása 3. Minden új egyedhez 2 szülő kiválasztása, N 2 új egyed létrehozása 4. Az új egyedek véletlenszerű mutációja 5. Az előző generáció legjobb egyedének beillesztése az új generációba 6. Az előző generáció legjobb egyedének véletlenszerű mutációja, majd beillesztése az új generációba Miután mind az 5 vágási pont populációja esetén lefutott az algoritmus 20 alkalommal, a program megnézi, hogy melyik vágási ponthoz tartozó populáció nyertes egyedének az MSE értéke csökkent a legjobban az 1. lépésbeli azonos vágáshoz tartozó populáció nyerteséhez képest. Az ehhez az egyedhez tartozó vágási pontot fogadjuk el optimális vágási helynek, így a 3. fázisban ezt használja a program. 3. fázis Az algoritmus 3. lépésében történik maga a dekonvolúció. Ehhez először a program a felhasználó által megadott egyedszámú kezdeti populációt generál. Ehhez a felhasználó által megadott intervallumokon belüli egyenletes eloszlásból generál paramétereket. Az algoritmus lépései megegyeznek a 2. lépés genetikus algoritmusának lépéseivel. A program 27
jelenlegi verziójában a felhasználó adhatja meg a kívánt iterációszámot, aminek elérése után a program kiválasztja a nyertes egyedet, elkészíti a grafikonokat és kiszámolja a statisztikai jellemzőket. 28
5. fejezet Az algoritmus tesztelése Ebben a fejezetben ismertetem az algoritmus egyes elemeinek fejlesztésével elért eredményeimet. Ehhez elengedhetetlen, hogy először bemutassam, hogy milyen módszereket használunk az algoritmus tesztelésére. 5.1. Teszt adatsorok Az algoritmus működésének teszteléséhez célszerű számítógép által generált teszt adatsorok használata, ugyanis így ismerjük az elérendő végeredményt, ezáltal látjuk, hogy hogyan teljesít a program. A teszteléshez három, számítógép által generált, zajjal terhelt képfüggvényt és egy számítógép által generált impulzusfüggvényt használunk. A képfüggvényekhez tartozó, zajmentes tárgyfüggvények ismertek. A függvények a következő konszekutív reakcióban résztvevő anyagok mérhető görbéit szimulálják: A k 1 B k 2 C, ahol k 1 = 0, 005 fs 1 és k 2 = 0, 002 fs 1. A t = 0 időpontban az A anyag koncentrációja 1 mol dm 3, a másik két anyagfajta koncentrációja 0 mol dm 3. A OD függvények elkészítéséhez ismerni kell a három detektálási hullámhosszon a három anyagfajta ɛ abszorpciós koefficiensét. Ezeket összefoglaltam az 5.1 táblázatban. Az effektív impulzus egy 255 A B C ɛ A / dm 3 mol 1 cm 1 30 5 5 ɛ B / dm 3 mol 1 cm 1 20 45 30 ɛ C / dm 3 mol 1 cm 1 0 10-10 5.1. táblázat. A szimulált anyagok abszorpciós koefficiensei femtoszekundum félértékszélességű Gauss-függvény, melyet diszkrét, egymást 30 femtoszekundumonként követő adatpontokban ismerünk. 29
A megadott adatok alapján a OD függvények elkészíthetők [14]. Az 1.25 egyenlet alapján a mérhető, konvolúcióval torzított képfüggvények is kiszámíthatók. Ezeket normális eloszlású zaj terheli, melynek amplitúdója a képfüggvény maximális amplitúdójának a 2%-a. 5.1. ábra. Az impulzusfüggvény Az 5.1 ábrán ábrázoltam a használt impulzusfüggvényt. Az 5.2 ábra az A komponenshez tartozó mérhető, zajjal torzított képfüggvényt és a torzítatlan, keresett tárgyfüggvényt tartalmazza. A bemutatott teszt adatsorokon jól megfigyelhető a konvolúció torzító hatása és látható a mérési hiba is. Az 5.3 ábrán ugyanezen függvények grafikonjai láthatók az B komponens, a 5.4 ábrán pedig a C komponens esetén. A feladat tehát az ábrákon látható, zajjal és konvolúcióval torzított képfüggvények dekonvolúciója. A dekonvolúció sikerességének vizsgálatára a program három, az utolsó generáció legjobb egyedére vonatkozó statisztikai jellemzőt számol ki. Megadja a 4.3 egyenletben definiált MSE értéket és kiszámítja az ún. Durbin-Watson statisztika [15,16] értékét a rekonvolvált tárgyfüggvény és a mért képfüggvény közt, illetve ismert tárgyfüggvény esetén a talált megoldás és az ismert tárgyfüggvény közt is. A Durbin-Watson statisztika: d = T (e t e t 1 ) 2 t=2 T e 2 t t=1, (5.1) ahol T az adatpontok száma, e t pedig a t-edik adatponthoz tartozó reziduális eltérés. A fentieken kívül az iterációk után a program diagramokat készít, melyeken megtekinthető a generált kezdeti populáció, az MSE érték változása az iterációk során, az ismert és meghatározott kép- és tárgyfüggvények és ezek spektrális tulajdonságai, melyek a zajról ad- 30
5.2. ábra. 1. teszt adatsor 5.3. ábra. 2. teszt adatsor nak tájékoztatást. 5.2. Az 1. teszt adatsor dekonvolúciója Ebben az alfejezetben bemutatom, hogy az algoritmus használatával milyen eredményeket sikerült elérnem. A jelenlegi algoritmussal az 1. teszt adatsor nagyon jó dekonvolúciója oldható meg. A másik két adatsor dekonvolúciójához az algoritmus fejlesztése szükséges, így azok végeredményét a fejlesztések bemutatása során mutatom be. A szakdolgozat függelék részében ismertetem a legjobb eredményekhez használt paramétereket. 31
5.4. ábra. 3. teszt adatsor Az 1. teszt adatsor az 5.2 ábrán látható. Ahogy a generáláshoz használt reakciómechanizmusból is kiderül, az A anyag koncentrációja egy bizonyos, nem nulla kiindulási koncentrációról indul és a reakció végére a kiindulási anyag teljesen elfogy. Ez a gyakorlatban azt jelenti, hogy a dekonvolvált OD görbe felfutása végtelen meredekségű. A kezdeti populáció generálásához alkalmazott vágás képes biztosítani a nagyon meredek felfutást, így várható, hogy az 1. teszt adatsorra nagyon jó eredményeket kapunk. Kiemelendő, hogy az algoritmus pár iterációs lépés alatt elérte a konvergenciát. A kapott eredmények az 5.5 ábrán láthatók. Megállapítható, hogy nagyon jó az egyezés az ismert tárgyfüggvény és a nyertes egyed, illetve a generált képfüggvény és a rekonvolvált nyertes egyed közt is. Az algoritmus tehát ilyen jellegű függvényekre nagyon jól működik. A statisztikai adatokat a 5.2 táblázatban foglaltam össze. MSE 0,1923 DW (kép-rekonvolvált) 1,9464 DW (tárgy-nyertes) 2,0729 5.2. táblázat. Statisztikai adatok az 1. teszt adatsor dekonvolúciójához A Durbin-Watson próbastatisztika értéke az adott elemszámra optimális esetben 2, tehát a statisztikai eredmények is megerősítik, hogy a dekonvolúció nagyon jól sikerült. A fentiek alapján megállapítható, hogy a továbbiakban a 2. és a 3. teszt adatsorok dekonvolúciójával érdemes foglalkozni, közben ügyelve arra, hogy az 1. teszt adatsorral is jó eredményt adjon a program. Munkám során az én feladatom a 3. teszt adatsor dekonvolúciója volt, így az egyes teszteket is arra végeztem el. 32