Blackbox, ACLP e ParcPlan Ferramentas de Planejamento em IA Jairson Vitorino, 26 de novembro...

Preview:

Citation preview

Blackbox, ACLP e ParcPlan

Ferramentas de Planejamento em IA

Jairson Vitorino, 26 de novembrojv@cin.ufpe.br

Roteiro

Blackbox– SATPLAN versus Graphplan– Blackbox– Blackbox : Funcionamento– Prática

ACLP– ACLP: Definições– Exemplos do Blocks world– ACLP: Prática

PARCPLAN– Sintaxe básica– Exemplo do Mundo dos blocos– Algoritmo de planejamento ParcPlan– ParcPlan: Prática

Referências

Blackbox

Satplan + Graphplan

Satplan versus Graphplan

De acordo com [Kautz e Selman], comparações entre o SATPLAN e o Graphplan mostram que nenhum deles é estritamente superior.

SATPLAN é mais rápido no domínio de logística complexa, os dois algoritmos têm desempenho igual no problema do mundo dos blocos.

Graphplan é mais rápido em outros domínios.

Arquitetura BlackboxPDDL

Camada STRIPS

Construtor

do Grafo

Tradutor Fórmula Lógica

WalkSAT SATz RelSAT Compact

Plano PDDL

Plano PDDL

Satplan versus Graphplan

Os dois algoritmos possuem uma importante semelhança

Ambos trabalham em duas fases: Primeiro criam um estrutura proposicional (no

Graphplan um grafo de planejamento, no SATPLAN uma fórmula bem formada CNF)

Em seguida fazem uma busca sobre essa estrutura, instanciando as variáveis da formulação do problema de planejamento

FuncionamentoPDDL

Camada STRIPS

Construtor

do Grafo

Tradutor Fórmula Lógica

WalkSAT SATz RelSAT Compact

Plano PDDL

Plano PDDL

?

Blackbox

Converte problemas especificados usando a camada básica de PDDL correspondendo a STRIPS para problemas de satisfatibilidade.

O front-end usa graphplan. Flexibilidade no uso de vários algoritmos

(WalkSAT, SATz e o algoritmo original de Graphplan)

Linguagem STRIPS-style em PDDL (Planning Domain Definition Language)

Blackbox

Com o Blackbox é possível usar o algoritmo walksat (Selman, Kautz, and Cohen 1994) por 60 segundos, e se isso falhar, o algoritmo satz (Li and Anbulagan 1997) for 1000 segundo.

O nome Blackbox refere-se ao fato de que o gerador de planos não “sabe” nada sobre os resolvedores SAT, e vice versa. Cada um é uma “caixa preta" para o outro.

Blackbox: Funcionamento

Um problema de planejamento especificado em STRIPS é convertido em grafo de planejamento

O grafo de planejamento é convertido em uma CNF bem formada

A CNF bem formada é resolvida por um das SAT engines disponíveis.

Blackbox: Funcionamento

A sentença bem formada CNF gerada pelo grafo de planejamento pode ser bem menor do que a gerada diretamente a partir de sentenças em STRIPS

Os relacionamentos mutex do grafo podem ser traduzidas diretamente em cláusulas negativas binárias (facilitando o trabalho das SAT engines)

Introduz o uso do "randomized complete search methods" (adicionando um fator aleatório na busca heurística e reiniciando o algoritmo após um determinado número de backtrackings)

Prática

Copie para o mesmo diretório os seguintes arquivos:

– www.cin.ufpe.br/~jv/blackbox.exe– www.cin.ufpe.br/~jv/cygwin1.dll– www.cin.ufpe.br/~jv/domain.pddl – www.cin.ufpe.br/~jv/prob004-log-a.pddl

Prática

O Blackbox trabalha com um arquivo de operações e um arquivo de fatos.

– Abra o arquivo domain.pddl (Este é o arquivo de definição de domínio e operações)

Domain.pddl

Tipado: (:types PACKAGE TRUCK LOCATION AIRPLANE CITY AIRPORT)

