¿Qué es la lógica difusa?


Estoy trabajando con un par de algoritmos de IA en la escuela y encuentro que la gente usa las palabras Lógica Difusa para explicar cualquier situación que puedan resolver con un par de casos. Cuando vuelvo a los libros que acabo de leer acerca de cómo en lugar de un estado que va de Encendido a Apagado es una línea diagonal y algo puede estar en ambos estados, pero en diferentes "niveles".

He leído la entrada de Wikipedia y un par de tutoriales e incluso cosas programadas que " usa lógica difusa "(un detector de bordes y una rueda 1 robot autocontrolado) y todavía me parece muy confuso ir de la Teoría al Código... para ti, en la definición menos complicada, ¿qué es la lógica difusa?

Author: Charles Stewart, 2008-12-30

11 answers

La lógica difusa es una lógica donde la pertenencia a un estado es, esencialmente, un flotador con rango 0..1 en lugar de un 0 interno o 1. El kilometraje que se obtiene de él es que cosas como, por ejemplo, los cambios que se hacen en un sistema de control son algo naturalmente más afinado de lo que se obtendría con la lógica binaria ingenua.

Un ejemplo podría ser la lógica que reduce la actividad del sistema basada en conexiones TCP activas. Digamos que define" un poco demasiadas " conexiones TCP en su máquina como 1000 y "muchos demasiados" como 2000. En un momento dado, su sistema tiene un estado de "demasiadas conexiones TCP" de 0 (= 2000), que puede usar como coeficiente para aplicar cualquier mecanismo de limitación que tenga disponible. Esto es mucho más indulgente y sensible al comportamiento del sistema que la lógica binaria ingenua que solo sabe cómo determinar "demasiados", y acelerar completamente, o "no demasiados", y no acelerar en absoluto.

 36
Author: chaos,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-02-21 02:57:04

Me gustaría añadir a las respuestas (que han sido modificadas) que, una buena manera de visualizar la lógica difusa es la siguiente:

Tradicionalmente, con la lógica binaria se tendría un gráfico cuya función de pertenencia es verdadera o falsa, mientras que en un sistema de lógica difusa, la función de pertenencia no lo es.

1|
 |   /\
 |  /  \
 | /    \
0|/      \
 ------------
   a  b c   d

Supongamos por un segundo que la función es "likes peanuts"

a. kinda likes peanuts
b. really likes peanuts
c. kinda likes peanuts
d. doesn't like peanuts

La función en sí no tiene que ser triangular y a menudo no lo es (simplemente es más fácil con ascii arte).

Un sistema borroso probablemente tendrá muchos de estos, algunos incluso superpuestos (incluso opuestos) como así:

1|   A    B
 |   /\  /\      A = Likes Peanuts
 |  /  \/  \     B = Doesn't Like Peanuts
 | /   /\   \
0|/   /  \   \
 ------------
  a  b  c d

Así que ahora c es "a kind le gustan los cacahuetes, a kinda no le gustan los cacahuetes" y d es "realmente no le gustan los cacahuetes"

Y usted puede programar en consecuencia basado en esa información.

Espero que esto ayude a los estudiantes visuales.

 36
Author: Steven Evers,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-12-30 08:29:15

La mejor definición de lógica difusa es dada por su inventor Lotfi Zadeh :

"Lógica difusa significa representar problemas a las computadoras de una manera similar a la forma en que los humanos los resuelven y la esencia de la lógica difusa es que todo es una cuestión de grado."

El significado de resolver problemas con computadoras similares a la forma en que el ser humano resuelve puede explicarse fácilmente con un simple ejemplo de un juego de baloncesto; si un jugador quiere proteger a otro jugador en primer lugar, debe considerar cuán alto es y cómo son sus habilidades de juego. Simplemente si el jugador que quiere proteger es alto y juega muy lento en relación con él, entonces usará su instinto para determinar si debe proteger a ese jugador, ya que hay una incertidumbre para él. En este ejemplo, el punto importante es que las propiedades son relativas al jugador y hay un grado para la altura y la habilidad de juego para el jugador rival. La lógica difusa proporciona una forma determinista para este incierto situación.

Hay algunos pasos para procesar la lógica difusa (Figura-1). Estos pasos son; en primer lugar, la fuzzificación donde las entradas nítidas se convierten en entradas difusas en segundo lugar, estas entradas se procesan con reglas difusas para crear una salida difusa y, por último, la defuzzificación que resulta con el grado de resultado, ya que en la lógica difusa puede haber más de un resultado con diferentes grados.

image004

Figura 1 - Pasos Difusos del Proceso (David M. Bourg P. 192)

