Está en la página 1de 18

Curso de Modelado e Identificacin de Sistemas

Prctica 3

2008
Identificacin Recursiva

INTRODUCCIN TERICA
El algoritmo de identificacin recursiva mas conocido y empleado es el de mnimos
cuadrados recursivos (RLS) que surge de la ecuacin normal al volverla recursiva1.
(t ) = (t 1) + R1(t )(t ) y(t ) T (t )(t 1)
R(t ) = (t )R(t 1) + (t )T (t )

(1)

Definiendo R(t ) = P 1(t ) otra forma usual de presentar el algoritmo en la bibliografa es:
(t ) = (t 1) + P (t )(t ) y(t ) T (t )(t 1)
P 1(t ) = (t )P 1(t 1) + (t )T (t )

(1)

Tras aplicar el lema de inversin de matrices nos queda el algoritmo siguiente que evita la
inversin de una matriz de dxd (d es la dimensin del vector de parmetros y del
regresor ). Para pocos parmetros la (1) y la (2) son equivalentes, pero para muchos
parmetros la (2) es mucho ms rpida)

(t ) = (t 1) + L(t ) y(t ) T (t )(t 1)


P (t 1)(t )
(t ) + T (t )P (t 1)(t )

P (t 1)(t )T (t )P (t 1)
/ (t )
P (t ) = P (t 1)

(t ) + T (t )P (t 1)(t )

L(t ) =

(2)

N
1 N

La ecuacin normal es: = (t ) (t ) (t )y(t )


t =1
t =1

Recordar que el algoritmo RLS es vlido para modelos linealmente parametrizados


no es en general vlido para modelos no linealmente parametrizados (ver apuntes).

y(t ) = T (t ) (t 1) como el ARX y

En la (1) y (2) (t ) es el factor de olvido, este puede ser variable, generalmente se adopta
un valor constante . El factor de olvido es necesario cuando la planta que se quiere
identificar vara en el tiempo en forma abrupta pero espordicamente o cuando vara en
forma lenta (con respecto al algoritmo). Si la planta es fija se adopta = 1 . Al
implementar el algoritmo RLS ((1) o (2)) en Simulink, las entradas son y(t ) y (t ) y la salida
es (t ) .

y(t)

RLS

(t)

(t)

Algoritmo PEM recursivo (RPEM)


Para modelos no linealmente parametrizados (por ejemplo modelos ARMAX) no es posible
emplear el algoritmo RLS, para estos casos el algoritmo ms eficiente es el RPEM.

(t ) = y(t ) y(t )
(t ) = (t 1) + R1(t ) (t ) (t )

(3)

R(t ) = (t )R(t 1) + (t ) T (t )
donde el vector (t ) se define como2:

(t ) 

d y(t, )
d

Aplicando el lema de inversin de matrices se llega al siguiente algoritmo:

(t ) = (t 1) + L(t ) (t )
(t ) = y(t ) y(t )
P (t 1)(t )
(t ) + T (t )P (t 1)(t )

P (t 1)(t )T (t )P (t 1)
/ (t )
P (t ) = P (t 1)

(t ) + T (t )P (t 1)(t )
L(t ) =

(t ) = (t, (t 1)) , (t ) = (t, (t 1)) ,


y(t ) = T (t, (t 1)) (t 1) = T (t ) (t 1)
Si el modelo est linealmente parametrizado (p.ej. ARX) y(t ) = T (t ) (t 1)

En realidad operacionalmente es:

(t, (t 1)) 

d y(t, )
d

=
= (t 1)

d y(t, (t 1))
d (t 1)

Ver el apndice sobre la estructura ARMAX para un ejemplo del clculo de

(t ) .

(4)

(t ) 

d y(t, ))
d

= (t )

entonces el RPEM (Ec.4) coincide con RLS ( Ec.2).


Observacin Importante: Lo anterior implica que el mismo soft desarrollado para RLS (en
este caso bloques de Simulink) puede ser reutilizado y empleado para RPEN. Para el caso
RLS como se dijo anteriormente las entradas son y(t ) y (t ) y la salida es (t ) .
y(t)

(t)

RLS

(t)

Si se quiere emplear el mismo bloque para resolver RPEM las entradas deben ser z (t ) y
(t ) , donde
z (t ) = y(t ) y(t, (t 1)) + T (t ) (t 1)
debe ingresar z (t ) y no y(t ) ya que el algoritmo asume que ingresa (t ) y calculara el error
de prediccin como (t ) = y(t ) T (t )(t 1) en lugar del correcto

