Planejamento Baseado em Casos PCS 5740 - Projeto de curso Júlio Monteiro e Luis Alves Ferreira 1.0 Introdução No trabalho esperamos praticar o Planning através de um descritor de receitas de coquetéis para um bartender. O programa em Prolog a ser feito engloba um conjunto de problemas difíceis: 1. como guardar planos específicos de experiências de solução de problemas, 2. como definir e decidir quando duas situações envolvendo a solução de problemas são semelhantes, 3. como organizar grandes quantidades de planos de modo a recuperá-loa eficazmente, e 4. como transferir uma sequência de experiências de planos armazenados para novos planos quando somente uma parcela das características dos problemas coincide. Sabemos não ser possível implementar um método genérico no período de realização da disciplina, mas pretendemos implementar algo em domínio restrito e que tenha baixa complexidade. 1.1 Planning O planejamento baseado em casos é uma abordagem interessante na área, que interpreta o planejamento como uma função da memória, ou seja, através de uma memória de casos indexada. Dessa forma, o agente planejador é capaz de localizar os melhores planos de ação utilizando um algorítimo de busca. Ao selecionar um plano indexado pelos objetivos que ele satisfaz, buscando o que solucionar o maior número de objetivos, o planejador irá 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 algumas vezes o novo plano pode não funcionar como o previsto, então o planejador deve 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. 1.2 O Programa Como aplicação exemplo desta teoria estaremos desenvolvendo um planejador baseado em casos, utilizando a linguagem PROLOG, que irá modelar um bartender automático Planejamento Baseado em Casos 27 de Outubro de 2000 1
que prepara bebidas de acordo com receitas (ou planos) previamente conhecidos, e que pode desenvolver novas receitas para satisfazer aos seus clientes. 2.0 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. 3.0 Metodologia 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.1 Conceituação Lista inicial de elementos que compõe o universo de um bar: 1. 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. Planejamento Baseado em Casos 27 de Outubro de 2000 2
2. Essências Benedictine, Campari, Chartreuse, Cointreau, Creme de Cacao, Grand Marnier, Marschino, Orange Curaçao, Pernod, Triple Sec 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. 3. 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. 4. 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. 5. 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. 6. Mixers Club Soda, Cola, Ginger Ale, Soda, Água Tônica Bebidas gaseificadas (carbonadas) que compõe o drink. 7. Xaropes Groselha, Falerno, Orchata Concentrados com alto teor de açucar, que podem ser considerados revigorantes não alcoólicos. 8. 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). 3.1.1 Ingr edientes básicos para um bar Misturador, dois copos grandes, copos de servir, palitos, guardanapos, água, gelo, cervejas, e os ingredientes descritos acima. As características dos ingredientes podem ser: doce ou amargo, seco ou encorpado, com álcool ou sem álcool, refrescante ou forte, gelado ou sem gelo. Aguardente (amargo, encorpado, com álcool, forte, _) Planejamento Baseado em Casos 27 de Outubro de 2000 3
3.1.2 Receitas clássicas 3-5 receitas clássicas para compor a memória inicial de planos 3.1.3 Misturas a e vitar, pr ecauções a tomar Destacar as receitas a serem evitadas. Essas regras serão utilizadas pelo Evaluator antes da entrega da bebida. 3.1.4 Regras de mudança na pr eparação de bebidas Regras utilizadas pelo Modifier para alterar planos de forma a cumprir todos os objetivos da descrição. 3.2 Interpretação Escrever as cláusulas em prolog 3.2.1 P assos / v erbos / ações Identificação dos passos intermediários para se preparar receitas de drinks. Por exemplo, adicionar(), misturar() 1, mexer() 2 e servir() 3.3 Cronograma Previsto A seguir, cronograma semanal de atividades para o desenvolvimento do projeto. Semana 1 - conceituação teórica, sem implementação Semana 2 - implementação em prolog, conceituação e memória de planos Semana 3 - implementação em prolog, retriever e modifier Semana 4 - implementação em prolog, evaluator Semana 5 - testes 1. no misturador 2. com colher Planejamento Baseado em Casos 27 de Outubro de 2000 4
4.0 Resultados Esperados Um algortimo que monte receitas de bebidas a partir de objetivos a serem alcançados pelas bebidas. 5.0 Bibliografia PROLOG Programming For Artificial Intelligence, Ivan Bratko, second edition Planejamento Baseado em Casos 27 de Outubro de 2000 5