Sunteți pe pagina 1din 7

UNIVERSITATEA “TRANSILVANIA” DIN BRAŞOV

DEPARTAMENTUL: Automatică și Tehnologia Informației


Programul de studiu: Sisteme Avansate în Automatică şi
Tehnologia Informaţiei

PROIECT SISTEME MULTIAGENT

Coordonator: Studenți:
Conf. dr. ing. Dan FLOROIAN Cătălin-Alexandru LOPATĂ
Cosmin MARIN

Adrian-Ciprian PÂRVAN

Vlad-Ştefan PETRE

SAATI, grupa 4761-4762, anul I


Braşov, 2017
Facultatea de Inginerie Electrică şi Ştiinţa Calculatoarelor Sisteme Avansate în Automatică și
Departamentul Automatică şi Tehnologia Informaţiei Tehnologii Informatice

1. Tema de proiect

Realizaţi o aplicaţie JADE care să creeze 5 agenţi care să transmită mesaje către o interfaţă
grafică. Exemplificaţi folosind agenti BDI.

2. Noţiuni teoretice

2.1. Agenţi
Un agent este un program de calculator care este situat într-un mediu oarecare și care este
capabil să facă o acțiune autonomă în acel mediu, bazată pe scopul său și pe perceperea
stimulilor din mediul respectiv, pentru a îndeplini obiectivele pentru care a fost creat.
Agenții nu trebuie niciodată să presupună că ei au controlul complet sau cunoștințe despre
acel mediu (care nu este deterministic) și percepția trebuie să fie considerată ca furnizoare a unor
cunoștințe parțiale. În consecință, agenții trebuie să fie pregătiți pentru posibilitatea de eșec. În
contextul acestei lucrări, acțiunile și percepția sunt realizate și percepute prin trimiterea
mesajelor către o interfață grafică.
Există mai multe arhitecturi ale agenţilor (care se bazează pe comportamentul dominant):
deliberative, reactive sau hibride.
Agenții deliberativi iau decizii bazate pe reprezentările simbolice (modele) pe care le au
asupra mediului în care acționează. Acești agenți au scopuri precise și au nevoie de un mare efort
pentru a reprezenta simbolic entitățile din mediul înconjurător. Pe de altă parte, acest model
necesită o mulțime de calcule pentru a lua decizii corecte. Cele mai cunoscute arhitecturi
asociate cu acești agenți sunt:
 Agenți planificatori;
 Arhitectura Belief – Desire – Intention (BDI) (Convingere – Cerință – Intenție);
 Arhitectura Epistemic – Deontic – Axiologic (EDA) (Cognitiv – Deontologic –
Axiologic).

2.2. Raţionamentul unui agent BDI


Raţionamentul practic implică două procese importante: a decide care scopuri se doresc a fi
realizate şi cum se vor realiza aceste scopuri. Primul proces este cunoscut sub numele de
deliberare, iar al doilea de raţionament tip medii-capete, means-ends .

2
Facultatea de Inginerie Electrică şi Ştiinţa Calculatoarelor Sisteme Avansate în Automatică și
Departamentul Automatică şi Tehnologia Informaţiei Tehnologii Informatice

Procesul de decizie începe în general cu stabilirea opţiunilor disponibile. După generarea


setului de alternative, urmează alegerea unor alternative din cele existente. Alternativele alese
devin intenţii, care de fapt vor determina acţiunile agentului. Intenţiile apoi vor genera un feed-
back în procesul de raţionament al agentului.
Într-un astfel de proces, un rol important îl joacă măsura în care intenţiile agentului sunt sau
nu reconsiderate din când în când. Dar reconsiderarea are un cost–timp cât şi resurse
computaţionale. Din acest motiv, există următoarea dilemă:
 un agent care nu se opreşte în a-şi reconsidera des intenţiile, riscă să încerce să-şi
realizeze intenţiile chiar şi după ce e evident că acestea nu pot fi realizate, sau nu mai
există nici un interes în a le realiza;
 un agent care îşi reconsideră în mod constant intenţiile, ar putea folosi timp
insuficient în vederea realizării efective a acestora, riscând astfel să nu le realizeze
niciodată.
Această dilemă este de fapt problema esenţială de a alege între comportamentele,
arhitecturile pro-active orientate spre scop, şi cele reactive, conduse de întâmplări, posibilităţi.
O soluţie la această dilemă pare a fi următoarea: în mediile statice, ce nu se schimbă,
comportamentele pro-active, orientate spre scop sunt adecvate, pe când în mediile dinamice
comportamentele reactive sunt de preferat, abilitatea de a recţiona la schimbări prin modificarea
intenţiilor devine mai importantă.

2.3. Platforma JADE


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.
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.

3
Facultatea de Inginerie Electrică şi Ştiinţa Calculatoarelor Sisteme Avansate în Automatică și
Departamentul Automatică şi Tehnologia Informaţiei Tehnologii Informatice

3. Descrierea soluţiei şi a alegerii acesteia

În conformitate cu tema de proiect mai sus prezentată, aplicația dezvoltată furnizează


