guia_xfl para sistemas fuzzy

67
LOGICA FUZZY CASO: CRUZAR UNA CALLE SOTWARE: Xfuzzy 3.0

Upload: mframosm

Post on 19-Jun-2015

1.087 views

Category:

Documents


2 download

DESCRIPTION

Descripción paso a paso de diseño de un sistema fuzzy con lenguaje XFL en programa Xfuzzy

TRANSCRIPT

Page 1: guia_XFL para sistemas fuzzy

LOGICA FUZZY

CASO: CRUZAR UNA CALLE

SOTWARE: Xfuzzy 3.0

Page 2: guia_XFL para sistemas fuzzy

Descripción del caso: Cruzar una calle

Objetivo: Un peatón debe decidir de que manera

cruza una calle.

Page 3: guia_XFL para sistemas fuzzy

Descripción del caso: Cruzar una calle

Objetivo: Un peatón debe decidir de que manera cruza una calle.

----------------------------------------------------------

En esta presentación desarrollamos paso a paso el código en lenguaje XFL para diseñar Sistemas Fuzzy.

Page 4: guia_XFL para sistemas fuzzy

Descripción del caso: Cruzar una calle

Objetivo: Un peatón debe decidir de que manera cruza una calle.

----------------------------------------------------------

En esta presentación desarrollamos paso a paso el código en lenguaje XFL para diseñar Sistemas Fuzzy.

------------------------------------------------------------

El estudiante debe conocer el caso “Cruzar calle” mostrado en una presentación previa

Page 5: guia_XFL para sistemas fuzzy

AUTO

Page 6: guia_XFL para sistemas fuzzy

AUTO

velocidad

Page 7: guia_XFL para sistemas fuzzy

AUTO

distancia

velocidad

Page 8: guia_XFL para sistemas fuzzy

AUTO

distancia

velocidad

Page 9: guia_XFL para sistemas fuzzy

AUTO

distancia

velocidad

Page 10: guia_XFL para sistemas fuzzy

AUTO

distancia

velocidad

velocidad?

Page 11: guia_XFL para sistemas fuzzy

Velocidad del auto

0,2

0,4

0,6

0,8

1,0

10 20 30 40 50 60

LENTOLENTOLENTO NORMAL RAPIDO

Page 12: guia_XFL para sistemas fuzzy

Lenguaje XFL para Velocidad del auto

En lenguaje XFL primero se crea el TIPO con los términos linguísticos y luego se crea la variable de entrada

● type Tva

Denominación del tipode variable

(Tipo variable auto)Palabra reservada

(tipo)

Page 13: guia_XFL para sistemas fuzzy

Lenguaje XFL para Velocidad del auto

En lenguaje XFL primero se crea el TIPO con los términos linguísticos y luego se crea la variable de entrada

● type Tva [0.0, 60.0; 61]

Valormínimo

Valor máximo

Cardinalidad:Número de

valores enterosde la variable

Page 14: guia_XFL para sistemas fuzzy

Lenguaje XFL para Velocidad del auto

En lenguaje XFL primero se crea el TIPO con los términos linguísticos y luego se crea la variable de entrada

