Sunteți pe pagina 1din 16

Platforme orientate agent bazate pe limbaj

Java (Jack). Studii de caz din domeniul


automaticii (monotorizare, control, fabricatie
asistata)

Cuprins

Introducere in Programare Orientata pe Agenti


Platforma inteligenta Jack

3
4

Componentele platformei Jack


5
Arhitectura Jack

Crearea codului sursa

Executia Jack
7
Clasa de agent

Introducere practica in JACK- Exercitiul 1


8
Introducere practica in JACK- Exercitiul 2

12

Beneficiile Jack

15

Concluzii

16

Introducere in Programare Orientata pe Agenti


Ce este Programarea Orientata Agent (AOP= Agent Oriented Programming)?
Programarea Orientata Agent este o paradigma introdusa de catre Shoham in anul 1993 si are
la baza ideea de a descrie un mod prin care sa fie creati agenti inteligenti.
Ideea care sta la baza AOP este de a crea agenti care interactioneaza intre ei pentru a atinge
niste scopuri pe care fiecare dintre acesti agenti le are. Agentii sunt ceva mai mult decat

simple obiecte, ei sunt entitati care au credinte(beliefs), capabilitati ( capabilities),


posibilitatea de a alege (choises) si obligatii (commitments).
Partea buna la AOP il reprezinta gradul de autonomie pe care il poate avea un agent. Agentul
face alegeri pentru sine insusi la fiecare moment de timp si stie ca trebuie sa indeplineasca
anumite obligatii. Dar, binenteles, starea se poate schimba in functie de informatiile primite
din exterior(de exemplu: de la alti agenti)
Ce sunt Agentii Inteligenti?
Ideea folosirii agentilor nu este noua. Ea a aparut pentru prima data in lucrarile lui Nicholas
Negraponte (1970) si Alan Kai (1984). Alti cercetatori cum ar fi Marvin Misky, Oliver
Selfridge, Rodney Brooks, Pattie Mass au studiat problemele legate de agenti si au evidentiat
diferite tipuri de comportament ale lor.
Agentii inteligenti sunt programe adaptive si autonome,care sunt folosite in vederea crearii de
produse software care rezolva anumite sarcini (task-uri) in numele unui anumit utilizator,
bazndu-se pe instructiuni explicite sau implicite din partea acestuia. Agentii inteligenti pot
imbunatati interactiunea cu calculatorul prin:
ascunderea complexitatii task-urilor dificile;
realizarea de task-uri (actiuni) laborioase;
conducerea unor tranzactii n numele utilizatorului;
pregatire si nvatare;
oferirea de ajutor unor anumiti utilizatori in vederea colaborarii acestora;
monitorizarea de evenimente si proceduri diverse.
Sarcinile pe care le poate realiza sau aplicatiile pe care le poate asista un agent sunt virtual
nelimitate:
filtrarea/selectarea informatiei;
regasirea informatiei;
gestiunea corespondentei;
planificarea ntalnirilor;
selectarea cartilor, spectacolelor, muzicii
Arhitectura agentilor realizeaza o interfata intre perceptiile pe care agentul inteligent le obtine
din mediu si programul de care dispune agentul inteligent. Tot ea este cea care ruleaza
programul, asigurand, in acelasi timp, efectuarea diferitelor actiuni alese, pe masura ce
acestea sunt generate. Arhitectura se poate realiza folosindu-se diferite tehnici din
multitudinea celor existente, cum ar fi retelele semantice,scenariile, cadrele etc
in particular , arhitectura multi-agentilor este bazata pe modelul Belief-DesireIntention ,model ce a fost folosit a fost folosit cu succes in situatii in care modelarea
rationamentului uman si comportamentul in echipa sunt necesare, de asemenea si simularea
tactica de luare a deciziilor in operatiuni de aparare si de comanda si a structurilor de control.
S-ar mai putea preciza aici si aplicatii inteligente de control ,aplicatii de fabricatie ,aplicatii de
gestionare ale traficului aerian, etc.

