Professional Documents
Culture Documents
PRÁCTICA 1:
Diseño de reguladores difusos
CURSO 01/02
Departamento de Ingeniería
Área de Ingeniería de Sistemas y Automática
ISA-UMH © R-00-CAS001v1.0
Escuela Politécnica Superior de Elche
Ingeniería Industrial
1. Objetivos
2. Introducción
Ingeniería Industrial
a = newfis('ejemplo');
a = addvar(a,'input','x',[0 8]);
a = addmf(a,'input',1,'pequeño','trapmf',[0 0 1 3]);
a = addmf(a,'input',1,'medio','trapmf',[1 3 3 7]);
a = addmf(a,'input',1,'grande','trapmf',[3 7 8 8]);
showfis(a)
El comando newfis crea un sistema difuso nuevo (fis es la abreviatura de fuzzy inference
system). El comando addvar añade una variable de entrada o salida al sistema. Tiene 4
parámetros:
Ingeniería Industrial
Función Expresión
Gaussiana gaussmf(dominio, [σ, centro])
forma π pimf(dominio, [a, b, c, d])
Sigmoide sigmf(dominio, [amplitud, centro])
forma S smf(dominio, [a, b])
Trapezoidal trapmf(dominio,[a, b, c, d])
Triangular trimf(dominio, [a, b, c])
forma Z zmf(dominio, [a, b])
Ingeniería Industrial
La primera acción a realizar es definir el número de entradas y salidas que debe tener el
sistema difuso utilizando la opción Edit->Add input o Edit->Add output.
En nuestro primer ejemplo se va a trabajar con el sistema más sencillo, con una
sola entrada y salida (sistema SISO), por lo que el número de variables que aparecen por
defecto es el correcto.
En esta ventana se declaran las características globales que se asumen para todo
el sistema a través de las listas desplegables correspondientes :
Debe tenerse en cuenta que siempre se supone que el motor de inferencia opera en el
modo de reglas individuales, y que el difusificador no puede ser seleccionado, siendo
siempre de tipo unitario o singleton, aplicado a la entrada del sistema.
En nuestro ejemplo, vamos a dejar todos los parámetros con sus valores por defecto.
Ingeniería Industrial
Lo primero que se debe hacer es declarar el dominio de cada variable, que en este caso
es un intervalo que se introduce en el campo Range. El campo Display Range indica el
rango que se utilizará en el subpanel que muestra las funciones de pertenencia.
Siguiendo el ejemplo visto en clase, introduciremos un rango comprendido entre 0 y
8, tanto para la variable de entrada como para la de salida.
Ingeniería Industrial
Ingeniería Industrial
Por último se editan las reglas utilizando el editor correspondiente que se abre
mediante la opción View->Edit Rules o haciendo una doble pulsación sobre el icono que
representa la base de reglas en la ventana principal. La ventana que se abre, es
simplemente un panel de edición donde se editan las reglas siguiendo un formato
prefijado. En nuestro ejemplo, introduciremos las tres reglas que aparecen en la
figura siguiente.
Ingeniería Industrial
donde Confianza_regla es un valor del intervalo [0,1] que refleja la confianza que se
tiene sobre esa regla de control, que se refleja en un peso de la misma sobre el valor de
salida del regulador.
Ingeniería Industrial
ATENCIÓN : La primera vez que se salva un sistema difuso nuevo hay que
salvarlo con la opción Save as, pues de lo contrario se creará un fichero con el nombre
untitle.fis
Ingeniería Industrial
• File->New Sugeno FIS para editar un sistema difuso tipo Sugeno, que
estudiaremos en próximas sesiones de teoría, donde los consecuentes son
funciones lineales de las variables de entrada.
Ingeniería Industrial
Q s = k s 2 gh
∂h
( A0 + kh) = Qe − Q s
∂t
Qe = k e u
donde:
• A0 es el área de la base,
Ingeniería Industrial
ke
Qe
ks
Qs
k
% SimuLink model. ke = 2;
function [sys, x0] = ue = u(1);
depo(t, x, u, flag, p) h = x(1);
if flag == 0 % depo.
sys = [1; 0; 1; 1; 0; 0]; Qs = ks*sqrt(2*g*h);
x0(1) = 0.0; Qe = ke*ue
end derh = (Qe - Qs)/(A0 + k*h);
if (abs(flag) == 1) | end
(abs(flag) == 3) if abs(flag) == 1
% Parámetros sys(1) = derh;
g = 9.8; elseif abs(flag) == 3
A0 = 1; sys(1) = h;
k = 1; elseif flag ~= 0
ks = 0.25; sys = [ ];
end
Ingeniería Industrial
Ingeniería Industrial
IMPORTANTE
Ingeniería Industrial
El flujo total de salida del agua se puede calcular como la suma del flujo de agua fría y
el flujo de agua caliente:
f T = f F + fC
La temperatura del agua de salida puede calcularse como la media ponderada de las
temperaturas de agua fría y caliente, teniendo en cuenta los flujos:
f F * TF + f C * TC
T=
fF + fC
Ingeniería Industrial
Los bloques flow rate y temp son expresiones en Matlab para calcular el flujo total y la
temperatura del agua, respectivamente. La expresión para el bloque flow rate es la
siguiente:
u(1)+u(3)
donde u(1) es el flujo de agua caliente y u(3) es el flujo de agua fría. La expresión para
el bloque temp es la siguiente:
(u(1)*u(2) + u(3)*u(4))/(u(1)+u(3))
Ingeniería Industrial
Los esquemas para simular las válvulas de agua fría y caliente son análogos. En
la figura 4 se muestra el bloque para la válvula de agua fría.
Ingeniería Industrial
Puede observarse que para obtener el flujo de agua fría se ha incluido un integrador para
la variación de la posición de la válvula. La expresión correspondiente al bloque flow
rate obtiene el mínimo entre el flujo máximo que tiene la válvula y el flujo aplicado
(que es la salida del integrador). La expresión en Matlab es la siguiente:
que es equivalente a calcular el mínimo entre k*u(1) y u(2), donde k*u(1) es el flujo
aplicado y u(2) es el flujo máximo admitido por la válvula en ese instante.
Supondremos que la acción de control sobre las válvulas se puede expresar como un
número real en el intervalo [-1,1], de tal forma que si la acción es u=0, la posición de la
válvula no cambia, si u>0, la válvula se abre aumentando el flujo de salida, y si u<0, la
válvula se cierra disminuyendo el flujo de salida. La magnitud del cierre o apertura de la
válvula depende del valor absoluto de la señal de control.
(1) Para la temperatura: cold, good, hot, con las gráficas de la figura 5. El dominio
es [-20,20].
Ingeniería Industrial
(2) Para el flujo: soft, good, hard, con las gráficas de la figura 6. El dominio es
[-1,1].
Para las variables de control se han definido 5 conjuntos difusos en el dominio [-1,1],
cada uno de los cuales representa la variación en la apertura de la válvula. Las etiquetas
de estos conjuntos son closeFast (cerrar rápido), closeSlow (cerrar lento), steady
(mantener estable), openSlow (abrir lento) y openFast (abrir rápido). Las funciones de
pertenencia aparecen en la figura 7.
Ingeniería Industrial
ENTRADAS SALIDAS
Temperatura Flujo Control fría Control caliente
cold soft openSlow openFast
cold good closeSlow openSlow
cold hard closeFast closeSlow
good soft openSlow openSlow
good good steady steady
good hard closeSlow closeSlow
hot soft openFast openSlow
hot good openSlow closeSlow
hot hard closeSlow closeFast
(1) Analizar las reglas del regulador, y escribir una justificación intuitiva de las
mismas.
(2) A partir de la simulación del sistema con el regulador ¿puede concluirse que
tiene un comportamiento estable? ¿Cuánto tiempo tarda en alcanzar el régimen
estable, si existe?
Ingeniería Industrial
(4) Modificar los conjuntos difusos de entrada y salida del regulador para conseguir
disminuir el tiempo de régimen transitorio (si es posible).
(5) Visualizar la función de transferencia E/S del regulador mediante la opción View
Surface. ¿La función E/S obtenida es lineal? ¿Puede controlarse el sistema con
una acción proporciona l?