A ejemplificar los pasos del proceso borroso, la situación anterior del juego de baloncesto podría ser utilizado. Como se mencionó en el ejemplo, el jugador rival es alto con 1.87 metros, que es bastante alto en relación con nuestro jugador y puede driblar con 3 m/s, que es lento en relación con nuestro jugador. Además de estos datos se necesitan algunas reglas para considerar cuáles se llaman reglas borrosas tales como;

if player is short but not fast then guard,
if player is fast but not short then don’t guard
If player is tall then don’t guard
If player is average tall and average fast guard

image005

Figura 2-altura

image007

Figura 3-cómo rápido

De acuerdo con las reglas y los datos de entrada, una salida será creada por fuzzy system como; el grado para guard es 0.7, el grado para a veces guard es 0.4 y nunca guard es 0.2.

image009

Figura 4-conjuntos difusos de salida

En el último paso, defuzzication, se usa para crear una salida nítida que es un número que puede determinar la energía que debemos usar para proteger al jugador durante el juego. El centro de masa es un método común para crear la salida. En esta fase los pesos para calcular el punto medio es totalmente depende de la implementación. En esta aplicación se considera dar un alto peso a la guardia o no guardia pero bajo peso dado a veces guardia. (David M. Bourg, 2004)

image012

Figura 5-salida difusa (David M. Bourg P. 204)

  Output = [0.7 * (-10) + 0.4 * 1 + 0.2 * 10] / (0.7 + 0.4 + 0.2) ≈ -3.5

Como resultado la lógica difusa está utilizando bajo incertidumbre para tomar una decisión y para averiguar el grado de decisión. Problema de la lógica difusa es como el número de entradas aumentar el número de reglas aumentar exponencial.

Para más información y su posible aplicación en un juego escribí un pequeño artículo mira esto

 10
Author: hevi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-12-30 10:07:58

Para construir a partir de la respuesta del caos, una lógica formal no es más que un conjunto definido inductivamente que asigna oraciones a una valoración. Al menos, así es como un teórico modelo piensa de la lógica. En el caso de una lógica booleana sentencial:

 (basis clause) For all A, v(A) in {0,1}
 (iterative) For the following connectives,
   v(!A) = 1 - v(A)
   v(A & B) = min{v(A), v(B)}
   v(A | B) = max{v(A), v(B)}
 (closure) All sentences in a boolean sentential logic are evaluated per above.

Un cambio de lógica difusa se definiría inductivamente:

 (basis clause) For all A, v(A) between [0,1]
 (iterative) For the following connectives,
   v(!A) = 1 - v(A)
   v(A & B) = min{v(A), v(B)}
   v(A | B) = max{v(A), v(B)}
 (closure) All sentences in a fuzzy sentential logic are evaluated per above.

Observe que la única diferencia en la lógica subyacente es el permiso para evaluar una oración como que tiene el "valor de verdad" de 0.5. Una pregunta importante para un modelo de lógica difusa es la umbral que cuenta para la satisfacción de la verdad. Esto es preguntar: para una valoración v (A), para qué valor D es el caso de la v(A) > D significa que A está satisfecho.

Si realmente quieres saber más sobre lógicas no clásicas como la lógica difusa, recomendaría cualquiera Una introducción a la Lógica No Clásica: De Si a Si o Posibilidades y Paradoja

Poniendo mi sombrero codificador de nuevo en, yo sería cuidadoso con el uso de la lógica difusa en programación del mundo real, debido a la tendencia de una lógica difusa a ser indecidible. Tal vez es demasiada complejidad para poco beneficio. Por ejemplo, una lógica supervaluacional puede ayudar a un programa a modelar la vaguedad. O tal vez la probabilidad sería suficiente. En resumen, necesito estar convencido de que el modelo de dominio encaja con una lógica difusa.

 6
Author: Alan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-12-30 06:54:12

Tal vez un ejemplo aclare cuáles pueden ser los beneficios:

Digamos que quieres hacer un termostato y quieres que sea de 24 grados.


Así es como lo implementarías usando lógica booleana:

  • Regla1: calentar a plena potencia cuando hace más frío que 21 grados.
  • Regla2: enfriarse a plena potencia cuando es más de 27 grados.

Tal sistema solo de vez en cuando será de 24 grados, y será muy ineficiente.


Ahora, usando lógica difusa, sería algo como esto:

  • Regla 1: Por cada grado que esté más frío que 24 grados, suba el calentador una muesca (0 a 24).
  • Regla 2: Por cada grado que esté más caliente que 24 grados, suba el más frío una muesca (0 a 24).

Este sistema siempre estará en algún lugar alrededor de 24 grados, y solo una vez y solo de vez en cuando hará un pequeño ajuste. También será más eficiente energéticamente.

 4
Author: Wouter van Nifterick,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-12-30 09:18:25

