52
UNIVERSIDADE FEDERAL DO ESPÍRITO SANTO CENTRO TECNOLÓGICO DEPARTAMENTO DE INFORMÁTICA PROJETO DE GRADUAÇÃO SISTEMA BASEADO EM CONHECIMENTO APOIADO PELA LÓGICA FUZZY WAGNER SOARES DE OLIVEIRA

SBCFuzzy - Sistema Baseado Em Conhecimento Apoiado Pela Logica Fuzzy

Embed Size (px)

DESCRIPTION

O SBCfuzzy é um sistema Web desenvolvido com a tecnologia Java que permite a criação de projetos específicos de conhecimentos, manipulando variáveis, sejam estas determinísticas, qualitativas ou de pesquisa. A base de conhecimento permite a criação de novas regras pelo especialista no domínio de aplicação, as quais serão processadas pela máquina de inferência fuzzy e gerarão uma análise sobre o problema proposto.

Citation preview

Page 1: SBCFuzzy - Sistema Baseado Em Conhecimento Apoiado Pela Logica Fuzzy

UNIVERSIDADE FEDERAL DO ESPÍRITO SANTOCENTRO TECNOLÓGICO

DEPARTAMENTO DE INFORMÁTICAPROJETO DE GRADUAÇÃO

SISTEMA BASEADO EM CONHECIMENTO APOIADO PELA LÓGICA FUZZY

WAGNER SOARES DE OLIVEIRA

VITÓRIA – ESJULHO/2010

Page 2: SBCFuzzy - Sistema Baseado Em Conhecimento Apoiado Pela Logica Fuzzy

WAGNER SOARES DE OLIVEIRA

SISTEMA BASEADO EM CONHECIMENTO APOIADO PELA LÓGICA FUZZY

Parte manuscrita do Projeto de Graduação do aluno Wagner Soares de Oliveira apresentado ao Departamento de Informática do Centro Tecnológico da Universidade Federal do Espírito Santo, para obtenção do grau de Bacharel em Ciência da Computação.

VITÓRIA – ESJULHO/2010

Page 3: SBCFuzzy - Sistema Baseado Em Conhecimento Apoiado Pela Logica Fuzzy

WAGNER SOARES DE OLIVEIRA

SISTEMA BASEADO EM CONHECIMENTO APOIADO PELA LÓGICA FUZZY

COMISSÃO EXAMINADORA:

___________________________________ Prof. Dr. Cicero Romão Cavati

___________________________________Prof. Dr. Alessandro Mattedi

___________________________________Prof. Dra. Tânia Barbosa Salles Gava

Vitória - ES, 09 de Julho de 2010

Page 4: SBCFuzzy - Sistema Baseado Em Conhecimento Apoiado Pela Logica Fuzzy

Dedico esse trabalho a todos que acreditaram em mim e sempre me apoiaram nas horas

difíceis.

Page 5: SBCFuzzy - Sistema Baseado Em Conhecimento Apoiado Pela Logica Fuzzy

AGRADECIMENTOS

Agradeço a todos que de uma forma ou

de outra me deram apoio para que eu

conseguisse chegar até aqui.

Agradeço a todos os meus professores

que compartilharam o seu conhecimento a mim

e a meus colegas durante o curso.

Page 6: SBCFuzzy - Sistema Baseado Em Conhecimento Apoiado Pela Logica Fuzzy

RESUMO

Neste trabalho apresenta-se inicialmente um estudo resumido sobre Sistemas Baseados

em Conhecimento (SBC) e sua relação com a lógica Fuzzy. A lógica Fuzzy surgiu como uma

iniciativa de aproximação entre raciocínio humano e modelagem computacional mesmo nos

casos imprecisos e incertos, sendo considerada uma técnica inteligente que permite a

manipulação de informações imprecisas - como muito pouco, mais ou menos,

aproximadamente etc. Nesse contexto a lógica fuzzy se mostra uma ferramenta poderosa

quando utilizada no processo de inferência sobre uma base de conhecimento em um SBC para

gerar análises e novo conhecimento.

    Com o objetivo de juntar essas duas grandes áreas de pesquisa, foi implementado o

SBCfuzzy, um Sistema Baseado em Conhecimento apoiado pela lógica Fuzzy. O SBCfuzzy é

um sistema Web desenvolvido com a tecnologia Java que permite a criação de projetos

específicos de conhecimentos, manipulando variáveis, sejam estas determinísticas,

qualitativas ou de pesquisa. A base de conhecimento permite a criação de novas regras pelo

especialista no domínio de aplicação, as quais serão processadas pela máquina de inferência

fuzzy e gerarão uma análise sobre o problema proposto.

Palavras-chave: Lógica Fuzzy, Conjuntos Difusos, Sistemas Baseados em Conhecimento.

Page 7: SBCFuzzy - Sistema Baseado Em Conhecimento Apoiado Pela Logica Fuzzy

ABSTRACT

In this work the goal is to present a succint study about knowledge-based systems and

their relationship to fuzzy logic. Fuzzy logic emerged as an initiatie to make a link between

the human reasoning and the computational modeling even in imprecise and uncertain cases,

and is considered an intelligent technique that allows the handling of inaccurate informations -

such as "too little", "so-so", "about", "aproximately", among many others. In this context, the

fuzzy logic reflects as a very powerful tool when used in the process of inferences about

knowledge-fundaments in a SBC to generate analysis and new knowledge.

With the objective to merge these two major research areas, was implemented the

