Pregunta

Estoy trabajando con un par de algoritmos de IA en la escuela y me encuentro con la gente utiliza las palabras Lógica Difusa para explicar cualquier situación que pueden resolver con un par de casos. Cuando vuelva a los libros que acabo de leer acerca de cómo en lugar de un estado al pasar de activo a inactivo que 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 programada que "utiliza la lógica difusa" (un detector de bordes y un robot autocontrolado 1-rueda) y todavía se me hace muy confuso al pasar de la teoría a la código ... para que, en la definición menos complicado, ¿cuál es la lógica difusa?

¿Fue útil?

Solución

La lógica difusa es una lógica donde la membresía estado es, en esencia, un flotador con un rango 0..1 en lugar de un int 0 ó 1. El kilometraje que sale de él es que cosas como, por ejemplo, los cambios que realice en un sistema de control son algo naturalmente más afinado que lo que se obtendría con la lógica binaria ingenuo.

Un ejemplo podría ser la lógica que estrangula volver la actividad del sistema basado en conexiones TCP activas. Decir se define "un poco demasiados" conexiones TCP en el equipo como 1000 y "mucho demasiados" como 2000. En un momento dado, el sistema dispone de un estado "demasiadas conexiones TCP" de 0 (<= 1000) a 1 (> = 2000), que se puede utilizar como un coeficiente en la aplicación de cualquier mecanismo de estrangulación que tiene disponible. Esto es mucho más tolerante y sensible al comportamiento del sistema de la lógica binaria ingenua que sólo sabe cómo determinar "demasiados", y el acelerador por completo, o "no demasiados", y no del acelerador en absoluto.

Otros consejos

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

Tradicionalmente, la lógica binaria que tendría una gráfica 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 "le gusta cacahuetes"

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

La función en sí no tiene por qué ser triangular y, a menudo no es (es mas fácil con el arte ASCII).

sistema difuso es probable que tenga muchos de estos, algunos incluso se superponen (incluso opuestos) de esta manera:

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

c por lo que ahora está "tipo le gusta el maní, un poco no le gustan los cacahuetes" y d es "realmente no le gustan los cacahuetes"

Y se puede programar en consecuencia sobre la base de esa información.

Espero que esto ayude a los estudiantes visuales que hay.

La mejor definición de la lógica difusa es dado por su inventor Lotfi Zadeh

  

“medios de lógica difusa que representa problemas a los equipos de una manera similar a la forma humana resolverlos y la esencia de la lógica difusa es que todo es una cuestión de grado.”

El significado de la resolución de problemas con los ordenadores similar a la forma humana de resolver puede ser fácilmente explicado con un ejemplo sencillo de un partido de baloncesto; si un jugador quiere proteger a otro jugador en primer lugar, se debe tener en cuenta lo alto que es y cómo sus habilidades de juego son. Simplemente si el jugador que quiere proteger es alto y juega muy lento en relación a él, entonces él va a utilizar su instinto para determinar considerar si debe proteger ese jugador ya que hay una incertidumbre para él. En este ejemplo, el punto importante es las propiedades son en relación con el jugador y hay un grado para la altura y jugando habilidad para el jugador rival. La lógica difusa es una forma determinista para esta situación incierta.

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

image004

Figura 1 - Etapas del proceso Fuzzy (David M. Bourg p.192)

Para ejemplificar los pasos del proceso difusos, la anterior situación de juego de baloncesto podría ser utilizado. Como se mencionó en el ejemplo el jugador rival es alto, de 1,87 metros, que es bastante alto en relación a nuestro jugador y puede driblar con 3 m / s, que es lento en relación con nuestro reproductor. Además de estos datos se necesitan algunas reglas para considerar que se llaman reglas difusas, 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 - la altura

image007

Figura 3- la rapidez

De acuerdo con las reglas y los datos de entrada una salida será creado por sistema difuso tales como; el grado de protección es 0,7, el grado de veces de guarda es 0,4 y nunca Guard es 0,2.

image009

Figura 4-salida conjuntos difusos

En el último paso, defuzzication , es el uso para la creación de una salida quebradizo que es un número que puede determinar la energía que debemos utilizar para proteger al jugador durante el juego. El centro de gravedad 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 aplicación. En esta aplicación se considera para dar alto peso para proteger o no guardia, pero de 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 consecuencia lógica difusa se utiliza en condiciones de incertidumbre para tomar una decisión y para conocer el grado de decisión. El problema de la lógica difusa es como el número de entradas de aumentar el número de reglas aumento exponencial.

Para obtener más información y su posible aplicación en un juego que escribió un pequeño artículo comprobar esto

