• Nie Znaleziono Wyników

Wprowadzenie do języków klasy FOOSL na przykładzie definicji języka OMEGA

N/A
N/A
Protected

Academic year: 2021

Share "Wprowadzenie do języków klasy FOOSL na przykładzie definicji języka OMEGA"

Copied!
17
0
0

Pełen tekst

(1)1. Wit Urban Katedra Informatyki. Wprowadzenie do języków klasy FOOSL na przykładzie definicji języka OMEGA Streszczellle: W ilrtykule zaprezentowfmo propozycję nowej klllSy języków programowania nazwanych w skrócie FOOSL (Fuzzy Object Orielłled Silll//lafioll Laugl/age). Jej przeznaczeniem ma. być. informatyczne wspomaganie programowego zapisu eksperymentów. symulacyjnych opartych na wykorzystaniu metod teorii zbiorów rozmytych. Opracownie przedstawia definicję języka OMEGA. Słowa. I<lnczowe: języki programowania, symulacja. systemy rozmyte, dynamika syste-. mowa.. 1. Wprowadzenie Celem niniejszego opracowania jest prezentacja koncepcji nowej kategorii programowania w klasie języków symulacji obiektowej. Dlajej określenia zosta ł przyjęty termin FllZZY Object Orienlul Simala/ion Language Uęzyk symulacji obiektowej z modyfikacją rozmyto-zbiorową). Podstawowym założeniem tej kategorii języków programowania powinno się stać umożliwie­ nie programowego zapisu różnego rodzaju symulacyjnych modeli dynamiki systemów wykorzystujących metody teorii zbiorów rozmytych. Zakres- wykorzystywanych mechanizmów programowych jest oczywiście uzależniony od przyjętej koncepcji modelu symulacyjnego. Dlatego też prezentacja koncepcji języków FOOSL została ograniczona w artykule do dynamiki systemowej z modyfikacją rozmyto-zbiorową. Takie podejście do budowy modelu symulacyjnego umożliwiło zdefiniowanie pierwszego języka omawianej kategorii. Zostala przyjęta dla niego nazwa OMEGA wykorzystywana także w dalszym ciągu opracowania. Przy jego powstaniu zostały wykorzystane doświadczenia związane z programowaniem obiektowym oraz definicja języka DELTA. języków.

(2) I. Wit Urban. [Wołoszyn 1977] służącego do eksperymentów symulacyjnych z modelami dynamiki systemowej. Język OMEGA charakteryzują następujące własności wynikające z programowej implementacji metod teorii zbiorów rozmytych: - dzialania na liczbach rozmytych, - wykorzystanie funkcji rozmytych, - operacje mnogości owe dla funkcji rozmytych. Pozwalają one na wieloaspektowe badanie zjawisk w następstwie wykorzystania liczb rozmytych oraz syntezę symulacji wariantowej w jednym eksperymencie. Dodatkowym atutem języka OMEGA jest możliwość symulacyjnego śledzenia struktury badanego systemu poprzez wykorzystanie zmienności zależności funkcyjnych modelu. Dalsze punkty artykulu prezentują kolejne elementy skladniowe proponowanej definicji języka OMEGA.. 2. Elementy programu W ogólnym przypadku program składa się z: - specyfikacji liczby kroków symulacji, - deklaracji modeli dynamiki rozmytych systemów ekonomicznych, - deklaracji i inicjacji rozmytych zasobów, rozmytych strumieni i rozmytych zmiennych pomocniczych modeli, - deklaracji i inicjacji rozmytych funkcji struktury modeli, - równań zasobów rozmytych, - równań rozmytych strumieni, - rozmytych równań pomocniczych, - rozmytych równali struktury modelowanego systemów. Przeznaczeniem pojedynczego modelu jest odwzorowanie dynamiki określo­ nego aspektu badanego systemu. Kolejności zdefiniowania modeli odpowiada następstwu w którym są one przetwarzane w trakcie eksperymentu symulacyjnego. Celem uproszczenia zapisu programowego układu takiego eksperymentu zostały przyjęte następujące zasady odwołujące się do koncepcji obiektowego podejścia w programowaniu: - deklaracja modelu jest równoczesną definicją klasy i aktywacją jej obiektu. W tym celu wykorzystywany jest konstruktor domniemany wywoływany z parametrami odpowiadającymi wartościom inicjacyjnym rozmytych zmiennych modelu; - funkcje rozmyte struktury modelu należy również identyfikować z szeroko rozumianymi zmiennymi rozmytymi; - jedyną fu nkcją składową każdej klasy jest model wybranego aspektu dynamiki rozmytego systemu ekonomicznego (poza niejawnie zadeklarowa-.

(3) I. Wprowadzenie do języków klasy FOOSL .... nym konstruktorem) definiowany przy tworzeniu programu eksperymentu symulacyjnego; - każda klasa, a zarazem jej obiekt jest deklarowana wyłącznie z sekcją publiczną. W konsekwencji dostęp do zmiennych zasobów, strumieni i pomocniczych oraz rozmytych funkcji struktury modelu jest dostępny z poziomu każ­ dego innego modelu poprzez uzupełnienie identyfikatora zmiennej odwoła­ niem do modelu; - ogół zmiennych oraz stałych modelu jest wykorzystywany w przetwarzaniu jako rzeczywiste liczby rozmyte zgodnie z akceptowanymi definicjami teorii zbiorów rozmytych. Zmienne muszą być w sposób jawny inicjowane jako rzeczywiste liczby rozmyte. Stałe występujące w modelu są automatycznie poddawane konwersji do postaci rozmytej; - funkcje występujące w modelu muszą być również inicjowane przy pomocy funkcji rozmytych zdefiniowanych dla zbioru rozmytych liczb rzeczywistyc1l. Odwołania do funkcji standardowych w modelu są automatycznie przekształcane na wywolania funkcji rozmytych.. 3.. Słowa. kluczowe. Słowa. zawarte na niżej przedstawionej liście pełnią funkcje deklaracji i indo zbioru slów kluczowych języka OMEGA. Słowa te są zastrzeżone i nie mogą być w związku z tym używane do oznaczania zmiennych i funkcji modeli zawartych w programie.. strukcji i. należą. model bcgin. Timc. en. fuzzy func. sin tg arcctg sqrt fis fgt. Cos. Is. Ot POINTS. TRN. fuzzy num. Ctg Abs Lin. Feq Eq. 4. Identyfikatory Identyfikatorami w języku OMEGA są słowa, które mogą być użyte do oznaczania obiektów programu źródłowego. Są nimi liczące nie więcej niż 30 ZIUtków ciągi liter, cyfr oraz znaku ':' zaczynające się od litery. Znak '_' może być również wykorzystywany w nazwie, ale nie może być pierwszym znakiem identyfikatora..

(4) I Ponieważ. Wit Urban. obiektami w sensie definicji języka OMEGA. są. przede wszyst-. kim zmienne zasobów, sU'umieni i pomocnicze oraz rozmyte funkcje struktury, ich identyfikatory powinny na schemacie I.. być. tworzone zgodnie z konwencją. przedstawioną. Schemat l . Zasady tworzenia identyfikatorów <identyfikator modełu>::<ciąg znaków zawierający litery i cyfry zaczynający się od litery> <identyfikator zmiennej>::<wlasny identyfikator zmiennej>[[:<opóźnienic>l<opóźnicnie domyślnc>]:<idcl1tyfikntor modelu>l<model domniemany>] <własny identyfikator zmiennej>: :=<ciąg znaków zawierający litery i cyfry zaczynający się od litery> <ideol yfikator runkcji>: :=<wlasny identyfikator fllnkcji>[[ :<op6inienic>l<opóżnienie domyślne> ]:<idcJlty fikator modelu>l<model domniemany> 1 <własny identyfikator funkcji>::::::<ciąg znaków zawicrajl}cy Iitery i cyfry zaczy nający się od litery> <opóźnicnic>::=<liczba naturalna lub O> <opóźnienie domy ś lne> ::=<opóźnicllie domyślne wynosi O> <model domniem,my>::=<modcl, w klórym została zadeklarowana zmienna>. 5.. Llterały. Literalem w języku OMEGA jest zapis reprezentujący daną. Ze sposobu zapisu danej zgodnie z przyjętymi zadadami interpretacji wynikająjej atrybuty, w tym wartość dla danych numerycznych.. Literal numeryczny Za literal numeryczny jest uznawany w języku OMEGA każdy zapis liczby całkowitej lub rzeczywistej w systemie dziesiętnym zgodny ze standardami obowiqzującymi dla tego typu literalów w podstawowych językach programowania takich jak C, Pascal itp. Literai numeryczny , który zgodnie z ogólnie przyjętymi zasadami staje s ię nazwą stalej, w przyjętej definicji języka jest równocześnie nazwą rozmytej stałej rzeczywistej po dokonaniu konwersji identyfikowanej przez nią wartości całkowitej lub rzeczywistej.. Rozmyty literal rzeczywisty Rozmytym literalem rzeczywistym jest zapis rozmytej liczby rzeczywistej oparty na ogólnych zasadach notacji liczb rozmytych przedstawionych w pracy..

(5) I. Wprowadzenie do języków klasy FOOSL. ... Schemat 2. Rozmyty literal rzeczywisty <rozmyty literat rzcczywisty>::={ <wart ość. numeryczna>/<wartość. [[+< wartość numcryczna>/<warto~ć <wartość numeryczna>:::::<litcrał. <wa rtoś ć. funkcji. <litera] funkcji. numeryczny> numeryczny. przynalcżności> :: =<litcral. prly n a lcżnośc i> ::=< lilcra l. funkcji przynależności> funkcji pt-tynnleżno Sci> ]+ ... J}. warto śc i. funkcji. przy należno śc i >. numeryczny dla liczb rzeczywistych z p rze d zia łu. 10;11>. Literal funkcj i rozmytej Literałem funkcji rozmytej jest zapis funkcji rozmytej oparty na ogólnych zasadach notacji zbiorów rozmytych przedstaw io nych w pracy [Zadeh 1965] i zgodny z konwencją przedstawioną na schemacie 3.. Schemat 3. LiteraI funkcji rozmylej. określo nej. dla argumentów rozmytych. <literal funkcji rozmytej>: ::::{ <literal funkcji slalldal'dowej>[(paramctr[[ ,parametr] ])]I<Włlltość funkcji przyn n l eżno ści>[[+<literal funkcji standardowej> [(parametl'[[,parametl'J, ... ])]/<wal'tosć funkcji przynależności>1+·· .J) <parametr>: :=<Iiteral numeryczny>l<rozmyty l itemł rzeczywisty>l<iclcntyrikator zmiennej> <literai fun kcj i standardowcj>::=<nazwa funkcji standardowej> <wartość funkcji przynależności>::=<literal numeryczny wartości funkcji p rzy należno ści> <literai funkcj i prlynależnosci>::;::;<litcral numeryczny dla liczb rzeczywistych z przedziału l' ••. 10;1]>. 6. OgranlclInlkl Zbiór ograniczników tworzą: - operatory - Uednoargumentowy), +, - (dwuargumentowy), * , I , ++ , -- , l, &, - znaki interpunkcyjne (. ; .).. 7. Jednostki leksykalne Jednostkami leksykalnymi programu OMEGA są, tak jak w przypadku innych języków programowania , słowa kłuczowe, identyfikatory, litera ły i ograniczniki. Podział programu na jednostki leksykalne realizowany jest według kolejności zgodnej od lewej do prawej i od góry do dołu. Według przyję­ tej procedury analizy programu za kolejną jednostkę lek syka lną uznaje si ę najdłuższy ciąg znaków, który mógłby uchodzić za taką jednostkę. Dlatego też w przypadku bezpośredniego sąsied ztwa dwóch jednostek leksykalnych, takich jak słowo kluczowe, identyfi kator lub literal, powinny one zostać oddzielone od siebie odstępem, znakiem końca wiersza lub odpowiednim ogranicznikiem..

(6) I. Wit Urban. 8. Deklaracie Zgodnie z. obowiązującym. standardem warunkiem poprawnego. odwołania. się do zmiennej lub funkcji jest uprzednie jej zadeklarowanie. W przypadku języka OMEGA w przeciwieństwie jednak do innych klasycznych języków programowania występują wyłącznie typy proste. Jednak ze względu na ich. znaczenie definicyjne zmienne i funkcje tych typów można uznać za specyficzną formę agregatów w znaczeniu ogólnie pojmowanego kryterium podziału zmiennych na skalary i agregaty. Tak więc w tym sensie predefiniowane w języku OMEGA typy proste spełniają wymogi stawiane typom złożonym w poszechnie przyjętym znaczeniu. Innym aspektem omawianego języka jest wprowadzenie nowego typu wyrażania operacji, jakim jest złożenie funkcji na bazie definicji zbioru rozmytego. Typ ten został wprowadzony ze względu na potrzeby związane z modelowaniem dynamiki struktury w dynamice systemowej z modyfikacjl) rozmyto-zbiorową. Jego wykorzystanie umożliwia nie tylko wariantowe odwzorowanie struktury badanego systemu, ale także śledzenie szeroko rozumianego rozwoju tego systemu. Rozwój w tym ujęciu powinien być traktowany jako zmiana jakościowa w organizacji systemu, towarzysząca jego funkcjonowaniu w czasie. Wprowadzenie typu funkcji rozmytej spowodowało jednak konieczność przyjęcia w ramach języka OMEGA następującej konwencji: - wszystkie funkcje występujące w modelu dynamiki systemowej, zapisanym w formie programu komputerowego, są traktowane jako funkcje rozmyte; - rozróżnia się dwie klasy funkcji standardowych dostępnych w ramach ję­ zyka programowania: a) funkcje, których argumentami są zmienne lub wartości rozmyte oraz zwracające wartości rozmyte, b) funkcje, których argumentami są funkcje rozmyte zadeklarowane w programie, występujące w nim jako stale lub odwołania do funkcji standardowych wymienionych w poprzednim punkcie i zwracające odwolania do funkcji rozmytych; - typ funkcji rozmytych jest trakowany na identycznych zasadach, jak inne typy w ramach ogólnej koncepcji języków programowania. Tak więc zmienne typu funkcyjnego wymagają wcześniejszego zadeklarowania na ogólnych. zasadach; - zmienne typu funkcyjnego podlegają również takim samym zasadom jak inne zmienne rozmyte w ramach języka OMEGA. W szczególności ze wzglę­ du na ich przeznaczenie do modelowania wariantowej struktury badanego systemu mogą być one opóźnione w czasie. W ten sposób struktura badanego systemu jest traktowana niejako jako zasób jakościowy. Jest to swego rodzaju nowość wynikająca z modyfikacji dynamiki systemowej. Podstawową różnicą tego typu zasobu w porównaniu z zasobami zachowaczymi jest ich niemierzal-.

