uso de sistemas especialistas para decisÃo do...

112
UNIVERSIDADE PRESBITERIANA MACKENZIE DANIELA PASOTTO MARCELA GONÇALVES PAZO SILVANA VICENTE LOBÃO USO DE SISTEMAS ESPECIALISTAS PARA DECISÃO DO PERFIL DE UM INVESTIDOR São Paulo 2003

Upload: trankhanh

Post on 11-Nov-2018

217 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: USO DE SISTEMAS ESPECIALISTAS PARA DECISÃO DO …meusite.mackenzie.com.br/rogerio/tgi/2003Jess.pdf · utilizamos o softwareJess (Java Expert System Shell), umshell de sistemas especialistas

UNIVERSIDADE PRESBITERIANA MACKENZIE

DANIELA PASOTTOMARCELA GONÇALVES PAZO

SILVANA VICENTE LOBÃO

USO DE SISTEMAS ESPECIALISTAS PARA DECISÃO DOPERFIL DE UM INVESTIDOR

São Paulo2003

Page 2: USO DE SISTEMAS ESPECIALISTAS PARA DECISÃO DO …meusite.mackenzie.com.br/rogerio/tgi/2003Jess.pdf · utilizamos o softwareJess (Java Expert System Shell), umshell de sistemas especialistas

DANIELA PASOTTOMARCELA GONÇALVES PAZO

SILVANA VICENTE LOBÃO

USO DE SISTEMAS ESPECIALISTAS PARA DECISÃO DOPERFIL DE UM INVESTIDOR

Trabalho apresentado como parte dasexigências para a aprovação do Curso

de Sistema de Informação da Faculdade deComputação e Informática da Universidade

Presbiteriana Mackenzie

ORIENTADOR: ROGÉRIO DE OLIVEIRA

São Paulo2003

Page 3: USO DE SISTEMAS ESPECIALISTAS PARA DECISÃO DO …meusite.mackenzie.com.br/rogerio/tgi/2003Jess.pdf · utilizamos o softwareJess (Java Expert System Shell), umshell de sistemas especialistas

DANIELA PASOTTOMARCELA GONÇALVES PAZO

SILVANA VICENTE LOBÃO

USO DE SISTEMAS ESPECIALISTAS PARA DECISÃO DOPERFIL DE UM INVESTIDOR

Trabalho de Conclusão de Curso apresentado aoCurso de Sistemas de Informação da Universidade

Presbiteriana Mackenzie, para obtenção parcialdo Grau de Bacharel em Sistemas de Informação.

Aprovada em Junho de 2003.

BANCA EXAMINADORA

Prof. Rogério de Oliveira – OrientadorUniversidade Presbiteriana Mackenzie

Prof. Abílio Ribeiro CoelhoUniversidade Presbiteriana Mackenzie

Prof. Nizan OmarUniversidade Presbiteriana Mackenzie

São Paulo1o Semestre / 2003

Page 4: USO DE SISTEMAS ESPECIALISTAS PARA DECISÃO DO …meusite.mackenzie.com.br/rogerio/tgi/2003Jess.pdf · utilizamos o softwareJess (Java Expert System Shell), umshell de sistemas especialistas

RESUMO

Sistemas especialistas são utilizados de forma ainda modesta no desenvolvimento deaplicações comerciais se comparada sua utilização em áreas como as de engenharia,predição ou controle. Em geral, isso se deve ao menor número de soluções disponíveis,como fornecedores e produtos, frente a diversas soluções de suporte ao desenvolvimentotradicional de aplicações. Este estudo explora o uso de tecnologias de sistemasespecialistas baseados em regras no desenvolvimento de aplicações comerciais. Para issoutilizamos o software Jess (Java Expert System Shell), um shell de sistemas especialistasbaseado em Java, para o desenvolvimento de um aplicativo de decisão do perfil deinvestimento do usuário (conservador, moderado ou agressivo). Nesse sistema a base deconhecimento construída permite inferir, através das informações fornecidas pelo usuáriocomo sua situação financeira atual, grau de tolerância a risco e propósito do investimento,o perfil mais adequado e rentável ao investidor. O estudo conclui que essa abordagem podesubstituir e complementar com vantagens a abordagem tradicional do desenvolvimento deaplicações, em particular para a tomada de decisão em investimentos. Ela agrega menortempo e maior flexibilidade ao desenvolvimento, permite superar algumas limitações daprogramação tradicional e pode ser estendida a quaisquer outras aplicações comerciaiscomo vendas, aplicações financeiras ou controle de processos no setor de serviços.

Palavras-chave: sistemas especialistas; Jess; inteligência artificial.

Page 5: USO DE SISTEMAS ESPECIALISTAS PARA DECISÃO DO …meusite.mackenzie.com.br/rogerio/tgi/2003Jess.pdf · utilizamos o softwareJess (Java Expert System Shell), umshell de sistemas especialistas

SUMÁRIO

1 INTRODUÇÃO......................................................................................... 10

2 SISTEMA ESPECIALISTA..................................................................... 14

2.1 INTELIGÊNCIA ARTIFICIAL................................................................. 14

2.2 REPRESENTAÇÃO DO CONHECIMENTO........................................... 19

2.3 SISTEMAS ESPECIALISTAS ................................................................. 21

2.3.1 Conceitos..................................................................................................... 21

2.3.2 Tipos de Sistemas Especialistas.................................................................. 26

2.3.3 Histórico...................................................................................................... 27

2.4 SISTEMA CONVENCIONAL X SISTEMA ESPECIALISTA................. 28

2.5 CONCLUSÃO............................................................................................. 29

3 SISTEMAS ESPECILISTAS BASEADOS EM REGRAS................... 30

3.1 ESTRUTURA.............................................................................................. 31

3.1.1 Base de Conhecimento................................................................................ 31

3.1.2 Motor de Inferência..................................................................................... 32

3.1.2.1 Estrutura de Controle.................................................................................. 34

3.1.2.2 Resolução de Conflito.................................................................................. 38

3.1.2.3 Representação de Incerteza......................................................................... 39

3.1.3 Memória de Trabalho.................................................................................. 40

3.2 AQUISIÇÃO DE CONHECIMENTO........................................................ 41

3.2.1 Tarefas na Aquisição de Conhecimento...................................................... 43

3.2.1.1 Imersão na Literatura................................................................................. 43

3.2.1.2 Entrevistas Abertas ou Não-estruturadas................................................... 44

3.2.1.3 Entrevistas Estruturadas............................................................................. 45

3.2.2 Analisando as Informações.......................................................................... 47

Page 6: USO DE SISTEMAS ESPECIALISTAS PARA DECISÃO DO …meusite.mackenzie.com.br/rogerio/tgi/2003Jess.pdf · utilizamos o softwareJess (Java Expert System Shell), umshell de sistemas especialistas

LISTA DE TABELAS

Tabela 1 - Funcionamento do Motor de Inferência Verificando os Fatos eDisparando a Regra para Resultar na Decisão...................................... 33

Tabela 2 - Base de Conhecimento (Encadeamento Progressivo)........................... 34

Tabela 3 - Teste do Encadeamento Progressivo..................................................... 35

Tabela 4 - Base de Conhecimento (Encadeamento Regressivo)............................. 36

Tabela 5 - Diferenças entre Encadeamento Progressivo x EncadeamentoRegressivo.............................................................................................. 36

Tabela 6 - Conceitos de Métodos para Resolução de Incerteza.............................. 39

Tabela 7 - Tabela de Possibilidades de Respostas para Definição do Tipode Renda................................................................................................. 75

Tabela 8 - Tabela de Possibilidades de Respostas para Definição do Tipo dePerfil Econômico................................................................................... 76

Tabela 9 - Tabela de Possibilidades de Respostas para Definição do Tipode Tolerância à Riscos........................................................................... 78

Tabela 10 - Tabela de Possibilidades de Respostas para Definição do Tipo dePerfil de Investidor................................................................................. 80

Page 7: USO DE SISTEMAS ESPECIALISTAS PARA DECISÃO DO …meusite.mackenzie.com.br/rogerio/tgi/2003Jess.pdf · utilizamos o softwareJess (Java Expert System Shell), umshell de sistemas especialistas

LISTA DE FIGURAS

Figura 1 - Funcionamento do Motor de Inferência.................................................... 33

Figura 2 - Demonstração do Método de Busca (em Profundidade ou em Nível)através de Encadeamento Progressivo e Regressivo................................ 38

Figura 3 - Arquitetura de Sistemas Especialistas Baseados em Regras.................... 41

Figura 4 - Separação de um Conjunto de Objetos em Dois Objetos Feita por umEspecialista Segundo o Critério “Veículos e Animais”............................ 46

Figura 5 - O Especialista Separa o Conjunto Um em Dois Conjuntos Segundo oCritério “Veículos Terrestres e Veículos Aquáticos”............................... 47

Figura 6 - Método de Avaliação por Fases............................................................... 52

Figura 7 - Tipos de Perfis do Investidor e Portifólio.(Fonte: Banco Itaú S/A, 2002).................................................................. 72

Page 8: USO DE SISTEMAS ESPECIALISTAS PARA DECISÃO DO …meusite.mackenzie.com.br/rogerio/tgi/2003Jess.pdf · utilizamos o softwareJess (Java Expert System Shell), umshell de sistemas especialistas

10

1 Introdução

Este trabalho tem como objetivo estudar as tecnologias para construção de sistemas

especialistas baseados em regras para o desenvolvimento de aplicações comerciais,

implementando um sistema para auxílio na tomada de decisão do perfil do investidor.

Os computadores em geral executam tarefas definidas pelo homem, que são um

conjunto de instruções que fazem com que o computador armazene, administre e controle

uma série de informações. Esses sistemas podem controlar o saldo da nossa conta bancária,

nossas despesas telefônicas, e até o consumo de combustível dos carros mais sofisticados,

estão preocupados em registrar, controlar eventos e armazenar informações. Esses sistemas

são denominados de sistemas convencionais.

As definições de como representar o conhecimento e seu papel em inteligência

artificial variam bastante, os seres humanos utilizam-se quotidianamente de uma ferramenta

eficiente de representação do conhecimento, que é representado pela língua em que falam e

escrevem. A representação dessa ferramenta para o computador é demasiadamente complexa

sendo necessário a realização de uma infinidade de cálculos para se obter um resultado

próximo ao verdadeiro, mas a questão central é: como transmitir o conhecimento do mundo

para um sistema computacional, dando-lhe uma capacidade adequada de raciocínio, de modo

que este conhecimento possa ser utilizado para permitir ao sistema uma adaptação e

exploração do seu próprio conhecimento? O conhecimento é, antes de mais nada, sempre

relativo a algo. O conhecimento desse “algo” é a capacidade de formar um modelo mental

tanto desse próprio conhecimento como das ações que este mesmo pode proporcionar.

Portanto, o modelo deve descrever tanto o objeto do conhecimento como a sua relação com o

universo. Esses sistemas trabalham com problemas para os quais não existe uma solução

convencional algoritmizada, denominamos esses sistemas de sistemas não-convencionais.

Page 9: USO DE SISTEMAS ESPECIALISTAS PARA DECISÃO DO …meusite.mackenzie.com.br/rogerio/tgi/2003Jess.pdf · utilizamos o softwareJess (Java Expert System Shell), umshell de sistemas especialistas

14

14

2 Sistema Especialista

2.1 Inteligência Artificial

No Renascimento, e com a expansão de um espírito prático e quantitativo, surge à

mecânica e, com ela, uma nova concepção do homem introduzida por Descartes. Ele

acreditava que certas atividades humanas poderiam ser realizadas por máquinas, mas com

algumas restrições.

Leibnitz, parte do princípio que uma máquina poderia ser capaz de deduzir, dando

início à pesquisa em inteligência artificial. Para ele, o pensamento é redutível ao cálculo (pela

lógica), logo, uma máquina capaz de executar logicamente operações algébricas, poderia,

através da lógica formalizada, raciocinar.

George Boole, segue as idéias de Leibnitz, chegando a matematização da lógica, que

veio receber o nome de lógica booleana. Consegue assim reduzi-la a um simples cálculo, que

não precisava ser memorizado, como as regras lógicas e as figuras silogísticas, mas que

poderia ser aprendido por qualquer um, devido à sua simplicidade.

Em 1879, na lógica dos predicados, proposta por Gottlob Frege, que tinha como

objetivo analisar a estrutura formal do pensamento humano, sendo, atualmente, a base para a

linguagem de programação Prolog (FISCHLER & FISCHLER, 1987).

No século XIX, surge a figura de Alan Turing, que propõe o chamado jogo da

imitação. Este jogo é feito da seguinte forma: existem 3 participantes, uma máquina e duas

pessoas, sendo que a máquina e uma das pessoas ficam escondidas enquanto a outra conversa

com ambas. O homem tem que descobrir quem é máquina e quem é homem. Se ele errar, isto

Page 10: USO DE SISTEMAS ESPECIALISTAS PARA DECISÃO DO …meusite.mackenzie.com.br/rogerio/tgi/2003Jess.pdf · utilizamos o softwareJess (Java Expert System Shell), umshell de sistemas especialistas

30

30

3 Sistemas Especialistas Baseados em Regras

Os sistemas especialistas baseados em regras capturam o conhecimento e raciocínio de

um especialista humano e armazena-os na forma de regras. Esses sistemas surgiram no início

dos anos 70 e difundiram-se comercialmente nos anos 80. É composto por uma base de

conhecimento, uma máquina de inferência e uma memória de trabalho, funcionam

essencialmente com regras de negócio que trazem diferentes fragmentos de conhecimento, e

essas regras nesta tecnologia, são controladas por um processo interno denominado motor de

inferência. O princípio do motor de inferência consiste em verificar premissas e conclusões

das regras, encadeando-as de forma lógica. Sempre que existe uma regra com informações

conhecidas em suas premissas ela é disparada e assim que gera alguma conclusão, o motor de

inferência verifica se esta conclusão pode ser premissa de uma outra regra.

Esses sistemas podem ser de dois tipos: encadeamento progressivo (forward chaining)

ou de encadeamento regressivo (backward chaining), na qual o conhecimento diagnóstico dos

especialistas do domínio é previamente codificado. O sistema progressivo começa com os

fatos iniciais e usa as regras para chegar a novas conclusões (ou tomar algumas ações) dados

aqueles fatos. O sistema regressivo começa com algumas hipóteses (ou objetivos) que

tentamos provar, e fica procurando por regras que lhe permitem concluir aquela hipótese,

talvez criando novos sub-objetivos a provar durante o caminho. Sistemas regressivos são ditos

“dados dirigidos” (data-driven) enquanto os regressivos são ditos “metas dirigidas” (goal-

driven).

Page 11: USO DE SISTEMAS ESPECIALISTAS PARA DECISÃO DO …meusite.mackenzie.com.br/rogerio/tgi/2003Jess.pdf · utilizamos o softwareJess (Java Expert System Shell), umshell de sistemas especialistas

57

57

4 Jess (Java Expert System Shell)

Jess (Java Expert System Shell) foi desenvolvido por Ernest Friedmal-Hill no Sandia

National Lab como parte de um projeto interno de pesquisa. A primeira versão do Jess foi

escrita em 1995, quando Java era ainda uma linguagem nova. É um “script shell” para

construção de sistemas especialistas baseado em regras inteiramente desenvolvido em Java da

Sun Microsystems e possui um ambiente similar a linguagem de programação CLIPS (C

Language Integrated Production System) desenvolvida pela NASA.

O Jess utiliza um algoritmo especial chamado Rete para emparelhar as regras e os

fatos, isto o torna mais rápido, podendo ser utilizado de duas maneiras, a primeira sendo uma

máquina de inferência, ou seja, um tipo especial de programa que aplica de maneira eficiente

às regras aos dados. Geralmente as regras representam o conhecimento heurístico de um

especialista humano em um certo domínio, e a base de conhecimento representa o estado de

uma situação envolvida, neste caso pode-se dizer que tem-se um sistema especialista. Mas a

linguagem Jess é uma linguagem de programação de propósito geral e pode acessar

diretamente todas as classes e bibliotecas Java. Por esta razão, Jess é muito usado como

ambiente de desenvolvimento rápido de aplicações e scripts. Enquanto o código Java tem que

ser compilado antes de rodar, uma linha de código do Jess é executada imediatamente após

ser digitado. Isto permite que os usuários experimentem as API´s Java interativamente e

desenvolvam programas incrementalmente.

4.1 Utilização do Jess

Page 12: USO DE SISTEMAS ESPECIALISTAS PARA DECISÃO DO …meusite.mackenzie.com.br/rogerio/tgi/2003Jess.pdf · utilizamos o softwareJess (Java Expert System Shell), umshell de sistemas especialistas

69

5 Aplicação para Definição de Perfil do Investidor

Fundo de investimentos é como se fosse um “condomínio”. Investidores depositam

dinheiro e o administrador deste “condomínio” define estratégias de investimento para

oferecer, aos investidores, rentabilidade aos recursos aplicados. Os fundos são compostos por

vários aplicadores que juntos, detém maior poder de compra e podem investir em vários

ativos financeiros possibilitando a diversificação de portifólio. No ato da aplicação em um

fundo, o cliente compra um certo número de cotas. Dia à dia, o valor das cotas pode variar

conforme as alterações nos valores dos ativos que compõem a carteira do fundo.

Antes de começar a fazer uma investimento, é fundamental escolher o perfil do

investidor, para que as aplicações possam atender os interesses do investidor em questão.

Através de pesquisas realizadas em duas empresas financeiras, Banco Itaú S/A e

Investshop, podemos definir o perfil do investidor e escolher o investimento mais adequado

(para obter melhor resultado), com características:

• rentabilidade: é o grau de êxito econômico de uma pessoa física/jurídica em

relação ao capital investido (lucro);

• risco: é grau de tolerância e risco que o investidor possui, indica o quanto ele deve

balancear a composição dos seus investimentos, de acordo com seus objetivos de

rentabilidade. Existem aqueles investidores que aceitam correr algum tipo de risco,

buscando rentabilidades mais atrativas. Outros não querem correr o risco de

perdas, priorizando a segurança em suas aplicações. É de extrema importância que

o investidor conheça sua reação ao risco antes de decidir como vai aplicar seu

dinheiro para que não tenha futuros aborrecimentos;

• liquidez: é prazo de retorno esperado de um investimento. Pode ser a pequeno,

médio e logo prazo, de acordo com as metas e estilo de vida do investidor.

Page 13: USO DE SISTEMAS ESPECIALISTAS PARA DECISÃO DO …meusite.mackenzie.com.br/rogerio/tgi/2003Jess.pdf · utilizamos o softwareJess (Java Expert System Shell), umshell de sistemas especialistas

85

CONCLUSÃO

Concluímos que a inteligência artificial concentra seus estudos em dar aos

computadores habilidades normalmente associadas aos seres humanos, como compreensão da

linguagem natural, resolução de problemas e a capacidade de aprender por si mesmos e busca

para construir entidades de inteligência e compreendê-las, isto é, uma ciência que busca

desenvolver a capacidade de uma máquina imitar o raciocínio humano.

Sistemas especialistas são aplicações da inteligência artificial, planejados para adquirir

e disponibilizar o conhecimento operacional de um especialista humano, além de inferir

conclusões, ter capacidade de aprender novos conhecimentos e, desse modo melhorar o seu

desempenho de raciocínio, e a qualidade de suas decisões.

Os sistemas especialistas baseados em regras, capturam o conhecimento e raciocínio

de um especialista humano e armazena-os na forma de regra na base de conhecimento. Este

sistema processa uma informação específica de problema contida na memória de trabalho,

combinando a num procedimento de casamento, com um conjunto de regras contido na base

de conhecimento, e usa uma máquina de inferência para concluir ou deduzir uma nova

informação.

Com o conceito de sistemas especialistas baseados em regras adquirido, optamos pelo

desenvolvimento de um aplicativo que permite definir o perfil de investidor do usuário. Essa

aplicação apresenta duas características que a tornam bastante adequada ao nosso propósito:

por um lado pode ser encontrada em inúmeros aplicativos e sites comerciais, como os de

bancos, corretoras de valores e sites consultoria de investimentos; por outro nos permite

explorar algumas limitações da programação e desenvolvimento tradicionais que podem ser

adequadamente endereçadas por sistemas especialistas baseados em regras, como diferentes

graus de confiança das informações.

Page 14: USO DE SISTEMAS ESPECIALISTAS PARA DECISÃO DO …meusite.mackenzie.com.br/rogerio/tgi/2003Jess.pdf · utilizamos o softwareJess (Java Expert System Shell), umshell de sistemas especialistas

87

Referências

IGNIZIO, James P. Introduction to Expert Systems. United State of America: McGraw-Hill,

1991.393p.

HOLTZ, Frederick. Sistemas Especialistas: Programando em turbo C. Rio de

Janeiro: Campus, 1991.241p.

RUSSELL, Stuart J.; NORVIG, Peter. Artificial Intelligence A Modern Approach. New

Jersey: Prentice-Hall, 1995.903p.

SCHALKOFF, Robert J. Artificial Intelligence. United State of America:

McGraw-Hill, 1990.643p.

KASABOV, Nikola K. Foundations of Neural Networks: Fuzzy Systems, and

knowledge. United State of America: A Bradford Book, 1996.547p.

HOLTZ, Frederick. Sistemas Especialistas: Programando em turbo C. Rio de

Janeiro: Campus, 1991.241p.

NILSSON, Nils J. Artificial Intelligence : A new synthesis. California : Morgan

Kaufmann Publishers Inc, 1998. 493p.

KOSKO, Bart. Fuzzy Engineering. New Jersey: Prentice Hall, 1997.549p.

HARYKIN, Simon. Neural Networks: A comprehensive foundation. 2nd ed. United State of

America: Prentice Hall, 1999.842p.

SOUCEK, Branco. Fuzzy, Holographic and Paralell Intelligence The sixth – generation

Breakthrought. United State of America: A Willey – Interscience Publication, 1992.350p.

