Sisteme multiagent. Platforma JADE. Crearea statica a agentilor

7

Click here to load reader

description

Platforma JADE. Crearea statica a agentilor

Transcript of Sisteme multiagent. Platforma JADE. Crearea statica a agentilor

Page 1: Sisteme multiagent. Platforma JADE. Crearea statica a agentilor

1

Modelarea şi analiza sistemelor multi-agent Laboratorul 1

Platforma JADE. Crearea statică a agenţilor

1. Prezentarea arhitecturii generale JADE 1.1. Platforma Jade pentru aplicaţii distribuite multi-agent 1.2. Componentele platformei JADE

2. Crearea statică a agenţilor 3. Aplicaţii

1. Prezentarea arhitecturii generale JADE 1.1. Platforma JADE pentru aplicaţii distribuite multi-agent

Un agent este un sistem situat în mediul său de execuţie şi care este capabil de acţiuni autonome în

scopul de a îndeplini obiectivele pentru care a fost proiectat. Agenţii inteligenţi păstrează

proprietăţile agenţilor autonomi şi, în plus, prezintă un comportament flexibil, caracterizat prin:

reactivitate: capacitatea de a percepe propriul mediu şi de a răspunde în timp util la

schimbările care apar în acesta;

pro-activitate: capacitatea de a expune un comportament orientat spre scop prin preluarea

iniţiativei;

capacitatea socială de a interacţiona cu alţi agenţi şi, eventual, cu utilizatori umani.

Probabil cea mai mare diferenţă între programarea tradiţională orientată pe obiect şi cea bazată pe

agent este libertatea unui agent de a răspunde la o cerere. Atunci când un obiect primeşte un mesaj,

adică una dintre metodele sale este apelată, fluxul de control se mută în mod automat la acea

metodă. Atunci când un agent primeşte un mesaj, acesta poate decide dacă trebuie să acţioneze

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

aplicaţiilor distribuite multi-agent, conform specificaţiilor FIPA (Foundation of Inteligent Physical

Agent). Framework-ul a fost dezvoltat de către CSELT (Centro Studi e Laboratori

Telecommunicazioni, cunoscut şi ca Telecomm Italia Lab) împreună cu Computer Engineering

Group de la Universitatea din Parma.

Creat iniţial în Java, JADE a fost portat în .NET compilându-se cu ANT (un utilitar de tip Makefile

ce foloseşte ca intrare fisiere XML). Pentru a putea crea agenţi JADE, în proiectul .NET trebuie

adăugate ca referinţă assembly-ul obţinut în urma compilării 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 conţin cod, surse neactualizate pe site,

Modelarea si analiza sistemelor multi-agent - Laboratorhttp://florinleon.byethost24.com/lab_masma.htm

Page 2: Sisteme multiagent. Platforma JADE. Crearea statica a agentilor

2

instrucţiuni 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 întâmpină greutăţi în compilare, dezvoltare sau

rulare sunt îndemnaţi să caute soluţii 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, secţiunea Community & developers).

Se recomandă folosirea la compilare a versiunii .NET Framework 2.0 şi nu 1.1 pentru performanţe

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ă, având scopul de a facilita dezvoltarea de

aplicaţii complet bazate pe agent prin intermediul unui mediu run-time ce implementează

caracteristicile care stau la baza ciclului de viaţă solicitate de agenţi, precum şi logica de bază a

agenţilor înşişi.

FIPA (Foundation for Intelligent Physical Agents) este o organizaţie având 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, lăsând arhitectura internă şi detaliile de

implementare dezvoltatorilor de platforme individuale. Acest lucru asigură interoperarea între

platforme conforme.

Platforma JADE oferă compatibilitate completă cu specificaţiile FIPA (comunicare, management şi

de arhitectură), care oferă cadrul în care agenţii pot exista, opera şi comunica, în timp ce adoptă o

arhitectura internă unică şi implementarea serviciilor de agent cheie.

JADE conţine, pe lângă biblioteca de clase pentru dezvoltarea şi manipularea agenţilor, un runtime

environment ce trebuie activat pentru a putea lansa agenţii în execuţie. Fiecare instanţă a acestui