(7) I. Wprowadzellie do języków klasy FOOSL. ... ność. Wynika to zresztą, jak to już zostało wspomniane, z jakościowego charakteru pierw szego z nich. Przyjęte zasady zost ały jednak przyjęte jako wstępne za łożenie dla konstrukcji kłasy j ęzyków FOOSL i będą podlegały praktycznej weryfikacj i w przy szłośc i. Wprowadzone w języku OMEGA modyfikacje w porównaniu z innymi językami programowania i przy uwzgłędnieniu jego przeznaczenia pozwalają wyróżnić na stępujące rodzaje deklaracji w ramach programowego zapisu modelu dynamiki systemowej z modyfikacją rozmyto -zbiorową: - deklarację liczby kroków symulacji, - deklar ację modyfikatora zmiennych i stałych rozmytych występuj~lcych w programie , - dekł aracje zmiennych rozmytych, - dekł aracje funkcji rozmytych. Niezbędnym elementem każdej deklaracji jet jej zakoJiczenie przy pomocy. ogranicznika;. Deklaracja liczby przebiegów symulacji Zadeklarowani e liczby kroków sy mulacji nie jest wymogiem koniecznym do poprawnego zapisu programu w sensie przyjętej definicji języka. W przypadku braku takiej deklaracji liczba ta powinna zostać okreś lona na poziomie wartości domyślnej ustalonej w danej implementacji języka przyjętej przy konstruowaniu translatora. W przeciwnym jednak razie zadeklarowanie liczby kroków symulacji powinno zostać dokonane na początku programu poza ciałem jakiegokolwiek zdefin iowanego w nim klaso-obiektu. Do tego celu należy wykorzystać predefiniowaną zmienną TlME zgodnie ze schematem 4. Schemat 4. Oeklarucja liczby kroków symulacji <deklaracja liczby kroków symulacji>: :::: [TIME= <liczba przebiegów symu lacji>:] <liczba przebiegów symulacji>:::::: <lilem! nUllleryczny>. Deklaracja modyfikatora zmiennych i stalych rozmytych w programie. występujących. Wykorzystywane w translatorze języka OMEGA algorytmy nume ryczne operacji mnogośc iowych i arytmetycznych na zbiorach i liczbach rozmytych cechuje dokładność. Jest ona oczywiście ograniczona przez stopień aproksymacji lini owej funkcji przynależności operandów rozmytych. Z uzyskaną dokładnością wiąże się jednak problem ograniczeJi pamięci operacyjnej komputera, wykorzystywanej do przechowywania danych o wierzchołkach lub elementach , op isujących obiekt rozmyty. Zwiększenie liczby wierzcho łkó w jest szczególnie wysokie w przypadku operacji na li czbuch rozmytych. Może to.

