Você está na página 1de 40

11-Mnima Varianza.

doc 1/40
1. Control de Mnima Varianza

1. Control de Mnima Varianza________________________________________ 1
1.1. Introduccin ________________________________________________________ 2
1.2. Predictor Estocstico _________________________________________________ 2
1.3. Regulador de Mnima Varianza ________________________________________ 3
1.4. Mnima Varianza Ponderado __________________________________________ 6
1.5. Control de Mnima Varianza Adaptativo ________________________________ 9
1.6. Control de Mnima Varianza Ponderado Adaptativo _____________________11
1.7. Simulaciones _______________________________________________________13
1.7.1. Sistema en Lazo Abierto_____________________________________________ 13
1.7.2. Control de Mnima Varianza __________________________________________ 16
1.7.3. Control de Mnima Varianza en Planta Variable ____________________________ 19
1.7.4. Control de Mnima Varianza Adaptativo _________________________________ 22
1.7.5. Control de Mnima Varianza Adaptativo Directo ___________________________ 28
1.7.6. Comparacin Mnima Varianza y Predictivo ______________________________ 34
1.8. Referencias ________________________________________________________39

11-Mnima Varianza.doc 2/40

1.1. Introduccin
El controlador predictivo visto anteriormente est diseado para trabajar en un
entorno determinista. Si quisiramos extender el razonamiento al campo estocstico
deberamos hacer otras consideraciones. Una de ellas es introducir una componente
aleatoria en el modelo. Con esta modificacin se redefinir el predictor as como la funcin
a minimizar. Aqu ya no podemos hablar del control que haga mnima una funcin
determinista sino que se pasar a obtener una ley que minimice la varianza de la salida.
1.2. Predictor Estocstico
Ahora el modelo constar de un trmino estadstico como sigue:
-d
2 2
A y = B u + C
z

E = 0
E =

(1.1)
donde
( )
-1 -2 -n
1 2 n
-d -d -1 -2 -m
0 1 2 m
-1 -2 -n
1 2 n
A= 1 + + + +
a a a z z z
B= B = + + + +
b b b b z z z z z
C= 1 + + + +
c c c z z z

K
K
K
(1.2)
Se define el predictor estocstico de la forma:
0
k
k/k-d k
= - F y y

(1.3)
cumplindose
0
k
k+d/k k
C = G + F B y y
u
(1.4)
donde
-d
C = F A + G
z
(1.5)
y los polinomios son:
-1 -2 -d+1
1 2 d-1
-1 -2 -n+1
0 1 2 n-1
F = 1 + + + + f f f
z z z
G= + + + + g g g g
z z z
K
K
(1.6)
As definido el predictor se demostrar que la varianza del error de prediccin es:
{ }
[ ]
{ }
d-1
2
2
0 2
2
k+d k+d/k j
j=0
E - = E F = y y f

1
]

(1.7)
11-Mnima Varianza.doc 3/40
Demostracin:
Multiplicando (1.1) por F y operando obtenemos:
( )
( ) ( )
-d
-d -d
-d
k
k+d/k k
F A y= F B u + F C
z
C - G y = F B u + F C
z z
C y - F = G y + F B u
z

C = G + F B y y
u

(1.8)
Calculando la esperanza
{ }
{ }
{ }
0 0
k+d
k+d/k k+d/k k+d
d-1
k+d- j
k+d j
j=0
0
k+d/k k+d
E = = E - F y y y
= E - y f

= E y y


' ;

(1.9)
Esto se cumple ya que:
E = 0
1.3. Regulador de Mnima Varianza
Como una extensin del regulador predictivo haremos que el objetivo del control
sea conseguir que
0 M
= y y (1.10)
o lo que es lo mismo minimizar
2
M
k+d
k+d k+d
1
= E - y y
J
2

1
' ;
]

(1.11)
Veamos cmo calcular este mnimo.
{ }
{ }
{ }
min
min
min
min
k
k
k
k
2
0 0 M
k+d k+d/k k+d/k k+d
u
2 2
0 0 M 0 0 M
k+d k+d/k k+d/k k+d
u
0 M
2
j
u
2
0
2
k
j k+d/k
u
E - + - = y y y y
= E - + - + 2 [y - ] [ - ] = y y y y y y y
= E + - = f y y
= + E (1 - C) + F B + f y
u

1
]
1 1
] ]
1

]

{ }
M
k k+d
G - y y
1
]
(1.12)
11-Mnima Varianza.doc 4/40
El mnimo resulta cuando el [] se hace 0, es decir
M 0
k
k+d k+d k
F B = + (C - 1) - G y y y
u
(1.13)
Pero y0 debe ser igual a yM para todo k por lo tanto la ley de control resulta
M
k
k+d k
F B = C - G y y
u
(1.14)
El diagrama de este regulador es el de la Ilustracin 1-1

u
-
-
+
r
k+d z
-d
B'
A
y
1
FB'
C
C
A
G
+
+


