Você está na página 1de 34

Inteligncia Artificial

Sistemas Baseados em Regras Programao com Drools

Sistemas Especialistas

Sistemas que utilizam inteligncia artificial para solucionar


problemas relacionados a um domnio especfico.
Podem inferir concluses a partir dos dados processados,
simulando assim o raciocnio humano.
A abordagem mais utilizada trabalha com o conceito de
representao de conhecimento, que prope separar a
lgica dos demais elementos do sistema.

Abordagem baseada em regras

Tcnica mais amplamente utilizada no desenvolvimento de


sistemas especialistas.
Consiste de uma srie de regras que podem ser aplicadas
repetidamente a uma coleo de fatos.

Fatos so as situaes do mundo real

Regras so sentenas que definem um conjunto de aes a serem


executadas em determinada situao.

Regras

So semelhantes a instrues if-else

Ex:
If nota > 7 and frequencia > 75%
then aprovado
end

Arquitetura dos SBRs

Rule Base (Base de regras)

uma espcie de base de dados que, em vez de


dados, contm as regras do sistema.
As regras assumem a forma de: Se x ento y, em
que x a descrio de determinada situao e y a
ao desencadeada como consequncia.

The Working Memory (Memria de trabalho)

Armazena os fatos.
Os fatos podem ser inseridos, modificados ou
removidos.
Tipicamente tem estrutura de ndices como em um
banco de dados, para otimizar a busca.

The Inference Engine (Motor de inferncia)

O motor de inferncia um elemento essencial para


a existncia de um sistema especialista.
o ncleo do sistema. por intermdio dele que os
fatos e as regras que compem a base de
conhecimento so aplicados no processo de
resoluo do problema.

Quando utilizar Sistemas Baseados em


Regras

Explorar um grande nmero de opes, tpico de


problemas altamente combinatrios.
Apoiar processos decisrios, mesmo com
informaes incompletas e incertas.
Resolver determinados tipos de problemas, nem
sempre passveis de soluo por outros paradigmas
de desenvolvimento de sistemas.

Sistemas Convencionais x SBRs

Programao Convencional (procedural): Utilizada para problemas


bem estruturados, para o qual a soluo pode ocorrer com base em
conhecimento procedimental, expresso por algoritmos.

Programao Baseada em Regras (declarativa): Utilizada para


problemas mal estruturados, para os quais:

No h algoritmos aplicveis para a soluo do problema.

A soluo algortmica consome muito tempo.

Heursticas de apoio soluo podem ser identificadas.

Drools uma mquina de regras que utiliza programao baseada em


regras para implementar sistemas especialistas.

Componentes

Fatos

Base de conhecimento

Stateful Knowledge Session

Fatos em Drools

Fatos so objetos java que podem ser acessados por uma regra

A mquina de regras mantm apenas referencias para os objetos

Para que objetos tenham referncia na mquina, devemos definir


getters e setters nas respectivas classes (ou definir diretamente na
working memory usando declare)
Ex.:
public class Test{
private int id;
public int getId(){return id;}
public void setId(int id){this.id = id;}
public boolean isOk(){return true;}
}

Base de conhecimento

Coleo de regras e definies compiladas atravs do


KnowledgeBuilder

Stateful Knowledge Session

Processo contnuo, que permite a interao e mudana ao longo da


execuo.

Arquivo de regras

Exemplo de aplicao: classificao de


animais

Considere que podemos classificar os animais em 5 grupos


diferentes: selvagens, domsticos, mamferos, aves e peixes.
Selvagens: Animais com ndice de maldade maior ou igual a 0,5;
Domsticos: Animais que ainda no foram classificados e
obrigatrio que haja um co e um gato no universo;

Mamferos: Animais que mamam e ainda no foram classificados;

Aves: Animais que voam e ainda no foram classificados;

Peixes: Animais que nadam e ainda no foram classificados.

Sample.drl

Sample.drl

Arquivo de entrada: animais.txt

Mac;macaco;0.145;mama

Leo;leao;0.984;mama

Matador;gorila;0.405;mama

Toto;cachorro;0.5;mama

Mara;arara;0.14;voa

Gladiador;tigre;0.7894;mama

Mimosa;vaca;0.256;mama

Sangrento;tubarao;0.984;nada

Destruidor;cachorro;0.5;mama

Golf;golfinho;0.146;nada

Miau;gato;0.247;mama

Rex;cachorro;0.045;mama

Rino;rinoceronte;0.897;mama
Pyg;Pygostylia;0.147;voa

Ptero;Pteraspidomorphi;0.514;n
ada

Nemo;anfitriao;0.0025;nada

Phorus;Phorusrhacos;0.650;voa

Animal.java

Classifier.java

AnimalClassifier.java

AnimalRuleClassifier.java

AnimalRuleClassifier.java

Main.java

Sada obtida

Mac macaco Mamifero

Toto cachorro Selvagem

Matador gorila Mamifero

Gladiador tigre Selvagem

Mara arara Ave

Sangrento tubarao Selvagem

Mimosa vaca Mamifero

Golf golfinho Peixe

Destruidor cachorro Selvagem

Miau gato Domestico

Rex cachorro Domestico

Rino rinoceronte Selvagem

Leo leao Selvagem

Ptero Pteraspidomorphi
Selvagem
Nemo anfitriao Peixe
Phorus Phorusrhacos
Selvagem
Pyg Pygostylia Ave

Exemplo 2: regras que levam a regras

Voc est fazendo um sistema de classificao para um hospital. O


problema consiste em analisar um arquivo com nome, presso
arterial, batimento cardaco e nome da famlia e determinar se o
paciente tem doenas cardiolgicas.
Considera-se que um paciente tem doena cardiolgica quando
sua presso arterial est acima de 120 e seus batimentos
cardacos esto acima de 90. Alm disse, analisamos tambm se
h registro de doena na famlia. Caso haja, o paciente tem a
doena.

Entrada: corpohumano.txt

Joao;130;100;Silva

Maria;130;100;Silva

Pedro;10;10;Nenhuma

Arquivo de regras

CorpoHumano.java

Arquivos identicos aos anteriores

CorpoHumanoClassifier.java

CorpoHumanoRuleClassifier.java

Main2.java

Sada obtida:

Joao

Maria

Referncias

http://www.jboss.org/drools/

http://www.inf.ufes.br/~pdcosta/ensino/

http://inf.ufes.br/~jacee/materiais/drools

Você também pode gostar