Platforma inteligenta Jack


Jack este un agent orientat spre dezvoltarea mediului, construit pe baza limbajului
programator Java si integrat in totalitate cu acesta. Jack consta in componentele cheie descrise
mai jos. Intelligent Agents este un agent de generatia a treia , conceput ca un set de
componente usoare in greutate, dar de mare performanta si un puternic realizator de date,
construit pe baza limbajului programator Java si integrat in totalitate cu acesta. Include toate

componentele mediul Java, oferind de asemenea si extensii specifice pentru a implementa


comportamentul agentului. Relatia lui Jack cu Java este analoga relatiei dintre C++si
limbajele C. C a fost creat ca un limbaj procedural pe cand C++ a fost creat pentru a furniza
programatorilor extensii orientate pe obiect pentru limbajul deja existent. Codul sursa Jack
este intai compilat intr-un cod normal Java ,inainte de a fi executat. Asa cum un program
orientat pe obiect introduce un numar de componente cheie care influenteaza intreaga
structura logica si fizica a sistemului software rezultat, asa se intampla si in cazul programului
orientat pe agent. In cazul programarii orientat pe agent , sistemul este modelat in termenii
agentului. Acesti agenti sunt entitati autonome rationale capabile sa ia decizii pro-active in
timp ce reactioneaza la evenimentele din mediul lor.
Concepte orientate pe agent
Agentii folositi in Jack sunt agenti inteligenti. Ei modeleaza comportamentul rational in
conformitate cu teoria BDI . BDI- model de inteligenta artificiala . Urmand modelul BDI ,
agentii inteligenti Jack sunt componente de software care au teluri explicite de a dobandi sau
de a manipula evenimente (dorinte). Pentru a descrie cum ar trebui ei sa dobandeasca/
realizeze aceste dorinte, agentii BDI sunt programati cu un set de planuri. Fiecare plan descrie
cum sa realizeze un tel sub anumite circumstante. Setati sa munceasca , agentul urmareste
telurile date(dorinte), preluand planul potrivit (intentiile) in conformitate cu setul de date
curent pe care il are despre starea lumii. Aceasta combinatie de dorinte si credinte initiind
comportamentul destinat contextului senzitiv este o parte ce caracterizeaza un agent BDI.
Abordare:
Principalele obiective(scopuri, avantaje...) ale platformei JACK sunt:
- Sa le ofere dezvoltatorilor un produs robust, stabil si de greutate redusa
- Sa satisfaca (sa multumeasca) o varietate de aplicatii practice necesare
- Sa faciliteze transferul de tehnologie de la cercetare la industrie
- Pentru a permite viitoare cercetari aplicate
De ce creem programe folosind Agenti?
- capacitatea de a actiona autonom,
- un nivel inalt de reprezentare a comportamentului - un nivel de abstractizare deasupra
constructiilor de tip obiect-orientat
- flexibilitate, combinand caracteristicile pro-active si reactive de comportament,
- timp real de performanta,
- adecvat pentru aplicatii distribuite
- capacitatea de a lucra co-operativ, in echipe
Agentii Jack sunt foarte potriviti pentru dezvoltarea de sisteme de timp i de importanta
critica, asa cum abordarea BDI este prevazut pentru verificarea si validarea modelului.
Obiectivele Agentului pot include mentinerea utilizatorilor umani informata de ceea ce
agentul incearca sa obtina, care sunt intentiile sale si ce progrese este in masura sa faca.
inteniile sunt, i ce progrese a fost n msur s fac.

Componentele platformei Jack


1) The JACK Agent Language (JAL)
The Jack Agent Language(JAL) este un limbaj de programare ce este folosit pentru
dezvoltarea sistemelor bazate pe agenti. JAL cuprinde super set ,construit de fapt
pe sintaxa platformei JAVA, extizandu-se in schimb la programarea orientata agenti.
2) The JACK Agent compiler

