Lógica Difusa – Fuzzy Logic

El post es un poco duro pero si leéis todo el artículo seguro que aprendéis cosas nuevas.

Hasta el siglo XX la lógica clásica se trabajaba con dos valores: Verdadero (1) o Falso (0). Pero durante el último siglo se comenzaron a crear nuevas lógicas que incorporaban más valores de certeza, por ejemplo la lógica de Lukasiewicz incorpora un nuevo valor, el de Medio Verdadero o Medio Falso según se vea. De esta forma ya tenemos tres valores (Estas lógicas se suelen llamar trivalentes) : Verdadero (1), Medio Verdadero (0.5) o Falso (0). Lo primera primera idea que nos viene a la cabeza es la seguir creando nuevos valores de verdad como vemos en la imagen donde ya tenemos 5 valores de verdad. Por ejemplo si una cosa sabemos casi seguro que es verdadera le asignaríamos el valor de verdad 0.75.

Si extendemos la idea a infinitos valores entre el 0 y el 1 hemos descubierto la Lógica Difusa. ¿Y para que coño sirve esta paranoia mental? Eso mismo pensaba la comunidad científica a mediados del siglo pasado, nadie apostaba un duro por la la Lógica Difursa. Pero llegaron los japoneses (Años 70) y le dieron utilidades prácticas que se usan hoy en día en todo el mundo. La primera aplicación práctica que le dieron fue la de frenar electrónicamente y con suavidad el Shinkansen (Tren bala) japonés.

Para frenar un coche normalmente vamos soltando el acelerador suavemente mientras frenamos suavemente calculando nosotros intuitivamente los que tardaremos en frenar etc, pero no solemos apretar el freno a fondo para frenar. Para hacer un programa que frenara un coche o un tren de forma automática lo primero que podríamos hacer sería: if(quieroParar) frenar(); . Esto haría que se frenara a lo bestia. Una mejora sería if(quieroParar & Velocidad_Alta) frenar_hasta_la_mitad(); else if(quieroParar & !VelocidadAlta) frenar_a_tope(). Si siguieramos introduciendo ifs hasta el infinito creando nuevos valores de Velocidad (Al igual que hacíamos al principio del artículo con los valores de Verdadero,MedioVerdadero, Falso etc) conseguiríamos un sistema fuzzy pero sería una chapuza. El ejemplo anterior es simplemente para que veais que frenar suavemente un tren de forma programada no es tan sencillo como podamos pensar a primera vista.

Veamos como hay que proceder para implementar un buen sistema fuzzy. Tener en cuenta que a partir de ahora trabajamos con números reales, es decir, entre el 100 y el 75 hay más valores, etc…


El eje vertical indica el valor de verdad de cada velocidad. El eje horizontal la velocidad.

En vez de explicar este esquema detenidamente, lo vamos a ver con un ejemplo práctico. Imaginaros que el tren viaja a 77km/h, operaríamos de la siguiente forma:

Buscamos en el eje horizontal la velocidad a la que vamos (77) y trazamos una vertical marcando las intersecciones con los triángulos. A partir de las intersecciones tomamos su valor de verdad mirando el eje vertical. En este caso tenemos dos intersecciones, la primera intersecta con el triángulo de Velocidad Media a una altura de 0.20 (Lo vemos en el eje vertical), la segunda intersección corta con el triángulo de Velocidad Alta a una altura de 0.45. Por lo tanto la consideración del sistema es que si vamos a 77 Km/h nuestra velocidad es 0.2 Media y 0.45 Alta. Es decir, hemos conseguido que el sistema tenga una estimación ‘difusa’ de la velocidad actual. Probad a sustituir otros valores de velocidad y veréis como lo que se obtiene tiene bastante sentido, si ponemos por ejemplo 98km/h saldrá un valor de 0.90 Alta etc.

