GOAL és un llenguatge de programació d'agents cognitius. Els agents GOAL deriven la seva elecció d'acció de les seves creences i objectius. El llenguatge proporciona els components bàsics per dissenyar i implementar agents cognitius mitjançant la programació de construccions que permeten i faciliten la manipulació de les creences i els objectius d'un agent i per estructurar la seva presa de decisions. El llenguatge proporciona un marc de programació intuïtiu basat en el sentit comú o el raonament pràctic.

Visió general Les principals característiques de GOAL inclouen:

Creences declaratives: els agents utilitzen un llenguatge simbòlic i lògic per representar la informació que tenen i les seves creences o coneixements sobre l'entorn en què actuen per tal d'aconseguir els seus objectius. Aquest llenguatge de representació del coneixement no està fixat per GOAL, però, en principi, es pot variar segons les necessitats del programador. Objectius declaratius: els agents poden tenir múltiples objectius que especifiquen el que l'agent vol aconseguir en algun moment en un futur proper o llunyà. Els objectius declaratius especifiquen un estat de l'entorn que l'agent vol establir, no especifiquen accions o procediments per aconseguir aquests estats. Estratègia de compromís cec: els agents es comprometen amb els seus objectius i els abandonen només quan s'han assolit. Aquesta estratègia de compromís, anomenada estratègia de compromís cec a la literatura, és l'estratègia per defecte que utilitzen els agents GOAL. Se suposa que els agents cognitius no tenen objectius que creuen que ja s'han assolit, una restricció que s'ha incorporat als agents GOAL en abandonar un objectiu quan s'ha assolit completament. Selecció d'accions basada en regles: els agents utilitzen les anomenades regles d'acció per seleccionar accions, tenint en compte les seves creences i objectius. Aquestes regles poden subespecificar l'elecció de l'acció en el sentit que es poden realitzar múltiples accions en qualsevol moment donades les regles d'acció de l'agent. En aquest cas, un agent GOAL seleccionarà una acció habilitada arbitrària per a l'execució. Mòduls d'intenció basats en polítiques: els agents poden centrar la seva atenció i posar tots els seus esforços en aconseguir un subconjunt dels seus objectius, utilitzant un subconjunt de les seves accions i utilitzant només el coneixement rellevant per aconseguir aquests objectius. GOAL proporciona mòduls per estructurar regles d'acció i coneixement dedicats a assolir objectius específics. Informalment, els mòduls es poden veure com a intencions basades en polítiques en el sentit de Michael Bratman. Comunicació a nivell de coneixement: els agents poden comunicar-se entre ells per intercanviar informació i coordinar les seves accions. Els agents GOAL es comuniquen utilitzant el llenguatge de representació del coneixement que també s'utilitza per representar les seves creences i objectius. Proves: També podeu escriure proves per a GOAL.

Programa d'agents GOAL 475x475px|border=0 Un exemple bloqueja el problema mundial

Un programa d'agent GOAL consta de sis seccions diferents, que inclouen el coneixement, les creences, els objectius, les regles d'acció, les especificacions d'acció i les regles de percepció, respectivament. El coneixement, les creences i els objectius es representen en un llenguatge de representació del coneixement com ara Prolog, la programació amb conjunts de respostes, SQL (o Datalog) o el llenguatge de definició del domini de planificació, per exemple. A continuació, il·lustrem els components d'un programa d'agent GOAL utilitzant Prolog.

L'estructura general d'un programa d'agent GOAL és la següent:main: <agentname> { <sections> }El codi de l'agent GOAL utilitzat per il·lustrar l'estructura d'un agent GOAL és un agent capaç de resoldre problemes del món de Blocs. Les creences de l'agent representen l'estat actual del món de Blocks, mentre que els objectius de l'agent representen l'estat de l'objectiu. La secció de coneixements que es mostra a continuació conté coneixements conceptuals o de domini addicionals relacionats amb el domini del món dels blocs.knowledge{ block(a), block(b), block(c), block(d), block(e), block(f), block(g). clear(table). clear(X) :- block(X), not(on(Y,X)). tower([X]) :- on(X,table). tower([X,Y|T]) :- on(X,Y), tower([Y|T]). }Tingueu en compte que tots els blocs que figuren a la secció de coneixement tornen a aparèixer a la secció de creences, ja que cal especificar la posició de cada bloc per caracteritzar la configuració completa dels blocs.beliefs{ on(a,b), on(b,c), on(c,table), on(d,e), on(e,table), on(f,g), on(g,table). }Tots els blocs coneguts també són presents a la secció d'objectius, que especifica una configuració d'objectius que reutilitza tots els blocs.goals{ on(a,e), on(b,table), on(c,table), on(d,c), on(e,b), on(f,d), on(g,table). }Un agent GOAL pot tenir diversos objectius alhora. Aquests objectius poden ser fins i tot contradictoris, ja que cadascun es pot assolir en moments diferents. Per exemple, un agent podria tenir l'objectiu de veure una pel·lícula al cinema i ser a casa (després).