Para construir fuera del caos respuesta, una lógica formal no es más que un conjunto definido de forma inductiva que mapea frases para una valoración. Al menos, así es como un modelo teórico piensa de la lógica. En el caso de una lógica booleana oracional:

 (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.

A cambia de lógica difusa se inductivamente definidos:

 (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.

Tenga en cuenta que la única diferencia en la lógica subyacente es el permiso para evaluar una sentencia por tener el "valor de verdad" de 0,5. Una cuestión importante para un modelo de lógica difusa es el umbral que cuenta para la satisfacción de verdad. Esta es preguntar:. Para una valoración v (A), por lo que el valor D es el caso de la v (A)> D significa que A está satisfecho

Si realmente quiere encontrado más información acerca de las lógicas no clásicas como la lógica difusa, yo recomendaría o una Introducción a la lógica no clásica: de Si a es o posibilidades y Paradox

Poner el sombrero codificador de nuevo, me gustaría tener cuidado con el uso de la lógica difusa en la programación del mundo real, debido a la tendencia de la lógica difusa para ser indecidible. Tal vez sea demasiada complejidad para poca ganancia. Por ejemplo una lógica supervaluational puede hacer muy bien para ayudar a un modelo de programa de vaguedad. O tal vez la probabilidad sería lo suficientemente bueno. En resumen, tengo que estar convencido de que el modelo de dominio encaja con la lógica difusa.

Tal vez un ejemplo aclara lo que pueden ser los beneficios:

Digamos que usted quiere hacer un termostato y se quiere que sea de 24 grados.


Esta es la forma en que le ponerlo en práctica usando la lógica booleana:

  • Regla 1: calentar a máxima potencia cuando hace más frío de 21 grados.
  • Regla2: enfríe a plena potencia cuando es más caliente que 27 grados.

Tal sistema será sólo una vez y un tiempo sea de 24 grados, y será muy ineficaz.


Ahora, utilizando la lógica difusa, que sería algo como esto:

  • Regla1:. Para cada grado que es más frío que 24 grados, sube el calentador de una muesca (0 a 24)
  • Regla2:. Por cada grado que es más caliente que 24 Degress, sube el enfriador de un escalón (0 a 24)

Este sistema siempre será de alrededor de 24 grados, y sólo una vez y sólo una vez y un tiempo hacer un pequeño ajuste. También será más eficiente en energía.

Bueno, se podría leer las obras de Bart Kosko , uno de los 'padres fundadores '. ' pensamiento confuso: La Nueva Ciencia de la Lógica Difusa ' a partir de 1994 se puede leer ( y disponible a precios bastante económicos segunda mano a través de Amazon). Al parecer, él tiene un libro más reciente ' ruido ' de 2006, que también es bastante accesible.

Básicamente, aunque (en mi paráfrasis - no haber leído el primero de esos libros desde hace varios años), la lógica difusa es acerca de cómo tratar con el mundo en el que algo es tal vez el 10% fresco, 50% caliente, y el 10% caliente , donde diferentes decisiones pueden ser tomadas en el grado en que los diferentes estados son verdaderas (y no, no era del todo un accidente que esos porcentajes no suman 100% - aunque me gustaría aceptar la corrección si es necesario).

Una explicación muy buena, con una ayuda de Fuzzy Máquinas de lavado lógica .

Yo sé lo que quieres decir acerca de que sea difícil ir desde el concepto hasta código. Estoy escribiendo un sistema de puntuación que se ve en los valores de sysinfo y / proc en los sistemas Linux y viene con un número entre 0 y 10, siendo 10 el peor absoluta. Un simple ejemplo:

Usted tiene 3 medias de carga (1, 5, 15 minutos) con (al menos) tres estados posibles, bien, cada vez malo, malo. La expansión de eso, usted podría tener seis posibles estados por término medio, añadiendo 'a punto' a los tres que acabo de señalar. Sin embargo, el resultado de los 18 posibilidades sólo puede deducir 1 de la puntuación. Repetir que con intercambio consume, real VM asigna memoria (comprometido) y otras cosas .. y tiene un gran plato de espaguetis condicionales:)

Su tanto una definición, ya que es un arte, cómo se implementa el proceso de toma de decisiones es siempre más interesante que el propio paradigma .. mientras que en un mundo booleano, es más bien corta y seca.

Sería muy fácil para mí decir si CARGAR1 <2 deducir 1, pero no es muy precisa en absoluto.

Si usted puede enseñar a un programa para hacer lo que haría cuando se evalúa un conjunto de circunstancias y mantener el código legible, ha implementado un buen ejemplo de la lógica difusa.

Lógica Difusa es una metodología de resolución de problemas que se presta a la implementación de sistemas que van desde simples, pequeños, micro-controladores incorporados a,, PC amplia red multicanal o de adquisición de datos basado en la estación de trabajo y sistemas de control. Puede implementarse en hardware, software, o una combinación de ambos. Fuzzy Logic ofrece una forma sencilla de llegar a una conclusión definitiva sobre la base de información de entrada vaga, ambigua, imprecisa, ruidoso, o que falta. enfoque de la lógica difusa para el control de problemas imita la forma en que una persona podría tomar decisiones, sólo que mucho más rápido.

lógica Fuzzy ha demostrado ser particularmente útil en el sistema experto y otras aplicaciones de inteligencia artificial. También se utiliza en algunos correctores ortográficos para sugerir una lista de palabras probables para reemplazar a otro mal escrita.

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

La siguiente es una especie de respuesta empírica.

Un simple (respuesta posiblemente simplista) es que "lógica difusa" es cualquier lógica que devuelve valores distintos de recta verdadero / falso, o 1 / 0. Hay una gran cantidad de variaciones sobre esto y que tienden a ser altamente dominio específico .

Por ejemplo, en mi vida anterior que hice motores de búsqueda que utilizan "la búsqueda de similitud de contenido", en contraposición a continuación común "búsqueda booleana". Nuestro sistema de similitud utilizó el coeficiente de coseno de los vectores de atributos ponderados representan la consulta y los documentos y valores producidos en el intervalo 0..1. Los usuarios suministrarían "relevancia retroalimentación", que se utiliza para desplazar el vector de consulta en la dirección de los documentos deseables. Esto es algo relacionado con la formación realizada en ciertos sistemas de inteligencia artificial, donde la lógica se "recompensa" o "castigado" por los resultados de ejecuciones de prueba.

En este momento Netflix se está ejecutando un concurso para encontrar un mejor algoritmo de sugerencia para su empresa. Ver http://www.netflixprize.com/ . Efectivamente todos los algoritmos podrían caracterizarse como "lógica difusa"

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

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top