guia_xfl para sistemas fuzzy

Post on 19-Jun-2015

1.087 Views

Category:

Documents

2 Downloads

Preview:

Click to see full reader

DESCRIPTION

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

TRANSCRIPT

LOGICA FUZZY

CASO: CRUZAR UNA CALLE

SOTWARE: Xfuzzy 3.0

Descripción del caso: Cruzar una calle

Objetivo: Un peatón debe decidir de que manera

cruza una calle.

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.

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

AUTO

AUTO

velocidad

AUTO

distancia

velocidad

AUTO

distancia

velocidad

AUTO

distancia

velocidad

AUTO

distancia

velocidad

velocidad?

Velocidad del auto

0,2

0,4

0,6

0,8

1,0

10 20 30 40 50 60

LENTOLENTOLENTO NORMAL RAPIDO

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)

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

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

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

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)

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

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 : ) {

}

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

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)

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)

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

Lenguaje XFL para la Base de reglas

rulebase base

Palabra reservadapara declarar

base de reglas

Nombre de la base de reglas

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

Lenguaje XFL para la Base de reglas

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

Operradores definidos

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

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

Unimos todo el código en orden:OperadoresTipos 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

Diseñamos 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 código 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 elSistema creado

Secuencia de acciones

VerificationMonitorization

Generando códigoen lenguaje java

Secuencia de acciones

Synthesisto Java

MUCHAS GRACIAS

top related