Sisteme multi-agent

Utilizarea programării vizuale în interfete utilizator folosind modelul bazat pe agenti.
Catalin Aurel Rusu

Notiunea de agent inteligent este una din cele mai importante concepte care s-au născut în lumea calculatoarelor din 1990 până în prezent. Tehnologia care se bazează pe agenti va avea un cuvânt greu de spus în viitorul apropiat, în ceea ce priveste modul de interactiune om-calculator. În acelasi timp, conceptul de agent permite descrierea formală si construirea unor sisteme complexe.

Un agent software este un program care execută o serie de sarcini independente în favoarea utilizatorului, fără interventia explicită a acestuia. Desi din afirmatia anterioară ar rezulta că un agent este „ceva“ similar cu un program, agentul este o entitate complexă care are o serie de proprietăti care îl deosebesc net de un simplu program.

Următoarele trei proprietăti evidentiază comportamentul unui agent:
• încredere: agentul execută ceea ce este programat să execute;
• personalitate : agentul poate învăta sau poate fi învătat ceea ce trebuie să facă;
• autonomie : agentul, în mare măsură, ia singur decizii, degrevând sarcina utilizatorului.

Ce este de fapt un agent?

Agentul este o stare a cărei actiune nu are efecte secundare.

Agentul este entitatea care execută o actiune.

Agentul este o reprezentare care produce anumite modificări în reprezentarea unui model.Agentul este o unitate de procesare care operează în paralel cu alti agenti, un sistem complet de procesare a informatiei. Este format din mecanisme de receptie-emisie mesaje, memorie (pentru mentinerea unor stări), un procesor care analizează evenimentele de tip input, actualizează starea prezentă si execută o serie de actiuni, interactionând cu ceilalti agenti.

Din definitiile prezentate anterior, se poate desprinde ideea că agentul este un întreg dotat cu o competentă, care operează paralel si/sau în coordonare cu alti agenti.

Ca urmare a acestor consideratii, agentul este un reprezentant al paralelismului de o anumită granularitate a concurentei. Prin urmare, agentii sunt entităti care populează spatiul digital al lumii calculatoarelor.

Structura agentilor

Structura unui agent depinde de modelul care are la baza implementarea sa. In continuare este prezentată o analiză comparativă bazată pe structura agentilor privită din diverse perspective. Analiza are în vedere următoarele modele implementate în momentul de fată:
• MVC (Model - View - Controller);
• PAC (Presentation - Abstraction - Control);
• ALV (Abstraction - Link - View)
• CNUCE;
• York;

Modelul MVC (Model - View - Controller)
În modelul MVC, un agent este modelat având în vedere 3 elemente functionale :

Un model defineste competenta abstractă a agentului (nucleul său functional);

View defineste perceperea comportamentul agentului de către exterior;

Controller denotă perceperea comportamentului agentului în momentul în care acesta receptionează mesaje din exteriorul său.

Elementele View si Controller înglobează interfata agent-utilizator, fiind singurele componente care permit utilizatorului să perceapă activitatea si comportamentul agentului.

Modelul PAC (Presentation - Abstraction - Control)
PAC are la bază aceleasi idei : elementele prin care agentul interactionează cu exteriorul, elemente care exprimă în mod diferit dar complementar rolul agentului.

Agentul PAC are următoarea structură :
Presentation: modul în care agentul percepe activitătile de input si output;
Abstraction: nucleul functional al agentului;
Control: partea care exprimă dependentele;

Partea Control a agentul are ca sarcină gestionarea mecanismului de comunicare dintre agenti, precum si exprimarea (evidentierea) relatiilor de dependentă ce există între elementele Abstract si Presentation. In modelul PAC, dependentele si comunicarea dintre elementele Abstract si Presentation se fac si sunt gestionate de elementul Control.

Modelul ALV (Abstraction - Link - View)
Modelul ALV are la bază aceleasi elemente componente ca si PAC, cu mentiunea că elementul Link are un rol mult mai restrâns decât corespondentul său Control din PAC. Elementul Link al PAC exprimă constrângerile la care sunt supuse elementele View si Abstraction. Corespondentul lui AVL Link în PAC, Control, exprimă relatiile dintre Presentation si Control.