Ilustracin 1-1 Control de Mnima Varianza
De esta figura se desprende la relacion entre la salida y la referencia. Primero
calculamos el error para luego reemplazarlo en la ecuacin de la salida.
M
d
k
k k
-d
k k
k
M
-d
k
k k
M
k
k k
M
= C - G y y
z
C
z
= - y
A F A
F A = C - G + F C y y y
z
C = C + F C y y
y= + F y

(1.15)
Finalmente vemos que la salida no coincide con la referencia sino que aparece una
diferencia F que es el error en el control.
Otra caracterstica del regulador de mnima varianza es que, a pesar de su forma, no
es exactamente igual al predictivo determinista. Solo si C=1, es decir la perturbacin es
ruido blanco, queda como el anterior.
Es posible demostrar que siempre se puede lograr un modelo del ruido tal que C sea
estable o con raices sobre el crculo unidad. Este ltimo caso corresponde a una
perturbacin determinista. Por ejemplo. si el polo estuviera en z=1 sera un escaln o si se
posicionara en cualquier otra parte del cculo correspondera a una senoide.
11-Mnima Varianza.doc 5/40
El problema es que si C tiene raices sobre el crculo, el predictor de la salida y0,
depende del valor inicial de sta. Aqu se elije un predictor subptimo de la siguiente
manera: Se divide C de la forma
s r
C = +
C C (1.16)
Es decir una parte estable, Cs, y un resto, Cr. Este ltimo, se hace tan pequeo como
se quiera. Esta idea se muestra en la Ilustracin 1-2.

Ilustracin 1-2
El predictor subptimo se elije como muestra la ecuacin siguiente:

s k
k+d k
= G + F B y y
C u
(1.17)
Por lo tanto, la ley de control resulta

M
0 k 0 k s
k+d k+d k
= ( - F B) + + ( - 1) - G y y y
b u b u C
(1.18)
Ahora el objetivo ser hacer:

M
y = y (1.19)
Tambin podemos ver cmo queda el regulador en forma de bloques en la
Ilustracin 1-3
11-Mnima Varianza.doc 6/40
u
-
-
+
r
k+d z
-d
B'
A
y
1
F
s
B'
C
s
C
A
G
s
+
+


Ilustracin 1-3 Mnima Varianza Subptimo

De esta grfica podemos extraer la nueva relacin entre salida y referencia del si-
guiente modo:
M
k s
k+d k
M
s k+d
d
M
-d
s
M
-d
s
M
s s
M
s
s
F B = - G y y
u C
= - G y y
C
F A y = + C F
z
F A y= - G y + F C y
C z
(F A + G) y = + F C y
C z
y= + F C y
C C
F C
y = + y
C
FC
: nuevo error
C

(1.20)
Aparece una nueva forma del error debido a la diferencia entre los polinomios. C
s

debe estar cerca de C para aproximarse al ptimo pero no tanto como para hacer inestable el
sistema.
1.4. Mnima Varianza Ponderado
De igual modo que en el controlador predictivo podemos reducir la amplitud de la
seal de control redefiniendo el funcional a minimizar. Este ser:
{ }
2
M 2
k+d k
k+d k+d
1
= E - + y y
J u
2
1
]
(1.21)
Reemplazando la salida por su prediccin,
11-Mnima Varianza.doc 7/40
{ } min
2
0 M
2 2
k+d k
i
u
= + E - + f y y
J u


1
' ;
]

(1.22)
Antes, el mnimo se lograba cuando
0 M
= y y (1.23)
y ahora debe ser:
( )
0 M
0 k
k+d k+d
- + = 0 y y
b u
(1.24)
, reemplazando la ecuacin del predictor,
( ) ( )
0 M
k 0 k
k+d k k+d
M 0 0
k 0 k
k+d k+d k
2
0
(1 - C) + F B + G - + = 0 y y y
u b u

b
= - F B + + C - 1 - G y y y
u b u
+
b

1
]
1
]
(1.25)
o lo que es lo mismo
( )
M k
k
0 k
k+d
M
k 0 k
k k+d
M 0
k
k+d k
0
G + F B y
u
- + = 0 y
b u
C
G + F B - C + C = 0 y y
u b u
F B + C
b
= C - G y y
u
b

_

,

(1.26)
Expresado en bloques resulta la Ilustracin 1-4.
u
-
-
+
r
k+d z
-d
B'
A
y
b
0
FB'b
0
+Cl
C
C
A
G
+
+


Ilustracin 1-4 Regulador de Mnima Varianza Ponderado

11-Mnima Varianza.doc 8/40
Tambin podemos calcular la nueva relacin entrada - referencia. De la 0
podemos inferir lo siguiente:
( )
( )
( )
( )
( )
M
d
k
k k
-d
0
k
k
0
M
-d d
0 0 0
M
-d
0 0 0 0
= C - G y y
z
B C
b z
= + y
A F B + C A
b
F B + C A y = B C - G y + C F B + C y
b b b z z
F B A + C A + G B y = C B + C F B + C y
b b b b z


1
]
(1.27)
Con lo que obtenemos finalmente,
[ ] [ ]
M
0 0 0
M 0 0
k k
0 0
C B + A y = C B + C F B + C y
b b b
B F B + C
b b
= + y y
B + A B + A
b b





