fuzblock paradigmas de linguagens computacionais bruno edson flavio gondim marcelo rodrigues pablo...

27
FuzBlock Paradigmas de Linguagens Computacionais Bruno Edson Flavio Gondim Marcelo Rodrigues Pablo de Santana

Upload: jennifer-barbas

Post on 07-Apr-2016

216 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: FuzBlock Paradigmas de Linguagens Computacionais Bruno Edson Flavio Gondim Marcelo Rodrigues Pablo de Santana

FuzBlockParadigmas de Linguagens

Computacionais

Bruno EdsonFlavio Gondim

Marcelo RodriguesPablo de Santana

Page 2: FuzBlock Paradigmas de Linguagens Computacionais Bruno Edson Flavio Gondim Marcelo Rodrigues Pablo de Santana

Conteúdo Apresentação Características da Linguagem Descrição Informal / Sintaxe Abstrata /

Semântica Funções Padrão Exemplos (Forma Gráfica) Conclusões

Page 3: FuzBlock Paradigmas de Linguagens Computacionais Bruno Edson Flavio Gondim Marcelo Rodrigues Pablo de Santana

FuzBlock Linguagem descritiva para modelagem

de blocos fuzzy Criação de uma API Java

• java.fuzzy.* ¹ Modelagem de:

• Funções de pertinência, conjuntos, variáveis, operações, qualificadores¹, (de)fuzzificação, inferência e BC (regras e variáveis lingüísticas¹)

1 - futuramente

Page 4: FuzBlock Paradigmas de Linguagens Computacionais Bruno Edson Flavio Gondim Marcelo Rodrigues Pablo de Santana

FuzBlock

Page 5: FuzBlock Paradigmas de Linguagens Computacionais Bruno Edson Flavio Gondim Marcelo Rodrigues Pablo de Santana

FuzBlock Sintaxe própria e simples, semelhante à Java Compilador para java ¹ Utilização:

• Educacional – aprendizagem da Lógica Fuzzy e IA• Sistemas de controle com IA, sensores, e outras

aplicações Geração de relatórios gráficos ¹

Page 6: FuzBlock Paradigmas de Linguagens Computacionais Bruno Edson Flavio Gondim Marcelo Rodrigues Pablo de Santana

Características Básicas de FuzBlock Tipos (primitivos, conjuntos e blocos) Memória (bloco – atribuição dinâmica) Associações (Bindings) Abstrações (funções) Encapsulamento (blocos, pacotes) Valores (primitivos, variáveis fuzzy) Escopo (monolítico, global)

Page 7: FuzBlock Paradigmas de Linguagens Computacionais Bruno Edson Flavio Gondim Marcelo Rodrigues Pablo de Santana

Modelando um Sistema Fuzzy Blocos Pacotes e Importações Tipos Declarações Comandos de Atribuição Expressões Funções Padrão

Page 8: FuzBlock Paradigmas de Linguagens Computacionais Bruno Edson Flavio Gondim Marcelo Rodrigues Pablo de Santana

Blocosblock Nega {

varin double entra;varout double sai = - entra;

}Block = [[ Package Imports "block"

Identifier "{" Declaration "}" ]].

Page 9: FuzBlock Paradigmas de Linguagens Computacionais Bruno Edson Flavio Gondim Marcelo Rodrigues Pablo de Santana

Pacotes e Importaçõespackage (único)import (vários)Part-Identifier = [[ Identifier ]] | [[ Part-Identifier "."

Identifier ]].Package = [[ "package" Part-Identifier ";" ]] | [[ ]].Imports = [[ Import ]] | [[ Imports Import ]] | [[ ]].Import = [[ "import" Part-Identifier ";" ]] | [[ "import"

Part-Identifier "." "*" ";" ]].

Page 10: FuzBlock Paradigmas de Linguagens Computacionais Bruno Edson Flavio Gondim Marcelo Rodrigues Pablo de Santana

TiposTipos Primitivos: boolean true, false int 10, 5 double 1.3, 0.45

Semelhantes aos tipos correspondentes em outras linguagens de programação

Page 11: FuzBlock Paradigmas de Linguagens Computacionais Bruno Edson Flavio Gondim Marcelo Rodrigues Pablo de Santana

TiposTipos Compostos: set ramp(t, 10, 20) Block b.frio

Sets representam conjuntos difusos.

Page 12: FuzBlock Paradigmas de Linguagens Computacionais Bruno Edson Flavio Gondim Marcelo Rodrigues Pablo de Santana

TiposType = [[ "int" ]] | [[ "double" ]] | [[ “boolean”

]] | [[ "set" ]] | [[ Identifier ]].

Page 13: FuzBlock Paradigmas de Linguagens Computacionais Bruno Edson Flavio Gondim Marcelo Rodrigues Pablo de Santana

Declarações (variáveis)(entrada, saída e restritas)Declaration = [[ Single-Declaration ]] | [[ Declaration Single-

Declaration ]].Single-Declaration = [[ In-Declaration ]] | [[ Out-Declaration ]] |

[[ Var-Declaration ]] | [[ Attribution-Command ]].In-Declaration = [[ "varin" Type Identifier ";" ]].Out-Declaration = [[ "varout" Type Identifier Attribution-Auxiliar

";" ]].Var-Declaration = [[ "var" Type Identifier Attribution-Auxiliar ";" ]].Attribution-Auxiliar = [[ "=" Expression ]] | [[ ]].

Page 14: FuzBlock Paradigmas de Linguagens Computacionais Bruno Edson Flavio Gondim Marcelo Rodrigues Pablo de Santana

Comandos de Atribuição Attribution-Command = [[ Part-Identifier

"=" Expression ";" ]]. blocoTemp.temp = temp;