SBCfuzzy, a knowledge-based system supported by the Fuzzy logic. SBCfuzzy is a web

system developed with Java technology that enables the creation of specific knowledge-

projects, manipulating variables, be they deterministic, for research or qualitatives. The

knowledge base allows the creation of new rules for specialists in the field of application,

which will be processed by the fuzzy inference machine and generate an analysis about the

proposed problem.

Keywords: Fuzzy Logic, Fuzzy Sets, Knowledge-Based Systems.

Page 8: SBCFuzzy - Sistema Baseado Em Conhecimento Apoiado Pela Logica Fuzzy

LISTA DE FIGURAS

FIGURA 1 - SISTEMA DE CONTROLE DIFUSO DE MAMDANI.............................................11

FIGURA 2 - FUNÇÕES TRIANGULAR E TRAPEZOIDAL........................................................13

FIGURA 3 - MÉTODO DO CENTRO DE GRAVIDADE...........................................................14

FIGURA 4 - ESTRUTURA BÁSICA DO SBCFUZZY...............................................................16

FIGURA 5 - PARTIÇÕES PARA VARIÁVEIS DE PESQUISA....................................................18

FIGURA 6 - ENTRADAS PARA O SBCFUZZY......................................................................19

FIGURA 7 - CADASTRAMENTO DE PROJETO......................................................................24

FIGURA 8 - CADASTRAMENTO DE USUÁRIO.....................................................................25

FIGURA 9 - EDITAR PROJETO............................................................................................25

FIGURA 10 - EDITAR VARIÁVEL QUANTITATIVA..............................................................26

FIGURA 11 - EDITAR VARIÁVEL DE PESQUISA.................................................................26

FIGURA 12 - NOVO FORMULÁRIO.....................................................................................27

FIGURA 13 - INSERIR PERGUNTA......................................................................................27

FIGURA 14 - BASE DE REGRAS.........................................................................................28

FIGURA 15 - EDITAR REGRA.............................................................................................28

FIGURA 16 - VISUALIZAR VARIÁVEIS DO PROJETO CORRENTE........................................29

FIGURA 17 - VISUALIZAR DETALHES DA VARIÁVEL E SUAS PARTIÇÕES.........................29

FIGURA 18 - VISUALIZAR FORMULÁRIOS DO PROJETO CORRENTE..................................30

FIGURA 19 - VISUALIZAR DETALHES DE UM FORMULÁRIO..............................................30

FIGURA 20 - VISUALIZAR REGRAS DO PROJETO CORRENTE............................................31

FIGURA 21 - ABRIR PROJETO............................................................................................31

FIGURA 22 - CRIAR ANÁLISE............................................................................................32

FIGURA 23 - ABRIR ANÁLISE............................................................................................32

FIGURA 24 - INSERIR DADOS PARA ANÁLISE....................................................................33

FIGURA 25 - PREENCHER FORMULÁRIO...........................................................................33

Figura 26 - Gerar Análise do Projeto...............................................................................34

Page 9: SBCFuzzy - Sistema Baseado Em Conhecimento Apoiado Pela Logica Fuzzy

SUMÁRIO

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

2 SISTEMAS FUZZY..........................................................................................11

2.1 VARIÁVEIS E REGRAS.......................................................................................11

2.2 FUZZIFICAÇÃO:.................................................................................................12

2.3 PARTE ANTECEDENTE DA REGRA:.....................................................................13

2.4 PARTE CONSEQÜENTE DE CADA REGRA:...........................................................13

2.5 DESFUZZIFICAÇÃO............................................................................................13

3 SISTEMAS BASEADOS EM CONHECIMENTO.......................................14

3.1 BASE DE FATOS................................................................................................15

3.2 BASE DE CONHECIMENTO.................................................................................18

3.3 MÁQUINA DE INFERÊNCIA................................................................................19

3.4 NOVO CONHECIMENTO.....................................................................................19

4 TECNOLOGIAS E FERRAMENTAS UTILIZADAS..................................20

4.1 JAVA[7].............................................................................................................20

4.2 HIBERNATE[10].................................................................................................20

4.3 MYSQL[9]........................................................................................................20

4.4 JAVA SERVER FACES(JSF) + RICHFACES[11]...................................................21

4.5 NETBEANS IDE[8]............................................................................................21

5 SBCFUZZY........................................................................................................23

5.1 TELAS ESPECÍFICAS PARA O ADMINISTRADOR DO SISTEMA.............................23

5.2 TELAS ESPECÍFICAS PARA O USUÁRIO COMUM DO SISTEMA............................28

5.3 TELAS COMPARTILHADAS POR ADMINISTRADORES E USUÁRIOS COMUNS......30

6 CONCLUSÃO...................................................................................................34

6.1 TRABALHOS FUTUROS......................................................................................34

7 Referências bibliográficas...................................................................................35

Page 10: SBCFuzzy - Sistema Baseado Em Conhecimento Apoiado Pela Logica Fuzzy

10

1 INTRODUÇÃO

Lidar com fatores como ambigüidade, incerteza e informações vagas na resolução de

problemas é uma característica do pensamento humano, que usa o conhecimento adquirido e

experiências para lidar com esses fatores [1] [2]. Nos problemas de difícil solução, em que se

faz necessário o auxílio matemático/computacional, modelar tais fatores é extremamente

difícil. A modelagem computacional convencional não trabalha com ambigüidades, pois

utiliza o conceito de verdadeiro ou falso [2]. A precisão computacional também é limitada,