RICH, E.; KNIGHT, K. Artificial Intelligence. 2nd ed. United State of America:

McGraw-Hill, 1991.621p.

RICH, Elaine. Inteligência Artificial. Brasil: McGraw-Hill, 1988.621p.

Page 15: USO DE SISTEMAS ESPECIALISTAS PARA DECISÃO DO …meusite.mackenzie.com.br/rogerio/tgi/2003Jess.pdf · utilizamos o softwareJess (Java Expert System Shell), umshell de sistemas especialistas

91

Apêndices

1. Programa

Abaixo o programa fonte, da aplicação apresentada neste trabalho:

(deftemplate usuariorenda

(slot estadocivil)

(slot dependentes)

(slot divida)

)

(deftemplate caracteristicasrenda

(slot renda)

)

(deftemplate usuarioeconomico

(slot economiza)

(slot reserva)

)

(deftemplate caracteristicaseconomico

(slot economico)

)

(deftemplate usuariotolerancia

(slot tipo)

)

(deftemplate usuarioinvestimento

(slot investiu)

)

(deftemplate usuariograusatisfacao

Page 16: USO DE SISTEMAS ESPECIALISTAS PARA DECISÃO DO …meusite.mackenzie.com.br/rogerio/tgi/2003Jess.pdf · utilizamos o softwareJess (Java Expert System Shell), umshell de sistemas especialistas

92

(slot grau (type integer))

)

(defglobal ?*nome* = voce)

