Sistemas Multiagentes Baseado em “An Introduction to MultiAgent Systems” por Michael Wooldridge, John Wiley & Sons, 2002.
Por João Araujo.
Maes define um arquitetura de agentes como:
Kaelbling considera que uma arquitetura de agentes tem que ser:
Se queremos contruir agentes desta maneira, existem dois problemas-chave a serem resolvidos:
/* tenta encontrar uma ação prescrita explicitamente */ for each α ∈ Ac do if Δ ⊢ρ Do(α) then return α end-if end-for /* tenta encontrar uma ação não excluída */ for each α ∈ Ac do if Δ ⊬ρ ¬Do(α) then return α end-if end-for return null /* nenhuma ação encontrada */
Sistemas de planejamento encontram uma sequência de ações que transformam um estado inicial em um estado objetivo
Também temos predicados para descrever o mundo:
Em geral:
ON(a,b)
HOLDING(a)
ONTABLE(a)
ARMEMPTY
CLEAR(a)
para descrever fatos sempre verdadeiros sobre o Mundo
[ ∃x HOLDING(x) ] –> ¬ARMEMPTY
∀x [ ONTABLE(x) –> ¬ ∃y [ON(x,y)]]
∀x [ ¬ ∃y [ON(y, x)] –> CLEAR(x) ]
então
HOLDING(x,s) –> ONTABLE(x,DO(PUTDOWN(x),s))
ON(A,B,S0) Λ ONTABLE(B,S0) Λ CLEAR(A,S0)
e nossa meta é
∃s(ONTABLE(A, s))
podemos usar a prova de teroema para encontrar o plano
COMMIT( ( agent, REQUEST, DO(time, action) ), ;;; msg condition ( B, [now, Friend agent] AND CAN(self, action) AND NOT [time, CMT(self, anyaction)] ), ;;; mental condition self, DO(time, action) )
Esta regra pode parafraseada como:
(((self ?agent REQUEST (?t (xeroxed ?x))) (AND (CAN-ACHIEVE (?t xeroxed ?x))) (NOT (BEL (*now* shelving))) (NOT (BEL (*now* (vip ?agent)))) ((ADOPT (INTEND (5pm (xeroxed ?x))))) ((?agent self INFORM (*now* (INTEND (5pm (xeroxed ?x)))))))
Por exemplo:
Aqui está o programa da Branca de Neve escrito em MetateM Concorrente:
BrancaDeNeve(ask)[give]
◉ask(x) ⇒ ◇give(x)
give(x) Λ give(y) ⇒ (x=y)
ansioso(give)[ask]:
start ⇒ ask(ansioso)
◉give(ansioso) ⇒ ask(ansioso)
guloso(give)[ask]:
start ⇒ ⬜ask(guloso)
educado(give)[ask]:
( (¬ask(educado) S give(ansioso)) Λ
( (¬ask(educado) S give(guloso))) ⇒
ask(educado)
tímido(give)[ask]:
start ⇒ ◇ask(tímido)
◉ask(x) ⇒ ¬ask(tímido)
◉give(tímido) ⇒ ◇ask(tímido)
Resumo: