Você está na página 1de 9

Resumo

An Introduction To Multi agent Systems - Wooldridge


Capítulo 5 – Reactive and Hybrid Agents
Disciplina de Sistemas Multi-agentes
Manoel Campos da Silva Filho

Introdução

Muitos problemas com propostas simbólicas/lógicas para construção de agentes guia alguns
pesquisadores para questionar, e ultimamente rejeitar, as suposições em que tais propostas são baseadas.
Estes pesquisadores, na metade da década de 1980, começaram a investigar alternativas para o paradigma
de IA simbólica, tendo alguns temas como:
• a rejeição de representações simbólicas, e a tomada de decisão baseada em manipulação sintática
de tais representações;
• a ideia de comportamento racional e inteligente é visto como inatamente ligada ao ambiente que o
agente ocupa – o comportamento inteligente não é desencorporado, mas é produto da interação
que o agente mantém com seu ambiente;
• a ideia de que comportamento inteligente emerge de interações de vários comportamentos mais
simples.

Propostas alternativas para agentes são algumas vezes referidas como comportamentais
(desenvolvimento e combinação de comportamentos individuais), situadas (agentes são situados em
algum ambiente) e reativas (pois tais sistemas são frequentemente percebidos como simplesmente
reagindo ao ambiente, sem raciocinar sobre ele).

5.1 Brooks e a Arquitetura de Classificação (Subsumption Architecture)

A arquitetura de classificação foi desenvolvida por Rodney Brooks. Ele tem proposto 3 teses
chaves:
1. Comportamento inteligente pode ser gerado sem explícita representação do tipo que a IA
simbólica propõe;
2. comportamento inteligente pode ser gerado sem raciocínio abstrato explícito do tipo que a IA
simbólica propõe;
3. inteligência é uma propriedade emergente de certos sistemas complexos.

Brooks também identificou duas ideias chaves:


1. Situamento e encorporamento: Inteligência 'real' é situada no mundo, não em sistemas
desencorporados tal como provadores de teoremas ou sistemas especialistas.
2. Inteligência e emergência: Comportamento 'inteligente' surge como um resultado da interação do
agente com seu ambiente.

1 de 9
Estas ideias foram feitas concretas na arquitetura de classificação. Existem duas definições
características dessa arquitetura:
1. A tomada de decisão de um agente é realizada através de um conjunto de comportamentos de
cumprimento de tarefas; cada comportamento pode ser pensado como uma função de ação
individual, que continuamente toma entradas perceptivas e mapeia para uma ação a realizar. Cada
um destes módulos de comportamento é objetivado para alcançar alguma tarefa particular. Na
implementação de Brooks, os módulos de comportamento são máquinas de estado-finito. É
assumido que estes módulos de cumprimento de tarefas não incluem representação simbólica
complexa e não fazem raciocínio simbólico. Em muitas implementações, estes comportamentos
são implementados como regras na forma
situação → ação,
que simplesmente mapeia entradas perceptivas diretamente para ações.
2. Muitos comportamento podem disparar simultaneamente. Deve existir obviamente um mecanismo
para escolher entre as diferentes ações selecionadas por estas múltiplas ações. Brooks propôs
arranjar os módulos em uma hierarquia de classificação, com os comportamentos arranjados em
camadas. Camadas mais baixas na hierarquia são capazes de inibir camadas mais altas: quanto
mais baixa uma camada é, mais alta é sua prioridade. A ideia é que camadas mais altas
representem comportamentos mais abstratos. Por exemplo, alguém pode desejar um
comportamento em um robô móvel para 'evitar obstáculos'. Faz sentido dar uma maior prioridade
a este comportamento.