(defrule pergunta-usuario

=>

(printout t "Digite seu nome: ")

(bind ?*nome* (read))

(printout t crlf crlf)

(printout t " 1. Estado civil"crlf)

(printout t " a) casado" crlf)

(printout t " b) solteiro/viuvo" crlf)

(printout t " Digite sua opcao: ")

(if (eq (read) a) then

(bind ?alternativa1 casado)

else

(bind ?alternativa1 solteiro)

)

(printout t crlf crlf)

(printout t " 2. Possui dependentes (pais, filhos ou parentes?)" crlf)

(printout t " a) sim" crlf)

(printout t " b) nao" crlf)

(printout t " Digite sua opcao: ")

(if (eq (read) a) then

(bind ?alternativa2 possui)

else

(bind ?alternativa2 naopossui)

)

(printout t crlf crlf)

(printout t "3. Voce tem algum tipo de divida, como emprestimos, financiamentos ou utiliza o

rotativo do cartao de credito pagando o minimo permitido e rola o restante?" crlf)

(printout t " a) Nao, nao tenho nenhuma divida pessoal. Sempre faco o planejamento

necessario para poder comprar as coisas a vista e com desconto" crlf)

Page 17: USO DE SISTEMAS ESPECIALISTAS PARA DECISÃO DO …meusite.mackenzie.com.br/rogerio/tgi/2003Jess.pdf · utilizamos o softwareJess (Java Expert System Shell), umshell de sistemas especialistas

93

(printout t " b) Sim, mas vou quita-la dentro de 6 meses. Alem disso, tomei a precaucao de

calcular na ponta do lapis como essa divida iria progredir" crlf)

(printout t " Digite sua opcao: ")

(if (eq (read) a) then

(bind ?alternativa3 semdivida)

else

(bind ?alternativa3 comdivida)

)

(printout t crlf crlf)

(assert (usuariorenda (estadocivil ?alternativa1) (dependentes ?alternativa2) (divida

?alternativa3)))

(printout t "4. Quanto voce acredita que realmente pode economizar todo mes sem afetar sua

qualidade de vida atual?" crlf)

(printout t " a) Acredito que conseguiria economizar algo entre 10% e 30% do total da minha

atual receita mensal" crlf)

(printout t " b) So conseguiria fazer sobrar algum dinheiro se reduzisse meu atual padrao de

consumo. Mas isso afetaria minha qualidade de vida" crlf)

(printout t " Digite sua opcao: ")

(if (eq (read) a) then

(bind ?alternativa4 sim)

else

(bind ?alternativa4 nao)

)

(printout t crlf crlf)

(printout t "5. Qual a reserva financeira estrategica (que pode ser sacada rapidamente) que

voce possui para situacoes como o desemprego ou o mau desempenho do negocio proprio? "

crlf)

(printout t " a) Tenho uma reserva financeira suficiente para cobrir um ano ou mais sem

ganhos" crlf)

Page 18: USO DE SISTEMAS ESPECIALISTAS PARA DECISÃO DO …meusite.mackenzie.com.br/rogerio/tgi/2003Jess.pdf · utilizamos o softwareJess (Java Expert System Shell), umshell de sistemas especialistas

94

(printout t " b) Nao tenho tal reserva" crlf)

(printout t " Digite sua opcao: ")

(if (eq (read) a) then

(bind ?alternativa5 tenho)

else

(bind ?alternativa5 naotenho)

)

(printout t crlf crlf)

(assert (usuarioeconomico (economiza ?alternativa4) (reserva ?alternativa5)))

(printout t "6. Voce ja realizou algum tipo de investimento anterior (Poupanca,Renda Fixa,

Acoes, etc)? " crlf)

(printout t " a) sim" crlf)

(printout t " b) nao" crlf)

(printout t " Digite sua opcao: ")

(if (eq (read) a) then

(bind ?alternativa6 sim)

else

(bind ?alternativa6 nao)

)

(assert (usuarioinvestimento (investiu ?alternativa6)))

(printout t crlf crlf)

)

(defrule R0

(usuarioinvestimento (investiu sim))

=>

(printout t "7. Qual grau de satisfacao sobre esse investimento numa escala de 1% ate 100%?

" crlf)

(printout t " Digite o valor: ")

(bind ?leitura (read))

(if (and(>= ?leitura 1)(<= ?leitura 33)) then

(bind ?alternativa7 1/33)

else

Page 19: USO DE SISTEMAS ESPECIALISTAS PARA DECISÃO DO …meusite.mackenzie.com.br/rogerio/tgi/2003Jess.pdf · utilizamos o softwareJess (Java Expert System Shell), umshell de sistemas especialistas

95

(if (and (>= ?leitura 34)(<= ?leitura 66)) then

(bind ?alternativa7 34/66)

else

(bind ?alternativa7 67/100)

)

)

(assert (usuariograusatisfacao (grau ?alternativa7)))

(printout t crlf crlf)

)

(defrule R1

(usuariorenda (estadocivil casado) (dependentes possui) (divida comdivida))

=> (assert (caracteristicasrenda (renda rendacomprometida)))

)

(defrule R2

(usuariorenda (estadocivil casado) (dependentes possui) (divida semdivida))

=>(assert (caracteristicasrenda (renda rendacomprometida)))

)

(defrule R3

(usuariorenda (estadocivil casado) (dependentes naopossui) (divida comdivida))

=>(assert (caracteristicasrenda (renda rendacomprometida)))

)

(defrule R4

(usuariorenda (estadocivil casado) (dependentes naopossui) (divida semdivida))

=>(assert (caracteristicasrenda (renda rendanaocomprometida)))

)

(defrule R5

(usuariorenda (estadocivil solteiro) (dependentes naopossui) (divida semdivida))

=>(assert (caracteristicasrenda (renda rendanaocomprometida)))

)

(defrule R6

(usuariorenda (estadocivil solteiro) (dependentes possui) (divida comdivida))

=>(assert (caracteristicasrenda (renda rendacomprometida)))

)

(defrule R7

Page 20: USO DE SISTEMAS ESPECIALISTAS PARA DECISÃO DO …meusite.mackenzie.com.br/rogerio/tgi/2003Jess.pdf · utilizamos o softwareJess (Java Expert System Shell), umshell de sistemas especialistas

96

(usuariorenda (estadocivil solteiro) (dependentes possui) (divida semdivida))

=>(assert (caracteristicasrenda (renda rendanaocomprometida)))

)

(defrule R8

(usuariorenda (estadocivil solteiro) (dependentes naopossui) (divida comdivida))

=>(assert (caracteristicasrenda (renda rendacomprometida)))

)

(defrule R9

(usuarioeconomico (economiza sim) (reserva tenho))

=>(assert (caracteristicaseconomico (economico sim)))

)

(defrule R10

(usuarioeconomico (economiza sim) (reserva naotenho))

=>(assert (caracteristicaseconomico (economico nao)))

)

(defrule R11

(usuarioeconomico (economiza nao) (reserva tenho))

=>(assert (caracteristicaseconomico (economico sim)))

)

(defrule R12

(usuarioeconomico (economiza nao) (reserva naotenho))

=>(assert (caracteristicaseconomico (economico nao)))

)

(defrule R13

(caracteristicasrenda (renda rendacomprometida))

(caracteristicaseconomico (economico sim))

=>(assert (usuariotolerancia (tipo poucotolerante)))

)

(defrule R14

(caracteristicasrenda (renda rendacomprometida))

(caracteristicaseconomico (economico nao))

=>(assert (usuariotolerancia (tipo naotolerante)))

)

(defrule R15

Page 21: USO DE SISTEMAS ESPECIALISTAS PARA DECISÃO DO …meusite.mackenzie.com.br/rogerio/tgi/2003Jess.pdf · utilizamos o softwareJess (Java Expert System Shell), umshell de sistemas especialistas

97

(caracteristicasrenda (renda rendanaocomprometida))

(caracteristicaseconomico (economico sim))

=>(assert (usuariotolerancia (tipo tolerante)))

)

(defrule R16

(caracteristicasrenda (renda rendanaocomprometida))

(caracteristicaseconomico (economico nao))

=>(assert (usuariotolerancia (tipo poucotolerante)))

)

(defrule R17

(usuariotolerancia (tipo tolerante))

(usuarioinvestimento (investiu sim))

(usuariograusatisfacao (grau 1/33))

=>(assert (perfil moderado))

)

(defrule R18

(usuariotolerancia (tipo tolerante))

(usuarioinvestimento (investiu sim))

(usuariograusatisfacao (grau 34/66))

=>(assert (perfil agressivo))

)

(defrule R19

(usuariotolerancia (tipo tolerante))

(usuarioinvestimento (investiu sim))

(usuariograusatisfacao (grau 67/100))

=>(assert (perfil agressivo))

)

(defrule R20

(usuariotolerancia (tipo poucotolerante))

(usuarioinvestimento (investiu sim))

(usuariograusatisfacao (grau 1/33))

=>(assert (perfil conservador))

)

(defrule R21

Page 22: USO DE SISTEMAS ESPECIALISTAS PARA DECISÃO DO …meusite.mackenzie.com.br/rogerio/tgi/2003Jess.pdf · utilizamos o softwareJess (Java Expert System Shell), umshell de sistemas especialistas

98

(usuariotolerancia (tipo poucotolerante))

(usuarioinvestimento (investiu sim))

(usuariograusatisfacao (grau 34/66))

=>(assert (perfil moderado))

)

(defrule R22

(usuariotolerancia (tipo poucotolerante))

(usuarioinvestimento (investiu sim))

(usuariograusatisfacao (grau 67/100))

=>(assert (perfil moderado))

)

(defrule R23

(usuariotolerancia (tipo naotolerante))

(usuarioinvestimento (investiu sim))

(usuariograusatisfacao (grau 1/33))

=>(assert (perfil conservador))

)

(defrule R24

(usuariotolerancia (tipo naotolerante))

(usuarioinvestimento (investiu sim))

(usuariograusatisfacao (grau 34/66))

=>(assert (perfil conservador))

)

(defrule R25

(usuariotolerancia (tipo naotolerante))

(usuarioinvestimento (investiu sim))

(usuariograusatisfacao (grau 67/100))

=>(assert (perfil moderado))

)

(defrule R26

(usuariotolerancia (tipo tolerante))

(usuarioinvestimento (investiu nao))

=>

(assert (usuariograusatisfacao (grau 0)))

Page 23: USO DE SISTEMAS ESPECIALISTAS PARA DECISÃO DO …meusite.mackenzie.com.br/rogerio/tgi/2003Jess.pdf · utilizamos o softwareJess (Java Expert System Shell), umshell de sistemas especialistas

99

(assert (perfil agressivo))

)

(defrule R27

(usuariotolerancia (tipo poucotolerante))

(usuarioinvestimento (investiu nao))

=>

(assert (usuariograusatisfacao (grau 0)))

(assert (perfil moderado))

)

(defrule R28

(usuariotolerancia (tipo naotolerante))

(usuarioinvestimento (investiu nao))

=>

(assert (usuariograusatisfacao (grau 0)))

(assert (perfil conservador))

)

(defrule R29

(perfil conservador)

=>

(printout t crlf crlf)

(printout t ?*nome* crlf crlf)

(printout t "Seu perfil e CONSERVADOR" crlf crlf)

(printout t "Este e o perfil de quem nao gosta de correr riscos. Nao esta disposto a aplicar

dinheiro em investimentos que oscilam muito ou sua atual situacao de vida nao permite

investimentos que envolvam risco. Recomendavel aplicar em poupanca.")

)

(defrule R30

(perfil agressivo)

=>

(printout t crlf crlf)

(printout t ?*nome* crlf crlf)

(printout t "Seu perfil e AGRESSIVO" crlf crlf)

(printout t "Este e o perfil de quem esta disposto a correr risco para conseguir a maxima

rentabilidade possivel para o dinheiro. Quem esta propenso a investir a maior parte de seu

Page 24: USO DE SISTEMAS ESPECIALISTAS PARA DECISÃO DO …meusite.mackenzie.com.br/rogerio/tgi/2003Jess.pdf · utilizamos o softwareJess (Java Expert System Shell), umshell de sistemas especialistas

100

dinheiro em aplicacoes que oscilam muito, destinando parcela minima para aplicacoes mais

seguras. Recomendavel aplicar em acoes." crlf)

)

(defrule R31

(perfil moderado)

=>

(printout t crlf crlf)

(printout t ?*nome* crlf crlf)

(printout t "Seu perfil e MODERADO" crlf crlf)

(printout t "Este e o perfil de quem esta disposto a correr pouco risco para obter uma

rentabilidade maior. Quem esta propenso a aplicar uma parcela significativa do dinheiro em

investimentos que oscilam muito destinando o restante para aplicacoes mais seguras.

Recomendavel aplicar em Renda Fixa / Poupanca.")

)

(run)

Page 25: USO DE SISTEMAS ESPECIALISTAS PARA DECISÃO DO …meusite.mackenzie.com.br/rogerio/tgi/2003Jess.pdf · utilizamos o softwareJess (Java Expert System Shell), umshell de sistemas especialistas

101

2. Artigo

Abaixo o artigo submetido ao III Congresso Brasileiro de Computação (CBComp 3)

em 07 de abril de 2003:

USO DE SISTEMA ESPECIALISTA PARA DECISÃO DO PERFIL DE UM

INVESTIDOR VIA WEB

Marcela Gonçalves Daniela Pasotto

[email protected] [email protected]

Silvana Vicente Rogério de Oliveira

[email protected] [email protected]

Faculdade de Computação e Informática

Universidade Presbiteriana Mackenzie

R. da Consolacão, 895 - Prédio 13

01302-907, São Paulo, SP - Brasil

RESUMO

Ainda existe uma forte resistência ao uso de sistemas especialistas em sistemas comerciais,

seja pela falta de conhecimento por parte dos fornecedores de aplicações, seja pela falta de

ferramentas e soluções, em contraposição a um amplo suporte às técnicas tradicionais de

desenvolvimento. Esse estudo explora o uso de uma ferramenta de construção de sistemas

especialistas (o Jess) no desenvolvimento de um aplicativo para decisão do perfil de

investidor do usuário (conservador, moderado ou agressivo) mostrando alternativas de como

essa ferramenta pode ser facilmente integrada a técnicas amplamente utilizadas no

desenvolvimento de aplicações comerciais (Java e tecnologias Web), agregando vantagens ao

desenvolvimento e permitindo superar algumas das limitações da programação tradicional.

Palavras-chave: sistemas especialistas, Java, aquisição do conhecimento, IA.

Page 26: USO DE SISTEMAS ESPECIALISTAS PARA DECISÃO DO …meusite.mackenzie.com.br/rogerio/tgi/2003Jess.pdf · utilizamos o softwareJess (Java Expert System Shell), umshell de sistemas especialistas

102

ABSTRACT

Commercial systems have still been avoid to use expert system, either for the lack of

knowledge by the applications suppliers, either for the lack of tools and solutions, in

contraposition to a large number of the traditional techniques and tools to develop standard

applications. This study investigates the use of a tool for build expert systems (the Jess, a

expert system shell) in the development of an application that decides the user’s investor

financial skill (conservative, moderate or aggressive). It shows alternatives of how this tool

can be integrated to the most common and up to date techniques have been used in

development of commercial systems (such as Java and Web technologies), adding advantages

and allowing to surpass some limitations of the traditional programming.

Keywords: expert systems, Java, knowledge acquisition, IA.

Categoria do Artigo: (X) Sessões Técnicas

Sendo Sessão Técnica, o artigo enquadra-se na seguinte área: (X) Inteligência Artificial

USO DE SISTEMA ESPECIALISTA PARA DECISÃO DO PERFIL DE UM

INVESTIDOR VIA WEB

RESUMO

Ainda existe uma forte resistência ao uso de sistemas especialistas em sistemas comerciais,

seja pela falta de conhecimento por parte dos fornecedores de aplicações, seja pela falta de

ferramentas e soluções, em contraposição a um amplo suporte às técnicas tradicionais de

desenvolvimento. Esse estudo explora o uso de uma ferramenta de construção de sistemas

especialistas (o Jess) no desenvolvimento de um aplicativo para decisão do perfil de

investidor do usuário (conservador, moderado ou agressivo) mostrando alternativas de como

essa ferramenta pode ser facilmente integrada a técnicas amplamente utilizadas no

desenvolvimento de aplicações comerciais (Java e tecnologias Web), agregando vantagens ao

desenvolvimento e permitindo superar algumas das limitações da programação tradicional.

Palavras-chave: sistemas especialistas, Java, aquisição do conhecimento, IA.

ABSTRACT

Commercial systems have still been avoid to use expert system, either for the lack of

knowledge by the applications suppliers, either for the lack of tools and solutions, in

contraposition to a large number of the traditional techniques and tools to develop standard

Page 27: USO DE SISTEMAS ESPECIALISTAS PARA DECISÃO DO …meusite.mackenzie.com.br/rogerio/tgi/2003Jess.pdf · utilizamos o softwareJess (Java Expert System Shell), umshell de sistemas especialistas

103

applications. This study investigates the use of a tool for build expert systems (the Jess, a

expert system shell) in the development of an application that decides the user’s investor

financial skill (conservative, moderate or aggressive). It shows alternatives of how this tool

can be integrated to the most common and up to date techniques have been used in

development of commercial systems (such as Java and Web technologies), adding advantages

and allowing to surpass some limitations of the traditional programming.

Keywords: expert systems, Java, knowledge acquisition, IA.

1 Introdução

Sistemas especialistas e técnicas de inteligência artificial em geral, não obstante os

resultados que possam proporcionar, ainda são utilizados de forma bastante modesta em

aplicativos comerciais quando comparamos sua utilização em outras áreas de uso de sistemas

computacionais (controle, bio-medicina, sistemas de suporte a decisão, diagnóstico de falhas,

planejamento etc.) e frente às inúmeras soluções de suporte ao desenvolvimento tradicional

(LIU, 2000). De fato as metodologias tradicionais de desenvolvimento e seus instrumentos,

como por exemplo, modelagem de dados, UML e patterns, raramente contemplam soluções

como aquisição e representação do conhecimento, ou mecanismos de inferência ou lógica

difusa.

Nesse estudo buscamos mostrar a viabilidade e as vantagens do uso de sistemas

especialistas no desenvolvimento de aplicações comerciais, como processamento de

operações de venda, aplicações financeiras e controle de processos no setor de serviços. Para

isso utilizamos um shell para construção de sistemas especialistas baseados em regras, o Jess

(FRIEDMAN-HILL, 2002), que permite uma fácil integração das tecnologias atuais de

desenvolvimento de aplicações (aplicações Web, e as diversas tecnologias Java como

Javabeans e Servlets – ver (DEITEL, 2000)).

Como aplicação dessa arquitetura optamos pelo desenvolvimento de um aplicativo que

permite definir o perfil de investidor do usuário. Essa aplicação apresenta duas características

que a tornam bastante adequada ao nosso propósito: por um lado pode ser encontrada em

inúmeros aplicativos e sites comerciais, como os de bancos, corretoras de valores e sites

consultoria de investimentos; por outro permite explorar algumas limitações da programação

Page 28: USO DE SISTEMAS ESPECIALISTAS PARA DECISÃO DO …meusite.mackenzie.com.br/rogerio/tgi/2003Jess.pdf · utilizamos o softwareJess (Java Expert System Shell), umshell de sistemas especialistas

104

e desenvolvimento tradicionais que podem ser adequadamente endereçadas por sistemas

especialistas baseados em regras, como diferentes graus de confiança das informações.

2 Descrição do modelo

Jess (Java Expert System Shell) é um “script shell” para construção de sistemas

especialistas baseados em regras inteiramente desenvolvido em Java (FRIEDMAN-HILL,

2002). Originalmente baseado na linguagem CLIPS (RILEY, 2002), o Jess ainda mantêm

compatibilidade em grande parte com a linguagem CLIPS, mas adiciona uma série de

facilidades. Entre elas o Jess integra sua linguagem de scripts, sua base de conhecimento e sua

máquina de inferência ao ambiente Java (ABULSOROUR, 2003) e suas tecnologias como

J2EE, Javabeans e padrões de projeto (“patterns”) (DEITEL, 2000). Essa possibilidade

permitiu o surgimento de algumas extensões do Jess incorporando, ora outras tecnologias de

inteligência artificial, como a integração com lógica difusa (“fuzzy”) indicando valores de

confiança às asserções de sua base de conhecimento; ora tecnologias relacionadas ao

ambiente Java como tecnologias JDBC e XML (ABULSOROUR, 2003).

Java é uma linguagem orientada a objetos que vem se constituindo em padrão aberto de

linguagem para o desenvolvimento de aplicações web. Grande parte dos sistemas especialistas

foram construídos usando técnicas convencionais de programação estruturada. Não obstante

esse sucesso, as técnicas de orientação a objeto mostram-se mais flexíveis e naturais para o

desenvolvimento sobretudo de aplicações complexas contexto onde, em geral, encontram-se

os sistemas especialistas. A modelagem orientada a objetos, mais próxima de como

modelamos o mundo real, também parece mais adequada para o desenvolvimento de sistemas

especialistas em que o sistema parece “agir” como um humano especialista (LIU, 2000).

2.1 Integrando o sistema especialista a uma aplicação

Aplicações em Jess podem ser desenvolvidas de diferentes maneiras (CARLSON, 1998)

(FRIEDMAN-HILL, 2002):

1. Podem ser desenvolvidas fazendo uso scripts na linguagem Jess, executando sem o

uso de código Java (scripts em grande parte compatíveis com a linguagem CLIPS) ou

Page 29: USO DE SISTEMAS ESPECIALISTAS PARA DECISÃO DO …meusite.mackenzie.com.br/rogerio/tgi/2003Jess.pdf · utilizamos o softwareJess (Java Expert System Shell), umshell de sistemas especialistas

105

contendo diferentes níveis de código Java (APIs, código Java customizado e scripts

sob a classe main fornecida pelo Jess).

2. Uso de código Java carregando em tempo de execução scripts na linguagem Jess.

3. Uso de código Java interagindo unicamente com a APIs Java do pacote Jess.

Avaliando essas três opções verificamos que a opção (2) é a mais adequada para o

desenvolvimento de um protótipo de aplicação comercial. A opção (1) apresenta a limitação

de restringir-se ao uso limitado de uma linguagem de scripts; a opção (3), parece a mais

adequada, mas não suporta, na presente versão do Jess, todas as suas funcionalidades

(FRIEDMAN-HILL, 2002); a opção (2), por outro lado permite o uso de todos os recursos

proporcionados pelo ambiente Java (“multithread”, “applets”, componentes e outros) e o

acesso completo às funcionalidades do Jess.

Essa opção permite explorarmos todas as funcionalidades do Java. Basicamente

consiste em carregarmos um script de linguagem Jess residente em um “flat file” que contém

a base de conhecimento e regras que compõem a parte “especialista” de nosso sistema. Toda

parte de interface com o usuário, como, interface Web e GUI, lógica adicional da aplicação

(consistências, controle de fluxo da aplicação, acesso a outros objetos e outros) e outras

interfaces, como, acesso à banco de dados, interface com outros sistemas sendo manipuladas

pelo código Java da aplicação. O código a seguir apresenta os principais itens dessa forma de

implementação em um aplicativo Java.

public static void main(String[] argv) throws JessException

{ Rete rete = new Rete();

// Carrega regras para o algoritmo Rete

rete.executeCommand("(Regras.clp)");

rete.executeCommand("(reset)");

// Cria e instancia Beans

...

// Carrega contexto (Beans)

Funcall f = new Funcall("definstance", rete);

f.add(new Value(<values>, RU.ATOM));

f.add(new Value(<bean>));

...

Page 30: USO DE SISTEMAS ESPECIALISTAS PARA DECISÃO DO …meusite.mackenzie.com.br/rogerio/tgi/2003Jess.pdf · utilizamos o softwareJess (Java Expert System Shell), umshell de sistemas especialistas

106

// Submete contexto a máquina de inferência

f.execute(rete.getGlobalContext());

while (<bean>.isIntact())

rete.executeCommand("(run)");

}

}

O Jess utiliza-se da tecnologia de “beans” (componentes Javabeans) para permitir que

as regras tenham acesso aos métodos Get()/Set() das instâncias beans como simples

propriedades dos objetos [6]. Assim as propriedades são lidas e alteradas pela máquina de

inferência do Jess. O padrão JavaBeans ainda possibilita que as modificações nas

propriedades sejam automaticamente notificadas para a máquina de inferência quando

ocorrem.

2.2 Regras para definição do perfil de um investidor

Desenvolvemos uma aplicação com o objetivo definir o perfil de investidor de um

usuário entre 3 categorias: conservador, moderado e agressivo.

Um investidor conservador não está disposto a correr riscos e a aplicar dinheiro em

investimentos com grande oscilação, ou ainda, sua atual situação não permite investimentos

que envolvam altos riscos e que possam comprometer o capital investido. Um investidor

moderado está disposto a correr um risco um risco um pouco mais elevado para obter uma

rentabilidade maior, está propenso a aplicar uma parcela significativa do dinheiro em

investimentos que oscilam muito destinando, o restante, para aplicações mais seguras. Por

último o investidor agressivo está disposto a correr riscos para conseguir a máxima

rentabilidade, está propenso a investir a maior parte de seu dinheiro em aplicações que

apresentam grande oscilação e a destinar uma parcela mínima para aplicações mais seguras

que preservem o capital investido.

Os especialistas buscam propor as opções de investimento mais adequadas ao perfil de

um dado cliente buscando garantir a satisfação do investidor no que se refere à rentabilidade e

à proteção do capital desejada. Para isso desenvolveram uma série de regras que permitem

definir o perfil do investidor através de seu histórico de investimentos, dados pessoais,

Page 31: USO DE SISTEMAS ESPECIALISTAS PARA DECISÃO DO …meusite.mackenzie.com.br/rogerio/tgi/2003Jess.pdf · utilizamos o softwareJess (Java Expert System Shell), umshell de sistemas especialistas

107

intenção do investimento e informações de receita e capital. Essas informações como

aplicações anteriores e satisfação com o retorno obtido (histórico de investimentos), idade,

tipo de profissão, tempo de retorno esperado de uma aplicação (intenção do investimento),

renda e bens do usuário influenciam diferentemente na definição do perfil do investidor, o

qual ainda pode variar ao longo tempo com o histórico do cliente.

Essas regras constituem o material para a construção da base de conhecimento da

nossa aplicação. Para a montagem das regras e fatos da base de conhecimento adotamos uma

abordagem bastante prática baseada em diferentes sites que buscam auxiliar o usuário na

definição de seu perfil de investidor, os quais possuem uma série de questões e

esclarecimentos para o investidor.

2.3 Estrutura de base de conhecimento

Para o desenvolvimento da base de conhecimento o shell de sistema especialista Java

Expert System Shell (JESS) o qual uma máquina de inferência com algoritmo Rete

(RUSSELL, 1995). O JESS oferece uma máquina de inferência tanto com encadeamento para

trás (backward chaining) como encadeamento para frente (foreward chaining) (CHUN,

2001). O encadeamento para trás é o mais empregado e destaca-se como mais intuitivo para o

desenvolvedor, sendo a sua base o mecanismo de recursão (CHUN, 2001), e optamos aqui por

essa forma de encadeamento.

A estrutura básica da aplicação é uma base de conhecimento que armazena um

conjunto de regras, fatos e heurísticas que juntos correspondem ao conhecimento do

especialista no domínio sobre o qual foi construído o sistema. O motor de inferência é

responsável pelo processamento do conhecimento. De forma geral, podemos afirmar que o

processo permite tirar conclusões a partir do conhecimento armazenado, explorando o

encadeamento lógico existente na base de conhecimento.

O encadeamento é realizado a partir de diversas questões feitas para o usuário. Nossa

construção permite que a interface com o usuário e a base de conhecimento sejam

independentes garantindo a flexibilidade da aplicação. As respostas fornecidas criam novos

fatos na base de conhecimento que permitirão deduzir o perfil de investidor do usuário. A

figura 1 mostra de forma esquemática essa estrutura.

Page 32: USO DE SISTEMAS ESPECIALISTAS PARA DECISÃO DO …meusite.mackenzie.com.br/rogerio/tgi/2003Jess.pdf · utilizamos o softwareJess (Java Expert System Shell), umshell de sistemas especialistas

108

Figura 1: Estrutura do sistema especialista.

Iniciamos a construção da base de conhecimento criando templates que são estruturas

para inserção de dados na base no Jess. O templates funcionam como a definição de classes

em um linguagem orientada a objetos onde as variáveis os slots representam as variáveis de

instância da classe. Abaixo a definição do template dadosusuario utilizado para recepcionar as

respostas do usuário:

;; define dados do usuário

(deftemplate dadosusuario

(slot numeropergunta (type integer))

(slot alternativadados)

)

As perguntas feitas ao usuário são implementadas com o conceito de regras, essasregras são definidas no Jess por uma estrutura chamada defrule. Uma regra “dispara” asinstruções à direita da regra (após =>) conforme são satisfeitas as condições do lado esquerdo(anterior a =>). Abaixo uma implementação simples de regra na forma de script shell para ocontrole de fluxo das questões ao usuário.

;; idade do usuário?

Jess

usuárioInterface

doUsuário

MáquinaDe

Inferência

Base deConhecimento

Interface deprogramação

JAVA

Page 33: USO DE SISTEMAS ESPECIALISTAS PARA DECISÃO DO …meusite.mackenzie.com.br/rogerio/tgi/2003Jess.pdf · utilizamos o softwareJess (Java Expert System Shell), umshell de sistemas especialistas

109

(defrule pergunta-usuario

=>

(printout t " 1. Idade" crlf)

(printout t " a) menos de 35 anos" crlf)

(printout t " b) entre 35 e 60 anos" crlf)

(printout t " c) mais de 60 anos" crlf)

(printout t " Opção: ")

(inseredados)

)

Um função chamada “opção” faz a inserção dos fatos na base, depois de realizar aleitura da opção digitada/escolhida pelo usuário. O comando Jess que cria uma função é odeffunction.

;; insere dados na base de conhecimento

(deffunction opção ()

(bind ?x (read))

(assert (respostas (numeropergunta ?*numeropergunta*) (alternativa

?x) (respondida TRUE)))

)

Completada a inserção dos fatos do usuário na base o sistema realiza a verificação das

alternativas. O conhecimento prévio da base atribui diferentes pesos de importância na

definição do perfil para cada uma das questões propostas. A função “resultado”, através do

cálculo obtido, define qual o perfil do investidor conforme uma faixa de valores finais

obtidos. Abaixo uma implementação simplificada da função resultado na forma de script

shell:

;; resultado final

(defrule resultado

=>

(if (< ?*alt* 33) then

(printout t "CONSERVADOR" crlf)

...

else

(if (and (> ?*alt* 34)(< ?*alt* 60)) then

Page 34: USO DE SISTEMAS ESPECIALISTAS PARA DECISÃO DO …meusite.mackenzie.com.br/rogerio/tgi/2003Jess.pdf · utilizamos o softwareJess (Java Expert System Shell), umshell de sistemas especialistas

110

(printout t "MODERADO" crlf)

...

else

(printout t "AGRESSIVO" crlf)

...

)

)

3 Resultados e discussão

O uso de um shell de sistemas especialistas integrada a linguagem de desenvolvimento

de aplicações permitiu separarmos adequadamente a construção e uso da base de

conhecimento da interface de programação, comunicação e demais porções do sistema. Isso

permite que a base de conhecimento possa ser estendida, modificada ou mesmo substituída

sem alterações das demais partes do sistema. A mesma flexibilidade é proporcionada à

interface com usuário o que permite ainda o uso da mesma base de conhecimento por

múltiplas aplicações.

Além disso o Jess, diferentemente de outros script shells, fornece suporte mais amplo

às funções de linguagem de programação. Essa característica parece bastante importante para

a maior popularização do uso de sistemas especialistas em aplicações comerciais pois facilita

o trabalho do programador em diversas tarefas, como a entrada e saída de dados e a

manipulação tradicional de dados, permitindo ainda a adoção de soluções de programação

tradicional quando requeridas. Desse modo acreditamos ter agregado vantagens ao

desenvolvimento e superado algumas das limitações da programação tradicional.

Trabalhos futuros contemplarão aprimoramento da independência da máquina de

inferência e das demais porções do aplicativo empregando, além da tecnologia de

componentes, representações do conhecimento baseadas padrões abertos como o XML.

Também poderão ser inseridos fatores de confiança aos fatos da base de conhecimento

tornando o sistema apto a operar com lógica difusa (fuzzy).

Page 35: USO DE SISTEMAS ESPECIALISTAS PARA DECISÃO DO …meusite.mackenzie.com.br/rogerio/tgi/2003Jess.pdf · utilizamos o softwareJess (Java Expert System Shell), umshell de sistemas especialistas

111

5 Referências Bibliográficas

LIU, Q., CHENG, S., Object-oriented methods drive protective relay system, em IEEE

Computer Applications on Power, janeiro, 2000;33—37.

FRIEDMAN-HILL, E.J., Jess, The expert system shell for the Java platform. Disponível

em: <http://herzberg.ca.sandia.gov/jess/>. Acesso em: outubro, 2002.

DEITEL, H.M., DEITEL, P.J., Java: How to program. Prentice-Hall: 2000.

RILEY, G., What is CLIPS? Disponível em: <http://www.ghg.net/clips/CLIPS.html >.

Acesso em: outubro, 2002.

ABULSOROUR, A., VISVESWARAN, S., Business process automation made easy with

Java em JavaWorld Part 1: Implement business rule engines in a J2EE enterprise (Setembro)

Part 2: Design options for rule engine integration (Outubro). Disponível em: <

http://www.javaworld.com/>. Acesso em: março, 2003.

CARLSON, D., Rules and web-object systems, em Object Magazine, junho, 1998.

RUSSELL, S., NORVING, P., Artificial intelligence: A modern approach. Prentice-Hall:

1995.

CHUN, I-G., HONG, I-S., The implementation of knowledge-based recommender system

for eletronic commerce using Java expert system library. Proceedings in IEEE

International Symposium on Industrial Electronics, 2001;1766—1770.

Page 36: USO DE SISTEMAS ESPECIALISTAS PARA DECISÃO DO …meusite.mackenzie.com.br/rogerio/tgi/2003Jess.pdf · utilizamos o softwareJess (Java Expert System Shell), umshell de sistemas especialistas

88

LEVINE, Robert I.; DRANG, Diane E.; EDELSON, Barry. Inteligência Artificial e Sistemas

Especialistas. São Paulo: McGraw-Hill,1998.264p.

KRISHNAMOOTHY,C. S.;RAJEEV,S. Artificial Intelligence and Expert Systems for

Engineers. United State of America: CRC Press,1996.297p.

WINSTON, Patrick Henry. Artificial Intelligence. 3nd ed. United State of America: Addison-

Wesley Publishing Company,1993.735p.

ARBIB, Michel A. The Handbook of Brain Theory and Neural Networks. Cambridge,

Massachusetts.1995.118p.

LUGER, G. F.; STUBBLEFIELD, W. A. Artificial Intelligence: Structures and

Strategies for complex problem solving. 2nd ed. United State of America:

McGraw-Hill, 1993.703p.

MINSKY, Marvin. PAPERT, Seymour. Perceptrons – An Introduction to Computational

Geometry. Massachusetts Institute of Techonology (MIT),1992.255p.

NEWQUIST, Harvey. Artificial Intelligence: In the Financial Services Industry. Ireland:

Lafferty Publication, 1990.140p.

BARTEE,Thomas C. Expert Systems and Artificial Intelligence: Applications and

Management. Alaska: Howard W. Saws & Company, 1988.289p.

CHARNIAK, Eugene.; MCDERMOTT, Dreew. Introduction to Artificial-Intelligence.

Canada: Addison-Wesley, 1985.662p.

NILSSON, Nils J. Principles Artificial-Intelligence. California: Springer-Verlag, 1980.425p.

ELITHORN,Alick.; BANERJI, Ranan. Artificial and Human Intelligence. Amsterdam: North

Holland, 1984.320p.

KELLER, Robert. Tecnologia de Sistemas Especialistas Desenvolvimento e Aplicação. São

Paulo: McGraw-Hill, 1991.276p.

Page 37: USO DE SISTEMAS ESPECIALISTAS PARA DECISÃO DO …meusite.mackenzie.com.br/rogerio/tgi/2003Jess.pdf · utilizamos o softwareJess (Java Expert System Shell), umshell de sistemas especialistas

89

KAPLAN, B.; LUNDSGAARDE, H.P. Toward na evaluation of a clinical imaging

information system: Identifying clinical benefits, Technical Report – Department of

Computer Science, Quinnipiac College, Hamden, 1994.

NYKANEN, Pirkko.; NUUTILA,Pirio. Validation and Evaluation of a System for Thyroid

Disorders. Expert Systems with Applications, 1991.

CLARKE, R.A. Knowledge-Based Expert Systems: Risk Factors and Potentially Profitable

Application Areas, Working Paper, 1989.

REZENDE, Solange Oliveira. Sistemas Inteligentes: fundamentos e aplicações. São Paulo:

Manole,2003.

SHORTLIFE,E. H. Computer Based Medical Consultion: Mycin. Americam Elsevier, 1976.

HECKERMAN, D.; GEIGER, D.; CHICKERING, D. Learning bayesian network: The

combination of knowledge and statistical data, 1995.

ZADEH, L. Fuzzy sets Information and Control, 1965.

Modelo para o Ensino de Controle Estatístico da Qualidade. Disponível em:

<http://www.inf.ufsc.br/~marcelo/doutor.html>. Acesso em 06/09/2002.

Carnigie Mellon Expert Efficiency. Disponível em: <http://www.cmu.edu/cmri/

car_expert.html>. Acesso em: 10/11/2002.

Expert System. Disponível em: <http://www.ai.mit.edu/ people/jimmylin/ papers/

PhillipsE99.pdf>. Acesso em: 10/11/2002.

Abel, Mara. Sistemas Especialistas. Disponível em: <www.ppgia.pucpr.br/

~scalabin/SE_Milton/SistEspec%20MaraAbel%20mar2000.pdf>. Acesso em: 04/11/2002.

Sachet, Alessandro. Sistemas Especialistas. Diponível em: <www.bibliovirtualfw.

uri.br/brinf/tc200/lone/tcione.pdf>. Acesso em: 04/11/2002.

Page 38: USO DE SISTEMAS ESPECIALISTAS PARA DECISÃO DO …meusite.mackenzie.com.br/rogerio/tgi/2003Jess.pdf · utilizamos o softwareJess (Java Expert System Shell), umshell de sistemas especialistas

90

Marvin Minsky - Logical Vs. Analogical or Symbolic Vs. Connectionist. Disponível em:

<http://web.media.mit.edu/~minsky>. Acesso em: 07/02/2003.

A era do Computador com emoções – Gazeta Mercantil. Disponível em:

<http://www.jsmnet.com/ clippings/C0526c2.htm >. Acesso em: 05/02/2003.

Hystory of Artificial Intelligence. Disponível em: <http:// www.cs.cmu.edu/~sandholm/ cs15-

381/history_of_ai.ppt>. Acesso em: 02/02/2003.

CHUN, I-G., HONG, I-S., The implementation of knowledge-based recommender system for

eletronic commerce using Java expert system library. Proceedings in IEEE International

Symposium on Industrial Electronics, 2001;1766—1770.

FRIEDMAN-HILL, E.J., Jess, The expert system shell for the Java platform. Disponível em:

<http://herzberg.ca.sandia.gov/jess/>. Acesso em: outubro, 2002.

A era do Computador com emoções – Gazeta Mercantil. Disponível em:

<http://www.jsmnet.com/ clippings/C0526c2.htm >. Acesso em: 05/02/2003.

Perfil de investimento – Banco Itaú S/A. Disponível em: <http://www.itau.com.br>. Acesso

em: 08/01/2003.

Perfil de investimento – InvestShop. Disponível em: <http://www.investshop.com.br>. Acesso

em: 08/01/2003.

Page 39: USO DE SISTEMAS ESPECIALISTAS PARA DECISÃO DO …meusite.mackenzie.com.br/rogerio/tgi/2003Jess.pdf · utilizamos o softwareJess (Java Expert System Shell), umshell de sistemas especialistas

86

Para esta aplicação utilizamos um shell, o Jess (Java Expert System Shell), pelo

diferencial de fornecer suporte mais amplo às funções de linguagem de programação. Essa

característica é importante para a maior popularização do uso de sistemas especialistas em

aplicações comerciais pois facilita o trabalho do programador em diversas tarefas, como a

entrada e saída de dados e a manipulação tradicional de dados, permitindo ainda a adoção de

soluções de programação tradicional quando requeridas. Desse modo acreditamos ter

agregado vantagens ao desenvolvimento e superado algumas das limitações da programação

tradicional.

Trabalhos futuros contemplarão a criação de uma interface gráfica para a aplicação,

sendo que o JESS permite uma fácil integração das tecnologias atuais de desenvolvimento de

aplicações (aplicações Web, e as diversas tecnologias Java como Javabeans e Servlets),

utilizando código Java carregando em tempo de execução scripts na linguagem Jess,

permitindo assim, separarmos adequadamente a construção e uso da base de conhecimento da

interface de programação, comunicação e demais porções do sistema. Isso permite que a base

de conhecimento possa ser estendida, modificada ou mesmo substituída sem alterações das

demais partes do sistema. A mesma flexibilidade é proporcionada à interface com usuário o

que permite ainda o uso da mesma base de conhecimento por múltiplas aplicações. Também

poderão ser inseridos fatores de confiança aos fatos da base de conhecimento tornando o

sistema apto a operar com lógica difusa (fuzzy).

Page 40: USO DE SISTEMAS ESPECIALISTAS PARA DECISÃO DO …meusite.mackenzie.com.br/rogerio/tgi/2003Jess.pdf · utilizamos o softwareJess (Java Expert System Shell), umshell de sistemas especialistas

70

Para o desenvolvimento da aplicação utilizou-se de um script shell inteiramente

desenvolvido em Java, o Jess, que se baseia nos conceitos de sistemas especialistas baseados

em regras. O sistema para decisão do perfil de investidor possui um conjunto de perguntas no

qual baseia-se em regras de investimentos generalizadas e em elementos essenciais: a situação

financeira atual e o grau de tolerância a riscos. Através das respostas do investidor podemos

definir que tipo de investimento é mais adequado e mais rentável.

Os especialistas buscam propor as opções de investimento mais adequadas ao perfil de

um dado cliente buscando garantir a satisfação do investidor no que se refere à rentabilidade à

proteção do capital desejado. Para isso foram desenvolvidas uma série de regras que permitem

definir o perfil do investidor através de seus dados pessoais, disposição de capital, tolerância a

riscos e satisfação em investimentos realizados anteriormente que influenciam na definição do

perfil do investidor.

O perfil do investidor de um usuário pode ser dividido em três categorias:

conservador, moderado e agressivo.

5.1 Tipos de Perfis

Podemos identificar três grandes perfis de clientes, de acordo com dados pessoais,

disposição de capital, tolerância a riscos e satisfação em investimentos realizados

anteriormente influenciam na definição do perfil do investidor:

• conservador é um perfil de quem não gosta de correr riscos. Não está disposto a

aplicar dinheiro em investimentos que oscilam muito ou sua atual situação de vida

não permite investimentos que envolvam risco;

Page 41: USO DE SISTEMAS ESPECIALISTAS PARA DECISÃO DO …meusite.mackenzie.com.br/rogerio/tgi/2003Jess.pdf · utilizamos o softwareJess (Java Expert System Shell), umshell de sistemas especialistas

71

• moderado é um perfil de quem está disposto a correr pouco risco para obter uma

rentabilidade maior. Quem está propenso a aplicar uma parcela significativa do

dinheiro em investimentos que oscilam muito, destinando o restante para

aplicações mais seguras;

• agressivo é um perfil de quem está disposto a correr risco para conseguir a

máxima rentabilidade possível para o dinheiro. Quem está propenso a investir a

maior parte de seu dinheiro em aplicações que oscilam muito, destinando parcela

mínima para aplicações mais seguras.

A figura 7 mostra cada um desses perfis, com os seus pontos principais e com os

seus respectivos portifólios, isto é, indicando qual é o melhor fundo de investimento para

aquele determinado perfil

Page 42: USO DE SISTEMAS ESPECIALISTAS PARA DECISÃO DO …meusite.mackenzie.com.br/rogerio/tgi/2003Jess.pdf · utilizamos o softwareJess (Java Expert System Shell), umshell de sistemas especialistas

72

Figura 7 – Tipos de Perfis do Investidor e Portifólio. (Fonte: Banco Itaú S/A).

Perfil de Investidor PortifólioConsevador* Investidor para priorizar a segurança em seus * Investimentos totalmente concentradosinvestimentos em Renda fixa de curto prazo e/ou Renda * É avesso ao risco, quer proteção do principal investido fixa em DI

Moderado* Investidor que busca segurança em suas aplicações, * Grande parte dos investimentosno entanto, aceita correr algum risco (desde que seja concentrados em Renda Fixa Curto Prazo baixo) em busca de uma maior rentabilidade. - Objetiva e/ou Renda Fixa DI, além de investi- proteger seu patrimônio. investimentos em Renda Fixa Ativa e/ou

Derivativos e Multimercado

Agressivo* Aceita o risco, tendo por objetivo ganhos adicionais. * Investimentos balanceados em Renda * Prioriza a rentabilidade aceitando oscilações do principal a Fixa Curto Prazo e/ou Renda Fixa DI,ser investido a curto prazo. além de investimentos em Renda Fixa* Em geral, conhece o mercado financeiro. Ativa e/ou Derivativos, Multimercado e

Ações.

Page 43: USO DE SISTEMAS ESPECIALISTAS PARA DECISÃO DO …meusite.mackenzie.com.br/rogerio/tgi/2003Jess.pdf · utilizamos o softwareJess (Java Expert System Shell), umshell de sistemas especialistas

73

5.2 Desenvolvimento da Aplicação

As perguntas feitas ao usuário são implementadas com o conceito de regras, essas

regras são definidas no Jess por uma estrutura chamada defrule. Uma regra “dispara” as

instruções à direita da regra (após =>) conforme são satisfeitas as condições do lado esquerdo

(anterior a =>). Abaixo uma implementação simples de regra na forma de script shell para o

controle de fluxo das questões ao usuário.

(defrule pergunta-usuario

=>

(printout t "Digite seu nome:”)

(bind ?*nome* (read))

(printout t crlf crlf)

(printout t " 1. Estado civil"crlf)

(printout t " a) casado" crlf)

(printout t " b) solteiro/viuvo" crlf)

(printout t " Digite sua opcao: ")

(if (eq (read) a) then

(bind ?alternativa1 casado)

else

(bind ?alternativa1 solteiro)

)

)

As questões dividem-se em quatro categorias: renda, econômico, tolerância a risco e

investimento.

Page 44: USO DE SISTEMAS ESPECIALISTAS PARA DECISÃO DO …meusite.mackenzie.com.br/rogerio/tgi/2003Jess.pdf · utilizamos o softwareJess (Java Expert System Shell), umshell de sistemas especialistas

74

5.2.1 Renda

A categoria renda recebe as informações referentes aos dados pessoais do investidor

em questão como: estado civil (casado, solteiro), dependentes (possui, nãopossui) e dívida

(comdivida, semdivida). Abaixo a definição dos templates: usuariorenda, para receber as

respostas do usuário sobre seus dados pessoais e característicarenda, para receber as

respostas do usuário sobre o tipo de renda:

(deftemplate usuariorenda

(slot estadocivil)

(slot dependentes)

(slot divida)

)

(deftemplate caracteristicasrenda

(slot renda)

)

O tipo de renda do investidor é definido pelos fatos contidos na base através das

regras. Como mostrado abaixo:

(defrule R2

(usuariorenda (estadocivil casado) (dependentes possui) (divida

semdivida))

=>(assert (caracteristicasrenda (renda rendacomprometida)))

)

Page 45: USO DE SISTEMAS ESPECIALISTAS PARA DECISÃO DO …meusite.mackenzie.com.br/rogerio/tgi/2003Jess.pdf · utilizamos o softwareJess (Java Expert System Shell), umshell de sistemas especialistas

75

É inserido na base, no template caracteristicarenda, se o investidor possui renda

comprometida ou não. As definições destas regras foram baseadas na tabela 7.

estado civil (solteiro, casado)

dependentes (possui,naopossui)

Renda

divida (comdivida, semdivida)

Estado civil dependentes dívida renda

casado possui comdivida comprometida

casado possui semdivida comprometida

casado naopossui comdivida comprometida

casado naopossui semdivida naocomprometida

solteiro possui comdivida comprometida

solteiro possui semdivida naocomprometida

solteiro naopossui comdivida comprometida

solteiro naopossui semdivida naocomprometida

Tabela 7 - Tabela de Possibilidades de Respostas para Definição do Tipo de Renda.

5.2.2 Econômico

A categoria econômico leva em consideração se o investidor em questão é econômico

ou não e se possui algum tipo de reserva de capital financeiro. Como mostra abaixo:

Page 46: USO DE SISTEMAS ESPECIALISTAS PARA DECISÃO DO …meusite.mackenzie.com.br/rogerio/tgi/2003Jess.pdf · utilizamos o softwareJess (Java Expert System Shell), umshell de sistemas especialistas

76

(deftemplate usuarioeconomico

(slot economiza)

(slot reserva)

)

(deftemplate caracteristicaseconomico

(slot economico)

Segue exemplo de regra que verifica se a condição existente é verdadeira, caso seja

dispara a inserção na base de conhecimento através do comando assert:

(defrule R9

(usuarioeconomico (economiza sim) (reserva tenho))

=>(assert (caracteristicaseconomico (economico sim)))

)

As regras para definição da categoria econômico foram baseadas na tabela abaixo:

economiza(sim, nao)

Econômico

reserva (tenho, naotenho)

economiza reserva economico

sim tenho economico

sim naotenho naoeconomico

não tenho economico

não naotenho naoeconomico

Tabela 8 - Tabela de Possibilidades de Respostas para Definição do Tipo de Perfil Econômico.

Page 47: USO DE SISTEMAS ESPECIALISTAS PARA DECISÃO DO …meusite.mackenzie.com.br/rogerio/tgi/2003Jess.pdf · utilizamos o softwareJess (Java Expert System Shell), umshell de sistemas especialistas

77

5.2.3 Tolerância à Riscos

A categoria tolerância a riscos através da análise da base de regras considerando os

fatos sobre o tipo de renda e a categoria econômico define o grau de tolerância a riscos do

investidor. Segue abaixo a definição do template usuariotolerancia que verifica se o

investidor é tolerante, pouco tolerante ou não tolerante:

(deftemplate usuariotolerancia

(slot tipo)

)

Abaixo exemplo de regra para essa categoria:

(defrule R13

(caracteristicasrenda (renda rendacomprometida))

(caracteristicaseconomico (economico sim))

=>(assert (usuariotolerancia (tipo poucotolerante)))

)

As regras para definição do tipo de tolerância a riscos foram baseadas na tabela 9:

Page 48: USO DE SISTEMAS ESPECIALISTAS PARA DECISÃO DO …meusite.mackenzie.com.br/rogerio/tgi/2003Jess.pdf · utilizamos o softwareJess (Java Expert System Shell), umshell de sistemas especialistas

78

Renda

Economico

tolerancia a riscos

Renda economico Tipo

comprometida sim poucotolerante

comprometida não naotolerante

naocomprometida sim tolerante

naocomprometida não poucotolerante

Tabela 9 - Tabela de Possibilidades de Respostas para Definição do Tipo deTolerância à Riscos.

5.2.4 Investimento

A categoria investimento recebe informações sobre a realização ou não de um

investimento e, caso tenha realizado verifica-se o grau de satisfação sobre esse investimento,

considerando uma escala de 1 à 33 para insatisfeito, 34 à 66 para satisfeito e 67 à 100 para

muito satisfeito. Abaixo a definição dos templates usuarioinvestimento para receber o grau de

satisfação:

(deftemplate usuarioinvestimento

(slot investiu)

)

Page 49: USO DE SISTEMAS ESPECIALISTAS PARA DECISÃO DO …meusite.mackenzie.com.br/rogerio/tgi/2003Jess.pdf · utilizamos o softwareJess (Java Expert System Shell), umshell de sistemas especialistas

79

(deftemplate usuariograusatisfacao

(slot grau (type integer))

)

Nessa fase da aplicação a pergunta relacionada ao grau de satisfação sobre o

investimento só é realizada se o investidor responder que já efetuou algum tipo de

investimento anteriormente. Esta regra é definida pela estrutura demonstrada abaixo:

(defrule R25

(usuariotolerancia (tipo naotolerante))

(usuarioinvestimento (investiu sim))

(usuariograusatisfacao (grau 67/100))

=>(assert (perfil moderado))

)

Após termos todos os fatos inseridos na base de conhecimento, é utilizado uma regra

para definir o perfil de investidor. Exemplo de regra:

(defrule R17

(usuariotolerancia (tipo tolerante))

(usuarioinvestimento (investiu sim))

(usuariograusatisfacao (grau 1/33))

=>(assert (perfil moderado))

)

Essas regras de investimentos foram baseadas na tabela 10:

Page 50: USO DE SISTEMAS ESPECIALISTAS PARA DECISÃO DO …meusite.mackenzie.com.br/rogerio/tgi/2003Jess.pdf · utilizamos o softwareJess (Java Expert System Shell), umshell de sistemas especialistas

80

tolerancia

investimento

Perfil

grau de satisfação

tipo Investiu grausatisfacao perfil

tolerante Sim 1/33 moderado

tolerante Sim 34/66 agressivo

tolerante Sim 67/100 agressivo

poucotolerante Sim 1/33 conservador

poucotolerante Sim 34/66 moderado

poucotolerante Sim 67/100 moderado

naotolerante Sim 1/33 conservador

naotolerante Sim 34/66 conservador

naotolerante Sim 67/100 moderado

tolerante Não 0 agressivo

poucotolerante Não 0 moderado

naotolerante Não 0 conservador

Tabela 10 - Tabela de Possibilidades de Respostas para Definição do Tipo de Perfil deInvestidor.

Após definido o perfil do investidor, é mostrado ao usuário o tipo de perfil que este

pertence e uma explicação do mesmo. Segue abaixo:

(defrule R27

(perfil conservador)

Page 51: USO DE SISTEMAS ESPECIALISTAS PARA DECISÃO DO …meusite.mackenzie.com.br/rogerio/tgi/2003Jess.pdf · utilizamos o softwareJess (Java Expert System Shell), umshell de sistemas especialistas

81

=>

(printout t crlf crlf)

(printout t ?*nome* crlf crlf)

(printout t "Seu perfil e CONSERVADOR" crlf crlf)

(printout t "Este e o perfil de quem nao gosta de correr

riscos. Nao esta disposto a aplicar dinheiro em investimentos

que oscilam muito ou sua atual situacao de vida nao permite

investimentos que envolvam risco. Recomendavel aplicar em

poupanca.")

)

5.3 Exemplo da Aplicação em Execução

Digite seu nome: Maria

1. Estado civil

a) casado

b) solteiro/viúvo

Digite sua opção: a

2. Possui dependentes (pais, filhos ou parentes?)

a) sim

b) não

Digite sua opção: b

Page 52: USO DE SISTEMAS ESPECIALISTAS PARA DECISÃO DO …meusite.mackenzie.com.br/rogerio/tgi/2003Jess.pdf · utilizamos o softwareJess (Java Expert System Shell), umshell de sistemas especialistas

82

3. Você tem algum tipo de divida, como empréstimos, financiamentos ou utiliza o

rotativo do cartão de credito pagando o mínimo permitido e rola o restante?

a) Não, não tenho nenhuma divida pessoal. Sempre faço o planejamento necessário

para poder comprar as coisas a vista e com desconto

b) Sim, mas vou quitá-la dentro de 6 meses. Alem disso, tomei a precaução de

calcular na ponta do lápis como essa divida iria progredir

Digite sua opção: a

Fato 1 armazenado na base de conhecimento

==>f-1 (MAIN::usuariorenda (estadocivil casado) (dependentes naopossui) (divida

comdivida))

4. Quanto você acredita que realmente pode economizar todo mês sem afetar sua

qualidade de vida atual?

a) Acredito que conseguiria economizar algo entre 10% e 30% do total da minha

atual receita mensal

b) Só conseguiria fazer sobrar algum dinheiro se reduzisse meu atual padrão de

consumo. Mas isso afetaria minha qualidade de vida

Digite sua opção: b

5. Qual a reserva financeira estratégica (que pode ser sacada rapidamente) que você

possui para situações como o desemprego ou o mau desempenho do negocio próprio?

a) Tenho uma reserva financeira suficiente para cobrir um ano ou mais sem ganhos

b) Não tenho tal reserva

Digite sua opção: b

Page 53: USO DE SISTEMAS ESPECIALISTAS PARA DECISÃO DO …meusite.mackenzie.com.br/rogerio/tgi/2003Jess.pdf · utilizamos o softwareJess (Java Expert System Shell), umshell de sistemas especialistas

83

Fato 2 armazenado na base de conhecimento

==> f-2 (MAIN::usuarioeconomico (economiza nao) (reserva naotenho))

6. Você já realizou algum tipo de investimento anterior (Poupança,Renda Fixa, Ações,

etc)?

a) sim

b) não

Digite sua opção: a

Fato 3 armazenado na base de conhecimento

==> f-3 (MAIN::usuarioinvestimento (investiu sim))

7. Qual grau de satisfacao sobre esse investimento numa escala de 1% ate 100%?

Digite o valor: 60

Fato 4 e 5 armazenados na base de conhecimento

==> f-4 (MAIN::usuariograusatisfacao (grau 34/66))

==> f-5 (MAIN::caracteristicaseconomico (economico nao))

Maria

Seu perfil e CONSERVADOR.

Este e o perfil de quem nao gosta de correr riscos. Nao esta disposto a aplicar

dinheiro em investimentos que oscilam muito ou sua atual situacao de vida nao permite

investimentos que envolvam risco. Recomendavel aplicar em poupanca.

O resultado é obtido através da análise na base de regras que contém os fatos

demonstrados abaixo pode-se definir o perfil:

Fato 6,7 e 8 armazenados na base de conhecimento

Page 54: USO DE SISTEMAS ESPECIALISTAS PARA DECISÃO DO …meusite.mackenzie.com.br/rogerio/tgi/2003Jess.pdf · utilizamos o softwareJess (Java Expert System Shell), umshell de sistemas especialistas

84

==>f-6 (MAIN::caracteristicasrenda (renda rendacomprometida))

==>f-7 (MAIN::usuariotolerancia (tipo naotolerante))

==>f-8 (MAIN::perfil conservador)

Page 55: USO DE SISTEMAS ESPECIALISTAS PARA DECISÃO DO …meusite.mackenzie.com.br/rogerio/tgi/2003Jess.pdf · utilizamos o softwareJess (Java Expert System Shell), umshell de sistemas especialistas

58

58

Jess 6.0 é compatível com todas as versões do Java começando com Java 1.2,

incluindo JDK1.3 (ou “Java 2” como é conhecido) versões de número 4.x são compatíveis

com o JDK 1.0, e versões 5.x funcionam com o JDK 1.1.

O Jess está disponível para download na internet na versão 6.0 para Unix e para

Windows. Após descompactarmos o Jess teremos diversos diretórios padrões, bem como,

docs, examples e também o diretório Jess60.

4.2 Comandos Principais do Jess

Abaixo alguns comandos principais do Jess que são para inicialização, execução e

programação:

• iniciar o Jess: no prompt do MS-DOS diretório Jess60 digitar o seguinte comando:

java -classpath jess.jar jess.Main;

• ler um script: (batch NomePrograma.clp);

• carregar na memória: (reset);

• executar as regras: (run);

• comentários: símbolo de ponto e vírgula “;;” ;

• encerrar o Jess: (exit).

4.2.1 Átomos

O átomo é a unidade básica de representação no Jess. Ele pode conter letras, números,

Page 56: USO DE SISTEMAS ESPECIALISTAS PARA DECISÃO DO …meusite.mackenzie.com.br/rogerio/tgi/2003Jess.pdf · utilizamos o softwareJess (Java Expert System Shell), umshell de sistemas especialistas

59

59

caracteres como, $, *, =, +, /, <, >, _,?, # e valores booleanos, como TRUE e FALSE, é

importante notar que tudo no Jess é case sensitive, ou seja, a digitação da mesma palavra em

minúsculo, em maiúsculo tem significado diferente para o Jess, por exemplo, se digitarmos:

BIND, bind e Bind o Jess os considera como átomos diferentes.

4.2.2 Números e Textos (Strings)

O Jess permite ponto flutuante e números inteiros, como qualquer outra linguagem de

programação. Os textos devem ser sempre representados por aspas duplas, como por exemplo

“Perfil Moderado“.

4.2.3 Listas

Lista é uma coleção de um ou mais átomos, textos, números ou listas entre parênteses,

segue abaixo a sintaxe utilizada no Jess:

Jess> (+ 1 2)

Jess> 3

Page 57: USO DE SISTEMAS ESPECIALISTAS PARA DECISÃO DO …meusite.mackenzie.com.br/rogerio/tgi/2003Jess.pdf · utilizamos o softwareJess (Java Expert System Shell), umshell de sistemas especialistas

60

60

4.2.4 Variáveis

As variáveis devem ser representadas com o ponto de interrogação (?), e não se deve

declarar uma variável antes de utilizá-la. Utiliza-se o comando bind para associar alguma

coisa a variável, como representado abaixo:

;; A palavra Econômico será armazenada na variável criada de nome x

Jess> (bind ?x “Econômico”)

4.2.4.1 Variáveis com Multi-Campos

Multi-campos são variáveis especiais que são representadas com o sinal do cifrão ($),

e se referem a um tipo especial de lista:

;; declara a variável perfil, contendo os textos, Tipo1, Tipo2 e Tipo3.

Jess> (bind $?perfil (create$ “Tipo 1” “Tipo2” “Tipo3”))

;; Verifica qual o valor da variável chamada perfil

Jess> $?perfil

(Tipo1 Tipo2 Tipo3)

4.2.4.2 Variáveis Globais

Page 58: USO DE SISTEMAS ESPECIALISTAS PARA DECISÃO DO …meusite.mackenzie.com.br/rogerio/tgi/2003Jess.pdf · utilizamos o softwareJess (Java Expert System Shell), umshell de sistemas especialistas

61

61

Toda variável local criada é destruída quando executamos o comando reset. As

variáveis globais são gravadas mesmo depois de utilizar o comando reset, segue abaixo a

sintaxe utilizada no Jess:

;; definição da variável a como sendo global

Jess> (defglobal ?*a* = 100)

4.2.5 Operadores

O Jess possui operadores aritméticos, operadores de comparações e operadores

lógicos. Os operadores aritméticos são os mesmos do que em outra linguagem de

programação, mas a representação deve ser da seguinte forma:

;; soma valores a variável x

(bind ?x (+ ?x 1))

Para testarmos a igualdade, utilizamos os operadores de comparação. Devemos

lembrar que o sinal de igual (=), é um operador de comparação e devemos utilizar o comando

bind para representá-lo no Jess:

;; declaração da variável x contendo o número 1

Jess> (bind ?x 1)

;; verificando se o x é igual ao número 1

Page 59: USO DE SISTEMAS ESPECIALISTAS PARA DECISÃO DO …meusite.mackenzie.com.br/rogerio/tgi/2003Jess.pdf · utilizamos o softwareJess (Java Expert System Shell), umshell de sistemas especialistas

62

62

Jess> (= ?x 1)

TRUE

E por fim, temos os operadores lógicos, que são definidos por and, or e not, segue

abaixo a sintaxe para o uso desses operadores:

;; declaração da variável x contendo o número 1

Jess> (bind ?x 1)

;; verificação se o valor da variável x é o número 1 e o número 0

Jess> (and (= ?x 1) (< ?x 0))

FALSE

;; verificação se o valor da variável x é o número 1 ou o número 0

Jess> (or (= ?x 1) (< ?x 0))

TRUE

;; verificação se o valor da variável x não é o número 5

Jess> (not (= ?x 5))

TRUE

4.2.6 Fatos

Page 60: USO DE SISTEMAS ESPECIALISTAS PARA DECISÃO DO …meusite.mackenzie.com.br/rogerio/tgi/2003Jess.pdf · utilizamos o softwareJess (Java Expert System Shell), umshell de sistemas especialistas

63

63

Podemos adicionar fatos na base de conhecimento, usando o comando assert e para

iniciarmos uma condição inicial do mundo usamos o comando deffacts, se houver necessidade

de excluirmos alguns fatos utilizamos o comando retract, segue abaixo a sintaxe dos

comandos:

;; inclui os fatos na base de conhecimento

(assert (Perfil (x 1) (economico TRUE)))

;; inicia uma condição inicial

(deffacts init-perfil

(Perfil (x 1))

(Perfil (x 2))

(Perfil (x 3) (economico TRUE))

)

;; remove um fato da base de conhecimento

(retract ?perfil)

4.2.7 Modelos

Para utilizarmos modelos (templates), podemos comparar a estrutura do C ou uma

classe C++/Java utilizando o comando deftemplate e os campos utilizados dentro do template

são chamados de slots:

Page 61: USO DE SISTEMAS ESPECIALISTAS PARA DECISÃO DO …meusite.mackenzie.com.br/rogerio/tgi/2003Jess.pdf · utilizamos o softwareJess (Java Expert System Shell), umshell de sistemas especialistas

64

64

(deftemplate usuariorenda

(slot estadocivil)

(slot dependentes)

(slot divida)

)

4.2.8 Regras

Regras são responsáveis por verificar ações, baseando-se nos fatos da base de

conhecimento. As regras em geral, podem ser comparadas com o “if-else” da linguagem

procedural. Utilizamos o comando defrule para definirmos uma regra, é “disparado” as

instruções à direita da regra (após =>) conforme são satisfeitas as condições do lado esquerdo

(anterior a =>):

;; definindo a regra de nome Regra1 através do comando defrule

(defrule Regra1

(estadousuario (estadocivil casado) )

=>

(assert (renda comprometida))

)

Page 62: USO DE SISTEMAS ESPECIALISTAS PARA DECISÃO DO …meusite.mackenzie.com.br/rogerio/tgi/2003Jess.pdf · utilizamos o softwareJess (Java Expert System Shell), umshell de sistemas especialistas

65

65

4.2.9 Funções

No Jess podemos declarar nossas próprias funções. Utilizamos o comando deffunction

para definir uma função e o nome da própria função entre parênteses para fazer a chamada

(nomefunção), segue abaixo sintaxe utilizada no Jess:

;; declarando uma função através do comando deffunction

(deffunction nomefunção ()

......

(assert (Perfil (x ?x) (economico TRUE)))

)

4.2.10 Operadores de I/O

Existem dois tipos de funções disponíveis para entrada de dados, utilizamos o

comando read para ler um simples átomo, string ou número e também o comando readline

para ler uma linha inteira como uma string:

(read <rota-identificadora>)

(readline <rota-identificadora>)

Para mostrar os dados na tela, utilizamos o comando printout t, segue abaixo sintaxe:

Page 63: USO DE SISTEMAS ESPECIALISTAS PARA DECISÃO DO …meusite.mackenzie.com.br/rogerio/tgi/2003Jess.pdf · utilizamos o softwareJess (Java Expert System Shell), umshell de sistemas especialistas

66

66

(printout <router-identifier> <expression>)

(printout t "Seu perfil é conservador" crlf)

;; O comando crlf é utilizado para pular linhas.

4.3 Algoritmo Rete

O algoritmo de Markov é responsável pela especificação de uma estrutura de controle

para sistemas especialistas baseado em regras, possui um grupo ordenado de produção os

quais são aplicados na ordem de prioridade dos textos de entrada. Tanto quanto se necessite,

as regras de maior prioridade são utilizadas, caso contrário, é selecionada a regra de

prioridade imediatamente inferior e assim sucessivamente. Esse procedimento traz uma

grande ineficiência para sistemas especialistas com muitas regras, uma vez que para cada

inferência, todas as regras serão verificadas, perdendo-se em tempo de processamento. Esse

problema ficará mais acentuado se quisermos implementar sistemas especialistas com

centenas ou milhares de regras. A solução desse impasse passaria pela criação de um sistema

que possua algum conhecimento das regras para que não precise passar por todas elas de

forma seqüencial para fazer a inferência.

Charles L. Forgy, na Carnegie-Mellon University, em 1979, em sua tese de Phd,

desenvolveu o algoritmo de RETE. O algoritmo de Rete é um modelo muito veloz, que obtêm

velocidade pelo armazenamento da informação sobre as regras, na rede. Ao invés de buscar as

semelhanças dos fatos em todas as regras em todos os ciclos de reconhecimento das ações, o

Page 64: USO DE SISTEMAS ESPECIALISTAS PARA DECISÃO DO …meusite.mackenzie.com.br/rogerio/tgi/2003Jess.pdf · utilizamos o softwareJess (Java Expert System Shell), umshell de sistemas especialistas

67

67

algoritmo Rete somente procura por trocas semelhantes em todos os ciclos. Isto aumenta em

muito a velocidade da busca das semelhanças dos fatos para os antecedentes desde que os

dados estáticos que não mudam de ciclo para ciclo possam ser ignorados.

Posteriormente os fundamentos do algoritmo Rete foram trabalhados e deram origem

as modernas tecnologias para sistemas especialistas baseados em regras de produção. As

linguagens baseadas em regras, tais como JESS, que será mostrado no próximo capítulo,

CLIPS, ART, OPS5 e OPS83 usam esse algoritmo que é bastante eficiente para unificação

dos padrões nas regras, a fim de determinar quais regras têm seus antecedentes satisfeito.

O processo de unificação ocorre repetidamente, a lista de fatos será modificada

durante cada ciclo de execução. Novos fatos podem ser acrescentados à lista de fatos ou fatos

antigos podem ser removidos desta lista. Essas mudanças podem fazer com que padrões que

não foram satisfeitos anteriormente sejam satisfeitos ou vice-versa. O problema de unificação

se torna um processo contínuo. Durante cada ciclo, os fatos são acrescentados e removidos, o

conjunto de regras que são satisfeitas deve ser mantido e atualizado.

Muitos sistemas especialistas baseados em regras possuem uma propriedade chamada

de redundância temporal, tipicamente, as ações de uma regra irão mudar apenas alguns fatos

na lista de fatos, isto é, os fatos no sistema especialista mudam lentamente. Cada ciclo de

execução pode tratar apenas uma pequena porcentagem de fatos (acrescentar ou remover) e

então, apenas uma pequena porcentagem de regras é afetada pelas mudanças na lista de fatos.

Uma vez que as regras guiam a busca pelos fatos necessários, um tempo desnecessário é

gasto, uma vez que as regras irão percorrer toda à lista de fato a cada ciclo. Concluí-se então,

que as regras permanecem estáticas e somente os fatos mudam, sendo assim, os fatos

poderiam procurar as regras e não as regras procurarem os fatos.

Page 65: USO DE SISTEMAS ESPECIALISTAS PARA DECISÃO DO …meusite.mackenzie.com.br/rogerio/tgi/2003Jess.pdf · utilizamos o softwareJess (Java Expert System Shell), umshell de sistemas especialistas

68

68

O algoritmo de unificação de padrões de Rete foi projetado para tirar vantagem da

redundância temporal que existe em um sistema especialista baseado em regras, salvando o

estado do processo de unificação de ciclo por ciclo e recalculando as mudanças de um

determinado estado apenas para aquelas que ocorreram na lista de fatos. Este tipo de

informação de estado, que indica os fatos que tiveram unificação prévia em uma regra é

chamado de unificação parcial. Uma unificação parcial para uma regra é qualquer conjunto de

fatos que satisfazem os padrões da regra. Então, uma regra com três padrões ira ter

unificações parciais para o primeiro padrão, o primeiro e o segundo padrões, o primeiro,

segundo e terceiro padrões, e assim sucessivamente.

O outro tipo de informação de estado é a unificação padrão, que ocorre quando um

fato satisfaz um padrão simples em qualquer regra, sem considerar as variáveis em outros

padrões que possam restringir o processo de unificação.

O algoritmo de Rete possui uma desvantagem, que é o uso intensivo de memória, não

é feito uma comparação simples de todos os fatos com todos os padrões e sim o

armazenamento do estado do sistema usando unificações de padrão e unificações parciais

podendo consumir uma quantidade considerável de memória. Entretanto, deve-se ressaltar

que o referido algoritmo usa a similaridade estrutural nas regras, referindo-se ao fato de que

muitas regras podem conter padrões ou grupos de padrões similares, sendo assim o algoritmo

aproveita-se dessa característica para aumentar a eficiência, colocando os componentes

comuns juntos, de maneira que eles não sejam considerados mais de uma vez.

Page 66: USO DE SISTEMAS ESPECIALISTAS PARA DECISÃO DO …meusite.mackenzie.com.br/rogerio/tgi/2003Jess.pdf · utilizamos o softwareJess (Java Expert System Shell), umshell de sistemas especialistas

31

31

3.1 Estrutura

A estrutura de um sistema especialista baseado em regra é composta por: base de

conhecimento, motor de inferência e memória de trabalho que serão explicados a seguir:

3.1.1 Base de Conhecimento

Como citado anteriormente, os sistemas especialistas utilizam o conhecimento

específico de seu domínio de aplicação através de um programa de raciocínio relativamente

simples. O termo base de conhecimento é utilizado para significar a coleção de conhecimento

do domínio, ou seja, as informações, necessárias para resolver problemas de um domínio

específico. A tradicional base de dados com dados, arquivos, registros e seus relacionamentos

estáticos é substituída por uma base de regras, fatos e heurísticas que correspondem ao

conhecimento do especialista do domínio o qual foi construído o sistema. Os fatos constituem

informações que estarão sempre disponíveis para serem compartilhadas e atualizadas pelo

especialista. As heurísticas são regras práticas que caracterizam o nível de tomada de decisão

do especialista em um domínio.

A base de regras e fatos interage com o usuário e com o motor de inferência,

permitindo identificar o problema a ser resolvido, as possibilidades de solução e o processo de

raciocínio e inferência que levam a conclusões sobre o problema submetido ao sistema.

Um dos problemas mais sérios, e ao mesmo tempo muito comum, encontrado na

implementação de sistemas especialistas, é que parece possível fornecer um conhecimento

completo sobre o qual o sistema vai operar. Portanto, o nível de desempenho de um sistema

Page 67: USO DE SISTEMAS ESPECIALISTAS PARA DECISÃO DO …meusite.mackenzie.com.br/rogerio/tgi/2003Jess.pdf · utilizamos o softwareJess (Java Expert System Shell), umshell de sistemas especialistas

32

32

especialista está relacionado ao tamanho e a qualidade de sua base de conhecimento. Na

interação com a base de fatos, regras e com usuário, obtêm-se as informações necessárias para

a resolução desse problema. Devido à utilização de heurísticas, o usuário é requerido pelo

sistema para prestar informações adicionais a cada pergunta respondida ou cada nova

informação, reduz-se o espaço de busca a ser percorrido pelo sistema, encurtando-se o

caminho entre o problema e sua solução. Podendo desencadear um processo de aprendizagem

automática internamente no seu sistema. Isto quer dizer que o sistema provido de mecanismos

de aprendizagem é capaz de analisar e gerar novas regras na base de conhecimento ou

armazenar informações sobre novos fatos, ampliando a capacidade do sistema em resolver

problemas cada vez em que este for utilizado. Isto é transparente para o usuário, ou seja, ele

não percebe que todos estes processos acontecem durante uma sessão de utilização do sistema

especialista.

Diante disto, é importante que o sistema seja cuidadosamente projetado, de forma que

tenha capacidade de analisar novas situações, extrair novas regras, detectar regras redundantes

e complementar regras conflitantes, permitindo uma depuração constante da base de

conhecimento.

3.1.2 Motor de Inferência

O motor de inferência é um elemento essencial para a existência de um sistema

especialista (núcleo do sistema), parte que manipula as regras e fatos, inferindo novos fatos de

fatos existentes pelo uso de regras, controlando o fluxo de dados e a ordem da inferência, por

exemplo:

Page 68: USO DE SISTEMAS ESPECIALISTAS PARA DECISÃO DO …meusite.mackenzie.com.br/rogerio/tgi/2003Jess.pdf · utilizamos o softwareJess (Java Expert System Shell), umshell de sistemas especialistas

33

33

Fato: Você está dirigindo a 50 km/h.

Fato: Existe um sinal vermelho à frente.

Disparo de regra: Se existe um sinal vermelho à frente, você deve parar.

Resultado da decisão: Você deve parar.

Tabela 1 – Funcionamento do Motor de Inferência Verificando os Fatos e Disparando a Regrapara Resultar na Decisão.

Através de instrumentos do sistema, o motor de inferência seleciona e aplica o

conhecimento contido no banco na resolução do problema em questão. Entre esses inclui-se:

• a forma de inferência ou de racionar sobre os dados que o sistema utiliza;

• a estrutura de controle que define a direção e a forma como as regras do banco de

conhecimento serão testadas (raciocínio progressivo e regressivo);

• os métodos de tratamento de incerteza das informações fornecidas pelo

especialista ou pelo usuário;

• os mecanismos utilizados para recuperar o raciocínio desenvolvido pelo

sistema, a fim de fornecer explicações ao usuário;

• uma memória de trabalho, que armazena resultados parciais obtidos pelo sistema

no processo de busca pela solução.

Figura 1 – Funcionamento do Motor de Inferência.

Memória detrabalho

Base deregras

Compara

Resolve

Age

AAttuuaalliizzaaççããoo

MMááqquuiinnaa ddeeIInnffeerrêênncciiaa

AApprreennddee

Page 69: USO DE SISTEMAS ESPECIALISTAS PARA DECISÃO DO …meusite.mackenzie.com.br/rogerio/tgi/2003Jess.pdf · utilizamos o softwareJess (Java Expert System Shell), umshell de sistemas especialistas

34

34

3.1.2.1 Estrutura de Controle

O motor de inferência está habilitado para deduzir a resposta e explicar o raciocínio

adotado através de encadeamento progressivo, forward chaining ou encadeamento regressivo,

backward chaining.

a) Encadeamento progressivo (forward chaining)

O método de encadeamento progressivo analisa os fatos, aplica as regras, produz mais

fatos e ativa mais regras, até que uma conclusão final seja alcançada. Este método é também

conhecido como orientado pelos dados (data-driven), porque o motor de inferência usa a

informação fornecida pelo usuário para se movimentar pela rede (semântica) e E e OU lógicos

até encontrar um ponto terminal ou conclusão.

Um sistema é dito progressivo quando executa as regras na direção “if-> then”. É

usado quando uma hipótese pode derivar muitas questões, quando o número de conclusões

que se pode atingir é pequeno, quando o número de maneiras de se chegar a uma conclusão é

grande e/ou quando têm-se todos os fatos “na mão” e quer concluir tudo o que é possível.

Exemplo:

Base de conhecimento disponível:

Objetivo PossuiMaça Cresce_em_árvores

ArredondadaCultiva_no_SulCor_vermelha_ou_verde

Laranja Cresce_em_árvoresArredondadaCultiva_no_NorteCor_Laranja

Tabela 2 – Base de Conhecimento (Encadeamento Progressivo).

Page 70: USO DE SISTEMAS ESPECIALISTAS PARA DECISÃO DO …meusite.mackenzie.com.br/rogerio/tgi/2003Jess.pdf · utilizamos o softwareJess (Java Expert System Shell), umshell de sistemas especialistas

35

35

O Sistema parte testando um objeto(maçã):

SEUsuário

Cresce_em_árvores?Sim

SEUsuário

Arredondada?Sim

SEUsuário

Cultiva_no_Sul?Não

SEUsuário

Cultiva_no_NorteSim

SEUsuário

Cor_Laranja?Sim

SE Então é um(a) Laranja Tabela 3 – Teste do Encadeamento Progressivo

Este método é mais adequado aos casos em que a quantidade possível de soluções é

enorme ou até desconhecidas, a resposta (objetivo), necessita ser montada ou desenvolvida.

b) Encadeamento regressivo (backward chaining)

