sbcfuzzy - sistema baseado em conhecimento apoiado pela logica fuzzy
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.TRANSCRIPT
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
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
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
Dedico esse trabalho a todos que acreditaram em mim e sempre me apoiaram nas horas
difíceis.
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.
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.
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.
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
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
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.
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;
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)])
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
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.
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:
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
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.
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.
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
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.
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;
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]
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]
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.
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.
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
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.
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.
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.
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.
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.
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.
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
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.
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.
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;
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;