Algorytmy genetyczne. Dariusz Banasiak. Katedra Informatyki Technicznej Wydział Elektroniki

Podobne dokumenty
Algorytm Genetyczny. zastosowanie do procesów rozmieszczenia stacji raportujących w sieciach komórkowych

6. Klasyczny algorytm genetyczny. 1

Zadanie 5 - Algorytmy genetyczne (optymalizacja)

SCHEMAT ROZWIĄZANIA ZADANIA OPTYMALIZACJI PRZY POMOCY ALGORYTMU GENETYCZNEGO

Algorytm genetyczny (genetic algorithm)-

Algorytmy genetyczne

Algorytmy genetyczne

Inspiracje soft computing. Soft computing. Terminy genetyczne i ich odpowiedniki w algorytmach genetycznych. Elementarny algorytm genetyczny

PLAN WYKŁADU OPTYMALIZACJA GLOBALNA OPERATOR KRZYŻOWANIA ETAPY KRZYŻOWANIA

Algorytmy genetyczne. Materiały do laboratorium PSI. Studia niestacjonarne

Algorytmy genetyczne

Algorytmy ewolucyjne NAZEWNICTWO

Algorytmy genetyczne

Algorytmy genetyczne. Materiały do laboratorium PSI. Studia stacjonarne i niestacjonarne

Generowanie i optymalizacja harmonogramu za pomoca

Algorytmy ewolucyjne. wprowadzenie

ALGORYTMY GENETYCZNE ćwiczenia

Algorytmy ewolucyjne - algorytmy genetyczne. I. Karcz-Dulęba

Obliczenia ewolucyjne - plan wykładu

Algorytmy genetyczne w optymalizacji

Algorytmy genetyczne. Paweł Cieśla. 8 stycznia 2009

Katedra Informatyki Stosowanej. Algorytmy ewolucyjne. Inteligencja obliczeniowa

Algorytmy ewolucyjne. Łukasz Przybyłek Studenckie Koło Naukowe BRAINS

Strategie ewolucyjne (ang. evolu4on strategies)

Równoważność algorytmów optymalizacji

Dobór parametrów algorytmu ewolucyjnego

Algorytmy stochastyczne, wykład 01 Podstawowy algorytm genetyczny

METODY HEURYSTYCZNE wykład 3

Algorytmy ewolucyjne Część II

SZTUCZNA INTELIGENCJA

PLAN WYKŁADU OPTYMALIZACJA GLOBALNA HISTORIA NA CZYM BAZUJĄ AG

Algorytmy genetyczne (AG)

Obliczenia Naturalne - Algorytmy genetyczne

LABORATORIUM 4: Algorytmy ewolucyjne cz. 2 wpływ operatorów krzyżowania i mutacji na skuteczność poszukiwań AE

Teoria algorytmów ewolucyjnych

Modyfikacje i ulepszenia standardowego algorytmu genetycznego

OBLICZENIA EWOLUCYJNE

ALGORYTMY GENETYCZNE (wykład + ćwiczenia)

OBLICZENIA EWOLUCYJNE

METODY HEURYSTYCZNE wykład 3

Algorytmy ewolucyjne (2)

Standardowy algorytm genetyczny

Metody Rozmyte i Algorytmy Ewolucyjne

Techniki ewolucyjne - algorytm genetyczny i nie tylko

Algorytmy ewolucyjne 1

Wstęp do Sztucznej Inteligencji

Program "FLiNN-GA" wersja 2.10.β

Algorytmy memetyczne (hybrydowe algorytmy ewolucyjne)

Systemy Inteligentnego Przetwarzania wykład 4: algorytmy genetyczne, logika rozmyta

BIOCYBERNETYKA ALGORYTMY GENETYCZNE I METODY EWOLUCYJNE. Adrian Horzyk. Akademia Górniczo-Hutnicza

Techniki optymalizacji

Algorytmy genetyczne służą głównie do tego, żeby rozwiązywać zadania optymalizacji

Algorytmy ewolucyjne (3)