Um sistema é dito encadeamento regressivo quando executa as regras na direção then -

> if, através do uso de hipóteses. Ou seja, é o processo de provar hipóteses. Começa com um

objetivo e trabalha “para trás”, casando conseqüente ao objetivo. É usado quando um conjunto

de fatos pode levar a um grande número de conclusões, quando o número de maneiras de se

chegar à conclusão é pequeno e/ou quando não se têm todos os fatos “na mão” e está

interessado em se uma das muitas possíveis conclusões é verdadeira.

O método de encadeamento regressivo é o inverso do encadeamento progressivo. O

motor de inferência parte testando uma hipótese (conclusão) possível e pede uma confirmação

ao usuário para validar ou refurtar esta hipótese. Neste método o motor de inferência inicia

testando os objetos possíveis e trabalha voltando através dos sub-objetos (regras) no esforço

de validar uma resposta.

Page 71: USO DE SISTEMAS ESPECIALISTAS PARA DECISÃO DO …meusite.mackenzie.com.br/rogerio/tgi/2003Jess.pdf · utilizamos o softwareJess (Java Expert System Shell), umshell de sistemas especialistas

36

36

Este tipo de técnica é dirigida pelo objetivo (goal driven), porque este sistema

especialista, começa por um objetivo e tenta confirmá-lo.