deixando sempre uma margem, por mínima que seja, para a incerteza [1]. A vagueza de

informações advinda da linguagem natural agrava ainda mais os fatores citados. Para lidar

com isso de forma matemática, foi desenvolvida por Zadeh[4] a Teoria dos Conjuntos Fuzzy

(nebulosos), teoria a qual permite tratar níveis de incerteza a ambigüidade.

Neste trabalho serão abordados, de maneira resumida, aspectos da Lógica Fuzzy (e seus

elementos básicos) e uma rápida introdução ao que é um Sistema Baseado em Conhecimento

(SBC). O propósito deste trabalho é apresentar um sistema que une essas duas grandes áreas

de conhecimento, sendo um sistema baseado em conhecimento apoiado pela lógica Fuzzy, o

qual chamamos de SBCfuzzy. Além disso, este trabalho é uma evolução do trabalho

desenvolvido por Cavati e Ottoni em [6]. Será apresentado o SBCfuzzy como um sistema

baseado em conhecimento criado para a plataforma Web e desenvolvido com a tecnologia

JavaTM. O SBCfuzzy utiliza-se da lógica Fuzzy no processamento da base de conhecimento e

no processo de inferência de novos conhecimentos.

No capítulo 2 será apresentado de maneira resumida o conceito de lógica Fuzzy

integrado ao conceito de sistema Fuzzy, sendo este um conceito amplo, entretanto não é o

objetivo deste trabalho esgotar o assunto ou aprofundar-se em discussões teóricas. No

capítulo 3 serão mostrados os conceitos básicos de Sistemas Baseados em Conhecimento e

sua relação com os sistemas Fuzzy. No capítulo 4 será mostrada de forma breve a

metodologia empregada para construção do SBCfuzzy e as ferramentas e tecnologias

utilizadas. No capítulo 5 serão apresentadas capturas de telas do SBCfuzzy mostrando sua

interface e suas funcionalidades.

No capítulo 6 é feita a conclusão e a descrição sobre trabalhos futuros.

Page 11: SBCFuzzy - Sistema Baseado Em Conhecimento Apoiado Pela Logica Fuzzy

11

2 SISTEMAS FUZZY

A teoria de conjuntos Fuzzy tem sido empregada com sucesso para exprimir

conhecimento impreciso e resolver problemas em muitas áreas onde a modelagem

convencional é difícil, ineficiente ou traz muitos custos. A possibilidade de descrição

lingüística do modelo possibilita o aproveitamento do conhecimento heurístico dos

operadores e facilita o desenvolvimento de soluções.

A estrutura de universo de discurso, variáveis lingüísticas, fuzzificação, base de regras,

máquina de inferência e sistema de defuzzificação proposta por Mandani [3], quando bem

implementadas, são de grande valia na resolução de problemas, possibilitando decisões

rápidas e coerentes num ambiente de incertezas.

A lógica Fuzzy é uma técnica comparativamente simples e de vasto espectro de

aplicabilidade, em particular a problemas de controle e de decisão. A figura 1 ilustra o

controlador Fuzzy proposto por Mamdani:

Figura 1 - Sistema de Controle Difuso de Mamdani.

2.1 Variáveis e Regras

Assim, o projeto de um sistema Fuzzy consiste em:1. Definir os universos de discurso das variáveis lingüísticas do sistema e a variação da

saída do controlador (discretização ou níveis de quantização);2. Definição do número das partições de cada variável e graus de pertinência dos

conjuntos difusos que representam cada partição;3. Determinação das regras que formam a base de conhecimento;

Page 12: SBCFuzzy - Sistema Baseado Em Conhecimento Apoiado Pela Logica Fuzzy

12

Um possível quarto passo seria a definição dos parâmetros do projeto, como método de inferência, forma de defuzzificação etc. Porém no SBCfuzzy esses parâmetros foram definidos na fase de implementação e são, portanto, estáticos.

No SBCfuzzy foram escolhidos os seguintes parâmetros:Método de Inferência: método de Mandani.Forma de Defuzzificação: Método do Centro de Massa.Conectivo ‘E’: utiliza-se a função ‘mínima’;Conectivo ‘OU’: utiliza-se a função ‘máxima’;Conectivo ‘NÃO É x’: utiliza-se a função (1 – pertinência(x));

Tendo sido definidos as variáveis de entrada e saída e a base de regras do projeto, é possível

gerar uma análise onde é apresentado o resultado do processo de inferência. O processo de

inferência sobre uma saída de um projeto se realiza através de seis passos [5]:

1. Determinação de um conjunto de regras fuzzy (criação das regras);2. Fuzzificação das entradas usando as funções de pertinência;3. Combinação das entradas fuzzificadas em cada regra fuzzy para estabelecer a ativação

da regra;4. Cálculo da parte conseqüente da regra 5. Combinação das partes conseqüente de todas as regras para obter a distribuição da

saída;6. Desfuzzificação da saída.

A seguir uma explicação básica sobre as fases mais importantes do processo de inferência fuzzy:

2.2 Fuzzificação:

A etapa de “fuzzificação” mapeia a entrada (determinística ou qualitativa) entre

valores de 0 a 1, através das funções de pertinência. As funções utilizadas no sistema são:

-Triangular: é especificada por três parâmetros {a,b,c}, a qual determina a coordenada x dos

três cantos do triângulo:

        Triângulo (x;a,b,c) = máximo(0, mínimo[(x - a)/(b - a),(c - x)/(c - b)])