Compilatorul Agentilor Jack este un pre-procesor al codului sursa scris in JAL pe care
il converteste in cod sursa JAVA. Acest cod sursa JAVA poate fi compliat in codul
masina Java si astfel urmand a fi rulat.
3) The JACK Agent kernel
The JACK Agent kernel este motorul de rulare pentru programele scrise in JAL.
Acest motor ofera un set de clase ce da programelor JAL functionalitatea de orientare
spre agenti. Cele mai multe dintre aceste clase pot rula si implementa infrastructura de
baza si functionalitate ale agentilor.
4) The JACK Development Environment
JDE este o cross-platform a mediului grafic dezvoltator care poate fi folosita pentru a
dezvolta/realiza aplicatiile agentilor Jack. In plus , pentru a oferi suport pentru
generatia de coduri, instrumentele sunt pregatite sa suporte procesul de design si
urmarirea agentului de executie.
Arhitectura lui Jack
Dintr-o perspectiva inginereasca, Jack consta in facilitati de arhitectura independente plus un
set de componente plug-in care adreseaza cererile specificilor agenti.
Plug-in-urile furnizate cu versiunea 3.0 , eliberat in februarie 2001 , include suport pentru
modelul BDI si modelul pentru crearea echipelor de agenti numite SimpleTeam.
Pentru un programator de aplicatii, Jack consta acum in trei principale extensii la Java.
Primul este un set de aditii sintetice la limbajul gazda. Aceste aditii , la randul lor pot fi
impartite dupa cum urmeaza:
- un mic numar de cuvinte-cheie pentru identificarea componentului principal al unui
agent
- un set de afirmatii pentru declararea atributiilor si alte caracteristici ale componentelor
(de exemplu: informatia continuta pe in credinte sau adusa de evenimente)
- un set de afirmatii pentru manipularea starii unui agent (de exemplu: adaugarea de noi
teluri pentru a fi indeplinite , schimbari de credinte, interactiuni cu alti agenti).
- un set de afirmatii pentru definirea unei relatii statice(de exemplu: ce planuri pot fi
adoptate pentru a reactiona la un anumit eveniment)
Mai mult, programatorul poate folosi afirmatiile Java in componentele unui agent. Jack
suporta de asemenea variabile logice si cursoare. A doua extensie la Java este o compilatie
care transforma aditiile sintactice descrise mai sus in afirmatii si clase Java care pot fi
incarcate cu sau apelate de alte coduri Java. Compilatia transforma de altfel partial codul
planurilor pentru a obtine semantica corespunzatoare a arhitecturii BDI.
Un programator Jack poate extinde sau schimba arhitectura unui agent furnizandu-i
plugin-uri noi . Este posibila si adaugarea unor extensii sintactice pentru a fi manipulate de
compilatorul Jack. Similar, o infrastructura de diferite comunicatii poate fi furnizata prin
metodele corespunzatoare Run-time. Viitoarele versiuni ale lui Jack vor extinde baza
modelului BDI cu noi plugin-uri si se va adauga un numar de instrumente de monitorizare si
dezvoltare.

Crearea codului sursa


Aceasta poate fi indeplinita fie folosind mediul dezvoltator Jack ori un editor la alegere.
Cand se realizeaza o aplicatie Jack , codul sursa va fi creat pentru majoritatea urmatoarelor
entitati:

JACK event(s);
5

JACK plan(s);
JACK agent(s);
JACK capability(s);
JACK view(s);
JACK beliefset(s);

Plus o clasa Java care contine functia principala a aplicatiei care reprezinta punctul de intrare
pentru masina virtuala java si pentru orice alt fisier Java cerut de aceasta aplicatie . Fisierele
care sunt create pentru aceste entitati trebuie sa aiba acelasi nume de baza al entitatii definita
in fisier. Ei pot avea o extensie desemnand tipul entitate Jack continuta sau pur si simplu o
extensie Jack.