Modelul CNUCE
Modelul CNUCE propune împărtirea structurii unui agent în patru părti, ca urmare a tehnicilor de modelare a graficii pe computer :
Collection: nucleu functional care tratează activitătile de input;
Abstraction: nucleu functional care tratează activitătile de output;
Measure: modelează interactiunea (interfata) agent-utilizator din punct de vedere al activitătilor de input;
Presentation: modelează interactiunea (interfata) agent-utilizator din punct de vedere a activitătilor de output;
În plus, există două elemente conditie (trigger) care furnizează explicit declansarea actiunile input si output.

Modelul York
Din perspectiva de modelare York, agentul este format din două părti : Presentation si comportarea sa internă.

În concluzie, modelele MCV si CNUCE au la bază despărtirea activitătilor de input si output, pe când modelele ALV, PAC si York se concentrează asupra notiunilor de Presentation si View. Ceea ce deosebeste modelul MVC de modelele PAC si ALV, este lipsa conceptului de relatie si coordonare dintre agenti.

Analiză comparativă bazată pe MSM (Multi-Motor-Sensor)
Modelul MSM (Multi-Motor-Sensor) este un cadru care permite modelarea sistemelor interactive. Acest model are 6 dimensiuni. Primele două definesc notiunile de dispozitive fizice : input si output. Celelalte patru dimensiuni caracterizează nivelele de abstractie, contextul, paralelismul si fuziunea / fisiunea.

Input & output

Toate modelele abordate au adus în discutie comunicarea dintre agenti. Agentii posedă facilităti multi-canal. În ciuda acestui fapt, nu toate modele bazate pe agenti fac referire explicită la mecanismul de inter-comunicare. De exemplu modelul MVC nu oferă explicit existenta comunicării dintre agenti într-un sistem interactiv. Această problemă este lăsată pe seama implementării.

În modelul PAC, caracteristica Control a agentului sprijină comunicatia în două sensuri :
a. ca o cale explicită de comunicare între elementele Abstraction si Presentation;
b. ca un tablou de comutatie a agentului care primeste si transmite mesaje de la si spre agenti.

Spre deosebire de CNUCE, PAC nu oferă explicit modul de procesare a mesajelor primite si trimise, si procesate de agent.

În modelele CNUCE si York, canalele input si output sunt explicitate. Elementul Measure este specializat în procesarea mesajelor primite prin intermediul canalului input de la agentii de nivel inferior. Elementul Collection este specializat în procesarea mesajelor primite prin intermediul canalului input de la agentii de nivel superior de abstractizare.

Nivele de abstractizare

Notiunea de nivel de abstractizare califică (exprimă) transformările pe care functiile de interpretare si manipulare le exercită asupra informatiei. Secventa de transformare a intrării defineste functia de interpretare. În mod analog, privind din sens opus, informatia internă este transformată pentru a fi făcută cunoscută utilizatorului printr-o secventă de mesaje de iesire. Notiunea de nivel de abstractizare cuprinde si multimea de posibilităti de reprezentare pe care sistemul le suportă, de la date neprelucrate, până la forme simbolice.

Informatiile dobândite de agenti sunt transformate de un grup de agenti înainte de a ajunge la nucleul functional al sistemului. În cealaltă directie, agentii concretizează informatia cuprinsă în nucleul functional al sistemului în comportament sesizabil si/sau interpretabil. Pasii succesivi ai acestor transformări ale iesirilor si intrărilor duc la definirea conceputului de nivel de abstractizare. Modele conceptuale discutate, operatiile de abstractizare si concretizare sunt executate de agenti organizati pe nivele de abstractizare.

În cadrul modelului CNUCE, nivelele de abstractizare sunt definite prin două modalităti, în cadrul agentului si în corelatie cu mecanismul de compozitie :
• în cadrul modelului CNUCE se face o deosebire clară între functiile de interpretare si transmiterea informatiei. Aceste functii operează în două faze. Fiecare fază defineste un nivel de abstractizare. Pentru transmiterea informatiei, informatia de la nivelul superior de abstractizare este receptionată de către elementul Collection si trimisă nivelelor inferioare de abstractizare de către elementul Presentation. Pentru interpretare, elementul Measure receptionează informatiile de la nivele inferioare de abstractizare, precum elementul Abstraction le comunică nivelelor superioare.
• agentii de tip CNUCE pot forma agentii foarte puternici si complecsi. În acest mod se creează o ierarhie de agenti care are la bază un agent părinte si un set de agenti fii.

PAC si MVC abordează o modelare a nivelelor de abstractizare în mod asemănător. Spre deosebire de CNUCE, modelele amintite nu conturează explicit nivelele de abstractie.

Contextul

Capacitatea unui sistem de a interpreta si manipula informatii variază dinamic în functie de variabilele considerate într-un context dat. Variabilele contextuale se comportă ca si niste filtre cognitive. Ele formează un set de parametrii interni de stare folositi de procesele de reprezentare pentru a controla interpretarea si manipularea informatiei. Agentii, care coincid cu procesele interfetei utilizator, sunt candidati pentru a fi desemnati proprietarii unui context local.

Fuziunea & Fisiunea

Fuziunea se referă la procesul de combinare a unor părti de informatii cu scopul de a forma o nouă informatie. Fisiunea se referă la procesul de decompozitie. Fuziunea & fisiunea fac parte din fenomenul de abstractizare si materializare.

Mecanismul de compozitie din modelele York, MVC, PAC si CNUCE a fost introdus, initial, pentru a exprima nivelele de abstractizare. Efectul lateral al acestui mecanism este fundamentarea solidă a conceptelor Fuziune & Fisiune. Fuziunea & Fisiunea sunt părti componente ale proprietătilor interne ale agentilor de procesare (detinerea unui context în care desfăsoară un proces de calcul).

Paralelismul

Reprezentarea si utilizarea timpului este o sarcină complexă. În contextul de fată (modele multi-agent), timpul este analizat din punctul de vedere al functiilor de interpretare si manipulare a informatiei. Paralelismul la nivelul interfetei utilizator apare la diferite nivele de granularitate la nivel fizic (dispozitive de input - output multiple pot fi utilizate simultan), la nivel de task (utilizatorul sau sistemul poate executa task-uri multiple în paralel).

Un agent este o unitate de procesare care poate executa un set de sarcini în paralel cu activitatea altor agenti. Acest lucru este o consecintă firească a arhitecturii bazate pe agenti, care permite activităti simultane de interpretare si manipulare a informatiei.

Agentul poate fi definit ca un reprezentant al paralelismului la diferite nivele de granularitate. Este important de specificat faptul că, la nivel de implementare, un agent nu se identifică, în mod necesar, cu un proces.

Procesul de alocare a resurselor, în ceea ce priveste proiectarea arhitecturii, este o activitate complexă care se realizează în mai multi pasi. Procesul de alocare depinde de o serie de factori care nu tin de subiectul discutat, ci de platforma run-time luată în considerate. În acest sens, implementarea unui agent ca un proces UNIX nu este eficient, dar la nivel conceptual, agentul poate fi privit ca o entitate capabilă să initieze actiuni în paralel cu activitatea altor agenti.

Sisteme multi-agent

Modele multi-agent sunt folosite în proiectarea unor sisteme software interactive care se bazează pe functionarea într-un sistem stimul-răspuns.

Sistemele multi-agent modelează un sistem interactiv printr-o colectie de agenti specializati care produc si reactionează la stimuli existenti în cadrul sistemului.Sistemele multi-agent modelează un sistem interactiv prin intermediul unor unităti computationale specializate numite agenti. Un agent se află la un moment dat într-o stare, posedă o bază de cunostinte (expertiză), si este capabil să initieze sau să răspundă la actiuni.

Un sistem multi-agent poate fi privit ca un sistem în evolutie în care fiecare agent desfăsoară o activitate independentă. Modelul bazat pe agenti poate fi asemănat cu un model care are la bază principiile dinamicii populatiei si de stabilitate. În cadrul unui sistem multi-agent, fiecare agenti îsi desfăsoară activitatea, teoretic, independent de existenta celorlalti agenti.

Sistemele multi-agent sau paradigmele care au la bază agentii sunt instrumente foarte folositoare pentru modelarea sistemelor de informatie distribuită cu o interactiune sincronă sau asincronă.

