Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Reconocimiento Difuso de Objetos PDF
Reconocimiento Difuso de Objetos PDF
Inteligencia Artificial
30/05/2019
Introducción.
Lógica Difusa
La necesidad de trabajar con conjuntos difusos surge del hecho que existen
conceptos que no tienen límites claros. Un conjunto difuso se encuentra asociado
por un valor lingüístico que está definido por una palabra, etiquete lingüística o
adjetivo. En los conjuntos difusos la función de pertenencia puede tomar valores
del intervalo entre 0 y 1, y la transición del valor entre cero y uno es gradual y no
cambia de manera instantánea como pasa con los conjuntos clásico.
Funciones de Pertenencia.
Aun cuando cualquier función puede ser válida para definir un conjunto
difuso, existen ciertas funciones que son mas comúnmente utilizadas por su
simplicidad matemática, entre estas se encuentran as funciones de tipo triangular,
trapezoidal o gaussiana como podemos ver de ejemplo en las figuras 2 y 3.
Inferencia
Defusificacion
Sensor ultrasónico
Galga Extensiométrica
Sensor RGB
Librería EFLL
Objeto Fuzzy - Este objeto abarca la totalidad del sistema Fuzzy, a través de ella, se
puede manipular los conjuntos difusos, las reglas lingüísticas, entradas y salidas.
Objeto FuzzyInput - Este objeto literalmente reúne todos los conjuntos de entradas
Fuzzy que pertenecen al mismo dominio
Objeto FuzzyOutput - Se utiliza para todos los grupos de salida que pertenecen al
mismo dominio.
FuzzySet *BoteB = new FuzzySet(0, 0, 40, 60);
FuzzySet *BoteA = new FuzzySet(40, 60, 100, 100);
Objeto FuzzySet- Este es uno de los principales objetos de la Biblioteca Fuzzy, con el
es posible modelar cada conjunto del sistema en cuestión.
fuzzy->setInput(1, Color);
Objeto FuzzyRule - Este objeto se utiliza para montar las reglas difusas
// Reglas de fuzzificacion
// 1 // Antecedente
FuzzyRuleAntecedent *Regla11Bote = new FuzzyRuleAntecedent(); // Regla para Reconocer Bote
Regla11Bote -> joinWithAND(AltoC, AltoT); // Si el color esta en Alto y el tamaño en Alto
FuzzyRuleAntecedent *Regla12Bote = new FuzzyRuleAntecedent();
Regla12Bote -> joinWithAND(Regla11Bote,MedioP); // Si el peso es Medio
// Consecuente
FuzzyRuleConsequent *thenObjetoBote = new FuzzyRuleConsequent(); // Entonces
thenObjetoBote ->addOutput (BoteA); // Bote es Alto
thenObjetoBote ->addOutput (MaizB); // Maizena en Bajo
thenObjetoBote ->addOutput (PureB); // Pure en Bajo
FuzzyRule *fuzzyRule1 = new FuzzyRule(1, Regla12Bote, thenObjetoBote); // Se relacionan el Antedecente y el consecuente
fuzzy->addFuzzyRule(fuzzyRule1); // Se egrega la Regla al Sistema
La primera regla nos dice que si el tamaño de encuentra dentro del rango Alto ,su
tamaño igual y su peso es Medio entonces podemos decir que se trata del
objeto”Bote”. Las siguientes reglas son para los otros dos objetos y dependiendo
de sus carcateristicas el sistema reconocerá de que objeto se trata.
En la fig. 10 Podemos observar un ejemplo de la evaluación de las reglas que se
propusieron y vemos como al variar los valores de las entradas tendremos efectos
en las salidas, en este caso el sistema está indicando que se trata del objeto
“Bote”.
fuzzy->setInput(1, Color);
fuzzy->setInput(2, Distancia);
fuzzy->setInput(3, peso);
fuzzy->fuzzify();
Conclusiones
Este sistema se utilizó tanto para redes neuronales como para lógica difusa, y en
este caso debido a las muy diferentes características de los objetos reconocidos
no fue muy necesario definir tantas funciones de membresía y basto con poner
pocos rangos para las funciones, en el caso de que la características fueran más
similares tal vez habría de definir rangos o más funciones de membresía por lo
que fue sencillo desarrollar esta aplicación.
Sin embargo creemos que fue mejor la aplicación hecha con redes neuronales
debido que los resultados siempre eran más precisos, ya que como habíamos
mencionado el sistema tarda un poco en reconocer correctamente el objeto sin
embargo se llega al resultado deseado.