Sunteți pe pagina 1din 9

SISTEME MULTIAGENT

Realizatori:
Almășan Alexandra
Cojocaru Ada-Camelia
Grădinaru Alexandra
Mușat Alina

SAATI, An I

BRAȘOV, 2023
Cuprins
Cuprins
1 Tema de proiect........................................................................................................................................2
2 Scenariul...................................................................................................................................................2
3 Considerații teoretice................................................................................................................................2
3.1 Agenți hibrizi....................................................................................................................................3
4 Descrierea Programului............................................................................................................................3
4.1 Agent 5 (AgentGUI).........................................................................................................................3
5 Bibliografie...............................................................................................................................................7

1
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 agenți hibrizi.

2 SCENARIU
L
Aplicația implementează un sistem inteligent, bazat pe agenți, care automatizează procesul
de căutare a unor bilete de avion către diferite destinații. Filtrarea rezultatelor se face în funcție de
destinație. Utilizatorul își alege biletul de avion către destinația aleasă, introduce numărul de bilete
și află suma biletelor dorite, iar apoi alege metoda de plată în funcție de preferințe (Cash/Card).
Ulterior trebuie să introducă datele personale pentru a putea afla detaliile finale. Sistemul este
alcătuit din cinci agenți: un agent transmite informația utilă următorului agent, funcționarea
realizându-se în lanț:
 Agentul 1 - AgentDestinatie: pagina de pornire de unde utilizatorul își poate alege
destinația dorită;
 Agentul 2 - AgentZbor: sunt afișate zborurile către destinația selectată; o După ce
utilizatorul a selectat destinația, acest agent afișează informații despre zborurile disponibile
către acea destinație. Aici, utilizatorul poate alege unul dintre zboruri.
 Agentul 3 - AgentBilete: se selectează numărul de bilete;
o După ce utilizatorul a selectat un zbor, acest agent permite utilizatorului să specifice
numărul de bilete dorite pentru achiziționare.
 Agentul 4 - AgentPlata: se introduce metoda de plată dorită, iar în funcție de alegere se
introduc datele personale;
o După ce utilizatorul a selectat numărul de bilete, acest agent solicită utilizatorului să
aleagă metoda de plată dorită (Cash sau Card). În funcție de alegerea utilizatorului,
acest agent poate solicita, de asemenea, datele personale necesare pentru finalizarea
procesului de plată.
 Agentul 5 - AgentGUI: se afișează toate informațiile ce au fost selectate până în acel
moment

3 CONSIDERAȚII TEORETICE
Un agent este un program de calculator, care este situat într-un mediu oarecare și care este
capabil să faceă o acțiune autonomă în acel mediu, bazată pe scopul sau/și perspectiva stimulilor pe
care îi percepe în mediul respectiv pentru a îndeplini obiectivele pentru care a fost proiectat.

2
Bazate pe comportamentul dominant, se disting trei tipuri de arhitecturi:
 Agenți deliberativi;
 Agenți reactivi;
 Agenți hibrizi.

3.1 AGENȚI HIBRIZI


 Aceste arhitecturi sunt simultan reactive si deliberative;
 Conțin un set de structuri (nivele) de interacțiune în care există: un anumit strat cu un
comportament deliberativ, iar altele cu un comportament reactiv;
 Numărul nivelelor variază, dar trebuie să existe cel puțin două straturi (unul reactiv și
unul deliberativ);
 În funcție de modul în care informația senzorială este furnizată straturilor şi de
modul în care reacționează straturile, se pot identifica două tipuri de straturi: straturi
orizontale şi straturi verticale

4 DESCRIEREA
PROGRAMULUI

4.1 AGENT 5 (AGENTGUI)


O interfață grafică de utilizator (GUI) este o interfață prin care un utilizator interacționează
cu dispozitive electronice, cum ar fi computere, dispozitive portabile și alte aparate. Această
interfață utilizează pictograme, meniuri și alte reprezentări ale indicatorilor vizuali (grafică) pentru
a afișa informații și controale ale utilizatorilor aferente.

Clasa AgentGUI extinde clasa Agent din biblioteca JADE și definește un agent Jade cu
interfață grafică (GUI).
În cadrul acetui agent sunt definite variabilelele private:
 zbor - pentru detalii despre zbor;
 plata - pentru detalii despre plată;
 isPlataReceived - un indicator boolean care indică dacă detalii despre plată au fost