runtime environment este numită Container. Fiecare container poate conţine mai mulţi agenţi. 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 agenţilor inteligenţi, cu o arhitectură modulară, bazată pe

locaţii în care agenţii pot rula. În figura 1 este prezentată arhitectura platformei JADE. Din această

figură se pot trage următoarele concluzii:

Un Agent poate rula numai într-un Container (fie el principal – MainContainer – sau nu –

Container);

Un Container poate să conţină niciun Agent, un Agent sau mai mulţi agenţi;

Un Container poate aparţine unui singure platforme (Platform);

Fiecare Platformă trebuie să conţină exact un container principal (MainContainer);

Un Computer poate să găzduiască unul sau mai multe Containere ale aceleiaşi Platforme;

Un Computer poate să găzduiască una sau mai multe Platforme.

Modelarea si analiza sistemelor multi-agent - Laboratorhttp://florinleon.byethost24.com/lab_masma.htm

Page 3: Sisteme multiagent. Platforma JADE. Crearea statica a agentilor

3

Rularea platformei JADE / LEAP în mediul de dezvoltare Visual Studio implică o serie de paşi:

Crearea unui nou proiect C# sau VB .NET cu specificaţia că varianta framework-ului

proiectului este recomandată să coincidă cu cea cu ajutorul căreia s-a compilat biblioteca

JadeLeap.dll;

Adăugarea referinţelor către JadeLeap.dll şi vjslib.dll (categoria .NET – bibliotecă provenită

din instalarea Visual J# Redistributable 1.1.4233).

Figura 1. Arhitectura platformei JADE

Modelarea si analiza sistemelor multi-agent - Laboratorhttp://florinleon.byethost24.com/lab_masma.htm

Page 4: Sisteme multiagent. Platforma JADE. Crearea statica a agentilor

4

2. Crearea statică a agenţilor

Pentru a lansa în execuţie agenţii JADE trebuie executaţi următorii paşi:

1. [C#] Includerea în directorul executabilului aplicaţiei a unui fişier text de

configurare numit "leap.properties" care să conţină următoarele 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 adăugate ca referinţe 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);

}

}

Modelarea si analiza sistemelor multi-agent - Laboratorhttp://florinleon.byethost24.com/lab_masma.htm

Page 5: Sisteme multiagent. Platforma JADE. Crearea statica a agentilor

5

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#]

Fişierul “leap.properties” trebuie modificat astfel:

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

unde AgentSimplu este numele agentului. Dacă dorim lansarea mai multor agenţi vom modifica

ultima linie a fişierului de mai sus astfel:

agents = Agent1:Lab1Example1.SimpleAgent; Agent2:Lab1Example1.SimpleAgent; Agent3:Lab1Example1.SimpleAgent (last:true);

Observaţie! După ";" nu se foloseşte enter.

[JAVA]

Agentii se specifică utilizând argumentele liniei de comandă:

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

Agent3:lab1ex1java.SelfDestructAgent"

Modelarea si analiza sistemelor multi-agent - Laboratorhttp://florinleon.byethost24.com/lab_masma.htm

Page 6: Sisteme multiagent. Platforma JADE. Crearea statica a agentilor

6

Se vor lansa astfel în paralel 3 agenţi 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 adăuga secvenţe de cod pentru a marca şi

anunţa 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.

Modelarea si analiza sistemelor multi-agent - Laboratorhttp://florinleon.byethost24.com/lab_masma.htm

Page 7: Sisteme multiagent. Platforma JADE. Crearea statica a agentilor

7

Figura 2. Exemplu de rulare

3. Aplicaţii

3.1. Să se creeze un agent care să numere de la 1 la 100, cu o pauză de jumătate de secundă între

două numere succesive. La fiecare incrementare, agentul va afişa 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 agenţi care să facă aceeaşi operaţie ca la problema 1. Setaţi un interval aleatoriu

pentru fiecare agent între 0,5 şi 5 secunde pe care agentul îl aşteaptă înainte de a trece la următorul

număr. Observaţi cum agenţii lucrează în paralel.

3.3. Să se creeze 2 agenţi 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]

Modelarea si analiza sistemelor multi-agent - Laboratorhttp://florinleon.byethost24.com/lab_masma.htm