Professional Documents
Culture Documents
0
Manual Verso em portugus
COPPE/UFRJ
Universidade Federal do Rio de Janeiro
Programa de Engenharia de Produo
LabFuzzy e TGL
fevereiro/2011
NotaTcnica n:
Data de
recebimento
na DINT:
GRAU DE SIGILO:
Livre: ( x )
AUTOR(ES): Mrcio Aarestrup Arbex, Dayse Mouro Arruda, Rogrio
Macedo Pontes, Felipe Arruda Pontes, Arapu Marques B. de
Arajo,
Restrito: ( )
Por ( ) ano(s)
Confidencial: ( )
OBJETIVO(S):
___________________
RESUMO:
A ferramenta XFuzzy 3.0 um ambiente de modelagem baseado em
sistemas de inferncia fuzzy. A ferramenta totalmente desenvolvida em
JAVA e possui diversos mdulos que abrangem as diferentes etapas do
processo de concepo de um sistema fuzzy.
Este documento apresenta a verso em portugus para o manual do
usurio disponibilizado originalmente em ingls XFuzzy 3.0 (IMSE-CNM,
2003).
Palavras-chave:
Lgica Fuzzy, Inteligncia Computacional
Documentos Correlatos:
Assinatura do autor:
Revisado por:
___________________________
Data: / /
______________________________
Data: / /
____________________
Data: / /
Pesquisadores do projeto:
Dayse Mouro Arruda
Carlos Alberto Nunes Cosenza
Elton Fernandes
Carlos Alberto de Oliveira Fernandes
Rogrio Macedo Pontes
Elaborao do documento:
Mrcio Aarestrup Arbex
Dayse Mouro Arruda
Rogrio Macedo Pontes
Felipe Arruda Pontes
Arapu Marques B. de Arajo
SUMRIO
INTRODUO ..........................................................................................................................................5
OVERVIEW DO XFUZZY3.0 ..................................................................................................................5
INSTALAO ...........................................................................................................................................7
REQUISITOS DO SISTEMA ..................................................................................................................7
GUIA DE INSTALAO........................................................................................................................7
AMBIENTE DE DESENVOLVIMENTO XFUZZY 3.0 ........................................................................8
DESCRIO DO ESTGIO .................................................................................................................10
A FERRAMENTA DE EDIO DO SISTEMA XFEDIT ................................................................10
A FERRAMENTA DE EDIO DE PACOTES XFPKG ................................................................19
FASE DE VERIFICAO......................................................................................................................26
A FERRAMENTA DE MONITOR DE INFERNCIA XFMT ..........................................................28
A FERRAMENTA DE SIMULAO XFSIM...................................................................................30
FASE DE AJUSTE...................................................................................................................................37
A FERRAMENTA DE APRENDIZADO SUPERVISIONADO XFSL ..............................................37
ESTGIO DE SNTESE .........................................................................................................................42
A FERRAMENTA DE GERAO DE CDIGO JAVA XFJ...........................................................42
REFERNCIAS BIBLIOGRFICAS ...................................................................................................45
INTRODUO
O objetivo desde documento explicar de forma suscinta a utilizao da
ferramena XFuzzy 3.0 de forma a permitir sua adaptao para uso no escopo do sistema
GESPLAN.
Este documento corresponde a verso em portugues do manual do usurio
XFuzzy 3.0 (IMSE-CNM, 2003), mas no site do projeto esto disponibilizados diversos
artigos abordando a ferramenta, dentre os quais podemos citar: Baturone et al.(2007),
Moreno-Velo et al.(2001) e Moreno-Velo et al.(2003).
O XFuzzy de propriedade dos seus autores e da IMSE-CNM (Instituto de
Microeletrnica de Sevilha / Centro Nacional de Microeletrnica).
Xfuzzy um software livre e pode ser redistribudo e/ou modificado sob os
termos da GNU (General Public License) como publicado pela Free Software
Foundation.
Segundo seus proprietrios, o Xfuzzy distribudo com a esperana de ser til,
mas sem qualquer garantia; nem mesmo a garantia implcita de comrcializao ou
adequao para um determinado propsito.
Os proprietrios sugerem a consulta do documento GNU (General Public
License) para maiores detalhes.
OVERVIEW DO XFUZZY3.0
O Xfuzzy 3.0 um ambiente de desenvolvimento baseado em sistemas de
inferncia fuzzy. Ele composto de vrias ferramentas que abragem as diferentes etapas
do processo de concepo de um sistema fuzzy, desde a sua descrio inicial at a
execuo final. Suas principais caractersticas so a capacidade de desenvolvimento de
sistemas complexos e a flexibilidade de exteso das funes disponveis. O ambiente
foi totalmente programado em Java para que ele possa ser executado em qualquer
plataforma com JRE (Java Runtime Environment) instalado. A figura a seguir mostra o
fluxo do projeto Xfuzzy 3.0.
XFUZZY 3ComCapaNT-1.doc
5
XFUZZY 3ComCapaNT-1.doc
6
INSTALAO
REQUISITOS DO SISTEMA
Xfuzzy 3.0 pode ser executado em plataformas que contm o Java Runtime
Environment. Para definir novos packages, necessrio o compilador Java. O Java
Software Development Kit, incluindo JRE, o compilador e outras ferramentas podem
ser encontrados em http://java.sun.com/j2se/ .
GUIA DE INSTALAO
Baixar o arquivo install.class.
Executar este arquivo com o comando "java install". Isso abrir a seguinte janela:
Escolher um diretrio para instalar Xfuzzy. Se esse diretrio no existir, ele ser
criado no processo de instalao.
Clicar no boto Instalar. Isto ir descompactar a distribuio Xfuzzy no diretrio
selecionado.
Os arquivos executveis do Xfuzzy esto localizados no "/bin" do diretrio. Adicionar
este diretrio na varivel de ambiente PATH.
XFUZZY 3ComCapaNT-1.doc
7
XFUZZY 3ComCapaNT-1.doc
8
XFUZZY 3ComCapaNT-1.doc
9
DESCRIO DO ESTGIO
O primeiro passo para o desenvolvimento de um sistema fuzzy selecionar uma
descrio preliminar do sistema. Esta descrio ser depois refinada na sequncia das
fases de ajuste e verificao.
Xfuzzy 3.0 contm duas ferramentas auxiliares na descrio dos sistemas fuzzy:
xfedit e xfpkg. O primeiro dedicado definio lgica do sistema, isto , a definio
das suas variveis lingsticas e as relaes lgicas entre eles. Por outro lado, a
ferramenta xfpkg facilita a descrio das funes matemticas confiadas aos operadores
fuzzy, limitaes lingsticas, funes de pertinncia e mtodos de defuzzificao.
XFUZZY 3ComCapaNT-1.doc
10
bells e singletons, que so comumente usados como uma primeira opo para os mais
variados tipos de sada. Quando um dos tipos anteriores selecionado, o nmero de
funo de pertinncia da partio deve ser introduzida. Os tipos predefinidos tambm
inclui uma opo em branco, que gera um tipo sem qualquer funo associada, e a
exteso de um tipo existente (selecionada no campo Parent), que implementa o
mecanismo de herana do XFL3.
Aps o tipo de dado criado, ele pode ser editado usando a janela de edio de
tipo. Esta janela permite a alterao do nome do tipo e do domnio, por exemplo,
adicionar, editar e remover as funes de pertinncia. A janela mostra uma
representao grfica das funes associadas, onde a funo associada representada
com uma cor diferente. A parte inferior da janela apresenta uma barra de comandos com
os botes habituais para salvar ou rejeitar as alteraes mais recentes, e para fechar a
janela. importante considerar que as modificaes na definio do domnio pode
afetar as funes de pertinncia. Assim, a validao dos parmetros da funo associada
feita antes de salvar as modificaes, e uma mensagem de erro aparece sempre que
uma definio da funo associada se tornar invlida.
XFUZZY 3ComCapaNT-1.doc
13
A edio das regras dividida em trs locais: o lado esquerdo tem os campos
para introduzir os nomes da base de regras e do operador de conjunto usado, e para
apresentar as listas de variveis de entrada e sada. A direita mostrado o contedo das
regras includas na base de regras. Na parte inferior da janela contm a barra de
comandos com os botes habituais para salvar ou rejeitar as modificaes, e para fechar
a janela.
O contedo das regras pode ser visualizado em trs formatos: livre, tabular e
matricial. O formato livre usa trs campos para cada regra. O primeiro contm o peso da
confiana. O segundo campo mostra o antecedente da regra campo auto-editvel, onde
podem ser feitas alteraes, selecionando o termo para modificar (smbolo "?" significa
um termo em branco). O terceiro campo de cada regra contm sua descrio. tambm
um campo auto-editvel que pode ser modificado clicando no boto "->". Novas regras
XFUZZY 3ComCapaNT-1.doc
15
podem ser geradas introduzindo valores na na ltima linha (marcada com o smbolo
"*").
forte (boto"+")
igual ("=="),
O boto "->" usado para adicionar uma concluso a regra. O boto ">..<" usado
para remover um termo de conjuno ou disjuno (por exemplo, um "v == & l?"
transformado em "v == l"). A forma livre permite ao usurio descrever relaes mais
complexas entre as variveis do que outros formatos.
XFUZZY 3ComCapaNT-1.doc
16
O formato tabular til para definir as regras cujo antecedente usa apenas
operadores e e equivalentes (==). Cada regra tem um campo para introduzir o peso da
confiana e uma lista por variveis de entrada e sada. No h necessidade de selecionar
todos os campos das variveis, mas uma varivel de entrada e uma sada tm sempre de
ser selecionada. Se uma base de regra contm uma regra que no pode ser expressa no
formato tabular, a formato tabular no poder ser aberto e uma mensagem de erro ser
exibida.
XFUZZY 3ComCapaNT-1.doc
17
XFUZZY 3ComCapaNT-1.doc
18
XFUZZY 3ComCapaNT-1.doc
21
XFUZZY 3ComCapaNT-1.doc
22
XFUZZY 3ComCapaNT-1.doc
23
XFUZZY 3ComCapaNT-1.doc
24
XFUZZY 3ComCapaNT-1.doc
25
FASE DE VERIFICAO
A fase de verificao no processo de concepo do sistema fuzzy consiste em
estudar o comportamento do sistema fuzzy em desenvolvimento. O objetivo desta etapa
a deteco de provveis desvios no comportamento esperado e a identificao das
fontes desses desvios.
XFUZZY 3ComCapaNT-1.doc
27
associado com o valor das variveis de saida, bem como um valor crisp (defuzzificado)
para essa varivel. Este valor crisp mostrado tambm como um singleton, na plot do
conjunto fuzzy (se o conjunto fuzzy j um singleton, este plot s mostra r este
singleton). O centro da janela ilustra a estrutura (hierrquica) do sistema.
campos com o grau de ativao de cada regra. O lado direito mostra os valores das
variveis de sada obtido pelo processo de inferncia. Se o operador de conjunto usado
na base de regra especificar um mtodo de defuzzificao, o valor de sada
defuzzificado, e a varivel plotada no apenas mostra o valor fuzzy, mas tambm o
valor crisp que atribudo varivel de sada.
XFUZZY 3ComCapaNT-1.doc
30
package xfuzzy;
public interface PlantModel {
public void init() throws Exception;
public void init(double[] state) throws Exception;
public double[] state();
public double[] compute(double[] x);
}
A funo init() usado para inicializar a instalao com seus valores padres, e
deve gerar uma exceo quando estes valores no so definidos ou no podem ser
atribudos planta. A funo init ([double]) usado para definir os valores iniciais. Ele
tambm gera uma exceo quando estes valores no podem ser atribudas planta. A
funo state() retorna os valores do estado da planta, que correspondem s variveis de
entrada do sistema fuzzy. Finalmente, a funo compute([double]) modifica o status da
planta em termos de valores fuzzy de sada. O usurio deve escrever e compilar esta
classe.
XFUZZY 3ComCapaNT-1.doc
31
Definir uma planta pela classe Java oferece uma grande flexibilidade para
descrever sistemas externos. A forma mais simples consiste em descrever um modelo
matemtico da evoluo da planta de seu estado e os valores de sada do sistema fuzzy.
Neste esquema, as funes init e state atribuem e retornam, respectivamente, os valores
do estado das variveis internas, enquanto a funo compute implementa o modelo
matemtico. Um esquema mais complexo consiste em utilizar uma planta real
conectado ao computador (geralmente por uma placa de aquisio de dados). Neste
caso, a funo init deve inicializar o sistema de aquisio de dados, a funo state de
capturar o estado atual da planta, e a funo compute deve escrever a ao sobre a placa
de aquisio de dados, bem como capturar o novo estatuto da planta.
XFUZZY 3ComCapaNT-1.doc
32
XFUZZY 3ComCapaNT-1.doc
33
xfsim_plant("filename")
xfsim_init(value, value, ...)
xfsim_limit(limit & limit & ...)
xfsim_log("filename", varname, varname, ...)
xfsim_plot(varname, varname, style)
XFUZZY 3ComCapaNT-1.doc
34
linhas, valor 1 indica grfico pontilhado; o valor 2 faz com que o grfico utilize
quadrados, e os valores 3, 4 e 5 indicam a utilizao de crculos de diferentes tamanhos.
A figura a seguir mostra um exemplo de uma classe Java para uma fbrica de
veculos. Este um modelo de planta que pode ser utilizado como um sistema fuzzy em
ambientes de caminhes. O estado do veculo armazenada no interior varivel state[].
As funes init apenas atribuem os valores para o estado dos componentes: o primeiro
componente a posio X, o segundo o ngulo, a terceira a posio Y, e a ltima
contm a varivel olddir. Esses componentes correspondem s variveis de entrada do
sistema fuzzy. A funo state retorna a varivel interna. A dinmica do veculo
descrita pela funo compute. Os inputs para essa funo so as variveis de sada do
sistema fuzzy. Ento, val [0] contm o valor da varivel whell, e val [1] contm o valor
de direction. O giro das rodas leva a uma mudana no ngulo, e um novo ngulo e
direo permite o clculo de uma nova posio do veculo.
public class TruckModel implements xfuzzy.PlantModel {
private double state[];
public TruckModel {
state = new double[4];
}
public void init() {
state[0] = 0;
state[1] = 0;
state[2] = 50;
state[3] = -10;
}
public void init(double val[]) {
state[0] = val[0]; // x
state[1] = val[1]; // angle
state[2] = val[2]; // y
state[3] = val[3]; // direction
}
public double[] state() {
return state;
}
public double[] compute(double val[]) {
state[3] = val[1];
state[1] += state[3]*val[0]/25;
if( state[1] > 180) state[1] -= 360;
if( state[1] < -180) state[1] += 360;
state[0] += state[3]*Math.sin(state[1]*Math.PI/180)/10;
state[2] += state[3]*Math.cos(state[1]*Math.PI/180)/10;
return state;
}
}
XFUZZY 3ComCapaNT-1.doc
35
Uma vez que a planta do modelo descrita, o usurio deve compil-lo para gerar
o arquivo binrio .class. importante conferir o valor da varivel de ambiente
CLASSPATH, pois deve conter o caminho para a definio da interface. Assim,
CLASSPATH deve conter o caminho para "base/xfuzzy.jar", onde a base refere ao
diretrio de instalao do Xfuzzy. (Nota: no MS-Windows o caminho deve incluir o
percurso "base\xfuzzy.jar". Ateno ao separador).
XFUZZY 3ComCapaNT-1.doc
36
FASE DE AJUSTE
A fase de ajuste normalmente uma das tarefas mais complexas na elaborao
de sistemas fuzzy. O comportamento do sistema depende da estrutura lgica da sua base
de regras e as funes de pertinncia de suas variveis lingsticas. O processo de ajuste
muito frequentemente centrado em configurar os diferentes parmetros das funes de
de associao que aparecem na definio do sistema. Como o nmero de parmetros
para modificar elevado, um ajuste manual bastante complicado tornando juz o uso
de tcnicas automticas. Os dois mecanismos de aprendizagem mais utilizadas so a
aprendizagem reforada e supervisionada. Nas tcnicas de aprendizagem supervisionada
o comportamento do sistema desejado dado por um conjunto de formaes (e testes)
de entrada/sada de dados. Na aprendizagem reforada o que se sabe no a sada dos
dados exatos, mas o efeito que o sistema tem de produzir no ambiente, assim tornando
necessrio o acompanhamento on-line de seu comportamento.
XFUZZY 3ComCapaNT-1.doc
37
A figura acima ilustra a janela principal do xfsl. Esta janela dividida em quatro
partes. O canto superior esquerdo a rea para configurar o processo de aprendizagem.
O estado do processo de aprendizagem mostrado na parte superior direita. A rea
central ilustra a evoluo da aprendizagem, e na parte inferior contm diversos botes
para executar ou parar o processo, salvar os resultados, e sair.
XFUZZY 3ComCapaNT-1.doc
38
Uma vez que o algoritmo selecionado, uma funo de erro deve ser escolhida.
A ferramenta oferece vrias funes de erro que podem ser usadas para expressar o
desvio entre o real e o comportamento desejado (ver abaixo). Por default selecionada a
Mean Square Error.
XFUZZY 3ComCapaNT-1.doc
39
XFUZZY 3ComCapaNT-1.doc
40
Uma configurao completa pode ser salva em um arquivo externo que estar
disponvel para os processos subseqentes.
Xfsl pode ser aplicado a qualquer sistema fuzzy descrito pela linguagem XFL3,
mesmo em sistemas que empregam funes especficas definidas pelo usurio. O que
deve ser considerado so caractersticas do sistema que podem impor restries sobre
os algoritmos de aprendizagem aplicados (por exemplo, um sistema no derivados no
pode ser ajustado por um algoritmo de gradiente descendente).
XFUZZY 3ComCapaNT-1.doc
41
ESTGIO DE SNTESE
A etapa de sntese a ltima etapa no fluxo de projeto de um sistema. Seu
objetivo gerar uma representao do sistema que pode ser usado externamente.
Existem dois tipos de representaes de um sistema fuzzy: representaes de software e
hardware. A sntese software gera um sistema de representao em uma linguagem de
programao de alto nvel. A sntese de hardware gera um circuito microeletrnico que
implementa o processo de inferncia descrito pelo sistema fuzzy.
Xfuzzy 3.0 oferece ao usurio trs ferramentas para a sntese de software: xfc,
que gera uma descrio do sistema em ANSI-C, xfcpp para C+ +, e xfj, que representa o
sistema atravs de uma classe Java.
XFUZZY 3ComCapaNT-1.doc
42
gera
quatro
arquivos:
FuzzyInferenceEngine.java,
XFUZZY 3ComCapaNT-1.doc
43
XFUZZY 3ComCapaNT-1.doc
44
Referncias Bibliogrficas
BATURONE, I., MORENO-VELO, F.J., SANCHEZ-SOLANO, S., BARRIGA, A.,
BROX, P., GERSNOVIEZ, A., BROX, M., Using XFuzzy environment for the whole
design of fuzzy systems, In: Proc. IEEE International Conference on Fuzzy Systems,
pp.,
London,
july.
2007,
disponvel
em:<
http://www.imsecnm.csic.es/online/2003/FUZZIEEE2003.FMV.pdf>. Acesso em 21 fev. 2011.
IMSE-CNM , XFuzzy. Fuzzy Logic Design Tools, Espanha Sevilha:Instituto de
Microeletrnica de Sevilla, 2003, 54 p. disponvel em:< http://www2.imsecnm.csic.es/Xfuzzy/Xfuzzy_3.0/Xfuzzy3.0_en.pdf>. Acesso em 15 fev. 2011.
MORENO-VELO, F.J., BATURONE, I., SANCHEZ-SOLANO, S., BARRIGA, A.,
XFuzzy 3.0: A development environment for Fuzzy Systems, In: Proc. International
Conference in Fuzzy Logic and Technology, pp. 93-96, Leicester, Sep. 2001,
disponvel em:< http://www.imse-cnm.csic.es/online/2001/EUSFLAT2001.FMV.pdf>.
Acesso em 21 fev 2011.
MORENO-VELO, F.J., BATURONE, I., SANCHEZ-SOLANO, S., BARRIGA, A., Rapid
design of fuzzy systems with XFuzzy, In: Proc. International Conference in Fuzzy
Logic and Technology, pp. 342-347, St. Louis, may. 2003, disponvel em:<
http://www.imse-cnm.csic.es/online/2003/FUZZIEEE2003.FMV.pdf>. Acesso em 21
fev. 2011.
XFUZZY 3ComCapaNT-1.doc
45