(8) I. Wit Urban. wywolywać istotne problemy przy wykorzystaniu translatora języka OMEGA na słabszych konfiguracjach sprzętowych. Celem rozwiązania tego problemu definicja języka została uzupełniona o modyfikatory upraszczające operandy rozmyte występujące w programie. Odpowiadają one przyjętym w tym zakresie dwóm rozwiązaniom, mającym zastosowanie wyłącznie do rozmytych liczb rzeczywistych: - transformacje każdej zmiennej lub stalej rozmytej do postaci liczby trójkątnej,. - ograniczenie liczby wierzchołków opisujących wartość rozmytą do zadanej wielkości. Podstawowym celem obu metod jest redukcja liczby wierzchołków aproksymujących fukcję przynależności. W przypadku pierwszego podejścia zamiana liczby rozmytej do postaci trójkątnej odbywa się wedlug procedury wykorzystującej procentowe zdefiniowanie stopnia rozwarcia ramion funkcji przynależności.. W celu zamiany stalych, zmiennych oraz wyników operacji pod postacią liczb rozmytych należy skorzystać z modyfikatora TRN. Sposób jego wykorzystania demonstruje schemat 5. Schemat 5. Deklaracja wykorzystywana w programie wlącznie rozmytych. trójkątnych. liczb. <wymuszenie trójkątnej transformacji>::= ITRN= <procentowy wSkainik>;} <procentowy wskainik>::= <Iitrał numeryczny>. Druga metoda redukcji łicby wierzcholków opisujących funkcję przynależ­ w języku OMEGA polega, jak to już zostalo wspomniane, na zalożeniu górnej granicy ich ilości. Oznacza to koniecność eliminacji wierzchołków nadmiarowych. Procedura ich wyznaczania sprowadza się do posortowania wszystkich rzeczywistych singletonów liczby wedlug malejącej wartości funkcji przynależności. Z ich zbioru zostają usunięte ostatnie pozycje wychocJz<)c z zalożonej maksymalnej liczności. Tym samym z opisu liczby usuwane są wierzchołki najmniej znaczące zgodnie z kryterium funkcji przynależności. Celem zdefiniowania maksymalnej ilości wierzchołków w liczbowych operandach rozmytych, należy użyć modyfikatora POINTS, w sposób zgodny ze schematem 6. ności. Schemat 6. Deklaracja maksymalnej liczby wierzch olków funkcji pamiętanych dla zmiennych w programie <definicja max . dopuszczalnej liczby. wierzchołków>::;:. <liczba wierzchołków>::::; <literal numeryczny>. przynależności. [p01NTS= <liczba. WierzchołkÓW>;).

