Proyecto Final

March 29, 2018 | Author: Manuel Doroteo Crespo | Category: Inference, Fuzzy Logic, Reason, Logic, Technology


Comments



Description

BENEMERITA UNIVERSIDAD AUTONOMA DE PUEBLAFACULTAD DE CIENCIAS DE LA ELECTRONICA INGENERIA MECATRONICA INTELIGENCIA ARTIFICIAL PROYECTO FINAL CONTROL DIFUSO Profesor: GUSTAVO MENDOZA TORRES Alumnos: DOROTEO CRESPO MANUEL RIVERA ROBLES OSVALDO GUILLERMO ARMANDO 2 de Diciembre de 2010 X BOMBA .INTRODUCCIÓN Se realizara el control difuso del siguiente sistema: TANQUE 1 LLAVE DE PASO NIVEL TANQUE 2 En el que con la bomba se extraerá agua del TANQUE 2 y se mandara al TANQUE 1 para llenarlo y mantener el nivel a pesar de la fuga que se tiene en la llave de paso y las variaciones de flujo que se puedan realizar en esta. Motor de inferencia Un motor de inferencia interpreta y evalúa los hechos en la base de conocimientos para proveer una respuesta. y La forma en que elige el conocimiento. y que se usa como información adicional en el proceso de inferencia. Adicionalmente puede existir una Base de Datos con información puntual sobre problemas específicos anteriormente resueltos por el sistema. dado un estado particular de la base de datos. se considera un subconjunto de reglas y entre éstas. y La posibilidad de incorporar metaconocimiento. Probabilístico. deductivo). Dentro del área de la inteligencia artificial. Aproximado. Atemporal o temporal. orden 1. trivalente. Una vez que las reglas han sido reconocidas deben ser elegidas. Tampoco es capaz de tratar información vaga o imprecisa. Monotónica o no monotónica. Esto. Lógica de orden 0. Difuso. multivalente. y La velocidad de trabajo: Inferencias / segundo. operación especialmente larga. heurística. Ordenada: Encadenamiento hacia adelante (guiado por los datos. las aplicables. Este debe ser independiente del conocimiento y de los hechos. Al módulo central del sistema experto que maneja estas tres operaciones se le denomina motor de inferencia o intérprete de reglas. Una vez que las regla han sido elegida ha de ejecutarse. que es la selección. orden 0+. encadenamiento hacia atrás (guiado por los objetivos. La lógica tradicional se fundamenta en los métodos de razonamiento deductivo en los que no se contempla que tanto la información de entrada como las propias reglas puedan no ser ciertas con carácter absoluto. Entre los más conocidos está la lógica difusa. Hay diversos tipos de motores de inferencia según los métodos con que se manejan las tres operaciones precedentes. y El tipo de lógica que emplea en el razonamiento: Booleana. es lo que se llama restricción. se deben reconocer las reglas aplicables y esto se llama filtrado o identificación de patrones. y Las estrategias de búsqueda de soluciones: No Ordenada: aleatoria. inductivo).MARCO TEORICO Razonamiento aproximado multicondicional El razonamiento aproximado es una capacidad del razonamiento humano por la cual es capaz de obtener conclusiones útiles a partir de información incompleta o con cierto grado de incertidumbre. ya que muchos sistemas realizan una preselección de las reglas antes de que comience la identificación propiamente tal. . difusa. se han desarrollado modelos teóricos que simulan la capacidad humana para realizar razonamiento aproximado. y El método que utiliza para la evaluación del conocimiento incompleto o incierto: Determinístico. Es decir. Se puede caracterizar por: El lenguaje en que ha sido escrito. dependiendo de la estrategia de control. En un sistema experto. deducimos que: Un ejemplo básico de cómo se podría formar una proposición de este estilo. estas representan gráficamente. el grado para el cual el valor real de una variable lingüística La Defusificación es el proceso de llevar los resultados simbólicos obtenidos a valores que puedan ser utilizados para que las acciones de control sean activadas. El formato de las reglas está compuesto por proposiciones similares a la sentencia de condición IF en un lenguaje de programación cualquiera IF-THEN (SI-ENTONCES). sería el siguiente: SI el frío es elevado ENTONCES abrigar mucho Como en todos los SBR las reglas pueden estar encadenadas. Las reglas que no son encadenadas. Para realizar la fusificación se debe de contar con las funciones de membresía de las variables de entrada. . de forma que el consecuente de una regla pasa a ser el antecedente de la siguiente. la cuál es apropiada cuando el conocimiento con el que deseamos trabajar proviene de la experiencia o de la intuición. y por tanto carece de una demostración física o matemática.Fusificacion y defusificacion La fusificación es un proceso de conversión para convertir datos medidos del mundo real (entradas del sistema) a un valor lingüístico en el mundo de la lógica utilizando las funciones de membresía de las variables lingüísticas para calcular el grado de pertenencia (grado de verdad) para cada termino en un primer paso debe de ser realizado para cada variable de entrada y el resultado es utilizado como entrada al mecanismo de inferencia. Para la defusificación existen varios métodos como por ejemplo: maximización de centros entre otros. Una regla es definida como un modo de representación estratégica o técnica. quedando por tanto: IF <antecedente o condición> THEN <consecuente o conclusión> El antecedente y consecuente son proposiciones difusas. Base de reglas Los sistemas basados en reglas (SBR) se rigen por una serie de reglas que los configuran. las cuáles están regidas por las operaciones en lógica difusa que se pueden realizar. que son: Partiendo de dos proposiciones con dos grados de verdad A y B. se las denomina reglas paralelas. DESARROLLO Se planteo el control difuso de la siguiente manera: Para nuestra señal de entrada e: Para Con las siguientes reglas de inferencia A I B Vb X NA T Vi NA NA M Va NA NA X . } . Vie=(x-85. float result. Vae=(x-128.00)/43. x=x-128. float Nex. float R1. } if ((85>=x)&&(x<=128)) { Vie=0.OUTPUT). float Vae. int ex. DEC).00-x)/128. float R2.00. quedando la programación de la siguiente manera: const int pwm=9.println(x. Vbe=(128. void setup() { pinMode(pwm.00-x)/43. float Bex.00. } if ((128>=x)&&(x<=171)) { Vie=0.Lo que se programo en una tarjeta de desarrollo ARDUINO. Serial. } if ((x>=128)&&(x<=255)) { Vae=0. Serial.begin(9600). int x=analogRead(1)>>2. Vie=(171. float Vie.00.00)/255. float Aex.00. // Obtenemos los valores de pertenencia de cada variable // para las de e if ((x>=0)&&(x<=128)) { Vbe=0. } void loop() { float Vbe. Bex=ex/128. } //REGLAS if (x>=128){ analogWrite(pwm. } } . DEC). } if(x<=85) { analogWrite(pwm. Serial.println(x. DEC). if(Vie<Nex) R2=Vie. analogWrite(pwm. if ((ex>=-128)&&(ex<=0)) { Aex=0. DEC).println(result. else R2=Nex. DEC).println(x.00+ex)/43.println(x.result).} if ((ex>=0)&&(ex<=128)) { Bex=0.0. } if ((x>85)&&(x<128)) { if(Vbe<Bex) R1=Vbe. Nex=(43. Serial. DEC). Serial. Serial.00. DEC).println(255.255). Serial.0). Serial.//para epunto ex=128-x. } if ((-43>=ex)&&(ex<=0)) { Nex=0.} if ((ex>=0)&&(ex<=43)) { Nex=0.00. Nex=(43.00-ex)/43.00. else R1=Bex. Aex=(ex)/-128. } if ((x>85)&&(x<128)) { result=((128-((R1*96+R2*128)/(R1+R2)))*4).println(0. Modelo a escala tarjeta de desarrollo ARDUINO GRAFICA DE POTENCIA RESPECTO AL TIEMPO OBTENIDA VIA PUERTO SERIAL CON LABVIEW .Que ya puesto en marcha con el modelo a escala funciono perfectamente.
Copyright © 2024 DOKUMEN.SITE Inc.