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() + "

has started...");

// wait 3 seconds
Thread.Sleep(3000);
// delete agent
doDelete();
}
public override void takeDown()
{
Console.WriteLine("Agent " + getAID().getName() + "
}

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