Sunteți pe pagina 1din 67

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
distancia

AUTO
velocidad
distancia

AUTO
velocidad
distancia

AUTO
velocidad
distancia velocidad?

AUTO
velocidad
Velocidad del auto
LENTO NORMAL RAPIDO

1,0

0,8

0,6

0,4

0,2

10 20 30 40 50 60
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 tipo
de variable
Palabra (Tipo variable auto)
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]

Cardinalidad:
Valor Número de
Valor máximo
mínimo valores enteros
de 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ístico
Funciò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
Palabra reservada de tipo Tva)
(definir sistema fuzzy)
Distancia del auto
CERCA 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
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
MUY LENTO CAMINAR CORRER CORRER
LENTO TROTAR MUCHO

1,0

0,8

0,6

0,4

0,2

1 2 3 4 5 6
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 REGLAS
VELOCIDAD DISTANCIA VELOCIDAD
AUTO AUTO 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 REGLAS
VELOCIDAD DISTANCIA VELOCIDAD
AUTO AUTO PEATON
(va) (da) (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 reservada Nombre de la


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

Declaración de Declaración de
Variables de entrada variable 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; Declaración de
reglas
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); Definición de la base
en 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:
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
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 el
Sistema creado
Secuencia de acciones

Verification
Monitorization
Generando código
en lenguaje java
Secuencia de acciones

Synthesis
to Java
MUCHAS GRACIAS

S-ar putea să vă placă și