Una memoria asociativa difusa (FAM For Short) es una herramienta lógica difusa para la toma de decisiones. Los Fams Logic Fams tienen una amplia gama de aplicaciones prácticas:
Una memoria asociativa difusa utiliza conjuntos difusos para establecer un conjunto de reglas que son de naturaleza lingüística; Los ejemplos pueden incluir:
Las reglas lingüísticas, y los conjuntos difusos que contienen, están definidas por un "experto" humano (presumiblemente, usted). Es decir, las reglas codifican la inteligencia y asignan este conocimiento del dominio humano a lo digital.
Después de definir las reglas, se consulta a una familia para ayudar a su IA a hacer una descisión:
Como puede ver, las reglas difusas son deliberadamente vagas y usan clasificatorios como "un poco" y "mucho". Además, las líneas entre conjuntos difusos son intencionalmente borrosos. Esta es la naturaleza de los conjuntos difusos; Capturan tal confusión humana de una manera que extrae un comportamiento altamente natural de las reglas difusas. Al definir estas reglas, ayuda a imaginar entrevistar a un experto de buena fe en el dominio y escribir las habilidades necesarias para tener éxito en el dominio.
Las variables lingüísticas difusas pueden ser difíciles de visualizar, especialmente cuando se vuelven complejas e incluyen triángulos y trapecios en combinación. Para responder a eso, este software ahora puede (opcionalmente) lanzar a su gnuplot instalado y crear representaciones PNG o SVG de sus FLV. Aquí hay un ejemplo:
Este es un software funcional, adecuado para su uso en su propio juego o aplicación. Actualmente es compatible:
if A then Z
)if A or B, then Z
/ if A and B, then Z
)Para hacer (en importancia descendente, más o menos):
Mira el ChangeLog para las noticias.
Le recomiendo que clone el repositorio de git y explore los ejemplos y el código fuente para comprender completamente cómo funcionan las familias.
Pero si / cuando desea usar esto en su propio proyecto, la forma más fácil de hacerlo es a través de la gema:
gem install fuzzy_associative_memory
Luego en su código:
require 'fuzzy_associative_memory'
La gema está totalmente espaciada por nombres para evitar colisiones. Vea los ejemplos de detalles de uso.
El directorio bin
contiene los siguientes ejemplos:
hvac_system_example
ilustra cómo una familia podría gobernar una unidad de ventilador de HVAC para mantener una temperatura constante y cómodaweapon_choice_example
ilustra cómo una familia podría dejar que un juego de juego decida inteligentemente qué arma usarLas gráficas de las variables lingüísticas difusas de los ejemplos se han renderizado y están en el directorio bin. Estos te ayudarán a visualizar los FLV.