Control de congestión

Comparación entre un sistema no lineal y su versión linealizada

¿Cómo podemos relacionar el comportamiento de un sistema no lineal con el comportamiento de un sistema lineal? Hay varias formas. Una de ellas es la linealización jacobiana.

La linealización Jacobiana es relativamente simple a entender y aplicar al sistema no lineal para obtener el sistema lineal asociado.

En algunos casos, puede ser necesario realizar una comparación entre ambos sistemas. Esta comparación puede ser en lazo abierto o en lazo cerrado.

¿Para qué puede ser útil realizar una comparación?

Esencialmente, para evaluación del desempeño y para responder a las interrogantes: ¿nos servirán las estrategias de control diseñadas en función del sistema linealizado para regular el sistema no lineal? ¿hasta nos servirán tales estrategias?

Los años que llevo enseñando linealización aproximada en cursos introductorios del área de sistemas de control me han mostrado que, aparentemente, no es fácil y directo el uso de esta información para realizar una comparación entre ambos sistemas.

Resumen

Mostraré en esta breve nota cómo se usa la información generada a partir de la linealización Jacobiana y cuáles son los errores más comunes que se cometen al hacer una comparación. Para ello me basaré en las ecuaciones y en el código en GNU Octave (muy parecido al de MATLAB).

Objetivo

Ilustrar mediante algunos ejemplos como comparar el sistema no lineal y su sistema lineal aproximado

Linealización

Basado en la aproximación por serie de Taylor, el procedimiento de linealización se puede resumir a lo siguiente. Dado un sistema no lineal representado por $\dot x = f(x,u)$, se tiene

$$\dot x = f(x,u) = f(\bar x, \bar u) +\left.\frac {\partial f}{\partial x} \right|_{(\bar x, \bar u)}(x-\bar x)+\left.\frac {\partial f}{\partial u} \right|_{(\bar x, \bar u)}(u-\bar u) + \text{T.O.S.}$$
donde $f(\bar x, \bar u)\equiv 0$, el par $(\bar x, \bar u)]$corresponde al punto de equilibrio. Las siglas T.O.S. denotan los Términos de Orden Superior.

Si se eliminan los términos de orden superior, se obtiene
$$\dot x = f(x,u) \approx A(x-\bar x) + B(u-\bar u) = Ax_\delta+Bx_\delta$$

El sistema lineal asociado está dado entonces por $$\dot x_\delta = Ax_\delta + Bu_\delta$$ donde $A =\left.\frac {\partial f}{\partial x} \right|_{(\bar x, \bar u)}$, $B =\left.\frac {\partial f}{\partial u} \right|_{(\bar x, \bar u)}$.

Relación entre las variables linealizadas y las originales

Las variables *lineal* y *no lineal* están **asociadas** a través de la relación obtenida mediante la **aproximación de Taylor**: \begin{aligned}x_\delta &= x-\bar x \\ u_\delta &= u-\bar u\end{aligned}

Esta relación determina la relación en el tiempo de $x(t)$ y $x_\delta(t)$ y su posible comparación: $$x_\delta(t) = x(t)-\bar x$$ Lo que nos indica esta relación es que si se desea comparar ambos sistemas, no debe hacerse $x_\delta(t)$ vs $x(t)$ sino precisamente $x_\delta(t)$ vs $x(t)-\bar x$ o en todo caso su relación equivalente $x_\delta(t)+\bar x$ vs $x(t)$.

En particular, la relación $x_\delta(t) = x(t)-\bar x$ indica las condiciones iniciales del sistema lineal $x_\delta(0)$ dadas las condiciones iniciales del sistema no lineal $x(0)$: $$x_\delta(0) = x(0)-\bar x$$

Ejemplo: control de congestión de datos

Considere el siguiente modelo (monovariable) $$R\frac {d x}{d t} = \left[a-\left(a+\frac{2b}{2-b}x\right)\mu\right]$$ donde $x$ representa el tamaño de la ventana de congestión y $\mu$ la tasa por unidad de tiempo de pérdida de paquetes. El punto de equilibrio de este sistema está dado por: $\bar x = X$ y $\bar \mu = a/(a+2bX/(2-b))$. La linealización Jacobiana del modelo anterior resulta, entonces, en: $$R\dot x_\delta = -\frac{2b}{2-b}\bar \mu x_\delta-\left(a+\frac{2b}{2-b}X\right)\mu_\delta$$

Procedimiento al comparar (lazo abierto): Si el valor de $\mu$ se fija en su valor de equilibio, es decir, $\mu = \bar \mu$, entonces $\mu_\delta = \mu -\bar \mu \equiv 0$. Si el valor inicial de $x(0) = 0$ entonces $x_\delta(0) = -X$. Si el valor inicial de $x(0) = X-1$ entonces $x_\delta(0) = -1$. Al efectuar la comparación, se puede tomar $x$ vs $x_\delta + X$.

En términos de código en GNU Octave:

function dx = f(x,t)
  a = 0.5; b = 1;
  X = 100;
  mu = a/(a+2*b/(2-b)*X);
  dx = a-(a+2*b/(2-b)*x)*mu;
endfunction

function dx = fl(x,t)
  a = 0.5; b = 1;
  X= 100;
  mub = a/(a+2*b/(2-b)*X);
  mu = 0;
  dx = -2*b/(2-b)* mub*x-(a+2*b/(2-b)*X)*mu;
endfunction

X = 100;
x0 = 0; x0l = -X;
t = linspace(0,1000,50);

x = lsode('f',x0,t);
xl = lsode('fl',x0l,t);
plot(t,x,t,xl+X,'o')
xlabel('tiempo t (s)')
ylabel('tamano ventana congestion (paquetes)')

Se puede comprobar que las gráficas resultantes de código mostrado son muy similares, es decir, con errores absolutos menores a `5e-6`. *Observación:* se han omitido algunos detalles en el código.

TCP compración
Comparación entre el modelo lineal y el no lineal para el sistema de congestión de datos en Internet
TCP error de compración
Errores obtenidos al comparar la respuesta del sistema lineal y el no lineal

Este ejemplo se puede ejecutar en línea en GNU Octave.

Acerca de Richard Márquez

Ing. de Sistemas con Doctorado en Automática. Enseño circuitos, simulación y teoría de control. Me gusta el modelado de sistemas no lineales y el diseño de leyes de control. Para mi, GNU Octave es un gran herramienta para hacer prototipos y enseñar a pensar.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.