-Trapezoidal: é especificada por quatro parâmetros {a,b,c,d} sendo [a,d] a reta que forma a

base maior e [b,c] a reta da base menor:

        Trapézio (x;a,b,c,d) = máximo(0, mínimo[(x - a)/(b - a),1,(d - x)/(d - c)])

Page 13: SBCFuzzy - Sistema Baseado Em Conhecimento Apoiado Pela Logica Fuzzy

13

A figura 2 apresenta as funções utilizadas.

Figura 2 - Funções triangular e trapezoidal.

2.3 Parte antecedente da regra:

Durante a avaliação das regras, a força de cada regra, denominada coeficiente de

disparo, é computada com base nos valores dos antecedentes e então designadas às saídas

difusas das regras. Quando o antecedente é formado através do conectivo E uma função

‘mínimo’ é usada, de modo que à força de uma regra é designada o valor de seu antecedente

mais fraco ou menos verdadeiro. Quando o antecedente é formado através do conectivo OU

uma função ‘máximo’ é usada, de modo que à força de uma regra é designada o valor de seu

antecedente mais forte ou mais verdadeiro.

2.4 Parte conseqüente de cada regra:

As saídas de todas as regras devem ser combinadas para obter a distribuição de saída

fuzzy. Para este fim, o operador de união (função máximo) é utilizado.

2.5 Desfuzzificação

No estágio de desfuzzificação, a variável difusa produzida pela máquina de inferência

é transformada em variável numérica (determinística) de forma a produzir um valor numérico

para a aplicação. O método utilizado nesse passo foi o Método do Centro de Gravidade onde

se calcula a área da curva da variável lingüística de saída produzida pela máquina de

Page 14: SBCFuzzy - Sistema Baseado Em Conhecimento Apoiado Pela Logica Fuzzy

14

inferência, e acha-se o índice correspondente que divide esta área a metade. A figura 3 ilustra

o centro de gravidade para duas regras ativas.

Figura 3 - Método do Centro de Gravidade.

Page 15: SBCFuzzy - Sistema Baseado Em Conhecimento Apoiado Pela Logica Fuzzy

15

3 SISTEMAS BASEADOS EM CONHECIMENTO[6]

O SBCfuzzy é um sistema WEB de apoio a gestão de projetos que tem como objetivo ser

uma ferramenta a mais de auxílio à análises em sistemas de conhecimento. Como a maioria

dos sistemas de gestão, o SBCfuzzy consiste no recebimento de entradas de dados e

informações, no processamento destes por uma máquina de inferência, no uso de uma base de

conhecimento e na produção de saídas. Além de recebimento de dados, o SBCfuzzy admite a

possibilidade de receber também informações precisas ou vagas, pesquisa de opiniões (através

de formulários) bem como representar conhecimento em diversos domínios, utilizando tanto

entradas quantitativas como qualitativas, de forma natural.

A principal característica do SBCfuzzy não é tratar grande quantidade de massa de dados

para fins de avaliação de sua freqüência, mas sim para emitir diagnóstico, fazer análise ou

proporcionar obtenção de direcionamento de tendência ou ainda apontar viabilidade de

tomada ou não de decisão.

Uma das grandes desvantagens dos sistemas convencionais de gestão existentes é que a

sua utilização requer que os dados de entrada sejam quantificados, ou seja, que haja registros

de medidas o que, em algumas situações, pode se tornar uma tarefa difícil e inviável. No

entanto, estes sistemas convencionais se tornam mais adequados, quando apenas o interesse é

processar dados, como é o caso dos sistemas convencionais apoiados na teoria de

probabilidade e estatísticas, por exemplo, que vem sendo utilizado quando se deseja fazer o

tratamento de grande volume de dados para fins de agrupá-los com desejáveis características.

Um ponto diferencial do SBCfuzzy está na capacidade de adicionar dados qualitativos,

ou seja, informações perceptivas às suas análises, ajudando a produzir resultados compatíveis

com a realidade, mesmo quando não é possível se quantificar as informações necessárias.

Assim, os aspectos intuitivos ou subjetivos, bem como opiniões de especialistas podem ser

facilmente incorporadas no SBCfuzzy. O tratamento dos dados, das informações e de

conhecimento é feito de forma natural no SBCfuzzy, da mesma forma que são feitas

operações algébricas conhecidas da matemática tradicional, utilizando-se em seu lugar, no

entanto, as operações contidas na Teoria de Conjuntos Difusos (TCD).

Outras vantagens do SBCfuzzy residem:

Page 16: SBCFuzzy - Sistema Baseado Em Conhecimento Apoiado Pela Logica Fuzzy

16

- nas condições disponíveis de representação do conhecimento, tanto pertinente do

processo em questão quanto a partir do domínio do especialista em que está sendo a

aplicação, e

- na capacidade de inferência de novos conhecimentos.

No SBCfuzzy há três tipos de entradas:

1. as variáveis que precisam ser analisadas (quantificadas ou qualificadas) para gerar

o resultado;

2. os dados relativos a estas variáveis que vão quantificá-las ou qualificá-las;

3. e finalmente as regras que irão relacionar os dados e as variáveis com a saída

desejada.

A Figura 4 mostra a entrada/saída bem como os principais módulos do SBCfuzzy:

Figura 4 - Estrutura básica do SBCfuzzy.

3.1 Base de Fatos

A base de fatos é formada por funções de pertinências.