A função see, que representa a habilidade perceptiva do agente, se mantém inalterada. Todavia,
em sistemas de arquitetura de classificação implementados, é assumido por ser bastante estreito o
acoplamento entre percepções e ações – entradas brutas de sensores não são processadas ou
transformadas muito, e não existe tentativa de transformar imagens para representações simbólicas.
A função de decisão action é realizada através de um conjunto de comportamentos, junto com
uma relação de inibição mantida entre estes comportamentos. Um comportamento é um par (c,a), onde c
⊆ P é um conjunto de percepções chamado de condição, e a ∈ A é uma ação. Um comportamento (c, a)
disparará quando o ambiente está no estado s ∈ S se e somente se see(s) ∈ c. Deixe Beh = {(c,a) | c ⊆ P
e a ∈ A} ser o conjunto de todas as tais regras.
Associado ao conjunto de regras de comportamento do agente R ∈ Beh está uma relação de
inibição binária no conjunto de comportamentos: < ⊆ R x R. Esta relação é assumida por ser uma
ordenação total estrita em R (i.e., ela é transitiva, irreflexiva e anti-simétrica). Nós escrevemos b1 < b2 se
(b1, b2) ∈ <, e é lido como 'b1 inibe b2', isto é, b1 é menor na hierarquia que b2, e terá maior prioridade
sobre b2. A função de ação é então como mostrada na figura 5.1.

2 de 9
Assim, a ação selecionada inicia computando o conjunto disparado de todos os comportamentos
que disparam. Então, cada comportamento (c,a) que dispara é verificado, para determinar se existe algum
outro comportamento de maior prioridade que dispara. Se não, então a parte de ação do comportamento,
a, é retornada como a ação selecionada. Se nenhum comportamento dispara, então null será retornado.
A complexidade de tempo total de uma função de ação de classificação não é pior que O(n2), onde
n é o maior do número de comportamento ou número de percepções. Desta forma, a tomada de decisão é
tratável, podendo ser codificada em hardware, dando tempo de decisão constante, em até micro segundos.
Esta simplicidade computacional é a força da arquitetura de classificação.

Experimento de exploração de Marte de Steel

Veremos como agentes da arquitetura de classificação foram construídos para o seguinte cenário:
O objetivo é explorar um planeta distante, para coletar amostrar de um tipo de rocha. A
localização das amostras não é conhecida previamente, mas são tipicamente agrupadas
em certos pontos. Veículos autônomos são responsáveis por fazer a coleta das amostras
e levar para a nave mãe. Não existe mapa detalhado do planeta, embora seja conhecido
que o terreno seja cheio de obstáculos, que previnem os veículos de trocar qualquer
comunicação.

O problema é construir uma arquitetura de controle de agente para cada veículo, para que eles
cooperem na coleta de amostras. Luc Steels propôs uma solução baseada na arquitetura de classificação,
usando um mecanismo que ele chamou de campo gradiente. Para que os agentes possam saber a
localização da nave mãe, esta emite um sinal de rádio. Como, obviamente, este sinal enfraquece à medida
que a distância a partir da origem aumenta, para encontrar a direção da nave mãe, um agente só precisa
viajar acima do gradiente da força do sinal, ou seja, na direção em que a força do sinal aumenta.
Steels propôs também um mecanismo para permitir a comunicação entre os agentes. As
características do terreno impedem comunicação direta, assim, Steels adotou um método de comunicação
indireta, semelhante ao que fazem as formigas. Os agentes marcam uma trilha deixando migalhas de
material radioativo, que podem ser detectadas por outros agentes, permitindo cooperação.
O comportamento individual de um agente é construído a partir de um número de
comportamentos, como descrevemos acima.
Para agentes individuais (não cooperativos), o comportamento de mais baixo nível (logo, com
mais alta prioridade) é evitar obstáculos, podendo ser representado como uma regra:

se detectou um obstáculo então mudar direção; (5.1)

O segundo comportamento garante que as amostras coletadas sejam depositadas na nave mãe:

se transportando amostras e está na base então depositar amostrar; (5.2)


se transportando amostras e não está na base então viajar acima do gradiente; (5.3)

O comportamento (5.3) indica para seguir o sinal até a origem. O próximo comportamento garante que os
agentes coletarão amostras que encontrarem:

