Planejamento Baseado em Casos I. Introdução PCS 5740 - Projeto de curso Júlio Monteiro e Luis Alves Ferreira a realidade toma forma apenas na memória, Marcel Proust, Na busca do tempo perdido. A capacidade de planejamento é um comportamento característico do ser inteligente, permitindo prever situações e gerar ações correspondentes no mundo real com base em seu conhecimento atual. Esta atividade requer uma série de funções complexas, que vão desde representar o conhecimento de maneira eficiente até a capacidade de localizar os motivos de uma falha. Das várias abordagens de planejamento em IA, o planejamento baseado em casos, obtém uma grande eficiência lidando com um grau elevado de complexidade. Um paradigma de raciocínio alternativo aos sistemas especialistas (ou sistemas baseado em conhecimento) e, portanto, um novo método computacional para a solução de problemas tem, cada vez mais, chamado a atenção. CBR (case-based reasoning) resolve novos problemas adaptando soluções bem--sucedidas de problemas semelhantes. O CBR é uma evolução em relação aos sistemas especialistas, pois: não requer um modelo explícito de domínio, mas sim a coleta de casos a implementação está na identificação de características relevantes que descrevem um caso usa técnicas de bando de dados o sistema aprende pelo conhecimento adquirido com novos casos Este trabalho apresenta uma visão do planejamento baseado em casos formada durante a pesquisa para o desenvolvimento de um planejador de receitas de bebidas em Prolog. A primeira parte situa o planejamento dentro da inteligência artificial, fazendo uma apresentação didática de conceitos. Em seguida é apresentado o trabalho realizado em Prolog, os resultados alcançados e as dificuldades na implementação. II. Planning Planning é o termo utilizado em IA para designar mecanismos que traçam caminhos para algum objetivo. Na busca de um solucionador genérico de problemas, foram feitas algumas formulaçõs na tentativa de alcançar este objetivo: Planejamento lógico Planejamento baseado em operadores Planejamento baseado em tempo Planejamento baseado em casos Planejamento baseado em restrições Planejamento distribuído Página 1 de 12
Planejamento reativo A. Planejamento lógico O acúmulo de experiências utilizado na formulação de planos de ação em situações onde as informações são incompletas [Genesereth 86]. σ Γ ρ i Planejador (planner) γ Executor Ω g Considerando σ como um estado inicial ρ como objetivos (goals) Γ como ações (conjunto de operadores da conceituação) Ω como o conjunto de sentenças sobre o estado inicial O planejador vai tentar gerar um plano γ que, quando executado a partir de estado satisfazendo a descrição do estado inicial, vai levar a um estado satisfazendo a descrição do estado objetivo. A apresentação do contexto leva a diferentes tipos de problemas de planejamento: 1. Problema de cenário (Frame Problem) Após dirigir seu carro quatro portas do ponto A para o ponto B Qual é a cor do carro? Quantas portas ele têm? etc. 2. Problema de qualificação Se girar a chave na ignição de seu carro o motor vai pegar... a menos que a bateria não esteja descarregada... ou a gasolina não tiver acabado... ou não tenha uma batata no escapamento... etc. 3. Problema de ramificação Se dirigir seu carro do ponto A para o B, então como resultado o carro agora está em B... assim como seu motor... seus pneus... Página 2 de 12
etc. B. Planejamento baseado em operador es As açõs são representadas por operadores, também chamada de abordagem STRIPS, utiliza vários esquemas de operadores e representações de planos. O problema de cenário (frame problem) pode ser esolvido utilizando-se a abordagem STRIPS. Os pontos principais a serem considerados são: 1. Esquema de operadores Listas de adição e deleção, representações procedurais vs. declarativas Página 3 de 12
2. Representações dos planos Planos lineares, planos não lineares, planos hierárquicos, planos parcialmente ordenados, planos condicionais 3. Algoritmos de planejamento Planejamento como busca, world-space vs. plan-space, planejamento do orden parcial, planejamtento de ordem total, progressão, regressão do objetivo A complexidade computacional do planejamento. 4. Crítica de planos Reformulação de planos, conserto, ordem total O STRIPS é um exemplo de planejamento que combina a busca heurística no espaço de busca e resolução. C. Algoritmos de planejamento É o planejamento como busca. Existem duas abordagens: Busca no world-space cada nó do grafo representa um estado no mundo. Arcos do grafo correspondem à execução de uma ação específica. O problema de planejamento é achar um caminho do estado inicial para o estdo objetivo. Existem dois algoritmos: Progressão: um algoritmo que busca pelo estado objetivo através dos estados gerados pelas ações que podem ser realizadas em um dado estado, iniciando pelo estado inicial. Regressão: um algoritmo que busca a partir do estado objetivo identificando aquelas ações cujo efeito satisfazem um ou mais objetivos atingidos, e assumindo as condições para tais ações como objetivos (regressão de objetivos). Ambos algoritmos são corretos (sound se um plano é produzido, ele funciona) e completos (se um plano existir, o algoritmo será capaz de achá-lo). Na maioria das situações a regressão se mostra a melhor estratégia. Busca no espaço de planos (plan space) cada nó do grafo representa planos parciais. Arcos representam operações de refinamento no plano. A busca por um plano pode ser feita com uma sequência ordenada de ações (total order planning), ou um plano com um conjunto parcial de ações ordenadas (partial order planning, POP) a) Partial order planning, POP Um plano parcialmente ordenado tem três componentes:. Um conjunto de ações, por exemplo: {tomar-café-da-manhã, tomar-banho, acordar, ir-para-o-trabalho}. Um conjunto de restrições de ordenamento, por exemplo: {acordar antes de tomar-café-da-manhã, acordar antes de tomar-banho, Página 4 de 12
acordar antes de ir-para-o-trabalho, tomar-banho antes de ir-para-o-trabalho}. Um conjunto de vínculos causais, por exemplo: acordar -- acordado --> tomar-café-da-manhã é um vínculo entre as duas atividades. Quando a atividade acordar é adicionada ao plano, o vínculo causal é gravado juntamente com as restrições de ordenamento. Vínculos causais ajudam na identificação de inconsistências sempre que um plano parcial é definido. D. Planejamento baseado em casos Dados um novo problema, um objetivo, uma descrição do estdo inicial, procurar na biblioteca de casos por problemas semelhantes, com estados inicial e objetivo semelhantes. Modificar o plano recuperado para adequá-lo ao novo problema. O sucesso depende da identificaçãos de boas métricas de similaridade. E. Repr esentação de casos Como já foi mencionado, o primeiro sistema que passou a ser chamado de planejador baseado em casos foi o sistema CYRUS, de Kolodner, utilizou o modelo de memória dinâmica de Schank. Neste modelo a memória de casos é uma estrutura hierárquica do que se chama E-MOPS episodic memory organization packets. A idéia básica é organizar casos especifícos que compartilhem propriedades semelhantes em uma estrutura mais geral um episódio genérico (EG). Um episódio genérico contém três tipos de objetos: Nomras, casos e índices. Normas são características comuns a todos casos indexados sobre um EG. Índices são características que diferenciam os casos entre diferentes EGs. Página 5 de 12
Um índice pode apontar para um EG mais específico, ou diretamente para um caso. Um índice é composto por dois termos: um nome e um valor. III. Planejador de Receitas de Bebidas O modelo utilizado na implementação de um planner em PROLOG foi o seguinte, onde, O usuário elicita características de uma bebida (problema); Página 6 de 12
O recuperador identifica o sub conjunto próprio de planos passados que têm semelhança com o novo caso e escolhe um que julgar o mais semelhante; O novo caso e o mais semelhante encontrado na memória de casos são entregueas ao modificador para a geração de um plano (solução). O novo plano é entregue ao avaliador para testar se cumpre os objetivos propostos. Caso o plano atinja os objetivos ele é guardado como um caso passado. O caso do plano ruim não foi tratado. A complexidade de identificar o por que de um plano falhar foi deixada para uma possível continuidade deste trabalho, a elaboração do reparador de planos (repairer). A. Uma pr oposta de bartender O planejamento baseado em casos é um abordagem de inteligência artificial que interpreta o planejamento como uma função da memória, ou seja, através de uma memória de casos. A forma como esta memória é indexada define como vai funcionar o algoritmo do recuperador de planos, e como faz para localizar os melhores planos de ação. O primeiro passo é separar, dentre o universo de casos passados, aqueles cuja solicitação inicial têm semelhanças com a nova solicitação. O plano que atingir o maior número de objetivos é, então, escolhido como sendo a melhor aproximação de solução encontrada. A forma como se seleciona um plano está ligada aos objetivos que satisfaz, buscando o que apresentar o de melhor índice de objetivos solucionados. O próximo passo do planejador é modificar o plano de forma a resolver totalmente a situação atual. Uma vez que este novo plano seja gerado e executado, ele é inserido novamente na memória de casos. Porém, nas situações onde o novo plano não funcionar como previsto, o planejador deveria ser capaz de avaliar o plano de forma a encontrar os motivos da falha do plano e então consertá-lo, ou mesmo elaborar uma nova visão do mundo com base nos novos dados. B. O Pr ograma Como aplicação exemplo desta teoria implementou-se um planejador baseado em casos, utilizando a linguagem PROLOG, que pretendeu modelar um bartender automático, que propõe receitas de bebidas de acordo com receitas previamente conhecidas, e que pode desenvolver novas receitas para atender os pedidos que recebe. 1. Objetivos do Projeto Em princípio, este planejador não deve ser capaz de consertar planos falhos, mas irá reformular sua visão do mundo com base em experiências erradas. 2. Metodologia Página 7 de 12
Vamos criar um planejador baseado em casos composto dos seguintes módulos: 1. retriever recupera um plano não ruim, dentre os armazenados, que satisfaça o maior número de objetivos. 2. modifier no caso de o plano recuperado pelo retriever não atender a todos objetivos, este módulo altera o plano de forma a cobrir os objetivos faltantes. A seguir, vai compará-lo com os planos na memória para saber se o plano é ruim. Sendo ruim, descarta a modificação e utiliza outra regra. Se acabarem as regras desiste. 3. evaluator executa o plano passo-a-passo para verificar se os objetivos são atingidos. No caso de identificar alguma restrição durante a execução, marca o plano como ruim armazenando-o na memória de planos. No caso de não haver restrições armazena o plano e entrega-o como solução. descrição Retriever ❶ Plano ❷ Consulta após modificação ❸ Plano modificado ❹ Armazena plano avaliado (bom/ruim) Modifier Evaluator Memória de Casos solução 3. Conceituação A fim de descrever logicamente nosso universo de discursso, entrevistamos um bartender, que nos indicou uma lista inicial de elementos que compõe o universo de um bar, e o conjunto mínimo de ferramentas utilizadas na preparação de bebidas. Identifica-se oito grupos de ingredientes, descritos a seguir com exemplos e comentários. Os comentários ajudam na definição de parâmetros de predicados de ingredientes e bebidas. Aguardentes Bourbon, Brandy, Gin, Rum, Scoth, Tequila, Vodka, Whiskey, Whisky Bebida destilada a partir de líquido fementado e que tem alto teor alcoólico. Essências Benedictine, Campari, Chartreuse, Cointreau, Creme de Cacao, Grand Marnier, Marschino, Orange Curaçao, Pernod, Triple Sec Página 8 de 12
Licores e revigorantes doces e de cores fortes, consumidos puros após refeições, também utilizado como especiaria mem coquetéis. São feitos adicionando-se essências a bebidas alcoólicas como o Brandy e Whiskey, ou alcoólico neutro como a Vodka. Vinhos Vinho Branco, Champagne, Vermouth Doce, Lillet, Porto, Sherry, Vinhot Tinto, Vermouth Seco De modo geral não devem ser misturados a outras bebidas alvcoólicas. Especiarias Angostura Bitters, Horseradish, Orange Bitters, Peach Bitters, Pepper, Peychaud Bitters, Sal, Tabasco, Worcestershire Tudo que não se enquadra em outras categorias entra aqui como especiaria. Sucos Suco de Morango, Suco de Limão, Suco de Laranja Muitos coquetéis incluem algum tipo de suco de frutas. O mais comum é o limão, mas muitos são necessários par aum bar decente. Mixers Club Soda, Cola, Ginger Ale, Soda, Água Tônica Bebidas gaseificadas (carbonadas) que compõe o drink. Xaropes Groselha, Falerno, Orchata Concentrados com alto teor de açucar, que podem ser considerados revigorantes não alcoólicos. Guarnições Azeitona, Rodela de Limão, Casca de Limão, Cereja, Cebola Picada, Fatia de Laranja A confecção adequada da maioria das bebidas inclui alguma guarnição que finaliza o drink. Pode ser puramente decorativo(como a rodela de limão), ou para ser apreciado enquanto se toma a bebida (como a azeitona). Página 9 de 12
Ferramentas básicas para se ter em um bar Com uma colher (para pegar uma azeitona no vidro, dosar o uísque no café) e as ferramentas acima compõe o conjunto mínimo de artefatos de um bar. Além dos copos de servir, palitos para mexer e gelo. Receitas clássicas Caipirinha, Cuba Libre, Manhatan, Martini foram as receitas escolhidas. Completa a coca com gelo e limão. a) Ingredientes escolhidos Partindo das receitas escolhidas, os ingredientes utilizados em seu preparo são os seguintes: refrigerantes (cola), aguardentes (rum, gim, whiskey e cachaça), vinhos (vermout doce), sucos (limão), especiarias (angostura), guarnições (azeitona e casca de limão). b) Restrições Não misturar vinhos com aguradentes. c) Regras de mudança na preparação de bebidas Incluir ingrediente que proporciona uma, ou mais, das características desejadas. 4. Interpretação Convertendo o problema no domínio selecionado em sentenças lógicas, foi possível escrever um programa na linguagem PROLOG capaz de: a) Recuperar planos indexados na memória de casos b) Propor uma solução baseado no plano encontrado pela busca c) Verificar a validade do plano criado considerando sua visão de mundo d) Indexar o novo plano, marcando-o como inválido, se este for o caso Para consultar a listagem da implementação em prolog, consulte o apêndice. Página 10 de 12
IV. Resultados alcançados Observou-se que, se a memória de planos contiver todas as receitas conhecidas por uma barman convencional, a grande maioria dos novos problemas vão se encaixar nos casos anteriores [Hammond 89]. Desta forma o planejamento se torna eficiente, pois uma busca indexada na memória de casos vai retornar uma solução adequada. Caso haja necessidade de alterar um plano o procedimento é mais trabalhoso. Isto se deve ao fato de que se deve testar o plano alterado para verificar se funciona. É importante ressaltar que, no caso de o plano ser falho, vai ser entregue ao usuário da mesma forma. Porém, é armazenado na memória como um plano ruim, evitando que o erro se repita. A. Utilização do pr ograma em Pr olog As perguntas feitas na forma: order(carac1, carac2, caracn, X). Têm como resposta um nome de bebida, que pode ser uma bebida pré-existente, ou uma bebida modificada de acordo com os objetivos que deve alcançar. Assim, a pergunta acima pode gerar uma resposta na seguinte forma: X = caipirinha. Se caipirinha atinje todos os objetivos colocados pelo usuário. Ou, então, X = caipirinha1 se a resposta foi alcançada alterando-se a receita de uma bebida existente. V. Problemas na implementação Encontramos dificuldade de ao tentar uma implementação genérica em PROLOG. Por exemplo, a definição de um predicado para a cópia de um átomo não é possível em lógica de primeira ordem, pois trata-se de metalógica. Assim, deve-se recorrer a predicados disponíveis no sistema. O problema está justamente ai: ao se recorrer a predicados de sistema perde-se a portabilidade da implementação entre os diversos interpretadores PROLOG existentes. A utilização da ferramenta demonstrou que melhorias podem ser feitas em seus recursos de depuração de código (principalmente quanto a depuração de código recursivo). Um outro problema vivenciado, este mais sútil, foi a dificuldade de racicionar em lógica. Quando se está acostumado a pensar de modo algoritimico (procedimentos) é preciso alterar o paradigma de programação antes de se usar um sistema como, por exemplo, o PROLOG. VI. Bibliografia [Genesereth 86] Michael R. Genesereth e Nils J. Nilsson, Logical Foundations of Artificial Intelligence, Stanford University, Morgan Kaufmann Publishers, 1986 [Hammond 89] Kristian J. Hammond, Case-Based Planning: Viewing Planning as a Memory Task, Perspectives in Artificial Intelligence, Vol. 1, Prentice Hall, 1989. Página 11 de 12
[Bratko 90] Ivan Bratko, PROLOG Programming For Artificial Intelligence, second edition, 1990 [Schank 82] Robert Schank, Dynamic Memory: a Theory of Remiding and Learning in Computers and People, Cambridge University Press, 1982. [Kolodner 83a] Janet Kolodner, Maintaining Organization in a Dynamic Longterm Memory, Cognitive Science, vol. 7, pgs. 243-280, 1983. [Kolodner 83b] Janet Kolodner, Reconstructive Memory, a computer model, Cognitive Science, vol. 7, pgs. 281-328, 1983. [Porter 86] Bruce Porter e R. Bareiss, PROTOS: An Experiment in Knowlodge Acquisition for Heuristic classification tasks, Proceeding of the First International Meeting on Advances in Learning (IMAL), Les Arcs, France, pgs. 159-174, 1986. Página 12 de 12