Teoria sistemelor multi-agent este o consecintă logică a dorintei de a dezvolta sisteme inteligente. În prezent, nu există o metodologie care să permită o metodă de analiză, specificare, proiectare si implementare a unui sistem multi-agent. Pentru specificarea completă a unui sistem multi-agent este necesară definirea cunostintelor si comportamentului intern al agentilor si modul de interactiune cu ceilalti agenti cu care coexistă în cadrul sistemului multi-agent.

În cadrul sistemului multi-agent, intentiile agentului pot fi definite ca un scop ce trebuie atins în momentul realizării unui set de actiuni. „Cunostinta“ (know-how) unui agent este abilitatea sau potentialul de a executa o actiune sau un set de actiuni, si în acelasi timp de a emana inteligentă ca urmare a rezultatelor obtinute

Functionalitatea sistemelor multi-agent

În ceea ce priveste functionalitatea, toate actiunile sau sarcinile pe care un agent le poate îndeplini în cadrul sistemului în care există, sunt cerute de către un alt agent care coexistă în acelasi mediu. Cu alte cuvinte, functionalitatea unui agent este definită în concordantă cu rolul său în cadrul sistemului.

Fiecare agent are un set de cunostinte despre sistemul în care „trăieste“. Aceste cunostinte sunt memorate intern în structura fiecărui agent. Controlul agentului este realizat în corelatie cu specificatia task-urilor pe care trebuie să le ducă la bun sfârsit si a strategiilor pe care le foloseste. În functie de rolul fiecărui agent modul de definire a scopurilor, planurilor, strategiilor este diferit.

Nu trebuie uitat modul în care reusesc agentii să convietuiască în cadrul aceluiasi sistem. Acest lucru se realizează printr-un mecanism de comunicare care este bazat pe transmiterea unor mesaje într-o maniera sincronă sau asincronă. Procesul de comunicare dintre agenti se supune unor reguli precise. Voi aminti aceste reguli fără a le discuta în detaliu mecanismul intim prin care se realizează acest lucru :
• agentii sunt conectati prin legături de comunicatie unidirectionale destinate transmiterii de mesaje discrete;
• se presupune că nu există întârziere în transmisia-receptia unui mesaj;
• în momentul receptiei unui mesaj, agentul receptor cunoaste provenienta mesajului (agentul care a emis mesajul);
• există definită o relatie de ordine în ceea ce priveste emisia-receptia mesajelor;
• se presupune că transportul mesajelor este fiabil.

Pe lângă acest schimb de mesaje, trebuie realizat un „compromis“ între pozitiile agentilor. Cu alte cuvinte, trebuie realizată o întelegere între agenti pentru satisfacerea constrângerilor la care sunt supusi datorită coexistentei în cadrul aceluiasi sistem. Acest lucru se realizează printr-un proces de negociere format din coordonare si cooperare. Cooperarea se referă la faptul că solutia unei probleme este rezultatul unei interactiuni cooperative la care participă toti agentii. Coordonarea dintre grupele de agenti permite analiza task-urilor ce trebuie realizate si asignarea proceselor grupelor de agenti fără a duplica volumul de muncă.

Modelul sistemului multi-agent poate fi folosit pentru a simula orice mediu cooperativ, indiferent de complexitate. În acest sens, sistemele multi-agent profită de participarea dinamică a fiecărei părti componente în beneficiul tuturor.
• agentii individuali nu trebuie să tină o istorie a informatiilor obtinute de la alti agenti;
• datorită procesului continuu de emitere sau de consumare de informatii, informatiile vehiculate în sistem nu sunt învechite;
• replicarea informatiei este evitată, mentinându-se în acest mod consistenta în cadrul sistemului;
• modelul bazat pe multi-agenti este scalabil deoarece numărul agentilor este sau poate fi într-o continuă schimbare.

Modele multi-agent care implementează sisteme cu o arhitectură modulară paralelă propagă conceptul de unităti de interactiune si cooperare.

Aplicabiliatea modelelor multi-agent