se detecta uma amostra então coletá-la; (5.4)

O último comportamento garante que um agente que não tem nada melhor para fazer, irá explorar o
terreno aleatoriamente:
se true então mover aleatoriamente; (5.5)

A pré condição desta regra é assumida por sempre disparar (true). Estes comportamentos são arranjados

3 de 9
na seguinte hierarquia:

mais prioritário (5.1) ‹ (5.2) ‹ (5.3) ‹ (5.4) ‹ (5.5) menos prioritário

A hierarquia de classificação para este exemplo garante que, por exemplo, um agente sempre
mudará de direção ao encontrar um obstáculo; se o agente está na nave mãe e está carregando amostras,
ele sempre irá depositá-las na nave, se ele não está imediatamente em perigo de colisão; e assim por
diante. O comportamento de mais alto nível – mover aleatoriamente – só irá ocorrer se o agente não tiver
nada mais urgente pra fazer. Este conjunto de comportamentos simples resolve o problema.
Se as amostras estivessem espalhadas aleatoriamente, colocar vários robôs no terreno irá funcionar
muito bem. No nosso exemplo, as amostras tendem a estarem agrupadas. Neste caso, faz sentido os
agentes cooperarem uns com os outros para encontrar amostras. Aí entra a ideia da marcação da trilha
com migalhas de material radioativo, como ocorre com as formigas, que lançam feromônio para marcar
uma trilha. A trilha deve ser criada quando um agente retorna para a nave mãe com amostras. Algumas
melhorias podem ser introduzidas. A trilha só será colocada se o agente estiver voltando com amostras
para a nave mãe. Quando um agente seguir a trilha e não encontrar mais amostras, ele reduzirá a trilha no
caminho de volta, até que ela suma, evitando que os agentes sigam uma trilha para uma local sem
amostras. Os comportamentos modificados para este exemplo são como segue:

se transportando amostras e está na base então depositar amostras; (5.6)


se transportando amostras e não está na base então deixar 2 migalhas e viajar acima do gradiente; (5.7)

Um comportamento adicional é requerido para tratar com migalhas:

se percebeu migalhas então pega 1 e viajar abaixo do gradiente; (5.8)

Os comportamentos são arranjados na seguinte hierarquia de classificação:

mais prioritário (5.1) ‹ (5.6) ‹ (5.7) ‹ (5.4) ‹ (5.8) ‹ (5.5) menos prioritário

Steels mostrou como este simples ajuste alcança performance próxima de ótima em muitas situações.
Além do mais, é uma solução barata (o poder computacional para cada agente é mínimo) e robusta (a
perda de um único agente não afetará significantemente todo o sistema).

Agre e Chapman - PENGI

Chapman e Agre chegaram a conclusões similares as de Brooks sobre a inadequabilidade do


modelo de IA simbólica.
Agre observou que a maioria das atividades do dia-a-dia são rotina, no sentido de que elas
requerem pouco – se algum – novo raciocínio abstrato. A maioria das tarefas, uma vez aprendidas, podem
ser cumpridas de uma forma rotineira, com pouca variação. Agre propôs que uma arquitetura eficiente de
agentes poderia ser baseada na ideia de 'argumentos de execução' (running arguments). Grosseiramente, a
ideia é que, como a maioria das decisões são rotina, eles podem ser codificadas em uma estrutura de
baixo nível (como circuitos digitais), que somente precisa periodicamente ser atualizada, talvez para
gerenciar novos tipos de problemas. Esta proposta foi ilustrada com o celebrado sistema PENGI, um jogo
de computador simulado, com o personagem central controlado usando um esquema tal como esboçado
acima.

4 de 9
Rosenschein e Kaelbling – automato situado

Rosenschein e Kaelbling observaram que somente porque um agente é conceituado em termos de