Veis como hemos conseguido que el sistema pueda saber en cada momento una consideración sobre la velocidad que llevamos. A partir de los valores obtenidos se puede tomar ya una decisión sobre cuanto hay que pulsar el freno (Para explicar esto necesitaría unos cuantos posts ya que habría que crear otro esquema como el anterior para los valores del freno y combinarlo todo). Lo importante se que os quedéis con la idea de que al tener muchos valores entre Verdadero(Velocidad Alta) y Falso (Velocidad Lenta) podemos conseguir frenar de forma suave.

Si quisieramos tener un sistema más preciso (que frenara más suavemente) podríamos crear más triángulos que indicarna Velocidad Muy Alta, Velocidad Muy baja etc. Veamos un ejemplo para el diseño de un sistema de aire acondicionado. Con un aire acondicionado si queremos ahorrar energía y que los cambios de temperatura no sean muy bruscos se puede usar un sistema fuzzy para regular de forma automática su funcionamiento. Si programamos el aire acondicionado con if(temperatura>18) enfriar(); else calentar(); gastaremos mucha energía ya que estaremos continuamente pasando a más de 18 grados y después a menos de 18 grados, necesitamos un sistema fuzzy 😉 Veamos como sería el esquema fuzzy de un sistema de aire acondicionado:


Supongo que con este esquema ya habréis pillado la idea, o quizás os he liado más.

Finalmente os muestro algunas aplicaciones prácticas además de las ya comentadas. Entre paréntesis pongo una pregunta para que veáis el porqué se usa un sistema fuzzy en estros aparatos.