(t ) = y(t ) y(t, (t 1)) . Al ingresar z (t ) y (t ) se tiene:


(t ) = z (t ) T (t ) (t 1) = y(t ) y(t, (t 1))

z(t)

(t)

RPEM

(t)

Algoritmos aproximados
En el algoritmo RLS la actualizacin de la estima involucra menos carga computacional
que el clculo de R(t ) y su inversa (o equivalentemente P (t ) = R1(t ) ) . Por lo que se
proponen un par de algoritmos mas sencillos pero con inferiores velocidades de
convergencia.
1- Algoritmo de Kaczmarz o de proyeccin

(t )
y(t ) T (t )(t 1)

+ T (t )(t )
0,0<<2
(t ) = (t 1) +

(6)

2- Aproximacin Estocstica (Algoritmo de Robbins-Monro)


Definiendo como antes:

(t, (t 1)) = y(t ) y(t, (t 1))


(t, (t 1)) 

d y(t, )
d

=
=(t 1)

d (t, )
d

=(t 1)

y considerando en el algoritmo RPEM (Ec.(3)) R(t ) = I (matriz identidad) se obtiene el


siguiente algoritmo:
(t ) = (t 1) + (t ) (t, (t 1))(t, (t 1))

(7)

donde { (t ) } es una secuencia de nmeros positivos que satisface determinadas


condiciones que aseguran la convergencia del algoritmo, tpicamente

i)

(t ) =
t =1

ii)

lim (t ) = 0

Si el modelo es linealmente parametrizado y(t, (t 1)) = T (t ) (t 1) , entonces

(t, (t 1)) =

d y(t, )
d

d { T (t ) (t 1)}
d

=(t 1)

= (t )
=(t 1)

(t ) = (t 1) + (t ) (t )(t, (t 1))

(8)

1
, en otras ocasiones por simplicidad se adopta
t
(t ) = constante, 0 < < 1 que claramente no verifica la segunda condicin y por lo
tanto es mas difcil asegurar la convergencia del algoritmo.

frecuentemente se adopta (t ) =

(t ) = (t 1) + (t, (t 1))(t, (t 1))

y para el caso linealmente parametrizado3

Los algoritmos simplificados (9) y (10) son los mas simples posibles. En la pgina 22 del apunte Parametrica-di
Sciascio.pdf se los presenta como Estimacin de parmetros por el mtodo del gradiente.

(9)

(t ) = (t 1) + (t )(t, (t 1))

(10)

Para el algoritmo (10) se verifica que el algoritmo es estable si verifica la relacin


, donde max es el autovalor mayor de la matriz (definida positiva)
0 < < 2
max

R = E [(t ) (t )T ] generalmente se adopta max  1 . Los algoritmos (8) y (10) son muy
conocidos en la ingeniera en particular en el rea de procesamiento adaptable de seales.
Se denomina algoritmo LMS (least mean squares). Fueron desarrollados por Bernard Widrow
a fines de los 60.

DESARROLLO DE LA PRCTICA
Con el fin de su posterior empleo en las prcticas de Control Adaptable se pide:
1) Desarrollar en Simulink el algoritmo RLS (2) y el aproximado (10) para identificar en
forma recursiva modelos ARX (modelos linealmente parametrizados)

(t ) = (t 1) + L(t ) y(t ) T (t )(t 1)


L(t ) =

P (t 1)(t )
(t ) + T (t )P (t 1)(t )

P (t 1)(t )T (t )P (t 1)

/ (t )
P (t ) = P(t 1)

(t ) + T (t )P (t 1)(t )

(t ) = (t 1) + (t )(t, (t 1))

(2)

(10)

2) Desarrollar en Simulink el algoritmo RPEM (4) y el aproximado (9) para identificar en


forma recursiva modelos ARMAX (modelos no-linealmente parametrizados)

(t ) = (t 1) + L(t ) (t )
(t ) = y(t ) y(t )
L(t ) =

P (t 1)(t )
(t ) + T (t )P (t 1)(t )

P (t 1)(t )T (t )P (t 1)
/ (t )
P (t ) = P (t 1)

(t ) + T (t )P (t 1)(t )

(t ) = (t 1) + (t, (t 1))(t, (t 1))


5

(4)

(9)

Ejemplo de implementacin en Simulink del RPEM

Observacin: Los bloques que aparecen a la entrada remueven los valores medios.

El bloque regresor ARMAX (ver el apndice B sobre la estructura ARMAX) se construye