Variáveis: As variáveis são usadas para representarem grandezas, parâmetros ou

dimensões, as quais serão submetidas à entrada de dados ou de informações, que o sistema

necessita, para gerar resultado, por isto, estas serão escolhidas por um especialista que

entenda do assunto que está sendo analisado. Assim no caso de se tratar de uma aplicação, por

Page 17: SBCFuzzy - Sistema Baseado Em Conhecimento Apoiado Pela Logica Fuzzy

17

exemplo, de Taxa de Morte Neo Natal, é desejável que se tenha um especialista da área

correspondente, ou seja, de um médico.

Estas variáveis podem ser de três tipos:

1. Quantitativas: São aquelas relativas à entrada de dados mensuráveis e

pertencentes ao domínio do projeto. Por exemplo, ângulo de inclinação (dado em graus

radianos), temperatura (dada em graus Celsius) etc.;

2. Qualitativas: São aquelas relativas à entrada de dados não mensuráveis, ou seja,

referem-se as informações subjetivas, geralmente coletadas por percepções provenientes da

visão, da audição ou do olfato, e que traduzem ou expressam uma idéia qualitativa. Por

exemplo, ao se avaliar a temperatura como baixa, média e alta estamos avaliando

qualitativamente.

3. De Pesquisa: São as relativas à entrada de dados não mensuráveis, opiniões,

observações ou argumentações, sendo estes dados compostos por várias informações que

juntas caracterizaram a variável. Estas variáveis podem ser acompanhadas de seus graus de

confiança e de sua solidez quanto à aceitação segura ou intuitivas da resposta à questão

selecionada. Assim, como este tipo de variável envolve questões que devem ser respondidas,

este tipo de variável também pode ser chamado de variável formulário.

Cada pergunta do formulário deve ser associada à uma resposta, e essa resposta

possui associada à ela um grau de confiança (pouca,média ou grande) e a origem da resposta

(fonte segura ou intuição). Na figura 5 pode-se observar os números fuzzy associados à cada

possível resposta para cada pergunta relacionada à uma variável de pesquisa. Esses números

variam de acordo com a confiança e a origem da resposta dada.

Page 18: SBCFuzzy - Sistema Baseado Em Conhecimento Apoiado Pela Logica Fuzzy

18

Figura 5 - Partições para variáveis de pesquisa.

De forma mensurável, a variável quantitativa é útil para a representação de dados

oriundos, por exemplo, de medições obtidas através de equipamentos. Por outro lado, nem

sempre é possível quantificar ou obter também dados precisos de equipamentos de

monitoramento. Quando isto acontece, há necessidade de lançar mão de uma outra rede de

captação, cuja função é retratar a presença ou não de certo parâmetro sem, contudo, utilizar a

sua medida direta, geralmente pela impossibilidade de se utilizar ou dispor de sensores

apropriados.

Dados: Os Dados são entradas dos usuários para as variáveis do sistema. São eles

que vão dar o sentido de quantificação ou qualificação aos diversos tipos de variáveis. O

interessante é que para utilizar o sistema, o usuário não precisa ser um especialista, ele

necessita apenas de inserir os dados medidos ou observados.

O tipo do dado depende do tipo de variável à qual este se refere. Se a variável for

quantitativa, o usuário deverá entrar com um número (valor). Se for qualitativa, o usuário terá

que escolher, dentre algumas opções disponibilizadas de qualificadores, aquela que melhor

representa esta variável e, finalmente, se a variável for de pesquisa o usuário não fornecerá

nenhum dado ou valor direto ao sistema. Neste caso, o usuário responderá a um formulário

contendo questões e as respostas atribuídas constituirão em dados de entrada. A figura 6

ilustra os diversos tipos de entradas do SBCfuzzy.

Page 19: SBCFuzzy - Sistema Baseado Em Conhecimento Apoiado Pela Logica Fuzzy

19

Figura 6 - Entradas para o SBCfuzzy

3.2 Base de Conhecimento

Tendo ambos os dados e as informações introduzidos pelo usuário, faz-se necessário

analisá-los de forma a produzir a resposta desejável do sistema. Para isso, é preciso ter

conhecimento sobre o que está sendo analisado. Este conhecimento é representado através das

regras de produção que relacionam as variáveis de entrada com as variáveis de saída. Estas

relações formam a base de conhecimento do sistema, ou seja, representa o que o programa

sabe sobre o assunto. Estas regras, que representam o conhecimento, serão especificadas por

um especialista com orientação de um engenheiro do conhecimento, e, quanto melhor este

trabalho for feito, mais compatível com a realidade será o resultado gerado. Assim, a

aproximação de um modelo a uma realidade prática, depende diretamente do conhecimento

do especialista nesta prática e da sua habilidade em correlacionar as diversas variáveis

selecionadas no modelo.

As regras são compostas de uma parte antecedente, onde utilizamos as variáveis de

entrada e noutra parte conseqüente, onde são utilizadas as variáveis de saída do projeto. Estas

Page 20: SBCFuzzy - Sistema Baseado Em Conhecimento Apoiado Pela Logica Fuzzy

20

variáveis são relacionadas através do subconjunto de conectivos lógicos empregados no

projeto: ‘E’, ‘OU’ e os operadores de asserção ‘É’, de negação

‘NÃO É’ e de implicação ‘ENTÃO’.

As regras podem ser de 3 tipos:

1. SE ... ENTÃO ...

Ex: SE Temperatura É Alta ENTÃO Chuva É Forte.