● type Tva [0.0,60.0;61] {

lento xfl.trapezoid(-0.1, 0.0, 10.0, 30.0);

Término

linguísticoFunciòn

Page 15: guia_XFL para sistemas fuzzy

Lenguaje XFL para Velocidad del auto

En lenguaje XFL primero se crea el TIPO con los términos linguísticos y luego se crea la variable de entrada

● type Tva [0.0,60.0;61] {

lento xfl.trapezoid(-0.1,0.0,10.0,30.0);

normal xfl.trapezoid(10.0,30.0,40.0,60.0);

rapido xfl.triangle(40.0,60.0,60.01);

}COMPLETAMOS LOS TÉRMINOS LINGUÍSTICOS

Page 16: guia_XFL para sistemas fuzzy

Lenguaje XFL para Velocidad del auto

En lenguaje XFL primero se crea el TIPO con los términos linguísticos y luego se crea la variable de entrada

● type Tva [0.0,60.0;61] {

lento xfl.trapezoid(-0.1,0.0,10.0,30.0);

normal xfl.trapezoid(10.0,30.0,40.0,60.0);

rapido xfl.triangle(40.0,60.0,60.01);

}

● system (Tva va : ) {

} Definimos la variable de entrada va(velocidad del auto

de tipo Tva)Palabra reservada(definir sistema fuzzy)

Page 17: guia_XFL para sistemas fuzzy

Distancia del auto

0,2

0,4

0,6

0,8

1,0

20 40 60 80 100

CERCA LEJOS MUY LEJOS

30 50 70

Page 18: guia_XFL para sistemas fuzzy

Lenguaje XFL para Distancia del auto

type Tda [0.0,100.0;101] {

cerca xfl.triangle(-0.1,0.0,30.0);

lejos xfl.triangle(20.0,50.0,80.0);

muylejos xfl.triangle(70.0,100.0,100.01);

}

system (Tva va, Tda da : ) {

}

Page 19: guia_XFL para sistemas fuzzy

Velocidad del peatón

0,2

0,4

0,6

0,8

1,0

1 2 3 4 5 6

MUY LENTO CAMINAR CORRERLENTOLENTOLENTO TROTAR

CORRERMUCHO

Page 20: guia_XFL para sistemas fuzzy

Lenguaje XFL para Distancia del peatón

type Tvp [0.0,6.0;7] {

muylento xfl.trapezoid(-0.1,0.0,1.0,2.0);

lento xfl.triangle(1.0,2.0,3.0);

caminar xfl.triangle(2.0,3.0,4.0);

trotar xfl.triangle(3.0,4.0,5.0);

correr xfl.triangle(4.0,5.0,6.0);

corrermucho xfl.triangle(5.0,6.0,6.01);

}

system (Tva va, Tda da : Tvp vp) {

}

Variable de salida vp(velocidad del peatón)

Page 21: guia_XFL para sistemas fuzzy

BASE DE REGLASVELOCIDAD

AUTODISTANCIA

AUTOVELOCIDAD

PEATON

LENTO (0-30) CERCA (0-30) CAMINAR (2-4)

LENTO (0-30) LEJOS (20-80) LENTO (1-3)

LENTO (0-30) MUY LEJOS (70-mas) MUY LENTO (0-2)

NORMAL (10-60) CERCA (0-30) CORRER (4-6)

NORMAL (10-60) LEJOS (20-80) TROTAR (3-5)

NORMAL (10-60) MUY LEJOS (70-mas) CAMINAR (2-4)

RAPIDO (40-mas) CERCA (0-30) CORRER MUCHO (5-mas)

RAPIDO (40-mas) LEJOS (20-80) CORRER (4-6)

RAPIDO (40-mas) MUY LEJOS (70-mas) TROTAR (3-5)

Page 22: guia_XFL para sistemas fuzzy

BASE DE REGLASVELOCIDAD

AUTO

(va)

DISTANCIAAUTO

(da)

VELOCIDADPEATON

(vp)LENTO (0-30) CERCA (0-30) CAMINAR (2-4)

if(va == lento & da == cerca) -> vp = caminar

Page 23: guia_XFL para sistemas fuzzy

Lenguaje XFL para la Base de reglas

rulebase base

Palabra reservadapara declarar

base de reglas

Nombre de la base de reglas

Page 24: guia_XFL para sistemas fuzzy

Lenguaje XFL para la Base de reglas

rulebase base (Tva va, Tda da : Tvp vp)

Declaración deVariables de entrada

Declaración devariable de salida

Page 25: guia_XFL para sistemas fuzzy

Lenguaje XFL para la Base de reglas

rulebase base (Tva va, Tda da : Tvp vp) using oper {

Operradores definidos

Page 26: guia_XFL para sistemas fuzzy

Lenguaje XFL para la Base de reglas

rulebase base (Tva va, Tda da : Tvp vp) using oper {

if(va == lento & da == cerca) -> vp = caminar;

if(va == lento & da == lejos) -> vp = lento;

if(va == lento & da == muylejos) -> vp = muylento;

if(va == normal & da == cerca) -> vp = correr;

if(va == normal & da == lejos) -> vp = trotar;

if(va == normal & da == muylejos) -> vp = caminar;

if(va == rapido & da == cerca) -> vp = corrermucho;

if(va == rapido & da == lejos) -> vp = correr;

if(va == rapido & da == muylejos) -> vp = trotar;

}

system (Tva va, Tda da : Tvp vp) {

base(va, da : vp);

}

Declaración dereglas

Definición de la baseen el sistema

Page 27: guia_XFL para sistemas fuzzy

Al código mostrado agregamos el que corresponde a los operadores difusos que son

utilizados en nuestro caso

operatorset oper { and xfl.min();

defuz xfl.CenterOfArea(); }

Page 28: guia_XFL para sistemas fuzzy

Unimos todo el código en orden:OperadoresTipos Reglas Sistema

Finalmente lo copiamos al ambiente Xfuzzy

Page 29: guia_XFL para sistemas fuzzy

Ejecutar el programa Xfuzzy

Page 30: guia_XFL para sistemas fuzzy
Page 31: guia_XFL para sistemas fuzzy

Creando el sistema fuzzy

Secuencia de acciones:

File

New Sistem

Page 32: guia_XFL para sistemas fuzzy
Page 33: guia_XFL para sistemas fuzzy

Guardando el sistema fuzzy calle.xfl

Secuencia de acciones:

Hacemos clic en nomame_000

File

Save System As ...

Seleccionamos la carpeta en la que guardamos el sistema fuzzy

Archivo: calle.xfl

Save

Page 34: guia_XFL para sistemas fuzzy
Page 35: guia_XFL para sistemas fuzzy
Page 36: guia_XFL para sistemas fuzzy
Page 37: guia_XFL para sistemas fuzzy
Page 38: guia_XFL para sistemas fuzzy

Diseñamos el sistema fuzzy

Secuencia de acciones:

Design

Edit System

Page 39: guia_XFL para sistemas fuzzy
Page 40: guia_XFL para sistemas fuzzy
Page 41: guia_XFL para sistemas fuzzy

Secuencia de acciones:

File

Edit XFL3 file

Page 42: guia_XFL para sistemas fuzzy
Page 43: guia_XFL para sistemas fuzzy
Page 44: guia_XFL para sistemas fuzzy

Digitamos los operadores fuzzy:

operatorset oper { and xfl.min();

defuz xfl.CenterOfArea(); }

Page 45: guia_XFL para sistemas fuzzy
Page 46: guia_XFL para sistemas fuzzy

Guardamos el archivo

OK

Verificamos los cambios

Page 47: guia_XFL para sistemas fuzzy
Page 48: guia_XFL para sistemas fuzzy
Page 49: guia_XFL para sistemas fuzzy
Page 50: guia_XFL para sistemas fuzzy

Regresamos al editor del sistema y escribimos el resto

de código para los tipos, variables y base de reglas

del sistema que tratamos en las diapositivas anteriores

Page 51: guia_XFL para sistemas fuzzy
Page 52: guia_XFL para sistemas fuzzy

Guardamos el archivo

OK

Verificamos los cambios

(Verificar en la plantalla principal del programa la existencia de errores)

Page 53: guia_XFL para sistemas fuzzy
Page 54: guia_XFL para sistemas fuzzy
Page 55: guia_XFL para sistemas fuzzy

Haciendo doble clic sobre cada uno de los elementos que hemos creado

visualizamos sus atributos

Page 56: guia_XFL para sistemas fuzzy
Page 57: guia_XFL para sistemas fuzzy
Page 58: guia_XFL para sistemas fuzzy
Page 59: guia_XFL para sistemas fuzzy
Page 60: guia_XFL para sistemas fuzzy
Page 61: guia_XFL para sistemas fuzzy
Page 62: guia_XFL para sistemas fuzzy
Page 63: guia_XFL para sistemas fuzzy
Page 64: guia_XFL para sistemas fuzzy

Monitoreamos elSistema creado

Secuencia de acciones

VerificationMonitorization

Page 65: guia_XFL para sistemas fuzzy
Page 66: guia_XFL para sistemas fuzzy

Generando códigoen lenguaje java

Secuencia de acciones

Synthesisto Java

Page 67: guia_XFL para sistemas fuzzy

MUCHAS GRACIAS