Sunteți pe pagina 1din 21

MEDII DE PROGRAMARE IN IA Cursul 2 Expresii n Guru

Nicolae T and areanu

Facultatea de Matematic a si Informatic a, Universitatea din Craiova, str.A.I.Cuza 13, 1100-Craiova, Romania e-mail: rcai@central.ucv.ro

Obiective

Obiectivele acestui capitol sunt urm atoarele: nt elegerea corect a a tipurilor de expresii nt elegerea conceptului de variabil a fuzzy si aritmetica oferit a de Guru pentru procesarea informa tiilor fuzzy In vederea atingerii acestor obiective cursantul trebuie s a execute sub Guru toate exemplele prezentate si s a urm areasc a explicat iile aferente din text.

Expresii aritmetice si logice.

Construct ia expresiilor GURU urmeaz a metoda clasic a din limbajele de programare, cu ment iunea c a sunt folosite toate facilit a tile oferite de GURU privind constantele, variabilele si funct iile. Prin urmare, o expresie este o combinat ie de constante si/sau variabile, utiliz andu-se anumit i operatori si funct ii de evaluare a unor elemente ale expresiei. In funct ie de tipul elementelor care particip a la construct ia unei expresii, acestea pot expresii aritmetice si expresii logice. Rezultatul evalu arii unei expresii Tipuri de expresii

3 poate de tip string, integer, numeric, logical sau unknown. Consider am urm atorul dialog de lucru, din care se observ a cum depinde tipul evalu arii unei expresii aritmetice de tipurile elementelor componente: Guru> x:=1; y:=2;s:=x+y; ?s 3.00 Guru> ?type(s) INT Guru> s:=s+5.0; ?s 8.00 Guru> ?type(s) INT Guru> s:=s+5.3; ?s 13.3 Guru> ?type(s) NUM Operatorii numerici care pot utilizat i n construirea unei expresii aritmetice sunt:

Constante: String,Integer, Numeric, Logical, Error, Unknown

Date

Variabile

dup a tipul valorii: STR, NUM, INT, LOGIC, BLOB, UNKNOWN, ERROR c amp celul a denite de utilizator de lucru dup a rolul lor de mediu predenite utilitare dup a domeniul de cunoa stere a valorii: LOCAL, GLOBAL, STATIC

Tabelul 1: Tipuri de date 4

5 ** * / MOD + (exponent iere) ( nmult ire) ( mp art ire) (modulo) (adunare) (sc adere)
Operatori aritmetici

Ordinea n care sunt enumerat i ace sti operatori stabile ste prioritatea standard n calcul, n ordine descresc atoare. Pentru construirea expresiilor aritmetice pot utilizate parantezele rotunde, care n general sunt utilizate pentru a indica prioritatea n cazul n care nu se folose ste prioritatea standard. GURU este dotat de asemenea cu funct ii standard, care se pot utiliza la construirea de expresii aritmetice (de exemplu: SIN(), EXP(), SQRT(), MAX(),etc). Exemple de expresii aritmetice corect formate sunt prezentate mai jos: 345 SQRT(14+x/2) 5.67*3+456 9 MOD 4 Pentru a observa modul n care GURU obt ine rezultatul evalu arii unei expresii aritmetice vom considera urm atorul
Funct ii standard

6 dialog ntre utilizator si GURU: Guru> x=1+2; ?x 3.00 Guru> ?TYPE(x) INT Guru> y=1/2; ?y 0.50 Guru> ?TYPE(y) NUM Guru> z=64**y; ?z 8.00 Guru> ?TYPE(z) NUM Referitor la funct ia MOD facem urm atoarea precizare: x MOD y este restul mp art irii ntregi a lui x la y. Dac a x sau y nu este ntreg, GURU face rotunjirea la cel mai apropiat ntreg, dup a care calculeaz a restul mp art irii. La mp art irea cu zero se semnaleaz a o eroare. Iat a c ateva exemple de utilizare a acestei funct ii: Guru> ?-15 mod 7 -1.00 Guru> ?15 mod -7 1.00

7 Guru> ?15 mod (-7) 1.00 Guru> ?(-15) mod (-7) -1.00 Guru> ?(-15) mod 7 -1.00 Guru> ?15 mod 7 1.00 O expresie logic a este compus a din una sau mai multe expresii relat io- nale, combinate cu operatori logici. O expresie relat ional a este o combinat ie de constante, variabile si/sau valori de funct ii, utiliz and urm atorii operatori relat ionali: = <> > >= < <=
Operatori relat ionali