(1.28)
Ahora el polinomio
0
B + A
b

es el que debe ser estable. Con esto hemos ganado un
grado ms de libertad.
A modo de ejemplo, en la 1y la 1se muestra un regulador de mnima varianza con
=0 y =.5 respectivamente. En ambos casos la planta tiene los siguientes polinomios:
( )
-1 -2
-3 -1
-1 -2 -3
A= 1 - 1.5 + 0.5
z z
B= 1 - 0.8
z z
C = 1 - 0.5 + 0.2 + 0.1
z z z
(1.29)

Figura 1-1Ejemplo de Control de Mnima Varianza
11-Mnima Varianza.doc 9/40
El proceso sufre un cambio en su dinmica en la muestra 50 en donde se reduce la
ganancia a la mitad. Notemos que en los dos casos se produce una descompensacin del
regulador siendo ms notorio en el primer caso.

Figura 1-2Ejemplo de Regulador de Mnima Varianza Ponderado

1.5. Control de Mnima Varianza Adaptativo
A los efectos de preparar la ley de control para el caso adaptativo directo conviene
expresar la misma del siguiente modo:
( ) ( )
M 0
k
k+d k
0
-1 -1
2
0 0 1
1 0
k k 0 k
0 0 0
2
M 0
k 0 k
k+d k
0 0
F B + C
b
= C - G y y
u
b
+ + + 1+ + f b
b b c z z +
b
= + F B - + (C- 1 )
u u b u
b b b
+
b
= C - G - F B - + (C- 1 ) y y
u b u
b b

1
]
1

1
]
K K
(1.30)
con lo que u
k
resulta,
M 0
k 0 k
k+d k
2
0 0
b
= C - G - F B - + (C-1) y y
u b u
+
b b

' ;
1
]
(1.31)
Por lo tanto la ley de control en forma vectorial ser:
T
k k
= p
u x (1.32)
donde:
11-Mnima Varianza.doc 10/40
T 0 0 0 0 1 0 0 n-1
1
1
2 2 2 2 2
0 0 0 0 0 0
M M
T
k k-1
k+d k+d-1 k k-n+1
g g
b b b b c b
= , , + p f b
c
+ + + + +
b b b b b b
= , - - , - y y y y
x u


1
_

1
, ]
1
]
K K K
K K K
(1.33)
Como en el controlador predictivo debemos expresar tambin el sistema en forma
vectorial y dejar explcito el valor de u
k
.
0
k
k+d k
0
k
k+d k
0 0
k k
k+d k
0 0 0
0 0
k k
k+d k
0 0
2
0 0
k k
k+d k
0 0
C = G + F B y y
u
F B = C - G y y
u
F B C C
b
+ = C - G + y y
u u
b b b
F B + C
b
= C + - G y y
u u
b b
+
b
= C + - G - F B y y
u u
b b


_

,

_

,
_


,
( )
0 k
0
0 0
k k 0 k
k+d k
2
0 0 0
- + C- 1
b u
b
b
= C + - G - FB - + (C-1) y y
u u b u
+
b b b

1
1
]

_ 1

' ;
1
, ]
(1.34)
por lo tanto, la expresin de la actuacin de acuerdo a la ecuacin de la planta es:
T
k
k
= p
u
x
(1.35)
donde
0 0 T
k k-1 k-1 k-m-d+1
k k+d k+d-1 k k-n+1
0 0
T 0 0 0 0 1 0 0 n-1
1
1
2 2 2 2 2
0 0 0 0 0 0
= + , + - - - - y y y y
u u u u
x
b b
g g
b b b b c b
= , , ( + ) p f b
c
+ + + + +
b b b b b b


1
1
]
1

1
]
K K K
K K K
(1.36)

La versin ajustable de este regulador no es ms que una extensin del regulador
predictivo adaptativo. Tambin aqu se puede usar cualquier estimador de parmetros de la
siguiente forma:

T
k k-d k-d
k k-1 k-1 k
= - - p p p y
x x P
1
]
(1.37)
se expresa:
0 T
k k+d/k
= p y
x
(1.38)
con
11-Mnima Varianza.doc 11/40
[ ]
0 T
k k-m k k k- n k+d-1
T
1
0 0
= , , - y y y
u u
x
= p g f b
c
1
]

K K K
K K K
(1.39)
La ley de control ser:
M
T
k
k+d
= p y
x
(1.40)
de aqu se despeja u
k
. En la ecuacin anterior los vectores son:
[ ]
M
T
k k k-m
k k-n k+d-1
T
1
0 0
= , , - y y y
x u u
= p g f b
c
1
]

K K K
K K K
(1.41)
Como nota particular podemos decir que el conocido Self Tuning Regulator (STR)
se consigue cuando y
M
= 0. En este caso se elimina el polinomio C del estimador quedando
ste convertido en un MCR comn y el regulador se transforma, como ya lo vimos, en el
clsico controlador predictivo.
1.6. Control de Mnima Varianza Ponderado Adaptativo
Es igual al anterior excepto que se utilizan las ecuaciones 0 y 0 para la expresin del
control.