siguiendo las lneas del apndice A.
Apndice A: Diseo de regresores con Simulink
En esta seccin se dan las guas para el diseo de regresores en Simulink ya que estos
constituyen una parte importante en la identificacin recursiva. Supongamos que deseamos
construir un bloque que genere el regresor para la estructura ARX.
La estructura ARX se define mediante los polinomios A(q ) y B(q )

y(t ) =

B(q )
1
u(t ) +
e(t )
A(q )
A(q )

con

A(q ) = 1 + a1q 1 + a2q 2 + " + anaq na


B(q ) = b1 + b2q 1 + " + bnbq nb +1 q nk (4)
La mejor estima de la salida es:

y(t ) = [ 1 A(q ) ] y(t ) + B(q )u(t )


reemplazando A(q ) y B(q ) en el segundo miembro
y(t ) = [ a1q 1 a2q 2 " anaq na ]y(t ) + b1 + b2q 1 + " + bnbq nb +1 q nku(t )
y(t) = a1y(t 1) a2y(t 2) "anay(t na) + b1u(t nk) + b2u(t 1 nk) + "++bnbu(t nb + 1 nk)

se define ahora el vector de parmetros y el vector regresor (t )


T
(t, ) = y(t 1) y(t 2) "y(t na) u(t nk) u(t 1 nk) " u(t nb nk)

Ac se adopta la nomenclatura del Toolbox de identificacin de Matlab. Por defecto el toolbox asume

nk = 1

B(q ) = b1q 1 + b2q 2 + " + bnbq nb . Tambin es usual en la bibliografa definir el polinomio B(q ) como
B(q ) = b0 + b1q 1 + " + bnbq nb q nk .

T
= a1 a2 " ana b1 b2 " bnb

y(t ) = T (t )
esta ecuacin expresa la estima del modelo como una parametrizacin lineal. Para el caso
de la identificacin recursiva los parmetros se estiman a partir de los datos disponibles

y(t )) = (t 1)T (t )
Luego el vector regresor est constituido por las y(t ) y u(t ) pasadas

Por simplicidad se implementa el regresor por partes, la primera involucra las y(t ) pasadas.

La forma mas sencilla es emplear una cadenas de bloques de retardo unitarios por ejemplo
para na = 3 la estructura es la siguiente:

el problema con esta forma de implementar el regresor es que es poco flexible y se debe
modificar para distintos na . La forma mas elegante para construir un regresor genrico
para cualquier na es mediante un sistema dinmico discreto en su representacin en el
espacio de estados en el que la entrada al sistema es y(t ) y la salida son los estados del
mismo, donde los estados son las entradas retrasadas con el signo cambiado.

x (t + 1) = Ax (t ) + By(t )

z1(t ) = Cx (t ) + Dy(t )

Ejemplo para na = 3

x1(t + 1) = y(t )

x1(t ) = y(t 1)

x 2(t + 1) = x1(t )

x 2(t ) = x1(t 1) = y(t 2)

x 3(t + 1) = x 2(t )

x 3(t ) = x 2(t 1) = x1(t 2) = y(t 3)

0 0 0 x1(t )
x1(t +1)

2(t +1) = 1 0 0 x 2(t ) +

0 1 0 x 3(t )
3(t +1)

1 0 0 x
z (t )

1(t )
1

z1 (t ) = z 2 (t ) = 0 1 0 x 2(t ) +

z
x
3 (t )
0 0 1 3(t )


1

0 y(t )

0

0


0 y(t )

0

que es de la forma

x (t + 1) = Ax (t ) + By(t )

z1(t ) = Cx (t ) + Dy(t )

1 0 0
0
0 0 0
1


con A = 1 0 0 , B = 0 , C = 0 1 0 , D = 0


0 0 1
0
0 1 0
0


La anterior se implementa con un bloque Discrete State-Space de la librera Discrete de
Simulink en forma genrica (funcin de na ).

Para este ejemplo ( na = 3 )


A=[[zeros(1,na);eye(na-1,na)]]

B= [-1, zeros(1,na-1)]'

C= eye(na)

D =[zeros(na,1)]

0 0 0

A = 1 0 0

0 1 0

1


B = 0

0

1 0 0

C = 0 1 0

0 0 1

0


D = 0

0

10

Para la parte del regresor que involucra las u(t ) pasadas el procedimiento es el mismo,
teniendo en cuenta que la entrada al sistema ahora es u(t nk ) y que las u(t ) pasadas no
estn invertidas por lo que

B= [1, zeros(1,nb-1)]'

1

0

B =
#

0

