==+==+==+==+==+==+==+==+==+==+==+==+==+==+==+==+==+==+==+==+==+==+==+==+==+== Instruções de utilização do tradutor (parser) de ações descritas em linguagem PDDL (STRIPS com variáveis) em uma descrição de ações STRIPS-proposicional (sem variáveis) ==+==+==+==+==+==+==+==+==+==+==+==+==+==+==+==+==+==+==+==+==+==+==+==+==+== Arquivo: schema2ground.pl Autor: Aldebaran Perseke - aluno de mestrado em Ciência da Computação do IME Script Perl que interpreta um descricao PDDL de um dominio, do tipo Strips com variáveis, e um problema gerando uma descrição proposicional de domínio para aquele problema. Existe um interpretador Perl instalado a Redeime. Instruções de Utilização: ------------------------- 1. Como transformar um problema PDDL em uma descrição STRIPS proposicional Você deve executar o script schema2ground em Perl, indicando 2 arquivos em PDDL, um com a descrição das ações e outro com a descrição do problema (estado inicial e estado objetivo ou meta) através dos seguintes parâmetros opcionais: --domain=arquivo-dominio - opção para especificar o nome do arquivo que contém a descrição do domínio. Essa e uma opcao obrigatoria. --problem=arquivo-problema - opcao para especificar o nome do arquivo que contem a descricao de um problema para o dominio. Essa e uma opcao obrigatoria. --output=[PDDL|STRIPS] - formato da saida gerada. Apenas a saida STRIPS esta implementada. --verbose - imprime na saida todos os detalhes do processo de interpretacao dos arquivos de entrada e da transformacao do problema em uma descricao proposicional. --help - apresenta uma ajuda das opcoes de uso do script. Por exemplo, para transformar o problema do satelite AIPS, utilizar o seguinte comando: $ schema2ground --domain=dominios/satellite_strips-domain.pddl --problem=dominios/satellite_strips-problem.pddl --output=STRIPS que direciona a saída na tela. Para gerar um arquivo a partir de uma descrição STRIPS proposicional, basta utilizar o redirecionamento de saida do shell. Para o exemplo anterior, bastaria modificar o comando para: $ schema2ground --domain=dominios/satellite_strips-domain.pddl --problem=dominios/satellite_strips-problem.pddl --output=STRIPS > satellite.strips O resultado disso será a geração de um arquivo de nome satellite.strips 2. Os arquivos de problemas ground tem o seguinte formato: nome operador 1 precondicao1;precondicao2;... efeito1;efeito2;... nome operador 2 precondicao3;precondicao4;... efeito3;efeito4;... . . . nome operador n precondicao N;precondicaoN+1;... efeitoN;efeitoN+1;... proposicao1EstadoInicial;proposicao2EstadoInicial;... proposicao1Objetivo;proposicao2Objetivo;... Todas as linhas até a primeira linha em branco são, três a três, descrições de operadores. A primeira das três linhas e' o nome do operador, a segunda é a lista de proposições da pré-condição (separadas por ponto e virgula) e a terceira é lista de efeitos da ação. A primeira linha após a linha em branco é a lista de proposições do estado inicial, e a segunda linha é a lista de proposições dos estados objetivos (pode haver mais do que um estado objetivo para um dado problema de planejamento). Como para as pré-condicoes de um operador, todas as proposições das listas sao separadas por ponto e virgula. Chamamos de um "problema de planejamento" as ações geradas mais a lista de proposicoes do estado inicial e a lista de proposicoes pertencentes aos estados objetivos. Pronto! Agora você já pode utilizar o seu planejador HSP para encontrar um plano usando como entrada o arquivo que você gerou.