informații cu privire la ora locală în mai multe orașe răspândite pe tot globul, deci pe fusuri orare
diferite. Această aplicație poate veni în ajutorul turiștilor, jucătorilor la bursă, a oamenilor de
afaceri sau angajaților unei companii multinaționale.
Programul presupune cinci agenți care sunt responsabili cu furnizarea orei corespunzătoare
unei anumite regiuni/fus orar. În prezent, aplicația integrează agenți corelați zonelor
Europa/România (GMT+2), Europa/Germania (GMT+1), Europa/UK (GMT), America/New
York (GMT-7), Asia/China (GMT+8).
Comunicarea este centralizată de către un agent coordonator, care cere informația specifică
fiecărui agent, la primirea unei comenzi de pe interfața grafică. Agentul coordonator este
implementat prin moștenirea clasei GuiAgent, deoarece este responsabil cu generarea interfeței
și publicarea mesajelor primite de la ceilalți agenți.
Cei cinci agenți sunt implementați prin moștenirea clasei Agent, aceștia fiind capabili de a
primi o cerere și de a formula un răspuns adecvat.

4. Implementarea aplicației

Interfața aplicației cu utilizatorul este una simplă, alcătuită din cinci etichete ce corespund cu
fiecare regiune de pe glob, un buton pentru cererea detaliilor temporale din regiuni și un buton
pentru părăsirea aplicației.

4
Facultatea de Inginerie Electrică şi Ştiinţa Calculatoarelor Sisteme Avansate în Automatică și
Departamentul Automatică şi Tehnologia Informaţiei Tehnologii Informatice

Funcționarea aplicației începe printr-o comandă dată de utilizator pe interfața grafică (se
apasă un buton). Această acțiune presupune generarea unui eveniment ce are ca scop
înregistrarea agenților în ascultare și trimiterea unui mesaj.

@Override
protected void onGuiEvent(GuiEvent event) {
if (event.getType() == 1) {
ACLMessage message = new ACLMessage(ACLMessage.REQUEST);

message.addReceiver(new AID("ROAgent", AID.ISLOCALNAME));


message.addReceiver(new AID("DEAgent", AID.ISLOCALNAME));
message.addReceiver(new AID("UKAgent", AID.ISLOCALNAME));
message.addReceiver(new AID("USAAgent", AID.ISLOCALNAME));
message.addReceiver(new AID("CNAgent", AID.ISLOCALNAME));

send(message);
}
}
Agenții implicați implementează un comportament care realizează crearea unui răspuns
pentru cererea primită.

addBehaviour(new ProcessRequestBehavior());
[...]
public class ProcessRequestBehavior extends CyclicBehaviour {
@Override
public void action() {
ACLMessage receivedMessage = receive();

if (receivedMessage != null) {
ACLMessage replyMessage = receivedMessage.createReply();
[populare răspuns]
if (replyMessage != null) {
send(replyMessage);
} else {
block();
}
} else {
block();
}
} }

5
Facultatea de Inginerie Electrică şi Ştiinţa Calculatoarelor Sisteme Avansate în Automatică și
Departamentul Automatică şi Tehnologia Informaţiei Tehnologii Informatice

În momentul primirii unei cereri, agentul specific regiunii va genera și va popula răspunsul
cu timpul respectiv regiunii utilizănd clasa DateProvider care conține informația despre fusurile
orare.

replyMessage.setContent(DateProvider.getTime("ro"));

public static String getTime(String zone) {


if (zone.equals("ro")) {
TimeZone timezone = TimeZone.getTimeZone("GMT+3");
Calendar calendar = Calendar.getInstance(timezone);
formatter.setCalendar(calendar);
formatter.setTimeZone(timezone);
String s = formatter.format(calendar.getTime());
return s; } }

În acest moment agentul trimite răspunsul către coordonator care centralizează datele și le va
publica pe interfața grafică a aplicației în concordanță cu agentul care a răspuns.

gui.showTime(receivedMessage.getSender().getName(), message);

protected void showTime(String sender, String time) {


if (sender.contains("ROAgent")) {
roLabel.setText("RO: " + time);
} else if (sender.contains("DEAgent")) {
deLabel.setText("DE: " + time);
} else if (sender.contains("UKAgent")) {
ukLabel.setText("UK: " + time);
} else if (sender.contains("USAAgent")) {
usaLabel.setText("US: " + time);
} else if (sender.contains("CNAgent")) {
chLabel.setText("CN: " + time);
}
}

Programul va funcționa până când pe interfața cu utilizatorul se generează evenimentul de


părăsire a aplicației, butonul Exit.

6
Facultatea de Inginerie Electrică şi Ştiinţa Calculatoarelor Sisteme Avansate în Automatică și
Departamentul Automatică şi Tehnologia Informaţiei Tehnologii Informatice

5. Bibliografie
[1] Curs Sisteme MultiAgent - Dan Floroian
[2] http://jade.tilab.com/doc/
[3] https://www.youtube.com/watch?v=CY-LOKtxjrE

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