2. SE ...E... ENTÃO ...

Ex: SE Temperatura É Alta E Vento É Forte ENTÃO Chuva É Forte.

3. SE ...OU... ENTÃO ...

Ex: SE Temperatura É Baixa OU Vento É Fraco ENTÃO Chuva É Fraca.

3.3 Máquina de Inferência

Após ter sido configurado os tipos de variáveis e as regras no SBCfuzzy, faz-se

necessário aplicar os dados nas entradas para produzir a saída esperada. Para isso, utiliza-se o

Sistema de Inferência Fuzzy (SIF) que é baseado em Lógica Fuzzy. É este sistema SIF que

torna possível o uso de informações qualitativas nas análises feita pelo SBCfuzzy.

3.4 Novo Conhecimento

Cada resultado produzido pelo SIF é um novo conhecimento adquirido pelo sistema.

Este conhecimento é a saída no SBCfuzzy e quanto melhor forem os dados e as informações

de entrada, ou seja, quanto melhor estes reproduzirem o estado real do ambiente melhor e

mais compatível com a realidade será o resultado gerado pelo SBCfuzzy.

Page 21: SBCFuzzy - Sistema Baseado Em Conhecimento Apoiado Pela Logica Fuzzy

21

4 TECNOLOGIAS E FERRAMENTAS UTILIZADAS

Nas seções subseqüentes serão descritas, de forma resumida, as ferramentas e as

tecnologias utilizadas para o desenvolvimento do SBCfuzzy:

4.1 Java[7]

Java não pode mais ser definida como uma linguagem de

programação, mas sim como uma plataforma de desenvolvimento ou uma

tecnologia.Sua escolha foi feita basicamente pela sua portabilidade,

recursos disponíveis para aplicações Web, comunicação com banco de

dados e por ser uma linguagem com ampla aceitação no mercado.

4.2 Hibernate[10]

O Hibernate é um framework para o

mapeamento objeto-relacional escrito na linguagem

Java. Este programa facilita o mapeamento dos

atributos entre uma base tradicional de dados relacionais e o modelo objeto de uma aplicação,

mediante o uso de arquivos (XML) para estabelecer esta relação.

Hibernate é um software livre de código aberto distribuído com a licença LGPL. [13]

4.3 MySQL[9]

O MySQL é um sistema de gerenciamento de banco de dados

(SGBD), que utiliza a linguagem SQL (Linguagem de Consulta

Estruturada) como interface. É atualmente um dos bancos de dados

mais populares, com mais de 10 milhões de instalações pelo mundo.

Sua escolha foi influenciada pelos fatores:

Portabilidade

Compatibilidade;

Page 22: SBCFuzzy - Sistema Baseado Em Conhecimento Apoiado Pela Logica Fuzzy

22

Excelente desempenho e estabilidade;

Pouco exigente quanto a recursos de hardware;

Facilidade de uso;

É um Software Livre com base na GPL;

Interfaces gráficas (MySQL Toolkit) de fácil utilização cedidos pela MySQL Inc.

4.4 Java Server Faces(JSF) + Richfaces[11]

Java Server Faces é um framework

Modelo-Visão-Controle (MVC) para o

desenvolvimento de aplicações Web. Suas

características são:

Permite que o desenvolvedor crie a interface com o usuário através de um

conjunto de componentes User Interfaces pré-definidos;

Fornece um conjunto de tags Java Server Pages (JSP) para acessar os

componentes;

Reutiliza componentes da página;

Associa os eventos do lado cliente com os manipuladores dos eventos do lado do

servidor (os componentes de entrada possuem um valor local representando o

estado no lado servidor);

Fornece separação de funções que envolvem a construção de aplicações Web.

Utiliza Ajax em alguns de seus componentes tornando alguns processos mais

rápidos e eficientes.[14]

RichFaces é uma biblioteca de componentes para aplicações web que utilizam o

framework JSF. Os componentes desta biblioteca possuem um incrível suporte AJAX, e ela,

pode ser considerada uma extensão do Ajax4jsf (AJAX para JSF) com inúmeros componentes

com Ajax “embutido” e com um suporte a temas que podem deixar as interfaces da sua

aplicação com um visual padronizado. [12]

Page 23: SBCFuzzy - Sistema Baseado Em Conhecimento Apoiado Pela Logica Fuzzy

23

4.5 NetBeans IDE[8]

O NetBeans IDE é um ambiente de

desenvolvimento integrado, gratuito e de código

aberto para desenvolvedores de software. O IDE é executado em muitas plataformas, como

Windows, Linux, Solaris e MacOS. É fácil de instalar e usar. O NetBeans IDE oferece aos

desenvolvedores todas as ferramentas necessárias para criar aplicativos profissionais de

desktop, empresariais, Web e móveis multiplataformas.[1]

Page 24: SBCFuzzy - Sistema Baseado Em Conhecimento Apoiado Pela Logica Fuzzy

24

5 SBCFUZZY

O SBCfuzzy se divide em dois módulos principais. O primeiro se destina aos

administradores e incluem funções de cadastro de novos usuários, projetos, variáveis, regras,

formulários e análises. O segundo módulo se destina aos usuários comuns sem permissão de

administrador de projeto, suas funcionalidades incluem basicamente visualização dos

parâmetro do projeto e também cadastro e geração de análise. Nas seções a seguir serão

apresentadas algumas capturas de telas do SBCfuzzy e uma breve explicação sobre suas

funcionalidades.