sau echivalent ii acestora: EQ NE GT GE LT LE IN

Facem observat ia c a operatorul IN nu are corespondent n operator simbolic si de asemenea, GURU este dotat cu o serie de funct ii standard care au valori logice (de exemplu: INUSE(), ISDIGIT(),etc). Valoarea unei expresii relat ionale este TRUE sau FALSE, adic a o valoare de adev ar.

8 Operatorii logici sunt urm atorii: NOT AND OR XOR


Operatori logici

Simbolul & este echivalent cu AND. Dou a expresii logice combinate cu un operator logic formeaz a tot o expresie logic a. Putem deni conceptul de expresie logic a, recursiv, astfel: orice expresie relat ional a este o expresie logic a; constantele logice si variabilele logice sunt expresii logice; valorile funct iilor logice (standard sau denite de utilizator) sunt expresii logice; dou a expresii logice combinate cu un operator logic dau o expresie logic a Facem observat ia c a la construirea unei expresii logice se pot utiliza paranteze pentru a indica ordinea calculului. Referitor la operatorul IN, subliniem c a n esent a, acesta veric a apar- tenent a primului argument la al doilea argument. Al doilea argument este format din mai multe constante sau expresii, separate prin virgule si nchise ntre paranteze drepte. Prezent am aici urm atorul exemplu:
Expresie logic a

9 Guru> x:=2; y:= x IN [4,2,99];?y TRUE Guru> y:= x IN [4,3,99]; ?y FALSE Guru> y:=3; ?y IN [x+1,8,88] TRUE

Procesarea cuno stint elor incerte n Guru

3.1

Factori de certitudine si variabile fuzzy

Din punct de vedere al mediului de programare GURU o submult ime fuzzy a unei mult imi M este denit a printr- factor de certitudine o funct ie f : M [0, 100], care ia numai valori ntregi. Pentru ecare x M num arul ntreg f (x) se nume ste factorul de certitudine al elementului x. Un factor de certitudine indic a gradul de apartenent a la mult imea respectiv a. Cu c at factorul de certitudine este mai apropiat de 100, se consider a c a elementul respectiv apart ine mai bine mult imii respective. In general factorul de certitudine arat a gradul de cunoa stere a unor fenomene sau procese.

10 Cazul teoriei clasice a mult imilor se obt ine atunci c and funct ia ia numai valorile 0 si 100. Calculele fuzzy n GURU sunt controlate prin intermediul c atorva variabile de mediu. Variabilele de mediu care reglementeaz a lucrul cu variabile fuzzy sunt urm atoarele: E.OCF E.BEST E.IFUZ E.OFUZ E.ICF E.NUMV E.UNKN E.CFJO E.CFCO
Variabile de mediu

Valorile standard ale acestor variabile sunt: E.OCF= FALSE E.BEST= 4.00 E.IFUZ= 1.00 E.OFUZ= 1.00 E.CFCO= M E.NUMV= 4.00 E.UNKN= 20.00 E.CFJO = M E.ICF= FALSE

Semnicat ia acestora este urm atoarea: E.OCF = TRUE dac a la orice comand a de ie sire (output) se a seaz a factorul de certitudine; E.ICF = TRUE dac a la orice comand a de intrare (input) se solicit a factorul de certitudine; E.OFUZ reprezint a num arul de valori cu factori de certitudine pe care le a seaz a la ie sire, n ordinea descresc and a a m arimii factorilor de certitudine;

11 E.IFUZ reprezint a num arul de solicit ari la intrare de valori cu factori de certitudine; E.UNKN reprezint a pragul de considerare a factorilor de certitudine n procesul de inferent a ; valorile cu factor de certitudine sub acest prag nu se iau n considerare n timpul unei consult ari, adic a se presupun c a au valoarea unknown; E.BEST reprezint a num arul maxim de valori cu factori de certitudine care se va lua n seam a n calculul care folose ste acea variabil a fuzzy; valorile se iau n ordinea descresc and a a factorilor de certitudine. E.NUMV reprezint a num arul maxim de valori pe care poate s a-l aib a o variabil a fuzzy; acest num ar nu poate mai mare ca 255. Mediul de programare GURU permite utilizarea n calcule a valorilor fuzzy. O valoare fuzzy se dene ste sintactic astfel: { a1 cf n1, a2 cf n2, ..., ak cf nk } unde a1,...,ak sunt constante
Valoare fuzzy

