CARLOS PIMENTEL DE SOUSA Departamento de Engenharia de Teleinformรกtica Universidade Federal do Cearรก.
Carlos Pimentel de Sousa .
Nenhuma parte deste texto pode ser reproduzida, por qualquer que seja a forma e meio, sem a expressa autorização do auto. 1ª. Ed 2016. Universidade Federal do Ceará Fortaleza-Ce Brasil.
https://www.amazon.com.br/dp/B07792LGFJ
Sobre o Livro
Este é um livro introdutório sobre "Lógica Fuzzy", também referenciada como lógica nebulosa, no qual são abordados seus princípios e aplicações em sistemas inteligentes e controle inteligente, e contém material adequado para uso em um curso introdutório sobre lógica nebulosa. Seu foco é apresentar uma metodologia simples e acessível para o desenvolvimento de sistemas nebulosos baseados em regras de inferência que captam o conhecimento de um experto. Apesar da simplicidade, aplicações práticas de pequeno porte podem ser desenvolvidas para a vida real. Por exemplo, na seção V.5 nós desenvolvemos um simples sistema para avaliação de um restaurante com o propósito de estimar o índice de satisfação dos clientes. No decorrer do livro vários exemplos enfatizando algum aspecto da lógica nebulosa são apresentados numa linguagem simples, sem rigor matemático. Os exemplos e os exercícios resolvidos usam como ferramenta computacional o Excel. Naturalmente, todas as planilhas desenvolvidas são compatíveis com vários softwares de domínio públicos pertinentes. No apêndice, o leitor encontrará a lista de todas as planilhas utilizadas nos exemplos e exercícios resolvidos, bem como o link onde poderá ser feito o download das mesmas. O principal sucesso da lógica nebulosa é devido ao seu caráter prático, uma vez que possibilita extrair conclusões a partir de preposições não exatas. Hoje, podemos afirmar que a lógica nebulosa já conquistou um lugar de destaque no cenário científico e tecnológico, com aplicações práticas para a vida real cada vez mais bem sucedidas.
O Autor
Sumário
Capítulo I Introdução Capítulo II
6 6 17
Conjuntos Nebulosos
17
II.1 Conceituação Formal
19
II.2 Representação de Conjuntos Nebulosos
21
II.3 Funções de Pertinência
24
II.4 Definições e Operações com Conjuntos Nebulosos
30
II.5 União e Interseção Nebulosa
33
II.6 Interpretação Geométrica para Conjuntos Nebulosos
37
II.7 Medidas de Similaridade Nebulosa
38
II.8 Fuzificação e Desfuzificação
41
II.9 Operações Algébricas
44
II.10 Principio da Extensão
49
II.11 Possibilidade versus Probabilidade
51
II.12 Exercícios Resolvidos
53
Capítulo III
59
Relações Nebulosas
59
III.1 Projeção Cilíndrica
65
III.2 Extensão Cilíndrica
66
III.3 Regra Composicional Max – Min
68
III.4 T-Norm e T-Conorm ou S-Norm
72
III.5 Exercícios Resolvidos
59
III.6 Exercícios Propostos I
84
Capítulo IV
87
Lógica Nebulosa
87
IV.1 Variável Linguística
89
IV.2 Regra Composicional de Inferência
91
Capítulo V Sistema Nebuloso
97 97
V.1 Sistema Nebuloso - Inferência Mamdani
104
V.2 Métodos de Desfuzificação
114
V.3 Etapas de Projeto de um Sistema Nebuloso
119
V.4 Sistema Nebuloso TS (Takagi-Sugeno)
140
V.5 Exercícios Resolvidos
148
V.6 Aplicações
161
V.7 Exercícios Propostos II
166
Capítulo VI Sistema Nebuloso Adaptativo VII Apêndice
170 170 174
VII.1 Simulação: Controle de Nível
178
VII.2 Simulação: Navegação Autônama
182
VIII Bibliografia
184
Capítulo II
Conjuntos Nebulosos
O conceito formal de conjunto nebuloso, fundamento da lógica nebulosa, foi introduzido por Lotfi A. Zadeh em 1965. Na teoria clássica dos conjuntos, os conjuntos são, por assim dizer, "crisp", de tal forma que um dado elemento do universo em discurso (domínio) pertence ou não pertence ao referido conjunto. Na teoria dos conjuntos nebulosos existe um grau de pertinência de cada elemento a um determinado conjunto. Uma consequência direta deste fato é que, ao contrario dos conjuntos clássicos, a fronteira que separa os conjuntos nebulosos não é bem definida.
Sob
este
ponto
vista,
este
conceito
pode
ser
representado
geometricamente como mostrado na fig.2.1.
b) Conjuntos Clássicos
a) Conjuntos Nebulosos
Fig. 2.1: Conjuntos Clássicos versus Conjuntos Nebulosos
Aqui, o termo universo de discurso refere-se ao domínio do conjunto. Esta terminologia auto se justificará no capítulo IV.
Este conceito parece ser bastante natural e facilmente assimilado ao examinarmos a lista de conjuntos abaixo:
Conjunto dos números naturais ( c ) Conjunto dos caracteres ascii ( c ) Conjuntos dos números naturais muito maiores do que dez ( f ) Conjunto dos homens altos ( f ) Conjunto das mulheres simpáticas ( f ) Existe claramente uma diferença fundamental entre os conjuntos marcados com "c" e os conjuntos marcados com "f". Por exemplo, apresentado um caractere podemos afirmar sem nenhuma discussão ou dúvida se esse caractere pertence ou não pertence ao conjunto dos caracteres ascii. Esta questão não é tão simples quando lidamos, por exemplo, com o conjunto dos homens altos. Uma pessoa que tenha 1,75 metros de altura seria considerada como pertencente a esse conjunto? E aquela que tem 1,74 metros? Vemos claramente que não existe uma fronteira bem definida que separe os elementos do conjunto dos homens altos dos elementos do conjunto dos homens não altos. É muito importante, contudo, notar que a ausência de uma fronteira que estritamente separe os elementos dos dois conjuntos, não se deve a uma possível imprecisão na tomada da medida da altura dos elementos dos conjuntos, mas sim, devido à natureza intrínseca do próprio conceito "homens altos".
II.1 Conceituação Formal
Na teoria clássica dos conjuntos, dado qualquer subconjunto A de um universo de discurso U, e qualquer elemento x função que:
f A ( x) 1 f A ( x) 0
pertencente a U, podemos definir uma
se x A se x A
(2.1)
Esta função é chamada de função característica, pois define os elementos de A, sendo única para cada conjunto. A definição de um conjunto clássico como exposto acima torna fácil o entendimento da formulação matemática para um conjunto nebuloso. Note que a função característica é discreta e digital, pois seu conjunto imagem é formado unicamente pelos valores 1 e 0. No caso dos conjuntos nebulosos esta função toma um valor real no intervalo fechado [0, 1], passando-se a ser chamada de função de pertinência (membership function). Definição: Um conjunto nebuloso A definido num universo de discurso U é caracterizado por uma função de pertinência A, a qual mapeia os elementos de U para o intervalo real [0 ,1], cuja notação é representada pela equação (2.2).
A
: U 0 , 1
(2.2)
Desta forma, a função de pertinência associa com cada elemento xi U um número real A ( xi ) no intervalo [0 , 1], que representa o grau de possibilidade de que o elemento xi venha a pertencer ao conjunto A, isto é, o quanto é possível para o elemento xi pertencer ao conjunto A. Ou seja, o quanto o elemento xi é pertinente ao conjunto A. Para exemplificar este conceito, vamos tomar em consideração o conjunto dos homens de meia idade, que é sem dúvida alguma, um conjunto nebuloso. Uma possível função de pertinência para a representação desse conceito "homens de
meia idade" ĂŠ mostrada na Fig.2.2. Observe que neste caso, a função de pertinĂŞncia para os homens com idade em torno dos 50 anos tem valor prĂłximo de 1, indicando que os homens com esta idade definitivamente pertencem ao conjunto dos homens de meia idade. Enquanto que para os valores de x menores do que 30 ou maiores do que 70 anos indicam o contrĂĄrio. JĂĄ uma afirmativa questionĂĄvel de que os homens com idades prĂłximas dos 40 ou dos 60 anos venham a pertencer a este conjunto, ĂŠ traduzida por um valor da função de pertinĂŞncia em torno de 0,5. Do ponto de vista da informação, este valor representa uma completa falta de conhecimento sobre o assunto em questĂŁo: "homens de meia idade", quando se tratar dos homens com idades em torno de 40 ou 60 anos. Uma equação 2] đ?œ‡đ??ť (đ?‘Ľ) =deđ??¸đ?‘Ľđ?‘?[−đ?œƒ(đ?‘Ľ − 50) matemĂĄtica para gerar essa função pertinĂŞncia poderia ser:
Fig.2.2: Função de pertinência para o conjunto dos homens de meia idade
II.2 Representação de Conjuntos Nebulosos
Para os conjuntos clássicos "crisp", uma lista contendo seus elementos é suficiente para sua definição.
A {x1 , x2 , x3 ...xn }
n
ou
A xi
(2.3)
i 1
No caso do conjunto representar um intervalo contínuo, por exemplo, o conjunto dos números reais menores ou iguais a quinze e maiores ou iguais a cinco, teríamos: 15
A x
(2.4)
5
Note que aqui, os símbolos e são usados para representar a operação de união lógica, e portanto não representam os operadores de somatório e de integração no senso do uso comum. Para conjuntos nebulosos a definição só estará completa com o conhecimento do grau de pertinência de cada elemento. O grau de pertinência
A ( xi ) indica o quanto o elemento x i pertence ao conjunto nebuloso A. Assim, temos:
A A ( x1 ) /x1 , A ( x2 ) / x2 , A ( x3 ) /x3 A ( xn ) /xn n
A A ( xi ) x i
ou
(2.5)
i 1
onde "/" é apenas um separador. De forma similar, quando o universo de discurso U for contínuo, o conjunto nebuloso A é frequentemente descrito como:
A A (x ) / x U
(2.6)
Exemplo 2.1: exemplos de conjuntos nebulosos
 Conjunto das temperaturas mornas: TM =
{ 0,1/20; 0,3/25; 0,6/30; 0,8/35; 1/40; 0,8/45; 0,6/50; 0,3/55; 0,1/60 }
Que graficamente pode ser representado como a seguir:
1,0
ÂľTM(x)
0,8 0,6 0,4 0,2
0,0 0
10
20
30
40
50
60
70
80
TEMPERATURA [°C]
 Conjunto dos homens nĂŁo muito jovens e nem muito velhos: đ?œ‡đ?‘ đ??˝đ?‘‰ (đ?‘Ľ) = đ??¸đ?‘Ľđ?‘?[−0,000008(đ?‘Ľ − 50)4 ]
