EP2

Planejamento Heurístico


 
Início do projeto:  05/11/2009
Datas de entrega:  05/12/2009
Professora: Leliane Nunes de Barros

 


Heuristic Search Planning

O objetivo do projeto é implementar um sistema de planejamento clássico que faz busca heurística no espaço de estados. O sistema deverá receber como entrada um conjunto de ações proposicionais, uma descrição do estado inicial e um conjunto de proposições que devem ser satisfeitas no estado meta. O planejador deverá devolver um plano de ações (totalmente ordenado) que, quando executadas, transformam o estado inicial num estado meta.

Você deverá utilizar o algoritmo de busca heurística A* implementado no EP1. A diferença agora é que a entrada do seu sistema de busca A* será como descrita acima. Além disso, você deverá implementar TRÊS funções heurísticas diferentes para serem usadas em seu A*:   

·             uma heurística simples que calcula o número de proposições da meta que não são satisfeitas no estado atual.

·             duas heurísticas baseadas no sistema HSP [Bonet and Geffner, 2001]: (D0) de custo aditivo e (D1) de custo MAX


Domínios de teste

O sistema de planejamento, com as diferentes heurísticas, deverá ser analisado em dois domínios de teste: Mundo dos Blocos e Domínio dos Satélites. Esses domínios foram originalmente descritos, juntamente com um conjunto de problemas, na linguagem PDDL para a competição internacional de planejamento e são operadores STRIPS (ações com variáveis).

Em geral, sistemas de planejamento que fazem busca no espaço de estados, como o que será implementado nesse projeto,  raciocinam diretamente sobre uma descrição de ações proposicionais, ou seja, sem variáveis. Por exemplo, considere o domínio do mundo dos blocos com braço de robô descrito abaixo. Nesta versão do Mundo dos Blocos a ação empilha(x,y) move um bloco x que está na mão do robô para cima de um outro bloco y.  Para resolvermos um problema nesse domínio que envolva apenas dois blocos, A e B, a ação empilha(x,y) deve ser traduzida para um conjunto de ações proposicionais (ou ações instanciadas), neste caso, empilha(A,B) e empilha(B,A).  Note que empilha(x,y) é um nome de ação. O que chamamos de fluente ou literal de um domínio (por exemplo, sobre(x,y)) são os elementos das listas de pré-condições e efeitos da ação, que também deverão ser instanciados com os objetos do problema.

Assim, para a realização desse projeto foi preciso gerar um conjunto de ações proposicionais para cada tamanho de problema. Para isso, foi usado um parser (implementado por Aldebaran Perseke, ex-aluno de mestrado do IME), que recebe como entrada:

que gera um arquivo com todas as ações instanciadas, incluindo o estado inicial e a meta. Veja a descrição da linguagem adotada como formato de saída do parser (e que será a entrada do seu planejador).



Domínios de teste simples

Domínio do Jantar Surpresa
 

Esse é um domínio bem simples e por isso servirá somente para a realização de testes simples durante o desenvolvimento do sistema.  Os resultados desse domínio não deverão entrar para a análise de desempenho mas somente usado para testar o seu programa!
As ações estão descritas em PDDL e podem ser traduzidas na mão para o formato de saída adotado pelo parser.

 

Problema para o Domínio do Jantar Surpresa: exemplo de problema para o domínio do Jantar Surpresa descrito na linguagem PDDL. Note que na lista de metas existe uma proposição negada ( not ( lixo ) ). Será que um planejador com uma heurística que considera o custo da solução do problema relaxado consegue resolver esse problema? Caso isso cause dificuldades para testar o seu planejador, especifique metas apenas com proposições positivas, ou seja, proposições não negadas.


Domínio do Mundo dos Blocos  

Nessa versão do domínio do Mundo dos Blocos o agente robótico é capaz de executar 4 ações:

  pick-up ( ?x - block ) 

 o agente pega um bloco de cima da mesa e o segura

  put-down ( ?x - block ) 

 o agente coloca o bloco que está segurando em cima da mesa 

  stack ( ?x - block ?y - block ) 

 o agente coloca o bloco que está segurando em cima de outro bloco 

  unstack ( ?x - block ?y - block ) 

 o agente pega um bloco de cima de outro bloco e o segura

 

Exemplos de problemas para o Mundo dos Blocos


 


Domínio dos Satélites

Este é um domínio de planejamento que está muito em moda. A programação de satélites espaciais tem
sido tema de vários projetos financiados pelas grandes agências internacionais de fomento à pesquisa.
Alguns desses projetos desenvolveram sistemas de planejamento que estão sendo de fato utilizados em
estações espaciais.

Exemplos de problemas para o domínio de satélites.

 



Análise de Desempenho
 

A análise de desempenho deverá ser feita com base nos tempos de execução, número de estados visitados pela busca e tamanho dos planos encontrados para os problemas e domínios estudados. esses resultados deverão ser apresentados na forma de gráficos.

 

IMPORTANTE:  No EP1 a maioria dos alunos não fizaram uma análise comparativa como foi pedido mas somente adicionaram um conjunto de gráficos. No EP2 isso não será aceito.



Critério de Avaliação

A nota deste projeto valerá de 0 a 10.0 pontos que serão distribuídos da seguinte forma:


            4.0 para a implementação das funções heurísticas
            6.0 para a análise de desempenho e relatório final

        



Links de interesse e bibliografia
 

·         [Bonet and Geffner, 2001] Heuristic Search Planner Ver. 2.0. (Description of Planner entered into AIPS-00 Competition) Blai Bonet and Héctor Geffner. AI Magazine. Fall 2001. Pages 77-80.