5.1 Telas específicas para o Administrador do sistema.

Um projeto é uma unidade destinada a agrupar dados sobre variáveis, regras, formulários

e análises. Ao cadastrar um projeto o Administrador especifica também quais usuários terão

acesso à tal projeto. A figura 7 mostra a tela de cadastro de projeto.

Figura 7 - Cadastramento de Projeto.

Page 25: SBCFuzzy - Sistema Baseado Em Conhecimento Apoiado Pela Logica Fuzzy

25

No cadastramento de novo usuário, permite-se criar um nome de login único e pode-se

conferir propriedades de Administrador a determinado usuário, conforme pode ser visto na

figura 8.

Figura 8 - Cadastramento de usuário.

Após abrir um projeto cadastrado, o usuário é redirecionado para a tela de edição (figura

9) onde se pode adicionar novas variáveis ao projeto, editar as já existentes ou remove-las.

Figura 9 - Editar projeto

Na tela de criação/edição (figura 10) de variáveis após se escolher o tipo da variável

(Quantitativa, Quantitativa ou de Pesquisa), tem-se a renderização da tela específica para cada

tipo de variável. No caso de variáveis qualitativas e quantitativas tem-se a mesma tela onde é

possível criar, editar ou remover as partições da variável.

Page 26: SBCFuzzy - Sistema Baseado Em Conhecimento Apoiado Pela Logica Fuzzy

26

Figura 10 - Editar variável Quantitativa.

Ao se criar ou editar uma variável de pesquisa, é necessário apenas informar o nome de

suas 3 partições, pois para este tipo de variável o sistema já reserva valores padrões para as

partições, conforme ilustrado na figura 11.

Figura 11 - Editar Variável de Pesquisa

Page 27: SBCFuzzy - Sistema Baseado Em Conhecimento Apoiado Pela Logica Fuzzy

27

Ao se cadastrar ou editar um formulário deve-se informar à qual variável de pesquisa ele

está associado, sendo que uma variável de pesquisa pode estar associada à apenas 1

formulário. A figura 12 apresenta a tela para um novo formulário.

Figura 12 - Novo Formulário.

Nesta tela também se encontram as funções de inserir/editar/remover perguntas, à qual se

abre em um componente específico sobre a tela de formulários. A cada pergunta associa-se

uma descrição, que é a própria pergunta que será exibida no momento da análise e um grupo

de respostas possíveis, conforme pode ser visto na figura 13.

Figura 13 - Inserir Pergunta.

Page 28: SBCFuzzy - Sistema Baseado Em Conhecimento Apoiado Pela Logica Fuzzy

28

No menu Regras é possível visualizar todas as regras cadastradas no projeto corrente,

assim como editá-las ou remove-las. A figura 14 mostra a tela para a base de regras.

Figura 14 - Base de Regras.

Uma regra é dividida nas partes antecedente e conseqüente, separadas pelo operador de

implicação. No SBCfuzzy tem-se o SE (antecedente) e o ENTÃO (conseqüente). Na parte

antecedente são registrados as variáveis de entrada e suas partições, enquanto na parte

conseqüente temos apenas as variáveis de saída. A figura 15 mostra a tela de edição de regras.

Figura 15 - Editar Regra.

Page 29: SBCFuzzy - Sistema Baseado Em Conhecimento Apoiado Pela Logica Fuzzy

29

Uma regra só pode ser cadastrada no projeto se estiver bem formada.

5.2 Telas específicas para o Usuário comum do sistema.

O usuário comum (não-administrador) realiza funções típicas de consulta, à exceção

do menu de Análises onde cada usuário cria suas próprias análises e obtém sua resposta.

Após abrir um projeto, o usuário também é redirecionado para a tela de visualização

das variáveis do projeto, conforme a figura 16.

Figura 16 - Visualizar variáveis do Projeto Corrente.

Na tela mostrada na figura 17 ainda é possível visualizar com detalhes cada variável e

suas partições.

Figura 17 - Visualizar detalhes da Variável e suas Partições.

Page 30: SBCFuzzy - Sistema Baseado Em Conhecimento Apoiado Pela Logica Fuzzy

30

No menu de Formulários o usuário pode fazer escolha para visualizar os formulários

cadastrados pelo administrador para o projeto corrente. A figura 18 apresenta os formulários

para o projeto corrente.

Figura 18 - Visualizar Formulários do Projeto Corrente.

E cada formulário pode ser visualizado com detalhes (figura 19), onde é possível ver as

perguntas associadas a ele.

Figura 19 - Visualizar detalhes de um Formulário.

Em relação à base de regras, os usuários comuns podem apenas visualizar a descrição por

extenso das regras cadastradas para o projeto corrente, conforme a figura 20.

Page 31: SBCFuzzy - Sistema Baseado Em Conhecimento Apoiado Pela Logica Fuzzy

31

Figura 20 - Visualizar Regras do Projeto Corrente.

5.3 Telas compartilhadas por Administradores e Usuários Comuns.

Algumas telas são comuns a qualquer tipo de usuário do sistema e visualizadas da mesma

forma. A abertura de um projeto, conforme figura 21, permite associarmos um projeto já

cadastrado à sessão corrente.

Figura 21 - Abrir Projeto.

Page 32: SBCFuzzy - Sistema Baseado Em Conhecimento Apoiado Pela Logica Fuzzy

32

Uma análise representa o conjunto de dados inseridos pelo usuário no sistema, o que

permite que o sistema realize a inferência sobre aqueles dados de entrada e a geração de um