1,0
ÂľNJV(x)
0,8 0,6 0,4
0,2 0,0 0
10
20
30
40
50
60
70
80
90
100
IDADE EM ANOS
Uma questĂŁo que inquieta o leitor neste instante, ĂŠ sem dĂşvida com relação Ă obtenção da função de pertinĂŞncia. Qual deve ser sua expressĂŁo analĂtica? Que
valor deve ser atribuído como grau de pertinência a um determinado elemento do universo de discurso? E com que exatidão deve ser representado esse valor? Existem muitos cenários em que o valor da pertinência entre os elementos do conjunto nebuloso não é preciso, ou seja, não podemos definir com exatidão o valor da pertinência. O mais plausível é afirmar que um determinado elemento deva ter um grau de pertinência maior ou menor do que outro, conforme o caso. De fato, quando projetamos um sistema nebuloso, nós desejamos que ele seja o mais robusto possível, de forma que em muitas aplicações, se vamos atribuir o valor 0,645 ou 0,650 para expressar um determinado grau de pertinência, isto não é determinante no desempenho do sistema nebuloso desde que seja preservada uma coerência lógica com relação a todos os elementos que diz respeito ao referido conjunto. Por exemplo, se quisermos modelar o conceito de velocidade média por um conjunto nebuloso, devemos fazê-lo buscando uma função de pertinência que apresente três regiões: uma região inicial que seja monotonicamente crescente, seguida por uma região de saturação, e por fim uma região monotonicamente decrescente. Isto sim é o que é mais importante. A informação do conceito está modelada ou representada muito mais na envoltória da função de pertinência do que na exatidão de um específico valor de um grau de pertinência.
II.3 Funções de Pertinência
Na maioria das aplicações práticas, as funções de pertinência são do tipo gaussiana, triangular, trapezoidal, crescente ou decrescente. A Fig.2.3 mostra estes cinco tipos básicos de funções de pertinência, onde a, b, c e d são parâmetros que definem uma particular característica.
1,0
1,0
Gaussiana
0,5
Triangular
0,5
a 0,0
1,0
0,0
c
0
100
0
a
b
c
100
c
100
1,0
Trapezoidal
Sigmoide
0,5
0,5
0,0 0
1,0
a
b
d
c
0,0 100
a
0
1,0
Crescente
0,5
Decrescente
0,5
0,0
0,0 0
a
c
100
0
a
Fig.2.3: Tipos básicos de funções de pertinência.
c
100
As funçþes triangulares, trapezoidais, crescentes e decrescentes, pseudolineares, podem facilmente ser implementadas pelo uso das funçþes max( ) e min( ). Estas representaçþes são bastante úteis quando utilizamos uma linguagem de script, como o matalab, octave ou scilab, para modelar um conjunto nebuloso. Aqui, no entanto, utilizaremos como ferramenta o Excel. Ver seção VII
para maiores
detalhes.
Função triangular: đ?‘Ľâˆ’đ?‘Ž
đ?‘?−đ?‘Ľ
đ?‘“đ?‘šđ?‘Ąđ?‘&#x;(đ?‘Ľ, đ?‘Ž, đ?‘?, đ?‘?) = đ?‘šđ?‘–đ?‘› (đ?‘šđ?‘Žđ?‘Ľ (0, (đ?‘?−đ?‘Ž)) , đ?‘šđ?‘Žđ?‘Ľ (0, (đ?‘?−đ?‘?)))
(2.7)
Função trapezoidal: đ?‘“đ?‘šđ?‘Ąđ?‘&#x;đ?‘Ž(đ?‘Ľ, đ?‘Ž, đ?‘?, đ?‘?, đ?‘‘) = đ?‘šđ?‘–đ?‘›(đ?‘Ąđ?‘&#x;đ?‘Ž1 , đ?‘Ąđ?‘&#x;đ?‘Ž2 )
(2.8)
onde: đ?‘Ľâˆ’đ?‘Ž đ?‘Ąđ?‘&#x;đ?‘Ž1 = đ?‘šđ?‘Žđ?‘Ľ (0, đ?‘šđ?‘–đ?‘› (1, ( ))) đ?‘?−đ?‘Ž
đ?‘’ đ?‘Ąđ?‘&#x;đ?‘Ž2 = đ?‘šđ?‘Žđ?‘Ľ (0, đ?‘šđ?‘–đ?‘› (1, (
đ?‘‘−đ?‘Ľ ))) đ?‘‘−đ?‘?
Função crescente: đ?‘Ľâˆ’đ?‘Ž ))) đ?‘?−đ?‘Ž
(2.9)
đ?‘?−đ?‘Ľ ))) đ?‘?−đ?‘Ž
(2.10)
đ?‘“đ?‘šđ?‘?(đ?‘Ľ, đ?‘Ž, đ?‘?) = đ?‘šđ?‘–đ?‘› (1, đ?‘šđ?‘Žđ?‘Ľ (0, ( Função decrescente:
đ?‘“đ?‘šđ?‘‘(đ?‘Ľ, đ?‘Ž, đ?‘?) = đ?‘šđ?‘–đ?‘› (1, đ?‘šđ?‘Žđ?‘Ľ (0, (
É comum tambÊm, implementar as funçþes crescente e decrescente como:
0
đ?‘Ľâ‰¤đ?‘Ž đ?‘Ľâˆ’đ?‘Ž 2
đ?‘“đ?‘šđ?‘?(đ?‘Ľ, đ?‘Ž, đ?‘?) =
2(
đ?‘?−đ?‘Ž
)
đ?‘?−đ?‘Ľ 2
1 − 2 (đ?‘?−đ?‘Ž)
{1
đ?&#x2018;&#x17D;<đ?&#x2018;Ľâ&#x2030;¤ đ?&#x2018;&#x17D;+đ?&#x2018;? 2
đ?&#x2018;&#x17D;+đ?&#x2018;? 2
<đ?&#x2018;Ľâ&#x2030;¤đ?&#x2018;? đ?&#x2018;Ľ>đ?&#x2018;?
(2.11)
đ?&#x2018;&#x201C;đ?&#x2018;&#x161;đ?&#x2018;&#x2018;(đ?&#x2018;Ľ, đ?&#x2018;&#x17D;, đ?&#x2018;?) = 1 â&#x2C6;&#x2019; đ?&#x2018;&#x201C;đ?&#x2018;&#x161;đ?&#x2018;?(đ?&#x2018;Ľ, đ?&#x2018;&#x17D;, đ?&#x2018;?)
(2.12)
Função sigmoide: Esta função muito utilizada na implementação de redes neuronais artificiais, que dependendo dos parâmetros sintetiza uma função monotônica crescente ou decrescente, Ê a função sigmoide definida como: 1
đ?&#x2018;&#x201C;đ?&#x2018; đ?&#x2018;&#x2013;đ?&#x2018;&#x201D; = 1+đ?&#x2018;&#x2019; â&#x2C6;&#x2019;đ?&#x203A;ź(đ?&#x2018;Ľâ&#x2C6;&#x2019;đ?&#x203A;˝)
(2.13)
Na sua aplicação em lĂłgica nebulosa, ĂŠ muitas vezes, mais conveniente expressar a função sigmoide como dependendo de outros parâmetros (a e c), tal que: đ?&#x2018;&#x201C;đ?&#x2018; đ?&#x2018;&#x2013;đ?&#x2018;&#x201D; = {
1â&#x2C6;&#x2019;đ?&#x203A;ž
đ?&#x2018; đ?&#x2018;&#x2019;
đ?&#x2018;Ľ=đ?&#x2018;&#x17D;
đ?&#x203A;ž
đ?&#x2018; đ?&#x2018;&#x2019;
đ?&#x2018;Ľ=đ?&#x2018;?
com 0 < đ?&#x203A;ž < 1
(2.14)
Assim temos: 1
đ?&#x2018;&#x201C;đ?&#x2018;&#x161;đ?&#x2018; đ?&#x2018;&#x2013;đ?&#x2018;&#x201D;(đ?&#x2018;Ľ, đ?&#x2018;&#x17D;, đ?&#x2018;?) = 1+đ?&#x2018;&#x2019; â&#x2C6;&#x2019;đ?&#x203A;ź(đ?&#x2018;Ľâ&#x2C6;&#x2019;đ?&#x203A;˝) 2
1â&#x2C6;&#x2019;đ?&#x203A;ž ) đ?&#x203A;ž
onde: đ?&#x203A;ź = đ?&#x2018;&#x17D;â&#x2C6;&#x2019;đ?&#x2018;? đ?&#x2018;&#x2122;đ?&#x2018;&#x203A; (
e
(2.15)
đ?&#x203A;˝=
đ?&#x2018;&#x17D;+đ?&#x2018;? 2
Função gaussiana: A função gaussiana de centro c e variância a , ĂŠ expressa pela equação: đ?&#x2018;&#x201C;đ?&#x2018;&#x161;đ?&#x2018;&#x201D;đ?&#x2018;&#x17D;đ?&#x2018;˘(đ?&#x2018;Ľ, đ?&#x2018;?, đ?&#x2018;&#x17D;) = đ?&#x2018;&#x2019;đ?&#x2018;Ľđ?&#x2018;? (â&#x2C6;&#x2019;
(đ?&#x2018;Ľâ&#x2C6;&#x2019;đ?&#x2018;?)2 đ?&#x2018;&#x17D;
)
(2.16)
Uma forma alternativa Ă função gaussiana ĂŠ a função pi, definida como: đ?&#x2018;&#x201C;đ?&#x2018;&#x161;đ?&#x2018;?đ?&#x2018;&#x2013;(đ?&#x2018;Ľ, đ?&#x2018;?, đ?&#x2018;&#x17D;) = {
đ?&#x2018;&#x201C;đ?&#x2018;&#x161;đ?&#x2018;?(đ?&#x2018;Ľ, đ?&#x2018;? â&#x2C6;&#x2019; đ?&#x2018;&#x17D;, đ?&#x2018;?) đ?&#x2018; đ?&#x2018;&#x2019; đ?&#x2018;Ľ â&#x2030;¤ đ?&#x2018;? đ?&#x2018;&#x201C;đ?&#x2018;&#x161;đ?&#x2018;&#x2018;(đ?&#x2018;Ľ, đ?&#x2018;?, đ?&#x2018;? + đ?&#x2018;&#x17D;) đ?&#x2018; đ?&#x2018;&#x2019; đ?&#x2018;Ľ > đ?&#x2018;?
(2.17)
Para maiores detalhes sobre a implementação das funçþes de pertinência numa planilha de cålculo, consulte o apêndice I.
Exemplo 2.2: Represente atravÊs de conjuntos nebulosos os conceitos: a) homens altos; b) temperatura confortåvel. Use o Excel como ferramenta de implementação. a) Homens Altos: A primeira coisa a fazer Ê definir o universo de discurso. Neste caso, usaremos um vetor coluna variando entre 0,5 a 2,5 com incremento de 0,1 metros. Para isso, fazemos a cÊlula A4 igual a 0,5; a cÊlula A5 = 0,1+A4, e a parti desse ponto fazemos o arraste atÊ obtermos o valor 2,50 correspondente a cÊlula A24. Ver planilha: Homens Altos & Temperatura Confortåvel - Exemplo 2.2
Para a função de pertinência usaremos a função sigmoide, cuja expressão Ê: 1
đ?&#x2018;&#x201C;đ?&#x2018;&#x161;đ?&#x2018; đ?&#x2018;&#x2013;đ?&#x2018;&#x201D;(đ?&#x2018;Ľ, đ?&#x2018;&#x17D;, đ?&#x2018;?) = 1+đ?&#x2018;&#x2019; â&#x2C6;&#x2019;đ?&#x203A;ź(đ?&#x2018;Ľâ&#x2C6;&#x2019;đ?&#x203A;˝)
2
onde: đ?&#x203A;ź = đ?&#x2018;&#x17D;â&#x2C6;&#x2019;đ?&#x2018;? đ?&#x2018;&#x2122;đ?&#x2018;&#x203A; (
1â&#x2C6;&#x2019;đ?&#x203A;ž ) đ?&#x203A;ž
e
đ?&#x203A;˝=
đ?&#x2018;&#x17D;+đ?&#x2018;? 2
No caso em questĂŁo, faremos os parâmetros a e c iguais a 1,2 e 2, respectivamente. Adotando o valo de gama (ď §) igual a 0,99 garantimos que đ?&#x2018;&#x201C;đ?&#x2018;&#x161;đ?&#x2018; đ?&#x2018;&#x2013;đ?&#x2018;&#x201D;(đ?&#x2018;Ľ; 1,2; 2,0) seja igual 0,01 em x = 1,2 e 0,99 em x = 2,0. No Excel implementamos esta função de acordo com a expressĂŁo abaixo: m1=2*log(99)/(c-a); m2=(a+c)/2; ÂľSIG(u)=1 /(1+exp(-m1*(u-m2)));
Isto ĂŠ, fazemos a cĂŠlula B4=1/(1+EXP(-(2*LN(99)/(2-1,2))*(A4-(1,2+2)/2))), como pode ser visto na figura abaixo.
b) Temperatura confortĂĄvel: Como no item anterior, usaremos um vetor coluna variando entre -10 a 50 graus Celsius, com incremento de 1oC. Para isso, fazemos a cĂŠlula A4 igual a -10; a cĂŠlula A5=1+A4, e a parti desse ponto fazemos o arraste atĂŠ obtermos o valor 50 correspondente a cĂŠlula A64. Para a função de pertinĂŞncia usaremos a função exponencial, cuja expressĂŁo, neste caso ĂŠ: đ?&#x2018;&#x201C;đ?&#x2018;&#x161;đ?&#x2018;&#x2019;đ?&#x2018;Ľđ?&#x2018;?(đ?&#x2018;Ľ, đ?&#x2018;?, đ?&#x2018;&#x17D;) = đ?&#x2018;&#x2019;đ?&#x2018;Ľđ?&#x2018;?[â&#x2C6;&#x2019;đ?&#x2018;&#x17D;(đ?&#x2018;Ľ â&#x2C6;&#x2019; đ?&#x2018;?)4 ] Os parâmetros a e c foram iguais a -0,0005 e 25, respectivamente. No Excel implementamos esta função fazemos a cĂŠlula B4=EXP(-0,0005*(A4-25)^4). O resultado final pode ser visto na figura abaixo.