Vés al contingut

3APL

De la Viquipèdia, l'enciclopèdia lliure
Infotaula de llenguatge de programació3APL
Tipusllenguatge de programació Modifica el valor a Wikidata

Un llenguatge de programació d'agents abstractes o llenguatge de programació d'agents autònoms artificials o 3APL (pronunciat triple-APL) és una eina experimental i un llenguatge de programació per al desenvolupament, la implementació i les proves de múltiples agents cognitius utilitzant l'enfocament Creença-Desig-Intenció (BDI).[1]

Visió general

[modifica]

3APL va ser desenvolupat i és mantingut per un equip del departament d'informàtica de la Universitat d'Utrecht als Països Baixos. Facilita l'especificació del comportament dels agents cognitius mitjançant accions, creences, objectius, plans i regles. Ha estat objecte d'almenys 15 ponències i congressos, i almenys 4 tesis.[2]

Plataforma

[modifica]

La plataforma 3APL té una interfície visual per a la monitorització i depuració dels agents que s'hi executen, i un editor de coloració de sintaxi per a l'edició del codi font. S'ha publicat com a programari basat en Java, que inclou algunes interfícies Java especificades que es poden utilitzar per desenvolupar complements i biblioteques basades en Java. Aquests es poden utilitzar per proporcionar una representació visible d'un entorn virtual, per exemple. Una plataforma 3APL també es pot connectar en rols de client o servidor a altres plataformes 3APL a través d'una xarxa, per permetre la comunicació entre els agents 3APL de cada plataforma. També s'ha publicat una versió lleugera de 3APL per a aplicacions mòbils, anomenada 3APL-M " Toymaker ".[3]

Llenguatge

[modifica]

El llenguatge 3APL és relativament simple. La sintaxi té operadors lògics booleans bàsics AND, OR i NOT, amb sentències condicionals IF-THEN-ELSE i estructures de bucle de flux de control WHILE-DO. Tot i que no es poden crear variables temporals excepte cridant mètodes de complement o condicions de creences/objectius, es poden construir bucles de comptador iteratius utilitzant una combinació de bucles WHILE-DO, creences i capacitats.[4]

Un agent 3APL conté definicions formals de les creences, capacitats, objectius i plans de l'agent. Concretament, hi ha sis blocs esquelètics que s'han de definir.

PROGRAM "agent"
BELIEFBASE {}
CAPABILITIES {}
GOALBASE {}
PLANBASE {}
PG-RULES {}
PR-RULES {}

Les creences, definides mitjançant la sintaxi de Prolog, s'utilitzen per recordar informació i realitzar càlculs lògics. Les creences poden ser llegides les unes per les altres, editades per les capacitats i llegides per les declaracions condicionals dels plans. Les creences inicials d'un agent es poden definir a la seva base de creences.

BELIEFBASE { status(standby). at(0,0). location(r1,2,4). location(r5,6,1). dirty(r1). dirty(r5). }

Les capacitats defineixen els requisits previs i els efectes de les accions en un format similar a STRIPS, llegint creences preexistents, eliminant-ne algunes mitjançant l'operador NOT i afegint-ne de noves enunciant-les.

CAPABILITIES { {status(S1)} SetStatus(S2) {NOT status(S1), status(S2)}, {at(X1,Y1)} NowAt(X2,Y2) {NOT at(X1,Y1), at(X2,Y2)}, {dirty(R)} Clean(R) {NOT dirty(R)} }

Els objectius també es defineixen mitjançant la sintaxi de Prolog, i es poden adoptar nous objectius durant l'execució. Els objectius inicials es defineixen a la base d'objectius.

GOALBASE { cleanRoom(r1). cleanRoom(r5). }

Idealment, cada objectiu té unes regles de planificació d'objectius associades, les seves regles PG, que serveixen com a plans abstractes i es criden des dels objectius sempre que es compleixin les seves condicions de guarda.

PG-RULES { cleanRoom(R) <- dirty(R) | { SetStatus(cleaning(R)); goTo(R); clean(R); SetStatus(standby); } }

Les regles PG, al seu torn, poden cridar regles de revisió del pla, o regles PR, que serveixen com a subrutines, i es poden cridar per executar tasques de nivell inferior i/o repetitives sempre que es compleixin les seves condicions de guarda. Els plans inicials es defineixen a la base del pla, i s'executen al començament del cicle de deliberació.

PLANBASE { SetStatus(started); } PR-RULES { goTo(R) <- location(R,X,Y) AND NOT at(X,Y) | { NowAt(X,Y); } clean(R) <- location(R,X,Y) AND at(X,Y) | { Clean(R); } }

Es poden cridar mètodes externs per accedir als entorns modelats als complements. Tanmateix, els paràmetres no es poden passar directament als mètodes, la qual cosa significa que l'entorn conegut s'ha de modelar corresponentment segons les creences de l'agent. La crida retorna una llista de pròlegs, que després pot ser processada per la lògica de predicats pròpia de l'agent.

Java("JanitorWorld", moveNorth(), M);

Els agents també es poden comunicar entre ells mitjançant ordres d'enviament. Quan una informació X s'envia amb el performatiu P des de l'agent A a l'agent B, l'acció d'enviament es registra a la base de creences d'A com a sent(B,P,X) i es registra a la base de creences de B com a received(A,P,X).

Send(Partner,inform,dirty(R));

Referències

[modifica]
  1. «3APL - A Programming Language for Cognitive Agents» (en anglès). [Consulta: 27 maig 2025].
  2. Hindriks, Koen V.; De Boer, Frank S.; Van der Hoek, Wiebe; Meyer, John-Jules Ch. «Agent Programming in 3APL» (en anglès). Autonomous Agents and Multi-Agent Systems, 2, 4, 01-11-1999, pàg. 357–401. DOI: 10.1023/A:1010084620690. ISSN: 1573-7454.
  3. «[https://research.gold.ac.uk/id/eprint/8776/1/A%20Formal%20Architecture%20for%20the%203APL%20Agent%20Programming%20Language.pdf A Formal Architecture for the 3APL Agent Programming Language]» (en anglès). [Consulta: 27 maig 2025].
  4. «A Formal Architecture for the 3APL Agent Programming Language» (en anglès). [Consulta: 27 maig 2025].