Planejamento reativo

Na inteligência artificial, o planejamento reativo denota um conjunto de técnicas para seleção de ações por agentes autônomos. Essas técnicas diferem do planejamento clássico em dois aspectos. Primeiro, eles operam em tempo hábil e, portanto, podem lidar com ambientes altamente dinâmicos e imprevisíveis. Segundo, eles computam apenas uma próxima ação em cada instante, com base no contexto atual. Planejadores reativos frequentemente (mas nem sempre) exploram planos reativos, que são estruturas armazenadas descrevendo as prioridades e o comportamento do agente.

Embora o termo planejamento reativo remonte a pelo menos 1988, o termo “reativo” tornou-se pejorativo usado como um antônimo de pró-ativo. Como quase todos os agentes que usam o planejamento reativo são proativos, alguns pesquisadores começaram a se referir ao planejamento reativo como um planejamento dinâmico.

Representação de plano reativo
Existem várias maneiras de representar um plano reativo. Todos exigem uma unidade representacional básica e um meio de compor essas unidades em planos.

Regras de ação-condição (produções)
Uma regra de ação de condição ou regra if-then é uma regra no formulário: if condition then action. Essas regras são chamadas de produções. O significado da regra é o seguinte: se a condição for válida, execute a ação. A ação pode ser externa (por exemplo, pegar algo e movê-lo) ou interna (por exemplo, gravar um fato na memória interna ou avaliar um novo conjunto de regras). As condições são normalmente booleanas e a ação pode ser executada ou não.

As regras de produção podem ser organizadas em estruturas relativamente planas, mas mais frequentemente são organizadas em uma hierarquia de algum tipo. Por exemplo, a arquitetura de subsunção consiste em camadas de comportamentos interconectados, cada qual, na verdade, é uma máquina de estados finitos que age em resposta a uma entrada apropriada. Estas camadas são então organizadas em uma pilha simples, com camadas mais altas que subsumem as metas das menores. Outros sistemas podem usar árvores ou podem incluir mecanismos especiais para alterar qual subconjunto objetivo / regra é atualmente mais importante. Estruturas planas são relativamente fáceis de construir, mas permitem apenas a descrição de um comportamento simples, ou exigem condições imensamente complicadas para compensar a falta de estrutura.

Uma parte importante de qualquer algoritmo de seleção de ação distribuída é um mecanismo de resolução de conflitos. Esse é um mecanismo para resolver conflitos entre ações propostas quando mais de uma condição de regras é válida em um determinado instante. O conflito pode ser resolvido, por exemplo,

atribuindo prioridades fixas às regras previamente,
atribuição de preferências (por exemplo, na arquitetura Soar),
aprendendo utilidades relativas entre regras (por exemplo em ACT-R),
explorando uma forma de planejamento.
Os sistemas especialistas geralmente usam outras heurísticas mais simples, como recência para a seleção de regras, mas é difícil garantir um bom comportamento em um sistema grande com abordagens simples.

A resolução de conflitos é necessária apenas para regras que desejam tomar ações mutuamente exclusivas (cf. Blumberg, 1996).

Algumas limitações desse tipo de planejamento reativo podem ser encontradas em Brom (2005).

Máquinas de estados finitos
A máquina de estados finitos (FSM) é um modelo de comportamento de um sistema. Os FSMs são amplamente utilizados na ciência da computação. O comportamento de modelagem de agentes é apenas uma das suas possíveis aplicações. Um FSM típico, quando usado para descrever o comportamento de um agente, consiste em um conjunto de estados e transições entre esses estados. As transições são, na verdade, regras de ação de condição. Em cada instante, apenas um estado do FSM está ativo e suas transições são avaliadas. Se uma transição é tomada, ela ativa outro estado. Isso significa que, em geral, as transições são as regras da seguinte forma: if condition then activate-new-state. Mas as transições também podem se conectar ao estado “eu” em alguns sistemas, para permitir a execução de ações de transição sem realmente alterar o estado.

Existem duas maneiras de como produzir comportamento por um FSM. Eles dependem do que está associado aos estados por um designer – eles podem ser ‘atos’ ou scripts. Um ‘ato’ é uma ação atômica que deve ser executada pelo agente se seu FSM for o estado dado. Esta ação é executada em cada etapa de tempo. No entanto, mais frequentemente é o último caso. Aqui, cada estado é associado a um script, que descreve uma sequência de ações que o agente deve executar se seu FSM estiver em um determinado estado. Se uma transição ativa um novo estado, o script antigo é simplesmente interrompido e o novo é iniciado.

