Explorați Cărți electronice
Categorii
Explorați Cărți audio
Categorii
Explorați Reviste
Categorii
Explorați Documente
Categorii
2012
DEZVOLTAREA UNUI SISTEM MULTIAGENT FOLOSIND ZEUS CARE SIMULEAZ IEIREA UNEI MAINI DINTR-O PARCARE
2012
CUPRINS
Contents
Capitolul 1: Analiza aplicaiei ............................................................................................ 3 1.1 Enuntul problemei si premisele ............................................................................ 3 1.2 Domeniul si modelul de roluri .............................................................................. 3 a. Domeniul The Information Management ............................................................... 3 Figura 1 - Diagrama modelului de roluri Shared Information Space ...................... 4 Diagrama de colaborare Shared Information Space Collaboration ............................ 4 Descrierea rolurilor modelului Shared Information Space...................................... 5 1.3 Mentionarea agentilor i a rolurilor ...................................................................... 7 1.4 Lista responsabilitatilor agentilor ........................................................................ 8 Capitolul 2: Proiectarea aplicaiei ..................................................................................... 10 2.1 Detalierea responsablitatilor pe agenti ................................................................ 10 2.2 Modelare de cunotinte i ontologie ................................................................... 13 Capitolul 3: Dezvoltarea aplicatiei.................................................................................... 15 3.1 Crearea ontologiei ............................................................................................... 15 3.2 Crearea agentilor ................................................................................................. 15 3.2.1 Definirea agentilor ........................................................................................... 15 3.3 Configurarea agentilor utilitari ........................................................................... 22 3.4 Configurarea agentior task .................................................................................. 23 Capitolul 4: Implementarea i rularea aplicaiei ............................................................... 24 4.1 Evidentierea rezultatelor aplicatiei: .................................................................... 26 4.2 View-ul societii de ageni, Statistici ................................................................ 27
2012
1.1 Enunul problemei i premisele Proiectul realizat descrie modul de rezolvare i implementare a unei probleme clasice care presupune ieirea dintr-o parcare a unei masini. Prin aceast aplicaie sunt puse n eviden dou particulariti ale platformei ZEUS. Modul n care se poate implementa un serviciu centralizat de informaii ce poate fi interogat folosind mesageria agenilor Modul n care se poate controla comportamentul unui agent folosind reguli.
Pentru nceput, n cadrul analizei aplicaiei se indentific domeniul i modelul de roluri cele mai potrivite innd cont de cerinele aplicaiei. In situaia de fa, un agent deine informaii necesare celorlali ageni iar acetia comunic prin intermediul mesajelor cu el. Cel mai potrivit domeniu este cel din domeniul Managementului informaiei (Information Management Domain) iar modelul de roluri este Spaiul de punere n comun a informaiilor (The Shared Information Spaces).
1.2 Domeniul i modelul de roluri a. Domeniul The Information Management Caracteristici. Aplicaiile n acest domeniu sunt caracterizate de ctre modul asimetric n care sunt deinute informaiile. De exemplu, anumite entitti dein informaii pe care altele nu le dein iniial fie din cauza drepturilor de care dispun, fie modului n care au fost proiectate i construite. De aceea, entitile care nu dein informaiile trebuie s comunice cu entitatea care le deine pentru a le obine i pentru a putea s i continue activitatea. b. Modelul de roluri The Shared Information Space Modelul The Shared Information Space implic dou tipuri de entitai: 1. Publisher-ul (Distribuitorul) - care deine informaii la care doar el are acces 2. Subscriber-ul (Abonatul) care solicit informaii pe care le deine Publisher-ul, solicitarea fcut prin intermediul trimiterii de mesaje.
2012
Premizele modelului: exist un singur Publisher unul sau mai muli Subscriber-i Subscriber-ii folosesc aceeai surs de informaii pentru a realiza scopuri proprii.
Publisher-ul conine 3 sub-roluri: rolul modelului (Model role) responsabil pentru pstrarea informaiilor stocate rolul View responsabil pentru vizualizarea informaiilor rolul Controller este un intermediar ntre informaiile stocate i Subscriber-i. In continuare n Figura 1 este prezentat Modelul Rolurilor
Publisher
Subscriber
Model
View
Controller
Figura 1 - Diagrama modelului de roluri Shared Information Space Diagrama de colaborare Shared Information Space Collaboration Modelul conine 3 seturi de interaciuni: - ntre rolul de Controller i Subscriber care implic nregistrarea, problema i rspunsul la interogri. Rspunsurile la interogri sunt formulate dup consultarea modelului. - rolul View poate de asemenea accesa modelul i, dup cum se poate vedea n Figura 2, realizeaz n raport cu acesta aceleai interaciuni ca i Controller-ul (4,5,7).
2012
Figura 2: Interaciunile dintr rolurile modelului Shared Information Space Interaciunile: Explicaie Subscriber-ii se aboneaz la Publisher Publisher-ul notific Subscriber Este trimis o cerere de obinere a unei informaii Interogarea modelului Modelul este interogat pentru a se obine un rspuns la cererea primit. Rspunsul modelului Informaia solicitat este returnat Controller-ului Rspuns ce conine Controller-ul prezint informaia Subscriberinformaia ului Actualizarea modelului Este fcut o modificare (actualizare) pentru informaia trimis deinut de model. Colaborare Inregistrare Rspuns la nregistare Solicitare informaie
1 2 3 4 5 6 7
CONTROLLER
Modelul de roluri: Shared Information Space Relaiile cu alte roluri: Aparine rolului Publisher Descriere: Sub-rolul reprezint un furnizor de informaii i acoper cel mai important aspect al Publisher-ului. Are sarcina de a gestiona cererile de abonare i colicitrile de informaii de la Subscriber-i. Responsabiliti: Colaboratori: [1, 2] S primeasc i s raspund cererilor de Subscriber-i abonare
2012
[3, 6] S primeasc i s rspund solicitrilor Subscriber-i de informaii Interfee externe: S interogheze modelul pentru obinerea de rspunsuri/informaii la solicitarea abonailor Cerine preliminare: -
MODEL
Modelul de roluri: Shared Information Space Relaiile cu alte roluri: Aparine rolului Publisher Descriere: Rolul stocheaz informaiile deinute de Publisher i ofer rolurilor Controller i View posibilitatea de a accesa i actualiza modelul. Responsabiliti: [4, 5] S ofere informaii la cerere [7] S permit modificri asupra informaiilor stocate Interfee externe: S includ un depozit de informaii Cerine preliminare: Colaboratori: Controller, View Controller, View
VIEW
Modelul de roluri: Shared Information Space Relaiile cu alte roluri: Aparine rolului Publisher Descriere: Acest sub-rol este opional pentru Publisher. Se folosete de obicei atunci cnd e nevoie s fie oferit o descriere a informaiilor stocate de model. Pot exista mai multe instane ale acestui sub-rol n funcie de modurile n care pot fi afiate informaiile. Responsabiliti: [4, 5] S interogheze i s reprezinte modelul. [7] S realizeze modificri n model Interfee externe: Colaboratori: Model Model
2012
SUBSCRIBER
Modelul de roluri: Shared Information Space Descriere: Acest rol stocheaz informaiile deinute de Publisher i ofer Controller-ului posibilitatea de a accesa i de a modifica modelul. Responsabiliti: [1, 2] S realizeze i s primeasc cereri de abonare [3, 6] S realizeze i s primeasc cereri pentru informaii. Colaboratori: Controller Controller
1.3 Menionarea agentilor i a rolurilor Acest proiect nu implic task-uri primitive, fiind implementat un comportament reactiv care este inclus n ageni folosind task-uri bazate pe reguli. Participanii i capacitile lor sunt: Agentul Environment este rspunztor pentru: - stocarea unei pacari - reinerea locaiilor agenilor n cadrul parcarii - va rspunde agenilor la interogrile despre parcare - va afia grafic parcarea i locaia agenilor n ea la fiecare moment de timp pn la ieirea din parcare. Agentul tip Navigator agenii de acest tip au urmtoarele caracteristici: - ncearc s iasa din parcare - nu dein informaii despre cum arat parcarea -trebuie s trimit mesaje agentului Environment pentru a obine informaii despre parcare, informaii pe baza crora s ia deciziile pentru urmtoarea mutare
2012
- fiecare agent de acest tip va conine o baz de reguli ce descrie comportamentul necesar soluionrii problemei i care le va gestiona mutrile - fiecare agent va deine o interfat grafic prin care se va raporta utilizatorului statusul su curent - n cadrul aplicaiei sunt creai 3 ageni navigatori(car1,car2,car3). Modelul de roluri Shared Information Space const ntr-o surs centralizat de informaii iar responsabilitile sale corespund n mare msur agentului Environment. Rolurile pentru Subscriber-i sunt adecvate pentru agenii Navigator. In continuare se poate face asocierea rol-participant, ncepnd cu modelul de roluri standard de aplicaia ZEUS. Este nevoie de un agent care s aib rolul de Name Server pentru asigurarea independeei de locaie. Aisgnarea rolurilor pentru ageni este urmtoarea: Nume agent Environment Navigator Rol Publisher (Model, View, Controller)
Subscriber
1.4 Lista responsabilitilor agenilor Responsabilitile rolului Publisher: PUBLISHER Responsabiliti sociale Origine Responsabilitate Controller Controller Controller (1) S accepte solicitrile de nregistrare (2) S rspund nregistrrilor (3) S primeasc cererile de informaii de la Subscriber-i (abonai)
Controller (4) S rspund cererilor de informaii de la Subscriber-i PUBLISHER Responsabiliti de domeniu Origine Responsabilitate Controller Model View (5) S interogheze modelul pentru a putea rspunde cererilor Subscriber-ilor (6) S includ un depozit de informaii (7) S vizualizeze coninutul modelului
2012
Responsabilitile rolului Subscriber: SUBSCRIBER Responsabiliti sociale Origine Responsabilitate Subscriber Subscriber (1) S se nregistreze la Publisher (2) S solicite informaii de la Publisher cnd este nevoie
SUBSCRIBER Responsabiliti de domeniu Subscriber (3) S realizeze propriile activiti specifice Subscriber (4) S informeze utilizatorul despre starea curent
2012
RESPONSABILITI SOCIALE
(1) S accepte solicitrile de nregistrare
Explicaie:
Responsibilitate:
2012
Atunci cnd o regul este declanat (n acest caz pe baza informaiei extras de la Model) Controller-ul poate trimite un mesaj napoi ctre Subscriber oferind informaia solicitat.
Deoarece toate aceste soluii nu sunt oferite automat de ctre clasa de agen ZUES trebuie realizate de ctre dezvoltator prin configurarea agenilor folosind intrumentul ZEUS de generare a agenilor i scriind programele externe necesare. PUBLISHER
Responsibilitate: Origine: Problem: Soluie: Explicaie: Controller S extrag informaii de la Model pentru a rspunde interogrilor Subscriber -ilor Implementez metoda Adapter (IMPL-4) Metoda Adapter va oferi aplicaiei codul specific care translateaz cererile Subscriber-ilor n interogri ctre Model. Metoda Adapter va avea legtur cu agenii prin intermediul interfeei proprii Zeus External. (6) S includ un depozit de informaii Model S stocheze informaii Aloc o resurs iniial a agentului (DEF-3) sau Conecteaz agentul la o resurs extern (IMPL-3) sau Implementeaz Modelul prin program extern (IMPL-4) Ageni pot stoca informaii ntr-o varietate de moduri; se pot constata ca fapte in baza de date de resurse, ntr-o baz de date extern sau n codul Java, care este accesibil interfaei agentului ZeusExternal.Alegerea va depinde de tipul de informaii care sunt stocate. n acest caz, vom pstra pracarea exterior, ntr-o matrice 2-dimensional Booleana. (7) S vizualizeze coninutul modelului View Sa ofere o reprezentare grafic a modelului Sa implementeze Model GUI Reprezentarea parcarii este specifica aplicaiei pentru a fi interpretata de Visualiser, astfel incat o interfa personalizat va trebui s fie scrisa c se afieaz. Acest lucru poate fi instantiat din programul agentului ZeusExternal.
RESPONSABILITI DE DOMENIU
Explicaie:
2012
Realizarea rolului de Subscriber Acest lucru implic adoptarea aceleiai abordare ca i nainte, lund n considerare fiecare responsabilitate, la rndul su: SUBSCRIBER
Responsabilitate: Problem: Soluie: Explicaie:
RESPONSABILITI SOCIALE
(1) S se nregistreze la Publisher Trimite mesaj ctre Publisher [about: registration] Exist o relaie ntre el i Publisher (de peer) ( ORG-1) sau se folosete Facilitatorul i Implementare de reguli pentru trimitere de mesaje( RULE-1) Identitatea Publisher-ului poate fi setat static atunci cnd agenii sunt generai, sau descoperit la rulare prin intermediul unui Facilitator. Subscriber-ul poate trimite un mesaj c Publisher pentru a se nregistra. (2) S solicite informaii de la Publisher cnd este nevoie S trimit ctre mutarea urmtoare a Navigatorului ctre agentul Environment. Se creeaz o resurs iniial pentru agent (DEF-3) i Se specific prezena unei baze de date de reguli (DEF-2) i Se implementeaz reguli de trimitere a mesajului ( RULE-1) Resursa iniial va stoca un ablon de micare care va fi folosit pentru informarea mediului (Environment) de micarea pe care Nvigatorul dorete s o realizeze. Micarea reprezint o cerere implicit de informaie. De exemplu pentru mesajul trimis "I'm moving North" rspunsul va conine i specificarea "there are obstacles north and east". Precondiiile acestor reguli include comportamentul de rezolvare a ieirii din labirint.
Explicaie:
SUBSCRIBER
Responsabilitate: Problem: Soluie: Explicaie:
RESPONSABILITI DE DOMENIU
(3) S realizeze propriile activiti specifice Implementarea funcionalitilor aplicaiei n acest caz identificarea ieirii din labirint i informarea utilizatorului de progresul fcut Implementarea bazei de reguli pentru comportament ( RULE-1) Expertiza necesar navigrii prin labirint este stocat sub form de reguli. In acest exemplu se presupune c rspunsurile de la agentul mediu (Environment agent) vor fi suficiente pentru a informa Navigatorul de obstacolele care ies n cale. Prin urmare aceste reguli vor folosi informaia ctigat de la agentul Environment s determine urmtoarea mutarea ce va fi fcut. (4) S informeze utilizatorul despre starea curent S ofere o descriere grafic a strii modelului. Implementarea program extern pentru GUI ( IMPL-4) O interfaa pentru utilizator va fi creat pentru a afia care este starea agentului la fiecare moment de timp. Pentru aceasta va fi nevoie de implementarea interfeei Fact Monitor pentru a detecta ce informaie este trimis i primit
2012
2.2 Modelare de cunotine i ontologie Identificarea conceptelor 1. concepte care reprezint parcarea 2. concepte care descriu micarea n parcare. Deoarece nu este nevoie ca faptele s moteneasc atribute de la alte fapte, toate faptele din ontologie vor fi sub-fapte Zeus (vor fi copii ai lui ZeusFacts). Faptele nu au nevoie de anumite constrngeri. De aceea informaia care trebuie introdus este redat n tabelul urmtor. Dup crearea ontologiei, aceasta trebuie s arate ca n Figura 1. Dup crearea ontologiei aceasta va fi salvat cu denumirea mazedemo.def.
Fapt obstacle
Atribute Default Explicaie north: south, east, west : false Dac exist un perete n aceste direcii. Boolean; id : String id : String sq: String north, south, east, west : false Boolean; id : String moved : Boolean; id : String name : String false Identitatea agentului care a prsit parcarea Atributul setat pe true este direcia pe care s-a micat agentul. Flag-ul intern indic faptul c a fost realizat o micare valid. Numele agentului care ncearc s se nregistreze. Numele agentului de mediu (Environment agent) la care se face nregistrarea. false Un flag pentru fiecare agent nregistrat. Este setat pe true dac agentul este nc n parcare.
mazeExited thisMove
moveMade
agentsName
agentRegister ed
name : String
inMaze
2012
2012
3.1 Crearea ontologiei Ontologia este definit conform punctului 2.2. 3.2 Crearea agenilor Se creeaz urmtorii ageni(Fig. 2) : Car Red,Car Blue,Car Green, Environment
Figura 4 Agenii din aplicaie 3.2.1 Definirea agentilor Creare agent Environment Definirea agentului Se va ine cont de responsabilitile sociale i de domeniu identificate n etapa de proiectare pentru a se vedea dac exist soluii care solicit modificri n definirea aegntului (identificate prin DEF-x). Astfel, exist menionate activitile DEF-2 i DEF-3 (Figura 3) Se d Click pe butonul 'Create New Task' din Task Identification i se selecteaz opiunea 'New Rulebase' (proces descris n activitatea DEF-2). Se redenumete noua intrare cu respondMove.
Se specific apoi resursele iniiale ale agentului Environment (process descris n activitatea DEF-3): Se d Click pe butonul New Initial Resource i se selecteaz agentRegistered ca i tip de fapt.
2012
Aceasta va fi folosit pentru a stoca o referin ctre agentul Environment care va fi trimis ctre toi agenii care s-au nregistrat cu succes. Editai numele atributului cu name valoarea cu Environment.
Nu sunt necsare modificri la organizarea i coordonarea agentului. Se salveaz i se prsete meniul de creare a agentului Environment.
Definirea bazei de reguli pentru agentul Environment In cadrul definirii agentului Environment a fost creat baza de reguli respondMove. Prin urmare aceastea trebuie i ea definit Bazele de reguli sunt colecii de reguli care sunt grupate n mod convenabil, de obicei datorit funcionalitilor lor. Fiecare regul const dintr-o expresie care cuprinde un pattern i o aciune; atunci cnd agentul deine date care se potrivesc cu patternul atunci se declanaz regula asociat. Deoarece regulile sunt dependente de aplicaie, ele pot solicita un efort mare pentru realizare. Regulile pentru agentul Environment trebuie scrise de dezvoltator pentru a modela comportamentul dorit. Regulile sunt (responseMove.clp):
2012
Mesaj trimis pentru informarea Navigatorului de obstacolele de la noua locaie Mesaj trimis care reitereaz obstacolele de la locaia curent Navigator labirint nregistrat ca fiind n
ncercat
de
Inregistrare Navigator primit Navigator nregistrat ca fiind n labirint Navigatorul ajunge la ieirea din labirint
Mesaj trimis pentru informarea Navigatorului c se afl n labirint Mesaj trimis pentru informarea Navigatorului c nu mai exist n labirint
Codul regulilor. Nume regul firstLegalMove Condiii ?moveFlag <- (moveMade (moved true) (id ?agName)) ?obst <- (obstacle (west ?var177) (south ?var179) (east ?var178) (north ?var176) (id ?agName)) Aciune (send_message (type inform) (content ?obst) (receiver ?agName)) (retract ?moveFlag) (retract ?obst) illegalMove ?moveFlag <- (moveMade (moved true) (id ?agName)) ?lastMove <- (thisMove (west ?var20) (south ?var22) (east ?var21) (north ?var19) (id ?agName)) ?obst <- (obstacle (west ?var177) (south ?var179) (east ?var178) (north ?var176) (id ?agName)) respondReg (agentsName (name ?agName)) ?ar <- (agentRegistered (name ?envName)) (send_message (type inform) (content ?obst) (receiver ?agName)) (retract ?moveFlag) (retract ?obst) (retract ?lastMove) (send_message (type inform) (content ?ar) (receiver ?agName)) (assert (inMaze (isInMaze true) (name ?agName))) sendInMaze ?im <- (inMaze (isInMaze true) (name ?var269)) (send_message (type inform) (content ?im) (receiver ?var269)) (send_message (type inform) (content ?ex) (receiver ?varH))
sendExited
2012
Crearea agenilor de tip Navigator Agents Pentru tipul de agent Navigator vor fi creai 3 ageni: Car Red,Car Green si Car Blue. Pentru aceti ageni sunt create dou task-uri de tip baze de reguli (Figura 5.): Register conine o regul pentru nregistrarea agentului i una pentru de-registrarea lui atunci cnd iese din labirint. Navigate conine regulile care construiesc comportamentul de ieire din labirint. Const ntr-o regula de start i un set de reguli care urmesc pereii i prin care se aleg direciile la intersecii i decid ce aciune s intreprind dac o anumit direcie este blocat.
2012
Fig. 5. Task-urile de tip baze de reguli Pentru baza de reguli Register, regulile sunt urmtoarele:
Nume regul registerWithEnvironment Condiii ?aN <- (agentsName (name ?var6)) Aciune (send_message (type inform) (content ?aN) (receiver Environment)) (retract ?me) (retract ?obst) (retract ?aR) (retract ?tM) (assert (thisMove (west false) (south false) (east false) (north false) (id ?var33)))
exitedMaze9
?me <- (mazeExited (id ?var6)) ?obst <- (obstacle) ?aR <- (agentRegistered (name ?var19)) ?tM <- (thisMove) (agentsName (name ?var33))
2012
(modify ?lastMove (west false) (south false) (east false) (north true)) (send_message (type (content ?lastMove) ?var15)) (retract ?obst) inform) (receiver
followWall_west
?obst <- (obstacle (west false) (south true)) ?agentReg <- (agentRegistered (name ?var15)) ?lastMove <- (thisMove (west true)) ?inMaze <- (inMaze (isInMaze true))
(modify ?lastMove (west true) (south false) (east false) (north false)) (send_message (type (content ?lastMove) ?var15)) (retract ?obst) inform) (receiver
followWall_south
?obst <- (obstacle (south false) (east true)) ?agentReg <- (agentRegistered (name ?var15)) ?lastMove <- (thisMove (south true)) ?inMaze <- (inMaze (isInMaze true))
(modify ?lastMove (west false) (south true) (east false) (north false)) (send_message (type (content ?lastMove) ?var15)) (retract ?obst) inform) (receiver
going_east_block ed_east
?obst <- (obstacle (south true) (east true)) ?agentReg <- (agentRegistered (name ?var15)) ?lastMove <- (thisMove (east true)) ?inMaze <- (inMaze (isInMaze true))
(modify ?lastMove (west false) (south false) (east false) (north true)) (send_message (type (content ?lastMove) ?var15)) (retract ?obst) inform) (receiver
going_east_block ed_east_openSout h
?obst <- (obstacle (south false) (east true)) ?agentReg <- (agentRegistered (name ?var15)) ?lastMove <- (thisMove (east true)) ?inMaze <- (inMaze (isInMaze true))
(modify ?lastMove (west false) (south true) (east false) (north false)) (send_message (type (content ?lastMove) ?var15)) (retract ?obst) inform) (receiver
going_south_bloc ked_south
?obst <- (obstacle (west true) (south true)) ?agentReg <- (agentRegistered (name ?var15)) ?lastMove <- (thisMove (south true))
(modify ?lastMove (west false) (south false) (east true) (north false)) (send_message (type (content ?lastMove) inform) (receiver
2012
(modify ?lastMove (west true) (south false) (east false) (north false)) (send_message (type (content ?lastMove) ?var15)) (retract ?obst) inform) (receiver
going_north_bloc ked_north
?obst <- (obstacle (east true) (north true)) ?agentReg <- (agentRegistered (name ?var15)) ?lastMove <- (thisMove (north true)) ?inMaze <- (inMaze (isInMaze true))
(modify ?lastMove (west true) (south false) (east false) (north false)) (send_message (type (content ?lastMove) ?var15)) (retract ?obst) inform) (receiver
?obst <- (obstacle (east false) (north true)) ?agentReg <- (agentRegistered (name ?var15)) ?lastMove <- (thisMove (north true)) ?inMaze <- (inMaze (isInMaze true))
(modify ?lastMove (west false) (south false) (east true) (north false)) (send_message (type (content ?lastMove) ?var15)) (retract ?obst) inform) (receiver
going_west_block ed_west
?obst <- (obstacle (west true) (north true)) ?agentReg <- (agentRegistered (name ?var15)) ?lastMove <- (thisMove (west true)) ?inMaze <- (inMaze (isInMaze true))
(modify ?lastMove (west false) (south true) (east false) (north false)) (send_message (type (content ?lastMove) ?var15)) (retract ?obst) inform) (receiver
going_west_block ed_west_openNor th
?obst <- (obstacle (west true) (north false)) ?agentReg <- (agentRegistered (name ?var15)) ?lastMove <- (thisMove (west true)) ?inMaze <- (inMaze (isInMaze true))
(modify ?lastMove (west false) (south false) (east false) (north true)) (send_message (type (content ?lastMove) ?var15)) (retract ?obst) inform) (receiver
junctionSouth_goi ngWest
?obst <- (obstacle (south false)) ?agentReg <- (agentRegistered (name ?var15)) ?lastMove <- (thisMove (west true))
(modify ?lastMove (west false) (south true) (east false) (north false)) (send_message (type (content ?lastMove) inform) (receiver
2012
(modify ?lastMove (west false) (south false) (east false) (north true)) (send_message (type (content ?lastMove) ?var15)) (retract ?obst) inform) (receiver
junctionWest_goi ngNorth
?obst <- (obstacle (west false)) ?agentReg <- (agentRegistered (name ?var15)) ?lastMove <- (thisMove (north true)) ?inMaze <- (inMaze (isInMaze true))
(modify ?lastMove (west true) (south false) (east false) (north false)) (send_message (type (content ?lastMove) ?var15)) (retract ?obst) inform) (receiver
junctionEast_goin gSouth
?obst <- (obstacle (east false)) ?agentReg <- (agentRegistered (name ?var15)) ?lastMove <- (thisMove (south true)) ?inMaze <- (inMaze (isInMaze true))
(modify ?lastMove (west false) (south false) (east true) (north false)) (send_message (type (content ?lastMove) ?var15)) (retract ?obst) inform) (receiver
2012
3.4 Configurarea agentior task Configurare ageni task Agentul Environment. Conform proiectrii informaiile folosite de agent sunt stocate ntr-un program extern (i nu ntr-o baz de date extern). De aceea n cmpul External Program va folosi un program numit mazeControl. Agenii de tip Navigator au o clas numit navGUI menionat n cmpul External Program, clas care implementeaz interfaa utilizatorului. Se va meniona pentru agenii Environment i Red crearea unei interfee prin ZEUS.
2012
2012
Request handling code invokes the adapter method that queries the Model
// now invoke a function that tests whether it is a legal move // side effect the obstacles around the agent are asserted in fact database move (id, nBool, eBool, sBool, wBool); // a message should now have been sent to the originating agent // telling it what new obstacles lie in it's path! } else if (factType.equals ("agentsName")) { String id = currentFact.getValue("name"); int c = (int)(mazeInUse.mazeWidth*Math.random()); int r = (int)(mazeInUse.mazeHeight*Math.random()); mazeInUse.registerAgent(id, c, r); mazeGui.repaint(); OntologyDb ont = context.OntologyDb(); Fact obst = ont.getFact(Fact.FACT, "obstacle"); obst.setValue("north",mazeInUse.northVal(id)); obst.setValue("east",mazeInUse.eastVal(id)); obst.setValue("south",mazeInUse.southVal(id)); obst.setValue("west",mazeInUse.westVal(id)); obst.setValue("id", id); ResourceDb rdb = context.ResourceDb(); rdb.add(obst); // add it to the fact db } }
Registration code - places Navigator in the maze and informs it of obstacles at its starting location
2012
4.1 Evidentierea rezultatelor aplicatiei: Odat lansat aplicaia, agenii se nregistreaz cu NameServer-ul i vor aprea interfeele (Fig. 9) 1. Agenii vor atepta utilizatorul s instruiasc agentul Navigator s se inregistreze la agentul Environment. 2. Se apas butonul Start se va trimite un mesaj ctre agentul Environmentprin care se nregistreaz prezena sa n mediu. O maina va aprea n interfaa Navigatorului.
2012
1. Dup nregistrarea Navigatorului, butonul Start de la fereastra parcrii va deveni activ 2. Dup apsarea sa, agentul Environment va trimite un mesaj ctre Navigator informndu-l de obstacolele(alte masini parcate) din vecintatea sa. Cum acestea sunt precondiii pentru a face o micare, Navigatorul va rspunde cu o cerere de micare. 3. Dup ce i se confirm c face o micare valid, agentul Environment va actualiza noua poziie n parcare iar utilizatorul va vedea cum se realizeaz micrile agentului Navigator pe ecran. 4. Ciclul se continu pn cnd agentul Navigator iese din pacare. 5. Agentul Navigator este apoi de-registrat de ctre agentul Environment care va dezactiva butonul Start pn la o nou nregistrare. 4.2 View-ul societii de ageni, Statistici
2012
2012
2012