valor de saída. A figura 22 apresenta a tela de criação de análise.

Figura 22 - Criar Análise.

Após cadastradas, as análises, estas podem ser abertas para edição, inserção de dados e

geração do valor de saída, conforme pode ser visto na figura 23.

Figura 23 - Abrir Análise.

Page 33: SBCFuzzy - Sistema Baseado Em Conhecimento Apoiado Pela Logica Fuzzy

33

Na tela de inserção de dados (figura 24), pode-se inserir um valor determinístico para as

variáveis quantitativas, um valor qualitativo e seu grau de pertinência para as variáveis

qualitativas, ou ainda as respostas para as variáveis de pesquisa.

Figura 24 - Inserir Dados para análise.

Cada variável de pesquisa deve ter seu formulário correspondente preenchido antes de se

gerar uma análise. Deve-se dar uma resposta apropriada à cada pergunta, informar o nível de

confiança dessa resposta, bem como explicitar qual a origem da informação. A figura 25

mostra um formulário para entrada de dados para variáveis de pesquisa.

Figura 25 - Preencher Formulário

Page 34: SBCFuzzy - Sistema Baseado Em Conhecimento Apoiado Pela Logica Fuzzy

34

Após o sistema ter processado a base de regras e inferido o conhecimento, é apresentado

nesta tela (figura 26) o resultado obtido para cada variável de saída do sistema, qual sua

classificação lingüística, o valor obtido e a confiança associada a tal resultado.

Figura 26 - Gerar Análise do Projeto.

Page 35: SBCFuzzy - Sistema Baseado Em Conhecimento Apoiado Pela Logica Fuzzy

35

6 CONCLUSÃO

O SBCfuzzy foi testado para vários sistemas e embora não tenha sido mostrado em

detalhes, neste trabalho, constatou-se que o SBCfuzzy apresenta-se como uma ferramenta

capaz de ser usada na construção de Sistemas Baseados em Conhecimentos. Por se tratar de

um sistema baseado na lógica difusa, tem-se a grande vantagem de inferência sobre dados de

forma mais próxima ao modelo de inferência humano. Uma outra grande vantagem é a

tecnologia utilizada, pois sistemas construídos para a Web têm se tornado um novo

paradigma no desenvolvimento de software por suas facilidades e características.

6.1 Trabalhos Futuros

Futuramente novas funcionalidades podem ser adicionadas ao SBCfuzzy:

Adicionar inteligência ao SBCfuzzy permitindo, por exemplo, que os novos

conhecimentos inferidos após cada análise sejam adicionados à base de regras para

que futuras análises possam ser cada vez mais precisas.

É possível adicionar um módulo de tratamento gráfico para as variáveis e suas

partições. Também seria interessante mostrar as saídas das regras graficamente e o

resultado de tudo após a aplicação do método do centro de gravidade.

Page 36: SBCFuzzy - Sistema Baseado Em Conhecimento Apoiado Pela Logica Fuzzy

36

7 REFERÊNCIAS BIBLIOGRÁFICAS

[1] KLIR, George, CLAIR, Ute H. St., YUAN, Bo. Fuzzy Set Theory – Foundations and

Applications, Estados Unidos : ed. Prentice Hall, 1997.

[2] MUKAIDONO, Masao. Fuzzy Logic for beginners, Singapore: ed. World

Scientific, 2001.

[3] KING, P.J. & MAMDANI, E.H., “The application of fuzzy control systems to industrial

process”,Automática, 13, pp. 235-242, 1977.

[4] ZADEH, L.A. Fussy Sets. Information and Control . v.8, n.1, p.338-353, 1965.

[5] HUGH, S. Lusted and KNAPP ,R. Benjamin. "Electrical impulses from nerves and

muscles can command computers directly, a method that aids people with physical

disabilities." Scientific American. October 1996.

[6] CAVATI, Cícero & OTTONI, Ticiane. Sistema baseado em conhecimento para auxílio à

gestão ambiental. Revista Brasileira de Engenharia Agrícola e Ambiental. UFES.

[7] JAVA. Disponível em:

< http://www.sun.com/java> Acesso em 08/07/2010, às 22:00 h;

[8] NetBeans IDE. Disponível em:

< http://netbeans.org/> Acesso em 08/07/2010, às 22:00 h;

[9] MySql. Disponível em:

< http://www.mysql.com/downloads> Acesso em 08/07/2010, às 22:00 h;

[10] Hibernate. Disponível em:

< http://www.hibernate.org> Acesso em 08/07/2010, às 22:00 h;

[11] RichFaces. Disponível em:

< http://www.jboss.org/richfaces> Acesso em 08/07/2010, às 22:00 h;

[12] WIKIPÉDIA, A Enciclopédia Livre. MySql Disponível em:

<http://pt.wikipedia.org/wiki/Mysql> Acesso em: 08/07/2010, às 23:00 h;

Page 37: SBCFuzzy - Sistema Baseado Em Conhecimento Apoiado Pela Logica Fuzzy

37

[13] WIKIPÉDIA, A Enciclopédia Livre. Hibernate Disponível em:

<http://pt.wikipedia.org/wiki/Hibernate > Acesso em: 08/07/2010, às 23:00 h;

[14] WIKIPÉDIA, A Enciclopédia Livre. Java Server Faces Disponível em:

<http://pt.wikipedia.org/wiki/JavaServer_Faces > Acesso em: 08/07/2010, às 23:00 h;