Exemplo:

Base de conhecimentos disponível:

Objetivo PossuiMaça Cresce_em_árvores

ArredondadaCultiva_no_SulCor_vermelha_ou_verde

Laranja Cresce_em_árvoresArredondadaCultiva_no_NorteCor_Laranja

Tabela 4 – Base de Conhecimento (Encadeamento Regressivo)

O sistema parte perguntando por todos os dados disponíveis sobre a fruta:

Dados Entrados: árvores, verde, arredondada, cultivada no sul.

Segue abaixo uma tabela de comparação entre o encadeamento progressivo e

regressivo:

Encadeamento progressivo(forward chaining)

Encadeamento regressivo(backward chaining)

Todos os dados já são fornecidosinicialmente

Solicita dados durante o processo de busca poruma solução

Não é interativo É interativoDirigido por dados (data driven) Dirigido por metas, objetivos (goal driven)Modo antecedente Modo conseqüenteInicia em algumas informações e entãotenta encontrar um objeto que contenhaas informações

Inicia com uma hipótese (um objetivo) erequer informações para confirmar ou refurtareste objetivo. O sistema especialista inicia comum objeto e tenta confirmá-lo

Tabela 5 –Diferenças entre Encadeamento Progressivo X Encadeamento Regressivo

Sistema: É uma maça

Page 72: USO DE SISTEMAS ESPECIALISTAS PARA DECISÃO DO …meusite.mackenzie.com.br/rogerio/tgi/2003Jess.pdf · utilizamos o softwareJess (Java Expert System Shell), umshell de sistemas especialistas

37

37

De acordo com Stuart Russel, a busca por uma solução pode ser baseada em duas

estratégias: busca por nível bread-first searching, ou busca em profundidade depth-first

searching. A técnica de representação do conhecimento através de redes semânticas facilita a

visualização dos métodos de busca (Figura 2). O método de busca em profundidade explora

cada caminho (ramo da rede semântica) possível até encontrar sua conclusão antes de tentar

um outro caminho. O método de busca em nível verifica cada nó de um mesmo nível antes de

proceder ao próximo nível mais baixo.

O tipo de encadeamento normalmente é definido de acordo com o tipo de problema a

ser resolvido. Problemas de planejamento , projeto e classificação tipicamente utilizam

encadeamento progressivo, enquanto problemas de diagnóstico , onde existem apenas algumas

saídas possíveis, mas um grande número de estados inicial, utiliza encadeamento regressivo

(Figura 2).

Em geral, os sistemas especialistas adotam apenas um modo de raciocínio; no entanto,

existem alguns que permitem ambos os modos, mas de maneira independente, e ainda outros

que permitem um encadeamento misto, onde os encadeamentos progressivo e regressivo se

alternam de acordo com o desenvolvimento da solução do problema e com a disponibilidade

de dados.

Uma característica importante do modo de raciocínio se refere à monotonicidade ou

não do método de inferência. Sistemas monotônicos não permitem a revisão de fatos, isto é,

uma vez um fato declarado verdadeiro, ele não pode mais tornar-se falso. Sistemas não

monotônicos, por outro lado, permitem a alteração dinâmica dos fatos. O preço desta

capacidade é a necessidade de um mecanismo de revisão de crenças, pois uma vez que um

fato, antes verdadeiro, torna-se falso, todas as conclusões baseadas nesse fato também devem

tornar-se falsas.

Page 73: USO DE SISTEMAS ESPECIALISTAS PARA DECISÃO DO …meusite.mackenzie.com.br/rogerio/tgi/2003Jess.pdf · utilizamos o softwareJess (Java Expert System Shell), umshell de sistemas especialistas

38

38

Figura 2 – Demonstração do Método de Busca (em Profundidade e em Nível) através de Encadeamento Progressivo e Regressivo

3.1.2.2 Resolução de Conflito

Ao terminar o processo de busca, o motor de inferência dispõe de um conjunto de

regras que satisfazem à situação atual do problema, o chamado conjunto de conflito . Se esse

conjunto for vazio, a execução é terminada; caso contrário, é necessário escolher que regras

serão realmente executadas e em que ordem. Os métodos de resolução de conflito mais

utilizados ordenam as regras de acordo com os seguintes critérios: prioridades atribuídas

estaticamente; características da estrutura das regras como complexidade, simplicidade e