Extension

Usage

.jack

Any JACK object definition.

.agent

JACK agent definition.

.cap

JACK capability definition.

.plan

JACK plan definition.

.event

JACK event definition.

.bel

JACK beliefset definition.

.view

JACK view definition.

.java

Java class or interface definition.


Table 1-1: Fisierele extensie Jack

Executia Jack
Cand un agent este introdus intr-un sistem , va astepta pana cand ii va fi implementat un tel
sau pana cand intalnest un eveniment la care trebuie sa raspunda. Cand primeste un
eveniment(un tel), agentul incepe activitatea pentru a manipula evenimente. Daca acesta nu
crede ca telul sau evenimentul nu a fost rezolvat , el va cauta planul potrivit pentru a-l rezolva.

Agentul apoi executa planul sau planurile in functie de evenimente. Manipularea


evenimentului poate fi sincronizata sau nesincronizata in functie de detasare. Planul de
executie poate implica interactiunea cu credintele unui agent sau cu alte structuri redate Java.
Executarea planului , poate la randul ei initia alte subcerinte, care la randul lor pot crea alte si
alte subcerinte. Planurile pot reusi sau pot esua. Sub anumite circumstante , daca planul
esueaza, agentul poate incerca un alt plan. Intr-un singur proces , pot exista mai multi agenti si
fiecare agent are multiple liste de sarcini. Aceasta este generata atunci cand un eveniment
nesincronizat este primit de agent (ori de la el , ori de la un alt agent). Sarcina contine pasii de
procesare , care sunt cerute de un agent pentru a manipula evenimentul ,acesti pasi fiind
specificati in plan .
Executarea sarcinii poate aparea in detasarea unui eveniment urmator. Daca evenimentul este
detasat sincronizat, sarcinile rezultate sunt adaugate in capul listei de sarcini care au generat
evenimentul. Daca evenimentul este nesincronizat, o noua sarcina va fi adaugata in coada
listei.
Intr-un agent , un manager de sarcini este responsabil pentru invartirea in coada de sarcini
(exact cum va depinde de managerul de sarcini sa fie folosit de agenti).
Desigur, se poate avea agenti in diferite procese si in diferite masinarii comunicand intre ei.
Clasa de agent
Intruchipeaza functionalitatea asociata cu un agent inteligent Jack. Pentru a defini proprii
agenti, clasa de agent Jack este extinsa prin adaugarea de membrii si metode care sunt
aplicabile problemei specifice agentului.

Introducere practica in JACK


Exercitiul 1

