Fundación Universitaria Konrad Lorenz-Programa de Ingeniería de Sistemas Felipe Forero Lozano

FUNDACIÓN UNIVERSITARIA KONRAD LORENZ 1 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:

velocidad vehículos

distancia vehículos

SISTEMA DE INFERENCIA DIFUSA

velocidad de paso

ELABORE UN MODELO DE LÓGICA DIFUSA, CON BASE EN SU EXPERIENCIA, PARA ESTE PROBLEMA.

REGLAS DIFUSAS

velocidad vehículos FUSIFICADOR distancia vehículos 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

FUNDACIÓN UNIVERSITARIA KONRAD LORENZ PROGRAMA DE INGENIERÍA DE SISTEMAS Sistemas Basados en el Conocimiento I
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í:
1,2 0; 1 1 10; 1 30; 1 40; 1 60; 1

0,8 Lento 0,6 Normal Rápido 0,4

0,2 10; 0 0 0 10 20 30 40 50 60 30; 0 40; 0 60; 0

La distancia a la que viene al automóvil se clasifico de la siguiente manera:
1,2 0; 1 1 50; 1 100; 1

0,8 Cerca 0,6 Lejos Muy Lejos 0,4

0,2 20; 0 0 0 10 20 30 40 50 60 70 80 90 100 30; 0 70; 0 80; 0

La salida, que es la velocidad de paso, esta dividida en:
1,2 0; 1 1 1; 1 2; 1 3; 1 4; 1 5; 1 6; 1

0,8

Muy Lento Lento Caminar Trotar Correr Correr Mucho

0,6

0,4

0,2 1; 0 0 0 1 2 3 4 5 6 2; 0 3; 0 4; 0 5; 0 6; 0

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
1,2 0; 1 1 10; 1 25; 1 30; 1 40; 1 60; 1

0,8 25; 0,75 0,6 Lento Normal Rápido Vel = 25 0,4 25; 0,25 0,2 10; 0 0 0 10 20 30; 0 25; 0 30 40; 0 40 50 60; 0 60

Distancia
1,2 0; 1 1 0,8 Cerca 0,6 Lejos Muy Lejos Dist = 22 0,4 22; 0,26666 0,2 20; 0 0 0 10 20 22; 0,06666 22; 0 30; 0 30 40 50 60 70; 0 70 80; 0 80 90 100 22; 1 50; 1 100; 1

Al evaluar estos valores, se activan las siguientes reglas de nuestro sistema: 1. Velocidad = 'Normal' y Distancia = 'Cerca', entonces Velocidad de Paso = 'Correr'.

Velocidad de Paso
1,2 0; 1 1 1; 1 1; 1 2; 1 3; 1 4; 1 5; 1 6; 1 Muy Lento 0,8 Lento Caminar Trotar Correr Correr Mucho 0,4 4,26666; 0,26666 0,2 1; 0 0 0 1 2 3 4 2; 0 3; 0 4; 0 4; 0 5 5; 0 6; 0 6 Regla 5,73334; 0,26666

0,6

2. Velocidad = 'Normal' y Distancia = 'Lejos', entonces Velocidad de Paso = 'Trotar'.
Velocidad de Paso
1,2 0; 1 1 1; 1 1; 1 2; 1 3; 1 4; 1 5; 1 6; 1 Muy Lento 0,8 Lento Caminar 0,6 Trotar Correr Correr Mucho 0,4 Serie7 Regla 0,2 1; 0 0 0 1 2 3 2; 0 3,06666; 0,06666 3; 0 4 5 4; 0 4,93334; 0,06666 5; 0 6 6; 0

3. Velocidad = 'Lento' y Distancia = 'Lejos', entonces Velocidad de Paso = 'Lento'.
Velocidad de Paso
1,2 0; 1 1 1; 1 1; 1 2; 1 3; 1 4; 1 5; 1 6; 1 Muy Lento 0,8 Lento Caminar 0,6 Trotar Correr Correr Mucho 0,4 Serie7 Regla 0,2 1,06666; 0,06666 1; 0 0 0 1 1; 0 2 3 2,93334; 0,06666 2; 0 3; 0 4 5 6 4; 0 6; 0

4. Velocidad = 'Lento' y Distancia = 'Cerca', entonces Velocidad de Paso = 'Caminar'.
Velocidad de Paso
1,2 0; 1 1 1; 1 1; 1 2; 1 3; 1 4; 1 5; 1 6; 1 Muy Lento Lento Caminar Trotar Correr Correr Mucho 0,4 2,25; 0,25 0,2 1; 0 0 0 1 2 2; 0 2; 0 3 4 4; 0 4; 0 5 6 6; 0 3,75; 0,25 Regla

0,8

0,6

Al unir las áreas de las reglas que se activan, nos quedaría:
Velocidad de Paso
1,2 0; 1 1 1; 1 4; 1 6; 1 Muy Lento Lento Caminar 0,6 Trotar Correr 0,4 2,25; 0,25 0,2 1,06666; 0,066666 0 0 2,06666; 0,06666 1; 0 1 2 3,933334; 0,066666 4,066666; 0,066666 3 4 5 6 6; 0 3,75; 0,25 4,26666; 0,266666 Correr Mucho Regla 5,733334; 0,266666

0,8

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 figura 2 figura 3 figura 4 figura 5 figura 6 figura 7 figura 8 figura 9 figura 10 1,0444444 1,53333265 2,0444434 2,16666567 2,989999 3,89666567 4,00222117 4,15777523 4,9866635 5,90444123

Centroide de toda la figura = 3.8598
Velocidad de Paso
1,2 0; 1 1 1; 1 4; 1 6; 1 Muy Lento 0,8 Lento Caminar 0,6 3,8598; 0,5 0,4 2,25; 0,25 0,2 1,06666; 0,066666 0 0 1; 0 1 2,06666; 0,06666 3,8598; 0 3,933334; 0,0666664 4,066666; 0,066666 3 5 6; 0 6 3,75; 0,25 4,26666; 0,266666 Trotar Correr Correr Mucho Regla 5,733334; 0,266666Centroide

2

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.