T
k k
= p
u x (1.42)
siendo el estimador el siguiente:

T
k k-d
k-d k-d k k-1 k-1
= - - p p p
u P
x x
1
]
(1.43)

Finalmente las cuatro grficas siguientes muestran un control de mnima varianza
adaptativo para la misma planta que el ejemplo anterior. Las dos primeras corresponden al
caso no ponderado es decir =0 observndose la salida y la actuacin en la 3y la
convergencia de los parmetros en la 4.


11-Mnima Varianza.doc 12/40

Figura 1-3


Figura 1-4

Las dos ltimas han sido tomadas para un =0.5. En ambos casos se puede ver la
mejora del seguimiento de la referencia con respecto al controlador fijo. Excepto el
transitorio inicial, la respuesta del sistema es muy satisfactoria.
11-Mnima Varianza.doc 13/40

Figura 1-5


Figura 1-6

1.7. Simulaciones
1.7.1. Sistema en Lazo Abierto
cambioref = 100;
ciclos = 4;
n = cambioref * ciclos;
e = 0.02*randn(n,1);
y = zeros(n,1);

Ap = [1 -1.74 .77 0 0 0];
Bp = .02 * [1.1 .9];
A = Ap;
B = Bp;
11-Mnima Varianza.doc 14/40
na = 2;
nb = 2;
C = [1.0000 -2.0000 1.2900 -0.2700 0 0 0 0];
nc = 4;

nk = 2;

C = [1 -.2 0 0 0 0 0];
nc = 2;

nk = 3;

for i = nk+nb+5 : n
% reduccin de ganancia
if i==200 B=B.*.63; end
% Sistema
y(i) = 0;
for j = 1:na
y(i) = y(i) - A(j+1)*y(i-j);
end;
for j = 1:nb
y(i) = y(i) + B(j)*u(i+1-j-nk);
end;
for j = 1:nc
y(i) = y(i) + C(j)*e(i-j);
end;

% Regulador
u(i) = 0;
end
plot(y);grid;
11-Mnima Varianza.doc 15/40
0 50 100 150 200 250 300 350 400
-0.4
-0.3
-0.2
-0.1
0
0.1
0.2
0.3
0.4


plot(xcorr(y)); grid
11-Mnima Varianza.doc 16/40
0 100 200 300 400 500 600 700 800
-4
-2
0
2
4
6
8
10


1.7.2. Control de Mnima Varianza

cambioref = 100;
ciclos = 4;
n = cambioref * ciclos;
e = 0.02*randn(n,1);
y = zeros(n,1);

Ap = [1 -1.74 .77 0 0 0];
Bp = .02 * [1.1 .9];
A = Ap;
B = Bp;
na = 2;
nb = 2;
%C = [1.0000 -2.0000 1.2900 -0.2700 0 0 0 0];
%nc = 4;

%nk = 2;

C = [1 -.2 0 0 0 0 0];
nc = 2;

nk = 3;

11-Mnima Varianza.doc 17/40
ref = ones(cambioref,1);
for i = 1:ciclos-1, ref = [ref; (-1)^i*ones(cambioref,1)]; end;
u = zeros(n,1);
ref=0*ref;

% calculo del vector F
F = zeros(nk,1);
F(1) = 1;
for i = 2: nk
F(i) = C(i);
for j = 1:i-1
F(i) = F(i) - F(j)*A(i-j+1);
end;
end;
% calculo del vector G
G = zeros(na,1);
for i = 1: na
G(i) = C(nk + i);
for j = 1:nk-1
if i+nk-j <= length(A)
G(i) = G(i) - F(j+1)*A(i+nk-j);
end;
end;
end;

% calculo del vector FB
FB = conv(F,B)';

% clculo del vector de parmetros
ParReg = ones(na+nc+nb+nk-2,1) / B(1);
ParReg(1:nc) = ParReg(1) * C(1:nc);
ParReg(nc+1:nc+na) = ParReg(1) * G(1:na);
ParReg(nc+na+1:nc+na+nb+nk-2) = FB(2:nb+nk-1) * ParReg(1);

for i = nk+nb+5 : n
% reduccin de ganancia
%if i==200 B=B.*.63; end
% Sistema
y(i) = 0;
for j = 1:na
y(i) = y(i) - A(j+1)*y(i-j);
end;
for j = 1:nb
y(i) = y(i) + B(j)*u(i+1-j-nk);
end;
for j = 1:nc
y(i) = y(i) + C(j)*e(i-j);
end;

% Regulador
error(i) = ref(i) - y(i);
% Ra(i) = ref(i-j+1); % debe ser filtrada por C
% clculo del vector de valores para el control predictivo
ValReg = zeros(size(ParReg));
for j = 1:nc
ValReg(j) = ref(i-j-1);
11-Mnima Varianza.doc 18/40
end;
for j = nc+1:nc+na
ValReg(j) = -y(i-j+nc+1);
end;
for j = nc+na+1:nc+na+nb+nk-2
ValReg(j) = -u(i-j+nc+na);
end;