primite sau nu.

3
AgentGUI definește o fereastră (JFrame) și două etichete (JLabel) pentru afișarea detaliilor
despre zbor și plată.
În metoda setup() a agentului, se creează fereastra GUI și se setează proprietățile acesteia
(dimensiunea, poziția și comportamentul de închidere). Se creează o instanță a clasei JFrame cu
titlul "Detalii combinate". Dimensiunea ecranului este obținută utilizând
Toolkit.getDefaultToolkit().getScreenSize(). Se setează comportamentul de închidere al ferestrei
când se apasă butonul "X" pentru a ieși din aplicație (JFrame.EXIT_ON_CLOSE).

Figura 1– Metoda Setup

Este creată o instanță a clasei JPanel pentru a conține elementele de interfață grafică și două
instanțe ale clasei JLabel cu textele "Detalii zbor: " și "Detalii plata: ". Etichetele sunt adăugate în
panou folosind metoda panel.add(), iar panoul este adăugat în fereastra folosind metoda
frame.add().

Figura 2– Clasa JPanel

Se adaugă un comportament ciclic (CyclicBehaviour) la agent, care se execută în buclă. În


comportamentul ciclic, agentul primește mesaje (ACLMessage) și verifică expeditorul și conținutul
mesajului.

4
Figura 3– Comportament ciclic

Dacă expeditorul este agentul "AgentZbor", se actualizează variabila zbor și eticheta


corespunzătoare. Dacă expeditorul este agentul "AgentPlata", se actualizează variabila plata,
eticheta corespunzătoare și se setează isPlataReceived pe true. Dacă detalii despre plată au fost
primite, se afișează fereastra. Se revalidează și se redesenează fereastra pentru a afișa detaliile
combinate.

Figura 4– Afișarea detaliilor despre zbor si plată

Dacă nu există mesaje primite, comportamentul intră în blocare (block()) până când un mesaj
nou este recepționat.

Figura 5– Block()

5
package agenti;

6
import java.awt.Dimension;
import java.awt.Toolkit;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

import jade.core.Agent;
import jade.core.behaviours.CyclicBehaviour;
import jade.lang.acl.ACLMessage;

public class AgentGUI extends Agent {


private String zbor;
private String plata;
private boolean isPlataReceived = false;

private JFrame frame;


private JLabel labelZbor;
private JLabel labelPlata;

protected void setup() {


JFrame frame = new JFrame("Detalii combinate");
frame.setSize(600, 200);
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
int xPosition = screenSize.width - frame.getWidth();
int yPosition = 100;
frame.setLocation(xPosition, yPosition);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

JPanel panel = new JPanel();


JLabel labelZbor = new JLabel("Detalii zbor: ");
JLabel labelPlata = new JLabel("Detalii plata: ");
panel.add(labelZbor);
panel.add(labelPlata);
frame.add(panel);
// frame.setVisible(true);

addBehaviour(new CyclicBehaviour() {
public void action() {
ACLMessage msg = receive();
if (msg != null) {
String sender = msg.getSender().getLocalName();
String content = msg.getContent();

if (sender.equals("AgentZbor")) {
zbor = content;
labelZbor.setText("Detalii zbor: " + zbor);
} else if (sender.equals("AgentPlata")) {
plata = content;
labelPlata.setText("Detalii plata: " + plata);
isPlataReceived = true;

if (isPlataReceived) {
frame.setVisible(true);
}
}

// Actualizeaza fereastra pentru a afisa detaliile combinate


frame.revalidate();
frame.repaint();
} else {
block();
}
}
});
}
}

Cod 1 – Clasa „AgentGUI”

7
5 BIBLIOGRAFIE
[1] Floroian, D. , Sisteme Multi-Agent, Universitatea Transilvania din Brasov;
[2] Tutorial Jade: https://jade.tilab.com/documentation/tutorials-guides/;
[3] Jade Examples https://jade.tilab.com/documentation/examples/;
[4] How to generate random numbers in Java: https://www.educative.io/answers/how-
togenerate-random-numbers-in-java.

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