Hoy en día los sistemas de lógica difusa están en las camaras de fotos para calcular si llega mucha o poca luz al diafragma (¿Poca, bastante, mucha luz?), en robots para que se muevan con suavidad (¿Velocidad del brazo Alta, Baja?), en sistemas de piloto automático y ontrol de aviones (¿Altura del avión Baja, Alta, Muy Alta?) o por ejemplo el sistema que acaba de sacar Toyota para aparcar automáticamente el coche (¿Cerca, Lejos, Muy Cerca, Muy Lejos del bordillo?.

Después de este artículo tan duro si algo no está bien explicado, hay alguna inconsistencia o no os habéis enterado de nada avisad.

44 respuestas a «Lógica Difusa – Fuzzy Logic»

  1. Muy buena la introducción… para los que quieran saber más existe un libro de Bart Kosko -todo un experto en la materia- de lo más recomendable y de nivel bastante asequible: «Pensamiento borroso. La nueva ciencia de la lógica borrosa» (Ed. Crítica, 1995; ISBN 84-7423-698-3. La página de Bart Kosko: http://sipi.usc.edu/~kosko/

  2. Todo un clásico el libro de Kosko y sin meterse en tecnicismos. Pone ejemplo de esquema difuso como los que hemos visto para la Política, clasificando los las tendencias políticas según lo a la ‘izquierda’ o a la ‘derecha’ que estén. De esta forma hace que el libro sea ameno e intuitivo.

  3. No ha estado mal el artículo, aunque me he quedado algo difuso… Tendré que profundizar más en el tema, pero como introducción lo has dejado bastante claro.

  4. La leshe … te pensaba discutir lo del tren, con un bucle que fuera reduciendo la velocidad, o un thread incluso … los otros ejemplos hacen que me la envaine … claro claro no me ha quedado, pq no se cómo se hacen esos montes (instinto) ni queda muy claro para qué me sirve tener dos valores (dos opiniones) sobre si mi velocidad des alta o no … a parte de para crear confusión.

    gracias por el artículo, me pensaré comprar ese libro …

  5. Vaya deja vú! Tal como leía tu artículo me acordaba del verano pasado estudiando lógica matemática 🙂 Desde luego, muchísimo mejor tu introducción que el dichoso libro de la UNED.

    Por cierto, no leerías pcmanía hace un montón de años, verdad? publicaban una sección «torre de babel» con pajas mentales respecto a la programación. Uno de esos artículos iba sobre el pensamiento borroso… lo planteaban como una base para que la ia pudiera dar unas respuestas no tan discretas, sino más… pues eso… difusas 🙂

  6. Si que leía la sección torre de babel 🙂 pero no recuerdo el artículo de lógica fuzzy. En cuanto a las aplicaciones son muchas más de las que he contado, por ejemplo para videojuegos. Si estamos programando un enemigo que tenga que atacar al jugador podemos montar un sistema fuzzy para decidir si atacar a lo bestia, atacar un poco, replegarnos etc.

  7. Me encantó el tema de la lógica difusa. De hecho hice un trabajo sobre ella en la universidad, basándome principalmente en el libro de Bart Kosko.

    Si a alguien le interesa que me avise.

  8. bueno, ahora se como trabaja mi lavarropas fuzzi logic marca XXXX
    en este sitio he aprendido unos cuantos conceptos de una cierta complejidad (bastante) con pocas y claras palabras. no probaste venderlo impreso a los estudiantes?

  9. Me pareció muy interesante este articulo, y me gustaria me enviaras otro ejemplo, asi mismo como el que se encuentra en la parte superior, detallando cada una de las variables de entrada y de salida con sus respectivos gráficos…

    GRACIAS
    Y SIGUE SUPERANDOTE

    CHAO

    PD: entre más pronto me envies mejor GRACIAS

  10. por favor quiero saber si bart kosko fue influenciado por la escuela de frankfurt o algun profesor de el y donde puedo leer sobre eso o alguna referencia

  11. Quisiera saber como aplicar lo logica fuzzy en problemas de contaminación acustica, quisiera usar la informacion de las encuesta par relacionarlas con las mediciones de ruido producido por transportes.
    Gracias
    Luis Yoza

  12. Y ahora ¿ cómo conseguimos que los de Renfe y Metro de Madrid empiecen a implantar esos sistemas de frenado ? porque tanto los trenes de cercanías de Renfe como los del Metro arrancan y paran a lo bruto.

  13. Felicitaciiones. En especial por el lenguage tan floclórico y entendible por quienes no somos técnicos ni científicos. En buena hora.
    ¿Con qué palabra española podríais homologar fuzzy?.
    ¿Sabéis que raíz tiene la palabra y que significado etimológico tiene?
    Si lo sabéis. madadme una dirección donde ubicar su etimilogía.
    Eternamente agradecido
    fraternalmente
    Claudio antonio

  14. Felicitaciones.
    En especial por el lenguage tan folclórico y entendible por quienes no somos técnicos ni científicos. En buena hora.
    ¿Con qué palabra española podríais homologar fuzzy?.
    ¿Sabéis que raíz tiene la palabra y que significado etimológico tiene?
    Si no lo sabéis, madadme una dirección donde ubicar su etimilogía.
    Eternamente agradecido
    fraternalmente
    Claudio antonio

  15. MUCHA GRACIAS POR HABER ESCRITO CON UN LENGUAJE SENCILLO, DESPUES DE HABER LEIDO OTROS ARTICULOS SOBRE ESTE TEMA, MIS PENSAMIENTOS SE QUEDARON DIFUSOS, PERO,LUEGO DE LEER ESTE TRABAJO TUYO LOS HE PODIDO ENCONTAR. ESTOY ELABORANDO MI TESIS PARA OBTENER EL TITULO DE CONTADORA, ME GUSTARIA SABER COMO PUEDO UTILIZAR LA LOGICA DIFUSA EN LA VALORIZACION DE INTANGIBLES, ME DESPIDO AGRADECIENDOTE ANTICIPADAMENTE TU RESPUESTA Y TU AYUDA.

  16. Es un buen artículo de lógica difusa, aunque ya tengo conceptos avanzados de ésta, me llamó la atención por su simplicidad y es un buen mapa mental para quienes apenas comienzan en este largo camino. Mucha suerte apra todos.

  17. Buen artìculo.
    Soy un graduado de filosofìa con especialidad en lògica. La lògica difusa casi no se enseña en las facultades de filosofìa a nivel licenciatura y quisiera añadirlo a la matrícula de lògica iV. Para ello necesitaría que me dieras una bibliografìa (de preferencia en español para que mis alumnos no se quiebren la cabeza)del interesante tema de la Fuzzy logic.
    Recibe un saludo desde Mèxico.
    Mi correo es : israelcanseco@hotmail.com
    Gracias

  18. Lo primero que se me pasó por la cabeza al leer
    Verdadero (1), Medio Verdadero (0.5) o Falso (0)
    es que es lo mismo que la probabilidad.

  19. Es muy distinto de la probabilidad aunque los dos tomen valores entre 0 y 1.

    En el ejemplo de la velocidad, el tren va a velocidad «0.2 Media y 0.45 Alta», es decir se admite que el tren va *a la vez* a velocidad media y a velocidad alta (en cierto grado).

    Según la lógica clásica, el tren no puede ir a velocidad media *y* a velocidad alta a la vez. Como la probabilidad se basa en la lógica clásica, esa probabilidad es 0 (mientras que el «valor de verdad» en lógica difusa sería 0.2)

  20. Estimados:

    Les escribo desde Santiago de Chile, actualmente trabajo dentro de un laboratorio de electrónica y curso un seminario en la universidad donde egrese como Ing. electrónico, estoy investigando acerca de la lógica FUZZY, tengo algunas dudas acerca del desarrollo de un tipo de ejercicios.

    Quisiera solicitarles poder enviar el ejercicio para una orientación.

    De antemano muchas gracias.

    Eric Vargas F

  21. Me gustaría que me pudieras explicar como funcionaría el freno en el ejemplo que manejas en el artículo. Dices “Para explicar esto necesitaría unos cuantos posts ya que habría que crear otro esquema como el anterior para los valores del freno y combinarlo todo”, me gustaría la explicación del funcionamiento del freno.
    De antemano muchas gracias por tu ayuda.
    Saludos cordiales,
    Pedro Damián
    damian@ucol.mx

  22. amigo gracias buen aporte soy un joven de recien 17! años y estoy en un proyecto de la universidad donde pueda aplicar la logica difusa o q presente un proyecto ya hecho sobre ella ejemplo: la logica aplicada en aire acondicionado , logica para lavadoras automaticas ,etc… solo kiero tener sobre como funcionan unas imagenes y de ahi pes sigo solo les agradezco por todas los aportes q han dado son muy buenos! XD por favor responder!

  23. Hola buenas tardes

    Gracias por estos oportes que ayudan mucho a los primeros pasos en este cuneto.

    por favor si te queda facil me envias alguna pagina en español.

    para personas como yo que empezamos en el cuento de Inteligencia artificial

    Gracias
    John A Quiceno V
    Estudiante grupo de investigacion Inteligencia artificial
    Universidad de Antioquia
    Medellin Colombia

  24. Muy bueno el post, estoy empezando un motor de IA y nos ha tocado la parte de logica difusa. Gracias por aclararme las ideas.

  25. Acabo de escribir un artículo sobre lógica borrosa, si alguien lo quiere, que se ponga en cntacto conmigo, no es gran cosa, no es de mucho nivel, solo es un pequeño resumen del paper de Zadeh y un resumen de sus aplicaciones hoy día.

  26. muy bueno el aporte despeja muchas dudas y con los ejemplos deja muy claro el concepto y aplicaciones de fuzzi logic… muchas gracias

  27. ¡Excelente articulo con un buen aporte a los que estamos aplicando la logica fuzzy , pero seria bueno hacer las aplicaciones hacia el marketing

Los comentarios están cerrados.