Controlador fuzzy

Anuncio
Diseño de un controlador fuzzy
para el problema del péndulo invertido
Cátedra de Inteligencia Computacional
Facultad de Ciencias Exactas y Tecnología − Universidad Nacional de Tucumán
Argentina, Mayo de 1999
Contenido
Descripción del problema
Diagrama en bloques y descripción del controlador
Especificación de modelos matemáticos
Modelo conceptual e implementación
Configuración y parametrización del sistema
Resultados de las simulaciones
Conclusiones
Apéndice A − Desarrollo matemático del Simulador
Apéndice B − Utilización de un esquema de caching para exploración de reglas.
Acerca de los Autores
Descripción del problema
El sistema que se intenta controlar consiste de un carro que tiene adosada una varilla en cuyo extremo se
encuentra un cuerpo de cierta masa.
El carro solo puede moverse hacia delante y hacia atrás en una línea recta, al aplicársele una fuerza F.
La varilla está unida al centro del carro mediante una juntura sin rozamiento, que le permite girar sobre un eje
situado en la juntura y con un grado de libertad sobre el plano determinado por la dirección de movimiento del
carro y la normal al suelo.
Puede considarse que la varilla no tiene masa.
1
Los datos del problema son la masa del carro y del extremo de la varilla, la longitud de la varilla, y el ángulo y
la velocidad angular en cualquier momento.
Se necesita controlar la fuerza F para llevar la varilla a posición vertical. El ángulo y la velocidad angular
inicial pueden ser cualesquiera dentro de los rangos que la solución especifique. La solución debe
implementar un sistema experto con conjuntos fuzzy.
Diagrama en bloques y descripción del controlador
Diagrama general
Diagrama detallado del controlador
2
El controlador está compuesto por un fuzzificador (fuzzificator), que se encuentra a la entrada del mismo y
que convierte los valores de naturaleza nítida que provienen de los sensores en variables de tipo fuzzy. El
proceso se realiza mapeando los valores tomados (una vez normalizados a una escala de 0 a 100) en una
familia de conjuntos fuzzy que el fuzzificador posee para cada tipo de dato que maneja. Una vez obtenidos los
hechos tomados del proceso mismo, se almacenan en una base de hechos (fact base) de donde son tomados
por el motor de inferencia (inference engine) que puede considerarse el cerebro del controlador. El motor de
inferencia realiza una exploración en la base de conocimientos (knowledge base) −que contiene las reglas
necesarias para controlar el proceso− en busca de reglas cuyos antecedentes coincidan con los hechos en la
base de hechos. Las reglas obtenidas de este proceso de exploración son "disparadas", es decir, de ellas se
infieren nuevos hechos que el sistema debe convertir en valores nítidos (para llevar a cabo esta tarea, se utiliza
el defuzzificador, que en términos generales posee un funcionamiento inverso al del fuzzificador).
Algunos detalles a notar son los siguientes:
• Una vez que las variables son capturadas por los sensores, éstas poseen una forma poco conveniente
para su tratamiento dentro del controlador, por lo cual se introduce un módulo de acondicionamiento
(conditioner) que lleva a cabo una tarea de normalización. Idéntica función cumple el bloque situado
en el defuzzificador.
• Debido a que, en nuestro caso, la exploración en la base de conocimiento se realiza de una manera
secuencial, se dispone de una cache que actúa como memoria intermedia entre el controlador y la base
de conocimiento acelerando el proceso de exploración. La performance obtenida con la
implementación de esta cache es muy superior a la versión de búsqueda puramente secuencial. Esto es
así porque el proceso que se desea controlar es un proceso analógico, y como consecuencia de su
continuidad inherente, los cambios en las condiciones iniciales (una vez fuzzificadas las variables
capturadas de los sensores) son poco frecuentes.
• En el diagrama se muestra un solo sensor y un solo actuador, pero el controlador fue desarrollado para
soportar cualquier cantidad de dichos elementos. Se conserva el diagrama en esta forma por claridad.
3
Para la simulación del sistema se debe reemplazar el bloque de proceso (process) por un bloque simulador. El
simulador posee una descripción matemática del proceso a controlar.
Especificación de modelos matemáticos
Es necesario especificar cuatro modelos matemáticos a ser utilizados en el proyecto: el método de
fuzzificación, el método de defuzzificación, el método para evaluación de consecuentes y el modelo de
comportamiento del péndulo invertido.
Función de fuzzificación
Comenzaremos por la función de fuzzificación. Esta función toma una variable nítida y sobre la base de su
tipo escoge la familia de funciones de pertenencia correspondiente. Para cada una de las funciones, revisa si el
valor de la variable está dentro del rango de valores de abscisas cuyas ordenadas son distintas de cero (este
rango es un dato de la función). En caso de pertenecer a este rango, se evalúa la función para obtener el grado
de pertenencia de la variable al conjunto fuzzy definido por la función.
Gráficamente:
Cabe destacar que una variable puede pertenecer a varios conjuntos fuzzy. El resultado de esta operación es
un conjunto de pares ordenados de la forma (conjunto, grado de pertenencia). En realidad lo que se obtiene es
una fact base, conjunto de objetos fact cuyos atributos son (variable, conjunto, grado de pertenencia).
En nuestro sistema hemos implementado dos tipos de funciones: triangular y trapezoidal. La combinación de
ambos tipos de funciones ofrece una mayor riqueza descriptiva en la fase de fuzzificación.
Función de defuzzificación
La función de defuzzificación es la centroide. Consiste en calcular, para cada hecho, el centro de masa de la
figura que resulta de un corte horizontal de la función de fuzzificación a la altura ð , así como el área relativa
resultante con respecto a la original.
Gráficamente:
4
Una vez que se obtienen estos datos, se considera cada hecho como una masa puntual y se calcula el centro de
masa del cuerpo dado por todos los hechos de la fact base. La posición resultante sobre el eje x es el valor
defuzzificado de la variable en cuestión (valor nítido o crisp).
Método de evaluación de consecuentes
El método elegido para la evaluación de una regla es el método MIN−MAX que se describe a continuación:
• Se calcula el ð resultante del antecedente con la siguiente función:
ð A = min {ð 0, ð 1, ..., ð n}
siendo ð i el grado de pertenencia del i−ésimo par (variable, conjunto_fuzzy) correspondiente al antecedente.
• Una vez calculado ð A para cada consecuente, se evalúa el ð C que se asignará finalmente al par
(variable, conjunto_fuzzy) resultante de la regla (consecuente). ð C se calcula de la siguiente manera:
ð C = max {ð 0, ð 1, ..., ð n}
siendo ð i el ð A obtenido para cada regla en la que el consecuente coincida.
Desarrollo matemático del simulador
La expresión que describe al sistema es la siguiente:
ð = ð ð / I = (PT ds + FT dc) / (mStick ds2 + mCart dc2)
Para una descripción detallada del desarrollo matemático, consulte el Apéndice A.
A la hora de resolver esta fórmula en la computadora, se escogió el método de Ralston (Runge−Kutta de
segundo orden).
Modelo conceptual e implementación
El modelo conceptual se realizó siguiendo el paradigma objeto, en particular utilizando la notación UML. El
controlador y el simulador fueron codificados en Java.
Configuración y parametrización del sistema
Elección de funciones de pertenencia
5
Las funciones de pertenencia elegidas para cada una de las variables intervinientes en el controlador son las
siguientes:
Se utilizan 7 funciones de pertenencia (7 conjuntos fuzzy) en las variables ángulo y velocidad. En la variable
de salida fuerza, se agregan 2 funciones adicionales para lograr una reacción rápida y decisiva en situaciones
de condiciones críticas del sistema.
Las funciones reciben los siguientes nombres (de izquierda a derecha):
♦ Grande Negativa
♦ Mediana Negativa
♦ Pequeña Negativa
♦ Aproximadamente Cero
♦ Pequeña Positiva
♦ Mediana Positiva
♦ Grande Positiva
En el caso de la fuerza, se agregan en los extremos: Enorme Negativa y Enorme Positiva.
El eje de las abscisas está normalizado y expresado porcentualmente sobre el rango de la correspondiente
variable. Esto es una buena característica del sistema ya que facilita su sintonización al tener que cambiar
solamente el dominio de las variables. Además, esta característica encuentra fundamento en el hecho de que la
distribución y geometría de las funciones de pertenencia son propias de las variables insertadas en el entorno
del proceso.
6
Puede notarse que las funciones no se encuentran equidistantes ni tienen idéntica forma, sino que presentan
una separación relativa mayor a medida que su centro se aleja del punto medio de la gráfica. Asimismo, el
área de las funciones se hace cada vez mayor hacia los extremos y tiene su valor mínimo en la función central.
Esta distribución se asemeja a una "sintonía" que se hace más fina a medida que los valores medidos de
ángulo y velocidad se aproximan a cero, permitiendo al controlador un mejor desempeño y brindando al
sistema una mayor convergencia.
Dicho de otra manera: cuando ángulo y velocidad son grandes, el controlador hace hincapié en una rápida
recuperación por medio de la aplicación de una fuerza grande. En cambio, cuando ángulo y velocidad se
hacen pequeños, el sistema trata de proporcionar una fuerza pequeña, tomando muy en cuenta pequeños
cambios que puedan producirse en las variables de entrada y así logrando una gran estabilidad y precisión en
el punto de equilibrio.
Determinación del dominio de las variables
Para determinar el dominio de las variables, tanto de entrada como de salida, es necesario tener conocimiento
de las características físicas del péndulo. Nosotros utilizamos los siguientes parámetros:
Masa del péndulo: 1 kg.
Masa del carro: 10 kg.
Longitud del péndulo: 1 m.
También establecimos que la fuerza máxima que puede proporcionar el motor es de 100 N.
Mediante estimación y simulación concluimos que el ángulo máximo del cual puede recuperarse el sistema
(cuando la velocidad es cero) es de ð 45º y la velocidad máxima que puede desarrollar el péndulo durante el
proceso es de ð 100 º/s.
Se debe notar que estos valores obtenidos para las variables ángulo y velocidad son muy dependientes de la
frecuencia de sampleo de los sensores. En nuestro caso, el tiempo entre samples debe ser menor a 200 ms,
equivalente a una frecuencia de sampleo superior a los 5 Hz.
Establecimiento y sintonización de la base de conocimiento
Para la confección de reglas en nuestro sistema utilizamos el siguiente formato:
IF a IS b AND c IS d AND ... THEN x IS y (1)
O bien, para facilitar la escritura, tamaño y claridad de la base de conocimiento:
IF a IS b AND ... AND h IS i OR j IS k THEN x IS y (2)
Que puede interpretarse como un conjunto de reglas de la forma (1):
IF a IS b AND ... AND h IS i THEN x IS y
IF a IS b AND ... AND j IS k THEN x IS y
De esta manera, la base de conocimiento puede escribirse de forma más compacta y más entendible.
7
La matriz utilizada fue generada a partir del conocimiento no−experto de los autores, pero el primer resultado
fue sorprendentemente positivo por lo cual solo hicieron falta algunos ajustes que fueron derivados
directamente del análisis de las gráficas obtenidas de la simulación.
VELOCIDAD
Se debe notar que algunas entradas poseen un doble valor correspondiente a la fuerza. Este tipo de reglas
resultan en valores aproximadamente intermedios entre los conjuntos intervinientes, por lo que se puede
lograr una aproximación más fina ofreciendo un mejor resultado.
Resultados de las simulaciones
A continuación se muestran gráficas que ilustran el comportamiento del controlador ante diferentes
condiciones iniciales.
El código de colores es el siguiente: fuerza en azul, ángulo en rojo y velocidad angular en verde.
Las pruebas se hicieron solo para ángulos positivos ya que el sistema es completamente simétrico.
Las unidades son: fuerza en newton, ángulo en grados y velocidad angular en grados / segundo. Las gráficas
están a escala e indican las condiciones iniciales.
8
9
10
11
Conclusiones
Los controladores basados en sistemas expertos de tipo fuzzy ofrecen muy buen desempeño en sistemas tanto
lineales como no lineales, incluso en aquellos sistemas donde es difícil (o incluso imposible) encontrar un
modelo matemático exacto del proceso a controlar. Actúan de manera totalmente predecible y además es
posible conocer el estado del sistema en cualquier momento y las razones por las que tomó una determinada
decisión.
La estructura del controlador propuesta en este trabajo, y en general la de todos los controladores de este tipo,
permite su fácil adaptación a nuevos problemas ahorrando tiempo de desarrollo en el controlador.
Apéndice A
Desarrollo matemático del simulador
A continuación se realiza un modelo matemático del comportamiento del sistema.
Se presenta un esquema para introducir las variables y símbolos utilizados en el desarrollo.
El ángulo ð y la fuerza F se dibujaron respetando las convenciones de sentido positivo.
12
El diagrama se simplificó concentrando la masa del carro en un punto. Sobre este diagrama se realizó la
descomposición de fuerzas.
Descripción de las variables
Nombre
Mstick
Mcart
P
PT
F
FT
L
Ds
Dc
ð
Descripción
Masa de la punta de la varilla
Masa del carro
Peso de la punta de la varilla
Componente de P perpendicular a la varilla
Fuerza aplicada al carro
Componente de F perpendicular a la varilla
Longitud de la varilla
Distancia entre la punta de la varilla hasta el centro de gravedad
Distancia entre el carro y el centro de gravedad
Angulo entre la varilla y la normal al suelo
Se analiza el movimiento angular del cuerpo al girar en torno a su centro de gravedad.
Datos: mStick, mCart, l, ð , F, g (gravedad).
Dado que
l = ds + dc
ds mStick = dc mCart
se encuentra
13
ds = l mCart / (mCart + mStick)
dc = l mStick / (mCart + mStick)
Sumando los torques ejercidos sobre el centro de masa:
ð ð = PT ds + FT dc
donde
PT = P seno(ð ) = mStick g seno(ð )
FT = F coseno(ð )
y dado que
ðð=Ið
donde
I = momento de inercia del sistema respecto al eje de rotación (que pasa por el centro de gravedad).
ð = aceleración angular de la varilla d2ð /dt2.
al calcular el momento de inercia como
I = ð mr2 = mStick ds2 + mCart dc2
se obtiene la descripción matemática del sistema:
ð = ð ð / I = (PT ds + FT dc) / (mStick ds2 + mCart dc2)
No se analiza la posición del carro en el tiempo porque el enunciado del problema solo hace referencia a
controlar la posición angular de la varilla.
Aunque la deducción de la fórmula puede tener imprecisiones tales como fuerzas no contempladas, las
simulaciones muestran un comportamiento bastante aceptable y cercano a la realidad.
Apéndice B
Utilización de un esquema de caching para exploración de reglas.
Aprovechando la naturaleza continua de las variables ángulo y velocidad en el presente sistema, decidimos
incorporar una cache en el controlador para agilizar la búsqueda de reglas en la base de conocimiento.
La cache seleccionada es de tamaño 1 y posee una estructura interna como la mostrada en la tabla 1:
14
El campo Tag se utiliza para realizar la comparación entre los pares (variable, conjunto_fuzzy) que provienen
del fuzzificador y los pares que hacen que una regla contenida en la cache se dispare. El campo Rules contiene
las reglas a disparar.
Ya que es una cache unitaria, no se requiere especificar un algoritmo de reemplazo de páginas.
Los resultados de la implementación de la cache son muy buenos. La performance global del sistema se ve
notablemente mejorada. Resultados de simulaciones efectuadas en el controlador presentado en este informe
muestran que el número de cache misses es de tan solo 11 en un total de 500 muestras. Al analizar mejor estos
resultados, observamos que en las primeras 100 muestras se producen los 11 misses: más allá de este tiempo,
el controlador logra llevar al proceso a un punto de equilibrio y lo mantiene con gran estabilidad (las
condiciones varían muy poco). En este sistema, que consta con una base de conocimiento de unas 50 reglas,
se realizaron en total 775 iteraciones aproximadamente contra unas 12500 necesarias en un esquema de
búsqueda puramente secuencial.
15
Descargar