% actuacin
u(i) = ValReg' * ParReg;
end
plot(y);grid;
% hold on; stairs(u,'r'); hold off
%axis([0 n -1.5 1.5])
0 50 100 150 200 250 300 350 400
-0.2
-0.15
-0.1
-0.05
0
0.05
0.1
0.15
0.2


plot(xcorr(y)); grid
11-Mnima Varianza.doc 19/40
0 100 200 300 400 500 600 700 800
-0.2
0
0.2
0.4
0.6
0.8
1
1.2


1.7.3. Control de Mnima Varianza en Planta Variable


cambioref = 100;
ciclos = 4;
n = cambioref * ciclos;
e = 0.02*randn(n,1);
y = zeros(n,1);

Ap = [1 -1.74 .77 0 0 0];
Bp = .02 * [1.1 .9];
A = Ap;
B = Bp;
na = 2;
nb = 2;
%C = [1.0000 -2.0000 1.2900 -0.2700 0 0 0 0];
%nc = 4;

%nk = 2;

C = [1 -.2 0 0 0 0 0];
nc = 2;

11-Mnima Varianza.doc 20/40
nk = 3;

ref = ones(cambioref,1);
for i = 1:ciclos-1, ref = [ref; (-1)^i*ones(cambioref,1)]; end;
u = zeros(n,1);
ref=0*ref;

% calculo del vector F
F = zeros(nk,1);
F(1) = 1;
for i = 2: nk
F(i) = C(i);
for j = 1:i-1
F(i) = F(i) - F(j)*A(i-j+1);
end;
end;
% calculo del vector G
G = zeros(na,1);
for i = 1: na
G(i) = C(nk + i);
for j = 1:nk-1
if i+nk-j <= length(A)
G(i) = G(i) - F(j+1)*A(i+nk-j);
end;
end;
end;

% calculo del vector FB
FB = conv(F,B)';

% clculo del vector de parmetros
ParReg = ones(na+nc+nb+nk-2,1) / B(1);
ParReg(1:nc) = ParReg(1) * C(1:nc);
ParReg(nc+1:nc+na) = ParReg(1) * G(1:na);
ParReg(nc+na+1:nc+na+nb+nk-2) = FB(2:nb+nk-1) * ParReg(1);

for i = nk+nb+5 : n
% reduccin de ganancia
if i==200 B=B.*.63; end
% Sistema
y(i) = 0;
for j = 1:na
y(i) = y(i) - A(j+1)*y(i-j);
end;
for j = 1:nb
y(i) = y(i) + B(j)*u(i+1-j-nk);
end;
for j = 1:nc
y(i) = y(i) + C(j)*e(i-j);
end;

% Regulador
error(i) = ref(i) - y(i);
% Ra(i) = ref(i-j+1); % debe ser filtrada por C
% clculo del vector de valores para el control predictivo
ValReg = zeros(size(ParReg));
11-Mnima Varianza.doc 21/40
for j = 1:nc
ValReg(j) = ref(i-j-1);
end;
for j = nc+1:nc+na
ValReg(j) = -y(i-j+nc+1);
end;
for j = nc+na+1:nc+na+nb+nk-2
ValReg(j) = -u(i-j+nc+na);
end;

% actuacin
u(i) = ValReg' * ParReg;
end
plot(y);grid;
% hold on; stairs(u,'r'); hold off
%axis([0 n -1.5 1.5])

0 50 100 150 200 250 300 350 400
-2.5
-2
-1.5
-1
-0.5
0
0.5
1
1.5
2


plot(xcorr(y)); grid
11-Mnima Varianza.doc 22/40
0 100 200 300 400 500 600 700 800
-80
-60
-40
-20
0
20
40
60
80


1.7.4. Control de Mnima Varianza Adaptativo
randn('seed',0);
cambioref = 200;
ciclos = 4;
n = cambioref * ciclos;
e = 0.1*randn(n,1);
y = zeros(n,1);
u = zeros(n,1);
yhh = zeros(n,1);
yhhh = zeros(n,1);

Ap = [1 -1.74 .77 0 0 0];
Bp = .022 * [1 .8182];
A = Ap;
B = Bp;
na = 2;
nb = 2;
C = [1 -1 .25 0 0 0];
nc = 3;

nk = 3;

ref = ones(cambioref,1);
for i = 1:ciclos-1, ref = [ref; (-1)^i*ones(cambioref,1)]; end;
u = zeros(n,1);
11-Mnima Varianza.doc 23/40
referencia = zeros(n,1);

% inicializacin identificacin
np=na+nb+nc+nk-2;
np = 6;
Aest = ones(n,np);
ParEst = zeros(nc+na+nb+nk-2,1);
lam=.99;
p=100*eye(np);
th=eps*ones(np,1);
x = zeros(np+nk,1);

% calculo del vector F
F = zeros(nk,1);
F(1) = 1;
for i = 2: nk
F(i) = C(i);
for j = 1:i-1
F(i) = F(i) - F(j)*A(i-j+1);
end;
end;
% calculo del vector G
G = zeros(na,1);
for i = 1: na
G(i) = C(nk + i);
for j = 1:nk-1
if i+nk-j <= length(A)
G(i) = G(i) - F(j+1)*A(i+nk-j);
end;
end;
end;

