Rozmyty jubileusz

Niepozorne słówka

Pozostańmy jeszcze w kręgu medycyny i zacytujmy zdanie z opisu bakteryjnego zapalenia migdałków (Encyklopedia Zdrowia PWN): "W migdałkach, oprócz zmian głównie nieżytowych jak w zakażeniach wirusowych, często dochodzi do cięższych zmian zapalnych wywoływanych przez bakterie". Co znaczą terminy "głównie", "często" czy "cięższych"? Jak interpretować operator "oprócz"? Nawet niepozorne słówka typu "jak" mogą skrywać informacje wymagające precyzyjniejszej interpretacji. Tutaj właśnie dochodzimy do istotnego problemu projektowania systemów informatycznych: braku wspólnego języka specjalistów IT i użytkowników.

Jest to trochę problem tłumacza, z wykształcenia historyka, znającego perfekcyjnie język obcy, ale niemającego pojęcia o medycynie.

Zamiast niego lepszy byłby lekarz, choćby z chropawą znajomością języka, ale od razu wiedzący "o co chodzi". Tyle że tłumacz może pracować sam, a zespół projektowy wspólnie musi wyspecyfikować sytuację rzeczywistą w kategoriach informatycznych. Z pomocą przychodzi logika rozmyta, stanowiąca pomost między precyzyjnym światem modeli matematycznych i algorytmów a wiedzą fachowców wyrażaną regułami językowymi.

System ERP generujący zlecenia produkcyjne czyni to na podstawie kilku rodzajów parametrów, takich jak poziom zapasów, czas dostawy surowców bądź czas produkcji. Oczywiście, ostatecznym weryfikatorem proponowanego przez system planu produkcji jest człowiek, ale można planiście dostarczyć bardziej kwalifikowane informacje, wykorzystując jego doświadczenia, czyli reguły typu: "jeśli czas dostawy jest długi, a poziom zapasów niski, to priorytet zadania jest wysoki". Dla informatyka oznacza to po prostu:

IF czas_dostawy IS długi AND poziom_zapasu IS niski THEN priorytet IS wysoki

Teraz wystarczy, że zostaną zdefiniowane rozmyte funkcje przynależności, np. "długi" dla czasu dostawy.

Narzędzie dla zuchwałych

W złożonym modelu takich funkcji będzie bardzo wiele, w silnikach japońskich samochodów implementuje się ich setki. Już z tych prostych przykładów widać, że korzystanie z logiki rozmytej oznacza większy wysiłek programisty, działającego wedle strategii:

1. Opis świata rzeczywistego regułami w języku naturalnym;

2. Przekształcenie reguł na model rozmyty (fuzzyfikacja);

3. Przetwarzanie rozmytych informacji;

4. Interpretacja uzyskanych wyników w kategoriach rzeczywistych (defuzzyfikacja).

W szczególności dla fuzzyfikacji i defuzzyfikacji nie ma jednoznacznych reguł projektowych. Nie można np. z góry przewidzieć, jaki rodzaj operatora jest najlepszy, względnie jak konstruować funkcje rozmyte. Wcześniej pokazano bardzo proste operatory. W rzeczywistości warto sięgać po bardziej złożone, które posługują się zmienną określającą stopień kompensacji, np. dla naturalnego "i":

IN = (X + Y - XY)1 - S ( XY )S

Dla S = 0 działa tylko pierwszy człon operatora, dla S = 1 odpowiednio tylko drugi. W ten sposób dla różnych wartości stopnia kompensacji S można uzyskiwać funkcje z większą lub mniejszą zawartością komponentów składających się na naturalne "i" (IN).

Logika rozmyta jest zatem narzędziem bardziej złożonym niż klasyczna i dlatego jej stosowanie wymaga zwiększonego wysiłku projektowego, ale prowadzi też do lepszych jakościowo efektów. Mamy tu także do czynienia z technologią dyfuzyjną, tj. mającą szerokie i uniwersalne zastosowanie w różnych dziedzinach. Już dziś, obok systemów ekspertowych, algorytmów genetycznych i sieci neuronowych, stanowi ona jeden z filarów sztucznej inteligencji.


TOP 200