Jess – the Rule Engine for the
Java™ Platform
Inteligência Artificial Aplicada a Controle de
Processos e Automação Industrial
Jess
Grupo:
Francisco de Assis Neto
Rodrigo Tacla Saad
Marcelo Valverde
Jess – Apresentação

Sistemas Especialistas:




O que são? Para que servem?
Arquitetura
Ferramentas - Comparativo
Jess




O que é?
História
Problema Motivador – Assistente de Vendas
Implementação do Problema
Jess – Sistemas Especialistas

O que são?


Sistemas Especialistas são programas de computador que
contêm conhecimentos específicos de um tema de um ou mais
especialistas humanos. Estes programas foram inicialmente
desenvolvidos por pesquisadores da área de Inteligência
Artificial entre os anos de 1960 e 1970
e usados
comercialmente depois dos anos 80.
A forma mais comum dos sistemas especialistas são os
programas feitos sobre regras que analisam informações
(geralmente inseridas pelo usuário do sistema) sobre um
problema relacionado a um tema específico, como também
fornecendo a análise do problema, e, dependendo da
implementação do sistema, pode recomendar ao usuário a
melhor ação a tomar.
Jess – Sistemas Especialistas

Para que Servem?
 Sistemas Especialistas são muito valiosos para
organizações que possuem alto nível de knowhow e expertise, os quais são muito difíceis de
serem transferidos entre os membros. Eles
são projetados para possuírem a inteligência
e a informação encontradas no intelecto dos
experts e repassá-las para os outros membros
da organização.
Jess – Arquitetura

Arquitetura com trés módulos: uma base de regras,
uma memória de trabalho e um motor de
inferência.
Jess – Comparativo I
Jess – Comparativo II
Jess – O que é?







Desenvolvido por Ernest Friedman-Hill (Sandia National
Labs), 1995.
Plataforma Java para Sistemas Especialistas
Ferramenta proprietária.
Plug-in do Eclipse.
Compila arquivo baseados em CLIPS.
API Java documentada e com código fonte disponível.
Algoritmo de RETE.
Jess – História (LISP)




LISt Processing
Linguagem de programação funcional concebida
por John McCarthy em 1958.
Baseado no Lambda Cálculo (Alonzo Church,
década de 30).
Amplamente difundida na comunidade de IA.
(defun factorial (n)
(if (<= n 1)
1
(* n (factorial (- n 1)))))
Jess – História (CLIPS)




C Language Integrated Production System
Deselvonvida em 1984 (NASA - Johnson Space
Center).
Implementar Sistemas Especialistas.
Problemas do LISP:




Não era disponível em vários computadores.
Alto custo de hardware e software.
Pouca integração com outras linguagens
Atualmente é uma ferramenta de código livre.
Jess – Assistente de Vendas




Objetivo: Implementação de um assistente de vendas
de automóveis.
Esperteza: O assistente deduz o estilo da pessoa e
sugere os automóveis mais indicados.
Dados para análise: O assistente é alimentado com
alguns dados, são eles: idade, sexo, estado civil,
número de filhos, renda mensal e o período de
financiamento.
Obs: O assistente deve oferecer somente carros que
o cliente tem capacidade de pagar.
Jess – Representação do
Conhecimento



Quadros: Consiste em um conjunto de atributos
(slots) que descrevem características do objeto
representado. Permite representar a herança de
propriedades.
deftemplate: Quadros (estrutura dos fatos) são
definidos através do comando “deftemplate”.
ex: (deftemplate automovel
(slot garantia)
(slot modelo)
(slot fabricante)
(slot preco))
Jess – Representação do
Conhecimento
Jess – Memória de Trabalho

Fatos: Para o Jess, todo fato na memória de trabalho é visto
como uma tupla de uma tabela relacional. Ele sempre possui
um nome e um conjunto de propriedades.
assert: Insere fatos, com estruturas previamente definidas ou
não, na memória de trabalho.
deffacts: Insere uma lista de fatos de uma vez.

ex: (deffacts start


(phase start)
(popular
(modelo uno)
(garantia 1ano)
(fabricante fiat)
(preco 18000)))
Jess – Funções


deffunctions: Jess permite que você defina suas
próprias funções.
Ex:
(deffunction printCar
(?modelo ?garantia ?fabricante ?preco ?portas ?consumo ?potencia)
(printout t "Carro:"?modelo crlf
"Especificacoes:" crlf
"fabricante = "?fabricante crlf
"garantia = "?garantia crlf
"preco = "?preco crlf
"portas = "?portas crlf
"consumo = "?consumo crlf
"potencia = "?potencia crlf crlf))
Jess – Regras


Uma regra em Jess é algo como declarações if....then usadas nas
linguagens procedurais, mas estas não são usadas de forma procedural.
Enquanto if...then são executadas em momentos definidos e em uma
ordem definida, de acordo como o programador as escreveu, regras em
jess são executadas sempre que seus “ifs” (parte esquerda ou LHS) são
satisfeitas. Isto torna as regras em Jess menos determinísticas que em
um
programa
procedural
típico.
defrules: O comando defrules é formado por duas partes separadas
pelo símbolo “=>”, o qual pode ser lido como a palavra “then”. A
primeira parte do comando (LHS) consiste nas condições aplicadas
sobre os fatos armazenados na memória de trabalho. A segunda parte
(RHS) consiste nas ações (chamadas de funções).
Jess – Regras

Ex:(defrule start
?phase <- (phase start)
=>
(retract ?phase)
(printout t "Seja Bem Vindo ao assitente Virtual. " crlf)
(assert (phase askAge)))
(defrule whichStyle_popular
(declare (salience 1))
?phase <- (phase testStyle)
(userMonthlyIncome ?mi&:(> ?mi 1000))
=>
(retract ?phase)
(printout t "Estilo Popular. " crlf)
(assert (userStyle Popular)) (assert (phase getCar)))
Jess
Fim
Obrigado
Download

jess_final