% calculo del vector FB
FB = conv(F,B)';

% clculo del vector de parmetros
ParReg = ones(na+nc+nb+nk-2,1) / B(1);
ParReg(1:nc) = ParReg(1) * C(1:nc);
ParReg(nc+1:nc+na) = ParReg(1) * G(1:na);
ParReg(nc+na+1:nc+na+nb+nk-2) = FB(2:nb+nk-1) * ParReg(1);

for i = nk+nb+5 : nk+nb+n-10%9%n
% reduccin de ganancia
if i==n/2 B=B.*.5; end
% Sistema
y(i) = 0;
for j = 1:na
y(i) = y(i) - A(j+1)*y(i-j);
end;
for j = 1:nb
y(i) = y(i) + B(j)*u(i+1-j-nk);
end;
for j = 1:nc
y(i) = y(i) + C(j)*e(i-j);
end;

% Regulador
11-Mnima Varianza.doc 24/40
referencia(i)=ref(i);
error(i) = referencia(i) - y(i);
% Ra(i) = ref(i-j+1); % debe ser filtrada por C
% clculo del vector de valores para el control predictivo
ValReg = zeros(nc-1+na+nk+nb-1,1);
for j = 1:nc
ValReg(j) = referencia(i-j+1);
end;
for j = nc+1:nc+na
ValReg(j) = -y(i-j+nc+1);
end;
for j = nc+na+1:nc+na+nb+nk-2
ValReg(j) = -u(i-j+nc+na);
end;

% actuacin
u(i) = ValReg' * ParEst;
%u(i) = ValReg' * ParReg;
%u(i)= randn;

