Post on 06-Jun-2015
description
Fundación Universitaria Konrad Lorenz-Programa de Ingeniería de Sistemas Felipe Forero Lozano
FUNDACIÓN UNIVERSITARIA KONRAD LORENZ1
FACULTAD DE MATEMÁTICA E INGENIERÍAS PROGRAMA DE INGENIERÍA DE SISTEMAS
SISTEMAS BASADOS EN EL CONOCIMIENTO I Prof. Pervys Rengifo Rengifo(pervys2000@yahoo.es)
Realizado por: Felipe Forero Lozano
TALLER EN CLASE SOBRE SISTEMA DE INFERENCIA DIFUSA TIPO MAMDANI
SE DESEA CONSTRUIR UN SISTEMAS DE LÓGICA DIFUSA PARA ATRAVESAR UNA CALLE, CON BASE EN EL SIGUIENTE MODELO CONCEPTUAL:
SISTEMA DE INFERENCIA
DIFUSA
velocidad vehículos
distancia vehículos
velocidad de paso
ELABORE UN MODELO DE LÓGICA DIFUSA, CON BASE EN SU EXPERIENCIA, PARA ESTE PROBLEMA.
FUSIFICADOR
velocidad vehículos
distancia vehículos
REGLAS DIFUSAS
SISTEMA DE INFERENCIA
DEFUSIFICADOR VELOCIDAD DE PASO
PASO 1: FUSIFIQUE LAS VARIABLES DE ENTRADA Y DE SALIDA PASO 2: CREE EL CONJUNTO DE REGLAS PASO 3: SIMULE PARA VALORES DE PRUEBA EL VALOR DE LA SALIDA.
1 Dirección electrónica: http://www.fukl.edu. Ubicada en la cra 9ª bis No. 62-43 Bogotá-Colombia
Felipe Forero L 534008 SISTEMA DE LOGICA DIFUSA DETERMINAR LA VELOCIDAD DE PASO DE UNA CALLE Procedimiento manual Variables de Entrada: Velocidad del automóvil. Distancia a la que se encuentra el automóvil. Salida: Velocidad de Paso. La velocidad del automóvil, la clasificamos en tres categorías así:
60; 110; 10; 1
30; 0 60; 010; 0
40; 130; 1
40; 00
0,2
0,4
0,6
0,8
1
1,2
0 10 20 30 40 50 60
LentoNormalRápido
La distancia a la que viene al automóvil se clasifico de la siguiente manera:
100; 1
30; 0
0; 1
20; 0 80; 0
50; 1
70; 00
0,2
0,4
0,6
0,8
1
1,2
0 10 20 30 40 50 60 70 80 90 100
CercaLejosMuy Lejos
La salida, que es la velocidad de paso, esta dividida en:
3; 1 4; 1 5; 1
6; 0
6; 11; 10; 1
1; 0 3; 0
2; 1
2; 0 4; 0 5; 00
0,2
0,4
0,6
0,8
1
1,2
0 1 2 3 4 5 6
Muy LentoLentoCaminarTrotarCorrerCorrer Mucho
Las reglas del sistema, determinadas por el experto, son: • Velocidad = 'Lento' y Distancia = 'Cerca', entonces Velocidad de Paso =
'Caminar'. • Velocidad = 'Lento' y Distancia = 'Lejos', entonces Velocidad de Paso =
'Lento'. • Velocidad = 'Lento' y Distancia = 'Muy Lejos', entonces Velocidad de Paso =
'Muy Lento'. • Velocidad = 'Normal' y Distancia = 'Cerca', entonces Velocidad de Paso =
'Correr'. • Velocidad = 'Normal' y Distancia = 'Lejos', entonces Velocidad de Paso =
'Trotar'. • Velocidad = 'Normal' y Distancia = 'Muy Lejos', entonces Velocidad de Paso
= 'Caminar'. • Velocidad = 'Rápido' y Distancia = 'Cerca', entonces Velocidad de Paso =
'Correr Mucho'. • Velocidad = 'Rápido' y Distancia = 'Lejos', entonces Velocidad de Paso =
'Correr'. • Velocidad = 'Rápido' y Distancia = 'Muy Lejos', entonces Velocidad de Paso
= 'Trotar'. Ingresamos entonces dos datos de prueba para ver que ocurre en un caso específico. Decimos entonces que la velocidad es 25 Km/h y la distancia son 22 metros. Las gráficas se verían así:
Velocidad
60; 1
25; 0
25; 0,25
25; 0,75
25; 110; 10; 1
30; 0 60; 010; 0
40; 130; 1
40; 00
0,2
0,4
0,6
0,8
1
1,2
0 10 20 30 40 50 60
LentoNormalRápidoVel = 25
Distancia
100; 1
22; 0,26666
22; 1
30; 0
0; 1
20; 0 80; 0
50; 1
70; 0
22; 022; 0,06666
0
0,2
0,4
0,6
0,8
1
1,2
0 10 20 30 40 50 60 70 80 90 100
CercaLejosMuy LejosDist = 22
Al evaluar estos valores, se activan las siguientes reglas de nuestro sistema:
1. Velocidad = 'Normal' y Distancia = 'Cerca', entonces Velocidad de Paso = 'Correr'.
2. Velocidad = 'Normal' y Distancia = 'Lejos', entonces Velocidad de Paso = 'Trotar'.
Velocidad de Paso
3; 1 4; 1 5; 1
6; 0
6; 11; 1
3; 0
0; 1 1; 1 2; 1
1; 0 2; 04; 0
5; 0
4,93334; 0,066663,06666; 0,06666
0
0,2
0,4
0,6
0,8
1
1,2
0 1 2 3 4 5 6
Muy LentoLentoCaminarTrotarCorrerCorrer MuchoSerie7Regla
Velocidad de Paso
3; 1 4; 1 5; 1
6; 0
6; 11; 1
4; 0
0; 1 1; 1 2; 1
3; 01; 0 2; 0 4; 0 5; 06; 0
5,73334; 0,26666 4,26666; 0,26666
0
0,2
0,4
0,6
0,8
1
1,2
0 1 2 3 4 5 6
Muy LentoLentoCaminarTrotar CorrerCorrer Mucho
Regla
3. Velocidad = 'Lento' y Distancia = 'Lejos', entonces Velocidad de Paso = 'Lento'.
Velocidad de Paso
3; 1 4; 1 5; 1
6; 0
6; 11; 1
1; 0
0; 1 1; 1 2; 1
1; 0 2; 04; 0
3; 0
2,93334; 0,066661,06666; 0,06666
0
0,2
0,4
0,6
0,8
1
1,2
0 1 2 3 4 5 6
Muy LentoLentoCaminarTrotarCorrerCorrer MuchoSerie7Regla
4. Velocidad = 'Lento' y Distancia = 'Cerca', entonces Velocidad de Paso = 'Caminar'.
Velocidad de Paso
3; 1 4; 1 5; 1
6; 0
6; 11; 1
2; 0
0; 1 1; 1 2; 1
1; 0 2; 04; 0
4; 0
3,75; 0,252,25; 0,25
0
0,2
0,4
0,6
0,8
1
1,2
0 1 2 3 4 5 6
Muy LentoLentoCaminarTrotar CorrerCorrer Mucho
Regla
Al unir las áreas de las reglas que se activan, nos quedaría:
Velocidad de Paso
4; 1 6; 1
6; 0
0; 1 1; 1
5,733334; 0,2666664,26666; 0,266666
3,933334; 0,066666 4,066666; 0,066666
3,75; 0,25
1; 0
2,25; 0,25
2,06666; 0,06666
1,06666; 0,066666
0
0,2
0,4
0,6
0,8
1
1,2
0 1 2 3 4 5 6
Muy LentoLentoCaminarTrotarCorrerCorrer MuchoRegla
Se debe hallar el centroide de esta figura, para lo cual la dividimos en figuras conocidas para poder sacar el centroide de cada una y luego calcular el de todas como una sola figura.
Centroide
figura 1 1,0444444
figura 2 1,53333265
figura 3 2,0444434
figura 4 2,16666567
figura 5 2,989999
figura 6 3,89666567
figura 7 4,00222117
figura 8 4,15777523
figura 9 4,9866635
figura 10 5,90444123
Centroide de toda la figura = 3.8598
Velocidad de Paso
4; 1 6; 1
6; 03,8598; 0
3,8598; 0,5
0; 1 1; 1
5,733334; 0,2666664,26666; 0,266666
3,933334; 0,066666 4,066666; 0,066666
3,75; 0,25
1; 0
2,25; 0,25
2,06666; 0,066661,06666; 0,066666
0
0,2
0,4
0,6
0,8
1
1,2
0 1 2 3 4 5 6
Muy LentoLentoCaminarTrotarCorrerCorrer MuchoReglaCentroide
Lo que quiere decir, que la acción que se realiza en este caso, con velocidad 25 Km/h, y 22 metros de distancia, es Caminar.
Procedimiento en MatLab 7
Fuzzy Logic Toolbox
Estando en Matlab 7, ejecutamos el comando fuzzy en la consola principal
Nos abrirá la ventana del toolbox de lógica difusa:
Para este caso, tenemos dos entradas y una salida, para hacer esto en el toolbox, en el menú de edición encontramos un ítem para agregar una variable de entrada o de salida. En nuestro caso es de entrada
En esta ventana podemos escoger las diferentes operaciones que se van a realizar con la implicación, la conjunción, la disyunción, la agregación, y el método de “Defuzzyfication”, que para nuestro caso la configuración es como se muestra en la figura. Al hacer doble click en cada una de las variables, abrimos la ventana de propiedades de la entrada o la salida, en donde se puede personalizar las variables y sus valores: Podemos manipular el rango, lo que se va a ver en la grafica, el número de valores que tiene la variable, y la forma de la función que describe estos valores: En este caso, los valores de las variables de las entradas toman forma de trapecio, entonces lo seleccionamos en la parte derecha del cuadro, debajo del nombre de la variable, y en el siguiente campo damos los valores de donde se encuentran ubicados los vértices de la función en el eje x, como se muestra en la figura.
De igual manera, personalizamos la otra variable de entrada y la de salida: Para agregar más valores a una variable, entramos en la siguiente opción del menú:
Y seleccionamos el número de valores que queremos agregar: Finalmente la variable de salida quedaría:
Al tener las variables definidas, se puede seguir con la definición de las reglas del modelo, entrando por este ítem del menú editar: En donde podremos crear fácilmente las reglas:
Para ver como se comporta el modelo de lógica difusa en un caso especifico, debemos entrar en el menú View y entrar en el ítem Rules En esta parte podemos ver el caso que se desarrollo manualmente en el ejercicio que se desarrollo en este documento, y vemos las reglas que se activan por estos valores de una manera grafica, similar a la que observamos anteriormente.
En la parte inferior derecha, se ingresan los valores de las dos variables de entrada, para este caso son 25 y 22 correspondientes a la distancia y la velocidad respectivamente: De esta manera se puede modelar casos de lógica difusa por medio del Toolbox de lógica difusa que trae MatLab 7.