Otra posibilidad es considerar un sistema con nb + nk estados donde la entrada es u(t ) .


Finalmente con un multiplexor (bloque mux de Simulink) se forma el regresor completo.

Tambin es posible generar en un solo paso el regresor completo donde las matrices A , B ,
C y D son funciones de na , nb y nk

11

Ejemplo para na = 3 , nb = 2 , nk = 1

A = 0

0 0 0 0

0 0 0 0

1 0 0 0 ,

0 0 0 0

0 0 1 0

B = 0

C = 0

0 0 0 0

1 0 0 0

0 1 0 0 ,

0 0 1 0

0 0 0 1

D = 0

12

Apndice B: Sobre la estructura ARMAX


La estructura ARMAX se define mediante los polinomios A(q ) , B(q ) y C (q )

y(t ) =

B(q )
C (q )
u(t ) +
e(t )
A(q )
A(q )

(11)

con

A(q ) = 1 + a1q 1 + a2q 2 + " + anaq na


B(q ) = b1 + b2q 1 + " + bnbq nb +1 q nk (nota5)
C (q ) = 1 + c1q 1 + c2q 2 + " + cncq nc
La mejor estima de la salida es:

y(t ) =

B(q )
u(t ) +
C (q )

A(q )
1
y(t )
C (q )

(12)

pasando C (q ) al primer miembro

C (q )y(t ) = B(q )u(t ) + [C (q ) A(q ) ] y(t )

(13)

sumando [ 1 C (q ) ] y(t ) en ambos miembros de la (13) y reordenando

y(t ) = A(q )y(t ) + B(q )u(t ) + C (q ) [ y(t ) y(t ) ] + y(t )


sumando y restando y(t ) en el segundo miembro y reordenando queda:

y(t ) = [ 1 A(q ) ] y(t ) + B(q )u(t ) + [C (q ) 1 ] (t )

(14)

con (t )  y(t ) y(t ) que es el error de prediccin, reemplazando A(q ) , B(q ) y C (q ) en el