% Identificacin
xcomp=x([[1:na] [na+nk:na+nb+nk-1] [na+nb+1:na+nb+nc-1]+nk-1]);
yh=xcomp'*Aest(i-1,1:np)';
epsi=y(i)-yh;
K=p*xcomp/(lam + xcomp'*p*xcomp);
p=(p-K*xcomp'*p)/lam;
Aest(i,1:np)=(Aest(i-1,1:np)'+K*epsi)';
w=Aest(i,na+1:na+nb)*x(na+nk:na+nb+nk-1);
v=[y(i);-x(1:na)]'*[1;Aest(i,1:na)']-w;
epsilon=v-Aest(i,na+nb+1:na+nb+nc-1)*x([na+nb+1:na+nb+nc-1]+nk-1);
x(2:np+nk)=x(1:np+nk-1);
x(1)=-y(i);
x(na+1)=u(i);
x(na+nb+nk)=epsilon;

Ae=[1 Aest(i,1:na)];
Be=Aest(i,na+1:na+nb);
Ce=[1 Aest(i,na+nb+1:na+nb+nc-1)];
% calculo del vector F
Fe = zeros(nk,1);
Fe(1) = 1;
for ii = 2: nk
Fe(ii) = Ce(ii);
for j = 1:ii-1
Fe(ii) = Fe(ii) - Fe(j)*Ae(ii-j+1);
end;
end;
% calculo del vector G
Ge = zeros(na,1);
for ii = 1: na
if nk+ii <= nc
Ge(ii) = Ce(nk + ii);
else
Ge(ii) = 0;
end
for j = 1:nk-1
if ii+nk-j <= length(Ae)
11-Mnima Varianza.doc 25/40
Ge(ii) = Ge(ii) - Fe(j+1)*Ae(ii+nk-j);
end;
end;
end;
% calculo del vector FB
FBe = conv(Fe,Be)';
% clculo del vector de parmetros
ParEst = ones(na+nb+nc+nk-2,1) / Be(1);
ParEst(1:nc) = ParEst(1) * Ce(1:nc);
ParEst(nc+1:nc+na) = ParEst(1) * Ge(1:na);
ParEst(nc+na+1:nc+na+nb+nk-2) = FBe(2:nb+nk-1) * ParEst(1);
end
plot(y);grid;
0 100 200 300 400 500 600 700 800
-2
-1
0
1
2
3
4
5


plot(Aest);grid;
11-Mnima Varianza.doc 26/40
0 100 200 300 400 500 600 700 800
-2
-1.5
-1
-0.5
0
0.5
1
1.5
2


stairs(u);grid

11-Mnima Varianza.doc 27/40
0 100 200 300 400 500 600 700 800
-200
-150
-100
-50
0
50
100
150
200
250


plot(xcorr(y-ref)); grid
11-Mnima Varianza.doc 28/40
0 200 400 600 800 1000 1200 1400 1600
-40
-20
0
20
40
60
80
100
120


1.7.5. Control de Mnima Varianza Adaptativo Directo

randn('seed',0);
cambioref = 200;
ciclos = 4;
n = cambioref * ciclos;
e = 0.1*randn(n,1);
y = zeros(n,1);
u = zeros(n,1);
yhh = zeros(n,1);
yhhh = zeros(n,1);

Ap = [1 -1.74 .77 0 0 0];
Bp = .022 * [1 .8182];
A = Ap;
B = Bp;
na = 2;
nb = 2;
C = [1 -1 .25 0 0 0];
nc = 3;

nk = 3;

ref = ones(cambioref,1);
11-Mnima Varianza.doc 29/40
for i = 1:ciclos-1, ref = [ref; (-1)^i*ones(cambioref,1)]; end;
u = zeros(n,1);
referencia = zeros(n,1);

% inicializacin identificacin
np=na+nb+nc+nk-2;
Aest = ones(n,np);
ParEst = zeros(np,1);
lam=1;
p=100*eye(np);
th=eps*ones(np,1);
x = zeros(np,1);

% calculo del vector F
F = zeros(nk,1);
F(1) = 1;
for i = 2: nk
F(i) = C(i);
for j = 1:i-1
F(i) = F(i) - F(j)*A(i-j+1);
end;
end;
% calculo del vector G
G = zeros(na,1);
for i = 1: na
G(i) = C(nk + i);
for j = 1:nk-1
if i+nk-j <= length(A)
G(i) = G(i) - F(j+1)*A(i+nk-j);
end;
end;
end;

% calculo del vector FB
FB = conv(F,B)';

% clculo del vector de parmetros
ParReg = ones(na+nc+nb+nk-2,1) / B(1);
ParReg(1:nc) = ParReg(1) * C(1:nc);
ParReg(nc+1:nc+na) = ParReg(1) * G(1:na);
ParReg(nc+na+1:nc+na+nb+nk-2) = FB(2:nb+nk-1) * ParReg(1);

for i = nk+nb+5 : nk+nb+n-10%9%n
% reduccin de ganancia
if i==n/2, B=B.*.5; end
% Sistema
y(i) = 0;
for j = 1:na
y(i) = y(i) - A(j+1)*y(i-j);
end;
for j = 1:nb
y(i) = y(i) + B(j)*u(i+1-j-nk);
end;
for j = 1:nc
y(i) = y(i) + C(j)*e(i-j);
end;

11-Mnima Varianza.doc 30/40
% Regulador
referencia(i)=ref(i);
error(i) = referencia(i) - y(i);
% Ra(i) = ref(i-j+1); % debe ser filtrada por C
% clculo del vector de valores para el control predictivo
ValReg = zeros(np,1);
for j = 1:nc
ValReg(j) = referencia(i-j+1);
end;
for j = nc+1:nc+na
ValReg(j) = -y(i-j+nc+1);
end;
for j = nc+na+1:nc+na+nb+nk-2
ValReg(j) = -u(i-j+nc+na);
end;

% actuacin
u(i) = ValReg' * ParEst;
%u(i) = ValReg' * ParReg;
%u(i)= randn;
if abs(u(i))>100, u(i)=100*sign(u(i));, end;

% Identificacin
% Clculo del vector X para el identificador
% si en x utilizo yhh, funciona pero con yhhh no. Pero yhh no es
accesible.
x=[flipud(yhhh(i-nc+1:i-1)); flipud(y(i-na-nk+1:i-nk)); flipud(u(i-
2*nk:i-nk))];

yhh(i)= -C(2)*yhh(i-1)-C(3)*yhh(i-2)+G(1)*y(i-nk)+G(2)*y(i-nk-
1)+FB(1)*u(i-nk)+FB(2)*u(i-nk-1)+FB(3)*u(i-nk-2)+FB(4)*u(i-nk-3);
yhhh(i)= (Aest(i-1,1)*yhhh(i-1)+Aest(i-1,2)*yhhh(i-2)+Aest(i-1,3)*y(i-
nk)+Aest(i-1,4)*y(i-nk-1)+Aest(i-1,5)*u(i-nk)+Aest(i-1,6)*u(i-nk-
1)+Aest(i-1,7)*u(i-nk-2)+Aest(i-1,8)*u(i-nk-3));

yh=x'*Aest(i-1,1:np)';
epsi=y(i)-yh;
K=p*x/(lam + x'*p*x);
p=(p-K*x'*p)/lam;
Aest(i,1:np)=(Aest(i-1,1:np)'+K*epsi)';
ParEst=[1; -Aest(i,1); -Aest(i,2); Aest(i,3); Aest(i,4); Aest(i,6);
Aest(i,7); Aest(i,8)]/Aest(i,5);
end
plot(y);grid;
11-Mnima Varianza.doc 31/40
0 100 200 300 400 500 600 700 800
-15
-10
-5
0
5
10



plot(Aest);grid;
11-Mnima Varianza.doc 32/40
0 100 200 300 400 500 600 700 800
-2
-1.5
-1
-0.5
0
0.5
1
1.5
2
2.5
3


stairs(u); grid
11-Mnima Varianza.doc 33/40
0 100 200 300 400 500 600 700 800
-100
-80
-60
-40
-20
0
20
40
60
80
100


plot(xcorr(y-ref)); grid
11-Mnima Varianza.doc 34/40
0 200 400 600 800 1000 1200 1400 1600
-400
-200
0
200
400
600
800
1000


1.7.6. Comparacin Mnima Varianza y Predictivo

randn('seed',0);
n = 500;
e = 0.1*randn(n,1);
y = zeros(n,1);
u = zeros(n,1);

A = [1 -1.74 .77 0 0 0];
B = .022 * [1 .8182];
na = 2;
nb = 2;
C = [1 -1 .25 0 0 0];
nc = 3;
nk = 3;

% Mnima Varianza
% calculo del vector F
F = zeros(nk,1);
F(1) = 1;
for i = 2: nk
F(i) = C(i);
for j = 1:i-1
F(i) = F(i) - F(j)*A(i-j+1);
11-Mnima Varianza.doc 35/40
end;
end;
% calculo del vector G
G = zeros(na,1);
for i = 1: na
G(i) = C(nk + i);
for j = 1:nk-1
if i+nk-j <= length(A)
G(i) = G(i) - F(j+1)*A(i+nk-j);
end;
end;
end;

% calculo del vector FB
FB = conv(F,B)';

% clculo del vector de parmetros
ParReg = ones(na+nc+nb+nk-2,1) / B(1);
ParReg(1:nc) = ParReg(1) * C(1:nc);
ParReg(nc+1:nc+na) = ParReg(1) * G(1:na);
ParReg(nc+na+1:nc+na+nb+nk-2) = FB(2:nb+nk-1) * ParReg(1);

for i = nk+nb+5 : nk+nb+n-10
% Sistema
y(i) = 0;
for j = 1:na
y(i) = y(i) - A(j+1)*y(i-j);
end;
for j = 1:nb
y(i) = y(i) + B(j)*u(i+1-j-nk);
end;
for j = 1:nc
y(i) = y(i) + C(j)*e(i-j);
end;

% Regulador
ValReg = zeros(np,1);
for j = 1:nc
ValReg(j) = 0;
end;
for j = nc+1:nc+na
ValReg(j) = -y(i-j+nc+1);
end;
for j = nc+na+1:nc+na+nb+nk-2
ValReg(j) = -u(i-j+nc+na);
end;

% actuacin
u(i) = ValReg' * ParReg;
end
yv=y;uv=u;xv=xcorr(y);

% Predictivo
randn('seed',0);
n = 500;
e = 0.1*randn(n,1);
y = zeros(n,1);
11-Mnima Varianza.doc 36/40
u = zeros(n,1);

A = [1 -1.74 .77 0 0 0];
B = .022 * [1 .8182];
na = 2;
nb = 2;
C = [1 -1 .25 0 0 0];
nc = 3;
nk = 3;

% calculo del vector F
F = zeros(nk,1);
F(1) = 1;
for i = 2: nk
F(i) = 0;
for j = 1:i-1
F(i) = F(i) - F(j)*A(i-j+1);
end;
end;
% calculo del vector G
G = zeros(na,1);
for i = 1: na
G(i) = 0;
for j = 1:nk-1
if i+nk-j <= length(A)
G(i) = G(i) - F(j+1)*A(i+nk-j);
end;
end;
end;

% calculo del vector FB
FB = conv(F,B)';

% clculo del vector de parmetros
ParReg = ones(na+nc+nb+nk-2,1) / B(1);
ParReg(2:nc) = zeros(nc-1,1);
ParReg(nc+1:nc+na) = ParReg(1) * G(1:na);
ParReg(nc+na+1:nc+na+nb+nk-2) = FB(2:nb+nk-1) * ParReg(1);

for i = nk+nb+5 : nk+nb+n-10
% Sistema
y(i) = 0;
for j = 1:na
y(i) = y(i) - A(j+1)*y(i-j);
end;
for j = 1:nb
y(i) = y(i) + B(j)*u(i+1-j-nk);
end;
for j = 1:nc
y(i) = y(i) + C(j)*e(i-j);
end;

% Regulador
% clculo del vector de valores para el control predictivo
ValReg = zeros(np,1);
for j = 1:nc
ValReg(j) = 0;
11-Mnima Varianza.doc 37/40
end;
for j = nc+1:nc+na
ValReg(j) = -y(i-j+nc+1);
end;
for j = nc+na+1:nc+na+nb+nk-2
ValReg(j) = -u(i-j+nc+na);
end;

% actuacin
u(i) = ValReg' * ParReg;
end
yp=y;up=u;xp=xcorr(y);



plot([yv yp+.8]);grid;
0 100 200 300 400 500
-0.5
0
0.5
1
1.5
2



stairs([uv up+100]);grid;
11-Mnima Varianza.doc 38/40
0 100 200 300 400 500
-150
-100
-50
0
50
100
150
200
250
300
350



plot([xv xp+20]); grid
11-Mnima Varianza.doc 39/40
0 200 400 600 800 1000
-10
0
10
20
30
40
50

1.8. Referencias
1. Goodwin, G. Sin: Adaptive Filtering, Prediction and Control, Prentice Hall 1984.
Compensacin de Velocidad: p 128/168
11-Mnima Varianza.doc 40/40

Você também pode gostar