30734378 Guia XFL Para Sistemas Fuzzy

download 30734378 Guia XFL Para Sistemas Fuzzy

of 67

Transcript of 30734378 Guia XFL Para Sistemas Fuzzy

LOGICA FUZZY CASO: CRUZAR UNA CALLE SOTWARE: Xfuzzy 3.0

Descripcin del caso: Cruzar una calle

Objetivo: Un peatn debe decidir de que manera cruza una calle.

Descripcin del caso: Cruzar una calleObjetivo: Un peatn debe decidir de que manera cruza una calle. ----------------------------------------------------------

En esta presentacin desarrollamos paso a paso el cdigo en lenguaje XFL para disear Sistemas Fuzzy.

Descripcin del caso: Cruzar una calleObjetivo: Un peatn debe decidir de que manera cruza una calle. ---------------------------------------------------------En esta presentacin desarrollamos paso a paso el cdigo en lenguaje XFL para disear Sistemas Fuzzy. ------------------------------------------------------------

El estudiante debe conocer el caso Cruzar calle mostrado en una presentacin previa

AUTO

AUTO

velocidad

distanciaAUTO

velocidad

distanciaAUTO

velocidad

distanciaAUTO

velocidad

distanciaAUTO

velocidad?

velocidad

Velocidad del autoLENTO NORMAL RAPIDO 1,0

0,8

0,6

0,4

0,2

10

20

30

40

50

60

Lenguaje XFL para Velocidad del autoEn lenguaje XFL primero se crea el TIPO con los trminos lingusticos y luego se crea la variable de entrada

type TvaPalabra reservada (tipo) Denominacin del tipo de variable (Tipo variable auto)

Lenguaje XFL para Velocidad del autoEn lenguaje XFL primero se crea el TIPO con los trminos lingusticos y luego se crea la variable de entrada

type Tva [0.0, 60.0;Valor mnimo

61]Cardinalidad: Nmero de valores enteros de la variable

Valor mximo

Lenguaje XFL para Velocidad del autoEn lenguaje XFL primero se crea el TIPO con los trminos lingusticos 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);Trmino lingustico

Funcin

Lenguaje XFL para Velocidad del autoEn lenguaje XFL primero se crea el TIPO con los trminos lingusticos 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 TRMINOS LINGUSTICOS

Lenguaje XFL para Velocidad del autoEn lenguaje XFL primero se crea el TIPO con los trminos lingusticos 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 : ) { }Palabra reservada (definir sistema fuzzy) Definimos la variable de entrada va (velocidad del auto de tipo Tva)

Distancia del autoCERCA LEJOS MUY LEJOS 1,0

0,8

0,6

0,4

0,2

20

30

40

50

60

70

80

100

Lenguaje XFL para Distancia del autotype 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 : ) { }

Velocidad del peatnMUY LENTO 1,0 CAMINAR LENTO TROTAR CORRER CORRER MUCHO

0,8

0,6

0,4

0,2

1

2

3

4

5

6

Lenguaje XFL para Distancia del peatntype 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 peatn)

BASE DE REGLASVELOCIDAD AUTO LENTO (0-30) LENTO (0-30) LENTO (0-30) NORMAL (10-60) NORMAL (10-60) NORMAL (10-60) RAPIDO (40-mas) RAPIDO (40-mas) RAPIDO (40-mas) DISTANCIA AUTO CERCA (0-30) LEJOS (20-80) MUY LEJOS (70-mas) CERCA (0-30) LEJOS (20-80) MUY LEJOS (70-mas) CERCA (0-30) LEJOS (20-80) MUY LEJOS (70-mas) VELOCIDAD PEATON CAMINAR (2-4) LENTO (1-3) MUY LENTO (0-2) CORRER (4-6) TROTAR (3-5) CAMINAR (2-4) CORRER MUCHO (5-mas) CORRER (4-6) TROTAR (3-5)

BASE DE REGLASVELOCIDAD AUTO DISTANCIA AUTO VELOCIDAD PEATON

(va)LENTO (0-30)

(da)CERCA (0-30)

(vp)CAMINAR (2-4)

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

Lenguaje XFL para la Base de reglasrulebase baseNombre de la base de reglas

Palabra reservada para declarar base de reglas

Lenguaje XFL para la Base de reglasrulebase base (Tva va, Tda da : Tvp vp)

Declaracin de Variables de entrada

Declaracin de variable de salida

Lenguaje XFL para la Base de reglasrulebase base (Tva va, Tda da : Tvp vp) using oper {

Operradores definidos

Lenguaje XFL para la Base de reglasrulebase 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); }

Declaracin de reglas

Definicin de la base en el sistema

Al cdigo mostrado agregamos el que corresponde a los operadores difusos que son utilizados en nuestro caso operatorset oper { and xfl.min(); defuz xfl.CenterOfArea(); }

Unimos todo el cdigo en orden: Operadores Tipos Reglas Sistema Finalmente lo copiamos al ambiente Xfuzzy

Ejecutar el programa Xfuzzy

Creando el sistema fuzzy Secuencia de acciones: File New Sistem

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

Diseamos el sistema fuzzy Secuencia de acciones: Design Edit System

Secuencia de acciones: File Edit XFL3 file

Digitamos los operadores fuzzy: operatorset oper { and xfl.min(); defuz xfl.CenterOfArea(); }

Guardamos el archivo OK Verificamos los cambios

Regresamos al editor del sistema y escribimos el resto de cdigo para los tipos, variables y base de reglas del sistema que tratamos en las diapositivas anteriores

Guardamos el archivo OK Verificamos los cambios (Verificar en la plantalla principal del programa la existencia de errores)

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

Monitoreamos el Sistema creadoSecuencia de acciones Verification Monitorization

Generando cdigo en lenguaje javaSecuencia de acciones Synthesis to Java

MUCHAS GRACIAS