Page 74: USO DE SISTEMAS ESPECIALISTAS PARA DECISÃO DO …meusite.mackenzie.com.br/rogerio/tgi/2003Jess.pdf · utilizamos o softwareJess (Java Expert System Shell), umshell de sistemas especialistas

39

39

especificidade; características dos dados associados às regras como o tempo decorrido desde

sua obtenção, sua confiabilidade ou seu grau de importância; e, finalmente, seleção ao acaso.

Em geral, a utilização de um desses critérios é insuficiente para resolver os conflitos.

Neste caso, o sistema especialista baseado em regras pode combinar mais de um método na

forma de método primário, secundário, etc. Os melhores sistemas baseados em regras dispõem

de diversos métodos de resolução de conflito e permitem ao usuário a especificação de quais

métodos utilizar e em que ordem.

3.1.2.3 Representação de Incerteza

O tratamento de incerteza é uma ativa área de pesquisa em sistemas baseados em

regras, pois os domínios adequados à implementação desses sistemas se caracterizam

exatamente por não serem modelados por nenhuma teoria geral, o que implica descrições

incompletas, inexatas ou incertas. Diversos métodos foram propostos para tratar esse

problema, por exemplo, método Bayesiano (HECKRMAN & CHICKERING,1995), fatores

de certeza (SHORTLITE,1976), teoria de Dempster-Shafer, teoria dos conjuntos nebulosos

(ZODEH,1965), teoria de probabilidades subjetivas e teoria de possibilidades.

Probabilísticas Lida com a probabilidade de ocorrências de várioseventos para finalmente se encontrar a resposta.

Lógica Fuzzy (nebulosa) Lida com possibilidade de ocorrência de várioseventos para alcançar a resposta.

Método de Bayes Introduzir fórmulasTabela 6 – Conceitos de Métodos para Resolução de Incerteza

De maneira geral, esses métodos atribuem aos fatos e regras uma medida numérica que

represente de alguma forma a “confiança’’ do especialista. Os métodos utilizados não são

Page 75: USO DE SISTEMAS ESPECIALISTAS PARA DECISÃO DO …meusite.mackenzie.com.br/rogerio/tgi/2003Jess.pdf · utilizamos o softwareJess (Java Expert System Shell), umshell de sistemas especialistas

40

40

necessariamente coerentes uns com os outros e cada método adapta-se melhor a determinados

tipos de problemas. Diversos sistemas baseados em regras dispõem de mais de um método de

tratamento de incerteza, deixando ao usuário a escolha do mais adequado ao seu problema.

Uma característica freqüente desses métodos é a existência de um limite mínimo para a

medida de incerteza, abaixo do qual o fato ou regra é desconsiderado. Este limite pode, em

geral, ser fixado pelo usuário.

3.1.3 Memória de Trabalho

É uma estrutura que armazena momentaneamente as informações referentes à

interação do usuário com o sistema, sendo iniciada toda vez que o processo de iteração

começa. Essas informações são mantidas por dois motivos: o primeiro para que o sistema

possa fazer inferências baseadas nelas, e o segundo para tornar o acesso às informações mais

rápido. Sempre que é solicitada alguma informação, esta é solicitada alguma informação, esta

é inicialmente procurada na memória de trabalho para, depois, ser procurada na base de

conhecimento.

As declarações na memória de trabalho são chamadas de elementos da memória de

trabalho. Cada regra consiste em uma conjunção de elementos de condição correspondendo à

parte if da regra (também chamado de lado esquerdo da regra - LHS), e de um conjunto de

ações correspondendo à parte then da regra (também chamado de lado direito da regra - RHS).

As ações associadas com a regra podem adicionar, remover ou modificar os elementos da

memória de trabalho, ou realizar entrada/saída.

Page 76: USO DE SISTEMAS ESPECIALISTAS PARA DECISÃO DO …meusite.mackenzie.com.br/rogerio/tgi/2003Jess.pdf · utilizamos o softwareJess (Java Expert System Shell), umshell de sistemas especialistas

41

41

Figura 3 - Arquitetura de Sistemas Especialistas Baseados em Regras

3.2 Aquisição de Conhecimento

A fase de aquisição de conhecimentos segundo Edward Feingenbaum, “O nível de

desempenho de um sistema especialista é função principalmente do tamanho e da qualidade

da base de conhecimentos que possui”.

Este elemento é responsável pela aquisição (ou extração) de conhecimento do

especialista da área e a sua posterior incorporação na base de conhecimentos do sistema. Esta

não pode limitar-se à adição de novos elementos do conhecimento a base de conhecimentos; é

necessário integrar o novo conhecimento ao conhecimento já disponível, através da definição

de relações entre os elementos que constituem o novo conhecimento e os elementos já

armazenados na base.

A aquisição de conhecimento ocorre ao longo de seis etapas:

• identificação e estudo do problema: o especialista, gerentes e usuários do sistema

definem qual o problema que deve ser resolvido pelo sistema. O problema é

restringido para algo tratável computacionalmente e as entradas e saídas do sistema

são definidas grosseiramente;

Page 77: USO DE SISTEMAS ESPECIALISTAS PARA DECISÃO DO …meusite.mackenzie.com.br/rogerio/tgi/2003Jess.pdf · utilizamos o softwareJess (Java Expert System Shell), umshell de sistemas especialistas

42

42

• entrevistas com o especialista: são realizadas entrevistas abertas e depois

estruturadas com o especialista de forma a detalhar qual conhecimento é aplicado

na solução do problema e de que forma;

• análise do conhecimento: a informação obtida é analisada de forma a evidenciar

sua consistência, completeza e suficiência para a solução do problema;

• proposta de representação de conhecimento: o conhecimento é estruturado

segundo uma das formas de representação por computador;

• implementação e teste do sistema: o sistema é implementado, normalmente com

a utilização de uma ferramenta de desenvolvimento de sistemas especialistas e é

testado quanto ao seu funcionamento;

• validação junto ao especialista e usuários: o sistema é validado pelo especialista,

quanto ao conhecimento que ele contém, e pelos usuários em relação à adequação à

solução esperada e facilidade de uso.

A equipe de desenvolvimento de sistemas especialistas contém pelo menos um

profissional para cada uma das funções:

• um engenheiro de conhecimento, que exerce o duplo papel de compreender o

domínio da informação para interagir com o especialista e possuir o conhecimento

necessário sobre computação, linguagens e ferramentas de inteligência artificial

para selecionar o melhor ambiente e forma de implementar o sistema. E quem

realmente realiza a interface com o especialista, dirigindo as entrevistas,

acompanhando em seu trabalho;

• um escrivão que irá anotar tudo o que é comentado durante as entrevistas com o

especialista, porém com o mínimo de intervenção nas mesmas. Pode se utilizar

ainda de mecanismos para registrar a entrevista, como gravadores ou filmadoras,

desde que com a anuência do especialista;

Page 78: USO DE SISTEMAS ESPECIALISTAS PARA DECISÃO DO …meusite.mackenzie.com.br/rogerio/tgi/2003Jess.pdf · utilizamos o softwareJess (Java Expert System Shell), umshell de sistemas especialistas

43

43

• mediador que acompanha a entrevista verificando se a linha mestra da discussão

está sendo mantida. O mediador garante que todos os pontos necessários foram

suficientemente explorados e que a entrevista não está sendo desviada para

assuntos paralelos ao de interesse. O mediador intervém quando necessita de mais

informações, quando o assunto é desviado, ou quando alguma informação foi

omitida;

• programador é o profissional responsável pela utilização das linguagens de

programação, ambientes de desenvolvimento e ferramentas para a construção do

sistema nos moldes solicitados pelo engenheiro de conhecimento. Normalmente

não participa das entrevistas, nem da fase de análise das informações. Domina o

ambiente onde será desenvolvido o sistema e irá implementar as feições

necessárias à representação do conhecimento e raciocínio segundo as solicitações

do engenheiro de conhecimento.

3.2.1 Tarefas na Aquisição de Conhecimento

3.2.1.1 Imersão na Literatura

O engenheiro de conhecimento e equipe devem ler alguma literatura introdutória da

área, além dos artigos principais do especialista. O objetivo é familiarizar-se com o jargão

técnico utilizado pelo especialista o que facilita o diálogo posterior (certos termos técnicos são

Page 79: USO DE SISTEMAS ESPECIALISTAS PARA DECISÃO DO …meusite.mackenzie.com.br/rogerio/tgi/2003Jess.pdf · utilizamos o softwareJess (Java Expert System Shell), umshell de sistemas especialistas

44

44

difíceis até de serem transcritos a partir de uma entrevista verbal). Deve ser evitada a

compreensão do assunto e, principalmente, o julgamento das idéias do especialista.

3.2.1.2 Entrevistas Abertas ou Não-estruturadas

a) Protocolos verbais retrospectivos

Corresponde aos primeiros contatos com o especialista. Tendo o assunto sido definido,

o engenheiro de conhecimento inicia a entrevista através de poucas questões gerais sobre o

assunto escolhido. Em um exemplo de construção de um sistema especialista baseado no setor

financeiro, as perguntas deveriam ser:

Qual é a sua tolerância à risco?

Você é econômico?

Sua renda está comprometida?

É natural que o especialista discorra longamente sobre cada uma das questões. É

importante interferir o mínimo possível e anotar tudo completamente, inclusive desenhos,

gráficos e esquemas porventura utilizados. Qualquer interferência tende a modificar a linha de

raciocínio do especialista e deve ser evitada.

b) Protocolos verbais concorrentes (thinking aloud)

Nem sempre é possível de ser feito. O especialista descreve sua solução ou método

enquanto está resolvendo problema.

Page 80: USO DE SISTEMAS ESPECIALISTAS PARA DECISÃO DO …meusite.mackenzie.com.br/rogerio/tgi/2003Jess.pdf · utilizamos o softwareJess (Java Expert System Shell), umshell de sistemas especialistas

45

45

Esse método tende a ser muito mais fiel para demonstrar as heurísticas do especialista

do que o protocolo retrospectivo. Ao explicar sua área de pesquisa, o especialista tende a

descrevê-la nos termos em que é cientificamente aceita e não como é realmente aplicada. Ao

descrever suas ações, vê-se obrigado a descrever seus métodos efetivos.

3.2.1.3 Entrevistas Estruturadas

Após as entrevistas não-estruturadas, o engenheiro analisa as informações construindo

listas de objetos ou conceitos descritos pelo especialista. Na análise inicial, é feita uma

tentativa de separar objetos em classes, verificar relações de dependência ou semelhança entre

eles. A partir dessa análise, a equipe determina quais os pontos a serem explorados e utiliza

técnicas para obter informações específicas. É necessário determinar se os conceitos foram

corretamente definidos, se as relações e propriedades estão corretas. Ainda, definir quais as

regras ou seqüências de ações que são utilizadas pelo especialista.

a) Focalizando Contextos

Utilizada para explicitar métodos ou procedimentos utilizados pelo especialista.

O engenheiro de conhecimento apresenta problemas definidos ao especialista, solicita

que ele os resolva. As condições podem ser alteradas dinamicamente de forma a evidenciar os

pontos essenciais do método aplicado. Por exemplo, seria apresentado ao especialista o caso

de um perfil de investidor de características similares, mas não perfeitamente identificados

com o perfil em questão. Como o especialista resolve a definição do perfil?

Page 81: USO DE SISTEMAS ESPECIALISTAS PARA DECISÃO DO …meusite.mackenzie.com.br/rogerio/tgi/2003Jess.pdf · utilizamos o softwareJess (Java Expert System Shell), umshell de sistemas especialistas

46

46

Esse método permite equacionar as necessidades de tratamento de incerteza nos

métodos do especialista, definir prioridade das regras e tratamento de informações

incompletas.

b) Embaralhando fichas

Evidencia a classificação dos objetos, as hierarquias e outras descrições estáticas dos

objetos do domínio.

O engenheiro de conhecimento escreve os nomes dos objetos listados na análise

preliminar em fichas separadas. Apresenta o conjunto das fichas ao especialista, solicitando

que ele os separe em dois grupos, explicando o critério de separação. No exemplo abaixo, o

especialista deveria separar os objetos carro, pardal, barco, gato, ônibus e trem. (Figura 4) Une

as fichas novamente e solicita que novamente que separe em dois grupos utilizando outro

critério, até que não existam mais critérios de separação. Nesse caso, um dos grupos é

selecionado e reinicia o processo.

Figura 4 – Separação de um Conjunto de Objetos em Dois Objetos Feita por um EspecialistaSegundo o Critério "Veículos e Animais".

Durante a classificação, o especialista irá retirar alguns objetos por serem sinônimos

ou irrelevantes, e irá incluir outros que, segundo seu critério, estão ausentes. Ainda, ficará

evidente a hierarquia dos objetos e a divisão dos objetos (conhecimento descritivo) e das

Carro Barco

Ônibus Trem

Pardal

Gato

Conjunto 2Conjunto 1

Page 82: USO DE SISTEMAS ESPECIALISTAS PARA DECISÃO DO …meusite.mackenzie.com.br/rogerio/tgi/2003Jess.pdf · utilizamos o softwareJess (Java Expert System Shell), umshell de sistemas especialistas

47

47

regras (conhecimento procedimental), fornecendo subsídio para a organização das

informações em uma das formas de representação de conhecimento disponíveis.

Figura 5 - O Especialista Separa o Conjunto Um em Dois Conjuntos Segundo o Critério"Veículos Terrestres e Veículos Aquáticos"

3.2.2 Analisando as Informações

Processo intuitivo. Tem como objetivo definir a forma de organização "maior" das

informações e definir os "atalhos" utilizados pelo especialista, que otimizam o processo de

solução do problema.

A análise examina os dados obtidos através das entrevistas buscando determinar a

estrutura maior da informação (como os objetos e conceitos se organizam e se agrupam, e os

relacionamentos entre os objetos). Essa estrutura deverá ser explicitamente representada no

banco de conhecimento. São propostos ainda os métodos para tratar o conhecimento incerto

(índices associados aos objetos e regras: confiança, significância, suficiência, etc).

A análise do conhecimento busca também identificar os “atalhos” utilizados pelo

especialista na solução dos problemas. Um analista financeiro, por exemplo, utiliza sua

experiência para reconhecer "quadros típicos" de perfil do investidor, ou seja, mostrando o

tipo adequado para cada investidor: conservador, moderado e agressivo.

Carro

Ônibus Trem

Barco

Conjunto 4Conjunto 3

Page 83: USO DE SISTEMAS ESPECIALISTAS PARA DECISÃO DO …meusite.mackenzie.com.br/rogerio/tgi/2003Jess.pdf · utilizamos o softwareJess (Java Expert System Shell), umshell de sistemas especialistas

48

48

Nesta fase da análise, são feitas as primeiras considerações sobre possíveis softwares

adequados a implementação do sistema. Essa decisão leva em conta as necessidades do

conhecimento e dos raciocínios a serem implementados.

3.3 Metodologias de Avaliação de Sistemas Especialistas

Avaliação não é só evitar o erro nem saber como um programa de computação vai

funcionar em situação imprevisíveis, (LUNDSGAARDE,1987) contribui para as pesquisas de

avaliação fazendo a seguinte definição: “avaliação é a coleta e a análise da informação de

várias estratégias metodológicas que determinam a importância, abrangência, eficiência e

impacto sobre o uso dos programas computacionais”.

Sendo assim, a avaliação não deve ser entendida como uma medida de comparação

entre o conhecimento financeiro e do sistema especialista, mas sim uma medida entre os

custos e benefícios de cada um. Porém se a conclusão do especialista não combinar com a do

sistema, isto já será suficiente para não ser aceita a sugestão do sistema especialista. O

responsável sobre a tomada de decisão sempre será o usuário que faz a avaliação da sugestão

do sistema especialista.

NYKANEN (1991) diz que o único modo de obter a aceitação completa do usuário é

através da avaliação formalizada do sistema especialista, e faz uma distinção entre os termos

de verificação, validação e avaliação:

• Verificação: demonstra a consistência, o quanto a base é completa.

Page 84: USO DE SISTEMAS ESPECIALISTAS PARA DECISÃO DO …meusite.mackenzie.com.br/rogerio/tgi/2003Jess.pdf · utilizamos o softwareJess (Java Expert System Shell), umshell de sistemas especialistas

49

49

• Validade: determina os acertos das soluções encontradas com respeito as

necessidades do usuário e seus requisitos. Se refere também à dimensão do

especialista.

• Avaliação: refere-se ao julgamento do sistema, se é benéfico, se faz o que foi

solicitado. É a determinação da importância, eficiência e o impacto do sistema

especialista no ambiente.

NYKANEN (1991) enfatiza a avaliação como o aspecto mais complexo, sendo uma

interação natural e deve acontecer nos diferentes estágios do desenvolvimento, incluindo a

aquisição do conhecimento. O sistema deve ser avaliado como uma parte do ambiente

(condições do organismo) e não como uma parte separada.

Deste modo, mostra uma metodologia que deve cobrir 3 aspectos:

a) Elucidação do conhecimento

É a fase de modelagem do conhecimento. Devem ser consideradas as seguintes

questões:

Qual conhecimento deve ser elucidado?

Como o conhecimento dever ser organizado?

Como o conhecimento pode ser validado?

Nesta fase o especialista externa seu conhecimento e o projetista tenta elucidar o que é

relevante, descobrindo os elementos chave do domínio e o método usado pelo especialista. O

resultado é um modelo conceitual do domínio formalizado. A validação desse modelo abrange

a qualidade do conhecimento e seu modo de integração com os itens de um problema

proposto.

Page 85: USO DE SISTEMAS ESPECIALISTAS PARA DECISÃO DO …meusite.mackenzie.com.br/rogerio/tgi/2003Jess.pdf · utilizamos o softwareJess (Java Expert System Shell), umshell de sistemas especialistas

50

50

b) Modelo de desenvolvimento de ciclo de vida

A abordagem do ciclo de vida para a avaliação é dividida em 4 fases:

• exploração preliminar da especificação do sistema: é uma conferência baseada

nos objetivo e requisitos funcionais documentados pelo usuário;

• validação do sistema na prática: significa julgar os resultados obtidos. Pode ser

feita pelo usuário final ou pela equipe de desenvolvimento, que é responsável pela

manutenção e atualização. Este desempenho está associado ao conhecimento dos

especialistas;

• funcionalidade e utilização: o foco principal está sobre a interface com o usuário,

na interação homem-máquina . Deve-se observar se:

• as opções desejadas foram implementadas;

• lay-out da tela de apresentação é explicativo;

• o diálogo com o sistema é aceitável;

• as respostas são consistentes, bem descritas;

• o tempo de resposta é satisfatório;

• os limites são definidos;

• como se comporta numa situação que está fora dos seus conhecimentos;

• o sistema pode ser usado em outros ambientes da mesma área sem sofrer

grandes modificações.

• impacto do sistema: avalia os efeitos que tem sobre os usuários. A questão é saber

se o uso do sistema melhorou a qualidade do trabalho, através da observação de

longa duração. Verifica relação custo/benefício, gerenciamento do serviço de

saúde, educação e treino dos operadores , avanços em pesquisa médica e os aspecto

Page 86: USO DE SISTEMAS ESPECIALISTAS PARA DECISÃO DO …meusite.mackenzie.com.br/rogerio/tgi/2003Jess.pdf · utilizamos o softwareJess (Java Expert System Shell), umshell de sistemas especialistas

51

51

legais e éticos, tempo de consulta e a comparação do número e tipo de exames

pedidos antes e depois da implementação do sistema especialista.

c) Sistema como uma parte integrada do ambiente

Deve-se ter um entendimento da estrutura onde o sistema deve ser integrado. Observa-

se se o sistema pode efetivamente ajudar o usuário.

Os responsáveis pela avaliação são divididos em grupos (NYKANEM, 1991):

• equipe de desenvolvimento: responsável pelos testes básicos de desempenho.

Deve apresentar uma documentação objetiva da construção do projeto. Os

problemas comuns neste grupo é a falta de tempo e uma certa “cegueira” para

detectar as falhas dos sistema em funcionamento. Dentro desta equipe, se inclui o

gerente de projeto que deve avaliar o processo de desenvolvimento através da

administração e pesquisas de consumo e perspectivas;

• usuário: deve avaliar o sistema antes de aceitá-lo em uso. Mostrar de que forma o

sistema em particular vai atender suas necessidades. Sugere-se as perguntas:

Que desejo alcançar com o sistema?

Qual a relação custo/benefício?

Como o sistema especialista engloba nossos requisitos?

Quais as conseqüências de pegar um sistema específico em uso?

• especialista: tem seu papel na decisão da qualidade do sistema e na liberação para

uso;

• terceiros: é um grupo formado por pessoas que não estão envolvidas nem no

desenvolvimento nem no local de implementação, mas devem chegar a um

consenso para definir um padrão.

Page 87: USO DE SISTEMAS ESPECIALISTAS PARA DECISÃO DO …meusite.mackenzie.com.br/rogerio/tgi/2003Jess.pdf · utilizamos o softwareJess (Java Expert System Shell), umshell de sistemas especialistas

52

52

CLARKE et al (1994) apresentam uma proposta para avaliação baseada no modelo de

ciclo de vida proposto por (NYKANEN,1991), porém enfatizam a necessidade de feed-back,

num processo contínuo de interações com os especialistas, engenheiros de conhecimento e

usuários. Através do ciclo de vida, a razão, o tipo e a conseqüência de uma falha apontada no

processo de avaliação/construção do sistema especialista são identificados e modificados.

Essa metodologia é dividida em 4 fases sendo guiada também para determinar quando há

mudança de tecnologia e mudanças na prática médica podem causar alterações nos resultados

como mostra Figura 6.

Figura 6 – Método de Avaliação por Fases

Fase I – Idealização do sistema

As linhas mestre nesta etapa são:

Existe uma necessidade para o sistema?

Qual o papel do sistema em todo o empreendimento?

Qual o tipo de usuário que o sistema exige?