Modularitatea si paralelismul sunt mecanisme care sprijină proiectarea iterativă a interfetelor utilizator, a aplicatiilor distribuite si pentru manipularea dialogurilor multithread :
• suport pentru proiectare iterativă: un agent defineste unitatea modularitate. Ca urmare a implementării acestui concept, este posibil să se modifice comportarea agentului fără a pune în pericol integritatea sistemului.
• suport pentru aplicatii distribuite: agentul defineste unitatea în cazul procesării. De aceea este posibil ca agentul să îsi manifeste comportamentul pe procesoare diferite decât pe cel pe care a fost creat.
• suport pentru manipularea dialogurilor multithread un agent poate fi asociat fiecărui fir de executie (thread). Deoarece starea este mentinută local de către agent, interactiunea dintre agent si utilizator poate fi suspendată până în momentul în care utilizatorul doreste reluarea activitătii. În cazurile în care un fir de executie (thread) este prea complex pentru a fi modelat printr-un singur agent, atunci este posibil ca problema să fi realizată de o colectie de agentii (cooperare într-un sistem multi-agent).

În plus, pentru a proiecta interfete utilizator performante, modelul multi-agent poate fi implementat foarte usor prin paradigmele limbajelor orientate pe obiecte. Acest lucru poate fi realizat prin asocierea „clasă obiect“ - „agent“, unde operatorii clasei si atributele clasei modelează setul de actiuni (reguli) si starea agentului. Un obiect si un agent sunt unităti de procesare specializate, ambii decizând propria stare.

În decursul timpului au fost dezvoltate o serie de modele multi-agent pe baza paradigmelor limbajelor de programare obiectuale. Fiecare model dezvoltat are în componenta sa agenti reactivi. MVC (Goldberg, 1984) si PAC (Coutaz, 1987) sunt modele multi-agent. Interviews (Linton, 1986) si Ad'da (Ilog, 1989) sunt exemple de unelte care au la bază modelul multi-agent. Serpent (Bass & Coutaz, 1991) si Sassafras (Hill, 1987) sunt nuclee run-time (run-time kernels) si generatoare de interfete utilizator care au încorporat modelul multi-agent.

Modelul bazat pe Agenti

Programarea vizuală îsi propune să permită descrierea algoritmilor aplicatiilor, în general, a interfetelor grafice cu utilizatorul, în mod special, prin operare directă si tehnici grafice specifice.

Prin operarea directă se urmăreste să se descrie structura si comportamentul entitătilor, obiectelor active (agenti) care au evolutie algoritmică. În acelasi timp, se urmăreste modelarea tehnicilor de interactiune din cadrul interfetelor grafice utilizator.

Prin folosirea agentilor în cadrul unui sistem multi-agent se doreste crearea unui model care să permită definirea structurilor de date, entitătilor program si a constructorilor program.

În cele ce urmează, voi aborda următoarele probleme din perspectiva problemei propuse :

Constructori program :
• if-then-else;
• while;
• for-to-next_step;

Obiecte folosite în interfetele grafice :
• list box;
• edit;
• combo box;
• radio box;
• check box;
• scroll bar.

În cele ce urmează sunt făcute câteva propuneri de modelare a constructorului program if_then_else folosind sisteme multi-agent. Deoarece există o echivalare a constructorilor program while, for_to_next_step, do_while, s.a.m.d., cu constructorul program if_then_else, modelarea celorlalti constructori program se face prin analogie. De asemenea, este propusă o modelare a obiectului list box folosit în crearea interfetelor grafice.

Entităti program

Indicatori si variabile
Indicatorii si variabilele sunt tipuri abstracte de date utilizate în scenariul grafic pentru a păstra anumite valori pe parcursul executiei programului. Indicatorii si variabilele pot fi operate interactiv de către dezvoltatorul scenariului grafic sau prin program pe parcursul executiei scenariului grafic. Operatiile referitoare la indicatori si variabile sunt: creare, interogare, atribuire, distrugere, afisare, ascundere, operatii de introducere si extragere în/din stiva, etc. În functie de tipul indicatorului sau variabilei, acestea pot avea prezentare grafica.

Indicatori
Un indicator este o resursă program a cărui valoare este rezultatul evaluării stării modelului grafic. Structura conceptuală a unui indicator este următoarea:

indicator( INDICATOR
	nume,
	valoare,
	pozitie,
	dimensiuni,
	stare,
	tip,
	expresia de evaluare dinamica
	)

Identificarea unui indicator se face prin nume. Valoarea unui indicator este booleană, deci

valoare_indicator = {TRUE, FALSE}

