Documente Academic
Documente Profesional
Documente Cultură
Laboratorul 1
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
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:
3
Modelarea si analiza sistemelor multi-agent - Laborator
http://florinleon.byethost24.com/lab_masma.htm
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
[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());
}
}
[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);
[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
[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
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