segundo miembro de la (14)
y(t ) = [ a1q 1 a2q 2 " anaq na ]y(t ) + b1 + b2q 1 + " + bnbq nb +1 q nku(t ) +
+ [ c1q 1 + c2q 2 + " + cncq nc ] (t )

y(t) = a1y(t 1) a2y(t 2) "anay(t na) + b1u(t nk) + b2u(t 1 nk) + "+

(15)
+bnbu(t nb + 1 nk ) + c1(t 1) + c2 (t 2) + " + cnc (t nc )

Ver nota 4

13

se define ahora el vector de parmetros y el vector regresor (t )


T
(t, ) = y(t 1) y(t 2) "y(t na) u(t nk) u(t 1 nk) " u(t nb nk) (t 1) (t 2) " (t nc)

T
= a1 a2 " ana b1 b2 " bnb c1 c2 " cnc

y(t ) = T (t, )

(16)

la (16) expresa la estima del modelo como una parametrizacin pseudolineal o no lineal.6
Para el caso de la identificacin recursiva los parmetros se estiman a partir de los datos
disponibles y la (16) es:

y(t, (t 1)) = (t 1)T (t, (t 1))

(16)

y(t )
, este vector es necesario para los

algoritmos de identificacin recursivos (en particular el RPEM). Se rescribe la (14)

En lo que sigue se calcula el vector (t ) 

y(t ) = [ 1 A(q ) ] y(t ) + B(q )u(t ) + [C (q ) 1 ] (t )

(14)

y a partir de esta ecuacin se calculan las distintas derivadas parciales de y(t ) con respecto
a los parmetros.
y(t )
[ [ 1 A(q ) ]y(t ) + B(q )u(t ) + [C (q ) 1 ] (t ) ] [ 1 A(q ) ]
(t ) (17)
=
=
y(t ) + [C (q ) 1 ]
ai
ai
ai
ai

[ 1 A(q ) ] [ a1q 1 a2q 2 " aiq i " anaq na ]


=
= q i
ai
ai

(t )
[ y(t ) y(t ) ]
y(t )
=
=
ai
ai
ai

(18)

(19)

reemplazando las (18) y (19) en la (17)


y(t )
y(t )
= q iy(t ) [C (q ) 1 ]
ai
ai

reordenando
C (q )

y(t )
= y(t i )
ai

y(t )
1
=
y(t i )
ai
C (q )

repitiendo el clculo para los parmetros bi


6

Por simplicidad en la notacin se ha escrito

y(t )

(t )

en lugar de

14

y(t, )

(t, )

(20)

y(t )
[ [ 1 A(q ) ] y(t ) + B(q )u(t ) + [C (q ) 1 ] (t ) ]
B(q )
(t )
=
=
u(t ) + [C (q ) 1 ]
bi
bi
bi
bi

(21)

b1 + b2q 1 + " + biq i +1 + " + bnbq nb +1 q nk


B(q )
=
= q i +1nk
bi
bi

(22)

(t )
[ y(t ) y(t ) ]
y(t )
=
=
bi
bi
bi

(23)

reemplazando las (22) y (23) en la (21)


y(t )
y(t )
= u(t i + 1 nk ) [C (q ) 1 ]
bi
bi

reordenando
C (q )

y(t )
= u(t i + 1 nk )
bi

y(t )
1
=
u(t i + 1 nk )
bi
C (q )

(24)

finalmente para los parmetros ci


y(t )
[ [ 1 A(q ) ] y(t ) + B(q )u(t ) + [C (q ) 1 ] (t ) ]
=
=
ci
ci

[ [C (q ) 1 ] (t ) ]
[C (q ) 1 ]
(t )
=
(t ) + [C (q ) 1 ]
ci
ci
ci

(25)

[C (q ) 1 ] [ c1q 1 + c2q 2 + " + ciq i + " + cncq nc ]


=
= q i
ci
ci

(26)

(t )
[ y(t ) y(t ) ]
y(t )
=
=
ci
ci
ci

(27)

reemplazando las (26) y (27) en la (25)


y(t )
y(t )
= (t i ) [C (q ) 1 ]
ci
ci

reordenando
C (q )

y(t )
= (t i )
ci

y(t )
1
=
(t i )
ci
C (q )

las (20), (24) y (28) son las derivadas parciales de y(t ) respecto de los parmetros

15

(28)

1
y(t )
=
y(t i )
ai
C (q )
1
y(t )
=
u(t i + 1 nk )
bi
C (q )
1
y(t )
=
(t i )
ci
C (q )
que se pueden agrupar en forma vectorial
y(t )

ai
y(t i )

y(t )
u(t i + 1 nk )

bi C (q )

(
(
)

t
i

y t )
c
i

de la definicin del vector de parmetros , del regresor (t ) y de (t ) se tiene para la


estructura ARMAX que:

(t ) =

y(t )
1
=
(t )
C (q )

se llega a que (t ) se obtiene filtrando el regresor (t ) con el filtro

(29)
1
C (q )

1
1
=
1
2
C (q ) 1 + c1q + c2q + " + cncq nc

Implementacin del filtro

1
C (q )

Desarrollando la (29)

C (q ) (t ) = (t )

( 1 + c1q 1 + c2q 2 + " + cncq nc ) (t ) = (t )


(t ) + c1(t 1) + c2 (t 2) + " + cnc (t nc) = (t )
(t ) = (t ) c1(t 1) c2(t 2) " cnc (t nc)

16

Se implementa en Simulink la ltima ecuacin para nc = 3 . El vector con los coeficientes


del polinomio C (q ) es parte del vector de par,etros que se est identificando.

Observacin: En realidad lo anterior se diseo para las versiones de Simulink


anteriores al Matlab 6.0 que no disponan de un filtro adaptable incorporado en sus
libreras. En el Simulink 5 (R13) de Matlab 6.5 en adelante ya se cuenta en DSP
Blockset/Filtering/Filter Designs, el bloque Digital Filter y la implementacin del filtro
es directa.

17

BIBLIOGRAFA
strm, K., Wittenmark, B., Adaptive Control, Second Edition, Editorial: Addison-Wesley
Publishing Company, Inc., 1995.
di Sciascio F., Identificacin Paramtrica de Sistemas Lineales, Apuntes de Ctedra, 1998.
Goodwin, G.C. y Sin, Kyai Sang, Adaptive Filtering, Prediction and Control, Prentice-Hall,
Inc. Englewood Cliffs, 1984.
Ljung, L., System Identification: Theory for the User, 2nd Edition, Prentice Hall,
Englewood Cliffs, N.J., 1999.
Ljung, L., Sodestrom, T., Theory and Prectice of Recursive System Identification, 2nd
Edition, Prentice The MIT Press, 1983.
Ljung, L., System Identification Toolbox, for use with Matlab, User's Guide Version 5, The
MathWorks, Inc, Natick, MA, 2002.
Sderstrm, T. & Stoica, P.: System Identification, Prentice Hall, Englewood Cliffs, N.J.,
1989.

18

También podría gustarte