Faceti un agent robot primar care sa contina o metoda Java care printeaza un mesaj pentru a
indica ca robotul picteaza o parte.
Introducere
Tinta acestui exercitiu este de a demonstra cum se construieste, compileaza si ruleaza un
program Jack folosind Mediul de Dezvoltare JACK (JDE). Drept urmare, niciun concept de
programare agent-orientat in afara in afara de crearea agentilor nu este implicat.
Nota: Seminariile o sa faca uz de design tool pentru a produce diagrame de design si pentru
a crea definitiile initiale de tip skeleton pentru aplicatie. JDE suporta multiple cai pentru a
adauga detaliu definitiior. Chiar si asa, pentru a evita confuzia de pe parcusul seminariilor o
s folosim mereu Edit ca pe o optiune jack File pentru a adauga detalii definitiilor.
Instructiuni:
1. Asigurati-va ca CLASSPATH este setata sa includa jack.jar si calea radacina pentru
aplicatia dvs.
2. Intr-un director nou numit ex1) initializati JDE folosind urmatoarea comanda:
java -Xmx90m aos.main.Jack
3. Creeaza un nou proiect dupa cum urmeaza:
Click-Stanga pe File menu in partea stanga superioara a ecranului.
Click-Stanga pe New Project.
A casuta de dialog New Project File o sa apara.
Numiti fisierul proiectului PaintRobot si click pe butonul New. Sufixul fisierului proiectului
(.prj) o sa fie adaugat automat.
Casuta de dialog The New Project File o sa se inchida si o sa va intoarca in ecranul JDE.
-In ecranul superior din partea stanga a ferestrei browser-ului , numele proiectului o sa apara
cu text rosu
4. Acum o sa dezvoltam aplicatia noastra folosin design tool.We. In aceasta aplicatie o sa
dezvoltam urmatoarele tipuri de diagrame:
O diagrama a unui agent de nivel de top care sa includa detaliile mesajelor trimise/folosite
de un agent
o diagrama ierarhica agent-capability pentru fiecare agent.
O diagrama A Data-Event-Plan (DEP) pentru fiecare capabilitate.
Observati ca la adaugarea de noi componente la diagrama de design, skeletonul pentru
definitia tipului este creat automat si adaugat la browser. Link-urile create intre componente
de pe canvas-ul de design rezulta in declaratiile corespunzatoare care sunt adaugate la
definitiile tip din browser. Indepartarea unui link din diagrama de design indeparteaza link din
modelul fundamental si apoi schimbarea o sa fie reflectata in browser. Indepartarea unei
componente dintr-o diagrama de design nu o indeparteaza pe aceasta din modelul
fundamental. Inca va exista in browser si poate fi trasa inapoi pe canvas-ul de design pentru a
vizualiza relatiile cu alte componente din diagrama.
5.Creeaza o diagrama agent nivel de top folosind design tool.

-Pentru a utiliza design tool,click-stanga pe fisierul Design Views in JDE. Un meniu pop-up
va aparea.
-Selectati Add New Design View din meniu. O casuta de dialog pop-up va parea, cerandu-va
un nume pentru diagrama de design.
-Oferiti diagramei un nume (Robot_AD) si faceti clik pe butonul Add New
-Canvas-ul de design tool o sa apara. Clik-stanga pe butonul Open design palette din bara de
meniu design tool.
-Trageti iconita Agentului din paleta design tool pe canvasul design tool.
-Completati casuta de dialog pop-ul cu detalii ale agentului Robot. Asigurati-va ca agentul
Robot este intr-un pachet numit robot. Click pe Add New button. (Acest agent o sa fie acum
afisat in browser in directorul Agent Types din Agent Model.)
-Puteti alege sa fie in Selection mode sau Link mode. Pentru a intra in Selection mode, click
pe butonul Change to selection mode din bara design tool (butonul Change to selection mode
arata o iconita sageata). In modul de selectie , puteti face click entitati de pe canvas si le
schimba locatia din diagrama. Entitatile selectate sau linkurile pot fi sterse prin selectie si
apoi apasand butonul Delete selected objects. Butonul Delete selected objects afiseaza o
iconita cu cruce. Pentru a intra in Link mode, click pe butonul Change to link mode (butonul
Change to link mode afiseaza o linie in diagonala). In modul Link puteti face conexiuni intre
entitatile de pe diagrama. Observati ca directia link-ului este semnificativa.
6. In browser , editeaza agentul Robot facand click-stanga pe agentul robot si selectand
as JACK file. Adaugati o metoda Java numita paintPart()care contine expresia
System.out.println("Painting part now").
Inchideti fisierul agentului robot pentru a va asigura ca nu sunt conflicte intre editarea
fisierului in browserul JDE ca un fisier JACK. In fereastra Editor a fiserului agent robot, click
butonul Save si apoi pe cel Close.

7. Folositi browserul pentru a adauga programul principal. Acesta este adaugat in topul
ierarhiei a fisierului Other Files.
Click dreapta pe fisierul Other Files si selectati Add New File din meniul pop-up. Adaugati
codul pentru programul principal in fereastra Edit File care apare. Salvati programul principal
cu numele Program.java. Urmatorul program principal poate fi folosit pentru a testa robotul
de vopsire:
import robot.Robot;
public class Program {
public static void main( String args[] ) {
Robot robot1 = new Robot("robbie");
robot1.paintPart();
System.exit(0);
}
}