12 n1,...,nk sunt numere ntregi cuprinse n intervalul [0,100] O astfel de valoare fuzzy dene ste submult imea fuzzy f : {a1, . . . , ak } [0, 100] unde f (ai) = ni pentru i {1, . . . , k }. Prescurtarea cf este utilizat a pentru a specica certainty factor. Valorile fuzzy se pot atribui unor variabile si pot componente ale unor expresii aritmetice sau logice. Prin urmare valorile fuzzy se pot combina cu operatori aritmetici sau logici si ca rezultat se obt ine tot o valoare fuzzy. In procesul de combinare a dou a valori fuzzy apar urm atoarele probleme: modul de combinare a entit a tilor a1,...,ak; modul n care se obt in factorii de certitudine a entit a tilor obt inute. Modul de combinare a entit a tilor a1,...,ak rezult a din operatorul care precizeaz a operat ia de efectuat. Pentru obt inerea factorilor de certitudine, mediul GURU utilizeaz a dou a metode: metoda JOINT;

13 metoda CONFIRMATIVE. Metoda JOINT se precizeaz a prin setarea variabilei Metoda JOINT de mediu E.CFJO. Valorile acesteia sunt de tip string si ele pot "M","P","A","B". Algoritmul de calcul pentru combinarea a doi factori de certitudine prin aceast a metod a este prezentat n Tabelul 1. E.CFJO Descriere "M" "P" "A" "B" Product Average Balance Metoda (a*b)/100 (MIN(a,b)+(a*b)/100)/2 (a*b)/100*(2-MAX(a,b)/100)

Minimum MIN(a,b)

Tabelul 1: Metoda CFJO

Metoda CONFIRMATIVE se precizeaz a prin setarea Metoda CONFIRMATIVE variabilei de mediu E.CFCO. Ca si n cazul metodei JOINT, valorile acesteia pot "M","P", "A","B", iar algoritmul de combinare a doi factori de certitudine este prezentat n Tabelul 2. Valoarea lui E.CF JO controleaz a modul E.CFJO n care GURU calculeaz a factorul de certitudine pentru: expresii relat ionale; expresii logice;

14 E.CFCO "M" "P" "A" "B" Descriere Maximum Probability Sum Average Balance Metoda MAX(a,b) a+b-a*b/100 (MAX(a,b)+(a+ba*b/100))/2 MAX(a,b)+((a*b)/100* (1-MAX(a,b)/100)) Tabelul 2: Metoda CFCO

expresie numeric a sau string; asignarea subtractiv a (-=). Valoarea lui E.CF CO controleaz a modul n care GURU E.CFCO calculeaz a factorul de certitudine pentru: expresii logice; expresie numeric a sau string; asignarea aditiv a (+=).

3.2

Variabile fuzzy n expresii aritmetice.

In general c and utiliz am o variabil a fuzzy ntr-o expresie, rezultatul este similar utiliz arii simultane a tuturor valorilor

15 variabilei. Din acest motiv vom obt ine adesea rezultate multi-valuate. De exemplu, dac a x = {1, 2, 3} atunci expresia x + 1 se evalueaz a la {2, 3, 4}. Calculul valorii unei expresii utiliz and dou a variabile fuzzy se face aplic andVariabile fuzzy operatorii la ecare pereche posibil a de valori din cele dou a variabile. Astfel, {1,2}*{3,4}={1*3,1*4,2*3,2*4}={3,4,6,8} S a presupunem c a set am urm atoarele variabile de mediu: E.OFUZ:=10; E.NUMV:=10; Presupunem c a atribuim variabilelor x si y urm atoarele valori: Guru> x:={1,2,3} Guru> y={4,5} Comanda de a sare Guru>? x*y furnizeaz a r aspunsul: 4 5

16 8 10 12 15 Explicat ia const a n faptul c a variabila x are 3 valori, iar y are 2 valori si prin urmare produsul lui x cu y are 6 valori. Funct iile apelate cu argumente variabile fuzzy pot returna valori fuzzy. De exemplu, funct ia M AX realizeaz a urm atoarele calcule: MAX({2,4},{3,6})={MAX{2,3},MAX{2,6},MAX{4,3}, MAX{4,6}}={3,4,6} In Tabelul 3 prezent am c ateva funct ii GURU care utilizeaz a variabile fuzzy. In lucrul cu variabile multi-valoare se respect a acelea si reguli generale de calcul al factorilor de certitudine, adic a se utilizeaz a E.CF JO si numai pentru valori egale obt inute se utilizeaz a E.CF CO. Astfel, s a presupunem valorile standard pentru aceste variabile, adic a E.CFCO="M" si E.CFJO="M". Consider am urm atoarele comenzi: Guru>x:={ 1 cf 40, 2 cf 80, 3 cf 65 } Guru>y:= { 200 cf 60, 300 cf 70 } ; z:= x * y; ?z