(9) Wprowadzenie do języków klasy FOOSL. ... I. Wykorzystanie modyfikatorów TRN oraz POINTS wiąże się z dwoma podstawowymi zasadami języka OMEGA: - można skorzystać tylko z jednego modyfikatora w obrębie jednego programu eksperymentu symulacyjnego, - użycie modyfikatora powinno poprzedzać definicje modeli zawartych w pro grami e.. Deklarowanie zmiennych rozmytych W języku OMEGA została przyjęta koncepcja wykorzystania jednego typu zmiennych rozmytych. Typ ten, jak to już zostało wspomniane, został mianowicie zawężony do zbioru rozmytych liczb rzeczywistych. Ograniczenie to powinno jednak zostać usunięte w kolejnych wersjach języków klasy FOOSL. Nie ma ono jednak istotnego znaczenia z punktu widzenia praktyki symulacyjnej. Może być także stosunkowo łatwo przezwyciężone w fazie interpretacji wyników eksperymentu symulacyjnego dzięki wierzchołkowej konwencji zapisu rozmytej liczby rzeczywistej. Zmienne tego typu są przeznaczone do programowego zapisu następujących elementów modelu dynamiki systemowej z modyfikacją rozmyto-zbiorową: - rozmytych zasobów zachowawczych, - rozmytych strumieni zachowawczych, - rozmytych strumieni informacyjnych, - rozmytych wielkości pomocniczych. Deklarowanie zmiennych rozmytych powinno być umieszczane na początku definicji nowego klaso-obiektu, rozpoczynającej się od deklaracji: model i musi przyjmować następującą postać przedstawioną na schemacie 7. Schemat 7. Deklaracja zmiennej rozmytej <deklaracja zmiennych rozmytych>::::: <specyfikator typu> <deklaracje zmiennych>; <specyfikator typu>::= fuzzy num <deklaracje zmiennych>::= <deklaracja zmicnncj>[,<deklaracja zmicnncj>[", .]] <deklaracja zmiennej>::= <idenlyFikator zmiennej rozmytej>[ :::;<dcfinicja zmiennej rozmytej>] <deklaracja zmiennej rozmytej>::::: <identyfikator zmiennej rozmytej>1 <rozmyty literal rzeczywisty>. Deklaracja funkcji rozmytych Jak to już zostało wspomniane wcześniej, wprowadzenie typu funkcji rozmytej stanowi, obok wykorzystania wartości rozmytych w ogóle, o istotnej nowości języków klasy FOOSL. Dopuszczają one bowiem tym samym koncepcję zmiany struktury operacji arytmetycznych, logicznych, znakowych i bitowych w zapisie programowym. Ponadto umożliwiaj!) także zapis reguł takich dynamicznych transformacji. W przypadku języka OMEGA koncepcja ta.

(10) I. Wir Urban. zostala jednak ograniczona do funkcji rozmytych argumentów ze zbioru rozmytych liczb rzeczywistych. Jest to konsekwencją przyjętych za loże ń co do wykorzystywanych w języku numerycznych wartości rozmytych. Typ funkcji rozmytych zostal oparty na zaimplementowan iu definicji zbioru rozmytego w tym szczególnym przypadku. Jego elementami w takim znaczeniu, w języku OMEGA mogą być predefiniowane standardowe funkcj e rozmyte, których lista zostanie podana w dalszej częśc i opracowania. Funkcje roz myte są w języku OMEGA przeznaczone do programowego odwzorowani a wariantowej struktury badanego systemu w ramach modelu dynamiki systemowej z modyfikacją rozmyto-zbiorową. Deklarowanie funkcji rozmytych powi nno być umieszczane, podobnie jak w przypadku zmiennych rozmytych na początku definicji nowego klaso-obiektu rozpoczynającej s ię od deklaracji: model i musi przyjmować postać jak na schemacie 8. Schemat 8. Deklaracja funkcji rozmytej <deklaracja funkcji rozmytych>::= <specyfikator typu> <deklaracje funkcj i>; <specy fikator typu>::= 1'uzzy rune <deklaracje funkcji>::= <dek laracja danej funkcj i>(.<dck laracja danej funkcji>l .... JI <deklaracja dnncj funkcji>:::; <identyfikator funkcji rozmytej>[=<deklaracja funkcji rozmytej>1 <deklaracj a funkcji rozmytej>::::: <identyfikutor funkcji rozmytej>1 <literat funkcji rozmytej>. 9. Wyra:i:enla Wyrażeniem w języku powinny być wykonane w. OMEGA jest zapis określaj ący czy nno śc i, które celu wyznaczenia jego w arto ści . Zespół tych czynności określa się terminem opracowania wyrażenia i składa się z prostych operacji jedno- i dwuargumentowycll. O kolejności ich wykonania decydują priorytety i wiązan ia opearatorów. Decyduje stadardowa zasada, że operacje związane z operatorami o wyż­ szym priorytecie są wykonywane w pierwszej kolejności. Jeśli natomiasta dwie opearcje mają ten sam priorytet i jeden wspólny argument, \;Vówczas kolejność ich wykonania jest określona przez w iązania operatorów. W języku OMEGA zostaly zdefin iowane dwie kategorie operatorów: - operatory operacji, których argumentami są funkcje rozmyte, - operatory operacj i, których argumentami są rzezywiste wartości rozmyte. Priorytety i wiązania operatorów w tych dwóch kategoriach prezentują tabele I i 2 . Typ argumentów wyrażenia okreś la typ wyrażenia i zwh)zaną z tym interpretację operatorów, w tym także sytuacji gdy ich sympole są jednakowe dla ró żnych typów dzialaI\ . W języku OMEGA określa si ę cztery rodzaje wyrażeń:.

(11) I. WprolVadzenie do języków klasy FOOSL".. - wyrażenia mnogościowe na funkcjach rozmytych, - wyrażenia arytmetyczne dla rozmytych argumentów rzeczywistych, - wyrażenia mnogościowe dla rozmytych argumentów rzeczywistych, - wyrażenia mnogości owo-arytmetyczne dla rozm ytych argumentów rzeczywistych. Tabela l·. Operatory funkcji rozmytych Priorytet. Wiązanie. Operator (symbol). I. lewe. &. 2. lewe. t. Suma. 3. prawe. =. Podstawienie wyniku wyra1.cnia mnogościowego na argumentach typu funkcja rozmyła do zmiennej typu funkcja rozmyta. Nazwa operacji Iloczyn mnogokiowy funkcji rozmytych. Tabela 2. Operatory rozmytych. mnogoś c i owa. wartości. funkcji rozmytych. rzeczywistych. Priorytet. Wiązanie. Operator (symbol). t. prawe. .. 2. lewe. ++.~-. 3. lewe. &. 4. lewe. I. Suma Illllogo ścio wc rozmytych argumentów rzeczywistych. 5. lewe. *;. Iloczynfiloraz arytmetyczny rozmytych argumentów rzeczywistych. 6. lewe. +,.. Suma/różnica. Nazwa opcl'lIcji Ncgilcja rozmytego argumentu rzeczywistego. Zwil;kszcnic/zmnicjszenie liczby wierzcholków rozmytego argull1clHu rlcczywislego (zmiana precyzji). Iloczyn mnogościowy rozmytych argumentów rzeczywistych. arytmetyczna rozmytych argumentów l7.cczy-. wistych 7. pmwe. =. Podstawienie wyniklI wyrai.cnia mnogościowcgo, arytmetycznego lub mnogościowo-arytmetyczncgo ilU rozmytych argumentach rzeczywistych do zm iennej typu rozmyta liczba rzeczywista. Jeśli chodzi o pierszy tym wyrażeń, jego argumentami mogą być: - stale typu funkcja rozmyta (jltzzy fI/ile), - zmienne typu funkcja rozmyta. - odwolania do standardowych funkcji dostępnych w języku, których argumentami są funkcje rozmyte. Wyrażenia tego typu są przeznaczone do programowego odwzorowywania rozmytych rÓWnaI1 badanego systemu w ramach modelu dynamiki systemowej z dynamiką rozmyto-zbiorową..

(12) I. Wit Urban. W przpadku. pozostałych. trzech rodzajów. wyrażel\,. ich argmnaentami. mogą. być:. - stałe typu numerycznego, - stałe typu rozmytej liczby rzeczywistej (juzzy num), - zmienne typu rozmytej liczby rzeczywistej, - odwolania do funkcji rozmytych , - odwolania do standardowych funkcji d ostępnych w języku, których argumentami są rozmyte wartości rzeczywiste. Implementacja działań na funkcjach i liczbach rozmytych jest oparta na ich definicyjnym zakresie i znaczeniu, wynikającym z odpowiednich definicji. Konsekwencją tego założen ia jest utrzymanie przez dostępne w języku działa­ nia arytmetyczne i mnogościowe takich wlasności, jak łączność i przemienność. W przpadku omawianych wyrażel\, przy ich opracowywaniu wykonywana jest niejawna konwersja operatorowa dla: - stalych typu numerycznego, - odwołań do funkcji standardowych. W pierwszym przypadku stała taka jest przekształcana do stalej typu rozmytej wartości rzeczywistej w edług schematu 9. Schemat 9. Zasady konwersji. stałych skałarnych. do postaci rozmytej. <rozmyta slaln rzeczywista>::= «konwersja do rozmytej stalej rzeczy wi stej>). <stała. Ilumeryczna.>. <rozmyta staln rzeczywista>:: {<WiCI7;cholck rozmytej sta lej rzeczywistej>/ <wartość funkcji przynależności> } <wierzchołek rozmytej stalej rzeczywistej>: := (konwersja do liczby rzeczywistej) <stala numeryczna> <wartość. funkcji. przynależności >:: =. 1.. Konwersja wartości numerycznych do postaci rozmytej wielkości reczywistej ma także miej sce w odniesieniu do omawianej wcześniej zmiennej TIME. Jeśli chodzi o odwolanie do funkcji standardowych, to są one zastępowane odwolaniami do funkcji rozmytych utworzonymi wedłuch zasady (schemat 10). Schemat 10. Zasady tworzenia funkcji rozmytych na bazie predefiniowlInych funkcji standardowych <funkcja rozmyta>:;; «konwersjn do funkcji rozmytej» <funkcja standardowa> <funkcja rozmyta>::= {<element zbioru rozmytego funkcji rozmytej>! <wnrto~ć funkcji przynależności> } <element zbioru rozmylego funkcji rozmytej>::= <funkcja standardowa> <wartość funkcji przynależności>: : = 1..

(13) Wprowadzenie do języków klasy FOOSL. ... I. Różnice pomiędzy wyrażeniami,. których argumentami są rozmyte wielkości rzeczywiste, sprowadzają się do zakresu wykorzystywanych w nich działaJ] i związanych z nimi operatorów. Jakkolwiek argumentami tych wyrażeń mogą być także odwolania do funkcji rozmytych to jednak w języku OMEGA mieszanie operacji na funkcjach rozmytych z pozostałymi rodzajami działań jest niedopuszczałne. Wyniki tych operacji należy udostępniać dla wyrażerl na rozmytych argumentach rzeczywistych za pośrednictwem zmiennych. Wyrażenia, których argumentami są rozmyte wielkości rzeczywiste, wykorzystuje się w języku OMEGA do odwzorowywania nestępujących równań modelu dynamiki systemowej z modyfikacją rozmyto-zbiorową: - równał] zasobów rozmytych, - równarl strumieni rozmytych, rozmytych równaJ] pomocniczych. Zgodnie z obowiązującymi w tej dziedzinie standardami użycie nawiasów okrągłych O zmienia kolejność wykonywania działał] w ramach opracowywanego wyrażenia.. 10. Funkcie standardowe Definicja języka OMEGA klasyfikuje funkcje standardowe z punktu widzenia typu przekazywanych do nich parametrów oraz zwracanego wyniku. Z tego punktu widzenia wyróżnia się dwie kategorie takich funkcji: - funkcje określone dla zbioru funkcji rozmytych, - funkcje zdefiniowane dla rozmytych liczb rzeczywistych. Pierwsza z nich obejmuje przeksztalcenia przedstawione w tabeli 3 Jak wynika z przedstawionego opisu, standardowe funkcje określone dla argumentów typu funkcja rozmyta mają za zadanie modyfikowanie zależności funkcyjnych w załeżności od bieżącego kroku symulacji. Tym samym są przeznaozne do odwzorowywania decyzji o zmianie jakościowej struktury badanego systemu w ramach modelu dynamiki systemowej z modyfikacją rozmyto-zbiorową. Sposób odwołania do tych funkcji prezentuje tabela 4. Druga kategoria funkcji standardowych dostępnych w ramach języka OMEGA zostala przewidziana,jak to już zostalo wspomniane, dla rozmytych liczb rzeczywistyc11. Ich listę przedstawia poniższe zestawienie. Zgodnie z przedstawionym w tabeli 4 zestawieniem wszystkie funkcje zdefiniowane w języku są wywoływane z jednym argumentem. Funkcje, dla których liczba wymaganych parametrów jest większa od zera, określa się mianem funkcji wirtualnych. Wywalanie tych funkcji wymaga wcześniejszego zdefiniwania na ich bazie odpowiedniej funkcji rozmytej. Różnice w wy wolani ach obudwu klas funkcji standardowych prezentuje schemat 11..