8. Salvati proiectul. Asta se poate face prin selectarea optiunii Save Project din meniul File in
coltul stang superior la JDE.
Fereastra JDE ar trebui sa arate similar cu urmatoarea:

Figura 1: Fereastra JDE cu browserul de proiect, Robot_AD design, paleta de design si


ferestrele Program.java

9. Compileaza si ruleaza programul in JDE.


-Click pe meniul Tools si selecteaza Composer Utility din meniul drop-down.
-Click pe tab-ul Compile Application si click pe butonul Compile. Daca sunt multe erori, ele
pot fi vizualizate in tab-ul Output/Errors din Compiler Utility.

10

-Cand ati compilat cu succes aplicatia, click pe tab-ul Run Application din Compiler Utility.
Click pe Program.class din contents window si apoi click pe butonul Select File. Butonul Run
poate fi atunci selectat pentru a incepe sa fie rulat programul.

Figure 2: Tab-ul Run Application din Compiler Utility

Exercitiul 2

11

Extindeti agentul robot pentru a utiliza un plan Jack.


Introducere
In acest exercitiu, metoda paintPart()a agentului robot va posta un eveniment de vopsire,
oferind posibilitatea de a alege un plan pentru a raspunde evenimentului . In aceasta etapa o sa
fie un singur plan, PaintSpecifiedCurrentColour, care gestioneaza evenimentul de vopsire.
Planul va printa un mesaj pentru a indica ca robotul vopsete oparte cu o culoare particulara.
Observati ca planul PaintSpecifiedCurrentColour ar fi fost mai bine denumit
PaintSpecifiedColour in aceasta etapa practica. Cu toate astea, acest plan o sa fie folosit
pentru a vopsi o parte cu o culoare specificata care se potriveste cu culoarea actuala a
robotului in exercitiile urmatoare si se pare ca ar fi mai putin confuz daca numele nu ar fi fost
schimbat.
Ca si inainte, paintPart()este invocata dintr-o metoda Jav main() si ruleaza print-o metoda
principala Java) si este urmata de o chemare System.exit(0).
Planurile si evenimentele sunt descrise in notele Introduction to JACK. Daca este necesar,
cititi-le pe acestea inainte de a incepe exercitiul.
Instructiuni :
- Folositi acest design tool pentru a adauga un eveniment Paint la aplicatie
- Daca este necesar, deschideti canvasul Robot_AD prin click dreapta pe
Robot_AD din directorul Design Views si selectand Edit "Robot_AD" din meniul pop-up
- Trageti un eveniment din paleta de design pe canvas
- Umpleti casuta dialog pop-up cu detaliile evenimentului Paint. Asigurati-va ca
evenimentul Paint este in pachetul robot.
- Click pe butonul Add New. (Acest eveniment va fi afisat in browser in directoul Event
Types din Agent Model).
2. Pe canvasul de design, creati un link posts din robotul agent in evenimentul Paint.
Observati ca o declaratie este adaugata automat de JDE in directorul External Events a
robotului agent.
3. Pe canvasul de design creati un link handles din evenimentul paint catre robotul agent.
4. Adaugati un plan PaintSpecifiedCurrentColour la canvasul Robot_AD. Deasemenea, planul
trebuie sa fie in pachetul Robot.
5. Pe canvasul de design creati un link uses din agentul Robot catre planul
PaintSpecifiedCurrentColour
6. Pe canvasul design, creati un link handles din evenimentul Paint catre planul
PaintSpecifiedCurrentColour. Diagrama voastra de design ar trebui sa fie similara cu
urmatoarea diagrama:

12

Figura 3 : Diagrama design cu un singur plan, Robot_AD, PaintSpecifiedCurrentColour

