Sunteți pe pagina 1din 7

Modelarea i analiza sistemelor multi-agent Laboratorul 1

Platforma JADE. Crearea static a agenilor


1. Prezentarea arhitecturii generale JADE 1.1. Platforma Jade pentru aplicaii distribuite multi-agent 1.2. Componentele platformei JADE 2. Crearea static a agenilor 3. Aplicaii

1. Prezentarea arhitecturii generale JADE


1.1. Platforma JADE pentru aplicaii distribuite multi-agent
Un agent este un sistem situat n mediul su de execuie i care este capabil de aciuni autonome n scopul de a ndeplini obiectivele pentru care a fost proiectat. Agenii inteligeni pstreaz proprietile agenilor autonomi i, n plus, prezint un comportament flexibil, caracterizat prin: reactivitate: capacitatea de a percepe propriul mediu i de a rspunde n timp util la schimbrile care apar n acesta; pro-activitate: capacitatea de a expune un comportament orientat spre scop prin preluarea iniiativei; capacitatea social de a interaciona cu ali ageni i, eventual, cu utilizatori umani.

Probabil cea mai mare diferen ntre programarea tradiional orientat pe obiect i cea bazat pe agent este libertatea unui agent de a rspunde la o cerere. Atunci cnd un obiect primete un mesaj, adic una dintre metodele sale este apelat, fluxul de control se mut n mod automat la acea metod. Atunci cnd un agent primete un mesaj, acesta poate decide dac trebuie s acioneze conform acestuia sau nu. Din cauza caracteristicilor distribuite, autonome i de cooperare, proiectarea i implementarea algoritmilor ntr-o platfrom multiagent ridic o serie diferit de probleme fa de cele generate de proiectarea i implementarea ntr-un mediu orientat pe obiect. JADE (Java Agent Development Framework) este o platform care faciliteaz dezvoltarea aplicaiilor distribuite multi-agent, conform specificaiilor FIPA (Foundation of Inteligent Physical Agent). Framework-ul a fost dezvoltat de ctre CSELT (Centro Studi e Laboratori Telecommunicazioni, cunoscut i ca Telecomm Italia Lab) mpreun cu Computer Engineering Group de la Universitatea din Parma. Creat iniial n Java, JADE a fost portat n .NET compilndu-se cu ANT (un utilitar de tip Makefile ce folosete ca intrare fisiere XML). Pentru a putea crea ageni JADE, n proiectul .NET trebuie adugate ca referin assembly-ul obinut n urma compilrii cu ANT i biblioteca vjslib.dll. JADE este un proiect cu o dinamic extraordinar i sufer de problemele pe care orice proiect le are la nceput (cod surs mult i nedocumentat, clase care nu conin cod, surse neactualizate pe site,

1 Modelarea si analiza sistemelor multi-agent - Laborator http://florinleon.byethost24.com/lab_masma.htm

instruciuni care nu se potrivesc pentru toate versiunile, add-on-uri ce nu sunt compatibile cu anumite versiuni, etc.). Pentru evitarea pierderii inutile de timp, cei ce ntmpin greuti n compilare, dezvoltare sau rulare sunt ndemnai s caute soluii ale acestor probleme inerente cu ajutorul celor ce lucreaz la acest proiect prin mailing-list-ul developer-ilor JADE / LEAP (nregistrarea se face pe site-ul http://jade.tilab.com, seciunea Community & developers). Se recomand folosirea la compilare a versiunii .NET Framework 2.0 i nu 1.1 pentru performane superioare.

1.2. Componentele platformei JADE


Platforma JADE a devenit unul dintre cele mai populare software middleware orientate agent. Este un sistem complet distribuit cu o infrastructur flexibil, avnd scopul de a facilita dezvoltarea de aplicaii complet bazate pe agent prin intermediul unui mediu run-time ce implementeaz caracteristicile care stau la baza ciclului de via solicitate de ageni, precum i logica de baz a agenilor nii. FIPA (Foundation for Intelligent Physical Agents) este o organizaie avnd standardele IEEE Computer Society, care promoveaz tehnologia bazat pe agent i interoperabilitatea propriilor standarde cu alte tehnologii. Standardul FIPA se bazeaz pe principiul c ar trebui specificat numai comportamentul extern al componentelor sistemului, lsnd arhitectura intern i detaliile de implementare dezvoltatorilor de platforme individuale. Acest lucru asigur interoperarea ntre platforme conforme. Platforma JADE ofer compatibilitate complet cu specificaiile FIPA (comunicare, management i de arhitectur), care ofer cadrul n care agenii pot exista, opera i comunica, n timp ce adopt o arhitectura intern unic i implementarea serviciilor de agent cheie. JADE conine, pe lng biblioteca de clase pentru dezvoltarea i manipularea agenilor, un runtime environment ce trebuie activat pentru a putea lansa agenii n execuie. Fiecare instan a acestui runtime environment este numit Container. Fiecare container poate conine mai muli ageni. Toate containerele active formeaz o Platform, n care trebuie s existe obligatoriu un singur container special numit Main Container. JADE este o platform de dezvoltare a agenilor inteligeni, cu o arhitectur modular, bazat pe locaii n care agenii pot rula. n figura 1 este prezentat arhitectura platformei JADE. Din aceast figur se pot trage urmtoarele concluzii: Un Agent poate rula numai ntr-un Container (fie el principal MainContainer sau nu Container); Un Container poate s conin niciun Agent, un Agent sau mai muli ageni; Un Container poate aparine unui singure platforme (Platform); Fiecare Platform trebuie s conin exact un container principal (MainContainer); Un Computer poate s gzduiasc unul sau mai multe Containere ale aceleiai Platforme; Un Computer poate s gzduiasc una sau mai multe Platforme.

2 Modelarea si analiza sistemelor multi-agent - Laborator http://florinleon.byethost24.com/lab_masma.htm

Rularea platformei JADE / LEAP n mediul de dezvoltare Visual Studio implic o serie de pai: Crearea unui nou proiect C# sau VB .NET cu specificaia c varianta framework-ului proiectului este recomandat s coincid cu cea cu ajutorul creia s-a compilat biblioteca JadeLeap.dll; Adugarea referinelor ctre JadeLeap.dll i vjslib.dll (categoria .NET bibliotec provenit din instalarea Visual J# Redistributable 1.1.4233).

Figura 1. Arhitectura platformei JADE

3 Modelarea si analiza sistemelor multi-agent - Laborator http://florinleon.byethost24.com/lab_masma.htm

2. Crearea static a agenilor


Pentru a lansa n execuie agenii JADE trebuie executai urmtorii pai: 1. [C#] Includerea n directorul executabilului aplicaiei a unui fiier text de configurare numit "leap.properties" care s conin urmtoarele linii:
main = mainURL = icp = agents =

[JAVA] Nu este necesar un astfel de fisier, agentii se vor specifica folosind argumentele liniei de comand. 2. Scrierea codului surs pentru crearea unui container principal: [C#]
class Program { static void Main(string[] args) { Profile p = new ProfileImpl("leap.properties"); Runtime rt = Runtime.instance(); jade.wrapper.AgentContainer mc = rt.createMainContainer(p); } }

Trebuie adugate ca referine la proiect assembly-urile: JadeLeap.dll (de pe hard disk - Browse) i vjslib.dll (din lista .NET).

[JAVA]
public class Lab1Ex1Java { public static void main(String args[]) { Profile p = new ProfileImpl(); Runtime rt = Runtime.instance(); jade.wrapper.AgentContainer mc = rt.createMainContainer(p); } }

4 Modelarea si analiza sistemelor multi-agent - Laborator http://florinleon.byethost24.com/lab_masma.htm

3. Implementarea agentului propriu-zis: [C#]


class SimpleAgent : Agent { public override void setup() { Console.WriteLine("Hello, I'm " + getLocalName() + " and I'm living in " + this.getContainerController().getContainerName() + "\n"); } }

[JAVA]
public class SimpleAgent extends Agent { @Override public void setup() { System.out.println("Hello, I'm " + getLocalName() + " and I'm living in " + this.getContainerController().getName()); } }

Pentru a crea i lansa un agent de tipul SimpleAgent:

[C#] Fiierul leap.properties trebuie modificat astfel:


main = mainURL = icp = agents = Agent1:Lab1Example1.SimpleAgent(last:true);

unde AgentSimplu este numele agentului. Dac dorim lansarea mai multor ageni vom modifica ultima linie a fiierului de mai sus astfel:
agents = Agent1:Lab1Example1.SimpleAgent; Agent2:Lab1Example1.SimpleAgent; Agent3:Lab1Example1.SimpleAgent (last:true);

Observaie! Dup ";" nu se folosete enter.

[JAVA] Agentii se specific utiliznd argumentele liniei de comand:


-agents "Agent1:lab1ex1java.SimpleAgent; Agent2:lab1ex1java.SimpleAgent; Agent3:lab1ex1java.SelfDestructAgent"

5 Modelarea si analiza sistemelor multi-agent - Laborator http://florinleon.byethost24.com/lab_masma.htm

Se vor lansa astfel n paralel 3 ageni cu numele de mai sus. Pentru a elimina un agent, vom apela metoda doDelete() din cadrul agentului. Acesta va fi oprit i va fi ters din containerul din care face parte. 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.

[C#]
class SelfDestructAgent : Agent { public override void setup() { Console.WriteLine("Agent " + getAID().getName() + " // wait 3 seconds Thread.Sleep(3000); // delete agent doDelete(); } public override void takeDown() { Console.WriteLine("Agent " + getAID().getName() + " } }

has started...");

is being removed...");

[JAVA]
public class SelfDestructAgent extends Agent { @Override public void setup() { System.out.println("Agent " + getAID().getName() + " has started"); try { Thread.sleep(3000); }catch(InterruptedException e) { } doDelete(); } @Override public void takeDown() { System.out.println("Agent " + getAID().getName() + " is being removed"); } }

Rularea exemplelor din laborator va conduce la un rezultat de tipul celui din figura 2.
6 Modelarea si analiza sistemelor multi-agent - Laborator http://florinleon.byethost24.com/lab_masma.htm

Figura 2. Exemplu de rulare

3. Aplicaii
3.1. S se creeze un agent care s numere de la 1 la 100, cu o pauz de jumtate de secund ntre dou numere succesive. La fiecare incrementare, agentul va afia la consol valoarea la care a ajuns printr-un mesaj:
Eu, agentul [nume agent], am numarat pana la [valoarea la care a ajuns]

3.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 i 5 secunde pe care agentul l ateapt nainte de a trece la urmtorul numr. Observai cum agenii lucreaz n paralel. 3.3. S se creeze 2 ageni care s calculeze suma, respectiv media aritmetic, pentru 10000 de numere generate aleatoriu n intervalul [1, 10]. Fiecare agent, dup ce a prelucrat 100 de numere, trebuie s informeze utilizatorul printr-un mesaj pe ecran:
Eu, agentul [nume agent], am prelucrat [numarul de numere prelucrate] si am obtinut pana acum rezultatul partial [valoare partiala]

7 Modelarea si analiza sistemelor multi-agent - Laborator http://florinleon.byethost24.com/lab_masma.htm

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