Page 15: FuzBlock Paradigmas de Linguagens Computacionais Bruno Edson Flavio Gondim Marcelo Rodrigues Pablo de Santana

ExpressõesExpression = [[ "true" ]] | [[ "false" ]] | [[ Numeral ]] | [[ Decimal ]] | [[ Identifier ]] | [[ Part-Identifier ]] | [[ "(" Expression ")" ]] | [[ Expression Binary-Operator Expression ]] | [[ Unary-Operator Expression ]] | [[ Function ]].Binary-Operator = [[ "+" ]] | [[ "-" ]] | [[ "*" ]] | [[ "xor" ]] | [[ "and" ]] | [[ "or" ]] | [[ "==" ]].Unary-Operator = [[ "not" ]] | [[ "-" ]].

Page 16: FuzBlock Paradigmas de Linguagens Computacionais Bruno Edson Flavio Gondim Marcelo Rodrigues Pablo de Santana

Operadores not or and xor

- + * ==

Page 17: FuzBlock Paradigmas de Linguagens Computacionais Bruno Edson Flavio Gondim Marcelo Rodrigues Pablo de Santana

Operações sobre Conjuntos Difusos [1/2]

or , and , xor , not

Seja μd (x) = função de pertinência de x no conjunto difuso.

• set d1 or set d2 = µd1(x) U µd2(x) = max [ μd1(x), μd2(x) ]

• set d1 and set d2 = µd1(x) ∩ µd2(x) = min [ μd1(x), μd2(x) ]

• set d1 xor set d2 = abs [ μd1(x) - μd2(x) ]

• set not set d = abs [ 1 – μd(x) ]

Page 18: FuzBlock Paradigmas de Linguagens Computacionais Bruno Edson Flavio Gondim Marcelo Rodrigues Pablo de Santana

Operações sobre Conjuntos Difusos [2/2]Aritmética Difusa - , +, *

Sejam A e B números difusos, tal que a avaliação seja.

Para toda expressão Exp e set A = f(Exp, ...) e set B = f(Exp, ...)

• value(A - B ) = max [0, value(A) – value (B)]

• value(A + B) = min[1, value(A) – value(B)]

• value(A * B) = value(A) * value(B)

Page 19: FuzBlock Paradigmas de Linguagens Computacionais Bruno Edson Flavio Gondim Marcelo Rodrigues Pablo de Santana

Sintaxe LexicalNumeral = digit | Numeral digit.Decimal = Numeral | Numeral point |

Numeral point aux | point aux .aux = digit | digit aux .point = ".".digit = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 .

Page 20: FuzBlock Paradigmas de Linguagens Computacionais Bruno Edson Flavio Gondim Marcelo Rodrigues Pablo de Santana

Funções Padrão Valores:

• value, defuz Conjuntos:

• ramp, sine (1ª ordem)• trap, bell (2ª ordem)

trap(E, V1, V2, V3, V4) = ramp(E, V1, V2) and ramp(E, V4, V3);bell(E, V1, V2, V3, V4) = sine(E, V1, V2) and sine(E, V4, V3);

Page 21: FuzBlock Paradigmas de Linguagens Computacionais Bruno Edson Flavio Gondim Marcelo Rodrigues Pablo de Santana

Funções PadrãoFunction = [[ "value" "(" Expression ")" ]]

| [[ "defuz" "(" Expression ")" ]]| [[ "ramp" "(" Expression "," Value "," Value ")" ]]| [[ "sine" "(" Expression "," Value "," Value ")" ]]| [[ "trap" "(" Expression "," Value "," Value "," Value "," Value ")" ]]| [[ "bell" "(" Expression "," Value "," Value "," Value "," Value ")" ]].

Value = [[ Numeral ]] | [[ Decimal ]].

Page 22: FuzBlock Paradigmas de Linguagens Computacionais Bruno Edson Flavio Gondim Marcelo Rodrigues Pablo de Santana

Exemplopackage meteorologia;block Temp{ varin int temp; var set frio = ramp(temp, 10, 0); var set quente = ramp(temp, 30, 40); var set normal = not (frio or quente); varout double ehFrio = value(frio); varout double ehQuente = value(quente); varout double ehNormal = value(normal);}

Page 23: FuzBlock Paradigmas de Linguagens Computacionais Bruno Edson Flavio Gondim Marcelo Rodrigues Pablo de Santana

Forma Gráfica

Page 24: FuzBlock Paradigmas de Linguagens Computacionais Bruno Edson Flavio Gondim Marcelo Rodrigues Pablo de Santana

Forma Gráfica

Page 25: FuzBlock Paradigmas de Linguagens Computacionais Bruno Edson Flavio Gondim Marcelo Rodrigues Pablo de Santana

Interconexão – Blocos Internos e Externospackage dados;import meteorologia;block Frio{ varin int temp; var Temp blocoTemp; blocoTemp.temp = temp; varout double frio = blocoTemp.ehFrio;}

Page 26: FuzBlock Paradigmas de Linguagens Computacionais Bruno Edson Flavio Gondim Marcelo Rodrigues Pablo de Santana

Conclusões Facilidade de Modelagem

• Visualização• Utilização

Integração com Java (API), sintaxe Conceitos PLC, associado à SI.

Page 27: FuzBlock Paradigmas de Linguagens Computacionais Bruno Edson Flavio Gondim Marcelo Rodrigues Pablo de Santana

Referências BibliográficasMOSSES, Peter D. Action Semantics.

Cambridge Tracts in Theoretical, Computer Science 26. Press Syndicate of the University of Cambridge. New York – United States of America, 1992.

MOURA, Hermano P. Action Semantics of Specimen. Department of Informatics, Federal University of Pernambuco. Recife - Brasil, 1996.