Un indicator poate avea sau nu o prezentare grafică pe ecran. Prezentarea grafică este o zona dreptunghiulară colorată având o anumită pozitie în fereastra părinte. Culoarea este, de exemplu, c0, pentru valoarea false si c1, pentru valoarea true. În cazul prezentării grafice, interogarea indicatorului se poate face ca interogarea culorii unui pixel din zona de prezentare a sa:

<pixel> is <culoare>

sau

<pixel> isn't <culoare>

Operarea directă asupra unui indicator se face de către dezvoltatorul scenariului grafic. Selectia unui indicator se poate face text sau grafic. Selectia text este selectarea numelui indicator dintr-o listă dată, iar selectia grafică este selectarea unui pixel din dreptunghiul prezentare grafică. Valoarea indicatorului va fi valoarea logică specificată de culoarea pixel selectat.

La un moment dat, indicatorul poate sau nu să fie prezentat în zona de afisare grafică, dar toti indicatorii utilizati în operarea directă trebuie să aibă o prezentare grafică. Afisarea indicatorului se poate realiza explicit prin program sau prin comanda meniu.

Tipul indicatorului poate fi static sau dinamic. Indicatorul static primeste o valoare rezultată ca evaluare a stării grafice la un moment dat, iar indicatorul dinamic reflectă starea grafică curentă prin evaluare permanentă. Indicatorul static primeste o valoare printr-o actiune de atribuire executata la interpretarea scenariului grafic sau la evolutia unui obiect. Atribuirea este explicit specificata în scenariu printr-o instructiune program sau în comportamentul unui obiect printr-o actiune din cadrul unei reguli. De exemplu:

scenariu_grafic
{. . .
atribuie (indicator(nume), val oare), pixel(pozitie(34, 51), culoare) is RED
. . .
atribuie (indicator(nume), valoare), 
	((obiect(nume), atribut(nume)) is val oare)
	or (pixel(pozitie, culoare) is culoare)
. . .
}

sau

comportament_obiect(evolutie)
(..., (conditie, actiu ne_atribuire_indicator),
	 ...)

Indicatorul dinamic primeste o valoare printr-o atribuire care se execută automat si periodic fără un apel explicit din scenariul grafic sau din evolutia unui obiect. În cazul real al unei implementări există următoarele posibilităti de evaluare dinamică a unui indicator:
• prin întrerupere - ceasul de timp real generează la intervale programate o cerere de întrerupere. Rutina de tratare a întreruperii evaluează starea curentă a modelului grafic si actualizează valoarea indicatorului. Evaluarea se face conform unei expresii definite prin operare directă de către dezvoltatorul scenariului.
• prin procedura - apelată explicit, periodic din program. De exemplu, în unele aplicatii procedura poate fi apelată automat la fiecare actualizare a ecranului sau a unei zone de afisare.

Variabile

O variabilă este o resursă program a cărei valoare este rezultatul evaluării stării modelului grafic. Structura conceptuală a unei variabile este următoarea:

variabila( VARIABILA
	nume,
	valoare,
	pozitie,
	dimensiuni,
	stare,
	tip,
	expresia de evaluare dinamica
	)

O variabilă poate primi valoarea caracteristicii unei entităti din model, cum ar fi: pozitia unui obiect, culoarea unui obiect, culoarea unui pixel, valoarea unui parametru comportament. Într-o formă îmbunătătită a conceptului de variabilă, aceasta poate fi rezultatul evaluării unei expresii. De exemplu, poate păstra distanta dintre două obiecte sau valoarea unei formule aplicatie, evaluată pe parcursul executiei programului. Această variantă necesită viteză de calcul mai mare si din acest motiv în lucrare se analizează si experimentează cazul de atribuire cu o valoare si nu cazul de atribuire cu o valoare obtinută prin evaluarea unei expresii. Deci:

valoare_variabila = {valoare | valoare = (entitate_model, ele ment_entitate)}

O variabilă poate avea sau nu, la un moment dat, o prezentare grafică pe ecran. Prezentarea grafică este o zona dreptunghiulară colorată având o anumită pozitie în fereastra părinte. Fereastra părinte poate fi fereastra asociată unui proces grafic. Culoarea este, functie de valoarea variabilei, un element al multimii de culori posibile. Culoarea are o semnificatie dată de aplicatie. În cazul prezentării grafice, interogarea variabilei se reduce, la fel ca în cazul indicatorului grafic, la interogarea culorii unui pixel din zona de prezentare a sa.