Se um script é mais complicado, ele pode ser dividido em vários scripts e um FSM hierárquico pode ser explorado. Em tal autômato, todo estado pode conter subestados. Apenas os estados no nível atômico estão associados a um script (que não é complicado) ou a uma ação atômica.

Computacionalmente, os FSMs hierárquicos são equivalentes aos FSMs. Isso significa que cada FSM hierárquico pode ser convertido em um FSM clássico. No entanto, abordagens hierárquicas facilitam melhor os projetos. Veja o artigo de Damian Isla (2005) para um exemplo de ASM de bots de jogos de computador, que usa FSMs hierárquicos.

Abordagens difusas
Ambas as regras if-then e FSMs podem ser combinadas com a lógica fuzzy. As condições, estados e ações não são mais booleanos ou “sim / não” respectivamente, mas são aproximados e suaves. Consequentemente, o comportamento resultante será mais suave, especialmente no caso de transições entre duas tarefas. No entanto, a avaliação das condições difusas é muito mais lenta do que a avaliação de suas contrapartes nítidas.

Veja a arquitetura de Alex Champandard.

Abordagens Connectionists
Planos reativos podem ser expressos também por redes conexionistas como redes neurais artificiais ou hierarquias de fluxo livre. A unidade representacional básica é uma unidade com vários links de entrada que alimentam a unidade com “uma atividade abstrata” e links de saída que propagam a atividade para as unidades seguintes. Cada unidade funciona como o transdutor de atividade. Normalmente, as unidades são conectadas em uma estrutura em camadas.

Positivos de redes conexionistas é, em primeiro lugar, que o comportamento resultante é mais suave do que o comportamento produzido por regras nítidas e FSMs, segundo, as redes são muitas vezes adaptáveis, e terceiro, mecanismo de inibição pode ser usado e, portanto, o comportamento pode ser também descrito proscriptively (por meio de regras pode-se descrever comportamento apenas prescritivamente). No entanto, os métodos também apresentam várias falhas. Primeiro, para um designer, é muito mais complicado descrever o comportamento de uma rede comparando com as regras if-then. Em segundo lugar, apenas um comportamento relativamente simples pode ser descrito, especialmente se o recurso adaptativo for explorado.

Algoritmos de planejamento reativo
O algoritmo típico de planejamento reativo apenas avalia se-então regras ou calcula o estado de uma rede conexionista. No entanto, alguns algoritmos possuem recursos especiais.

Avaliação de Rete: com uma representação lógica adequada (que é adequada apenas para regras nítidas), as regras não precisam ser reavaliadas a cada etapa de tempo. Em vez disso, uma forma de cache armazenando a avaliação da etapa anterior pode ser usada.
Linguagens de script: Às vezes, as regras ou FSMs são diretamente as primitivas de uma arquitetura (por exemplo, no Soar). Mas, mais frequentemente, os planos reativos são programados em uma linguagem de script, em que as regras são apenas uma das primitivas (como no JAM ou no ABL).
Direção
A direção é uma técnica reativa especial usada na navegação de agentes. A forma mais simples de direção reativa é empregada nos veículos da Braitenberg, que mapeiam as entradas dos sensores diretamente para as saídas dos atuadores e podem seguir ou evitar. Sistemas mais complexos são baseados em uma superposição de forças atraentes ou repulsivas que afetam o agente. Esse tipo de direção é baseado no trabalho original sobre boids de Craig Reynolds. Por meio da direção, pode-se conseguir uma forma simples de:

em direção a uma meta de navegação
comportamento de evitação de obstáculos
uma parede seguindo o comportamento
inimigo se aproximando
evitação de predador
comportamento de multidão
A vantagem da direção é que ela é computacionalmente muito eficiente. Nos jogos de computador, centenas de soldados podem ser motivados por essa técnica. Em casos de terreno mais complicado (por exemplo, um edifício), entretanto, a direção deve ser combinada com a localização de caminhos (como, por exemplo, em Milani), que é uma forma de planejamento.