Algorytmy ewolucyjne `

WAE Jarosław Arabas Pełny schemat algorytmu ewolucyjnego

ALGORYTMY GENETYCZNE

SZTUCZNA INTELIGENCJA

Strategie ewolucyjne (ang. evolution strategies)

Zaawansowane programowanie

Aproksymacja funkcji a regresja symboliczna

Programowanie genetyczne, gra SNAKE

METODY SZTUCZNEJ INTELIGENCJI algorytmy ewolucyjne

Algorytmy genetyczne Michał Bereta Paweł Jarosz (część teoretyczna)

Optymalizacja optymalizacji

Algorytmy stochastyczne, wykład 02 Algorytmy genetyczne

Metody przeszukiwania

INTELIGENCJA OBLICZENIOWA. dr Katarzyna Grzesiak-Kopeć

Automatyczny dobór parametrów algorytmu genetycznego

Zadanie transportowe i problem komiwojażera. Tadeusz Trzaskalik

SZTUCZNA INTELIGENCJA

Sztuczne sieci neuronowe. Krzysztof A. Cyran POLITECHNIKA ŚLĄSKA Instytut Informatyki, p. 311

ALGORYTMY EWOLUCYJNE. INTELIGENTNE TECHNIKI KOMPUTEROWE wykład 011. Napór selekcyjny (selektywny nacisk. Superosobniki: SELEKCJA

przetworzonego sygnału

Strefa pokrycia radiowego wokół stacji bazowych. Zasięg stacji bazowych Zazębianie się komórek

Algorytmy genetyczne w interpolacji wielomianowej

LABORATORIUM 3: Wpływ operatorów krzyżowania na skuteczność poszukiwań AE

Optymalizacja parametryczna (punkt kartezjańskim jest niewypukła).

ALGORYTMY GENETYCZNE I EWOLUCYJNE

w analizie wyników badań eksperymentalnych, w problemach modelowania zjawisk fizycznych, w analizie obserwacji statystycznych.

Algorytmy ewolucyjne

Strategie ewolucyjne. Gnypowicz Damian Staniszczak Łukasz Woźniak Marek

Temat: Algorytm kompresji plików metodą Huffmana

ALGORYTMY EWOLUCYJNE W OPTYMALIZACJI JEDNOKRYTERIALNEJ

Wykorzystanie metod ewolucyjnych w projektowaniu algorytmów kwantowych

Algorytmy genetyczne jako metoda wyszukiwania wzorców. Seminarium Metod Inteligencji Obliczeniowej Warszawa 26 X 2005 mgr inż.

Odkrywanie algorytmów kwantowych za pomocą programowania genetycznego

Programowanie genetyczne

Rój cząsteczek. Particle Swarm Optimization. Adam Grycner. 18 maja Instytut Informatyki Uniwersytetu Wrocławskiego

ALHE Z11 Jarosław Arabas wykład 11

LICZEBNOŚĆ POPULACJI OBLICZENIA EWOLUCYJNE. wykład 3. Istotny parametr AG...

LABORATORIUM 5: Wpływ reprodukcji na skuteczność poszukiwań AE. opracował: dr inż. Witold Beluch

Programowanie genetyczne - gra SNAKE

Problem Komiwojażera - algorytmy metaheurystyczne

Problemy optymalizacyjne Dana jest przestrzeń X. Znaleźć x X taki, że x spełnia określone warunki. Dana jest przestrzeń X i funkcja celu f: X R.

ZASTOSOWANIE ALGORYTMU GENETYCZNEGO DO WYZNACZANIA OPTYMALNYCH DECYZJI STERUJĄCYCH

2. CZYNNIKI ZABURZAJĄCE RÓWNOWAGĘ GENETYCZNĄ

Wstęp do informatyki- wykład 2

FOLIA POMERANAE UNIVERSITATIS TECHNOLOGIAE STETINENSIS Folia Pomer. Univ. Technol. Stetin. 2009, Oeconomica 275 (57), 53 58

Samodzielnie wykonaj następujące operacje: 13 / 2 = 30 / 5 = 73 / 15 = 15 / 23 = 13 % 2 = 30 % 5 = 73 % 15 = 15 % 23 =

Tomasz Pawlak. Zastosowania Metod Inteligencji Obliczeniowej

Transkrypt:

Dariusz Banasiak Katedra Informatyki Technicznej Wydział Elektroniki

Obliczenia ewolucyjne (EC evolutionary computing) lub algorytmy ewolucyjne (EA evolutionary algorithms) to ogólne określenia używane do opisu klasy metod wykorzystujących w procesie rozwiązywania problemu model obliczeniowy oparty na symulacji procesu ewolucji (wzorowany na ewolucji biologicznej). Wyróżnia się trzy główne klasy algorytmów ewolucyjnych: algorytmy genetyczne (ang. genetics algorithms GA), strategie ewolucyjne (ang. evolutionary strategies ES), programowanie ewolucyjne (ang. evolutionary programming EP). Autor: Dariusz Banasiak Katedra Informatyki Technicznej 2

Pierwsze algorytmy genetyczne zostały opracowane w latach 60-tych XX wieku przez J. H. Hollanda z University of Michigan. Są one historycznie najstarszym i najlepiej poznanym kierunkiem obliczeń ewolucyjnych. Własności algorytmów genetycznych (D. Goldberg): nie przetwarzają bezpośrednio parametrów zadania, lecz ich zakodowaną postać prowadzą poszukiwania wychodząc z wielu punktów (populacji) korzystają wyłącznie z funkcji celu (nie wymagają dodatkowych informacji o danym problemie) stosują probabilistyczne (losowe) reguły wyboru Autor: Dariusz Banasiak Katedra Informatyki Technicznej 3

Zastosowanie algorytmów genetycznych Algorytmy genetyczne są stosowane do poszukiwania rozwiązań problemów trudno definiowalnych w sensie matematycznym (algorytm rozwiązania jest nieznany lub bardzo złożony np. problem komiwojażera), ale znany jest sposób oceny jakości rozwiązania. Przykłady zastosowań algorytmów genetycznych: zadania optymalizacji zadania przeszukiwania uczenie robotów i urządzeń modelowanie procesów biologicznych, ekonomicznych, ekologicznych, społecznych Autor: Dariusz Banasiak Katedra Informatyki Technicznej 4

Podstawowe pojęcia Gen (cecha, znak lub detektor) stanowi pojedynczy element chromosomu a i,j. Chromosom (ciąg kodowy lub łańcuch) jest to uporządkowany ciąg genów. Genotyp (struktura) jest to zespół chromosomów właściwych dla danego osobnika. Fenotyp jest to zestaw wartości odpowiadających danemu genotypowi. Autor: Dariusz Banasiak Katedra Informatyki Technicznej 5

Osobnik jest to zbiór parametrów zadania stanowiących rozwiązanie problemu zakodowany w postaci chromosomów. Populacja jest to zbiór osobników o określonej liczebności. Allel jest to wartość danego genu (lub też wartość cechy). Locus jest to miejsce położenia danego genu w genotypie (lub chromosomie). Funkcja przystosowania (dopasowania, oceny) pozwala ocenić stopień przystosowania poszczególnych osobników w populacji. Autor: Dariusz Banasiak Katedra Informatyki Technicznej 6

Do populacji należą dwa osobniki: Os 1 i Os 2. Genotyp opisujący strukturę osobnika składa się z trzech chromosomów. Każdy chromosom zawiera 6 genów. Wartości poszczególnych genów (allele) odzwierciedlają poszukiwane parametry zadania. Autor: Dariusz Banasiak Katedra Informatyki Technicznej 7

Mechanizm działania klasycznego algorytmu genetycznego: 1. Losowana jest pewna populacja początkowa. 2. Populacja poddawana jest ocenie (selekcja). Najlepiej przystosowane osobniki biorą udział w reprodukcji. 3. Genotypy wybranych osobników poddawane są operatorom ewolucyjnym: a) krzyżowania (odpowiednie połączenie genotypów rodziców), b) mutacji (wprowadzenia do genotypów drobnych losowych zmian). 4. Utworzenie kolejnego pokolenia (nowej populacji). Jeżeli nie znaleziono dostatecznie dobrego rozwiązania, to powrót do punktu 2. W przeciwnym wypadku uzyskujemy wynik. Autor: Dariusz Banasiak Katedra Informatyki Technicznej 8

Kodowanie parametrów zadania Pierwszym krokiem konstrukcji algorytmu genetycznego jest zakodowanie poszukiwanych parametrów zadania w postaci chromosomów. Dobór odpowiedniej metody kodowania parametrów do typu rozwiązywanego zadania nie jest zadaniem trywialnym np. sposób kodowania nie może faworyzować żadnego z możliwych do otrzymania rozwiązań. W klasycznym algorytmie genetycznym stosuje się kodowanie binarne (np. system dwójkowy). Poszczególne geny w chromosomie stanowią wówczas ciąg zer i jedynek. Autor: Dariusz Banasiak Katedra Informatyki Technicznej 9

W przypadku kodowania liczb rzeczywistych korzysta się z odwzorowania przedziału [w L, w R ] w przedział [0, 2 L 1] zgodnie z zależnością: w B = w L + w D *(w R w L )/(2 L 1), gdzie w B wartość zakodowanej liczby rzeczywistej, w L, w R wartości lewego i prawego końca przedziału liczbowego, w D dziesiętna wartość ciągu binarnego, L długość ciągu kodowego Należy zakodować liczby rzeczywiste należące do przedziału [0, 3.1] z dokładnością 0.1. Liczby te mogą wówczas przyjmować 32 wartości: 0.0, 0.1, 0.2,.., 3.0 oraz 3.1. Wartości te można przedstawić w postaci chromosomów o długości 5. Sekwencja [00000] reprezentuje wówczas wartość 0.0, sekwencja [00001] wartość 0.1 itd. Autor: Dariusz Banasiak Katedra Informatyki Technicznej 10

Metody selekcji osobników W celu zapewnienia efektywnego działania algorytmu genetycznego należy dążyć do tego, aby nowa populacja osobników (potomków) była tworzona na podstawie najlepszych osobników danej populacji (rodziców). W tym celu każdy osobnik danej populacji poddawany jest ocenie za pomocą funkcji przystosowania. Metoda selekcji powinna zapewnić, aby kolejne populacje charakteryzowały się wyższą średnią wartością funkcji przystosowania: P t+1 P t, gdzie: P t średnia wartość funkcji przystosowania dla populacji t, P t+1 średnia wartość funkcji przystosowania dla populacji t+1. Autor: Dariusz Banasiak Katedra Informatyki Technicznej 11

Metody selekcji stosowane w algorytmach genetycznych: metoda koła ruletki selekcja rankingowa selekcja turniejowa selekcja (μ + λ) W metodzie koła ruletki każdemu chromosomowi zostaje przypisany wycinek koła, którego wielkość jest proporcjonalna do wartości jego funkcji przystosowania. Większa wartość funkcji przystosowania oznacza większy wycinek koła przydzielony danemu chromosomowi (czyli większe prawdopodobieństwo wyboru danego chromosomu do nowo tworzonej populacji). Autor: Dariusz Banasiak Katedra Informatyki Technicznej 12

Przykład Populacja rodzicielska składa się z 4 chromosomów: ch 1 = [1001], ch 2 = [1000], ch 3 = [0001], ch 4 = [1011] Dla każdego chromosomu obliczamy wartość funkcji przystosowania F(ch i ) dla uproszczenia przyjmujemy, że jest to wartość dziesiętna danego ciągu binarnego: F(ch 1 ) = 9, F(ch 2 ) = 8, F(ch 3 ) = 1, F(ch 4 ) = 11 Następnie obliczamy sumę wartości funkcji przystosowania dla całej populacji: F(ch i ) = 9 + 8 + 1 + 11 = 29, dla i = 1, 2, 3, 4 i Autor: Dariusz Banasiak Katedra Informatyki Technicznej 13

W kolejnym kroku obliczamy wyrażone w procentach wielkości wycinków koła ruletki: v(ch 1 ) = 9/29 * 100% = 31.03% v(ch 2 ) = 8/29 * 100% = 27.59% v(ch 3 ) = 1/29 * 100% = 3.45% v(ch 4 ) = 11/29 * 100% = 37.93%,. Uzyskane wyniki można przedstawić w postaci graficznej. Autor: Dariusz Banasiak Katedra Informatyki Technicznej 14

100 0 v(ch4) 37,93% v(ch1) 31,03% 62,07 v(ch3) 3,45% 58,62 v(ch2) 27,59% 31,03 Poszczególnym chromosomom odpowiadają na kole następujące przedziały: ch 1 [0, 31.03], ch 2 [31.03, 58.62], ch 3 [58,62, 62.07], ch 4 [62.07, 100]. Autor: Dariusz Banasiak Katedra Informatyki Technicznej 15

W celu utworzenia nowej populacji losujemy cztery liczby z przedziału [0, 100] (N=4 ponieważ wielkość populacji nie powinna ulec zmianie). Załóżmy, że wylosowano: 20.4, 65.0, 12,4 oraz 39.0. Wylosowane liczby należą kolejno do przedziałów związanych z chromosomami: ch 1, ch 4, ch 1 oraz ch 2. Chromosomy te zostaną wybrane do nowej populacji. Wadą metody koła ruletki jest fakt, że ewolucja z każdym krokiem zwalnia. Jeżeli osobniki są podobne, to każdy dostaje równy wycinek koła i presja selekcyjna spada. Metoda słabiej rozróżnia osobniki dobre od słabszych. Autor: Dariusz Banasiak Katedra Informatyki Technicznej 16

W metodzie selekcji rankingowej osobniki należące do populacji rodzicielskiej sortuje się ze względu na wartość funkcji przystosowania. Tak posortowane osobniki tworzą listę rankingową (osobnik o największej wartości funkcji przystosowania uzyskuje najwyższą wartość rangi). Przypisana do osobnika ranga jest argumentem pewnej funkcji R, która wyznacza współczynnik selekcji osobnika będący podstawą do obliczenia prawdopodobieństwa jego wyboru do nowej populacji. Autor: Dariusz Banasiak Katedra Informatyki Technicznej 17

Przykładowe wykresy funkcji R stosowane w selekcji rankingowej: Autor: Dariusz Banasiak Katedra Informatyki Technicznej 18

Im wyższy współczynnik selekcji osobnika, tym większe prawdopodobieństwo jego wylosowania do nowej populacji. Losowanie osobników może odbywać się podobnie jak w metodzie koła ruletki (o wielkości wycinka dla osobnika decyduje jednak jego miejsce w rankingu oraz przypisany zgodnie z funkcją R współczynnik selekcji). Wadą metody jest niewrażliwość na różnice pomiędzy kolejnymi osobnikami w kolejce. Może się okazać, że sąsiadujące na liście rozwiązania mają różne wartości funkcji oceny, ale dostają prawie taką samą ilość potomstwa. Autor: Dariusz Banasiak Katedra Informatyki Technicznej 19

W selekcji turniejowej należące do danej populacji osobniki rozgrywają między sobą turniej. Działanie metody rozpoczyna się od ustalenia rozmiaru turnieju (zazwyczaj T size < 5). Do każdego pojedynku wyznacza się losowo ustaloną liczbę grup chromosomów. Zwycięzcy poszczególnych pojedynków rywalizują ze sobą do momentu wyłonienia zwycięzcy całego turnieju. W danym kroku należy przeprowadzić tyle turniejów, ilu osobników powinno być w nowej populacji. Autor: Dariusz Banasiak Katedra Informatyki Technicznej 20

Schemat ilustrujący działanie selekcji turniejowej (T size = 3): Autor: Dariusz Banasiak Katedra Informatyki Technicznej 21

Operatory genetyczne Otrzymana w wyniku selekcji nowa populacja zostaje poddana działaniu operatorów genetycznych. Celem tego etapu jest wygenerowanie nowego pokolenia, które powinno być lepiej dopasowane do założonego środowiska (dążymy do uzyskania lepszego rozwiązania niż w poprzednim pokoleniu). W klasycznym algorytmie genetycznym stosowane są dwa operatory: krzyżowania mutacji. Autor: Dariusz Banasiak Katedra Informatyki Technicznej 22

Operator krzyżowania ma za zadanie łączyć cechy pochodzące z różnych osobników populacji. W algorytmach genetycznych krzyżowanie jest operatorem dominującym (jest stosowane zdecydowanie częściej niż mutacja). Typowy operator krzyżowania z pary rodzicielskiej tworzy parę potomków. W takim przypadku pierwszym etapem krzyżowania jest wylosowanie z populacji rodzicielskiej dwóch osobników. Następnie losowany jest punkt (lub punkty) krzyżowania. Autor: Dariusz Banasiak Katedra Informatyki Technicznej 23

W przypadku krzyżowania jednopunktowego następuje przecięcie chromosomów rodzicielskich w tym samym punkcie. Początkowe fragmenty chromosomów (do miejsca krzyżowania) pozostają bez zmian, natomiast pozostałe fragmenty chromosomów (od miejsca krzyżowania) ulegają wymianie (krzyżowaniu). Dane są dwa chromosomy: ch 1 = [01101], ch 2 = [11000]. Wylosowano punkt krzyżowania równy 3. W wyniku otrzymujemy dwa nowe chromosomy: ch 1 = [011 00], ch 2 = [110 01]. Autor: Dariusz Banasiak Katedra Informatyki Technicznej 24

Schemat krzyżowania jednopunktowego: Punkt krzyżowania Rodzic 1: 0 1 1 0 1 0 1 1 0 0 Dziecko 1 Rodzic 2: 1 1 0 0 0 1 1 0 0 1 Dziecko 2 Modyfikacją krzyżowania jednopunktowego jest krzyżowanie wielopunktowe np. krzyżowanie dwupunktowe polega na wymianie w chromosomach rodziców tych fragmentów, które znajdują się między wyznaczonymi punktami krzyżowania. Autor: Dariusz Banasiak Katedra Informatyki Technicznej 25

Mutacja polega na zmianie wartości wybranego elementu ciągu kodowego. Przy kodowaniu binarnym jest to zanegowanie w chromosomie wybranej pozycji (bitu). Mutacja może również polegać na zamianie w chromosomie dwóch dowolnych genów (bitów). Funkcją mutacji jest zapewnienie, aby reprodukcja i krzyżowanie nie wyeliminowały potencjalnie korzystnego materiału genetycznego. Jej zadaniem jest wprowadzanie różnorodności w populacji (zapobieganie przedwczesnej zbieżności algorytmu). W przypadku algorytmów genetycznych mutacja wykonywana jest bardzo rzadko (częstość mutacji jest rzędu jeden na tysiąc skopiowanych bitów). Autor: Dariusz Banasiak Katedra Informatyki Technicznej 26

Teoria schematów Teoria schematów stanowi formalną analizę działania algorytmów genetycznych (jej twórcą jest J. H. Holland). Schemat jest to wzorzec opisujący podzbiór ciągów podobnych ze względu na ustalone pozycje. Do definiowania schematów używamy alfabetu { 0,1,* }, gdzie symbol * oznacza wartość 0 lub 1. Chromosom ch i należy do schematu S j wtedy i tylko wtedy, gdy występujący na każdej pozycji symbol w ch i odpowiada symbolowi w schemacie S j, przy czym symbol * oznacza możliwość wystąpienia 0 lub 1. Autor: Dariusz Banasiak Katedra Informatyki Technicznej 27

Przykładowe schematy: S 1 = 1**1 = { 1001, 1011, 1101, 1111 } S 2 = 11** = { 1100, 1101, 1110, 1111 } Rzędem schematu S j, który oznaczamy przez o(s j ), nazywamy liczbę ustalonych pozycji (0 i 1) w schemacie. o(s 1 )= o(1**1)= 2, o(s 2 )= o(11**)= 2, o(s 3 )= o(***1)= 1 Rozpiętością schematu S j, którą oznaczamy przez d(s j ), nazywamy odległość między dwiema skrajnymi pozycjami ustalonymi: d(s 1 )= d(1**1)= 3, d(s 2 )= d(11**)= 1, d(s 3 )= d(***1)= 0 Autor: Dariusz Banasiak Katedra Informatyki Technicznej 28

Twierdzenie o schematach Krótkie, niskiego rzędu i oceniane powyżej średniej schematy uzyskują wykładniczo rosnącą liczbę łańcuchów (reprezentantów) w kolejnych pokoleniach algorytmu genetycznego. Hipoteza o blokach budujących Algorytm genetyczny poszukuje działania zbliżonego do optymalnego przez zestawienie krótkich (o małej rozpiętości), niskiego rzędu schematów o dużej wydajności działania, zwanych blokami budującymi. Autor: Dariusz Banasiak Katedra Informatyki Technicznej 29

Zastosowania algorytmów genetycznych zagadnienia optymalizacji automatyczne programowanie uczenie robotów i urządzeń projektowanie układów elektronicznych (np. układów logicznych, filtrów) wspomaganie projektowania sieci neuronowych modelowanie procesów w ekonomii modelowanie zjawisk występujących w ekologii modelowanie naturalnych systemów odpornościowych badanie systemów społecznych Autor: Dariusz Banasiak Katedra Informatyki Technicznej 30