O altă formă de prezentare a unei variabile poate fi prezentarea textuală în care alături de numele variabilei se poate afisa valoarea sa: (nume, valoare). Modul de afisare al valorii depinde de tipul variabilei. Pentru fiecare tip de variabilă trebuie să existe un prezentator specific sau parametrizat pentru toate tipurile. Astfel este necesară prezentarea valorilor: numere întregi, numere reale, valori logice, timp real, culoare, etc.

Tipul variabilei poate fi static sau dinamic. Evaluarea statică sau dinamică se face prin aceleasi metode ca evaluarea unui indicator. De exemplu, o variabilă statică poate fi atribuită la un moment dat astfel:

scenariu_grafic
{	. . .
	atribuie (variabila(nume), valoare), pixel(poz itie(34, 51), culoare)
	. . .
	atribuie (variabila(nume), valoare), (obiect(nume), atribut(nume))
	. . .
}

sau

comportament_obiect(evolutie)
(..., (conditie, actiune_atri buire_variabila), ...)

Un tip de variabilă util în procesele de simulare este tipul timp. Tipul timp este la rândul sau de două categorii - timp absolut si timp relativ. Variabila de tipul timp este automat de tip dinamic, cu o procedură implicită de actualizare. Procedura de actualizare citeste ceasul de timp real al sistemului. Valoarea absolută a timpului este atribuită variabilei cu tipul timp real absolut. Variabilei cu tipul timp relativ îi este atribuit timpul real relativ la momentul initializării variabilei. Initializarea variabilei este o actiune explicită de atribuire.

Un alt tip de variabilă utilă în simularea digitală, modelarea unor constructori program sau operarea cu elementele unei multimi, este tipul numărător. Operatiile specifice permise cu acest tip de variabilă sunt initializarea, executată printr-o atribuire si incrementarea. Incrementarea este o comandă explicită, iar pasul de incrementare este un argument al comenzii.

Constructori program

Constructorii program sunt instructiuni program care permit executia conditionată a unor secvente de instructiuni. În programarea vizuală constructorii program au prezentare grafică în meniu. Sunt prezentati trei tipuri de constructori program: if_then_else, while_do si switch_case, a căror semantică este bine cunoscută din programarea structurată. La definirea scenariului grafic, selectia unui constructor program este urmată de definirea conditiei si a ramurilor componente.

De exemplu, pentru cazul if_then_else, după specificarea conditiei se va specifica secventa de instructiuni pentru then, iar apoi pentru else. La executia scenariului se evaluează conditia si functie de rezultat se execută ramura specifică. Din experimentele făcute a rezultat că aceste trei tipuri de constructori program sunt suficienti pentru modelarea tuturor structurilor program. Echivalarea cu alte tipuri de constructori program, existente în limbajele de programare uzuale, cum ar fi de exemplu constructorii for sau do_while, se poate realiza utilizând tipuri de variabile specifice ca numărător sau timp real.

Generarea automată prin operare directă a scenariului are ca rezultat forma text a scenariului. Scenariul grafic poate fi prezentat grafic prin organigramă. Prin intermediul unui editor de organigrame se poate construi organigrama si completa continutul fiecărui bloc sau conditie cu ajutorul unui editor de texte. Aceste facilităti de editare text sunt destinate utilizatorilor sau dezvoltatorilor de scenarii experimentati, care cunosc limbajul de programare, lexicul si sintaxa programului.

Modelare constructor program If_Then_Else

Obiectul activ (agentul) este tranzactia care parcurge fluxul de prelucrare a informatiei.

Constructorul program If_Then_Else este modelat astfel :

	S1 :
	if c 	then B1
		else B2
	S2:

unde :
• stările S1 si S2 modelează pozitii ce apartin unei traiectorii;
• c modelează o conditie regulă;
• B1 si B2 modelează actiuni în cadrul regulilor;
• tranzactia (controlul fluxului informational) modelează agent;
• diagrama (organigrama) cu care ne-am obisnuit în programarea structurată este modelat prin comportamentul agentului.

Cătălin Aurel Rusu lucrează la Sistec Cluj, poate fi contactat la adresa Catalin_RUSU@sis tec.ro.

(C) Copyright Computer Press Agora