En GOAL, es distingeixen diferents nocions d'objectiu. Un objectiu primitiu és una afirmació que es desprèn de la base d'objectius juntament amb els conceptes definits a la base de coneixement. Per exemple, tower([a,e,b]) és un objectiu primitiu i escrivim goal(tower([a,e,b]) per denotar-lo. Inicialment, tower([a,e,b]) també és un objectiu d'assoliment, ja que l'agent no creu que a estigui a sobre d'e, e estigui a sobre de b i b estigui sobre la taula. Els objectius d'assoliment són objectius primitius que l'agent no creu que siguin el cas i es denoten per a-goal(tower([a,e,b]). També és útil poder expressar que s'ha assolit un objectiu. goal-a(tower([e,b]) s'utilitza per expressar, per exemple, que la torre [e,b] s'ha aconseguit amb el bloc e a sobre del bloc b. Tant els objectius d'assoliment com la noció d'objectiu assolit es poden definir:a-goal(formula) ::= goal(formula), not(bel(formula)) goal-a(formula) ::= goal(formula), bel(formula)Hi ha molta literatura sobre la definició del concepte d'objectiu d'assoliment en la literatura sobre agents (vegeu les referències).

GOAL és un llenguatge de programació basat en regles. Les normes s'estructuren en mòduls. El mòdul principal d'un agent GOAL especifica una estratègia per seleccionar accions mitjançant regles d'acció. La primera regla següent estableix que moure el bloc X a sobre del bloc Y (o, possiblement, de la taula) és una opció si aquest moviment és constructiu, és a dir, mou el bloc en la seva posició. La segona regla estableix que moure un bloc X a la taula és una opció si el bloc X està mal col·locat.main module{ program{ if a-goal(tower([X,Y|T])), bel(tower([Y|T])) then move(X,Y). if a-goal(tower([X|T])) then move(X,table). } }Les accions, com ara l'acció de moviment utilitzada anteriorment, s'especifiquen mitjançant una especificació de precondicions i postcondicions a l'estil STRIPS. Una precondició especifica quan es pot realitzar l'acció (està habilitada). Una postcondició especifica quins són els efectes de realitzar l'acció.actionspec{ move(X,Y) { pre{ clear(X), clear(Y), on(X,Z), not(X=Y) } post{ not(on(X,Z)), on(X,Y) } }Finalment, el mòdul d'esdeveniments consisteix en regles per processar esdeveniments com ara percepcions rebudes de l'entorn. La regla següent especifica que per a totes les percepcions rebudes que indiquen que el bloc X es troba al bloc Y, i es creu que X es troba a sobre de Z de manera diferent de Y, el nou fet sobre (X, Y) s'ha d'afegir a la base de creences i l'àtom sobre (X, Z) s'ha d'eliminar.event module{ program{ forall bel( percept(on(X,Y)), on(X,Z), not(Y=Z) ) do insert(on(X,Y), not(on(X,Z))).

Llenguatges de programació d'agents relacionats El llenguatge de programació d'agents GOAL està relacionat però és diferent d'altres llenguatges de programació d'agents com ara AGENT0, AgentSpeak, 2APL, Golog, JACK Intelligent Agents, Jadex i, per exemple, Jason. La característica distintiva de GOAL és el concepte d'objectiu declaratiu. Els objectius d'un agent GOAL descriuen el que un agent vol aconseguir, no com aconseguir-ho. A diferència d'altres llenguatges, els agents GOAL estan compromesos amb els seus objectius i només els eliminen quan s'han aconseguit completament. GOAL proporciona un marc de programació amb un fort enfocament en la programació declarativa i les capacitats de raonament requerides pels agents cognitius.

Referències

Categoria:Programari Categoria:Assistents personals intel·ligents