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

Post on 07-Apr-2016

216 Views

Category:

Documents

2 Downloads

Preview:

Click to see full reader

TRANSCRIPT

FuzBlockParadigmas de Linguagens

Computacionais

Bruno EdsonFlavio Gondim

Marcelo RodriguesPablo 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

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

FuzBlock

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 ¹

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)

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

Blocosblock Nega {

varin double entra;varout double sai = - entra;

}Block = [[ Package Imports "block"

Identifier "{" Declaration "}" ]].

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 "." "*" ";" ]].

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

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

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

Sets representam conjuntos difusos.

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

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

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 ]] | [[ ]].

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

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

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" ]] | [[ "-" ]].

Operadores not or and xor

- + * ==

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) ]

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)

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 .

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);

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 ]].

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);}

Forma Gráfica

Forma Gráfica

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;}

Conclusões Facilidade de Modelagem

• Visualização• Utilização

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

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.

top related