Predicados e Variáveis:– (:predicates (at ?obj ?loc) ...

Ações com parâmetros, pré-condições e efeitos: (:action LOAD-TRUCK :parameters(?obj – PACKAGE ...

Domain.pddl

Ações:– LOAD-TRUCK ; LOAD-AIRPLANE ; UNLOAD-TRUCK ;

UNLOAD-AIRPLANE ; DRIVE-TRUCK ; FLY-AIRPLANE ; Exemplo completo:(:action FLY-AIRPLANE

:parameters(?airplane - AIRPLANE ?loc-from - AIRPORT ?loc-to - AIRPORT):precondition(at ?airplane ?loc-from):effect(and (not (at ?airplane ?loc-from)) (at ?airplane ?loc-to)))

O arquivo de fatos

O Blackbox trabalha com um arquivo de operações e um arquivo de fatos.

– Abra no word o arquivo prob004-log-a.pddl (Este é o arquivo de fatos)

Prob004-log-a.pddl

Define a situação inicial– 8 objetos do tipo PACKAGE– 2 aeroportos– 3 cidades– 3 caminhões– 3 locais– 3 aeroportos/locais

• (either LOCATION AIRPORT)

Prob004-log-a.pddl

Define a situação inicial:– (:init (in-city pgh-po pgh)...

Define o objetivo(:goal (and (at package1 bos-po) (at package2 bos-airport) ...

Algumas opções do Blackbox

-t <integer> especifica um número fixo de unidades de tempo

-step <n> incrementa grafo de planejamento para tamanho <n>

-noskip não pula o graphplan solver -noopt pára assim que uma solução é encontrada

Opções avançadas do Blackbox

– BLACKBOX -solver <SPEC> { -then <SPEC> }* sequência de resolvedores, onde:

– <SPEC> { -maxit N } { -maxsec F } <COMMAND> {solver specific options}, onde

– <COMMAND> == graphplan || satz || walksat || relsat || compact

– maxsec F == executa o resolvedor por F segundos

– maxit N = = executa o resolvedor N iterações

Executando o planejador

O Blackbox trabalha com um arquivo de operações e um arquivo de fatos.

– Digite na linha de comando:– blackbox -o domain.pddl -f  prob004-log-a.pddl– A opção -o indica o arquivo de operações e a

opção -f o arquivo de fatos.– Lembre-se! Todos os arquivos que você copiou

devem estar em um mesmo diretório.

Executando o Blackbox

Examinando o arquivo de saída:

– blackbox -o domain.pddl -f  prob004-log-a.pddl > out.txt

– Ou: – blackbox -o domain.pddl -f  prob004-log-a.pddl –g

saida.txt

ACLP

Abductive Contraint Logic Programming

ACLP

Combina raciocínio abdutivo com resolução de restrições

Raciocínio abdutivo: redução automática da representação abstrata do problema e objetivos para um linguagem de tarefas de mais baixo nível (CLP).

Implementado em Eclipse

ACLP: Definições

Um programa abdutivo: uma tripla <P,A,IC>

– Onde P é um programa lógico normal– A é um conjunto de predicados abdutíveis – IC é um conjunto de restrições de

integridade.

Planejamento Abdutivo em ACLP: exemplo do blocks world

P (programa lógico normal)planning([]).

planning([on(X,Y,T)|Rest]):- on(X,Y,T), planning(Rest).

on(X,Y,T) :- initially(X,Y,T0), T0 #<= T, not moved(X,T0,T).on(X,Y,T) :- T1 #>0, T1 #<= T, not moved(X,T1,T),

move(X,Y,T1).

moved*(X,T1,T2) :- Y::1..22, Y ## X, T1 #< T2, between1(T9,T1,T2), move(X,Y,T9).

* Equivalente ao clipped do event calculus

Planejamento Abdutivo em ACLP: exemplo do blocks world

A (predicados abdutíveis):{move(-,-,-)}

IC Restrições de integridade:ic:- move(X,Y,T), initially(Z,X,T1), not moved(Z,T1,T).

ic:- move(X,Y,T), move(Z, X1, T1), T \== T1, not moved(Z,T1,T), T#>=T1 #/\ X #= X1.

ic:- move(X,Y,T), number(Y), initially(Z,Y,T1), not moved(Z,T1,T). ic:- move(X,Y,T), move(Z,Y1,T1), T \== T1, not moved(Z,T1,T), T #>= T1 #/\ Y #= Y1.

ic:- move(X,Y,T), initially(Z,Y1,T1), not moved(Z,T1,T), Y#=Y1.

Mais exemplos em : http://www.cs.ucy.ac.cy/aclp/examples.html

ACLP: Prática

Copie os seguintes arquivos:http://www.cin.ufpe.br/~jv/aclp/aclp_16May00.plhttp://www.cin.ufpe.br/~jv/aclp/plan_main.plhttp://www.cin.ufpe.br/~jv/aclp/initial15blocks.pl

No mesmo diretório que você copiou estes arquivos execute o Eclipse (versão 4.1)/home/robocup/program_files/linux/eclipse/bin/i386_linux/eclipse

No prompt do Eclipse digite:[aclp_16May00].

ACLP: Prática

Abra os arquivos:http://www.cin.ufpe.br/~jv/aclp/plan_main.plhttp://www.cin.ufpe.br/~jv/aclp/initial15blocks.pl

Observe o estado inicial do mundo do blocos no arquivo initial15blocks.pl

No prompt do Eclipse digite:compile (plan_main).compile (initial15blocks).

ACLP: Prática

Para executar um programa em ACLP pode se usar o predicado aclp_solve (+Goal)

Copie a seguinte linha (query 1 do arquivo initial15block.pl):

cputime(X), T :: 1..50, aclp_solve(planning([on(6, 11, T), on(7, 3, T), on(3, 6, T)])), cputime(Y), CPUTIME is Y - X.

Observe o resultado e compare com o resultado previsto no arquivo initial15block.pl

Trying abducible: move(6, 11, T1)Trying abducible: move(7, Y, T9)Trying abducible: move(8, Y, T9)Trying abducible: move(9, Y, T9) Accepted abducible: move(9, Y, T9) Accepted abducible: move(8, Y, T9) Accepted abducible: move(7, Y, T9) Accepted abducible: move(6, 11, T1)Move 6 to 11 done.Trying abducible: not_moved(7, T1, T) Accepted abducible: not_moved(7, T1, T)Move 7 to 3 done.Trying abducible: not_moved(3, T1, T) Accepted abducible: not_moved(3, T1, T)Trying abducible: move(3, 6, T1)Trying abducible: move(3, Y, T9)Trying abducible: move(7, Y, T9)Trying abducible: move(7, 3, T1) Accepted abducible: move(7, 3, T1)Move 7 to 3 done.Trying abducible: not_moved(3, T1, T) Accepted abducible: not_moved(3, T1, T)Trying abducible: move(3, 6, T1) Accepted abducible: move(3, 6, T1)Move 3 to 6 done.

Solution =

move(3, 6, 5)

not_moved(3, 5, 6)

move(7, 3, 6)

not_moved(7, 6, 6)

move(9, 19, 1)

move(8, 9, 2)

move(7, 8, 3)

move(6, 11, 4)

not_moved(6, 4, 6)

T = 6

CPUTIME = 0.62

Y = 1.01

X = 0.39 More? (;)

yes.

ParcPlan

ParcPlan

Planejador Temporal Sobre Restrições de Recursos

Ações, propriedades e objetivos são indexadas a intervalos de tempo

Execução de ações em paralelo Estratégia de busca: baseada em resolução

de restrição e least commitment Soluções geradas usam o menor número de

ações para atingir os seus objetivos

Lembrete

Q@[start,end) propriedade (ação) Q ocorre durante o intervalo de tempo: [start,end)

Exemplo do mundo dos blocos

Exemplo do mundo dos blocosmove é uma relação de quatro argumentos, especificada em termos de condições, efeitos, e restrições.

ParcPlan: Prática

Copie os seguintes arquivos:http://www.cin.ufpe.br/~jv/parcplan/parcplan.tar.gzExtraia os arquivos

No diretório que bw_demo execute o Eclipse (versão 4.1)/home/robocup/program_files/linux/eclipse/bin/i386_linux/

eclipse

No prompt do Eclipse digite: [parcplan].

ParcPlan: Prática

Abra o arquivo block101047.pl: Um problema é definido por um predicado

problem/3, cujo formato é: problem(ProblemNo,InitialState,GoalState). InitialState e GoalState são listas de propriedades on/2 e clear/1. Os números 1..99 definem blocos. Os números 100..999 definem posições da mesa.

ParcPlan: Prática

Ainda no arquivo block101047.pl Examine o problema 1:

– problem(1, [clear(110), clear(109), clear(108), clear(3), clear(106), clear(6), clear(104), clear(103), clear(102), clear(101), on(3, 4), on(4, 9), on(9, 8), on(8, 2), on(2, 1), on(1, 107), on(6, 5), on(5, 7), on(7, 10), on(10, 105)], [on(6, 8), on(8, 9), on(9, 3), on(3, 109), on(2, 10), on(10, 1), on(1, 5), on(5, 4), on(4, 7), on(7, 102)]).

ParcPlan: Prática

PROBLEMA 1Parte 1 (Initialstate) do predicado Problem

[clear(110), clear(109), clear(108), clear(3), clear(106), clear(6), clear(104), clear(103), clear(102), clear(101), on(3, 4), on(4, 9), on(9, 8), on(8, 2), on(2, 1), on(1, 107), on(6, 5), on(5, 7), on(7, 10), on(10, 105)],

ParcPlan: Prática

PROBLEMA 1Parte 2 (GoalState) do predicado Problem

[on(6, 8), on(8, 9), on(9, 3), on(3, 109), on(2, 10), on(10, 1), on(1, 5), on(5, 4), on(4, 7), on(7, 102)]

ParcPlan: Prática

No prompt do Eclipse digite: [block101047].

Para resolver um problema determinado problema é necessário dar o número do problema e número de braços disponíveis: plan(ProblemNumber,ArmsAvailable),

Para resolver o problema 1 usando 10 braços digite no prompt do Eclipse:

plan (1,10).

Referências

[Kautz e Selman], Unifying STRIPS and SAT with BLACKBOX. Disponível para download em: http://citeseer.nj.nec.com/38115.html

AIMA capítulos 11 e 12 (livro texto da disciplina) Site do Blackbox

http://www.cs.washington.edu/homes/kautz/blackbox/ Site do ACLP

http://www.cs.ucy.ac.cy/aclp/index.html [Liatsos V., Richards B.] Least Commitment An optimal planning strategy (1997) Site do O-Plan

http://www.aiai.ed.ac.uk/~oplan/release/index.html#doc [Tate, Dabble and Dalton] O-Plan: a Knowledge Based Planner and its

Application to Logistics.(disponível para download no site do O-Plan)