Baixe o app para aproveitar ainda mais
Prévia do material em texto
SISTEMAS DE PRODUÇÃO Patrick Henry Winston “Artificial Intelligence” – 3ª ed. – cap. 7 1 REGRAS DE PRODUÇÃO 2 l Inventada em 1943 por Post l Usa regra formada por pares de condição-ação se condição (ou premissa ou antecedente) ocorre; então ação (resultado, conclusão ou consequente) ocorre l Podem ser vistas como uma simulação do comportamento cognitivo de especialistas humanos l Representam o conhecimento de forma modular l Cada regra representa um “pedaço” de conhecimento independente (mas a consistência deve ser mantida) l Exemplo: se o sinal está vermelho e os carros estão parados então você pode atravessar a rua SISTEMAS DE PRODUÇÃO 3 l São sistemas baseados em regras de produção l Características: l Separam o conhecimento permanente do conhecimento temporário (base de regras e memória de trabalho) l Seus módulos são estruturalmente independentes l Sua modularidade facilita a independência funcional l Podem utilizar uma variedade de esquemas de controle l Regras de produção X Máquina de Turing l Os sistema de produção têm o mesmo poder de uma máquina de Turing (i.e. podem representar tudo que é computável) SISTEMAS DE PRODUÇÃO COMPONENTES 4 : consiste em uma coleção de assertivas : consiste de conjunto de sentenças (regras de inferência) que determinam as ações (consequentes) que devem ser tomadas de acordo com as percepções (antecedentes) p1 ∧ p2 ∧ … ⇒ act1 ∧ act2 ∧ … : é a parte do sistema que determina o método de raciocínio, utiliza estratégias de busca e resolve conflitos SISTEMAS DE PRODUÇÃO COMPONENTES 5 TIPOS DE SISTEMAS DE PRODUÇÃO l : se antecedente então consequente l Todas as regras que estão habilitadas podem disparar gerando novas asserções na memória de trabalho l : se condição então ação l Exemplo: l se custo < 10 então “Coloque o item na sacola” l Quando mais de uma regra está habilitada, normalmente somente uma das ações é desejada l Deve existir uma forma de resolver os conflitos entre as diferentes regras que estejam habilitadas em cada ciclo SISTEMAS DE PRODUÇÃO FUNCIONAMENTO GERAL 7 l O sistema examina todas os antecedentes das regras baseado na memória de trabalho para determinar o subconjunto de (aquelas que tiveram seu precedente/condições satisfeitos) l O sistema dispara a(s) regra(s) do subconjunto que foram habilitada(s): l Em sistemas todas as regras são disparadas l Em sistemas este subconjunto é denominado conjunto de conflito e somente uma das regras é disparada l A regra disparada é escolhida de acordo com uma l O(s) consequente(s) da(s) regra(s) são executados l Estas ações podem modificar a memória de trabalho, ou a base de regras, executar qualquer tarefa externa ao sistema. l O loop de disparar regras e executar ações continua até que l Nenhuma regra que pode ser habilitada ou l Uma ação determine que o programa deve parar ZOOKEEPER: Um Sistema Dedutivo que Identifica Animais l Características do ZOOKEEPER: l Utiliza regras sem antecedentes longos l Gera assertivas intermediárias como saídas das regras l Combina estas assertivas e aquelas originais para produzir uma conclusão l Observa hábitos e características físicas para identificar os animais l Neste exemplo, pode distinguir quatro animais: leopardo, tigre, girafa e zebra. Regras do ZOOKEEPER Regra Z1 se ?x tem cabelo então ?x é um mamífero l Regra que observa características físicas. Regra Z2 se ?x dá leite então ?x é um mamífero l Regra que determina a classe biológica dos animais, onde Z2 observa hábitos. Regras do ZOOKEEPER Regra Z3 se ?x é um mamífero ?x come carne então ?x é um carnívoro Regra Z4 se ?x é um mamífero ?x tem dentes pontudos ?x tem garras ?x tem olhos pontiagudos então ?x é um carnívoro l As regras determinam se o animal é carnívoro. l Z3 observa hábitos e Z4 observa características físicas. l Estas regras já utilizam assertivas geradas por regras anteriormente definidas Regras do ZOOKEEPER Regra Z5 se ?x é um mamífero ?x tem cascos então ?x é um ungulado Regra Z6 se ?x é um mamífero ?x rumina então ?x é um ungulado l As regras determinam se o animal é ungulado l Z5 observa características físicas e Z6 observa hábitos Regras do ZOOKEEPER Regra Z7 se ?x é um carnívoro ?x tem cor amarela tostada ?x tem manchas escuras então ?x é um leopardo Regra Z8 se ?x é um carnívoro ?x tem cor amarela tostada ?x tem listas pretas então ?x é um tigre l Regras para identificar os animais carnívoros Regras do ZOOKEEPER Regra Z9 se ?x é um ungulado ?x tem pernas longas ?x tem pescoço comprido ?x tem cor amarela tostada ?x tem manchas escuras então ?x é uma girafa Regra Z10 se ?x é um ungulado ?x tem cor branca ?x tem listas pretas então ?x é uma zebra l Regras para identificar os animais ungulados. Encadeamento para-frente no ZOOKEEPER l Para identificar um animal com o ZOOKEEPER repita: para cada regra tente casar cada um dos antecedentes das regras com os fatos conhecidos se todos os antecedentes de regras estão casados (regra habilitada), então execute o consequente, a menos que já exista uma assertiva idêntica repita para todas as alternativas de casamento e instanciações l Até as regras não produzirem novas assertivas ou l Até o animal ser identificado Memória de trabalho para o Zookeeper: exemplo l Catatau tem cabelo l Catatau rumina l Catatau tem pernas longas l Catatau tem cor amarela tostada l Catatau tem pescoço comprido l Catatau tem manchas escuras Classificar Catatau – encadeamento para- frente l Verificar que tipo de animal é Catatau l : l Catatau tem cabelo, logo é um mamífero (dispara Z1) l Catatau rumina e é um mamífero, logo é um ungulado (dispara Z6) l Catatau é um ungulado, tem pernas longas, tem cor amarela tostada, tem pescoço comprido e tem manchas escuras, logo é uma girafa (dispara Z9) Encadeamento para-frente l O fluxo de informações se dá através de uma série de regras antecedente-consequente, a partir das assertivas para as conclusões l Exemplo: problema de diagnosticar uma doença com base nos sintomas (memória de trabalho) Encadeamento para-trás l Para identificar um animal com o ZOOKEEPER repita: para cada hipótese para cada regra que o consequente case com a hipótese corrente tente suportar cada um dos antecedentes da regra com os fatos da memória de trabalho ou por encadeamento para-trás por meio de outra regra criando uma nova hipótese. tenha certeza de testar todas as alternativas de casamentos e instanciações. se todos os antecedentes da regra são suportados, então conclua que a hipótese é verdadeira. l Até que todas as hipóteses tenham sido testadas e nenhuma delas tenha sido suportada ou l Até que o animal ser identificado. Encadeamento para-trás l Devemos formular uma hipótese e usar as regras antecedente- consequente de trás para frente para suportá-la l Por exemplo, com a mesma base de regras o ZOOKEEPER pode formular a hipótese h = “Catatau é uma zebra” l Para verificar h devemos considerar a regra Z10, que requer queCatatau seja um ungulado, tem cor branca e listas pretas. l Devemos checar se Catatau é um ungulado. Como a memória de trabalho não suporta este fato, então formulamos h1 = “Catatau é um ungulado”. l Podemos utilizar Z5 e Z6 para provar h1. Utilizando Z5, devemos checar se Catatau é um mamífero e tem cascos. l Devemos checar se Catatau é um mamífero. Mas a memória de trabalho não suporta este fato. Então formulamos h2 = “Catatau é um mamífero”. Encadeamento para-trás l Podemos utilizar Z1 e Z2 para provar h2. Utilizando Z1, a regra requer que Catatau tenha cabelo. l De acordo com a memória de trabalho, Catatau tem cabelo, então h2 é verdadeira. Catatau é um mamífero. Voltamos então para a regra Z5. l Z5 requer que Catatau seja um mamífero e tenha cascos para ser um ungulado, mas a memória de trabalho não suporta este fato. l Então, não podemos utilizar Z5 para provar h1. Vamos tentar Z6, que requer que Catatau seja um mamífero e rumine para ser um ungulado. l Acabamos de provar h2 = “Catatau é um mamífero”. De acordo com a memória de trabalho, Catatau rumina. Então h1 é verdadeira. Catatau é um ungulado. Voltamos para a regra Z10. Encadeamento para-trás l Z10 requer que Catatau seja um ungulado, tenha cor branca e listas pretas, para ser uma zebra (h). l Os fatos “tem cor branca” e “tem listas pretas” não fazem parte da memória de trabalho e nenhuma regra da base de regras tem este fato como consequente. l Então concluímos que h não pode ser provada, e uma nova hipótese deve ser formulada e testada. l Encadeamento para-trás é utilizado quando um objetivo é especificado e devemos encontrar uma forma de alcançá-lo l Ex: Se existe uma epidemia de certa doença, podemos supor que o indivíduo tem a doença e tentar determinar se o diagnóstico está correto baseados nas informações disponíveis. Qual direção escolher? l Uma comparação entre o número de antecedentes e consequentes das regras da base pode ajudar a determinar a direção do encadeamento l Se, na média, as regras tem mais antecedentes do que consequentes, uma hipótese pode levar a muitas outras hipóteses, então é melhor fazer encadeamento para-frente. l Se, ao contrário, as regras tem mais consequentes do que antecedentes, cada fato determina muitos novos fatos ou ações, então é melhor usar encadeamento para-trás l Se nenhum dos dois é dominante, então o objetivo do sistema pode ajudar na decisão de qual direção usar no encadeamento l Se o propósito do sistema é encontrar até onde a informações da memória de trabalho pode nos conduzir, é melhor usar encadeamento para-frente l Se o objetivo é encontrar se uma das possíveis conclusões é verdadeira, é melhor usar encadeamento para-trás SISTEMAS DE PRODUÇÃO O ALGORITMO DE RETE E UM EXEMPLO DE SISTEMA REATIVO Patrick Henry Winston “Artificial Intelligence” – 3ª edição – cap. 7 23 Fase de Casamento (match) 24 l Fase que tem custo computacional muito alto com encadeamento para frente: l Examina todos os antecedentes de cada regra para determinar o subconjunto de regras no qual os antecedentes são satisfeitos pelo conteúdo atual da memória de trabalho; l Faz unificações das variáveis das regras com o conteúdo da memória de trabalho para verificar se os antecedentes das regras são satisfeitos; l Alguns melhoramentos podem ser feitos para diminuir este custo. Diminuindo o custo da fase de casamento (match) 25 l Dentre as regras que estavam habilitadas no último ciclo, somente aquelas que estão relacionadas a fatos que foram retirados da MT podem não estar habilitadas no ciclo atual. l Dentre as regras que tiveram seus antecedentes parcialmente satisfeitos no último ciclo, somente as regras possuem antecedentes relacionados com a informação que pode ter sido acrescentada à MT podem ser habilitadas em um novo ciclo. l As unificações podem ser retidas de um ciclo para outro, examinando-se apenas aquelas referentes às modificações feitas na MT pelo último ciclo. Exemplo da fase de casamento Cavalos de corrida 26 l Conteúdo da MT: l Comet é-um cavalo l Pracer é-um cavalo l Comet é-pai-de Dasher l Comet é-pai-de Pracer l Pracer é rápido l Dasher é-pai-de Thunder l Thunder é rápido l Thunder é-um cavalo l Dasher é-um cavalo Exemplo da fase de casamento Cavalos de corrida 27 l Regra para estabelecer se um cavalo é valioso: se ?x é-um cavalo e ?x é-pai-de ?y e ?y é rápido então ?x é valioso Exemplo da fase de casamento com encadeamento para frente 28 x Comet Pracer x Thunder x Dasher x y Dasher x Comet y Pracer x Comet y Thunder x Dasher y Pracer x Comet y Thunder x Dasher x x x ?y é rápido ?x é-pai-de ?y ?x é-um cavalo Exemplo da fase de casamento como operações relacionais 29 l Vamos pensar na MT como uma relação: Primeira Segunda Terceira Comet É-um Cavalo Pracer É-um Cavalo Comet É-pai-de Dasher Comet É-pai-de Pracer Pracer É Rápido Dasher É-pai-de Thunder Thunder É Rápido Thunder É-um Cavalo Dasher É-um Cavalo Exemplo da fase de casamento como operações relacionais 30 l Para determinar os valores de ?x e ?y para a regra dos cavalos valiosos l Vamos determinar quais os registros da relação que casam com o primeiro antecedente da regra (?x é-um cavalo). l Isso implica em selecionar os registros nos quais a segunda coluna é igual a é-um e a terceira coluna é igual a cavalo ou l Temos como resultado: Primeira Segunda Terceira É-um Cavalo É-um Cavalo É-um Cavalo É-um Cavalo Comet Pracer Thunder Dasher Exemplo da fase de casamento como operações relacionais 31 l Queremos saber quais valores casam com ?x, desta forma estamos interessados nos valores da primeira coluna. l Isto implica em fazer uma projeção sobre a primeira coluna da relação resultante da seleção: l Poderíamos ter feito diretamente: Primeira Renomeando ==> Comet Pracer Thunder Dasher A1 X Comet Pracer Thunder Dasher Exemplo da fase de casamento como operações relacionais 32 l Vamos determinar quais os registros da relação que casam com o segundo antecedente da regra (?x é-pai-de ?y) l Temos como resultado: A2 X Y Comet Dasher Comet Pracer Dasher Thunder Exemplo da fase de casamento como operações relacionais 33 l Vamos determinar quais os registros da relação que casam com o terceiro antecedente da regra (?y é rápido) l Temos como resultado: A3 Y Pracer Thunder Exemplo da fase de casamento como operações relacionais 34 l Agora temos as seguinte relações: l E queremos saber quais os valores de ?x que satisfazem o primeiro e o segundo antecedentes l Isto é equivalente a um JOIN entre a relação A1 e A2, resultando em: A1 X Comet Pracer Thunder Dasher A2 X Y Comet Dasher Comet Pracer Dasher Thunder A3 Y Pracer Thunder B1 X Y Comet Dasher Comet Pracer Dasher Thunder Exemplo da fase de casamento como operações relacionais 35 l Agora temos as seguinte relações: l E queremos saber quais os valores de ?y que satisfazem o segundo e terceiro antecedentes l Isto é equivalente a um JOIN entre a relação A3 e B1, resultando em: B1 X Y Comet Dasher Comet Pracer Dasher Thunder A3 Y Pracer Thunder B2 X Y Comet Pracer Dasher Thunder Exemplo da fase de casamento comooperações relacionais 36 l Como o consequente da regra diz respeito somente a ?x: l Isto significa que tanto Comet quanto Dasher são valiosos. B2 X Comet Dasher Fase de casamento como operações relacionais 37 l : este procedimento ocupa muita computação. l Se a regra tem n antecedentes, precisamos de: l n SELECTS, n PROJECTS para produzir as relações A e l n-1 JOINS e n-1 PROJECTS para produzir as relações B. l Se existir m regras, a cada nova asserção, teremos: l mn SELECTS, m(2n-1) PROJECTS, m(n-1) JOINS – que são caros. : Algoritmo de Rete l Os JOINs são executados entre uma linha de uma relação e a outra relação, o que diminui o custo de JOINs grandes. Algoritmo de Rete 38 l Inventado por Dr. Charles Forgy em 1979. l Duas partes: : l Descreve como gerar uma rede de discriminação para as regras da base que possa auxiliar a fase de casamento. l A rede de discriminação é utilizada com um “filtro de dados”. : l A rede é utilizada para unificar a memória de trabalho com as regras da base de forma mais eficiente. Fase de casamento: algoritmo de Rete - construção da rede de Rete 39 Para cada antecedente que aparece no conjunto de regras, crie uma operação de SELECT que examina novas asserções Para cada regra Para cada antecedente Crie um nó alfa e anexe a ele a operação de SELECT correspondente (já criada) Para cada nó alfa exceto o primeiro Crie um nó beta e anexe a operação de JOIN correspondente Se o nó beta é o primeiro anexe a ele o primeiro e segundo nós alfa senão, anexe ao nó beta o nó alfa correspondente e o nó beta anterior Anexe uma a operação de PROJECT correspondente ao nó beta final 40 Fase de casamento: Algoritmo de Rete - Uso da rede de Rete como filtro 41 ¨ Para cada asserção, filtre a asserção pelas operações de SELECT, passando a asserção através da rede para os nós alfa associados ¨ Para cada nó alfa que recebe uma asserção, use a operação de JOIN passando a asserção através da rede para o nó beta associado ¨ Para cada nó beta que recebe uma nova asserção, use a operação de JOIN para propagar as mudanças através da rede para os outros nós beta associados a ele ¨ Para cada regra, use a operação de PROJECT para isolar o valor associado à variável correspondente ao consequente da regra 42 43 44 45 46 47 48 49 50 Exemplo de rede de Rete para mais de uma regra 51 l Considere a seguinte Base de Regras: R1 Se A(x) e B(x) e C(y) Então adicione D(x) à MT R2 Se A(x) e D(x) e B(y) Então adicione E(x) à MT R3 Se A(x) e B(x) e E(x) Então remova A(x) da MT 52 AB B AB C A1 A2 A3 Join A=B Join A4 C D AB Join A=D AD Join A5 E AD B AD R2 Add E ABE ABE R3 Del A Join AB=E Exemplo de uma rede de Rete para uma base de regras com três regras R1 Add D Exemplo de MT para a Rede de Rete 53 A(1) A(2) B(2) B(3) B(4) C(5) 54 AB B 2 A 1 2 AB C A1 A2 A3 Join A=B Join A4 C D AB 2 Join A=D AD Join A5 E AD B AD ABE ABE Join AB=E Exemplo de uma rede de Rete para uma base de regras com três regras R1 Add D R2 Add E R3 Del A 55 AB 2 B 2 3 4 A 1 2 AB C 2 5 A1 A2 A3 Join A=B Join R1 Add D A4 C 5 D AB 2 Join A=D AD Join A5 E AD B AD ABE ABE Join AB=E Exemplo de uma rede de Rete para uma base de regras com três regras R2 Add E R3 Del A 56 AB 2 B 2 3 4 A 1 2 AB C 2 5 A1 A2 A3 Join A=B Join R1 Add D A4 C 5 D 2 AB 2 Join A=D AD 2 Join A5 E AD B 2 2 2 3 2 4 AD 2 ABE ABE Join AB=E Exemplo de uma rede de Rete para uma base de regras com três regras R2 Add E R3 Del A 57 AB 2 B 2 3 4 A 1 2 AB C 2 5 A1 A2 A3 Join A=B Join R1 Add D A4 C 5 D 2 AB 2 Join A=D AD 2 Join A5 E 2 AD B 2 2 2 3 2 4 AD 2 ABE 2 ABE 2 Join AB=E Exemplo de uma rede de Rete para uma base de regras com três regras R2 Add E R3 Del A 58 AB B 2 3 4 A 1 AB C A1 A2 A3 Join A=B Join R1 Add D A4 C 5 D 2 AB Join A=D AD Join A5 E 2 AD B AD ABE ABE Join AB=E Exemplo de uma rede de Rete para uma base de regras com três regras R2 Add E R3 Del A Sistemas de produção reativos 59 l As regras são da forma: se condição então ação l A ação pode inserir uma nova asserção na MT, ou apagar uma asserção existente, ou executar algum outro procedimento. l Três fases: l Casamento e l Execução FASE DE RESOLUÇÃO DE CONFLITOS 60 l Possíveis estratégias para resolução de conflitos entre as regras disparadas: : Ordenar as regras em uma lista de prioridade, executar aquela com maior prioridade; : executar a regra tem o maior número de antecedentes; : Ordenar as asserções por prioridade, executar a regra que casa com a asserção de maior prioridade; : não executar a mesma regra com os mesmos argumentos duas vezes; : dar preferência as regras que se referem a elementos da MT criados recentemente (simula o foco de atenção do discurso); : dar preferência as regras que são mais específicas; BAGGER: Um Sistema Reativo 61 : empacotar gêneros alimentícios em uma mercearia. l BAGGER: decide onde cada item deve ir (em qual sacola). l BAGGER foi projetado para fazer 4 passos: : analisa o que o cliente selecionou, verifica se algum item está faltando e sugere o item para o cliente. : tomando cuidado para colocar as garrafas grandes primeiro. : tomando cuidado para colocar os item congelados em sacolas térmicas. . BAGGER: UM SISTEMA REATIVO CONTEÚDO DA MT 62 l Suponha que a MT tenha o seguinte conhecimento sobre os itens que devem ser empacotados: ? pão saco plástico médio não macarrão inst. pote pequeno não granola caixa grande não sorvete pote médio sim Batata chips saco plástico médio não pepsi garrafa grande não BAGGER: Um Sistema Reativo 63 l A memória de trabalho contém a asserção que identifica o passo. l Cada regra de BAGGER identifica o passo. l B1 é disparada somente quando o passo é checar: B1 se passo = checar empacotar(batata-chips) não existe empacotar(pepsi) então pergunte ao cliente se ele gostaria de uma garrafa de Pepsi, em caso de aceite, inserir(empacotar(pepsi)) l B2 muda o passo para empacotar-itens-grandes: B2 se passo = checar então apagar (Passo = checar) inserir (Passo = empacotar-itens-grandes) l B2 pode evitar que B1 faça o seu trabalho? § Não se a estratégia de resolução de conflitos ordenar as regras. BAGGER: Um Sistema Reativo Regras 64 l B3 e B4 são regras para empacotar-itens-grandes: B3 se passo = empacotar-itens-grandes empacotar(X) tamanho(X) = grande embalagem(X) = garrafa sacola-corrente(S) quantidade-itens(S) < 6 então apagar(empacotar(X)) inserir(em(X, S)) B4 se passo = empacotar-itens-grandes empacotar(X)tamanho(X) = grande sacola-corrente(S) quantidade-itens(S) < 6 então apagar(empacotar(X)) inserir(em(X, S)) BAGGER: Um Sistema Reativo Regras 65 l B5 muda de sacola: B5 se passo = empacotar-itens-grandes empacotar(X) tamanho(X) = grande pegar(Sacola-vazia) então apagar(sacola-corrente(S)) inserir(sacola-corrente(Sacola-vazia)) l B6 muda o passo para empacotar-itens-médios: B6 se passo = empacotar-itens-grandes então apagar(passo = empacotar itens grandes) inserir(passo = empacotar-itens-médios) BAGGER: Um Sistema Reativo Regras 66 l B7 e B8 são regras para empacotar-itens-médios: B7 se passo = empacotar-itens-médios empacotar(X) tamanho(X) = médio congelado(X) pegar(Sacola-térmica) então apagar(empacotar(X)) inserir(em(X, Sacola-térmica)) B8 se passo = empacotar-itens-médios empacotar(X) tamanho(X) = médio sacola-corrente(S) ( vazia(S) ou para todo X pertencente a relação em(X, S), tamanho(X) = médio) quantidade-itens(S) < 12 então apagar(empacotar(X)) inserir(em(X, S)) BAGGER: Um Sistema Reativo Regras 67 l B9 muda de sacola: B9 se passo = empacotar-itens-médios empacotar(X) tamanho(X) = médio pegar(Sacola-vazia) então apagar(sacola-corrente(S)) inserir(sacola-corrente(Sacola-vazia)) l B10 muda o passo para empacotar-itens-pequenos: B10 se passo = empacotar-itens-médios então apagar(passo = empacotar-itens-médios) inserir(passo = empacotar-itens-pequenos) BAGGER: Um Sistema Reativo Regras 68 l B11 empacota itens pequenos: B11 se passo = empacotar-itens-pequenos empacotar(X) tamanho(X) = pequeno sacola-corrente(S) (vazia(S) ou para todo X pertencente a relação em(X, S), tamanho(X) = pequeno) quantidade-itens(Sacola-corrente) < 18 então apagar(empacotar(X)) inserir(em(X, S)) l B12 muda de sacola: B12 se passo = empacotar-itens-pequenos empacotar(X) tamanho(X) = pequeno pegar(Sacola-vazia) então apagar(sacola-corrente(S)) inserir(sacola-corrente(Sacola-vazia)) BAGGER: Um Sistema Reativo Regras 69 l B13 termina o empacotamento: B13 se passo = empacotar-itens-pequenos então apagar(passo = empacotar-itens-pequenos) inserir(passo = terminado) BAGGER: Um sistema reativo conteúdo da mt 70 l Suponha que a MT tenha o seguinte conhecimento sobre os o passo, a sacola corrente e sobre os itens que devem ser empacotados: l Passo = checar l sacola-corrente(s1) l empacotar(pão) l empacotar(macarrão-instantâneo) l empacotar(granola) l empacotar(sorvete) l empacotar(batata-chips) l A estratégia de resolução de conflitos é disparar a regra de menor numeração. BAGGER: Um Sistema Reativo Funcionamento 71 l 1º Ciclo: l Regras habilitadas: B1 e B2 l Regras disparadas: B1 (pela ordem) – sugerir ao cliente. l Nova MT: (supondo que o cliente aceitou a sugestão da Pepsi) l Passo = checar l sacola-corrente(s1) l empacotar(pão) l empacotar(macarrão-instantâneo) l empacotar(granola) l empacotar(sorvete) l empacotar(batata-chips) l empacotar(pepsi) BAGGER: Um Sistema Reativo Funcionamento 72 l 2º Ciclo: l Regras habilitadas: B2 l Regras disparadas: B2 – mudar o passo l Nova MT: l sacola-corrente(s1) l empacotar(pão) l empacotar(macarrão-instantâneo) l empacotar(granola) l empacotar(sorvete) l empacotar(batata-chips) l empacotar(pepsi) l Passo = empacotar-itens-grandes BAGGER: Um Sistema Reativo Funcionamento 73 l 3º Ciclo: l Regras habilitadas: B3, B4, B5 e B6 l Regras disparadas: B3 (pela ordem) – empacotar garrafas primeiro. l Unificação = {X/pepsi} l Nova MT: l sacola-corrente(s1) l empacotar(pão) l empacotar(macarrão-instantâneo) l empacotar(granola) l empacotar(sorvete) l empacotar(batata-chips) l Passo = empacotar-itens-grandes l em(pepsi, s1) BAGGER: Um Sistema Reativo Funcionamento 74 l 4º Ciclo: l Regras habilitadas: B4, B5 e B6 l Regras disparadas: B4 (pela ordem) – empacotar outros itens grandes. l Unificação = {X/granola} l Nova MT: l sacola-corrente(s1) l empacotar(pão) l empacotar(macarrão-instantâneo) l empacotar(sorvete) l empacotar(batata-chips) l Passo = empacotar-itens-grandes l em(pepsi, s1) l em(granola, s1) BAGGER: Um Sistema Reativo Funcionamento 75 l 5º Ciclo: l Regras habilitadas: B6 l Regras disparadas: B6 – mudar o passo. l Nova MT: l sacola-corrente(s1) l empacotar(pão) l empacotar(macarrão-instantâneo) l empacotar(sorvete) l empacotar(batata-chips) l em(pepsi, s1) l em(granola, s1) l Passo = empacotar-itens-médios BAGGER: Um Sistema Reativo Funcionamento 76 l 6º Ciclo: l Regras habilitadas: B7, B8, B9, B10 l Regras disparadas: B7 (pela ordem) – empacotar itens congelados primeiro. l Unificação {X/sorvete, Sacola-térmica/st1} l Nova MT: l sacola-corrente(s1) l empacotar(pão) l empacotar(macarrão-instantâneo) l empacotar(batata-chips) l em(pepsi, s1) l em(granola, s1) l Passo = empacotar-itens-médios l em(sorvete, st1) BAGGER: Um Sistema Reativo Funcionamento 77 l 7º Ciclo: l Regras habilitadas: B9, B10 l Regras disparadas: B9 (pela ordem) – mudar de sacola. l Unificação {X/pão, S/s1, Sacola-vazia/s2} l Nova MT: l empacotar(pão) l empacotar(macarrão-instantâneo) l empacotar(batata-chips) l em(pepsi, s1) l em(granola, s1) l Passo = empacotar-itens-médios l em(sorvete, st1) l sacola-corrente(s2) BAGGER: Um Sistema Reativo Funcionamento 78 l 8º Ciclo: l Regras habilitadas: B8, B9, B10 l Regras disparadas: B8 (pela ordem) – empacotar outros itens. médios l Unificação {X/pão, S/s2} l Nova MT: l empacotar(macarrão-instantâneo) l empacotar(batata-chips) l em(pepsi, s1) l em(granola, s1) l Passo = empacotar-itens-médios l em(sorvete, st1) l sacola-corrente(s2) l em(pão, s2) BAGGER: Um Sistema Reativo Funcionamento 79 l 9º Ciclo: l Regras habilitadas: B8, B9, B10 l Regras disparadas: B8 (pela ordem) – empacotar outros itens médios. l Unificação {X/batata-chips, S/s2} l Nova MT: l empacotar(macarrão-instantâneo) l em(pepsi, s1) l em(granola, s1) l Passo = empacotar-itens-médios l em(sorvete, st1) l sacola-corrente(s2) l em(pão, s2) l em(batata-chips, s2) BAGGER: Um Sistema Reativo Funcionamento 80 l 10º Ciclo: l Regras habilitadas: B10 l Regras disparadas: B10 – mudar o passo. l Nova MT: l empacotar(macarrão-instantâneo) l em(pepsi, s1) l em(granola, s1) l em(sorvete, st1) l sacola-corrente(s2) l em(pão, s2) l em(batata-chips, s2) l Passo = empacotar-itens-pequenos BAGGER: Um Sistema Reativo Funcionamento 81 l 11º Ciclo: l Regras habilitadas: B12, B13 l Regras disparadas: B12 (pela ordem) – mudar a sacola. l Unificação = {X/macarrão-instantâneo, Sacola-vazia/s3, S/s2} l Nova MT: l empacotar(macarrão-instantâneo) l em(pepsi, s1) l em(granola, s1) l em(sorvete, st1) l em(pão, s2) l em(batata-chips, s2) l Passo = empacotar-itens-pequenos l sacola-corrente(s3) BAGGER: Um Sistema Reativo Funcionamento 82 l 12º Ciclo: l Regras habilitadas: B11, B12, B13l Regras disparadas: B11 (pela ordem) – empacotar itens pequenos. l Unificação = {X/macarrão-instantâneo, S/s3} l Nova MT: l em(pepsi, s1) l em(granola, s1) l em(sorvete, st1) l em(pão, s2) l em(batata-chips, s2) l Passo = empacotar-itens-pequenos l sacola-corrente(s3) l em(macarrão-instantâneo, s3) BAGGER: Um Sistema Reativo Funcionamento 83 l 13º Ciclo: l Regras habilitadas: B13 l Regras disparadas: B13 - terminar. l Nova MT: l em(pepsi, s1) l em(granola, s1) l em(sorvete, st1) l em(pão, s2) l em(batata-chips, s2) l sacola-corrente(s3) l em(macarrão-instantâneo, s3) l Passo = terminado BAGGER: Um Sistema Reativo Funcionamento 84 l 14º Ciclo: l Regras habilitadas: nenhuma. l Regras disparadas: nenhuma. l MT Final: l em(pepsi, s1) l em(granola, s1) l em(sorvete, st1) l em(pão, s2) l em(batata-chips, s2) l sacola-corrente(s3) l em(macarrão-instantâneo, s3) l Passo = terminado Exercício 85 l Mostre os quatro (4) primeiros ciclos de operação do sistema de produção a seguir (se possível) listando: l i) o Ciclo; ii) as Regras satisfeitas; ii) a Regra escolhida em cada ciclo e iv) a nova memória de trabalho. l ?x, ?y e ?z são variáveis e os outros termos são constantes. l A estratégia de resolução de conflitos: l Escolher a regra com o maior número de precondições l Nenhuma regra pode ser usada mais de uma vez com o mesmo conjunto de variáveis atribuídas l Se ainda houver conflito entre as regras, a última regra satisfeita deve ser aplicada. l ¬P(x) significa que P(x) não pode estar na MT Exercício 86 l Regras: (R1) IF P(?x, ?y) Q(?x, a, ∧ ?z) ∧ ¬Q(?z, a, ?z) THEN assert R(?x) retract Q(?x, a, ?z) (R2) IF R(?x) ∧ Q(?x, ?y, ?z) THEN retract R(?x) (R3) IF P(f(?x), ?y) ∧ ?x ≤ ?y ∧ Q(f(?w), ?w, f(?z)) ∧ ?y ≤ ?z THEN print SUCCESS! (R4) IF R(?x) THEN assert Q(f(?x), ?x, f(?x)) l Memoria de Trabalho inicial: P(f(1), 2) Q(f(1), a, f(1)) R(f(1)) P(3, f(4)) Q(4, a, 3) P(4, 4)
Compartilhar