lógica, ele não precisa ser implementado como um provador de teoremas. No paradigma do automato
situado, um agente é especificado em termos declarativos, sendo compilado para uma máquina digital. A
lógica usada para especificar um agente é essencialmente a lógica de conhecimento:
[Um agente] x é dito por portar a informação que p no estado do mundo s, escrito como s |=
K(x,p), se para todos os estados do mundo em que x tem o mesmo valor como ele tem em s, a
proposição p é verdadeira.
Um agente é especificado em termos de dois componentes: percepção e ação. Dois programas são usados
para sintetizar agentes: RULER é usado para especificar o componente de percepção do agente; GAPPS é
usado para especificar o componente de ação.
RULER toma como sua entrada 3 componentes:
[Uma] especificação da semântica das entradas [do agente] ('a qualquer momento que o bit 1 está ligado,
está chovendo'); um conjunto de fatos estáticos ('a qualquer momento que esteja chovendo, o chão está
molhado'); e uma especificação das transições de estado do mundo ('se o chão está molhado, ele ficará
molhado até que o sol apareça'). O programador então especifica a semântica desejada para a saída ('se
este bit está ligado, então o chão está molhado'), e o compilador … [sintetiza] um circuito do qual a saída
terá a semântica correta. … Todos aqueles 'conhecimentos' declarativos são reduzidos para um circuito
muito simples.
O programa GAPPS toma como sua entrada um conjunto de regras de redução de objetivo
(essencialmente, regras que codificam informações sobre quais objetivos podem ser alcançados) e um
objetivo de alto nível, e gera um programa que pode ser traduzido em um circuito digital para realizar o
objetivo. Novamente, o circuito gerado não representa ou manipula expressões simbólicas; todas as
manipulações simbólicas são feitas em tempo de compilação.

Maes – agent network architecture (Arquitetura de Rede de Agentes)

Pattie Maes desenvolveu uma arquitetura de agentes em que um agente é definido como um
conjunto de módulos de competência. Cada módulo é especificado em termos de pré e pós condições, e
um nível de ativação, que dá uma indicação de valor real da relevância do módulo em uma situação
particular. Quanto mais alto o nível de ativação de um módulo, mais provavelmente este módulo
influenciará o comportamento do agente. Uma vez especificado, um conjunto de módulos de competência
é compilado em uma rede de ativação de propagação, em que os módulos são relacionados uns com os
outros por meio de suas pré e pós condições. Por exemplo, se um módulo a tem uma pós condição φ, e
um módulo b tem uma pré condição φ, então a e b estão conectados por um link sucessor.

5.2 As limitações dos Agentes Reativos

Existe uma óbvia vantagem para propostas reativas como a arquitetura de classificação de Brooks:
simplicidade, economia, tratabilidade computacional, tolerância a falhas e elegância. Mas existem alguns
problemas fundamentais não resolvidos, não apenas com a arquitetura citada, mas com outras arquiteturas
puramente reativas:

5 de 9
• Se agentes não empregam modelos em seu ambiente, então eles devem ter informações suficientes
disponíveis em seus ambientes locais para determinar uma ação aceitável.
• Desde que agentes puramente reativos tomam decisões baseados em informações locais (i.e.
informações sobre o estado atual dos agentes), é difícil ver como tal tomada de decisão pode
tomar em conta informações não locais – ele deve herdadamente tomar uma visão de 'curto prazo'.
• É difícil ver como agentes puramente reativos podem ser projetados para aprender a partir da
experiência, e melhorar sua performance com o tempo.
• Enquanto agentes efetivos podem ser gerados com um pequeno número de comportamentos
(tipicamente menos de 10 camadas), é mais difícil de construir agentes que contêm muitas
camadas. A dinâmica das interações entre os diferentes comportamentos se torna muito complexo
de entender.

5.3 Agentes Híbridos

Dado o requisito de um agente ser capaz de ter comportamento reativo e proativo, uma óbvia
decomposição envolve criar separados subsistemas para tratar estes diferentes tipos de comportamentos.
Esta ideia guia para a classe de arquiteturas em que vários subsistemas são arranjados em uma hierarquia
de camadas interagindo.

Figura 5.2 Fluxos de informação e controle em 3 tipos de arquiteturas de agentes em camadas.

Tipicamente, existirá pelo menos duas camadas, para tratar com comportamentos reativos e
proativos, respectivamente. Podemos especificar dois tipos de fluxo de controle dentro da arquitetura de
camadas como segue (veja figura 5.2).

• Camadas horizontais: (figura 5.2a) as camadas de software estão cada uma diretamente
conectadas à entrada sensorial e a saída de ação. Assim, cada camada atua como um agente,
produzindo sugestões como qual ação realizar.
• Camadas verticais: (figuras 5.2 b,c) a entrada sensorial e saída de ação são cada uma tratadas por
pelo menos uma camada.

A arquitetura em camadas horizontais é conceitualmente mais simples: se um agente precisa de n

6 de 9
diferentes tipos de comportamentos, então implementamos n diferentes camadas. Todavia, como as
camadas estão competindo para gerar sugestões de ações, há perigo de que o comportamento total do
agente não seja coerente. Para garantir a consistência, é geralmente incluída uma função mediadora, que
toma decisões sobre que camada tem o 'controle' do agente em um dado instante. Esta necessidade de
controle central é problemática: um projetista deve potencialmente considerar todas as possíveis
interações entre as camadas. Se existem n camadas, e cada uma é capaz de sugerir m possíveis ações, isto
significa mn interações a serem consideradas. O controle centralizado também cria um gargalo na tomada
de decisão do agente.

Figura 5.3 Máquina de Touring: uma arquitetura de agentes em camadas horizontais

Este problemas são parcialmente aliviados em uma arquitetura de camadas verticais. Estas podem
ser divididas em:
• arquiteturas de um-passo (figura 5.2b): o controle flui sequencialmente através de cada camada,
até a camada final gerar uma saída de ação.
• arquiteturas de dois-passos (figura 5.2c): as informações fluem acima na arquitetura (o primeiro
passo) e controle então flui abaixo. É similar ao fluxo de informações em uma empresa, com
informações fluindo para o mais alto nível e comandos descendo.

Nos dois modelos de um-passo e dois-passos, a complexidade das interações entre as camadas é
reduzido: existindo n-1 interfaces entre as n camadas, se uma camada é capaz de sugerir m ações, existe
no máximo m2(n-1) interações para serem consideradas entre as camadas. Isto é mais simples que na
arquitetura horizontal de camadas. Esta simplicidade vem com o custo de alguma perda de flexibilidade:
para tomar uma decisão, no modelo vertical, o controle deve passar entre cada camada, o que não é
tolerante a falhas.

7 de 9
5.3.1 Máquinas de Touring

A arquitetura das Máquinas de Touring é demonstrada na figura 5.3. Elas consistem de 3 camadas
de produção de atividades. Cada camada continuamente produz 'sugestões' sobre que ações o agente deve
realizar. A camada reativa provê uma resposta quase imediata a mudanças que ocorrem no ambiente. Ela
é implementada como um conjunto de regras situação-ação, como os comportamentos na arquitetura de
classificação de Brooks (seção 5.1). Estas regras mapeiam entradas do sensor diretamente para saída do
executor. Um cenário de demonstração foi de um veículo autônomo dirigindo em ruas com outros agentes
similares. Neste cenário, regras reativas tipicamente tratam com funções como evitar obstáculos. Por
exemplo, podemos ter uma regra para evitar o meio fio. Se a regra for disparada, a mesma sugere uma
mudança de orientação. As regras somente podem fazer referência para o estado atual do agente – elas
não podem fazer nada explicitamente raciocinando sobre o mundo.
A camada de planejamento da Máquina de Touring alcança o comportamento proativo do agente.
Ela é especialmente responsável pela execução do dia-a-dia do agente – sobre circunstâncias normais, ela
será responsável por decidir o que o agente fará. Todavia, ela não tenta gerar planos do zero, ela usa uma
biblioteca de 'esqueletos' (skeletons) de planos chamados esquemas (schema's). Estes esqueletos são
essencialmente planos estruturados hierarquicamente, que a Máquina de Touring elabora em runtime,
para decidir o que fazer. Para alcançar um objetivo, esta camada tenta encontrar um esquema na sua
biblioteca que corresponda com o objetivo. Este esquema conterá sub-objetivos, que a camada de
planejamento elabora tentando encontrar outros esquemas, na sua biblioteca, que correspondam com
esses sub-objetivos.
A camada de modelagem representa as várias entidades no mundo (incluindo o próprio agente e
outros agentes). Ela prediz conflitos entre agentes, e gera novos objetivos para serem alcançados, visando
resolver esses conflitos. Estes novos objetivos são então enviados de volta à camada de planejamento, que
usa sua biblioteca de planos para determinar como satisfazê-los.
As 3 camadas de controle são embutidas em um sub-sistema de controle, que é efetivamente
responsável por decidir qual das camadas tem controle sobre o agente. Este sub-sistema de controle é
implementado como um conjunto de regras de controle.

Figura 5.4 InteRRaP – Uma arquitetura de agentes em camadas verticais de dois-passos

8 de 9
5.3.2 InteRRaP

A InteRRaP é um exemplo de arquitetura de agentes de camadas verticais de dois-passos. Como a


figura 5.4 mostra, existem 3 camadas de controle, como nas Máquinas de Touring. As camadas mais
baixas (baseadas em comportamento) tratam com comportamento reativo; a do meio (planejamento
local) trata com planejamento do dia-a-dia para alcançar os objetivos do agente, e a mais acima
(planejamento cooperativo) tratam com interações sociais. Cada camada tem associada a ela uma base de
conhecimento (Knowledge Base-KB), i.e., uma representação do mundo apropriada para a camada. Estas
diferentes bases de conhecimento (KB) representam o agente e seu ambiente em diferentes níveis de
abstração. Assim, a base de conhecimento de mais alto nível representa os planos e ações dos outros
agentes no ambiente; a KB do meio representa os planos e ações do próprio agente; e a KB do nível mais
baixo representa informações 'brutas' sobre o ambiente. A introdução dessas KB distingue as Máquinas de
Touring do InteRRaP.
A forma como as camadas do InteRRaP conspiram para produzir comportamento também é um
pouco diferente das Máquinas de Touring. A principal diferença é a forma como as camadas interagem
com o ambiente. Nas Máquinas de Touring, cada camada era diretamente acoplada para uma entrada
perceptiva e uma saída de ação. Isto necessitou a introdução de um framework de controle de supervisão,
para tratar conflitos e problemas entre as camadas. Na InteRRaP, camadas interagem umas com as outras
para alcançar o mesmo fim. Os dois principais tipos de interação são:
• ativação bottom-up: ocorre quando uma camada mais baixa passa o controle para uma mais alta
devido ela não ser competente para tratar a situação atual;
• execução top-down: ocorre quando uma camada mais alta faz uso das facilidades providas por
uma camada mais baixa para alcançar seus objetivos.

O fluxo básico de controle na InteRRaP começa quando uma entrada perceptiva chega na camada
mais baixa. Se a camada reativa puder tratar a entrada, então ela fará; senão, ativação bottom-up ocorrerá,
e o controle será passado para a camada de planejamento local. Se ela puder gerenciar a situação, então
ela fará, tipicamente usando a execução top-down. De outra forma, ela usará a ativação bottom-up para
passar o controle para a camada mais alta. Desta forma, o controle em InteRRaP irá fluir a partir da
camada mais baixa para a mais alta e então voltar.
Cada camada implementa duas funções gerais:
• função de reconhecimento de situação e ativação de objetivo: mapeia uma base de
conhecimento (KB) e objetivo atual para um novo conjunto de objetivos;
• função de planejamento e agendamento: seleciona qual plano a executar, baseado nos planos
atuais, objetivos e KB da camada.

9 de 9

Você também pode gostar