17 Numele funct iei Hival(v) Hicf(v) Valn(v,n) Numval(v) Intersec(v1,v2) Wave(v) Act iune realizat a Returneaz a valoarea cu cea mai mare certitudine Returneaz a certitudinea valorii Hival Returneaz a a n-a valoare n ordinea descresc atoare a certitudinilor Determin a num arul de valori n variabil a Returneaz a valorile comune n v1 si v2 Returneaz a media ponderat a a valorilor numerice Tabelul 3: Funct ii fuzzy

Calculele se desf a soar a astfel: 1 cf 40 * 200 cf 60 = 200 cf 40 1 cf 40 * 300 cf 70 = 300 cf 40 2 cf 80 * 200 cf 60 = 400 cf 60 2 cf 80 * 300 cf 70 = 600 cf 70 3 cf 65 * 200 cf 60 = 600 cf 60 3 cf 65 * 300 cf 70 = 900 cf 65 In continuare aplic and E.CF CO se obt ine: 200 cf 40, 300 cf 40, 400 cf 60, 600 cf 70, 900 cf 65 Dac a E.CFCO= "P" atunci singura modicare apare la factorul de certi- tudine pentru 900, care se calculeaz a astfel:

18 70 + 60 - 70*60/100= 88 Guru folose ste doi operatori pentru a modica valorile unei variabile fuzzy. Operatorul de asignare += adaug a valoarea specicat a ca operand drept variabilei din st anga lui. Operatorul -= ndep arteaz a o valoare dac a ea exist a ntr-o variabila. In Tabelul 4 prezent am asemenea atribuiri. Atribuirea v+=a se execut a astfel: se adaug a valorile variabilei a peste valorile variabilei v; apoi, pentru cantit a tile egale, dar cu factori de certitudine diferit i, se aplic a algoritmul de corijare a factorilor de certitudine dup a algoritmul denit de setarea variabilei E.CFCO. La calculul atribuirii subtractive, se nlocuie ste factorul de certitudine al valorii extrase, notat cu b, cu factorul de certitudine 100 b dup a care se ajusteaz a factorii de certitudine cu algoritmul dat de setarea variabilei E.CFJO. Astfel, n cazul urm atoarei atribuiri subtractive: Guru> x:= 15 cf 60; Guru>x-= 15 cf 70; dac a E.CF JO este regula minim atunci se consider a M IN (60, 100 70) = 30, deci ca rezultat vom avea x= 15 cf 30. Pentru atribuirea aditiv a prezent am urm atoarele exemple:

19 Comanda var={1,2,3} var+=5 var+={6,7} var-={2,4,5} var={8,9} Valoarea variabilei {1,2,3} {1,2,3,5} {1,2,3,5,6,7} {1,3,6,7} {8,9}

Tabelul 4: Exemple de asign ari

Guru>e.ofuz:=5 Guru> x:={ 1 cf 30, 2 cf 40 } Guru> Y:= { 6 cf 50, 8 cf 90 } Guru> Y+= x ; ?Y; 8 with certainty 90 6 with certainty 50 2 with certainty 40 1 with certainty 30 Guru>e.cfco:="P" Guru> x:= {1 cf 50, 2 cf 40}; x+= 1 cf 40; ?x 1 with certainty 70 2 with certainty 40 Dac a E.CFCO:= "M" atunci pentru acela si program avem rezultatul:

20 1 with certainty 50 2 with certainty 40 Cititorul este ndemnat s a justice modul n care mediul de programare GURU procedeaz a n urm atoarele cazuri: VARIABILA x este: 5.00 with certainty 2.00 with certainty 6.00 with certainty VARIABILA t este: 8.00 with certainty 5.00 with certainty 2.00 with certainty Evaluarea z1=t;z1+=x este: 8.00 with certainty 5.00 with certainty 2.00 with certainty 6.00 with certainty Evaluarea z3=x;z3+=t este: 8.00 with certainty 90 90 83 30 20 90 83 17 40 30 20

21 5.00 with certainty 2.00 with certainty 6.00 with certainty Evaluarea z2=t;z2-=x este: 8.00 with certainty 5.00 with certainty 2.00 with certainty 90 60 17 83 30 20