(14) I. Wit Urban. Tabela 3. Funkcje sterujące wyborem przekształcenia rzeczywistych danych rozmytych Nazwa. Liczba. funkcji. argumentów. Ls. 2. Opis Funkcja sprawdza czy. biCŻt)cy. krok symulacji jest mniejszy od. wskazanego jako pierwszy parametr i jeśli warunek jest spełniony zwraca odwolanie do funkcji rozmytej przekazanej jako drugi pa.......... ............ ". "'-.-. gt. .....-. eq. rametr. W przeciwnym wypadku zwraca funkcję pustą.. .... _...... . ........ Funkcja sprawdza czy bieżący krok symulacji jest większy od wskazanego jako pierwszy parametr i jeśli warunckjest spelniony. 2. h"_.. 2. zwraca odwolanie do funkcji rozmytej przekazanej jako drugi parametr. W przeciwnym wypadku zwraca funkcję pustą. o • • _ •• __ •••• _ , , _ •. Funkcja sprawdza czy bieżący krok symulacji jest równy wskazanemu jako pierwszy parametr i jeśli warunek jest spełniony zwraca odwalanie uo funkcji rozmytej przekazanej jako drugi parametr. W przeciwnymwypadku zwraca funkcję pustą.. Tabela 4. Lista funkcji zdefiniowanych dla rozmytych liczb rzeczywistych Nazwa funkcji. Liczba Liczba argumentów parametrów. Opis. Sin. o. Sinus rozmytego argumentu rzeczywistego. Cos. O. Cosinus rozmytego argumentu rzeczywistego. Tg. O. Tangens rozmytego argumentu rzeczywistego. Ctg. O. Cotangens rozmytego argumentu rzeczywistego. Arcctg. o. Arcus cotangens rozmytego argumentu rzeczywistego. Abs. o. Wartość. _ . __ ._...... ._.. _..._.._... bezwzgh;dna rozmytego argumentu rzeczy8. wistego ----;:--~+;::~~.;-;----;-_. ..- ... _._....._ .._-. __.---. Sqrt. O. Pierwiastek kwadratowy rozmytego argumentu rzeczywistego. Ze względów formalnych wartość pierwiastka obliczana jest dla wartości bezwzględnej argumentu. Lin. 2. Funkcja liniowa dla rozmytego argumentu rzeczywistego. Funkcja sprawdza, czy argument jest mniejszy od paramchu. Jeśli wanmek jest spelniony funkcja zwraca war8 Fgt .......... ············;1 ...- l·········,. ........ tość. {l.ll.}, a IV przeciwnym wypadku {O.lO.}. Funkcja sprawdza, czy argument jest większy od parametni. Jeśli wHllInek jest spełniony funkcja zwraca war8 I. .:., Peą. .. ................. ;. tość. {1.l1.}, li w przeciwnym wypadkn {O.lO.}. I -, ....--.--- Funkcja sprawdza, czy argument jest równy p<ll'<lI11etro-. wio Jeśli warunek jest spełniony funkcja zwraca tość {ł .II.}, a w przeciwnym wypadku {O.lO.} I. Wlll'-.