Page 88: USO DE SISTEMAS ESPECIALISTAS PARA DECISÃO DO …meusite.mackenzie.com.br/rogerio/tgi/2003Jess.pdf · utilizamos o softwareJess (Java Expert System Shell), umshell de sistemas especialistas

53

53

Depois de ter havido a idealização do sistema, duas abordagens para definição do

sistema tem lugar: o protótipo inicial e a especificação detalhada dos requisitos. O protótipo é

o resultado dessas duas abordagens, representando um progresso na formalização da estrutura

de avaliação, permitindo que se veja a funcionalidade do sistema no seu ambiente e o impacto

que este causa.

Fase II – Validade do Sistema

Esta etapa pode ser dividida em mais 2 etapas:

• validade estrutural: faz a validade da base de conhecimento envolvendo testes

para decidir se à base satisfaz as condições de consistência. Isto pode ser feito

rodando simples casos ou usando ferramentas projetadas para validar base de

conhecimento de sistemas. As propriedades do mecanismo de inferência do

domínio particular de um problema deve também ser avaliada;

• validade semântica: está relacionada com a aplicação do conhecimento e tenta

medir a confiança da base. Um padrão deve ser definido para servir de

comparação com a atuação do sistema. Existem dificuldades quando não se

encontra o melhor o padrão, tendo que definir o que é aceitável.

Fase III – Funcionalidade do sistema:

Se refere a avaliação do sistema já no ambiente do usuário. As interações homem-

máquina são de crucial importância, determinando quando o usuário é capaz de operar o

sistema especialista corretamente e com confiança. Para facilitar a aceitação do sistema é

necessário que seja de fácil uso e que exija muito aprendizado especial. O tempo de demanda

da interação humana dever ser minimizado e o ambiente de trabalho não deve sofrer muita

alteração com a implementação do sistema. O usuário deve estar ciente dos limites do

conhecimento do sistema. O lay-out deve ser de fácil utilização, sendo bem próximo da versão

Page 89: USO DE SISTEMAS ESPECIALISTAS PARA DECISÃO DO …meusite.mackenzie.com.br/rogerio/tgi/2003Jess.pdf · utilizamos o softwareJess (Java Expert System Shell), umshell de sistemas especialistas

54

54

final. O sistema obtém um alto grau de confiança quando é aplicado em outro local de

domínio semelhante.

Fase IV – Impacto do sistema:

O sistema especialista permite mudança de atitude em toda a organização do

ambiente de trabalho. O raio de ação poder ser positivo, como uma aplicação de atualização

educacional permanente, ou negativo, gerando constantes críticas. A relação custo/benefício

deve analisar hardware, software, o tempo de aprendizagem do usuário e a manutenção para

confrontar com a possibilidade de recuperação rápida e precisa de dados e melhora na

eficiência ao atendimento aos pacientes. Os valores monetários, éticos e legais também são

enfocados.

CLARKE (1994) conclui seu trabalho dizendo que essas 4 fases da metodologia não

podem ser apresentadas isoladamente, pois a avaliação deve acompanhar todo o

desenvolvimento do sistema, evitando erros futuros e economizando tempo e esforço para a

equipe de desenvolvimento.

3.4 Vantagens e Desvantagens

Os benefícios advindos da utilização da técnica de sistema especialista são diferentes

daqueles obtidos pelos sistemas tradicionais, por tratar-se de sistemas dotados de inteligência

e conhecimento. Podemos destacar as principais vantagens:

• um sistema especialista pode melhorar a produtividade e desempenho de seus

usuários, considerando que o provê comum vasto conhecimento, que, certamente,

Page 90: USO DE SISTEMAS ESPECIALISTAS PARA DECISÃO DO …meusite.mackenzie.com.br/rogerio/tgi/2003Jess.pdf · utilizamos o softwareJess (Java Expert System Shell), umshell de sistemas especialistas

55

55

em condições normais, demandaria mais tempo para assimilá-lo e,

consequentemente, utilizá-lo em suas tomadas de decisão;

• sistemas especialistas reduzem o grau de dependência que as organizações mantêm

quando se vêem em situações críticas, inevitáveis, como, por exemplo, a falta de

um especialista. As pessoas morrem, ficam doentes, tiram férias e até optam por

melhores ofertas de trabalhos; assim, tornam as organizações em que trabalham

vulneráveis e extremamente dependentes de suas decisões. Ao registrar o

conhecimento de empregados nos sistemas especialistas, promove-se uma

significativa redução no grau de dependência entre empresa e a presença física do

empregado;

• resultados mais consistentes e reprodutíveis sem influência de fatores emocionais,

“stress” ou pressões.

Dentre outras, podemos citar:

• ajuda a reduzir falhas humanas e acelerar tarefas;

• apresenta estabilidade e flexibilidade;

• aumenta o desempenho e a qualidade na resolução de problemas;

• combina e preserva o conhecimento dos especialistas;

• contempla hipóteses múltiplas simultaneamente;

• integra várias ferramentas;

• apresenta maior eficiência e otimização de resultados;

• possui maior rapidez na resolução de problemas.

Como principais desvantagens temos:

• os sistemas especialistas tendem a trabalhar de uma forma rotineira, sem

inspiração ou criatividade onde não é sintetizado novo conhecimento;

Page 91: USO DE SISTEMAS ESPECIALISTAS PARA DECISÃO DO …meusite.mackenzie.com.br/rogerio/tgi/2003Jess.pdf · utilizamos o softwareJess (Java Expert System Shell), umshell de sistemas especialistas

56

56

• dificuldade de lidar com situações inesperadas - entrada de informação e

representação simbólica e não sensória; não possuir conhecimento do senso

comum.

3.5 Conclusão

Concluímos que os sistemas especialistas baseados em regras capturam o

conhecimento e raciocínio de um especialista humano e armazena-os na forma de regras

através de uma estrutura composta por: uma base de conhecimento, que é uma coleção de

conhecimento, ou seja, as informações necessárias para resolução de um problema específico;

o motor de inferência, que manipula regras e fatos e a memória de trabalho, que é uma

estrutura que armazena as informações temporariamente referentes à interação do usuário com

o sistema. Para o desenvolvimento de uma aplicação de um sistema especialista baseado em

regras deve-se definir uma metodologia a ser aplicada e realizar etapas importantes como a

aquisição de conhecimento que consiste em estudar o problema, conversar com o especialista,

analisar o conhecimento, fazer a proposta de como a representação desse conhecimento será

feita e finalmente validar com usuários e especialistas de sistema se todas as etapas estão

viáveis e consistentes. No próximo capítulo veremos o Shell que utilizamos para a construção

de nosso sistema especialista baseado em regras, o Jess, seus principais comandos e a

definição de um sistema especialista baseado em regra para analisar perfis de investidores.

Page 92: USO DE SISTEMAS ESPECIALISTAS PARA DECISÃO DO …meusite.mackenzie.com.br/rogerio/tgi/2003Jess.pdf · utilizamos o softwareJess (Java Expert System Shell), umshell de sistemas especialistas

15

15

é, achar que a máquina é um homem, então não restaria a menor dúvida de que existem

máquinas inteligentes (pela imitação dos comportamentos humanos).

O termo inteligência artificial nasceu em 1956, quando surgiu o primeiro programa de

inteligência artificial (Logic Theoristic) capaz de demonstrar teoremas não triviais de lógica

matemática, baseado na utilização de sistemas especialistas e na introdução de heurísticas1.

Segundo o dicionário Aurélio, inteligência significa a faculdade ou capacidade de

aprender, apreender ou compreender; intelecto. E, artificial significa algo que não é natural,

fingido.

A qualidade “inteligente” atribuída a um sistema é justificada pelo fato de ele

apresentar algumas características que denotam inteligência como: distinção, capacidade de

adaptação e tratamento diferenciado de acordo com a pessoa com a qual ele interage. Segundo

WARWICK (1991), a palavra inteligência não tem uma definição científica: “Embora

sejamos inteligentes, não sabemos realmente o que inteligência significa”. Entretanto,

conseguimos atribuir esta característica às pessoas. De RABUSKE (1995) pode-se coletar

algumas conceituações:

• "Inteligência é julgar bem, compreender bem, raciocinar bem”.(BINET);

• "Inteligência é a habilidade de resolver problemas difíceis”.(MINSKY).

A definição de inteligência artificial já foi abordada por diversos autores, tais como:

1 Heurísticas: técnica para resolução de problemas constituída de regras baseadas na experiência e noplanejamento englobando estratégias, procedimentos, métodos de aproximação e tentativa/erro, sempre naprocura da melhor forma de chegar a um determinado fim.

Page 93: USO DE SISTEMAS ESPECIALISTAS PARA DECISÃO DO …meusite.mackenzie.com.br/rogerio/tgi/2003Jess.pdf · utilizamos o softwareJess (Java Expert System Shell), umshell de sistemas especialistas

16

16

• "Inteligência artificial é a capacidade de uma máquina de realizar funções que se

fossem realizadas pelo ser humano seriam consideradas inteligentes”.

(MCCARTY);

• "A inteligência artificial é conhecimento - teoria, dados, avaliação - que descreve

os meios para alcançar uma classe de fins desejados”.(ALLEN NEWELL, 1977);

• “O estudo da computação que torna possível perceber, reagir e agir”.

(WINSTON, 1992).

Computadores e cérebros trabalham com diferentes componentes, com diferentes

propriedades, e então a principal discussão da inteligência artificial é: Como fazer as

máquinas pensarem iguais ao cérebro humano?

A inteligência artificial concentra seus estudos em dar aos computadores habilidades

normalmente associadas aos seres humanos, como compreensão da linguagem natural2

resolução de problemas e a capacidade de aprender por si mesmos e busca para construir

entidades de inteligência e compreendê-las. Embora ninguém possa predizer o futuro em

detalhes, está claro que computadores com inteligência do nível humano (ou maior) teriam

um impacto enorme em nossas vidas cotidianas e no futuro de civilização.

Em suma a inteligência artificial é uma ciência que desenvolve a capacidade de uma

máquina para imitar o raciocínio humano, isto é, torná-las com a capacidade de raciocinar,

perceber, planejar, refletir, aprender e agir. Para as pessoas as tarefas de olhar e falar são

2 Linguagem natural: interpreta muitas palavras comuns, mas palavras, raramente utilizadas e/ou jargões técnicosespecíficos da área, deverão ser integradas ao dicionário

Page 94: USO DE SISTEMAS ESPECIALISTAS PARA DECISÃO DO …meusite.mackenzie.com.br/rogerio/tgi/2003Jess.pdf · utilizamos o softwareJess (Java Expert System Shell), umshell de sistemas especialistas

17

17

tarefas simples e comuns que chegam a ser insignificantes. Tarefas como multiplicações de

números de 10 dígitos, por outro lado, para a maioria das pessoas são tarefas complexas,

enquanto para um computador é uma tarefa básica e simples. A mente humana pode

incorporar novos conhecimentos sem alterar seu funcionamento e sem atrapalhar todos os

outros fatos que já estão armazenados no cérebro. Na verdade, os problemas mais

interessantes da inteligência artificial são os de tentar reproduzir as faculdades mentais de

pessoas comuns, como no campo da visão e da linguagem natural.

No final dos anos 50 e início dos anos 60, os cientistas Newell, Simon, e J. C. Shaw

introduziram o processamento simbólico. Ao invés de construir sistemas baseados em

números, eles tentaram construir sistemas que manipulassem símbolos. A abordagem era

poderosa e foi fundamental para muitos trabalhos posteriores. Portanto, o grande desafio

das pesquisas em inteligência artificial,

desde a sua criação, pode ser sintetizado com a indagação feita por Minsky (1968) em seu

livro “Semantic Information Processing”, há quase quarenta anos : “Como fazer as máquinas

compreenderem as coisas ?”

No começo dos anos 80, os japoneses lançam o projeto de fabricação dos

computadores de quinta-geração e popularizaram o uso da linguagem de programação Prolog,

despertando a atenção de todos para uma ciência até então pouco considerada, a inteligência

artificial.

Nesse período surgiram diversas áreas de atuação da inteligência artificial, tais como:

• processamento de linguagem natural: são programas que respondem a perguntas

feitas em linguagem natural sobre uma base de dados (criada pela aquisição de

material textual) através da tradução de sentenças;

Page 95: USO DE SISTEMAS ESPECIALISTAS PARA DECISÃO DO …meusite.mackenzie.com.br/rogerio/tgi/2003Jess.pdf · utilizamos o softwareJess (Java Expert System Shell), umshell de sistemas especialistas

18

18

• robótica e visão: é o campo de estudo voltado para desenvolver meios de

construir máquinas que possam interagir com o meio (ver, ouvir e reagir aos

estímulos sensoriais);

• aprendizado: também chamado de Sistemas Tutoriais Inteligentes – STI, são

programas de computador com propósitos educacionais, geralmente utilizando-se

da tecnologia dos sistemas especialistas;

• redes neurais: são redes inspiradas na estrutura do cérebro, com o objetivo de

apresentar características similares ao comportamento humano;

• lógica difusa: é uma lógica multivalorada capaz de capturar informações vagas,

em geral descritas em linguagem natural e convertê-las para um formato numérico

de fácil manipulação pelos computadores;

• algoritmos genéticos: são algoritmos de otimização global, baseados nos

mecanismos de seleção natural e genética. Eles empregam uma estratégia de busca

paralela e estruturada, mas aleatória;

• autômatos finitos: são tipicamente a base formal para implementação de

analisadores léxicos, sendo, portanto, o principal mecanismo utilizado na

compilação de programas;

• sistemas especialistas: também chamados Sistemas Cognitivos, são programas

que tentam reproduzir o mecanismo de pensamento de um especialista humano

relativo às questões profissionais da sua área.

Hoje em dia, isso ainda é um assunto delicado, pois existem diversos autores como,

por exemplo, Penrose e Searle que dizem “Máquinas nunca poderão pensar”, pois tudo que a

máquina faz são os humanos que comandam e programam o sistema para determinada ação.

Page 96: USO DE SISTEMAS ESPECIALISTAS PARA DECISÃO DO …meusite.mackenzie.com.br/rogerio/tgi/2003Jess.pdf · utilizamos o softwareJess (Java Expert System Shell), umshell de sistemas especialistas

19

19

No entanto, a inteligência artificial continua se aperfeiçoando, para se aproximar do

modo como os seres humanos pensam, com o objetivo de modelar esses pensamentos em

processos computacionais.

2.2 Representação do Conhecimento

Para utilizar um corpo de conhecimento em uma máquina, é necessário escolher uma

maneira de representá-lo. Todo programa de computador contém o conhecimento sobre um

determinado problema a ser resolvido. O conhecimento está nos algoritmos que o programa

emprega e nos procedimentos de decisão que determina qual destes algoritmos são

empregados em determinada circunstância. Quando se carrega um programa em um

computador, pode-se dizer que o computador "adquiriu" o respectivo conhecimento,

entretanto, na maioria dos programas, estas informações não são representadas explicitamente

e não podem ser facilmente atualizadas ou manipuladas. A representação do conhecimento

está sempre relacionada com as formas de expressão da informação. Diferentes sistemas de

representação podem ser mais adequados para diferentes problemas, embora ainda existam

muitas pesquisas no sentido de desenvolver sistemas e linguagens de representação de

propósito geral.

Geralmente, a questão central é: como representar o conhecimento de modo formal

sem considerar como ele será utilizado? Entretanto, na maioria das pesquisas atuais sustentam

amplamente que é inútil considerar uma representação, sem considerar o raciocínio que será

realizado sobre a mesma. Assim, a área de representação de conhecimento tem sido

claramente padronizada para representação de conhecimento e raciocínio. Como resultado, as

Page 97: USO DE SISTEMAS ESPECIALISTAS PARA DECISÃO DO …meusite.mackenzie.com.br/rogerio/tgi/2003Jess.pdf · utilizamos o softwareJess (Java Expert System Shell), umshell de sistemas especialistas

20

20

pesquisas estão enraizadas no estudo das lógicas em geral, onde sintaxes formais de

linguagens são acompanhadas por regras, inferência e interpretações. É importante considerar

que uma linguagem de representação de conhecimento não deve ser caracterizada somente em

termos de sua adequação, mas também em termos de sua eficácia computacional. Assim, uma

representação não deve meramente prescrever como trechos individuais de informações são

representados, mas deve especificar como a totalidade da informação é estruturada e

organizada de modo que as informações relevantes possam ser recuperadas e que as

inferências adequadas apresentem um nível aceitável de eficiência.

Existem duas tradicionais abordagens ou metodologias que direcionam as pesquisas

em representação do conhecimento, praticamente desde os anos formativos de inteligência

artificial. Uma delas representada por John McCarthy, tenta adaptar os problemas de

inteligência artificial a um mundo sistematizado da lógica simbólica, onde seu principal

interesse é a maneira de representar relações e características de um problema através do uso

de expressões da lógica simbólica e também ampliar o limite das possibilidades para estes

tipos de expressões. A segunda abordagem, representada por Marvin Minsky, afirma que o

comportamento do cérebro humano é muito complexo para ser expresso dentro da lógica

simbólica. Ele criou os “frames” como uma combinação de ferramentas e métodos que podem

descrever as atividades do cérebro humano sem permanecer confinado à lógica simbólica. A

lógica simbólica é geralmente referida como abordagem declarativa, enquanto esta última

abordagem é chamada de procedimental.

David Israel faz uma boa análise sobre estas duas vertentes e, segundo ele, o que estas

duas correntes de pesquisas em inteligência artificial vêm debatendo ao longo dos anos é, na

verdade, o papel da lógica na resolução de problemas em inteligência artificial. McCarthy

acredita que a maneira de resolver problemas é projetar programas de computador para

raciocinar de acordo com linguagens bem definidas da lógica matemática, sendo ou não a

Page 98: USO DE SISTEMAS ESPECIALISTAS PARA DECISÃO DO …meusite.mackenzie.com.br/rogerio/tgi/2003Jess.pdf · utilizamos o softwareJess (Java Expert System Shell), umshell de sistemas especialistas

21

21

maneira como as pessoas pensam. Por outro lado, Minsky acredita que uma abordagem

proveitosa é tentar utilizar os computadores para imitar a maneira como o cérebro funciona e,

afirma ele, isto nada tem haver com a lógica matemática.

Certamente existem várias outras questões envolvidas neste velho debate, embora

todos os seus participantes concordem que o objetivo principal da pesquisa é que os

computadores devem, de uma maneira ou de outra, “conhecer” muito do que cada ser humano

conhece sobre o mundo e sobre os organismos, naturais ou artificiais, que nele habitam.

Os pesquisadores em inteligência artificial costumam fazer a distinção entre estes dois

tipos de conhecimento, quais sejam, o declarativo e o procedimental. Tem havido muitas

controvérsias sobre qual destas duas estruturas de representação é a melhor. Não há uma

resposta precisa, até porque a própria distinção entre as duas formas é, em geral, muito

nebulosa. Entretanto, existe uma concordância em que na maioria dos domínios requer a

utilização de ambos os tipos de informações. Assim, na prática, na maioria das representações

emprega uma combinação destas duas abordagens.

2.3 Sistemas Especialistas

2.3.1 Conceitos

Sistema - Conjunto de elementos, materiais ou idéias, entre os quais se possa

encontrar ou definir alguma relação.

Especialista - Pessoa que se consagra com particular interesse e cuidado a certo

estudo. Conhecedor, perito.

Page 99: USO DE SISTEMAS ESPECIALISTAS PARA DECISÃO DO …meusite.mackenzie.com.br/rogerio/tgi/2003Jess.pdf · utilizamos o softwareJess (Java Expert System Shell), umshell de sistemas especialistas

22

22

“Os sistemas especialistas são baseados em questões onde a atividade humana é o

raciocínio e não o cálculo exato, onde a habilidade em tomar atitudes corretas em decisões

difíceis está baseada na inferência, julgamento simbólico e experiências passada. Os

programas tradicionais baseados em lógica de procedimentos não são capazes de fazer estas

associações, pois seguem sempre a mesma seqüência” (HARMON & KING, 1988).

“Um programa tradicional pode somente fornecer respostas para questões

específicas para as quais foi preparado. Se uma nova informação se tornar disponível, o

programa precisa ser reescrito. Por outro lado, um sistema especialista pode facilmente ser

expandido para aceitar novos dados ou regras. Para usar um sistema especialista, o usuário

inicialmente estabelece um problema, ou uma meta que o sistema tenta resolver realizando

uma série de perguntas e utilizando seu conhecimento interno. Em alguns casos o sistema

pode fazer uso de questões de múltipla escolha” (TOWNSEND, 1987).

“Os sistemas especialistas são diferentes das aplicações típicas por causa de sua

arquitetura. Um dos princípios fundamentais no projeto de sistemas especialistas é a

separação do conhecimento de domínio (por exemplo, medicina ou geologia) dos programas

que “raciocinam” com este conhecimento” (BUCHANAN, 1989).

Os sistemas especialistas são projetados e desenvolvidos para atender uma aplicação

determinada e limitada do conhecimento humano, são capazes de emitir uma decisão, apoiado

em conhecimento justificado, a partir de uma base de conhecimento, tal qual um especialista

de determinada área do conhecimento humano.

Para tomar uma decisão sobre um determinado assunto, um especialista o faz a partir

de fatos que encontra e de hipóteses que formula, buscando em sua memória um

conhecimento prévio armazenado durante anos, no período de sua formação e no decorrer de

sua vida profissional, sobre esses fatos e hipóteses. E o faz de acordo com a sua experiência,

isto é, com o seu conhecimento acumulado sobre o assunto e, com esses fatos e hipóteses,

Page 100: USO DE SISTEMAS ESPECIALISTAS PARA DECISÃO DO …meusite.mackenzie.com.br/rogerio/tgi/2003Jess.pdf · utilizamos o softwareJess (Java Expert System Shell), umshell de sistemas especialistas

23

23

emite a decisão. Durante o processo de raciocínio, vai verificando qual a importância dos

