Universidad Nacional Mayor de San Marcos
FACULTAD DE INGENIERA
ELECTRNICA Y ELCTRICA
SISTEMAS DE CONTROL BASADOS
EN LGICA DIFUSA
Curso : Ingeniera de Control II
Alumno : Bastidas Cerazo, Luis Angel
Cdigo : 10190258
Profesor : Ing. Rafael Cabezas Soldevilla
Horario : Lunes, Martes y Jueves 8 10 p.m.
2014
Sistemas de Control basados en Lgica Difusa 2
Contenido
1. Introduccin ....................................................................................................................... 3
2. Lgica Difusa ..................................................................................................................... 4
2.1. Introduccin a la lgica difusa ............................................................................. 4
2.2. Principios de lgica difusa .................................................................................... 5
2.2.1. Descripcin de un sistema borroso ............................................................ 5
2.2.2. Operaciones entre conjuntos difusos ........................................................ 9
2.3. Inferencia borrosa .................................................................................................. 12
3. Controladores difusos o FLC (Fuzzy Logic Controllers) ..................................... 13
3.1. Fuzzificacin ............................................................................................................ 14
3.2. Fuzzy Associative Memory .................................................................................. 16
3.3. Unidad de inferencia borrosa .............................................................................. 17
3.4. Defuzzificacin ........................................................................................................ 20
3.4.1. Defuzzificador por mximo .......................................................................... 20
3.4.2. Defuzzificador por media de centros ........................................................ 21
4. Ejemplo de aplicacin: Control de un motor de DC.............................................. 21
4.1. Modelamiento del motor solo para simulacin .......................................... 21
4.2. Procedimiento de Diseo del FLC con Fuzzy Logic Toolbox .................... 23
4.2.1. Configuracin de las entradas y salidas .................................................. 23
4.2.2. Definicin del tipo de inferencia borrosa y del defuzzificador. ......... 26
4.2.3. Determinacin de las reglas y formacin de la FAM ............................ 28
4.2.4. Creacin del FLC ............................................................................................ 29
4.3. Simulacin ............................................................................................................... 30
4.3.1. Prueba escaln ............................................................................................... 32
4.3.2. Prueba tren de pulsos ................................................................................... 33
4.3.3. Prueba con seal especial ........................................................................... 34
5. Conclusiones ................................................................................................................... 35
6. Referencias ...................................................................................................................... 36
7. Anexos .............................................................................................................................. 37
Sistemas de Control basados en Lgica Difusa 3
SISTEMAS DE CONTROL BASADOS EN LGICA DIFUSA
1. Introduccin
En el campo, siempre surge la necesidad de controlar el comportamiento de un sistema. Por
ejemplo, mantener la velocidad de giro de un motor constante a pesar de la carga, lograr que la
temperatura de un horno se incremente uniformemente sin importar los cambios de
temperatura externos, etc. Estos sistemas se denominan, en general, plantas, y al
procedimiento descrito, control.
De este modo, se plantearon tcnicas para llevar a cabo este control de la mejor posible
manera.
En general, los sistemas de control ms difundidos necesitan tres cosas: una seal de
referencia, que indique qu salida se desea en la planta; una seal de salida realimentada, que
se comparar con la seal de referencia para as obtener una desviacin o error; y un algoritmo
de control, que se encargar de generar la seal de control de salida a partir de dicha
desviacin. De estos algoritmos de control, el ms famoso es el PID, del cual se han planteado
muchas variantes.
Sin embargo, el PID, junto a otros algoritmos, depende de tener un modelo matemtico preciso
de la planta para actuar eficientemente. Esto no es problema si la planta no es muy compleja.
Pero en la mayora de los casos, las plantas son sistemas no lineales, cuyo comportamiento
es, en cierta medida, poco entendido y, por ende, imposibles de modelarse matemticamente;
pero cuyas salidas s pueden almacenarse en un registro.
En estos casos, se requieren algoritmos que trabajen con estos registros histricos de la
planta, y no con el modelo del sistema. Entre los sistemas de control que trabajan de esa
manera, se encuentran los sistemas de control neuronal y fuzzy (difuso), y su combinacin o
neuro-fuzzy. Este trabajo de investigacin se centrar en el estudio de los controladores
difusos o FLC, presentando un ejemplo aplicativo sencillo utilizando la Fuzzy Logic Toolbox de
Matlab en Simulink.
Figura 1.1. Introduccin al control con lgica difusa.
Sistemas de Control basados en Lgica Difusa 4
2. Lgica Difusa
2.1. Introduccin a la lgica difusa
La teora de los conjuntos difusos fue introducida por el matemtico ingeniero Lofti A. Zadeh en
1965. Aunque inicialmente no tuvo la apreciacin que una teora de tal alcance requera, la
lgica difusa adquiri relevancia tiempo despus, cuando un grupo de ingenieros mostraron la
gran variedad de aplicaciones y el potencial que dicha teora siempre tuvo.
La lgica difusa define un cambio en el modo de analizar un problema. Tomando como
referencia la lgica clsica, si deseamos clasificar a las personas por su talla, definiramos una
talla de referencia para a partir de la cual decidir si una persona es alta o baja. Digamos que
dicha referencia es de 1.75m. Entonces, aplicando lgica clsica, una persona de 1.76m sera
alta, y una persona de 1.74m sera baja. Sin embargo, dicha afirmacin, aunque lgicamente
vlida, carece de sentido para quien la propone, pues el margen es de tan solo 2 cm., y por
ello, uno dira ms bien que ambos no son ni altos, ni bajos, sino, digamos, de talla normal.
Ejemplos de este tipo hay en gran cantidad en la vida real, y el hecho de que la lgica clsica,
aunque vlida, presente afirmaciones que no van de acuerdo al sentido comn, plantea
grandes complicaciones al momento de querer modelar un sistema del cual no se tenga
referencias fijas, sino ms bien apreciaciones poco claras ms acordes al pensar humano.
Grfico 2.1. Distribucin de tallas segn la lgica clsica.
La lgica difusa rompe con el esquema de la lgica clsica al introducir el concepto de funcin
de pertenencia, que mide el nivel de pertenencia de un elemento hacia un conjunto dado
(denominado conjunto difuso). En el caso anterior, por ejemplo, una persona con talla 1.76m
tiene un nivel de 0.6 de pertenencia al conjunto de las personas altas, y un nivel 0.4 de
pertenencia al conjunto de las personas bajas. Del mismo modo, una persona de 1.74m
presentara un nivel de pertenencia de 0.6 al conjunto de las personas bajas, y un nivel de 0.4
al conjunto de las personas altas. De esto modo, la lgica difusa expresa mejor el modo de
razonar humano, al prescindir de referencias fijas y, por lo tanto, permite modelar sistemas
inexactos de una mejor manera.
Sistemas de Control basados en Lgica Difusa 5
Grfico 2.2. Distribucin de tallas segn la lgica difusa.
2.2. Principios de lgica difusa
Del mismo modo que la lgica clsica tiene sus postulados y principios, la lgica difusa
presenta un desarrollo formal. Inicialmente se ver la descripcin de un sistema borroso, y
luego las operaciones lgicas en dicho sistema.
2.2.1. Descripcin de un sistema borroso
Universo de discurso (U): Es el conjunto referencial, tpico de cualquier conjunto, que
contiene los elementos que forman (y que no forman) parte del sistema. Por ejemplo, en el
ejemplo de las tallas, podramos decir que nuestro Universo de discurso es el conjunto continuo
de edades que va desde 0.5m hasta los 3.0m. Otro universo, por ejemplo, para la temperatura,
el universo sera el conjunto de los nmeros reales.
Funcin de pertenencia F(x)/x U: Determina en qu grado, un elemento x que pertenece al
universo U, pertenece a un conjunto borroso F. Su valor va desde el 0, indicando ninguna
pertenencia, hasta el 1, indicando una absoluta pertenencia al conjunto.
Atendiendo al comportamiento de dicha funcin, se pueden distinguir tipos de funciones de
pertenencia:
- Tipo trapezoidal: Es el modelo ms usado en microprocesadores. Se define planteando
4 puntos [a, b, c, d] a lo largo del Universo, y aplicando el siguiente modelo:
( )
{
100 150 200 250-0.5
0
0.5
1
1.5Clasificacin sen la lgica difusa
Talla
Pert
enencia
Personas Bajas
Personas Altas
Sistemas de Control basados en Lgica Difusa 6
Grfico 2.3. Funcin de pertenencia trapezoidal.
- Tipo triangular: Usado para modelar sistemas con valores pico solo dentro de un
intervalo estrecho, y nulos fuera de este intervalo. Se define planteando tres puntos
[a,b,c] a lo largo de U y aplicando el siguiente modelo:
( )
{
Grfico 2.4. Funcin de pertenencia triangular.
0 10 20 30 40 50 60 70 80 90 100-0.5
0
0.5
1
1.5Funcin de Pertenencia Trapezoidal
x
u(x
)
0 10 20 30 40 50 60 70 80 90 100-0.5
0
0.5
1
1.5Funcin de Pertenencia Triangular
x
u(x
)
Sistemas de Control basados en Lgica Difusa 7
- Tipo singleton: Se suele usar para definir los conjuntos borrosos de las particiones de
las variables de salida.
Grfico 2.5. Funcin de pertenencia singleton.
- Tipo S: Para modelar sistemas con propiedades grandes, mucho, positivo. Para
obtener esta funcin se modela del modo siguiente:
( )
{
.
/
(
)
Grfico 2.6. Funcin de pertenencia singleton.
0 10 20 30 40 50 60 70 80 90 100-0.5
0
0.5
1
1.5Funcin de Pertenencia Singleton
x
u(x
)
0 10 20 30 40 50 60 70 80 90 100-0.5
0
0.5
1
1.5Funcin de Pertenencia S
x
u(x
)
Sistemas de Control basados en Lgica Difusa 8
Planteado adecuadamente la funcin de pertenencia, se puede llegar al modelo siguiente.
( ) {
Grfico 2.7. Funcin de pertenencia similar al de la lgica clsica.
De este modo, se podra decir que la lgica clsica est incluida dentro de la lgica difusa, para
el caso particular de funcin de pertenencia planteado.
Conjunto borroso: Conjunto de todos x/x U y que satisfacen la funcin de pertenencia para
ese conjunto. Por ejemplo, un conjunto borroso puede definirse como positivo_pequeo con
una funcin de pertenencia trapezoidal, para una particin error. Se tendra tambin otro
conjunto borroso positivo_grande con otra funcin de pertenencia, digamos en este caso, tipo S
o sigmoidea.
Grfico 2.8. Conjuntos borrosos
0 10 20 30 40 50 60 70 80 90 100-0.5
0
0.5
1
1.5Modelo Lgica Clsica
x
u(x
)
0 10 20 30 40 50 60 70 80 90 100-0.5
0
0.5
1
1.5Conjuntos borrosos
x
u(x
)
Positivo grande
Positivo Pequeo
Sistemas de Control basados en Lgica Difusa 9
Se aprecia en la imagen que existe un solapamiento entre los conjuntos difusos. Esto es
normal, y en algunos casos, aconsejable, basados en la naturaleza inexacta que se busca
modelar, en el que un elemento puede pertenecer a dos conjuntos distintos, pero con distinta
intensidad, segn la funcin de pertenencia de duchos conjuntos.
Particiones borrosas: Son subconjuntos U que contienen a su vez diversos conjuntos
borrosos. Por ejemplo, del grfico anterior, los conjuntos difusos descritos podran pertenecer a
la particin borrosa error. Esto puede representarse de manera formal del modo siguiente:
* +
En un universo U se pueden definir cuantas particiones se deseen, sin embargo, a mayor
cantidad de particiones, el anlisis se hace muy complejo, por lo que para la mayora de los
casos solo se aconseja usar desde dos hasta tres particiones. Adems, si una particin cubre a
todos los elementos del universo, se denominar particin completa.
Variables Lingsticas y etiquetas: Son las representaciones lingsticas de los elementos de
un sistema difuso. Generalmente se suele hacer una asociacin entre las variables lingsticas
y las particiones borrosas, y las etiquetas con sus correspondientes conjuntos difusos. Por
ejemplo, una variable lingstica puede ser Temperatura, cuyos valores, dados por etiquetas
representando conjuntos difusos podran ser: muy_fro, fro, tibio, caliente, muy_caliente.
2.2.2. Operaciones entre conjuntos difusos
Del mismo modo en que se tienen operaciones entre sistemas de lgica convencional, como la
operacin AND, OR, etc., en la lgica difusa se tienen tambin operaciones, que se pasarn a
explicar en forma breve a continuacin.
Dados dos conjuntos difusos A y B, definidos ambos dentro de un universo U, con la variable
lingstica x:
- Complemento: El complemento de un conjunto difuso A, es otro conjunto difuso tal
que su funcin de pertenencia:
( ) ( )
Figura 2.9. Complemento.
0 10 20 30 40 50 60 70 80 90 100-0.5
0
0.5
1
1.5Complemento
Conjunto A
Conjunto Complemento de A
Sistemas de Control basados en Lgica Difusa 10
- Unin: La unin es otro conjunto difuso tal que su funcin de pertenencia:
( ) , ( ) ( )-
Figura 2.10. Unin.
- Interseccin: La unin es otro conjunto difuso tal que su funcin de pertenencia:
( ) , ( ) ( )-
Grfico 2.11. Interseccin.
- Norma: La norma de un conjunto A, es otro conjunto difuso tal que su funcin de
pertenencia:
0 10 20 30 40 50 60 70 80 90 100-0.5
0
0.5
1
1.5Conjuntos Base
Conjunto A
Conjunto B
0 10 20 30 40 50 60 70 80 90 100-0.5
0
0.5
1
1.5Union
Conjunto Union A y B
0 10 20 30 40 50 60 70 80 90 100-0.5
0
0.5
1
1.5Conjuntos Base
Conjunto A
Conjunto B
0 10 20 30 40 50 60 70 80 90 100-0.5
0
0.5
1
1.5interseccin
Conjunto Interseccion A y B
Sistemas de Control basados en Lgica Difusa 11
( )( ) ( )
, -
Se usa cuando la funcin de pertenencia no alcanza la unidad para ningn valor de x. En tal
caso, esta operacin hace que el mayor nivel de pertenencia se iguale en 1.
Grfico 2.12. Normalizacin.
- Concentracin: La concentracin de un conjunto A es otro conjunto tal que su funcin
de pertenencia:
( )( ) , ( )-
Analizando esta expresin, notamos que al elevar al cuadrado los valores de la funcin de
pertenencia, estamos haciendo al intervalo mucho ms estrecho. De all que a esta operacin
se denomine concentracin.
Grfico 2.13. Concentracin
0 50 100-0.5
0
0.5
1
1.5Conjunto Base
0 50 100-0.5
0
0.5
1
1.5Conjunto Normalizado
0 10 20 30 40 50 60 70 80 90 100-0.5
0
0.5
1
1.5Concentracin
Conjunto A
Conjunto Concentrado A
Sistemas de Control basados en Lgica Difusa 12
Esta operacin puede ser muy til si se quiere definir un conjunto ms estricto a partir de otro
ya definido. Por ejemplo, si se tiene el conjunto difuso A clido, para definir muy_clido se
empleara el concentrado de A.
- Dilatacin: La concentracin de un conjunto A es otro conjunto tal que su funcin de
pertenencia:
( )( ) , ( )-
Grfico 2.14. Dilatacin.
Analizando esta expresin, notamos que el efecto de esta operacin es ampliar el intervalo
efectivo de un conjunto difuso. De all el trmino dilatacin.
Esta operacin permite obtener conjuntos de definicin ms extensa. Por ejemplo, si se tiene
un conjunto difuso hmedo, el conjunto muy_humedo podra obtenerse mediante dilatacin del
conjunto anterior o base.
- Igualdad: Dos conjuntos difusos A y B sern iguales si y solo si ambos tienen la misma
funcin de pertenencia.
2.3. Inferencia borrosa
Hasta el momento, se ha definido lo qu es un conjunto difuso y qu operaciones se pueden
definir con ellos. Pero para que el trmino lgica borrosa tenga sentido completo, es necesario
que sus expresiones puedan permitir el planteo de sentencias cuya validez se sustente en
dicha lgica.
Estas sentencias adquieren el formato de colecciones de reglas del tipo IF-THEN, del siguiente
modo:
0 10 20 30 40 50 60 70 80 90 100-0.5
0
0.5
1
1.5Dilatacin
Conjunto A
Conjunto Dilatado A
Sistemas de Control basados en Lgica Difusa 13
Donde:
x1, x2, x3xn son variables lingsticas de entrada.
F1, F2, F3 Fn son los conjuntos difusos asociados a cada variable lingstica de entrada
(etiquetas)
y es la variable lingstica de salida.
G es el conjunto difuso de salida para la variable de salida, de acuerdo a las condiciones IF
planteadas.
El formato presentado corresponde al modelo Mamdani. Existe otro formato, denominado
Sugeno. Este formato plantea lo siguiente:
( )
El superndice j indica el nmero de regla. Ello, debido que para disear un controlador difuso,
es necesario contar con una coleccin de reglas que permitan generar una salida para todos
los casos que se puedan presentar.
3. Controladores difusos o FLC (Fuzzy Logic Controllers)
Una vez estudiadas las bases que rigen la lgica difusa, es necesario conocer la manera en
qu es usada para resolver problemas de control.
El primer elemento de todo controlador difuso es el fuzzificador (fuzzifier). Su funcin ser
traducir las seales de entrada en valores difusos caracterizados por un peso determinado.
El siguiente bloque es la FAM o Fuzzy Associate Memory, que es una matriz que contiene
todas las reglas de inferencia planteadas para el problema.
El siguiente bloque es la unidad de inferencia lgica. En esta unidad se encargar de obtener
una salida asociada a un conjunto borroso de salida, en funcin de la seal de entrada
fuzzificada y la FAM.
El ltimo bloque es el defuzzificador, cuya funcin ser convertir la salida del FLC en una seal
aplicable al sistema a controlar. En los siguientes apartados se vern todos estos puntos con
mayor detalle.
Sistemas de Control basados en Lgica Difusa 14
Figura 3.1. Conformacin bsica de un FLC.
3.1. Fuzzificacin
La realimentacin es un elemento clave en todos los sistemas de control. Obtener muestras de
la salida del sistema nos permite tener la informacin necesaria para decidir qu accin de
control tomar.
Sin embargo, las salidas muestreadas no pueden aplicarse directamente al FLC, puesta esta
manejar solo sentencias difusas. El fuzzificador es una unidad que se encarga de procesar las
medidas muestreadas, y asignarle un peso de acuerdo a la funcin de pertenencia de los
subconjuntos difusos definidos para esa particin.
El proceso matemtico es sencillo. La seal muestreada deber encontrarse dentro del
universo de discurso, y se le asignar pesos de pertenencia de acuerdo a los subconjuntos
difusos y sus funciones de pertenencia.
Por ejemplo, supongamos que una particin tengamos 3 subconjuntos difusos, todos con
funciones de pertenencia triangular, como se aprecia en la figura 3.2. A primera vista se puede
concluir que el universo de discurso es el conjunto de los enteros entre 0 y 100. Adems, se
puede concluir tambin que la particin es completa, pues las funcionas de pertenencia
abarcan todo el universo.
FUZZIFIERUNIDAD DE INFERENCIA
DIFUSA
FAM
DEFUZZIFIERENTRADAS MUESTREADAS
SALIDA DE CONTROL
Sistemas de Control basados en Lgica Difusa 15
Figura 3.2. Particin ejemplo
Supongamos ahora que hemos medido la salida del sistema a controlar, y obtenemos el valor
de x=75. Para fuzzificar esta medida, debemos encontrar el peso que las funciones de
pertenencia de cada subconjunto le asocian a dicho valor.
Figura 3.3. Obteniendo los pesos asocidados a cada subconjunto borroso para la entrada x=75.
0 10 20 30 40 50 60 70 80 90 100-0.5
0
0.5
1
1.5Particin para la variable muestreada
x muestreada
u(x
)
Conjunto 1
Conjunto 2
Conjunto 3
0 10 20 30 40 50 60 70 80 90 100-0.5
0
0.5
1
1.5Particin para la variable muestreada
x muestreada
u(x
)
Conjunto 1
Conjunto 2
Conjunto 3
Sistemas de Control basados en Lgica Difusa 16
Los pesos asociados a cada subconjunto son los siguientes:
( )
( )
( )
Estos resultados se traducen del siguiente modo: la muestra x=75 tiene un grado de
pertenencia de 0 al conjunto difuso 1, un grado de 0.2759 al conjunto difuso 2 y un grado de
0.75 al conjunto difuso 3. Entonces, podra escribirse que la representacin fuzzificada de la
muestra de entrada es:
* +
3.2. Fuzzy Associative Memory
El conjunto de reglas que determinarn la accin de control a tomar se deben almacenar en
una matriz denominada Fuzzy Associative Memory.
Por ejemplo, suponiendo que se desea controlar la temperatura de un horno en un valor
normal. Podramos tener dos particiones, una asociada a la temperatura del horno en s (th), y
otro, digamos, a la temperatura ambiente (ta). Dentro de cada particin, definimos los
subconjuntos borrosos: muy_fro, fro, normal, caliente, muy_caliente. Para la particin de
salida (y), podemos tener: enfriar_mucho, enfriar, nada, calentar, calentar_mucho.
Un sistema de este tipo podra contener las siguientes reglas:
Se aprecia que las reglas se obtienen de acuerdo al criterio del diseador del controlador. En la
figura siguiente se puede apreciar la FAM completa para el ejemplo planteado.
Figura 3.4. FAM para el ejemplo.
Th
muy_frio frio normal caliente muy_caliente
muy_frio calentar_mucho calentar_mucho calentar calentar nada
frio calentar_mucho calentar calentar nada enfriar
Tanormal calentar calentar nada enfriar enfriar
caliente calentar nada enfirar enfriar enfriar_mucho
muy_caliente nada enfriar enfriar enfriar_mucho enfriar_mucho
Sistemas de Control basados en Lgica Difusa 17
Si se tuviesen ms entradas, se ve que la FAM se complicara mucho ms, pues se tratara de
una matriz de tres dimensiones. Ello supondra un problema al momento de programar el FLC
en, digamos, un microcontrolador. Adems, esta FAM corresponde a un sistema MISO
(Multiple Input Single Output), pues solo se tiene una salida. Esto no implica que la teora hasta
ahora expuesta no sea aplicable para sistemas MIMO (Multiple Input Multiple Output), sino que
en esos casos, el mtodo de anlisis se orientara a obtener FAMs para cada salida, y luego
asociarlas todas para obtener las salidas reales para defuzzificar. El anlisis de esos casos
sale fuera del alcance de este trabajo de investigacin.
3.3. Unidad de inferencia borrosa
Esto bloque se encargar de procesar las entradas conforme a las reglas de su FAM, y
generar una salida para cada regla. El conjunto de salida luego se combina en una sola, tras
un proceso denominado agregacin.
Para explicar mejor cmo funciona la unidad de inferencia borrosa, plantearemos un caso
sencillo.
Supongamos se tiene un sistema con dos entradas: friccion y velocidad, que seran, por
ejemplo, las entradas necesarias para controlar la fuerza de empuje de una caja sobre una
superficie, de manera que la velocidad se mantenga en valor fijo denominado normal. La
particin de salida es fuerza. Todo esto se puede apreciar en la siguiente grfica.
Figura 3.5. Particiones para el sistema ejemplo.
0 20 40-0.5
0
0.5
1
1.5Friccin
0 20 40-0.5
0
0.5
1
1.5Velocidad
0 10 20 30 40 50 60 70-0.5
0
0.5
1
1.5Particin de salida
Sistemas de Control basados en Lgica Difusa 18
Para las particiones de entrada, en azul, el conjunto borroso bajo y en verde el conjunto
borroso alto. Para la particin de salida, azul es normal_fuerte, verde es mas_fuerte, y rojo es
muy_fuerte.
Adems, se tienen solo tres reglas en la FAM:
Observacin: Mientras ms reglas se tengan para decidir las acciones de control, el efecto
total ser mucho ms preciso y efectivo a que si se tengan menos reglas. Sin embargo, a
mayor cantidad de problemas se producen problemas en la aplicacin, pues el almacenar y
procesar estas reglas implicara el uso de grandes cantidades de memoria, as como mayor
tiempo de procesamiento.
Suponiendo que la entrada friccion es 20 y la entrada velocidad es 15, se presentar lo
mostrado en la figura 3.6.
Figura 3.6. Reglas.
El valor fraccin=20 da una pertenencia de 0 al conjunto alto y de 0.5 al conjunto bajo.
0 10 20 30 40 50-0.5
0
0.5
1
1.5Friccin
0 10 20 30 40 50-0.5
0
0.5
1
1.5Velocidad
0 20 40 60-0.5
0
0.5
1
1.5Particin de salida
0 10 20 30 40 50-0.5
0
0.5
1
1.5Friccin
0 10 20 30 40 50-0.5
0
0.5
1
1.5Velocidad
0 20 40 60-0.5
0
0.5
1
1.5Particin de salida
0 10 20 30 40 50-0.5
0
0.5
1
1.5Friccin
0 10 20 30 40 50-0.5
0
0.5
1
1.5Velocidad
0 20 40 60-0.5
0
0.5
1
1.5Particin de salida
Sistemas de Control basados en Lgica Difusa 19
El valor velocidad=15 da una pertenencia de 1 al conjunto bajo y de 0 al conjunto alto.
Para la primera regla, se da una operacin AND entre el subconjunto alto de friccion y el
subconjunto bajo de velocidad. Eso da como resultado:
( )
Luego, como la operacin arroja 0 como resultado, se trunca a muy_fuerte en 0.
Para la segunda regla, se da una operacin AND entre el subconjunto bajo de friccion y el
subconjunto bajo de velocidad. Eso da como resultado:
( )
Luego, como la operacin arroja 0.5 como resultado, se trunca a mas_fuerte en 0.5.
Finalmente, para la tercera regla se da una operacin AND entre el subconjunto bajo de friccion
y el subconjunto alto de velocidad. Eso da como resultado:
( )
Luego, como la operacin arroja 0 como resultado, se trunca a normal_fuerte en 0.
Tras ello, obtenemos las siguientes salidas para cada regla:
Figura 3.7. Salidas para cada regla.
Finalmente, todas estas salidas formarn una sola a travs del procedimiento de agregacin.
Con ello, se obtendra finalmente la salida de la unidad de inferencia borrosa para las entradas
dadas. En este caso, la agregacin dara por resultado un subconjunto como el de la figura
siguiente.
0 10 20 30 40 50 60 70-0.5
0
0.5
1
1.5Primera Regla
0 10 20 30 40 50 60 70-0.5
0
0.5
1
1.5Segunda Regla
0 10 20 30 40 50 60 70-0.5
0
0.5
1
1.5Tercera Regla
Sistemas de Control basados en Lgica Difusa 20
Figura 3.8. Salida de la unidad de inferencia para las entradas dadas.
3.4. Defuzzificacin
Ya se ha obtenido la salida de la unidad de inferencia borrosa. Pero esta salida no es
compatible con el sistema a controlar. El defuzzificador es el encargado de generar una salida
y* dentro del universo de variables de salida, que sea compatible con el sistema.
Existen dos tipos de defuzzificadores principales:
3.4.1. Defuzzificador por mximo
Este defuzzificador genera la y*, tal que esta y* se corresponde con el punto en el que la salida
tiene el peso mximo. En el ejemplo anterior, aplicando este criterio, y sera cualquier entero en
el intervalo que hace que u(y)=0.5, pues esta es el mximo.
( ( ))
Donde:
( )
0 10 20 30 40 50 60 70-0.5
0
0.5
1
1.5Salida
y
u(y
)
Sistemas de Control basados en Lgica Difusa 21
3.4.2. Defuzzificador por media de centros
Este defuzzificador obtiene y* a travs de un promedio ponderado de los valores centrales de
cada conjunto difuso, con ponderacin equivalente al valor de pertenencia para esos valores
centrales.
( ( ))
( )
Donde:
( )
En el ejemplo anterior, y* calculada con un defuzzificador por media de centros sera:
La salida proporcionada por el defuzzificador pueda ya aplicarse al sistema a controlar.
Dependiendo de los requerimientos del problema, y de los recursos de procesamiento
disponibles, se debern elegir entre uno y otro. Cabe recalcar que el procedimiento de control
de un FLC no requiere un conocimiento preciso de la planta, ni mucho menos de un modelo
matemtico. Dicho modelo, sin embargo, se plantear en muchos casos para fines de
simulacin, si es que no se emplean mtodos alternativos como la identificacin de sistemas
con la propia lgica difusa, o empleando redes neuronales artificiales (ANN).
En el siguiente apartado, se analizar el diseo de un FLC para controlar un motor de DC,
empleando la Fuzzy Logic Toolbox de Matlab.
4. Ejemplo de aplicacin: Control de un motor de DC
En este apartado se ver como disear un FLC para una planta simple, en este caso, un motor
de DC controlado por armadura. Solo para fines de simulacin se deber obtener un modelo
del sistema. Una vez obtenido dicho modelo, se emplear la Fuzzy Logic Toolbox para disear
el FLC. Finalmente, se implementarn todos los bloques en Simulink para analizar su
desempeo y ver si se alcanz el control deseado.
4.1. Modelamiento del motor solo para simulacin
En la figura se muestra el esquema de un motor de DC. Para el modelamiento de este motor
se mantendr al circuito de campo con un voltaje fijo.
Sistemas de Control basados en Lgica Difusa 22
Figura 4.1. Motor DC.
Siguiendo el comportamiento de todo motor DC se tiene:
Donde Kt es la constante de armadura y Ke es la constante del motor. Sin embargo, para
agilizar el anlisis plantearemos que Kt=Ke.
Luego:
Donde L es la inductancia de armadura y R es la resistencia de armadura.
Llevando a Laplace, finalmente tenemos:
( ) ( ) ( )
( ) ( ) ( ) ( )
Despejando obtenemos:
( )
( )
( )( )
Asumamos los siguientes valores para las constantes:
Kt=Ke=0.8995;
R=60.938 ohmios
L=1.129 H
B=0.000817 Nm/A
J=0.000689 kgm2/s
2
En SIMULINK, se obtiene la siguiente respuesta al escaln para el modelo obtenido:
Sistemas de Control basados en Lgica Difusa 23
Figura 4.2. Modelo del motor DC.
Figura 4.2. Respuesta al escaln. El motor no llega a 1.
4.2. Procedimiento de Diseo del FLC con Fuzzy Logic Toolbox
MATLAB posee una poderosa herramienta para el diseo de FLC. La Fuzzy Logic Toolbox
ofrece una gama de interfaces tanto para el planteo de las reglas borrosas, como para
simularlas e implementarlas. El FIS Editor es la herramienta de diseo, y los FIS son los
archivos que estructuran al FLC. A continuacin, veremos algunos aspectos de esta
herramienta conforme se procede con el diseo del FLC para el motor planteado.
4.2.1. Configuracin de las entradas y salidas
El primer bloque de todo FLC, como se explic anteriormente es el fuzzificador. Pero antes,
para definir los conjuntos difusos de entrada, es necesario primero determinar los universos de
discurso para las entradas y para la salida (en este ejemplo solo se tiene un salida, sistema
MISO).
Step Scope
0.8091
0.0007779s +0.04291s+0.85892
Motor DC
Sistemas de Control basados en Lgica Difusa 24
La entrada al FLC sern dos: la seal error e, y la derivada de la seal de error de/dt. Como se
plantear una referencia de -1 a 1, el mximo y mnimo error ser 2 y 2 respectivamente.
Entonces, planteamos ese universo de discurso para la seal de error y su derivada. Ahora se
procede a determinar los conjuntos difusos para las particiones creadas. En este caso se
elegirn tres conjuntos difusos: negativo, cero, positivo, todos con funciones de pertenencia del
tipo gaussiano, con desviacin 0.75.
Para la salida plantearemos un universo de discurso de -2 a 2. En este universo plantearemos
5 conjuntos difusos: muy_negativo, negativo, cero, positivo, muy_positivo. Todas ellas tendrn
funciones de pertenencia del tipo gaussiano tambin, con desviacin 0.333.
Para ingresar estos parmetros en Matlab, primero deber ingresarse el comando fuzzy. Tras
ello, se abrir FIS Editor, que ser la herramienta con la que se disear el FLC.
Figura 4.3. FIS Editor.
En la interfaz grfica se aprecian las particiones de entrada y salida. En este caso, para la entrada definiremos dos particiones: error y derror. Para lograrlo, primero debemos aadir un input haciendo click Edit->Add Variable->Input.
Sistemas de Control basados en Lgica Difusa 25
Hecho esto ya tendramos las particiones necesarias. Las renombramos y procedemos a definir
sus subconjuntos borrosos mediante la declaracin de sus funciones de pertenencia. Para ello
hacemos doble click sobre cada variable lingstica, y se abrir el Membership Function Editor.
En ella, definimos el universo de discurso, y el tipo gaussiano para las funciones de
pertenencia.
Figura 4.4. Membership Function Editor.
En la figura se pueden apreciar los parmetros definidos. En Range se define el universo de
discurso. Name ser la etiqueta asociada a dicho conjunto difuso. Type permite elegir el tipo de
funcin de pertenencia. Respecto a esto, Matlab ofrece una muy amplia gama de tipos, los
cuales son:
trimf (triangular)
trapmf (trapezoidal)
gbellmf (campana)
gaussmf (gaussiana)
gauss2mf (combinacin gaussiana)
sigmf (sigmoidea)
dsigmf (diferencia entre dos sigmoideas)
psigmf (producto de dos sigmoideas)
pimf (tipo PI)
smf (S-shaped)
zmf (z-shaped)
Sistemas de Control basados en Lgica Difusa 26
El uso de estas depender de la aplicacin y de los recursos. Por ejemplo, para diseo en
microcontroladores, la mejor opcin es emplear una triangular, debido a que permite
sensibilizar un intervalo y no consume mucha potencia de clculo. Sin embargo, como la
simulacin ser hecha en un computador, se elegir la de tipo gauss, tipo que consume mucha
ms potencia de clculo pero ofrece resultados ms precisos,
Luego, se procede con la particin de salida. La IDE solo te ofrece tres funciones de
pertenencia iniciales. Pero en este ejemplo se necesitarn 5. Entonces, necesitaremos agregar
dos ms. Para ello hacemos click en Edit -> Add MFs
Tras ello, se aadirn tres funciones de pertenencia ms. Eliminamos la sobrante y
procedemos a definir sus tipos. En este ejemplo nuevamente se elegirn funciones de tipo
gaussiano, con desviacin 0.3333.
Figura 4.5. Configuracin de la particin de salida.
4.2.2. Definicin del tipo de inferencia borrosa y del defuzzificador.
En la figura 4.6 se ha resalta a un conjunto de opciones que determinarn el tipo de inferencia
borrosa y al fuzzificador que se usarn para el diseo del FLC.
And method: Determina el procedimiento para el anlisis de sentencias AND en las
reglas. El valor por defecto es de mnimos, lo que implica que para una sentencia AND,
el resultado ser el mnimo de los pesos asociados a cada sentencia. Otro mtodo es
el del producto, sin embargo, este consume mucha capacidad, aunque es mucho ms
preciso.
Sistemas de Control basados en Lgica Difusa 27
Or method: Similar a And method. El valor por defecto es de mximos, lo que implica
que para el OR se elegir al mayor de los pesos de los conjuntos asociados a cada
sentencia.
Implication: Determina el tipo de implicacin borrosa. Su funcin es determinar el
procedimiento de adjudicacin de la salida cuando se llega a la sentencia THEN en la
regla. El valor por defecto es el de mnimos, aunque tambin est disponible el de
productos.
Agreggation: Determina el tipo de agregacin. El valor por defecto es max, el cual
aplica una operacin OR entre todos los conjuntos difusos de la salida asociadas a
cada regla.
Defuzzification: Determina el tipo de defuzzificador. El valor por defecto es centroid, el
cual aplica el defuzzificador por media de centros.
Figura 4.6. Parmetros del dispositivo de inferencia lgica y defuzzificador.
Para el diseo del FLC se emplearn los valores por defecto para la mquina de inferencia
borrosa. El siguiente paso es implementar la FAM.
Sistemas de Control basados en Lgica Difusa 28
4.2.3. Determinacin de las reglas y formacin de la FAM
Como tenemos dos particiones, cada una con 3 conjuntos difusos o etiquetas, para cubrir todos
los casos posibles deberemos plantear 32 reglas. Para este diseo se elegir un estilo de
reglas MAMDANI.
Figura 4.7. FAM para el FLC a disear.
Estas reglas se han planteado siguiendo un criterio simple. Si hubiese ms entradas, el
procedimiento de plantear estas reglas de complica.
Por ejemplo, la regla 1 se puede leer del siguiente modo: SI error es negativo Y derror es
negativo, ENTONCES salida es muy_negativo. El fundamento para esa regla es el siguiente:
un error negativo implica que la salida del sistema es ms grande que la referencia, por lo que
la accin a tomar deber ser negativa para reducir la salida. Del mismo modo, si la derivada del
error es negativa, ello implica que el error tiende a seguir creciendo negativamente, por lo que
la accin tambin debe ser negativa. Como ambos sugieren una accin negativa, entonces la
verdadera accin deber ser muy_negativo, para as manejar los dos casos planteados.
Otra regla que se puede extraer de la FAM es la siguiente: SI error es cero Y derror es cero,
ENTONCES salida es cero. Ello pues ambas condiciones implican que el sistema est en
equilibrio y no hace falta accin alguna sobre el mismo.
Para introducir esta FAM en el modelo de Simulink, es necesario hacer doble click en el
recuadro en blanco que tiene una cadena que dice Mamdani. Ello debido a que defecto, el FIS
Editor elige el formato Mamdani. Si se desea emplear el formato Sugeno, es necesario crear
oro FIS mediante File -> New FIS -> Sugeno.
Tras hacer doble click se abrir el Rule Editor.
Figura 4.8. Rule Editor.
error
negativo cero positivo
negativo muy_negativo negativo positivo
derror cero negativo cero positivo
positivo negativo positivo muy_positivo
Sistemas de Control basados en Lgica Difusa 29
En la interfaz, se aprecian los conjuntos difusos para las entradas y para la salida. Se puede
elegir el tipo de conexin entre sentencias, si sern AND u OR. Para el diseo de esta FLC se
emplear solo AND.
Cada que se quiera agregar una regla, debern seleccionarse las etiquetas propias de cada
sentencia, y una etiqueta de salida. Luego, con Add rule se procede a la creacin de la misma.
Un aspecto interesante es que adems se puede dar una prioridad o peso a cada regla
mediante la variable Weight. Con ello se puede establecer jerarquas de reglas, asocindoles
diferentes pesos. Para este diseo, todas las reglas tendrn peso 1.
Figura 4.9. Rule Editor con todas las reglas declaradas.
4.2.4. Creacin del FLC
El diseo realizado deber guardarse como un archivo FIS que posteriormente se utilizar en
Simulink para la simulacin.
Para ello, damos click en File -> Export -> To file...
En este diseo, se le asign el nombre de FLC_motor al archivo FIS generado. Este archivo
ser el cerebro del controlador borroso. Para cargarlo en Simulink, se deber crear primero una
instancia Fuzzy Logic Controller.
Sistemas de Control basados en Lgica Difusa 30
Figura 4.10. Fuzzy Logic Controller
En este bloque de Simulink, se cargar el FIS con el diseo del FLC previamente realizado.
Para ello, se hace doble click en el bloque, y en el espacio FIS file or structure se escribe el
nombre del FIS creado entre apstrofos: FLC_motor.fis.
Figura 4.11. Cargado del fichero .fis en el FLC.
Con esto ya se tendra el FLC completamente diseado. El resto es calibrar las entradas y
salidas de manera que sean compatibles con las seales que arroja el sistema.
4.3. Simulacin
En Simulink se implement el esquema de la figura 4.12. En l se aprecia las constantes de
ganancia agregadas para calibrar al FLC con la planta dada.
Para la simulacin se vern tres casos de prueba: para una entrada escaln, para un tren de
pulsos cuadrados de periodo 1 segundo y una seal de forma especial.
Se compararn los resultados en lazo abierto (sin FLC) y en lazo cerrado (con FLC).
Step Scope5Scope4
Scope3
Scope2Scope1
Scope
Pulse
Generator
0.8091
0.0007779s +0.04291s+0.85892
Motor DC1
0.8091
0.0007779s +0.04291s+0.85892
Motor DC
0.5
Gain7
2.4
Gain6
2
Gain5
0.2
Gain4
0.5
Gain3
2.4
Gain2
2
Gain1
0.2
Gain
Fuzzy Logic
Controller1
Fuzzy Logic
Controller
du/dt
Derivative1
du/dt
Derivative
FIEE-UNMSM
Sistemas de Control basados en Lgica Difusa 31
Figura 4.12. Esquema en Simulink para el testeo del FLC diseado.
0.5
Tacogenerador
Step1
Salida FLC
Planta con FLC
2
P
0.8091
0.0007779s +0.04291s+0.85892
Motor DC1
0.8091
0.0007779s +0.04291s+0.85892
Motor DC
Lazo abierto
2.4
Ganancia FLCFuzzy Logic
Controller
du/dt
Derivative
0.2
D
Comparativo
FIEE-UNMSM
Sistemas de Control basados en Lgica Difusa 32
4.3.1. Prueba escaln
Se aplic la seal escaln, y se obtuvieron los siguientes resultados.
Figura 4.13. Respuesta de la planta controlada con FLC (rosado) a la entrada escaln (rojo).
Se puede apreciar que no hay error de posicin, ni oscilaciones ni sobreimpulso, que son los
efectos tpicos de otros controladores, como el PID. En la grfica siguiente se muestra la salida
del FLC.
Figura 4.14. Salida de control del FLC.
FIEE-UNMSM
Sistemas de Control basados en Lgica Difusa 33
En el siguiente grfico se muestra la respuesta comparativa del sistema en lazo abierto y el
sistema controlado con el FLC diseado.
Figura 4.15. Salida comparativa. En rojo la entrada escaln, en azul la salida en lazo abierto y en
rosa la salida controlado con un FLC.
En el comparativo se muestra las mejoras que el FLC ha introducido: menor tiempo de
respuesta, no hay error de posicin, no hay sobreimpulso.
4.3.2. Prueba tren de pulsos
En este test se emplear un generador de impulsos. Estos sern cuadrados, positivos, con
periodo de 1 segundo y ciclo de trabajo de 50%.
Figura 4.16. Salida del FLC (rosa) y la seal de entrada (rojo).
FIEE-UNMSM
Sistemas de Control basados en Lgica Difusa 34
Figura 4.17. Comparativo. En rojo la seal de prueba, en azul la salida en lazo abierto, y en rosa la
salida controlada por el FLC.
Se aprecia nuevamente el buen desempeo del FLC.
4.3.3. Prueba con seal especial
En vista de que el FLC se dise pensando soportar referencias negativas, se cre una seal
de prueba que permita evaluar el desempeo del FLC para seal nula, seal a 1 voltios y seal
a -1 voltio. El resultado comparativo se presenta a continuacin.
Figura 4.18. Seal de entrada (rojo), salida en lazo abierto (azul) y salida controlada con el FLC
(rosa)
FIEE-UNMSM
Sistemas de Control basados en Lgica Difusa 35
4.4. Algunas observaciones sobre la simulacin
El FLC diseado solo tom como entradas al error y su derivada. Sin embargo, para lograr
mejores prestaciones tambin se pudo tomar a la integral del error. Sin embargo, dicha adicin
sale fuera del objetivo de este trabajo de investigacin.
Existen mtodos ms avanzados para el diseo de FLC, a las que inclusive se le aade
tcnicas de aprendizaje. Con esto, se busca incrementar el carcter heurstico de los
controladores.
Tambin estn las aplicaciones hbridas, que mezclan controladores clsicos como el PID, con
un controlador difuso. Dichas aplicaciones presentan un rendimiento mucho mejor que si se
tratase de un controlador clsico o un FLC solamente. Otro modelo hbrido, de mucho mayor
poder que el mencionado anteriormente, son los controladores neurodifusos. Estos combinan
las capacidades de aprendizaje de las redes neuronales artificiales con la sencillez y eficacia
de toma de decisiones de la lgica difusa.
5. Conclusiones
La lgica difusa rompe el esquema de la lgica clsica al introducir el concepto de
funcin de pertenencia.
Las funciones de pertenencia determinan el grado de pertenencia de un elemento
definido dentro de un universo de discurso hacia un determinado conjunto difuso.
Las variables lingsticas se relacionan con las particiones borrosas. Dentro de cada
particin pueden haber varios conjuntos difusos, los cuales se relacionan
lingsticamente hablando con las etiquetas de la variable.
Los FLC o controladores lgicos difusos no requieren de un modelo de la planta a
controlar para disearse. En su lugar, requiere el planteamiento de reglas basadas en
criterios propios del diseador. Es por eso que los FLC permiten aplicar de mejor
manera los conocimientos poco exactos que el diseador tiene de una planta sobre el
controlador.
Todo FLC est conformado por, al menos 4 bloques: el fuzzificador, encargado de
adaptar las entradas al FLC; la memoria de asociacin difusa o FAM, encargada de
contener todas las reglas; la unidad de inferencia borrosa, encarga de generar las
salidas en funcin de las variables de entrada y las reglas; y por ltimo, el
defuzzificador, encargado de adaptar las salidas para que sean aplicables a la planta a
controlar.
La herramienta FIS Editor de la Fuzzy Logic Toolbox de Matlab permite disear un FLC
de manera sencilla. Tambin existen otras IDEs especializadas para el diseo de FLC,
como lo son FuzzyTECH, FIDE, TILLShell, Cubicalc, etc.
En s, le tcnica de control difuso no es mejor que otras tcnicas. Simplemente supone
un mtodo alternativo para solucionar el paradigma del control automtico, como lo son
el PID, el control neuronal, el control ptimo, etc.
FIEE-UNMSM
Sistemas de Control basados en Lgica Difusa 36
6. Referencias
Libros, manuales y papers:
REDES NEURONALES Y SISTEMAS DIFUSOS, 2da Edicin Ampliada y Revisada.
Bonifacio Martn del Bro, Alfredo Sanz Molina, Editorial Alfaomega-Rama. Espaa,
octubre del 2001.
Fuzzy Logic Toolbox Users Manual, Matlab.
Sistemas de Lgica Difusa, Marco Antonio Prez Cisneros, James Vern.
Control mediante Lgica Difusa, Samir Kuoro, Rodrigo Musalem.
Fuzzy Logic Speed Control of an Induction Motor, Jaime Fonseca, Joao L. Afonso,
Julio S. Martins, Carlos Couto.
Links Web:
http://es.wikipedia.org/wiki/L%C3%B3gica_difusa
http://www.tdx.cat/bitstream/handle/10803/6887/04Rpp04de11.pdf;jsessionid=3ADB4A198F97
D861DCCB5299A63D01BB.tdx2?sequence=4
http://profesores.elo.utfsm.cl/~tarredondo/info/softcomp/Introduccion%20a%20la%20Logica%20
Difusa.pdf
http://arxiv.org/ftp/arxiv/papers/1402/1402.3654.pdf
https://www.calvin.edu/~pribeiro/othrlnks/Fuzzy/tutorial1.htm
http://www.mathworks.com/help/fuzzy/fuzzylogiccontrollerwithruleviewer.html
http://www.mathworks.com/help/fuzzy/examples/membership-function-gallery.html
http://www.mathworks.com/help/fuzzy/fuzzylogiccontroller.html
FIEE-UNMSM
Sistemas de Control basados en Lgica Difusa 37
7. Anexos
Cdigo para generacin de funciones de pertenencia trapezoidal
function u_x=trapezoidal(a,b,c,d,x) u_x=zeros(1,length(x)); at=a; bt=b; ct=c; dt=d; for i=1:length(x) if (i>=dt+1) u_x(i)=0; elseif (i>=ct+1) u_x(i)=(dt-i)/(dt-ct); elseif (i>=bt+1) u_x(i)=1; elseif (i>=(at+1)) u_x(i)=(i-at)/(bt-at); else u_x(i)=0; end end end
Cdigo para graficar los tipos de funciones de pertenencia
clc
%Grfico 1: Logica clasica tallas=50:300; utallas_bajos=ones(1,length(tallas)); utallas_altos=zeros(1,length(tallas)); for i=50:300 if (i>175) utallas_bajos(i-49)=0; utallas_altos(i-49)=1; end end
figure(1) subplot(1,2,1) plot(tallas,utallas_bajos,'r') axis([50 300 -0.5 1.5]) title('Personas bajas') xlabel('Talla') ylabel('Pertenencia') grid subplot(1,2,2) plot(tallas,utallas_altos,'b') axis([50 300 -0.5 1.5]) title('Personas altas') xlabel('Talla') ylabel('Pertenencia') grid
FIEE-UNMSM
Sistemas de Control basados en Lgica Difusa 38
%Grfico 2: Logica difusa tallas=50:300; utallas_bajos=ones(1,length(tallas)); utallas_altos=zeros(1,length(tallas)); for i=50:300 if (i>190) utallas_altos(i-49)=1; utallas_bajos(i-49)=0; elseif (i>160) utallas_altos(i-49)=1-(190-i)/30; utallas_bajos(i-49)=1-(i-160)/30; end end
figure(2) plot(tallas,utallas_bajos,'r',tallas,utallas_altos,'b') axis([100 250 -0.5 1.5]) title('Clasificacin sen la lgica difusa') xlabel('Talla') ylabel('Pertenencia') grid legend('Personas Bajas','Personas Altas')
%Grfico 3: Trapezoidal x=0:99; u_x=zeros(1,100); a=25; b=40; c=60; d=75; for i=1:100 if (i>d) u_x(i)=0; elseif (i>c) u_x(i)=(d-i)/(d-c); elseif (i>b) u_x(i)=1; elseif (i>a) u_x(i)=(i-a)/(b-a); end end
figure(3) plot(x,u_x) axis([0 100 -0.5 1.5]) title('Funcin de Pertenencia Trapezoidal') xlabel('x') ylabel('u(x)') grid
%Grfico 4: Triangular x=0:99; u_x=zeros(1,100); a=25; b=50; c=50;
FIEE-UNMSM
Sistemas de Control basados en Lgica Difusa 39
d=75; for i=1:100 if (i>d) u_x(i)=0; elseif (i>c) u_x(i)=(d-i)/(d-c); elseif (i>b) u_x(i)=1; elseif (i>a) u_x(i)=(i-a)/(b-a); end end
figure(4) plot(x,u_x) axis([0 100 -0.5 1.5]) title('Funcin de Pertenencia Triangular') xlabel('x') ylabel('u(x)') grid
%Grfico 5: Singleton x=0:99; u_x=zeros(1,100); a=50; u_x(a+1)=1; figure(5) plot(x,u_x,'r') axis([0 100 -0.5 1.5]) title('Funcin de Pertenencia Singleton') xlabel('x') ylabel('u(x)') grid
%Grfico 6: S x=0:99; u_x=zeros(1,100); a=30; b=70; for i=1:100 if (i>b) u_x(i)=1; elseif (i>(a+b)/2) u_x(i)=1-2*((i-b)/(b-a))^2; elseif (i>a) u_x(i)=2*((i-a)/(b-a))^2; end end
figure(6) plot(x,u_x) axis([0 100 -0.5 1.5]) title('Funcin de Pertenencia S') xlabel('x') ylabel('u(x)') grid
FIEE-UNMSM
Sistemas de Control basados en Lgica Difusa 40
%Grfico 7: Modelo digital clsico x=0:99; u_x=zeros(1,100); a=50; for i=1:100 if (i>a) u_x(i)=1; end end
figure(7) plot(x,u_x) axis([0 100 -0.5 1.5]) title('Modelo Lgica Clsica') xlabel('x') ylabel('u(x)') grid
Cdigo para graficar las operaciones entre conjuntos difusos
clc
x=0:99; A=zeros(1,100); B=zeros(1,100);
%A aA=25; bA=40; cA=60; dA=75; for i=1:100 if (i>dA) A(i)=0; elseif (i>cA) A(i)=(dA-i)/(dA-cA); elseif (i>bA) A(i)=1; elseif (i>aA) A(i)=(i-aA)/(bA-aA); end end
%B aB=1; bB=10; cB=30; dB=40; for i=1:100 if (i>dB) B(i)=0; elseif (i>cB) B(i)=(dB-i)/(dB-cB);
FIEE-UNMSM
Sistemas de Control basados en Lgica Difusa 41
elseif (i>bB) B(i)=1; elseif (i>aB) B(i)=(i-aB)/(bB-aB); end end
%Complemento u_xcom=1-A; figure(1) plot(x,A,'b',x,u_xcom,'r') axis([0 100 -0.5 1.5]) grid legend('Conjunto A','Conjunto Complemento de A') title('Complemento')
%Union u_union=zeros(1,100); for i=1:100 u_union(i)=max(A(i),B(i)); end figure(2) subplot(2,1,1) plot(x,A,'g',x,B,'b') axis([0 100 -0.5 1.5]) grid legend('Conjunto A','Conjunto B') title('Conjuntos Base') subplot(2,1,2) plot(x,u_union,'r') axis([0 100 -0.5 1.5]) grid legend('Conjunto Union A y B') title('Union')
%Interseccion u_inter=zeros(1,100); for i=1:100 u_inter(i)=min(A(i),B(i)); end figure(3) subplot(2,1,1) plot(x,A,'g',x,B,'b') axis([0 100 -0.5 1.5]) grid legend('Conjunto A','Conjunto B') title('Conjuntos Base') subplot(2,1,2) plot(x,u_inter,'r') axis([0 100 -0.5 1.5]) grid legend('Conjunto Interseccion A y B') title('interseccin')
%Norma uBase=A/1.5; uNorma=A/max(A);
FIEE-UNMSM
Sistemas de Control basados en Lgica Difusa 42
figure(4) subplot(1,2,1) plot(x,uBase,'b') axis([0 100 -0.5 1.5]) grid title('Conjunto Base') subplot(1,2,2) plot(x,uNorma,'r') axis([0 100 -0.5 1.5]) grid title('Conjunto Normalizado')
%Concentracion u_xconc=A.^2; figure(5) plot(x,A,'b',x,u_xconc,'r') axis([0 100 -0.5 1.5]) grid legend('Conjunto A','Conjunto Concentrado A') title('Concentracin')
%Dilatacin u_xdila=A.^0.5; figure(6) plot(x,A,'b',x,u_xdila,'r') axis([0 100 -0.5 1.5]) grid legend('Conjunto A','Conjunto Dilatado A') title('Dilatacin')
Fuzzificador
function u_xprima=fuzzifier(xprima,u_x) u_xprima=u_x(xprima); end
Cdigo para obtencin de pesos en Matlab
%Universo de discurso
x=0:99;
%Generando 1 particion con 3 subconjuntos borrosos u_x1=trapezoidal(1,30,30,59,x); u_x2=trapezoidal(25,54,54,83,x); u_x3=trapezoidal(60,80,80,100,x);
figure(1) plot(x,u_x1,x,u_x2,x,u_x3)
FIEE-UNMSM
Sistemas de Control basados en Lgica Difusa 43
grid axis([0 100 -0.5 1.5]) title('Particin para la variable muestreada') xlabel('x muestreada') ylabel('u(x)') legend('Conjunto 1','Conjunto 2','Conjunto 3')
%Obteniendo los pesos xp=75; peso1=fuzzifier(xp,u_x1) peso2=fuzzifier(xp,u_x2) peso3=fuzzifier(xp,u_x3)
Top Related