7. In browser, click dreapta pe evenimentul Paint si selectati Edit as Jack file din meniul popup. Completati acest eveniment paint facandu-l:
- extindeti BDIGoalEvent;
- izolati un membru data(camp) String numit colour (aceasta este informatia care va fi
transmisa catre urmatorul eveniment); si
- includeti o metoda de postare paint(String c). Parametrul c este selectat sa fie un
evenimentului data membru colour din metoda de postare. Evenimentul complet Paint
urmeaza :

13

package robot;
public event Paint extends BDIGoalEvent {
public String colour;
#posted as
paint(String c)
{
colour = c;
}
}
Inchideti fisierul pentru a va asigura ca nu exista conflicte intre editarea fisierului in browserul JDE ca un fisier JACK. In fereastra editor a fisierul, click pe butonul Save si apoi pe
butonul Close.
8. Folosind optiunea Edit as a Jack File, editati Robotul agent si
- modificati declaratia #posts event Paint astfel incat sa devina #posts event Paint pev;
- modificati metoda paintPart() din agentul Robot asa incat aceasta sa foloseasca metoda
postEventAndWait() pentru a posta un evenimentul Paint cu culoarea alba precum urmeaza
: postEventAndWait(pev.paint("white"));
Inchideti fisierul pentru a va asigura ca nu exista conflicte in editarea fisierului in browser-ul
JDE ca un fisier JACK. In fereastra editor a fisierului, click pe butonul Save si apoi click pe
butonul Close.
9. Folosind optiunea Edit as a Jack File editati planul PaintSpecifiedCurrentColour dupa cum
urmeaza :
- verificati ca referinta evenimentul Paint gestionalta de plan este ev
- adaugati urmatoarea expresie la medota planului body : System.out.println("Painting the part
the requested colour: " +
ev.colour);
Inchideti fisierul pentru a va asigura ca nu exista conflicte in editarea fisierului in browser-ul
JDE ca un fisier JACK. In fereastra editor a fisierului, click pe butonul Save si apoi click pe
butonul Close.
10. Salvati, compilati si rulati aplicatia.
Intrebari
1. Ce se intampla daca ati fi folosit postEvent()inantrul paintPart() in locul lui
postEventAndWait()? Incercati!
Daca nu ati observat nicio diferenta, adaugati @sleep(2) inainte de copierea expresiei in
planul PaintSpecifiedCurrentColour. Rulati programul folosind postEventAndWait() in
metoda paintPart(). Inlocuiti postEventAndWait cu postEvent()si rulati programul din nou.
Explicati observatiile voastre. Stergeti @sleep(2) din plan inainte de a incepe urmatorul
exercitiu.
Asigurati-va ca ati schimbat postEvent() inapoi in postEventAndWait()inainte de a incepe
urmatorul exercitiu.

14

2. postEventAndWait() ar trebui sa fie apelat doar din subiectul principal Java sau din
subiecte Java care sunt externe JACK. In timp ce acest agent gestioneaza evenimentul,
chemarea subiectului este blocata si este necesara asteptarea pana cand agentul se intoarce cu
rezultatul. Ce problema ati fi intampinat daca postEventAndWait() ar fi fost apelata dintr-o
sarcina de agent?

