UFSC–UNIVERSIDADE FEDERAL DE SANTA CATARINA
PROGRAMA DE PÓS-GRADUAÇÃO EM ENGENHARIA ELÉTRICA
Inteligência Artificial aplicada a Controle de
Processos e Automação Industrial
Grupo: Diego Roberto Morais
Edson Camargo
Saulo Popov Zambiasi
Professor: Guilherme Bittencourt
ESCOPO DA APRESENTAÇÃO
Características importantes para a
escolha dos shells;
Estudo comparativo dos shells;
Caracterização do JESS;
Processamento de um Sistema
Especialista;
Algoritmo RETE.
CARACTERÍSTICAS IMPORTANTES
Escolha do Shell:
- Critérios teóricos: representação do
conhecimento, procedimentos de inferência;
- Características atrativas para aplicações
específicas: flexibilidade, interface com banco de
dados externo e algoritmos numéricos,
portabilidade, etc...
CARACTERÍSTICAS IMPORTANTES
Tab. 1 – Tabela com as principais características das
ferramentas de sistemas especialistas
CARACTERÍSTICAS IMPORTANTES
Tab. 2 – Preços dos shells avaliados comercialmente
Hunealt, M., Rosu, C., Manoliu, R., Galiana, F. D., (1994).
“A Study of Knowledge Engineering Tools in Power
Engineering Applications”
IEEE Transactions on Power Systems, Vol. 9, nº4, nov. 1994.
ESTUDO COMPARATIVO DOS SHELLS
WebLS:
- Máquina de inferência PROLOG;
- Linguagem modular e sintaxe simples;
- Gera HTML dinamicamente;
- Documentação de boa qualidade;
- Intenção de poder ser utilizada por
especialistas do domínio do conhecimento.
ESTUDO COMPARATIVO DOS SHELLS
CLIPS:
- Grande vantagem: portabilidade;
- Algoritmo RETE;
- Documentação de boa qualidade;
- Sintaxe muito próxima do LISP;
- Dificilmente pode ser utilizada por
especialistas do domínio do conhecimento.
ESTUDO COMPARATIVO DOS SHELLS
WebCLIPS:
- CGI que encapsula o CLIPS;
- Páginas e formulários HTML dinamicamente;
- Arquivo de configuração inicial;
- Linguagem C;
- Unix e Windows
ESTUDO COMPARATIVO DOS SHELLS
JESS:
- Desenvolvido por Ernest J. Friedman-Hill;
- Sandia National Laboratories;
- Implementação em Linguagem Java do CLIPS;
- Basicamente uma biblioteca;
- Sintaxe não é tão simples (LISP);
- Documentação de boa qualidade;
ESTUDO COMPARATIVO DOS SHELLS
JESS:
- Opções de método de inferência com dois
tipos de encadeamento;
- Duas estratégias de busca;
- Uso gratuito para instituições de ensino;
- Construção do SE pode ser realizada através
do prompt do JESS ou editor de texto;
- Algoritmo especial chamado RETE (MI);
- Pesado em termos de execução.
ESTUDO COMPARATIVO DOS SHELLS
Tab. 3 – Quadro comparativo I
ESTUDO COMPARATIVO DOS SHELLS
Tab. 4 – Quadro comparativo II
FUNCIONAMENTO DO ALGORITMO RETE
Fig. 1 - Modelo de busca de dados e regras
Processamento do algoritmo RETE em um SE;
O “casamento” é processado apenas uma vez;
O MI examina cada regra e compara com os fatos;
Agenda
FUNCIONAMENTO DO ALGORITMO RETE
Processo ocorre em apenas um
ciclo;
Casamento entre fatos e regras uma
vez;
Porém o processo se desenvolve em
vários ciclos;
Novos fatos gerados pelo disparo
Fig. 2 - Regras que buscam
os fatos
das regras;
FUNCIONAMENTO DO ALGORITMO RETE
Percentual de fatos alterados em
relação ao total de regras é baixo;
Ineficiência computacional;
Fig. 3 - Esforço computacional
desnecessário quando regras
procuram os fatos
FUNCIONAMENTO DO ALGORITMO RETE
Pressuposto que uma pequena parte
da lista de fatos é adicionada;
Pequena parte das regras é afetada;
Regras selecionadas;
Informações em rede
Velocidade de execução do motor de
Fig. 4 - Fatos que buscam
as regras
inferência;
Memória.
Jess + Java
JESS - EXECUTANDO O SHELL
Executando:
java -classpath jess.jar jess.Main
examples/hello.clp
java -classpath jess.jar jess.Main
Carregando arquivos:
(batch examples/hello.clp)
Programas externos:
(system xlogo &)
JESS - LINGUAGEM
; Lendo e escrevendo
(printout t ”Nome: ")
(bind ?resposta(read))
(printout t ”Resposta: " ?resposta crlf)
; Variaveis
(bind ?x 45)
(bind ?nome “Socrates”)
; Variaveis globais
(defglobal ?*idade* = 21)
JESS - LINGUAGEM
; Funcoes
(deffunction max (?a ?b)
(if (> ?a ?b) then
(return ?a)
else
(return ?b)
)
)
(max 4 5)
JESS - LINGUAGEM
; definindo um template
(deftemplate automoveis
”Um carro em especifico"
(slot tipo)
(slot modelo)
(slot ano (type INTEGER))
(slot cor (default white))
)
JESS - LINGUAGEM
; Inserindo instancias
(assert (automoveis
(tipo Gol)
(modelo MI_Plus)
(ano 1997)
)
)
JESS - LINGUAGEM
; herdando um template
(deftemplate carros_usados
extends automoveis
(slot ultima_revisao)
(multislot antigos_donos)
)
JESS - Exemplo Bolívia
JESS - Exemplo Bolívia (Base de Conhecimento)
(assert
(regiao planicie)
(regiao vales)
(regiao altiplano)
(cidade Cobija)
(cidade Trinidad)
...
)
JESS - Exemplo Bolívia (Regras)
(defrule rule-1
(destino ?x)
(regiao ?x)
(clima ?x ?y)
=>
(assert (clima-destino ?y))
)
...
(defrule rule-6
(levar ?x)
=>
(printout t "Levar " ?x crlf)
)
JESS - Exemplo Bolívia (Consulta)
(assert (destino Cochabamba))
(run)
Levar conversor_110-220
Levar roupa_quente
Levar roupa_leve
JESS - Java no Jess (Java Reflection)
(bind ?pt (new java.awt.Point))
(set-member ?pt x 37)
(set-member ?pt y 42)
(printout t
"Ponto x: " (get-member ?pt x)
", ponto y: " (get-member ?pt y)
crlf
)
JESS - Java no Jess (JavaBeans)
import java.io.*;
public class ClasseTeste
implements Serializable {
private String name = "Descartes";
public String getName() { return name; }
public void setName(String s) {
name = s; }
public void write() {
System.out.println("Nome : ["+name+"]");
}
}
JESS - Java no Jess (JavaBeans)
Compilando o arquivo:
> javac ClasseTeste.java
Criando o arquivo JAR:
> jar cf ClasseTeste.jar ClasseTeste.class
Executando o Jess:
> java -classpath jess.jar;ClasseTeste.jar jess.Main
JESS - Java no Jess (JavaBeans)
Lendo a classe no Jess:
Jess> (defclass teste ClasseTeste)
Definindo o template
Jess> (ppdeftemplate teste)
Adicionando um objeto a base de conhecimento
Jess> (bind ?t (new ClasseTeste))
Jess> (definstance teste ?t static)
Jess> (facts)
JESS - Java no Jess (JavaBeans)
Chamando funções do objeto
Jess> (call ?t setName "Socrates")
Jess> (facts)
Atualizar base de conhecimento
Jess> (reset)
Jess> (facts)
JESS - Java no Jess (Window)
(import java.awt.*)
(import jess.awt.*)
(defglobal ?*frame* = 0)
(defglobal ?*botao* = 0)
(deffunction create-frame ()
(bind ?*frame* (new Frame "Texto"))
(set ?*frame* background (new Color 255 0 255))
(set ?*frame* layout (new GridLayout 1 2))
)
JESS - Java no Jess (Window)
(deffunction add-widgets ()
(?*frame* add (new Label "Botao: "))
(bind ?*botao* (new Button "Ok"))
(?*frame* add ?*botao*)
)
(deffunction add-behaviours ()
(?*frame* addWindowListener
(new WindowListener frame-handler (engine))
)
)
JESS - Java no Jess (Window)
(deffunction show-frame ()
(?*frame* validate)
(?*frame* pack)
(?*frame* show)
)
(deffunction frame-handler (?event)
(if (= (?event getID) (get-member ?event
WINDOW_CLOSING)) then
(printout t "Fechando Janela... " crlf)
(call (get ?event source) dispose)
(call System exit 0)
)
)
JESS - Java no Jess (Window)
(create-frame)
(add-widgets)
(add-behaviours)
(show-frame)
Java + Jess
Linguagem Java
Criada no início dos anos 90 pela Sun;
Java é uma linguagem computacional completa,
adequada para o desenvolvimento de aplicações
baseadas na rede Internet, redes fechadas ou ainda
programas stand-alone [CAM96].
Atualmente, a linguagem Java é a força propulsora por
trás de grandes avanços da computação, como:



- Acesso remoto a bancos de dados
- Bancos de dados distribuídos
- Comércio eletrônico no WWW
Linguagem Java
Atualmente, a linguagem Java é a força propulsora por
trás de grandes avanços da computação, como:








- Network CAD
- Interatividade em páginas WWW
- Interatividade em ambientes de Realidade Virtual
distribuídos
- Gerência de Documentos
- Integração entre dados e forma de visualização
- Network Computer
- Ensino à distância
-Jogos e entretenimento
Linguagem Java
Características




Simplicidade e eficiência de código orientado a objetos
Código Interpretado e Portável
Segurança
Aplicações distribuídas e processamento paralelo
Linguagem Java
Recursos para o Desenvolvimento




JDK Tools
Java API
java.applet
java.awt
Linguagem Java
Arquivo MeuApplication.java
public class MeuApplication {
public static void main (String[] args) {
System.out.println( “Este é meu application!” );
}
}
Linguagem Java
arquivo MeuApplet.java
import java.applet.*;
import java.awt.*;
public class MeuApplet extends Applet {
public void paint (Graphics g) {
g.drawString( “Este é meu applet!” );
}
}
<HTML>
<applet code=“code=“MeuApplet.class” width=“200”
height=“100”>
</applet>
</HTML>
JESS no Java
Há duas formas nas quais Java pode ser usado com
JESS:


Para extender o Jess, e
Biblioteca do Jess usadas no Java
Download

JESS