laborator si nr 07 - agenti

11
Laborator 1 Obiective 1. Programare orientata Agent 2. Arhitectura generala a platformei JADE. 3. Instalarea si utilizarea platformei JADE. Exemplu Agent Ping 4. Urmarirea mesajelor cu Agent Sniffer. 5. Implementare agenţi 6. Aplicaţii de implementat 1. Programare orientata Agent În termeni simpli, din perspectiva ingineriei programării, AOP este echivalentă cu Knowledge Programming ( KP ) plus Object-Oriented Programming ( OOP ). O aplicaţie dezvoltată în metodologia AOP este o colecţie de agenţi ( entităţi semi-autonome similare celor din metodologia orientată obiect), rulând în paralel şi interacţionând într-un mod organizat. Din perspectiva programării, AOP poate fi vazută ca o specializare a OOP: agenţii constând din anumite cunoştinţe despre lumea exterioară, despre alt agent sau despre el însuşi şi tehnici de a manipula aceste cunoştinţe. Interacţiunea dintre agenţi înseamnă a comunica, adică a schimba mesaje ( informaţii ) între ei. Agenţii pot comunica în mod paralel şi independent cu alţii ceea ce duce la apariţia noţiunii de concurenţă dintre agenţi. 2. Arhitectura generală a platformei JADE. Figura 1 prezintă principalele elemente ale platformei JADE. O platformă JADE este compusă din containere de agenţi care pot fi distribuite în reţea. Agenţii rulează în containere care reprezintă procese Java. Aceste procese furnizează mediul de execuţie JADE şi toate serviciile necesare pentru găzduirea şi execuţia agenţilor. Există un container special, numit container principal, care reprezintă punctul iniţial de execuţie (bootstrap) al unei platforme. Este primul container care este lansat, iar celelalte containere create trebuie să se înregistreze prin intermediul lui. Din punctul de vedere al programării, containerele sunt identificate prin utilizarea unui nume logic; implicit, containerul principal este numit Main Container, iar celelalte Container-1, Container-2 etc. [Bellifemine et al, 2007]. Ca punct iniţial de execuţie, containerul principal are următoarele responsabilităţi speciale: Administrarea tabelei cu containere (CT-container table) care reprezintă registrul cu referinţele obiectelor şi adresele de transport ale tuturor containerelor care compun platforma. Administrarea tabelei globale cu descriptorii agenţilor (GADT- global agent descriptor table), care este un registru cu toţi agenţii prezenţi în platformă, inclusiv starea lor de execuţie şi locaţia. Găzduirea agenţilor AMS şi DF, doi agenţi speciali care se ocupă de administrarea agenţilor şi publicarea serviciilor oferite de aceştia. 7

Upload: senciuc-liviu

Post on 12-Sep-2015

215 views

Category:

Documents


2 download

DESCRIPTION

Agenti