(15) I. Wprowadzenie do języków klasy FOOSL. ... Schemat 11. Wywalania funkcji standardowych Wywolanie standardowej funkcji niewirtualnej <wywolanie funkcji nicwirtualnej dla liczb rozmytych>::: <nazwa funkcji>(rozmyty argument rzeczywisty) <rozmyty argument rzeczywisty>::= <stała llumeryczna>l<rozmyta stała rzeczywista>1 <rozmyta zmienna rzeczywista>1 <wyrażenie. dla I'(Jzmytych argumentów rzeczywistych>1. <odwolanie do standardowej funkcji dla liczb rozmytych> Wywolanie standardowej funkcji wirtualnej <wywolanie standardowej funkcji wirtualnej dla liczb rozmytych>::= <funkcja rozmyla>«rozmyty argument rzeczywisty» <funkcja rozmyta>::= {<nazwa standardowej funkcji wirtualnej dla liczb rozmytych>(paramclr[[ ,parametr1 ])/<wartość funkcji l' . •. przynależności>}. <parametr>::= <stała numeryczna> <warto~ć funkcji przynależności>::= <stała numeryczna> <rozmyty argument rzeczywisty>::= <stała numeryczna>l<rozmyta stała rzeezywista>ł <rozmyta zmienna rzeczywista>1 <wyrażenie dla rozmytych argumentów rzeczywistych>1 <odwołanie do standmdowej funkcji dla liczb rozmytych> <stal a numeryczna>::= <literal numeryczny> <rozmyta stała rzeczywista>::= <rozmyty literal rzeczywisty> <rozmyta zmienna rzeczywista>::= <identyfikator> <odwołanie do standardowej funkcji dla liczb rozmytych>::= <słowo kluczowe>. 11. Zapis. równań. modelu w programie. Zapis równal\ modelu dynamiki systemowej z modyfikacją rozmyto-zbiow języku OMEGA sprowadza się do wykorzystania wyrażeI\ zapisanych w ciele jedynej funkcji składowej klaso-obiektu typu model. Funkcja ta jest ograniczona przez słowa kluczowe begin i end. Kolejne równania modelu powinny być oddzielone od siebie ogranicznikiem w postaci znaku kOI\ca linii. Kolejność zapisu równań jest dowolna i wynika z koncepcji modelu. Po słowie kluczowym end musi wystąpić ogranicznik w postaci znaku. (kropka). Szczegółowy sposób zapisu równalI modelu prezentuje schemat 12. rową. Schemat 12. Programowy zapis. równałl. modelu. <zapis modelu dynamiki systemowej z modyfikacji) rozmyto-zbiorową w jl;!zyku OMEGA>::= <ciało funkcji klaso-obiektu model> <ciało klaso-obiektu model>::= bcgin<ograniczllik>[[<równanie mOclelu><ogranicznik>] ... J cnd. <równanie modelu>::= <równanie rozmytcgo zasobu>l<równanic strumicnia rozmytego>1 <rozmyte równanie pomocnieze>l<rozmyte równanie struktmy badanego systemu>.

(16) I. Wit Urban. <równanie rozmytego zasobu>::=. <wy rażenie mnogościowe. dla liczb rozmytych>1 rozmyte dla liczb rozmy tych>1 <wyrażenie mnogo śc i owo-arytmetyczne dla liczb rozmytyc h> <równanie strumienia rozmytego>::: <wymicnie mnogościowe dla liczb rozmytych>1 <wyra żenie rozmyte dla liczb rozmytych>1 <wyraże nie mnogo ścio wo-arylm etyczne dla liczb rozmytych> <rozmyte równanie pomocnicze >::= <wyrażenie mnogości owe dla liczb rozmytych>1 <wyrażenie rozmylC dla liczb rozmytych>1 <wyr ażenie mnogo ściowo -arytmctycznc dla liczb rozmytych> <wyra żenie. 12.. Dostępne. transatory. Przedstawioną definicję języka klasy FOOSL uzupełnia translator s tanowią­ cy o poc zą tku praktyki implementacyjnej tego narzędzia badawczego. Zostal on wykorzystany do serii eksperymentów symulacyjnych z modelem dynamiki systemowej, zmodyfikowanym poprzez wykorzystanie teorii zbiorów rozmytych. W ten sposób praktyczna przydatność zarówno samej metody badawczej, jak też ściś le stowarzyszonego z nią translatora języka OMEGA, została w jakimś sensie zweryfikowana. Jak to już zostalo wspomniane, przedstawiony przykład stanowi faktycznie propozycję pewnej nowej klasy informatycznych narzędzi wspomagających procedury badań symulacyjnych. W tym też kontekście należy traktować przedstawione w artykule informacje.. Literatura Kaufmann A 0l Guptn M.M. [1985], IlIl/'Odllctioll (o F//zz)' Al'ithmetic: Tlu!ory (/Iul Applicatiol1s,. Van NO!ltrancl, New York. Woloszyn J. (1977]. Język sym/llacyjny DELTA do modelowal/ia dynamiki systemów eko1lomicz· n)'cll, AE. \II. Krakowie (praca doktorska).. Zacleh L.A. [1996], Fllzzy Logic. Computing with Won/s, IEEE TransactiOlls on FuZ7.y Systems, voJ. 4, May. Zadeh L.A, [1972], A Fllzzy Set Theorel;c lnferprettllioll ol UlIg/fislic Hedges , "Journal Dr Cybcrnctics". nr 2. Zadeh LA [1965]. Fuzzy Set" "Information and Control", m' 8. Zadch L.A. [1977], FI/zzy Sets and liwiI' I\pplicClrioll to Patiem ClassiJicaliol/ and C/I/sfel'illg Allalysis [w:] Classificalioll (1/1(/ Clusterillg, J. Van Ryzin (cd.), Procccd ings af nn advanced scminar condllełed by lhe Mathcmntics Research Center, Univcrsily af Wisconsin-Madisoll, May 3-5.. Zaach L,A. [1975], T/w COl/cept oj (l Lillgl/istic Variable al/d its Applicarioll to Approximate Rea.l'olling, "Informntion Sciences", nr 8..

(17) Wprowadzenie do języków klasy FOOSL .... I. An Introduction to the FOOSL Class Languages Based on the Example Concernlng OMEGA Language Dellnition. The paper presents the proposition af. CI. new cJass af progrnmming languages named. FOOSL (Fuzzy Object Oriented Simulation Language) . Its applicntion deals with the compUlalional support af programmcd recording of simulalion experiments based on the utilisat ion of fuzzy set theory. The study submits the definition ofOMEGA language..

(18)

Cytaty

Powiązane dokumenty

Wydawnictwo Akademickie „DIALOG” Anna Parzymies Sp.. 218 tel./faks 22 620

The trade-off between the evaporation efficiency and driving force efficiency limits the maximum attainable exergy efficiency, even if a system can be designed in a way that

Przy pomocy dyrektywy preprocesora stwórz uniwersalną makrodefinicję, dzięki której na ekranie wyświetlać będzie się wartość danej zmiennej.. Wykorzystując rzutowania

Kolejna istotna informacja jest taka, że Python jest językiem zorientowanym obiektowo i wszystko w Pythonie jest obiektem* o czym świadczy chociażby to, że

• W bazie zawsze istnieje grupa PRIMARY (zawiera główny plik bazy danych, wszystkie strony systemowych obiektów) Można tworzyć dodatkowe grupy plików. Zalety stosowania

Uporządkowanie losowych wariantów decyzyjnych względem kryterium dominacji w sensie funkcji omega nie pociąga więc uporządkowania tychże elementów względem kryteriów

Stefan Fafarski (Bychawska 92) szczycił się z posiadania doskonałego zegarka.. Jakież było jego zmartwienie kiedy

Tom II: „Śpiewy Ordinarium Missae w świetle odnowy liturgicznej”; „Zadania duszpasterzy w związku z instrukcją o muzyce sakralnej w liturgii”; „Nowe zadania