Metodologias de Inteligência Artificial 2005/2006
Geração Automática de Planos
Problema do Planeamento
•
Geração automática de Planos (“Planning”)
Estudo e uso dos métodos de decomposição de um problema original em partes elementares apropriadas, resolvendo-as atendendo às interacções entre elas. A computação dos vários passos antes da execução é também característica do
"Planning". O Plano resultante deve resolver a tarefa pedida.
– Problemas podem ser de tipo:
• decomponível: decomposição em subproblemas completamente separados • "quase decomponível”: subproblemas possuem interacção entre eles
– Deve-se evitar tratar todo o estado do problema quando se move de um estado para outro (considerar apenas a parte do estado que mudou)
– As regras usadas nestes algoritmos descrevem apenas as partes afectadas da descrição dos estados para evitar o problema do enquadramento ("frame problem").
3
MIA - 2005/06
resolução de problemas antes de executar qualquer destes passos.
– Planear é importante sobretudo quando os passos necessários à resolução de problemas não podem ser desfeitos ou ignorados (como no xadrez).
– Quando o universo não é totalmente predizível e o plano falha:
• Pode ter que se emendar uma parte do plano (e não o plano todo) o que é mais fácil se o problema tiver sido decomposto
• As interacções devem também ser consideradas. Usa-se retrocesso dirigido pelas dependências (dependency-directed backtracking).
– Os Geradores de Planos são normalmente dirigidos por objectivos, isto é, pesquisa “backward” a partir de um estado objectivo para um estado inicial
• é mais fácil determinar as dependências e o factor de ramificação é mais pequeno.
Gerador Automático de Planos
Exemplo:Mundo dos Blocos
– Acções típicas: • colocar(X,Y) , retirar(X,Y) • pegar(X), largar(X) – Situações típicas: • em(X,Y), na_mesa(X) • braco_vazio, segurar(X) • limpo(X)
Ciclo básico do Gerador Automático de Planos
1. escolher a melhor acção
2. aplicá-la e computar a nova situação 3. detectar a solução ou impossibilidade E FIM
SENÃO passar a 4
(detectar quando solução está próxima e aplicar técnicas específicas para lá chegar)
5
MIA - 2005/06
Algoritmos de Planeamento
Algoritmo de Planeamento é:
– Correcto se todas as soluções forem planos legais.
– Completo se, sempre que existam soluções, pelo menos uma é encontrada
– Estritamente Completo se todas as soluções podem ser encontradas
– Óptimo se a ordem em que as soluções são encontradas são consistentes com
uma medida de qualidade
Algoritmos de Planeamento
Quanto à direcção de pesquisa, um algoritmo de planeamento pode realizar: – Encadeamento Directo
1. Escolha da acção cujas pré-condições são satisfeitas 2. Aplicação e alteração do estado corrente
3. Até Objectivo estar satisfeito regressar a 1
– Encadeamento Inverso
1. Escolha da acção cujo efeito esteja de acordo com um (sub)objectivo
2. Junção de pré-condições do operador ao conjunto de sub-objectivos ainda não atingidos (se for o caso)
7 MIA - 2005/06 Encadeamento Directo – Vantagens • Simples – Desvantagens
• Factor de ramificação grande • Pesquisa não focalizada
Encadeamento Inverso
– Vantagens
• Focalizado na resolução de Objectivos • Geralmente, mais eficiente
– Desvantagens
• Necessidade de raciocinar sobre as acções • Geralmente o encadeamento inverso é incompleto
Algoritmos de Planeamento
O algoritmo de planeamento pode ser linear ou não-linear: – Planeamento Linear
• Pesquisa usando uma PILHA dos Objectivos ainda não atingidos • Resolução de um Objectivo de cada vez
• Vantagens: Pesquisa simples e eficiente, se objectivos independentes • Desvantagens: Planos podem ser sub-óptimos. Incompleto.
– Planeamento Não-Linear
• Pesquisa usando um conjunto de Objectivos • Resolução concorrente de sub-objectivos
• Vantagens: Completo e pode produzir planos mais curtos
9
MIA - 2005/06
Algoritmos de Planeamento
• Algorítmos e Técnicas para geração Automática de Planos
– Análise Meios-Fins
• GPS (“General Problem Solver”) • Operadores
• Tabela das Diferenças
– Planeadores usando “Pilhas de Objectivos”
• “tipo - STRIPS”
• Descrição dos Operadores e Listas
– Planeadores “Não-Lineares”
• Uso de “Conjuntos de Objectivos”
– Planeadore Hierárquicos
• “Tipo-NOAH”
• Ciclo “expansão e crítica”
– Planeadores envolvendo restrições Geométricas
• CIARC
• Generalização de Planos
Análise Meios-Fins
• Técnica da "Análise Meios Fins" (usada no GPS)
– Computa as diferenças entre estados Actual e Final – Procura operações que reduzam essas diferenças – Atender às Pré-condições dos operadores e – Aplicar recursivamente outros operadores
– Considerar sempre a resolução das diferenças grandes primeiro.
Ex: efeito do operador retirar(X,Y)
i.e., se limpo(X) E em(X,Y) no estado E1
então fazendo retirar (X, Y) resulta
suspenso (X) E limpo (Y) no estado E2 limpo(X,E1) em(X,Y,E1)
11
MIA - 2005/06
E o resto do estado?
Usar Axiomas de Enquadramento. Indicam o que deve ser assumido, mesmo se não explicitamente declarado.
Por exemplo, o que não muda:
• em(X,Y,Est) E Accao!==pegar(X) -> em(X,Y,fazer(Accao,Est)) • ~em(X,Y,Est) E Accao!==colocar(X,Y) -> ~em(X,Y,fazer(Accao,Est)) • segurar(X,Est) E Accao!==colocar(X,Y) E Accao!==largar(X)->
segurar(X,fazer(Accao,Est))
– Se o estado é complexo --> Muitos axiomas
Análise Meios-Fins
• Programar todos os Axiomas de Enquadramento pode ser entediante e ineficaz • As representações usadas nos planeadores habituais resolvem implicitamente o
Problema do Enquadramento.
– Estado é representado por um conjunto de factos (BD). – Usa-se AMF (Assumpção Mundo Fechado)
– Cada operação é descrita por uma lista de novos predicados que o operador torna verdadeiros (Junte) e uma lista de antigos predicados que o operador torna falsos
(Apague). Efeitos das acções garantidos por listas (Junte e Apague) de operações sobre
a BD.
– Não há representação explícita do tempo – Não há regras de Inferência
13
MIA - 2005/06
Análise Meios-Fins
Consideremos o seguinte exemplo:
junto(Obj, Loc) E junto(Robot, Loc) junto(Robot, Obj) E grande(Obj) E limpo(Obj) E braço_vazio EMPURRAR(Obj, Loc) junto(Robot, Loc) -IR(Loc) junto(Obj, Loc) E junto(Robot, Loc) junto(Robot, Obj) E pequeno(Obj) E limpo(Obj) E braço_vazio LEVAR(Obj, Loc) RESULTADOS PRÉ-CONDIÇÕES OPERADORES
Análise Meios-Fins
segurar(Obj, Loc) junto(Robot, Obj) E braço_vazio PEGAR(Obj) em(Obj1,Obj2) junto(Robot, Obj2) E segurar(Obj1) COLOCAR(Obj1, Obj2) ~segurar(Obj) E na_mesa(Obj) segurar(Obj) LARGAR(Obj) RESULTADOS PRÉ-CONDIÇÕES OPERADORES15
MIA - 2005/06
Tabela das diferenças
segurar objecto ter braço vazio empilhar objecto limpar objecto mover robot mover objecto largar pegar ir levar empurrar colocar OPERADORES ACÇÕES
Análise Meios-Fins
Exemplo: MOVER Mesa com 2 Livros de X para Y – Acção a efectuar:
• Mover Objecto
– Operadores aplicáveis:
• EMPURRAR(Objecto) ou • LEVAR(Objecto)
Consideremos primeiro o operador LEVAR(Objecto) :
– PRÉ_CONDIÇÕES: junto(Robot, Objecto) E pequeno(Objecto)
A última pré-condição não se verifica pois o objecto Mesa deverá estar caracterizado na Base de Conhecimento do Planeador como objecto grande.
17
MIA - 2005/06
Análise Meios-Fins
Dado que as pré-condições do operador EMPURRAR(Obj) estão reunidas então devemos considerá-lo para o Plano de acções em construção.
A situação é neste momento:
Ou seja, anulou-se a diferença entre os pontos B e C que foi considerada uma diferença importante
Há ainda a anular as diferenças entre os pontos A e B e entre os pontos C e D.
inícioA B EMPURRARC objectivoD
Análise Meios-Fins
Continuando a estabelecer as pré-condições para a aplicação do operador já considerado teremos :
Sendo Obj=mesa, local(mesa,lx), e os dois livros o1 e o2: – junto (Robot,mesa) implica o uso de IR(lx)
– limpo(mesa) implica PEGAR(o1), LARGAR(o1), PEGAR(o2), LARGAR(o2).
– O algoritmo continuaria até que todas as diferenças fossem anuladas.
objectivo EMPURRAR D C início A B
19
MIA - 2005/06
• Vantagens deste algoritmo:
– Espaço de pesquisa reduzido, pois resolve um objectivo de cada vez – Bom só quando os objectivos são totalmente independentes
• Dificuldades deste algoritmo:
– Ordenação das diferenças a ser reduzidas – Uso de tabelas extensas
– Estratégias de inferência para ordenar os operadores aplicáveis
Por estas razões, o algoritmo de “Análise Meios-Fins” só é utilizado na sua forma mais pura, tal como foi descrito no “General Problem Solver” de A. Newell.
Mas está na base de muitos outros algoritmos que descrevemos
Análise Meios-Fins
Algoritmo “Análise MEIOS-FINS”
AMF(EC,EO) % EC: estado corrente ; EO: estado objectivo % 1. SE EC=EO RETORNAR
2. SENÃO
a. Seleccionar a Diferença mais importante e reduzi-la ou verificar impossibilidade
b. SE Lista de Operadores Lop=[] FALHAR c. SENÃO
Seleccionar novo Operador aplicável, O Aplicar O a EC:
Gerar descrição de O-start e O-result % Pré e pós-condições de aplicação de O %
SE Anterior AMF(EC,O-start) E Posterior AMF(O-result,EO) ENTÃO RETORNAR ([Anterior, O, Posterior])
21
MIA - 2005/06
Planeador tipo STRIPS
STRIPS é um Planeador Linear que usa:
– PILHA de Objectivos– Usa uma única PILHA, quer para Objectivos, quer para Operadores usados para os satisfazer
– É necessário:
• Base de Factos, que descreve a situação corrente • Conjunto de Operadores com as respectivas Listas:
– Pré-condições (necessário verificar-se para aplicar o operador) – Junte e Apague (efeitos do operador)
Planeador tipo STRIPS
Técnicas para tornar mais eficiente o algoritmo:
– Detecção de "folhas mortas“. Chegados a estados dos quais não se pode atingir o objectivo, retrocede-se.
– Cortar passos que se afastam da solução (isto em encadeamento directo). Por ex:
• Se se juntar sub-objectivos incompatíveis com outros
• Se para resolver A é preciso resolver B, C, e de novo A (ciclos)
– Se os problemas são "quase decomponíveis", podemos assumir a decomponibilidade e resolver. Comparar a solução encontrada com o objectivo. Anular a diferença se ela for menor que a inicial.
– Adiar as possíveis incompatibilidades não as especificando senão no fim (técnica do “least commitment”)
23
MIA - 2005/06
STRIPS(eInicial,objectivos)
estado=eInicial ; plano=[] ; pilha=[] Colocar objectivos na pilha Repetir até pilha vazia
SE topo_da_pilha=objectivo unificável com estado ENTÃO retirar da pilha
SENÃO SE topo_da_pilha é objectivo composto
ENTÃO ordenar sub-objectivos e colocá-los na pilha SENÃO SE topo_da_pilha é objectivo simples
ENTÃO escolher operador op cuja lista junte unifica com objectivo substituir objectivo pelo operador op
coloque pré-condições de op na pilha SENÃO SE topo_da_pilha é operador
retire operador
estado = aplicar(operador,estado) plano = [plano,op]
Planeador tipo STRIPS
Ex: mundo dos blocosEsquemas de Operadores – PEGAR_da_mesa(Obj)
• Pré-Condições: bloco(Obj), braco_vazio, limpo(Obj), em(Obj,mesa) • Junte: segura(Obj)
• Apague: braco_vazio, em(Obj,mesa)
– RETIRAR_de_outro_bloco(Obj)
• Pré-Condições: bloco(Obj), braco_vazio, limpo(Obj), em(Obj,Obj2), bloco(Obj2) • Junte: segura(Obj), limpo(Obj2)
25
MIA - 2005/06
Planeador tipo STRIPS
Ex: mundo dos blocosEsquemas de Operadores – LARGAR_na_mesa(Obj)
• Pré-Condições: bloco(Obj), segura(Obj) • Junte: braco_vazio, em(Obj,mesa) • Apague: segura(Obj)
– EMPILHAR(Obj,Obj2)
• Pré-Condições: bloco(Obj), segura(Obj), bloco(Obj2), limpo(Obj2) • Junte: braco_vazio, em(Obj,Obj2)
• Apague: segura(Obj), limpo(Obj2)
Planeador tipo STRIPS
B A C D C A B D Início Objectivo Modelo do Mundo: em(B,A) E na_mesa(C) E na_mesa(D) E na_mesa(A) E braco_vazio
Pilha dos Objectivos:
em(C,A) E em (B,D) E na_mesa(A) E na_mesa(D) em(C,A) E em(B,D) E na_mesa(A) E na_mesa(D) em(B,D) em(C,A) em(C,A) E em(B,D) E na_mesa(A) E na_mesa(D) em(C,A) em(B,D)
27 MIA - 2005/06 em(C,A) -> EMPILHAR(C,A) em(C,A) E em(B,D) E na_mesa(A) E na_mesa(D) em(B,D) EMPILHAR(C,A) segura(C) limpo(A) E segura(C) limpo(A) em(C,A) E em(B,D) E na_mesa(A) E na_mesa(D) em(B,D) EMPILHAR(C,A) segura(C) limpo(A) E segura(C) RETIRAR(x,A)
em(X,A) E limpo(X) E braco_vazio braco_vazio
limpo(x) em(x,A)
limpo(A) é verdadeiro? Não! Operador a usar: RETIRAR(x,A) • em(X,A) é em(B,A) na BD
• limpo(B)? Axioma de Enquadramento, se nada em B então limpo(B) • braco_vazio é verdade
Planeador tipo STRIPS
– A consideração de uma posição na PILHA com a conjunção de todas as condições que depois aparecem isoladamente noutras posições não é supérflua. – Devemos testar as combinações dos sub-objectivos como precaução.
– Poderia acontecer que ao satisfazer um sub-objectivo se tivesse desfeito outro. – No caso que estamos a ilustrar não é o que se passa.
29
MIA - 2005/06
Planeador tipo STRIPS
em(C,A) E em(B,D) E na_mesa(A) E na_mesa(D) em(B,D) EMPILHAR(C,A) retirar(B,A) limpo(A) E segura(C)
Estado actual: As pré-condições do operador são aplicáveis, logo
cria-se novo Modelo do Mundo com as listas Junte e Apague do operador RETIRAR(B,A)
Modelo do Mundo:
segura(B) E limpo(A) E
na_mesa(A) E na_mesa(D) E na_mesa(C)
em(C,A) E em(B,D) E na_mesa(A) E na_mesa(D) em(B,D) EMPILHAR(C,A) segura(C) limpo(A) E segura(C)
para resolver segura(C), duas hipóteses: 1ª : PEGAR(C)
2ª : RETIRAR(C,x)
Planeador tipo STRIPS
Sem olhar à frente (“look ahead”) criamos duas possíveis pilhas:
em(C,A) E em(B,D) E na_mesa(A) E na_mesa(D) em(B,D) EMPILHAR(C,A) braco_vazio E limpo(C) E na_mesa(C) limpo(A) E segura(C) PEGAR(C) limpo(C) braco_vazio na_mesa(C) em(C,A) E em(B,D) E na_mesa(A) E na_mesa(D) em(B,D) EMPILHAR(C,A) braco_vazio E em(C,x) E limpo(C) limpo(A) E segura(C) RETIRAR(C,x) limpo(C) braco_vazio em(C,x) 1ª hipótese 2ª hipótese
31
MIA - 2005/06
– Comparando os Objectivos com a Base de Factos, é preferível a 1ª hipótese porque: na_mesa(C) é verdade
– Optando pela 2ª hipótese teríamos que garantir em(C,X), o que implicava
EMPILHAR(C,x)
– Nas pré-condições deste operador existe segura(C) que é precisamente o que estamos a tentar resolver (ciclo)
Na 1ª hipótese:
– na_mesa(C) E limpo(C) são verdadeiros
– braco_vazio não é verdadeiro porque é verdadeiro seguro(B). – Podemos então usar 2 operadores cujo resultado é braco_vazio:
EMPILHAR(Y, X) ou POUSAR(Y).
Planeador tipo STRIPS
– Olhando “à frente" queremos em(B,D), logo é mais eficiente seleccionar: EMPILHAR(X,Y) com X=B e Y=D
– Como poderá o algoritmo descobrir qual seleccionar?
• Compara as listas Junte dos dois operadores com os objectivos na PILHA, e escolhe o que resolvia um deles.
33
MIA - 2005/06
Planeador tipo STRIPS
em(C,A) E em(B,D) E na_mesa(A) E na_mesa(D) em(B,D) EMPILHAR(C,A) braco_vazio E limpo(C) E na_mesa(C) limpo(A) E segura(C) PEGAR(C) limpo(D) E segura(B) EMPILHAR(B,D) segura(B) Nova situação da PILHA:
limpo(D) limpo(D) E segura(B) verdadeirosimplica 2ºoperador : EMPILHAR(B,D)
Novo Modelo do Mundo: na_mesa(A) E na_mesa(C) E na_mesa(D) E em(B,D) E braco_vazio
Planeador tipo STRIPS
Todas as pré-condições de PEGAR(C) são verdadeiras, então 3ºOperador: PEGAR(C)
Todas as pré-condições de EMPILHAR(C, A) são verdadeiras, então 4ºOperador : EMPILHAR(C, A)
O 2ºObjectivo: em(B, D) já tinha sido satisfeito. Finamente testar o objectivo conjunto.
O Gerador Automático de Planos retorna então: RETIRAR(B,A)
EMPILHAR(B,D) PEGAR(C) EMPILHAR(C,A)
Usaram-se heurísticas para detectar passos incorrectos e interacção entre objectivos. Mas infelizmente esta técnica não é eficaz em muitos casos...
35
MIA - 2005/06
Planeador STRIPS
– Vantagens:• Espaço de pesquisa reduzido (um objectivo de cada vez) • Bom se os objectivos são independentes
• Planeamento Linear é um algoritmo Correcto
– Desvantagens:
• Pode produzir soluções sub-óptimas • Planeamento Linear é não Completo
Planeador tipo STRIPS
Modelo do Mundo: em(C,A) E na_mesa(A) E na_mesa(B) E braco_vazio 1ª hipótese: em(B,C) em(A,B) em(A,B) E em(B,C) 2ª hipótese: em(A,B) em(B,C) em(B,C) E em(A,B)
Problema mal resolvido por Planeadores Lineares:
B Início A C Objectivo C B A
37
MIA - 2005/06
Planeador tipo STRIPS
em(B,C) EMPILHAR(A,B) limpo(B) E segura(A) PEGAR(A) em(A,B) E em(B,C) braco_vazio limpo(x) E braco_vazio E em(X,A) braco_vazio limpo(x), x=C RETIRAR(x,A) limpo(A) E braco_vazio em(x,A), x=C limpo(x), x=C verdade verdade verdade executa verdade 1ºOPERADOR: RETIRAR(C,A)
optando pela 1ª hipótese
B A
C
verdade
Planeador tipo STRIPS
Para tornar verdadeiro braco_vazio é necessário executar POUSAR(C) Então retira da pilha braco_vazio até em(B,C) 2ºOPERADOR: POUSAR(C) 3ºOPERADOR: PEGAR(A) 4ºOPERADOR: EMPILHAR(A,B) B A C Modelo do mundo: na_mesa(B) E em(A,B) E na_mesa(C) E braco_vazio39
MIA - 2005/06
EMPILHAR(B,C), o que implica:
5ºOPERADOR: RETIRAR(A,B) 6ºOPERADOR: POUSAR(A) 7ºOPERADOR: PEGAR(B) 8ºOPERADOR: EMPILHAR(B,C) e finalmente: 9ºOPERADOR: PEGAR(A) 10ºOPERADOR: EMPILHAR(A,B)
Resolveu... mas é muito ineficiente. O mesmo se verificaria se a ordem dos sub-objectivos fosse alterada.
B A C
Planeador tipo STRIPS
Como resolver esta ineficiência?
Há duas hipóteses de solução:
– Obter um plano (como anteriormente) e depois retirar todas as acções do plano que imediatamente a seguir são desfeitas.
Para o exemplo anterior, deve cortar-se o operador 4 com 5, e depois o 3 com 6. Mas em tarefas complexas pode ser difícil e perde-se tempo a computar um plano complexo que depois se desperdiça, pois se deve simplificar.
– Construir directamente um plano mais eficiente.
Seguem-se agoras algumas técnicas de planeamento que tentam responder a estes problemas