TRANSCRIPT

  • Laborator 1Obiective

    1. Programare orientata Agent2. Arhitectura generala a platformei JADE.3. Instalarea si utilizarea platformei JADE. Exemplu Agent Ping4. Urmarirea mesajelor cu Agent Sniffer. 5. Implementare ageni6. Aplicaii de implementat

    1. Programare orientata Agentn termeni simpli, din perspectiva ingineriei programrii, AOP este echivalent cu Knowledge Programming ( KP ) plus Object-Oriented Programming ( OOP ).O aplicaie dezvoltat n metodologia AOP este o colecie de ageni ( entiti semi-autonome similare celor din metodologia orientat obiect), rulnd n paralel i interacionnd ntr-un mod organizat.

    Din perspectiva programrii, AOP poate fi vazut ca o specializare a OOP: agenii constnd din anumite cunotine despre lumea exterioar, despre alt agent sau despre el nsui i tehnici de a manipula aceste cunotine. Interaciunea dintre ageni nseamn a comunica, adic a schimba mesaje ( informaii ) ntre ei. Agenii pot comunica n mod paralel i independent cu alii ceea ce duce la apariia noiunii de concuren dintre ageni.

    2. Arhitectura general a platformei JADE.Figura 1 prezint principalele elemente ale platformei JADE. O platform JADE este

    compus din containere de ageni care pot fi distribuite n reea. Agenii ruleaz n containere care reprezint procese Java. Aceste procese furnizeaz mediul de execuie JADE i toate serviciile necesare pentru gzduirea i execuia agenilor. Exist un container special, numit container principal, care reprezint punctul iniial de execuie (bootstrap) al unei platforme. Este primul container care este lansat, iar celelalte containere create trebuie s se nregistreze prin intermediul lui. Din punctul de vedere al programrii, containerele sunt identificate prin utilizarea unui nume logic; implicit, containerul principal este numit Main Container, iar celelalte Container-1, Container-2 etc. [Bellifemine et al, 2007].

    Ca punct iniial de execuie, containerul principal are urmtoarele responsabiliti speciale: Administrarea tabelei cu containere (CT-container table) care reprezint registrul cu

    referinele obiectelor i adresele de transport ale tuturor containerelor care compun platforma.

    Administrarea tabelei globale cu descriptorii agenilor (GADT- global agent descriptor table), care este un registru cu toi agenii prezeni n platform, inclusiv starea lor de execuie i locaia.

    Gzduirea agenilor AMS i DF, doi ageni speciali care se ocup de administrarea agenilor i publicarea serviciilor oferite de acetia.

    7

  • figura 1. Relaia ntre principalele elemente ale arhitecturii JADE [Bellifemine et al, 2007]

    O caracteristic important a acestui sistem este suportul pe care l ofer pentru ontologii i limbaje de coninut utilizate n cadrul mesajelor. Fiecare agent JADE este executat ca un thread independent i execut comportamente (behaviours). Comportamentele sunt task-uri ce pot fi inserate dinamic i planificate de un agent .Sistemul middleware JADE este organizat conform specificaiilor FIPA. El este compus din Agent Management Service (AMS), Directory Facilitator (DF) i Message Transport Service (MTS). Caracterul distribuit al middleware-ului este obinut prin utilizarea container-elor de ageni. Aceasta este o soluie specific JADE, care nu face parte din specificaiile FIPA i permite mai multor instane ale aceluiai middleware s fie rspndite pe unul sau mai multe host-uri.

    3. Instalarea si utilizarea platformei JADE. Exemplu Agent PingUltima versiune a platformei de ageni JADE se gsete la adresa http://jade.tilab.com/ sub forma unei arhive: JADE-all-4.0.1.zip. Prin dezarhivare se obine un folder rdcin cu numele jade, n care avem urmtoarele directoare mai importante:

    doc: conine tutoriale i ghiduri de utilizare pentru platform i componentele adiionale (add-ons)

    lib: conine fiierul jade.jar care formeaz mediul Jade src: care conine sursele att pentru JADE, ct i pentru exemplele prezentate (in

    "jade/src/examples" ) Ca mod de execuie, agenii se aseamn cu applet-urile Java, adic ei trebuie ei trebuie s ruleze n cadrul unui program mai mare care s furnizeze serviciile necesare. n cazul applet-urilor este necesar un browser sau un Applet viewer; pentru agenii Jade mediul de execuie este oferit de clasa jade.Boot care preia din lista de parametri numele agentului care trebuie executat. Pentru a urmri rularea aplicaiilor multi-agent, au fost dezvoltate cteva instrumente sub forma unor ageni, cum ar fi RMA(Remote Monitoring Agent), agent Sniffer, agent Dummy etc.The Remote Monitoring Agent (RMA) permite controlul platformei i a tuturor agenilor nregistrai. Arhitectura distribuit a platformei JADE permite de asemenea controlul de la distan, n care GUI este utilizat pentru controlul execuiei agenilor de pe un calculator

  • remote. Un agent RMA este un obiect Java care poate fi lansat din linia de comand ca un alt agent (utiliznd comanda java jade.Boot myConsole:jade.tools.rma.rma), sau prin utilizarea opiunii -gui n linia de comand (java jade.Boot gui).Comanda complet este: java -cp lib\jade.jar jade.Boot guiFereastra CommandPrompt n care a fost lansat comanda va conine:

    Interfaa grafic a agentului RMA este:

    Containerul Main-Container contine 3 agenti impliciti (AMS, DF, RMA).

    Se observ c numele agenilor respectivi este de forma: @Este posibil s lansm platforma sub alt nume:

  • java -cp lib\jade.jar jade.Boot -gui -platform-id MyPlatformncheierea execuiei platformei se face cu opiunea din meniul File --> Shut down Agent Platform. Compilarea exemplelor, de exemplu, a agentului Ping din lista de exemple, se face folosind comanda: javac -classpath lib\jade.jar -d classes src\examples\PingAgent\*.javaAgentul Ping este implementat astfel nct s rspund cu mesajul pong dac primete un mesaj de tip REQUEST ce conine textul ping. Pentru a lansa n execuie un agent Ping din linia de comanda, se utilizeaz: java -cp lib\jade.jar;classes jade.Boot -gui -agents ping1:examples.PingAgent.PingAgent

    Observm, c specificarea agenilor se face folosind schema: :Putem lansa simultan mai multi ageni, ce se bazeaz chiar i pe aceeai clas, se utilizeaz comanda: java -cp lib\jade.jar;classes jade.Boot -gui -agents ping1:examples.PingAgent.PingAgent;ping2:examples.PingAgent.PingAgentn interfaa grafic a agentului RMA se pot observa cei 2 ageni creai.

    n continuare vom activa un agent Dummy pentru a trimite un mesaj agentului ping1. Acest agent este identificat n bara de instrumente prin pictograma din figura urmtoare:

    O seciune a interfeei grafice a acestui agent este prezentat n figura urmtoare:

  • Completm mesajul ACL conform indicaiilor urmtoare: Receivers- se acioneaz butonul dreapta al mouse-ului n caseta asociat i se alege opiunea Add. n noua fereastr care apare vom selecta caseta Name care permite specificarea agentului cruia i este destinat mesajul doar prin nume.

    Communicative act: requestContent: pingFereastra va arta astfel:

    Apoi se trimite mesajul prin accesarea butonului SendMessage:

  • La expedierea mesajului obinem n caseta text din partea dreapt a ferestrei urmtoarele informaii:

    Albastru indica mesajele trimise, rosu cele primite. Examinnd mesajul de raspuns (de culoare roie) prin accesarea butonului:

    se poate vedea coninutul mesajului care este pong.

    4. Urmarirea mesajelor cu Agent Sniffer. Lansarea Agentului Sniffer se realizez prin intermediul butonului StartSniffer

    Adaugare agentilor care se doresc a fi urmrii din punctul de vedere al transmiterii mesajelor se va realiza prin acionarea butonului:

    Se va lansa un agent Dummy i se va aduga i el n fereastra de urmrire a mesajelor. Apoi se va trimite un mesaj ctre agenii ping1, ping2 (la Receivers se adaug pe rnd adresele celor 2 ageni, prin selectarea succesiv a opiunii Add). Mesajul va avea selectat:Communicative act: requestContent: pingDup ce mesajul este trimis, fereastra agentului Sniffer trebuie s arate ca n figura:

  • Prin dublu click de mouse acionat pe unul din mesajele INFORM se poate vedea mesajul de rspuns al agenilor ping care conine textul pong.

    5. Implementare ageniVom considera pentru nceput cel mai simplu exemplu de agent JADE care afieaz un mesaj Hello World. Agenii JADE sunt definii ca subclase a clasei predefinite Agent, iar codul care trebuie executat prima dat de agent trebuie plasat n metoda setup.

    import jade.core.Agent; public class HelloAgent extends Agent { protected void setup() { System.out.println("Hello World. "); System.out.println("My name is "+ getLocalName()); } }

    Compilarea codului corespunztor agentului se realizeaz cu ajutorul comenzii, considernd codul ca fiind plasat n directorul jade/grupa:

    >javac -classpath lib\jade.jar -d classes grupa\HelloAgent.java Lansarea n execuie a agentului poate fi realizat 1. la lansarea n execuie a platformei(aa cum a fost lansat i agentul ping) >java -cp lib\jade.jar;classes jade.Boot -gui -agents helloAg1:HelloAgent2. n cazul n care agentul RMA ruleaz, agentul poate fi lansat i prin intermediul interfeei grafice: meniul Actions ->Start New Agent, n urma cruia apare fereastra urmtoare.

  • Numele agentului a fost completat cu helloAg1, iar numele clasei pe baza creia va fi creat agentul este HelloAgent obinut anterior n urma compilrii.

    Rezultatul execuiei programului este prezentat n figura urmtoare:

    La finalul execuiei agentului, mediul JADE(container-ul) rmne activ. El ateapt mesaje de la alte containere sau migrarea unor ageni mobili. Execuia mediului JADE se poate ncheia n acest caz prin combinaia de taste CTL-C.

    Metoda setup se execut doar la lansarea n execuie a agenilor i este utilizat de obicei pentru iniializri. Aciunile agenilor sunt specificate prin intermediul claselor de tip Behaviour. Mai exact, aciunile sunt descrise n metodele action ale acestor clase Behaviour. Metoda setup este utilizat doar pentru a crea instane ale acestor comportamente i de a le asocia obiectului Agent curent. Structura tipic a unei clase agent este :

    import jade.core.Agent; import jade.core.behaviours.*; public class myAgent extends Agent { protected void setup() { addBehaviour( new myBehaviour( this ) ); } class myBehaviour extends SimpleBehaviour { public myBehaviour(Agent a) { super(a); } public void action() { //...this is where the real programming goes !! System.out.println( "Hello World! My name is " + myAgent.getLocalName() );

    } private boolean finished = false; public boolean done() {

  • return finished; } } // ----------- End myBehaviour }//end class myAgent

    Mecanismul prin care un comportament se ncheie este oferit de metoda done. Aceast metod este apelat dup fiecare execuie a metodei action. Astfel, ct timp metoda done returneaz valoarea false, metoda action este apelat n mod repetat la apariia unor evenimente, cum ar fi: primirea unui mesaj sau expirarea unui interval de timp presetat. n exemplu este prezentat o tehnic uzual de terminare a comportamentului: un flag FINISHED a crei valoare este verificat n metoda "done" i poate fi setat n metoda "action".

    myAgent: este o variabil local a tuturor obiectelor de tip Behaviour care memoreaz referina agentului primit ca parametru atunci cnd obiectul de tip Behaviour a fost creat. Aceast variabil este accesibil i atunci cnd clasa de tip Behaviour este creat n afara clasei Agent.

    La execuia exemplului se poate observa c se afieaz la nesfrit mesajul din metoda action, deoarece metoda done nu returneaz niciodat true.

    n exemplul urmtor, comportamentul va fi ncheiat dup apelarea de 3 ori a metodei action.

    /***************************************************************** Simple1.java: Minimal agent with anonymous behaviour *****************************************************************/ import jade.core.Agent; import jade.core.behaviours.*; public class Simple1 extends Agent { protected void setup() { addBehaviour( // -------- Anonymous SimpleBehaviour new SimpleBehaviour( this ) { int n=0; public void action() { System.out.println( "Hello World! My name is " + myAgent.getLocalName() ); n++; } public boolean done() { return n>=3; }

  • } ); } // --- setup --- } // --- class Simple1

    Ca observaie: comportamentul se termin, ns agentul exist n continuare, iar mediul JADE care a fost lansat odat cu agentul este activ pentru a interaciona cu ali ageni care pot fi lansai n reea.

    Pentru ntreruperea execuiei agentului se va apela metoda doDelete() ca n exemplul urmtor:/***************************************************************** AgDel.java: Minimal agent with anonymous behaviour *****************************************************************/ import jade.core.Agent; import jade.core.behaviours.*; public class AgDel extends Agent { protected void setup() { System.out.println("Agent "+ getLocalName() + " has started...");

    // Asteptam 10 secundetry{

    Thread.sleep(10000);}catch(InterruptedException ex){}// Apelam metoda de stergere a agentuluidoDelete();

    } // --- setup ---

    // Put agent clean-up operations hereprotected void takeDown() {

    System.out.println("Agent "+getAID().getName()+" is being removed...");

    }

    } // --- class AgDel

    n urma execuiei acestui program, agentul va apare n lista de ageni a container-ului principal pentru 10 secunde, apoi va fi ters. La finalizarea agentului se pot aduga secvene de cod pentru a marca i anuna distrugerea acestuia suprascriind metoda takeDown() din clasa Agent, aceasta fiind apelat automat naintea opririi agentului.

    7. Aplicaii de implementat1.S se creeze un agent care s numere n intervalul 1-100 cu o pauz de jumtate de secund ntre dou numere. Agentul va afia la consol la fiecare iteraie valoarea la care a ajuns printr-un mesaj de tipul:

    Eu, agentul [nume agent], am numarat pana la [valoarea la care a ajuns]

  • 2. S se creeze 4 ageni care s fac aceeai operaie ca la problema 1. Setai un interval aleatoriu pentru fiecare agent ntre [0.5, 5] secunde pe care agentul l ateapt nainte de a trece la urmtorul numr. Observai cum agenii lucreaz n paralel.

    Laborator 11. Programare orientata Agent2. Arhitectura general a platformei JADE.3. Instalarea si utilizarea platformei JADE. Exemplu Agent Ping4. Urmarirea mesajelor cu Agent Sniffer.5. Implementare ageni7. Aplicaii de implementat