Graphplan

filósofo
0.6 – Planejamento
0.6.1 – Planejamento Classico
0.6.1.1 – STRIPS
0.6.1.2 – Graphplan
LEGENDA
Principal
Ramo
Metodo
Problemas
Modelo
Arquitetura

planejamento com estruturas de grafos

Graphplan é um algoritmo de planejamento que utiliza estruturas de grafos para encontrar soluções. Desenvolvido por Avrim Blum e Merrick Furst nos anos 1990, ele revolucionou a área. Diferente de abordagens anteriores, Graphplan constrói um grafo de planejamento que expande camadas alternadas. O grafo alterna entre camadas de proposições (estados) e camadas de ações. A construção prossegue até que o objetivo apareça na camada de proposições. Em seguida, o algoritmo extrai um plano válido a partir do grafo construído. Essa abordagem provou ser mais eficiente que planejadores baseados em busca tradicional.

construção do grafo de planejamento

O grafo de planejamento começa com a camada de proposições representando o estado inicial. A cada camada de ações, adicionamos todas as ações cujas pré-condições estão na camada anterior. Também incluímos ações “no-op” que mantêm proposições inalteradas. A camada seguinte de proposições contém todos os efeitos das ações da camada anterior. Por exemplo, se na camada 0 temos “mão_vazia” e “bloco_livre”, adicionamos ação “pegar”. Essa ação adiciona “segurando(bloco)” na próxima camada de proposições. O processo repete até que o objetivo apareça em alguma camada.

detecção de mutex e poda

Graphplan utiliza relações de exclusão mútua (mutex) para podar combinações inviáveis. Duas proposições são mutex se não podem ser verdadeiras simultaneamente em um plano. Duas ações são mutex se interferem entre si ou têm pré-condições mutex. Por exemplo, “segurando(A)” e “segurando(B)” são mutex porque a mão só segura um bloco. Ações “pegar(A)” e “pegar(B)” são mutex porque competem pelo recurso “mão_vazia”. Essas relações se propagam entre camadas, reduzindo drasticamente o espaço de busca. A detecção de mutex permite podar combinações impossíveis precocemente.

extração de planos

Após construir o grafo até o objetivo, Graphplan extrai um plano de forma regressiva. O algoritmo começa na camada onde o objetivo aparece e busca um conjunto de ações que o suportam. Para cada ação selecionada, suas pré-condições se tornam subobjetivos na camada anterior. O processo recursivo continua até alcançar a camada inicial do grafo. Se em algum ponto não encontrar suporte válido, o algoritmo retrocede e tenta alternativas. Esse processo de extração garante que o plano encontrado é consistente e executável. O algoritmo retorna o plano de comprimento mínimo correspondente ao grafo construído.

vantagens e impacto do graphplan

Graphplan trouxe avanços significativos em eficiência para planejamento clássico. Sua estrutura de grafo permite detectar inconsistências e podar combinações inviáveis precocemente. A abordagem provou ser mais rápida que planejadores baseados em busca tradicional. Graphplan inspirou o desenvolvimento de planejadores modernos como IPP e STAN. Suas ideias influenciaram também a área de verificação de modelos e sistemas de transição. Para iniciantes, Graphplan oferece uma visão alternativa ao planejamento baseado em busca. Ele demonstra como estruturas de dados podem transformar a complexidade de problemas. O algoritmo permanece um marco na história do planejamento automatizado.

STRIPS

filósofo
0.6 – Planejamento
0.6.1 – Planejamento Classico
0.6.1.1 – STRIPS
0.6.1.2 – Graphplan
LEGENDA
Principal
Ramo
Metodo
Problemas
Modelo
Arquitetura

o pioneiro do planejamento automatizado

STRIPS (Stanford Research Institute Problem Solver) foi o primeiro sistema de planejamento automatizado da história. Desenvolvido por Richard Fikes e Nils Nilsson no final dos anos 1960, ele estabeleceu paradigmas. Primeiramente, o sistema introduziu a representação de problemas como estados, ações e objetivos. Diferente de abordagens anteriores, STRIPS separou conhecimento do domínio do mecanismo de planejamento. Além disso, ele demonstrou que robôs poderiam planejar sequências de ações para alcançar objetivos. O sistema foi utilizado no robô Shakey, o primeiro robô móvel com raciocínio autônomo. Consequentemente, STRIPS se tornou a base para inúmeras linguagens e sistemas posteriores.

representação de ações em strips

Em STRIPS, cada ação possui três componentes fundamentais que definem seu comportamento. A lista de pré-condições especifica o que deve ser verdade antes da ação executar. Por outro lado, a lista de adição (add-list) descreve os predicados que se tornam verdade após a ação. Além disso, a lista de remoção (delete-list) descreve os predicados que deixam de ser verdade após a ação. Por exemplo, a ação “pegar(bloco)” exige “mão_vazia” e “bloco_livre” como pré-condições. Seus efeitos: adiciona “segurando(bloco)” e remove “mão_vazia” e “bloco_livre”. Dessa forma, essa estrutura captura como ações transformam o estado do mundo de forma determinística.

exemplo prático de domínio

Considere um domínio simples de transporte de pacotes com ações bem definidas. Ação “carregar(pacote, local)” requer “em(local)” e “pacote_em(pacote, local)” como pré-condições. Seus efeitos: adiciona “carregando(pacote)” e remove “pacote_em(pacote, local)”. Além disso, ação “descarregar(pacote, local)” requer “carregando(pacote)” e “em(local)” como pré-condições. Seus efeitos: adiciona “pacote_em(pacote, local)” e remove “carregando(pacote)”. Ação “mover(de, para)” requer “em(de)” e exclui “em(para)” já verdadeiro. Seus efeitos: adiciona “em(para)” e remove “em(de)”. Portanto, essas ações permitem planejar rotas completas de entrega.

algoritmo de planejamento strips

O algoritmo STRIPS utiliza busca no espaço de estados com encadeamento para trás. Primeiramente, ele começa com o objetivo e busca ações cujos efeitos satisfaçam partes do objetivo. Para cada ação candidata, o algoritmo verifica se suas pré-condições são satisfeitas no estado atual. Se alguma pré-condição não for satisfeita, ela se torna um subobjetivo a ser resolvido recursivamente. O algoritmo constrói um plano parcial e depois o executa na ordem inversa. Consequentemente, esse processo de regressão simplifica o problema de planejamento consideravelmente. Assim, STRIPS demonstrou que planejamento poderia ser feito de forma eficiente com essa abordagem.

legado e influência duradoura

O STRIPS deixou um legado que transcende sua implementação original como sistema. Primeiramente, sua representação de ações inspirou linguagens como PDDL, hoje padrão na área. Além disso, o conceito de pré-condições e efeitos se tornou universal em planejamento automatizado. A separação entre domínio e problema permitiu reutilização de conhecimento. Dessa forma, o algoritmo de regressão influenciou gerações de planejadores subsequentes. Atualmente, a família de linguagens baseadas em STRIPS continua sendo utilizada. Para iniciantes, estudar STRIPS é compreender as origens do planejamento automatizado em IA. Por fim, ele mostra como representação adequada de ações permite resolução estruturada de problemas complexos.