Adriano Melo sistemas inteligentes

Slides:



Advertisements
Apresentações semelhantes
Estruturação de Linguagens (Pascal e C++)
Advertisements

Python: Funções Claudio Esperança.
Programação em Java Prof. Maurício Braga
Programação em Java Prof. Maurício Braga
Avaliador de Expressões
Estruturas de Repetição
Paulo Marques Hernâni Pedroso
Métodos, Parâmetros, Argumentos e Contratos
Parte I Capítulo 5 Reutilizando código e escrevendo funções.
Sistema Especialista Java/ Jess
LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS INTRODUÇÃO AOS APLICATIVOS JAVA Prof. Thiago Pereira Rique
Prof. Thiago Pereira Rique
Shell Script Professor: João Paulo
Linguagens de Programação Orientadas a Objetos
De 17 1 Linguagens de Programação Orientadas a Objetos Pós-Gradução(Lato-Sensu) em Sistemas de Banco de Dados - UFPa Marco Fagundes Aula.
Orientação a Objetos Introdução. Objetos: o que são? Olhando o mundo real pode-se ver vários objetos: mesa, cadeiras, alunos, professores etc. Esses objetos.
Iniciação ao Java – Márcio F. Campos
Programação Básica em Java
Curso Sistemas de Informação Disciplina: Arquitetura de Software
Wagner Santos C. de Jesus
1 Professor Rogério B. de Andrade - Aula 001- Dez/2008 Técnicas e Linguagem de Programação.
Jess – the Rule Engine for the Java™ Platform
UFSC–UNIVERSIDADE FEDERAL DE SANTA CATARINA
Tecnologia para Web JavaScript
Apresentação da linguagem Python
Introdução aos Sistemas Especialistas
Clique para editar o estilo do subtítulo mestre Desenvolvimento web com Java JAVA 5 – Declarações e Controles de Acesso.
Classes e objetos P. O. O. Prof. Grace.
Estrutura de Dados em Java
Tópicos Tipos de Dados Variáveis por Valor Variáveis por Referência
Introdução a linguagem Python
Unidade I: “Dê um mergulho rápido”
Curso básico de PHP 1 Vantagens: Gratuito Multiplataforma Estável Rapidez Comunicação.
JAVA Orientação a Objetos
FTIN Formação Técnica em Informática
Linguagem de programação I A Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Programação I Aula 2 (Métodos)
Entendendo as definições de classe
Flora-2 Aula de Laboratório Arquivo do Exemplo  Baixar os arquivos “safari.flr” de ~apln/aulamci em um diretório acessível pelo unix (subpasta no diretório.
Centro de Informática – UFPE
Augusto Sampaio e Paulo Borba Centro de Informática
Regras de Produção: o Motor de Inferência JESS
Protégé-OWL e JessTab Adriano Melo Monitoria Sistemas Inteligentes Prof. Fred Freitas.
Orientação a Objetos e Java Graduação em Ciência da Computação
PrograMação para internet
Capítulo III Modularização Procedimentos e Funções Universidade Federal de São Carlos Departamento de Computação Aluna: Luanna Lopes Lobato
Sistemas Baseados em Conhecimento
By Ducheno Kelly Centro de Formação São Domingos.
Aulas 2 e 3 – Java – Prof. Marcelo Heitor # O método main e argumentos na linha de comando; # Fluxo padrão de entrada e saída; # A classe JOptionPane;
Wagner Santos C. de Jesus
UTFPR – Campus Curitiba - DAELN Cursos de Eng. Eletrônica/Eng
Orientação a Objetos e Java Graduação em Ciência da Computação  Centro de Informática, UFPE Alexandre Mota
Aula Prática 4 Monitoria IP/CC (~if669).
Regras de Produção: o Motor de Inferência JESS
Linguagem de programação I A Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação Versão: _01.
Certificação Marco Antonio. Introdução A compreensão desse capítulo é muito importante pois trata de um assunto essencial em qualquer linguagem de programação,
Aula Prática 5 Monitoria IP/CC (~if669). Roteiro 1. 1.Recursão 2. 2.Escopo de Variáveis 3. 3.Arrays 4. 4.Strings.
Iº Workshop Linux da Unijorge
Copyright 1998, Departamento de Informática da UFPE. Todos os direitos reservados sob a legislação em vigor. Variáveis e métodos estáticos, Passagem de.
Prof. Marcos LABORATÓRIO DE PRÁTICA DE PROGRAMAÇÃO 06.
1 IO em LF1 Paradigmas de Linguagens de Programação 2007 Diego Martins, Laís Xavier, Paulo Martinelli e Turah Xavier.
Conceitos de OO em Java Parte I
C# - Unity Introdução. Criando um script Mono Develop Uma IDE.
Sistemas Baseados em Conhecimento Prof. Cláudio M. N. A. Pereira.
Shell Script Parte 2.
Java Básico Lab Ruddá Beltrão | Cristian Costa.
Laboratório de Computação Aula 06 e 07 – Implementação de classes Prof. Fábio Dias
Ambientação com a Sintaxe de Java: parte 2 Prof. Gustavo Wagner Slides Originais: Prof. Tiago Massoni Desenvolvimento de Sistemas FATEC-PB  Centro de.
Introdução à Orientação a Objetos em Java Prof. Gustavo Wagner (Alterações) Slides originais: Prof. Tiago Massoni Desenvolvimento de Sistemas FATEC-PB.
Linguagem de Programação – Aula 04 Prof. Me. Ronnison Reges Vidal.
Transcrição da apresentação:

Adriano Melo sistemas inteligentes (astm@cin.ufpe.br) Tutorial de Jess Adriano Melo sistemas inteligentes (astm@cin.ufpe.br)

O que é o Jess? Acrônimo para Java Expert System Shell Ferramenta especializada no desenvolvimento de Sistemas Especialistas que usa um motor de inferência. O que é Shell ? Programa que conecta e interpreta comandos

Inferência no Jess Para conseguir fazer inferências, o jess utiliza os seguintes elementos: Lista de fatos (e lista de instâncias) Memória global para dados Base de conhecimento Contem todas as regras Motor de inferência Controla a execução das regras

Há três formas de representar Conhecimento no jess Regras Conhecimento heurístico baseado em experiências Funções Conhecimento baseado em procedimentos Programação orientada a objetos Classes, abstração, encapsulamento, herança, polimorfismo, handlers de mensagens Colocar exemplo de regras

Começando... Descompactar a versão trial do jess localizada em: http://www.cin.ufpe.br/~astm/si/jess-trial.zip Executar o arquivo “Jess71p2/bin/jess.bat”

Comandos básicos (assert (X)) – colocar dado na lista de fatos (facts) – mostrar a lista de fatos (clear) – remove todos os fatos e regras (reset) – remove todos os fatos e adiciona um fato inicial Parênteses são os delimitadores de jess, como em LISP Todo fato começa com um identificador f- em seguida de um número, que é o índice do fato

Exemplos de fatos (assert (nome “Sistemas Inteligentes”)) (assert (digitos 0 1 2 3 4 5 6 7 8 9)) (assert (cubo 1.0 1.0 1.0))

Campos... Um campo pode ser dos seguintes tipos: INTEGER, LONG, FLOAT, ATOM, STRING, LIST e EXTERNAL_ADDRESS

Fatos Fatos Ordenados Fatos Desordenados Fatos definstance

Fatos Ordenados São simplesmente listas, onde o primeiro campo (head) funciona como uma categoria. Exemplos: (lista-de-compras ovo leite pão) (pessoa “Bob Marley" Masculino 34) (pai-de joão biu) No Jess: (assert (pai-de joão biu))

Fatos Desordenados Fatos ordenados são úteis, mas não são estruturados. Em linguagens orientadas à objeto, os objetos têm atributos onde ficam os dados. Fatos desordenados permitem esse recurso. Obs: Atributos no jess são chamados de slots. Exemplos: (pessoa (nome "Bob Marley")(idade 34)(genero Masculino)) (carro (fabricante Ford) (modelo Explorer) (ano 1999))

Fatos Desordenados (deftemplate) Para usar fatos desordenados, precisamos antes definir um deftemplate. (deftemplate <deftemplate-name> [<doc-comment>] [extends <classname>] [(declare (from-class java-class-name) )] [(slot | multislot <slot-name> [(default)] )]* )

Fatos desordenados (exemplos) ;cria um template carro com os slots fabricante, modelo e ano (deftemplate carro (slot fabricante) (slot modelo) (slot ano)) ; cria um fato do modelo carro (assert (carro (fabricante ford) (ano 99) (modelo fusion))) ; herda os slots de carro e adiciona o slot origem (deftemplate carro-importado extends carro (slot origem)) ; cria um fato do modelo carro-importado (assert (carro-importado (origem alabama) (ano 2000)))

Fatos Desordenados (herdando de java) //Classe em java import java.io.Serializable; public class Account implements Serializable { private float balance; public float getBalance() { return balance; } public void setBalance(float balance) { this.balance = balance; } // Other, more interesting methods Jess> (deftemplate Account (declare (from-class Account)))

comandos e sintaxe Variáveis Uso do ponto Variáveis Globais

Variáveis Identificadas por iniciar com “?” Pode-se atribuir valores usando a função (bind) Exemplos: (bind ?a 123) (deftemplate box (slot location) (multislot contents)) (bind ?id (assert (box (location kitchen)(contents spatula sponge frying-pan))))

Variáveis com ponto Variáveis com um ponto como em ?x.y o jess interpreta como sendo o slot y da variável x. (deftemplate box (slot location) (multislot contents)) (bind ?id (assert (box (location kitchen)(contents spatula sponge frying-pan)))) ?id.location ?id.contents

Variáveis Globais Variáveis globais são aquelas que não são apagadas depois de um (reset) Sintaxe: (defglobal [?<global-name> = <value>]+) Exemplo: (defglobal ?*x* = 3) (bind ?*x* 4) (reset)

Controle de Fluxo LOOP (WHILE) DECISÃO (IF)

Loop Simples ; atribuindo um valor à variável ?i (bind ?i 3) ; loop executado enquanto ?i é maior que zero (while (> ?i 0) (printout t ?i crlf) (-- ?i) ) ; obs: existe ainda for e foreach

Decisão (if) (bind ?x 1) ; atribui o valor 1 à variável ?x ( if (> ?x 100) then ; caso ?x seja maior que 100 (printout t "X is big" crlf) elif (> ?x 50) then ; caso ?x seja maior que 50 (printout t "X is medium" crlf) else ; caso seja menor ou igual a 50 (printout t "X is small" crlf) )

Definindo funções Deffunctions

deffunctions (deffunction <function-name> [<doc-comment>] Sintaxe: (deffunction <function-name> [<doc-comment>] (<parameter>*) <expr>* [<return-specifier>] ) Cada <parameter> deve ser uma variável Pode ter um número arbitrário de <expr> <return-specifier> dá o valor de retorno da função

deffunctions (exemplos) (deffunction max (?a ?b) (if (> ?a ?b) then (return ?a) else (return ?b)) ) (deffunction distancia(?x1 ?y1 ?x2 ?y2) (sqrt (+ (** (- ?x2 ?x1) 2) (** (- ?y2 ?y1) 2)))) (deffunction varrer-lista ($?b) (if (> (length$ ?b) 0) then (printout t "elemento: " (first$ ?b) crlf ) (varrer-lista (rest$ ?b)) )

Comandos... (retract <Fact-X>) – remove o fato de índice X (defrule nome-da-regra ... => ) – define uma regra. Vindo primeiro o padrão de listas e depois do =>, as ações

Regras (casamento de padrão) (defrule nome-da-regra (a ?y) => ... ; pega todos os fatos que têm “a” como o primeiro elemento da lista ) (b c d ?x) ... ; todos os fatos que têm 4 elementos, e os três primeiros são “b c d” (?x) = tudo que tem um campo (?x ?y) = tudo que tem dois campos (restrito ?x ?y) tudo que o primeiro da lista é “restrito” e tem três campos...

Exemplo

Exemplo sala... (assert (tempo segunda sol)) (assert (tempo terça nublado)) (assert (tempo quarta chuva)) (defrule clima-semana (tempo ?dia ?condicao) => (printout t ?dia “ a condição climática estava assim: “ ?condicao crlf) ) (run)

Complicando exemplo anterior... ; Saber a variação climática da semana... (defrule clima-semana (tempo segunda ?condicao-seg) (tempo terça ?condicao-ter) (tempo quarta ?condicao-quar) => (assert (tempo-semana ?condicao-seg ?condicao-ter ?condicao-quar)) ) (run)

Removendo fatos (exemplo)... Jess> (assert (solteiro joao "25 anos")) <Fact-0> Jess> (assert (solteira maria "23 anos")) <Fact-1> Jess> (defrule get-married ?homem <- (solteiro joao ?idade) ?mulher <- (solteira maria ?idade2) => (printout t "joao se casou com maria..." crlf) (retract ?homem) (retract ?mulher) (assert (casados joao maria "25 anos" "23 anos")) ) TRUE Jess> (run) joao se casou com maria... 1 Jess> (facts) f-2 (MAIN::casados joao maria "25 anos" "23 anos") For a total of 1 facts in module MAIN.

Comandos (deffacts)– define um corpo de fatos que são freqüentemente utilizados. São restaurados depois de um reset. (deffacts <nome > [(fato valor)]* ) (batch) – carrega um script com comandos do jess (batch “url/para/o/arquivo.clp") (printout) – imprime no console do jess (printout t "Hello, World" crlf) Comentários - ; para uma linha /* para várias */

Trabalhando com listas... (nome-campo $?a ?nome $?b )

Referências Jess® The Rule Engine for the Java™ Platform Jess Tutorial http://www.cin.ufpe.br/~astm/si/Jess71p2.pdf Jess Tutorial http://www.cin.ufpe.br/~astm/si/jess-tutorial.pdf