Beneficiile Jack
Abordarea luata de Jack are un numar de avantaje in comparatii cu alti agenti care vin din
lumea inteligentei artificiale si arhitecturilor orientate pe obiecte standard.Adoptarea Java
garanteaza un mediu larg disponibil, de executie bine suportata. In plus la promisiunile
limbajului(rezumate de bine cunoscutul slogan Compileaza odata, foloseste-l oriunde), un
mare numar de componente software, instrumente si ingineri bine pregatiti devin disponibili.
Pentru cercetatorul A.I, preluarea unui limbaj imperativ, relativ low-level cum ar fi Java,
inseamna pierderea din puterea expresiva oferita de frameworks, bazata pe o logica sau limbaj
functional.
Totusi asta este compensat nu numai de disponibilitatea universala mentionata mai sus. Putem
trage o concluzie ca Jack este potrivit pentru experimentarea cu mai multi agenti arhitecturali
pentru a incerca o noua functionalitate (noi atitudini mentale, semantici diferite, tipuri
aditionale de baze de cunoastere etc) sau pentru a studia caracteristicile performantei in
contexte specifice. Cu atat mai mult, cand comparam frramework-urile bazate pe limbajele
A.I. traditionale, Jack are avantaje distincte datorita unei bune utilizari ale caracteristicilor
intrinsece Java. Cel mai important beneficiu este puternica tiparire care reduce sansele erorilor
de programare introduse de simple tipariri. Ofera de asemenea o versiune clasica de control ,
asigurandu-se ca interfetele sunt compatibile cu Runtime. Urmatoarea e performanta care face
ca viteza de executie a codului scris in Jack comparabila cu o implementare directa cu C sau
C++. Pentru ca ingineria sa dezvolte o aplicatie distribuita sofisticat , Jack ofera mai multe
aspecte uzuale. De exemplu :este o cale eficienta sa exprimi un nivel logic procedural foarte
inalt intr-un mediu orientat pe obiect. Asta ajuta de asemenea la dezvoltarea rapida a aplicatiei
permitandu-i o distinctie clara intre datele abstracte si operatiunile lor pe deoparte, iar pe de
alta parte comportamentul specific aplicational . In timp ce primul ar trebui sa fie bazat pe
performanta inalta , bine testata,refolosibia si in ultimul rand foarte scumpa , ultimul este mai
bine exprimat in planuri care pot fi modificate. Sensibilitatea contextului si semanticile
sofisticate de atitudini mintale ale arhitecturii BDI. Aceste caracteristici permit unele niveluri
de adaptabilitate la conditiile schimbatoare.
Uurina de integrare cu sistemele existente. Acest lucru permite, printre altele, o abordare
progresiv pentru dezvoltarea sistemului distribuit. n comparaie cu framework-urile care
provin din medii de cercetare. Jack are avantaje clare de a fi usurat, de rezistenta industriala si
accesibil pentru o comunitate mare de ingineri formai n programarea orientat pe obiecte.
Concluzii

15

JACK Intelligent Agents este un framework multi-agent care extinde limbajul Java.
Versiunea curenta suporta modelul BDI i SimpleTeam, o extensie pentru a sprijini echipa
bazata pe raionament.Modularitatea lui Jack permite extensii si alte modele pentru a fi usor
de sustinut. JACK este un produs industrie-putere, oferind un framework care are o soluie
fondat n cercetarea inteligenei artificiale n utilizarea practic. Comparativ cu
predecesorii si, de ex PRS i a sistemelor de dMARS menionate mai sus i alte agent
framework-ur similare disponibile n lumea academic, Jack nu este un "pur sistem AI. n
schimb, aceasta constituie o cstorie de succes ntre viziunea de cercetare agent i nevoile de
inginerie software, aducand puterea tehnologiei agent i mbogirea limbajului gazd, Java.
Suntem ncreztori c Jack ofer beneficii att pentru dezvoltarea de inginerie software pentru
sisteme distribuite cat i pentru cercetarile academice.

BIBILIOGRAFIE
N.Howden, R.Rnnquist, A.Hodgson, A.Lucas - JACK Intelligent Agents
http://users.cs.cf.ac.uk/O.F.Rana/agents2001/papers/18_howden.pdf

Cary B. Phillips - Programming with Jack (Fourth Edition)


http://repository.upenn.edu/cis_reports/430/

JACK Intelligent Agents- Agent Practicals


http://www.aosgrp.com/documentation/jack/practicals/jack_jde/practicals.pdf

16

S-ar putea să vă placă și