Bueno, podrías leer las obras de Bart Kosko, uno de los 'padres fundadores'. 'Fuzzy Thinking: The New Science of Fuzzy Logic ' de 1994 es legible (y disponible de segunda mano bastante barato a través de Amazon). Aparentemente, tiene un nuevo libro ' Noise ' de 2006 que también es bastante accesible.

Básicamente, sin embargo (en mi paráfrasis - no haber leído el primero de esos libros desde hace varios años), la lógica difusa se trata de cómo lidiar con el mundo donde algo es quizás 10% fresco, 50% cálido y 10% caliente, donde se pueden tomar diferentes decisiones sobre el grado en que los diferentes estados son verdaderos (y no, no fue del todo un accidente que esos porcentajes no sumen hasta el 100%, aunque aceptaría la corrección si fuera necesario).

 3
Author: Jonathan Leffler,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-12-30 06:20:32

Una muy buena explicación, con la ayuda de Fuzzy Logic Washing Machines.

 3
Author: Adeel Ansari,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-12-30 07:25:53

Sé lo que quieres decir con que es difícil pasar del concepto al código. Estoy escribiendo un sistema de puntuación que mira los valores de sysinfo y / proc en sistemas Linux y viene con un número entre 0 y 10, 10 siendo el peor absoluto. Un ejemplo sencillo:

Tienes 3 promedios de carga (1, 5, 15 minutos) con (al menos) tres estados posibles, bueno, malo, malo. Expandiendo eso, podrías tener seis estados posibles por promedio, agregando 'a punto de' a los tres que acabo de señalar. Sin embargo, el resultado de las 18 posibilidades solo puede deducir 1 de la puntuación. Repita esto con swap consumido, memoria asignada (confirmada) de VM real y otras cosas .. y tienes un gran tazón de espaguetis condicional:)

Es tanto una definición como un arte, cómo implementar el proceso de toma de decisiones es siempre más interesante que el paradigma en sí .. mientras que en un mundo booleano, es bastante cortado y seco.

Sería muy fácil para mí decir si load1

Si puede enseñar a un programa a hacer lo que haría al evaluar algún conjunto de circunstancias y mantener el código legible, ha implementado un buen ejemplo de lógica difusa.

 2
Author: Tim Post,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-12-30 06:44:43

Fuzzy Logic es una metodología de resolución de problemas que se presta a la implementación en sistemas que van desde microcontroladores simples, pequeños e integrados hasta sistemas de control y adquisición de datos basados en estaciones de trabajo o PC multicanal grandes, en red. Se puede implementar en hardware, software o una combinación de ambos. La lógica difusa proporciona una forma sencilla de llegar a una conclusión definitiva basada en información de entrada vaga, ambigua, imprecisa, ruidosa o faltante. Enfoque de Lógica Difusa para los problemas de control imitan cómo una persona tomaría decisiones, solo que mucho más rápido.

La lógica difusa ha demostrado ser particularmente útil en sistemas expertos y otras aplicaciones de inteligencia artificial. También se utiliza en algunos correctores ortográficos para sugerir una lista de palabras probables para reemplazar una mal escrita.

Para obtener más información, simplemente echa un vistazo: http://en.wikipedia.org/wiki/Fuzzy_logic .

 1
Author: Badar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-07-04 20:27:40

La siguiente es una especie de respuesta empírica.

Una respuesta simple (posiblemente simplista) es que "lógica difusa" es cualquier lógica que devuelve valores distintos de verdadero / falso, o 1 / 0. Hay muchas variaciones en esto y tienden a ser altamente específicos de dominio.

Por ejemplo, en mi vida anterior hice motores de búsqueda que usaban "búsqueda de similitud de contenido" en lugar de la "búsqueda booleana"común. Nuestro sistema de similitud utiliza el Coeficiente de Coseno de vectores de atributos ponderados que representan la consulta y los documentos y los valores producidos en el rango 0..1. Los usuarios proporcionarían "retroalimentación de relevancia" que se utilizó para cambiar el vector de consulta en la dirección de los documentos deseables. Esto está algo relacionado con el entrenamiento realizado en ciertos sistemas de IA donde la lógica es "recompensada" o "castigada" por los resultados de las ejecuciones de prueba.

En este momento Netflix está llevando a cabo una competencia para encontrar un mejor algoritmo de sugerencias para su empresa. Ver http://www.netflixprize.com / . Efectivamente todos los algoritmos podrían caracterizarse como"lógica difusa"

 0
Author: Peter Rowell,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-12-30 06:37:43

La lógica difusa es un algoritmo de cálculo basado en la forma de pensar humana. Es particularmente útil cuando hay un gran número de variables de entrada. Una calculadora de lógica difusa en línea para dos variables de entrada se da:

Http://www.cirvirlab.com/simulation/fuzzy_logic_calculator.php

 0
Author: Patrick Chung,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-01-28 11:52:39