fatos que encontra comparando-os com as informações já contidas no seu conhecimento

acumulado sobre esses fatos e hipóteses. Neste processo, vai formulando novas hipóteses e

verificando novos fatos e esses novos fatos vão influenciar no processo de raciocínio. Um

especialista com esse processo de raciocínio, pode não chegar a uma decisão se os fatos de

que dispõe para aplicar o seu conhecimento prévio não forem suficientes. Pode, por este

motivo, inclusive chegar a uma conclusão errada, mas este erro é justificado em função dos

fatos que encontrou e do seu conhecimento acumulado previamente. Já os sistemas

especialistas tentam imitar os humanos para tomar uma decisão sobre um assunto específico,

possuindo uma base de conhecimento para armazenar o máximo de conhecimento possível

para chegar a conclusões.

A maioria dos sistemas especialistas podem responder perguntas de usuários tais

como: por que, e o que aconteceria se para verificar como as alterações numa entrada pode

afetar os resultados.

Portanto, sistemas especialistas são aplicações da inteligência artificial, planejados

para adquirir e disponibilizar o conhecimento operacional de um especialista humano, além de

inferir conclusões, ter capacidade de aprender novos conhecimentos e, desse modo, melhorar

o seu desempenho de raciocínio, e a qualidade de suas decisões.

Podemos classificar os sistemas especialistas quanto às características do seu

funcionamento. De um modo geral, tais categorias são:

• interpretação: são sistemas que inferem descrições de situações a partir da

observação de fatos fazendo uma análise de dados e procurando determinar as

relações e seus significados. Devem considerar as possíveis interpretações,

descartando as que se mostrarem inconsistentes;

Page 101: USO DE SISTEMAS ESPECIALISTAS PARA DECISÃO DO …meusite.mackenzie.com.br/rogerio/tgi/2003Jess.pdf · utilizamos o softwareJess (Java Expert System Shell), umshell de sistemas especialistas

24

24

• diagnósticos: são sistemas que detectam falhas oriundas da interpretação de dados.

A análise dessas falhas pode conduzir a uma conclusão diferente da simples

interpretação de dados. Detectam os problemas mascarados por falhas dos

equipamentos e falhas do próprio diagnóstico, que este não detectou por ter

falhado. Esses sistemas já têm embutidos o sistema de interpretação de dados;

• monitoramento: interpreta as observações de sinais sobre o comportamento

monitorado. Tem de verificar continuamente um determinado comportamento em

limites pré-estabelecidos, sinalizando quando forem requeridas intervenções para o

sucesso da execução. Um sinal poderá ser interpretado de maneiras diferentes, de

acordo com a situação global percebida naquele momento, e a interpretação varia

de acordo com os fatos que o sistema percebe a cada momento;

• predição: a partir de uma modelagem de dados do passado e do presente, este

sistema permite uma determinada previsão do futuro. Como ele baseia sua solução

na análise do comportamento dos dados recebidos no passado, de ter mecanismos

para verificar os vários futuros possíveis, a partir da análise do comportamento

desses dados, fazendo uso de raciocínios hipotéticos e verificando a tendência de

acordo com a variação dos dados de entrada;

• planejamento: neste caso, o sistema prepara um programa de iniciativas a serem

tomadas para se atingir um determinado objetivo. São estabelecidas etapas e sub-

etapas e, em caso de etapas conflitantes, são definidas as prioridades. Possui

características parecidas com o sistema para a predição e normalmente opera em

grandes problemas de solução complexa. O princípio de funcionamento, em alguns

casos, é por tentativas de soluções, cabendo a análise mais profunda ao especialista

que trabalha com esse sistema. Enfoca os aspectos mais importantes e divide de

maneira coerente um problema em sub-problemas menos complexos,

Page 102: USO DE SISTEMAS ESPECIALISTAS PARA DECISÃO DO …meusite.mackenzie.com.br/rogerio/tgi/2003Jess.pdf · utilizamos o softwareJess (Java Expert System Shell), umshell de sistemas especialistas

25

25

estabelecendo sempre o relacionamento entre as metas destes subproblemas e a

meta principal;

• projeto: este sistema tem características parecidas com as do planejamento, e

devem-se confeccionar especificações tais que sejam atendidos os objetivos dos

requisitos particulares. É um sistema capaz de justificar a alternativa tomada para o

projeto final, e de fazer uso dessa justificativa para alternativas futuras;

• depuração: trata-se de sistemas que possuem mecanismos para fornecerem

soluções para o mau funcionamento provocado por distorções de dados. Provê, de

maneira automática, verificações nas diversas partes, incluindo mecanismos para ir

validando cada etapa necessária em um processo qualquer;

• reparo: este sistema desenvolve e executa planos para administrar os reparos

verificados na etapa de diagnóstico. Um sistema especialista para reparos segue

um plano para administrar alguma solução encontrada em uma etapa do

diagnóstico. São poucos os sistemas desenvolvidos, porque o ato de executar um

conserto em alguma coisa do mundo real é uma tarefa complexa;

• instrução: o sistema de instrução tem um mecanismo para verificar e corrigir o

comportamento do aprendizado dos estudantes. Normalmente, incorporam como

subsistemas um sistema de diagnóstico e de reparo, e tomam por base uma

descrição hipotética do conhecimento do aluno. Seu funcionamento consiste em ir

interagindo com o treinando, em alguns casos apresentando uma pequena

explicação e, a partir daí, ir sugerindo situações para serem analisadas pelo

treinando. Dependendo do comportamento deste, se vai aumentando a

complexidade das situações e encaminhando o assunto, de maneira didática, até o

nível intelectual do treinamento;

Page 103: USO DE SISTEMAS ESPECIALISTAS PARA DECISÃO DO …meusite.mackenzie.com.br/rogerio/tgi/2003Jess.pdf · utilizamos o softwareJess (Java Expert System Shell), umshell de sistemas especialistas

26

26

• controle: é um sistema que governa o comportamento geral de outros sistemas

(não apenas de computação). É o mais completo, de um modo geral, pois deve

interpretar os fatos de uma situação atual, verificando os dados passados e fazendo

uma predição do futuro. Apresenta os diagnósticos de possíveis problemas,

formulando um plano ótimo para sua correção. Este plano de correção é executado

e monitorado para que o objetivo seja alcançado.

2.3.2 Tipos de sistemas especialistas

Existem três tipos de sistemas especialistas, quanto à maneira como a base de

conhecimento é estruturada e, por conseguinte, como funciona o mecanismo de inferência:

• sistemas baseados em regras ou em quadros: estas são formas de representação

baseadas em associações entre conceitos. Normalmente as regras e quadros não

definem relações causa-efeito, mas apenas “receitas” de decisão. O mecanismo de

inferência testa se as regras são verdadeiras para cada caso, e pode combinar várias

regras até chegar a uma decisão com alto grau de probabilidade;

• sistemas baseados em modelos de causa-efeito: o mecanismo de inferência se

baseia em cadeias de relações causais, como por exemplo, se há febre, então há

infecção viral ou bacteriana, então pode tratar-se de uma hepatite;

• sistemas baseados em casos: o mecanismo de inferência utiliza o raciocínio

analógico, como por exemplo, se já tive uma experiência, então vou utilizar o

mesmo procedimento.

Todos os sistemas acima se baseiam em lógica, ou seja, o uso das proposições e

teoremas que consistem o fundamento do raciocínio do tipo verdadeiro / falso.

Page 104: USO DE SISTEMAS ESPECIALISTAS PARA DECISÃO DO …meusite.mackenzie.com.br/rogerio/tgi/2003Jess.pdf · utilizamos o softwareJess (Java Expert System Shell), umshell de sistemas especialistas

27

27

2.3.3 Histórico

A fase da revolução computacional que expandiu os sistemas especialistas iniciou no

começo dos anos 80, mais de 10 anos de pesquisa e desenvolvimento foram necessários para

viabilizar sistemas especialistas de modo comercial.

O objetivo dos cientistas de inteligência artificial sempre foi desenvolver programas

que pudessem, em algum sentido, pensar, isto é, resolver problemas de uma maneira que

pudesse ser considerada inteligente se feita por um humano. Os cientistas decidiram que

deveria existir uma outra maneira de tornar um programa “inteligente”, se era muito difícil

fazer um programa de propósitos gerais, eles poderiam se concentrar em desenvolver métodos

e técnicas gerais para usar em programas mais especializados. Desta forma, nos anos 80, os

estudos se concentraram em técnicas de representação - como formular o problema para

tornar a solução fácil - e pesquisa - como controlar a pesquisa para encontrar uma solução

sem gastar muito tempo ou usar muita memória. Novamente essa estratégia produziu alguns

sucessos, mas não a tão esperada inovação.

A partir do final da década de 80, os cientistas de inteligência artificial perceberam que

a capacidade de um programa para solucionar um problema depende do conhecimento que ele

possui, não somente dos formalismos e mecanismos de inferências que ele emprega.

"Para fazer um programa inteligente, abasteça-o com uma grande quantidade de

conhecimento específico e de alta qualidade sobre o problema" (WATERMAN, 1986).

Surgiram então programas com propósitos especiais em alguma área restrita, como por

exemplo, na área de finanças e médica. Estes programas foram chamados de sistemas

especialistas, sendo assim foram frutos de vinte anos de questionamento para definir a

natureza apropriada de tais programas.

Page 105: USO DE SISTEMAS ESPECIALISTAS PARA DECISÃO DO …meusite.mackenzie.com.br/rogerio/tgi/2003Jess.pdf · utilizamos o softwareJess (Java Expert System Shell), umshell de sistemas especialistas

28

28

O primeiro sistema especialista chamado DENDRAL, é um sistema interpretador de

análise de espectro de massa útil para análises químicas moleculares. Seguindo-se pelo

MYCIN desenvolvido por uma equipe de médicos e especialistas em inteligência artificial. O

MYCIN contém o conhecimento dos mais destacados especialistas no campo de doenças

infecciosas. Em 1978, foi desenvolvido o XCON pela DEC, que é um sistema especialista

para auxiliar na configuração de computadores de grande porte. E ainda o PROSPECTOR,

utilizado para avaliação de sítios geológicos (HELLER, 1991; LAWRENCE, 1992;

HARMON & KING, 1988). Todos esses sistemas especialistas citados acima foram

desenvolvidos no Instituto de Pesquisas de Stanford. Após este período surgiram diversos

sistemas especialistas nas mais variadas áreas de atuação.

Muitas organizações hoje em dia têm explorado essa tecnologia, ampliando suas

pesquisas e começando a adaptar suas atividades para tanto. Nos Estados Unidos existem

várias tendências no uso dos sistemas especialistas, como por exemplo: ênfase para o

problema de "solução de negócios", crescimento da tendência de sistemas de informação

"ativos", amplas bases de conhecimento e compartilhamento deste conhecimento, necessidade

de fornecer suporte de alto nível para pesquisa em inteligência artificial e uso de metodologias

estruturadas para desenvolvimento de sistemas especialistas. O uso de sistemas especialistas

no Brasil encontra-se em crescimento em diversas áreas. Dentre os sistemas desenvolvidos

pode-se citar: "Análise de crédito bancário", "Análise de hepatopatias crônicas" e "Análise

química qualitativa de minerais”.

2.4 Sistema Convencional X Sistema Especialista

Um sistema convencional está baseado em um algoritmo, que, passo a passo, após um

Page 106: USO DE SISTEMAS ESPECIALISTAS PARA DECISÃO DO …meusite.mackenzie.com.br/rogerio/tgi/2003Jess.pdf · utilizamos o softwareJess (Java Expert System Shell), umshell de sistemas especialistas

29

29

tempo aceitável, conduz a uma resposta. Ele é projetado para sempre terminar emitindo um

resultado final correto e processar volumes de dados de maneira repetitiva. Um sistema

especialista está baseado em uma busca heurística e trabalha com problemas para os quais não

existe uma solução convencional algoritmizada disponível ou, se existe, ela é demasiadamente

demorada para fornecer uma resposta.

Um processo heurístico normalmente conduz a soluções de maneira rápida, porém,

pode inclusive não conduzir a solução alguma. Assim, podemos afirmar sobre um sistema

especialista :

• pode chegar ou não a solução do problema;

• pode chegar a uma solução distorcida, isto é, pode errar. Porém, o seu erro ocorre

dentro de determinadas circunstâncias que são justificadas pelo próprio sistema;

• processa conhecimento e não dados. O conhecimento é armazenado em uma base

de conhecimento e os dados são ajustados contra ela. O processamento é feito em

cima desse conhecimento e não existe processamento de dados.

2.5 Conclusão

Mostramos que Inteligência Artificial é uma ciência que busca desenvolver a

capacidade de uma máquina imitar o raciocínio humano, isto é, fazer as máquinas com a

capacidade de raciocinar, perceber, planejar, refletir, aprender e agir.

A inteligência artificial pode ser aplicada em diversas áreas, como resolução de

problemas, linguagem natural e também sistemas especialistas, que são sistemas que tomam

determinadas decisões tendo uma grande base de conhecimento e que hoje em dia estão tendo

um grande destaque em áreas comerciais.

Page 107: USO DE SISTEMAS ESPECIALISTAS PARA DECISÃO DO …meusite.mackenzie.com.br/rogerio/tgi/2003Jess.pdf · utilizamos o softwareJess (Java Expert System Shell), umshell de sistemas especialistas

11

A inteligência artificial (IA) inicia sua história em meados dos anos 40, onde já havia

alguma pesquisa em torno de seqüências de estratégia e análise do funcionamento do cérebro

com objetivos de formalização de seu comportamento. Imprescindíveis para o avanço da

inteligência artificial foram os trabalhos dos matemáticos dos séculos XVII à XIX. No século

XIX surge à figura de Alan Turing - que desenvolveu o Teste de Turing, mas só em 1956 é

que a inteligência artificial começa a ser reconhecida como ciência.

O termo inteligência artificial foi introduzido pelo Dr. John McCarty (STANFORD AI

Lab.), em 1956, no Massachusetts Institute of Technology - MIT como título de uma

conferência sobre as possibilidades de fornecer inteligência à máquina. Segundo McCarty:

"Inteligência Artificial é a capacidade de uma máquina realizar funções que se fossem

realizadas pelo ser humano seriam consideradas inteligentes”.

A inteligência artificial é simplesmente uma maneira de fazer o computador pensar

inteligentemente, isto é conseguido estudando como as pessoas pensam quando estão tentando

tomar decisões e resolver problemas, dividindo estes processos de pensamento em etapas

básicas e desenhando um programa de computador que solucione problemas usando essas

mesmas etapas.

Esse assunto hoje em dia ainda é muito delicado, pois existem diversos autores como,

por exemplo, Penrose e Searle que dizem “Máquinas nunca poderão pensar”, eles acreditam

que a inteligência artificial é uma grande “bobeira” e que nunca as máquinas chegaram à

inteligência dos humanos, pois tudo que a máquina faz são os humanos que comandam e

programam o sistema para determinada ação.

É inviável criar um programa de inteligência artificial que cubra qualquer domínio

imaginável, ou seja, domínio significa cobrir áreas de interesse específico para as quais

podemos desenhar um sistema. Existem fatos e regras necessários para se alcançar todos os

objetivos em todos os domínios, que são infinitos, então o que podemos fazer é nos

Page 108: USO DE SISTEMAS ESPECIALISTAS PARA DECISÃO DO …meusite.mackenzie.com.br/rogerio/tgi/2003Jess.pdf · utilizamos o softwareJess (Java Expert System Shell), umshell de sistemas especialistas

12

especializarmos em uma área que contém informações suficientes que podem ser moldadas

em um programa de computador. Um sistema de inteligência artificial criado para resolver

problemas em um determinado domínio é chamado de sistemas especialistas, todo o

conhecimento de um sistema especialista é fornecido por pessoas que são especialistas

naquele domínio.

Os sistemas especialistas são projetados e desenvolvidos para atender a uma aplicação

determinada. Um sistema especialista é capaz de emitir uma decisão, apoiado em

conhecimento justificado, a partir de uma base de informações, como um especialista de

determinada área do conhecimento humano. Quando um especialista toma a decisão sobre

determinado assunto, o faz a partir de fatos que encontra e de hipóteses que formula,

buscando em sua memória um conhecimento prévio armazenado durante anos.

Existe um segmento da inteligência artificial chamado sistemas especialistas baseados

em regras, que funcionam essencialmente com regras de negócio que estudam diferentes

fragmentos de conhecimento. Esse sistema estuda cada regra definida e obtém o momento

exato em que serão executadas, ou seja, sempre que existe uma regra com informações

conhecidas em suas premissas ela é disparada e gera uma conclusão.

Como mostra o capítulo 5, a aplicação prática de um sistema especialista baseado em

regra na área financeira, mostra que é possível o sistema concluir para o investidor qual é o

perfil de investimento dividido em três categorias: conservador, moderado ou agressivo, onde

os especialistas buscam propor as opções de investimento mais adequadas ao perfil de um

dado cliente buscando garantir a satisfação do investidor no que se refere à rentabilidade e à

proteção do capital desejado. Esse sistema utiliza-se de perguntas que através da comparação

com as regras faz uma análise das respostas do investidor e toma ações dependendo da

resposta, concluindo qual o tipo de perfil desse investidor.

Page 109: USO DE SISTEMAS ESPECIALISTAS PARA DECISÃO DO …meusite.mackenzie.com.br/rogerio/tgi/2003Jess.pdf · utilizamos o softwareJess (Java Expert System Shell), umshell de sistemas especialistas

13

Para implementarmos o sistema especialista baseado em soluções de investimentos,

foram utilizadas informações de duas empresas financeiras, Banco Itaú S/A e InvestShop.

Utilizamos um software de apoio chamado Java Expert System Shell (Jess), que é um script

shell para construção de sistemas especialistas baseados em regras inteiramente desenvolvido

em Java, originalmente baseado na linguagem Clips e que possui vantagens no

desenvolvimento de aplicações permitindo superar algumas das limitações da programação

tradicional.

Os sistemas especialistas baseados em regras têm uma grande importância para todo o

mercado econômico, pois podem ser desenvolvidos em diversas áreas, como por exemplo, na

área médica, comercial, na área administrativa, sendo que essa possui um grande interesse

devido à tomada de decisões rápidas e estratégicas, onde os líderes e gerentes necessitam ter o

máximo de informação possível para que a decisão tomada seja eficiente.

Page 110: USO DE SISTEMAS ESPECIALISTAS PARA DECISÃO DO …meusite.mackenzie.com.br/rogerio/tgi/2003Jess.pdf · utilizamos o softwareJess (Java Expert System Shell), umshell de sistemas especialistas

3.3 METODOLOGIAS DE AVALIAÇÃO DE SISTEMAS

ESPECIALISTAS....................................................................................... 48

3.4 VANTAGENS E DESVANTAGENS........................................................ 54

3.5 CONCLUSÃO............................................................................................. 56

4 JESS (JAVA EXPERT SYSTEM SHELL)............................................. 57

4.1 UTILIZAÇÃO DO JESS............................................................................. 57

4.2 COMANDOS PRINCIPAIS DO JESS....................................................... 58

4.2.1 Átomos......................................................................................................... 58

4.2.2 Números e Textos (String)........................................................................... 59

4.2.3 Listas........................................................................................................... 59

4.2.4 Variáveis...................................................................................................... 60

4.2.4.1 Variáveis com Multi-Campos...................................................................... 60

4.2.4.2 Variáveis Globais........................................................................................ 60

4.2.5 Operadores.................................................................................................. 61

4.2.6 Fatos............................................................................................................ 62

4.2.7 Modelos........................................................................................................ 63

4.2.8 Regras.......................................................................................................... 64

4.2.9 Funções....................................................................................................... 65

4.2.10 Operadores de I/O....................................................................................... 65

4.2 ALGORITMO RETE.................................................................................. 66

5 APLICAÇÃO PARA DEFINIÇÃO DE PERFIL DO

INVESTIDOR........................................................................................... 69

5.1 TIPOS DE PERFIS...................................................................................... 70

5.2 DESENVOLVIMENTO DA APLICAÇÃO............................................... 73

5.2.1 Renda........................................................................................................... 74

Page 111: USO DE SISTEMAS ESPECIALISTAS PARA DECISÃO DO …meusite.mackenzie.com.br/rogerio/tgi/2003Jess.pdf · utilizamos o softwareJess (Java Expert System Shell), umshell de sistemas especialistas

5.2.2 Econômico................................................................................................... 75

5.2.3 Tolerância à Risco....................................................................................... 77

5.2.4 Investimento................................................................................................ 78

5.3 EXEMPLO DA APLICAÇÃO EM EXECUÇÃO...................................... 81

6 CONCLUSÃO............................................................................................ 85

REFERÊNCIAS......................................................................................... 87

APÊNDICES.............................................................................................. 91

Page 112: USO DE SISTEMAS ESPECIALISTAS PARA DECISÃO DO …meusite.mackenzie.com.br/rogerio/tgi/2003Jess.pdf · utilizamos o softwareJess (Java Expert System Shell), umshell de sistemas especialistas

ABSTRACT

Expert System has been used modestly for commercial applications developmentcompared with your useful in engineering, prediction or control. In general, there are fewnumbers of solutions available, like suppliers and products compared with a severalsolutions of application traditional development support. This study shows the use ofexpert systems based in rules in the development of commercial applications. The softwareJess (Java Expert System Shell), a shell of expert system based on Java language, was usedfor the application development to decide what kind of investor the user is, like smallinvestor, medium or high. In this system, the knowledge base allow to deduce throughreceived information by the user, like your actual financial situation, risk tolerance leveland investment propose, the kind of investor are more suitable and profitable. As a result,these expert systems can substitute and complement advantages in the traditionaldevelopment, specially to take decisions about investments, this systems enable moreflexibility in the development and improve some limitation of traditional programming,allowing to extend anything other commercial applications like, sales, financialapplications or process control in the services areas.

Keywords: expert systems; Jess; artificial intelligence.