Upload
ajlc2009
View
73
Download
0
Embed Size (px)
Citation preview
PARTE I. MEMORIA
CAPÍTULO 1. INTRODUCCIÓN ......................................................................................................1
1 Introducción al sistema eléctrico español .................................................................................1
2 Regulación frecuencia-potencia. El algoritmo de la RCP.........................................................3
3 Controles de AGCs y motivación de este proyecto .................................................................6
4 Objetivos, metodología y recursos...........................................................................................7
CAPÍTULO 2. PREDICCIÓN DEL PGCD .......................................................................................8
1 Introducción..............................................................................................................................8
2 Identificación............................................................................................................................8
2.1 Identificación de sistemas ...............................................................................................8
2.1.1 Métodos paramétricos. Modelos ARMA....................................................................9
2.1.2 Identificación de señales de valor medio no nulo.....................................................11
2.1.3 Representación de estado de modelos ARMA .........................................................12
2.1.4 Identificación recursiva de modelos ARMA............................................................14
2.1.4.1 Algoritmo recursivo de identificación de parámetros ........................................14
2.1.4.2 RPEM para representaciones de estado..............................................................18
2.1.5 Identificación a una muestra.....................................................................................20
2.1.6 Identificación a un horizonte dado ...........................................................................20
3 Predicción ...............................................................................................................................21
3.1 Predicción trivial ...........................................................................................................21
3.2 Predicción iterativa .......................................................................................................22
3.3 Predicción directa..........................................................................................................23
3.4 Predicción previo filtrado de la señal ............................................................................24
4 Resultados...............................................................................................................................26
4.1 Identificación ................................................................................................................26
4.1.1 Identificación a una muestra.....................................................................................27
4.1.2 Identificación a un horizonte dado ...........................................................................35
4.2 Predicción .....................................................................................................................37
4.2.1 Iterativa ....................................................................................................................37
4.2.2 Directa ......................................................................................................................41
4.3 Identificación y predicción del PGCD ..........................................................................42
5 Conclusiones...........................................................................................................................45
CAPÍTULO 3. CONTROL PREDICTIVO-ADAPTATIVO..........................................................47
1 Introducción............................................................................................................................47
2 Modelos incrementales respecto a la trayectoria ....................................................................49
3 Formulación del control predictivo.........................................................................................51
3.1 Modelo de predicción....................................................................................................51
3.2 Trayectoria deseada.......................................................................................................58
3.3 Función objetivo a minimizar .......................................................................................62
4 Control Predictivo-Adaptativo................................................................................................65
4.1 Introducción ..................................................................................................................65
4.2 Algoritmo de adaptación ...............................................................................................66
5 Control Predictivo-Adaptativo en AGC .................................................................................69
5.1 Esquema de control .......................................................................................................69
5.2 Especificaciones de control...........................................................................................70
6 Resultados...............................................................................................................................74
6.1 Algoritmo de adaptación ...............................................................................................74
6.2 Control predictivo adaptativo........................................................................................75
6.3 Control predictivo adaptativo para AGC.......................................................................80
6.3.1 Adaptación en AGC .................................................................................................80
6.3.2 Control predictivo-adaptativo...................................................................................81
7 Conclusiones...........................................................................................................................90
CAPÍTULO 4. FUTUROS DESARROLLOS ..................................................................................91
1 Identificación y predicción .....................................................................................................91
1.1 Cuantización vectorial...................................................................................................91
1.2 Algoritmo Neural-Gas...................................................................................................92
1.3 Predicción mediante aproximación funcional local y lineal..........................................92
1.4 Predicción con promediado de los datos pasados mediante modelo lineal ...................93
1.5 Predicción basada en los vectores de datos más cercanos.............................................94
1.6 Red neuronal perceptrón multicapa (MLP)...................................................................95
2 Control....................................................................................................................................97
APÉNDICES .......................................................................................................................................99
Apéndice A. Representaciones de estado en RPEM. Diferencias con RARMAX...........................99
Apéndice B. Cálculo de sensibilidades ..........................................................................................108
Cálculo de sensibilidades por el método analítico.....................................................................108
Cálculo de sensibilidades por diferencias finitas.......................................................................110
Apéndice C. Minimización de función objetivo en CPA ...............................................................111
LISTA DE FIGURAS.......................................................................................................................113
BIBLIOGRAFÍA ..............................................................................................................................115
PARTE II. ESTUDIO ECONÓMICO
1 Consideraciones previas .......................................................................................................118
2 Coste de desarrollo ...............................................................................................................118
3 Precio del producto...............................................................................................................118
PARTE III. MANUAL DE USUARIO
LIBRERÍAS ......................................................................................................................................120
1 Identificación........................................................................................................................120
2 Predicción .............................................................................................................................122
3 Control..................................................................................................................................124
MANEJO DE LAS LIBRERÍAS.....................................................................................................127
1 Identificación........................................................................................................................127
1.1 Identificación a una muestra .......................................................................................127
1.1.1 RPEM_RARMA ....................................................................................................127
1.1.2 RPEM_FCC ...........................................................................................................128
1.2 Identificación a un horizonte dado ..............................................................................129
1.3 Auxiliares....................................................................................................................130
2 Predicción .............................................................................................................................130
2.1 Predicción Iterativa .....................................................................................................130
2.2 Predicción directa........................................................................................................132
3 Control..................................................................................................................................133
3.1 Adaptación ..................................................................................................................133
3.2 Control predictivo .......................................................................................................134
3.2.1 Trayectoria deseada................................................................................................134
3.2.2 Cálculo de la ganancia K........................................................................................135
3.2.3 Estimación de la perturbación ................................................................................136
3.2.4 Control predictivo ..................................................................................................137
3.3 Control predictivo adaptativo......................................................................................138
3.4 Auxiliares....................................................................................................................139
CÓDIGO............................................................................................................................................140
1 Identificación........................................................................................................................140
1.1 Identificación a una muestra .......................................................................................140
1.1.1 RPEM_RARMA ....................................................................................................140
1.1.2 RPEM_FCC ...........................................................................................................141
1.1.3 RPEM_FCO ...........................................................................................................146
1.1.4 RPEM_SS ..............................................................................................................151
1.2 Identificación a un horizonte dado ..............................................................................154
1.2.1 Rpem_fcc_h ...........................................................................................................154
1.2.2 Rpem_fco_h ...........................................................................................................161
1.2.3 Rpem_ss_h .............................................................................................................167
2 Predicción .............................................................................................................................172
2.1 Iterativa .......................................................................................................................172
2.1.1 Predictor FCC iterativo ..........................................................................................173
2.2 DIRECTA ...................................................................................................................175
2.2.1 Predictor FCC directo.............................................................................................175
2.2.2 Predictor FCO directo ............................................................................................180
3 Control..................................................................................................................................185
3.1 Adaptacion ..................................................................................................................185
3.2 Control predictivo-adaptativo .....................................................................................187
3.2.1 Calcula ganancia ....................................................................................................187
3.2.2 Estima_estado.........................................................................................................189
3.2.3 Trayectoria deseada................................................................................................192
PARTE I. MEMORIA
Memoria. Capítulo 1. Introducción. 1
CAPÍTULO 1. INTRODUCCIÓN
Este capítulo, a modo de introducción al proyecto, pretende, en primer lugar,
dar una idea de la situación actual del mercado eléctrico español, en concreto de la
regulación secundaria (encargada del equilibrio de oferta-demanda en cada instante).
Se dará una visión superficial que permita entender cómo surge la idea del proyecto,
qué problemas se desean abordar, etc.
Por otro lado, se presentarán las condiciones en que se desarrollará este
proyecto, qué se propone conseguir y cómo se intentará cumplir dichos objetivos.
1 Introducción al sistema eléctrico español
Desde la liberalización del sector eléctrico producida en la última década, se ha
pasado de un sistema monopolístico en el que los criterios de regulación se centraban
menos en cuestiones económicas que en garantizar el suministro, a un sistema de
libre competencia (en teoría) en el que las empresas empiezan a tener en cuenta
nuevas exigencias del mercado, como la eficiente regulación de las potencias
generadas.
Los nuevos aspectos que surgen no son meramente económicos, sino que
aparecen cuestiones técnicas que obligan a una evolución del control de la
generación. Así pues, se pasa de un sistema en que cada zona geográfica se
encargaba de su correcto equilibrio oferta-demanda a un sistema centralizado en el
que toda la red española está integrada en un control en tiempo real que trata de
mantener el equilibrio.
Memoria. Capítulo 1. Introducción. 2
Como resultado de los cambios comentados, aparecen tres grandes actores en
el mercado eléctrico:
- El operador del mercado (OMEL): se encarga de casar la oferta y la
demanda mediante una serie de franjas temporales en las que se asigna
un precio a la energía y una cantidad de generación a cada empresa.
- El operador del sistema (REE): se encarga de gestionar las restricciones
técnicas que permiten que se genere en cada momento la potencia
demandada.
- Las zonas de regulación (AGCs): no son zonas geográficas, sino
agrupaciones de generadores bajo un mismo control capaces de
responder a los requerimientos de la regulación secundaria.
Actualmente hay 6 zonas: Endesa, Iberdrola, Hidrocantábrico, Unión
Fenosa, Viesgo y Gas Natural. Estas zonas tienen sus propios lazos de
control (subordinados al control central –RCP- del sistema eléctrico
peninsular) llamados Automatic Generation Control (AGC).
Por otro lado, el mercado eléctrico se divide a su vez en distintos mercados.
Por un lado está el mercado primario, que es en el que se ajusta la oferta de potencia
a la demanda prevista. Esto se hace para distintas franjas horarias. Por otro lado,
existe un mercado secundario, que tiene más relación con nuestro proyecto, ya que
en él se deciden las cantidades de potencia que cada zona de regulación pondrá a
disposición para la regulación secundaria. Estas cantidades influirán ligeramente en
el proyecto (mediante el cálculo del umbral de mala respuesta, ver 5.2 en el
CAPÍTULO 3. CONTROL PREDICTIVO-ADAPTATIVO). Finalmente, existen
otros mercados de servicios complementarios (potencia reactiva, por ejemplo).
Memoria. Capítulo 1. Introducción. 3
2 Regulación frecuencia-potencia. El algoritmo de la RCP
Como ya se ha mencionado, el sistema de regulación frecuencia-potencia del
mercado español es una combinación de un sistema centralizado (RCP) con diversos
subsistemas distribuidos (AGCs) y se divide en tres lazos ([1]) que actúan en
distintas escalas de tiempo (resumidos en la figura Fig. 1):
- Regulación primaria: se trata de la regulación descentralizada de
velocidad que consiguen los propios reguladores de las turbinas. Es el
más rápido (empieza a actuar en milisegundos), pero sólo tiene en
cuenta la velocidad de la propia turbina, sin preocuparse de lo que pase
en el resto del sistema.
- Regulación secundaria: consiste en un lazo de control centralizado
(algoritmo de Regulación Compartida Peninsular o RCP) que actúa en
conjunción con los sistemas distribuidos (AGCs). La RCP se encarga
principalmente de mantener constante la frecuencia del sistema,
frecuencia que es resultado de la velocidad de los generadores y que,
por tanto, supone una medida del equilibrio instantáneo entre
generación y consumo. Además, la regulación secundaria trata de que
se cumplan los programas de potencia de cada zona de generación. Es
más lento que la regulación primaria (empieza a actuar a los 4
segundos), pero garantiza que la frecuencia y los programas de
potencia tienden a mantenerse en sus valores nominales.
- Regulación terciaria: son reajustes periódicos de las consignas de
potencia de los generadores de la zona (es descentralizado) para
ajustarse a los cambios en la oferta y demanda. Tiene un carácter más
económico que técnico y es el más lento de los tres lazos.
Memoria. Capítulo 1. Introducción. 4
El proyecto que nos ocupa tiene sentido en la regulación secundaria, por lo que
nos centraremos en ésta y la desarrollaremos con un poco más de detalle.
Fig. 1. Tiempos de respuesta de la regulación frecuencia-potencia
La regulación secundaria se basa en el algoritmo de la RCP, que es un
sistema de control discreto con un tiempo de muestreo de 4 s que aporta un lazo de
control más al sistema (aparte de los lazos de los AGCs), permitiendo hacer Df=0
aunque DP≠0 mediante el envío de una consigna (Company Regulation Requirement
o CRR) a las zonas de regulación. Esta consigna se calcula como el esfuerzo total de
regulación (PRR o Peninsular Regulation Requirement) repartido entre las zonas de
regulación en función de unos coeficientes Ki (factores de participación) que se
obtienen del mercado secundario. A su vez, el PRR se calcula a partir de los desvíos
de generación respecto de los programas ([1] y [2]). Estas ideas se resumen en las
ecuaciones Ec. 1:
Sistemas automáticos
Regulación primaria
Regulación secundaria
5s 15 min
Regulación terciaria
Manual y/o
automático
Memoria. Capítulo 1. Introducción. 5
Ec. 1. Cálculos de la RCP
∑+−=6
1iNIDNSIPDNID
iii PINSINID −=
∑−=6
1
1iNID
GFNIDPRR
PRRKCRR ii .=
Donde:
NID (Net Interchange Deviation): diferencia entre generación y consumo,
PD: demanda de potencia total,
NSI: es el total de la generación programada,
PI: potencia generada por un área,
FNID: es el NID filtrado con un filtro no lineal,
Ki: factor de participación de la zona i.
Por otro lado, los AGCs deben calcularse su error de control de área (ACE),
pues es el error que deben anular, mediante la ecuación Ec. 2.
Ec. 2. Cálculo del ACE del AGC i )()(
)( . kiki
ki
ki CRRfBG
NIDACE +∆−=
Donde:
NIDi(k): desvío de potencia respecto del programa de la zona i en la muestra k,
G: factor de atenuación, actualmente igual a 5,
Bi: factor de bias, medida de cómo influye el desvío de frecuencia en la zona.
Memoria. Capítulo 1. Introducción. 6
Fundamentalmente, lo que trata de anular la RCP es el error de control de
área (ACE) en cada zona. Para ello, Red Eléctrica de España envía una consigna
(CRR) a cada AGC para que aumente o disminuya su generación. La respuesta a este
requerimiento es evaluada y penalizada si es inadecuada (ver 5.2, en el CAPÍTULO
3. CONTROL PREDICTIVO-ADAPTATIVO).
3 Controles de AGCs y motivación de este proyecto
Según lo visto en el apartado anterior, el AGC de una zona de regulación
recibe una consigna de REE y trata de adecuar su generación para evitar una
penalización. Dentro de cada AGC existen numerosas unidades generadoras, algunas
de las cuales participan en la regulación (otras no). Así pues, lo reguladores tratan de
repartir el requerimiento de regulación (CRR) entre sus generadores, atendiendo a
criterios económicos, restricciones técnicas (máximos y mínimos de generación de
turbina, velocidades de cambio...) y tratando de ajustarse a lo que se exige desde
REE, es decir, eliminar el ACE en un tiempo límite.
Teniendo en cuenta que los esfuerzos de regulación suponen un coste (de
mantenimiento, de generación, etc.), parece interesante dotar al control del AGC de
una cierta capacidad predictiva que le permita adecuar su generación no sólo a las
consignas actuales y pasadas sino a las futuras tendencias. Es decir, teniendo en
cuenta que la señal de consigna tiene muchas fluctuaciones (a pesar de los filtros de
la RCP), parece razonable prestar atención a la tendencia de esta señal y no sólo a sus
variaciones momentáneas, que podrían ir contra dicha tendencia (por lo que podrían
obviarse si no se supera el límite de mala respuesta), exigiendo una fluctuación
también en la generación. Por tanto, de aquí surge la idea de emplear un control
predictivo, que no sólo es útil si se puede predecir la referencia, sino también cuando,
aun siendo constante la referencia, se puede predecir la salida con un modelo.
Memoria. Capítulo 1. Introducción. 7
4 Objetivos, metodología y recursos
Este proyecto pretende comprobar y/o demostrar la viabilidad del control
predictivo-adaptativo en AGCs. No se tratará de optimizar dicho control para
conseguir mejorar las prestaciones de otros desarrollos reales, sino de evaluar sus
posibilidades frente a éstos. Concretando un poco más, se tratará de simular un AGC
con control predictivo en paralelo con otro real para ver el incumplimiento (ver 5.2,
en el CAPÍTULO 3. CONTROL PREDICTIVO-ADAPTATIVO) de ambas
soluciones.
En cuanto a los aspectos prácticos del proyecto, el trabajó se centrará en
simulaciones con Simulink ® (y Matlab 6.5 ®), por lo que los desarrollos tendrán
que concretarse en una serie de librerías y ficheros que permitan dicha simulación y
que puedan ser empleados en otro proyectos.
Puesto que la finalidad de parte de las simulaciones será comparar con
controles reales, contaremos con las siguientes herramientas:
- registros de señales reales de la RCP,
- simulador de reparto de potencia y grupos generadores de un AGC real,
gentileza de D. Ignacio Egido,
- simulador de control de AGC (al que llamaremos AGC completo, que
incluye el control, el reparto y las unidades), también desarrollados por
D. Ignacio Egido.
Memoria. Capítulo 2. Predicción del PGCD. 8
CAPÍTULO 2. PREDICCIÓN DEL PGCD
1 Introducción
Como se vio en la sección 3 del CAPÍTULO 1. INTRODUCCIÓN, el
conocimiento a priori de la tendencia de las señales que intervienen en la regulación
secundaria podría mejorar los algoritmos de control de los AGCs, mediante técnicas
de control predictivo que estudiaremos en el CAPÍTULO 3. CONTROL
PREDICTIVO-ADAPTATIVO. Por tanto, parece interesante tratar de elaborar
métodos de identificación de estas señales con vistas a obtener modelos que nos
permitan predecir comportamientos futuros. Dichos métodos y modelos serán, en
este proyecto, técnicas lineales y paramétricas muy comunes en la identificación de
sistemas.
2 Identificación
En este apartado, comentaremos algunas ideas sobre el proceso de obtención
de modelos de plantas desconocidas a partir de datos empíricos, que en nuestro
proyecto será la base de la predicción del PGCD.
2.1 Identificación de sistemas
La identificación de sistemas se puede entender como el conjunto de técnicas
que tratan de obtener un modelo matemático de una realidad a partir de datos
generados en ensayos. En la identificación de sistemas lineales invariantes en el
tiempo (LTI) en los que intervienen procesos estocásticos (sucesión de variables
aleatorias) se emplea el siguiente modelo:
Memoria. Capítulo 2. Predicción del PGCD. 9
Ec. 3 kkk vuqGy +⋅= )(
En el modelo de la ecuación Ec. 3, encontramos una componente determinista
que representa la influencia de las variables que podemos medir (uk) y cuyo efecto
sobre el sistema conocemos de forma más o menos exacta (mediante la respuesta del
sistema a un pulso, mediante una ecuación en diferencias finitas o mediante una
función de transferencia, G(q)). Además, encontramos una componente estocástica
(probabilística), vk, que nos permitirá aproximar la influencia de variables no
medibles.
Normalmente, en la identificación de este tipo de sistemas en los que
intervienen variables aleatorias se emplea un ruido blanco (secuencia de variables
independientes aleatorias de media nula) filtrado (ruido coloreado) para “simular” el
efecto de vk. Esto se debe a que el espectro en frecuencias del ruido blanco es plano,
con lo que bastará con filtrar adecuadamente dicho espectro para obtener cualquier
otro espectro que absorba la distribución de la potencia de la componente estocástica
en función de la frecuencia.
2.1.1 Métodos paramétricos. Modelos ARMA
En la identificación de sistemas, existen diferentes formas de modelar la
realidad. Así, existen modelos de función de transferencia, de ecuación en
diferencias (que básicamente son lo mismo que los anteriores pero expresado de otra
forma), de respuesta al escalón o al pulso, de respuesta en frecuencia, en espacio de
estado, modelos por clustering, mediante redes neuronales… Una posible
clasificación de estos métodos pasa por distinguir entre no lineales y lineales. Entre
los primeros, encontramos las redes neuronales o el clustering. Dentro de los
lineales, proponemos otra clasificación más: paramétricos y no paramétricos. Las
Memoria. Capítulo 2. Predicción del PGCD. 10
funciones de transferencia, ecuación en diferencias y representación de estado
pueden expresarse en función de unos parámetros, por lo que pertenecen al primer
grupo, mientras que la respuesta al pulso, al escalón o la respuesta en frecuencia no
tienen una representación en parámetros que las caracterice, por lo que se dice que
pertenecen a los métodos no paramétricos.
En este proyecto se trabajará únicamente con modelos en espacio de estado
(ver apartado 2.1.3), que son otra forma de organizar los modelos de función de
transferencia o de ecuación en diferencias (el paso de unos a otros es directo), es
decir, son modelos paramétricos. Así pues, se emplearán en este apartado modelos de
ecuaciones en diferencias o de función de transferencia (Ec. 4) para entender algunos
aspectos del problema de identificación.
Ec. 4 kkk eD
Cu
F
ByA .
)(
)(.)(
)().(
θ
θ
θ
θθ +=
La ecuación Ec. 4 es una forma genérica del modelo de la Ec. 3 en el que se
encuentran 5 polinomios distintos. Sobre este modelo general existen variaciones que
consisten en que algunos de los polinomios no aparecen. Así, encontramos modelos
OE (output error), Box-Jenkins, ARMAX (AutoRegressive Moving Average with
eXtra input), ARX, ARMA... El estudio en profundidad no es objeto de este
proyecto, por lo que simplemente mencionaremos los modelos ARMA, que son los
que se emplearán en adelante. Dichos modelos suponen que no hay variable de
entrada, sino que la salida se modela como un ruido blanco filtrado. Es lo que se
llama modelado de series temporales, que es útil cuando no se dispone de registros
de entradas. Así pues, este capítulo se centrará en la identificación de modelos de la
forma de la ecuación Ec. 5:
Memoria. Capítulo 2. Predicción del PGCD. 11
Ec. 5. Modelo ARMA para series temporales kk eqD
qCy
)(
)(=
2.1.2 Identificación de señales de valor medio no nulo
En nuestro problema de identificación partimos de la base de que la señal que
queremos modelar se puede representar mediante el filtrado de un ruido blanco (por
su espectro plano), es decir, con media nula. Así pues, si el proceso estocástico del
que queremos extraer un modelo presenta un valor medio, debemos conseguir una
entrada incremental (basta con hacer la diferencia de la entrada en la muestra k+h
con la entrada en la muestra k. De no ser así, la predicción será inviable (peor cuanto
mayor sea el valor medio). Esto se debe a que el identificador tratará de conseguir
ese valor medio que tiene la señal, por lo que se producirá el fenómeno de “random
walk”, es decir, el identificador obtendrá unos parámetros tales que se consiga un
efecto integral en el filtro (un polo de valor absoluto q=1), con lo que la
identificación será inestable con frecuencia y, al modificarse los parámetros respecto
a los óptimos (para conseguir estabilidad), la predicción no será correcta.
Fig. 2. Errores de predicción de entradas diferenciales y con medias 90 y 5
0.5 1 1.5 2
x 104
-50
0
50
100
150
200
Error predicción
Diferencial
No diferencial
1000 2000 3000 4000 5000
-40
-30
-20
-10
0
10
20
30
40
Errores de predicción
Memoria. Capítulo 2. Predicción del PGCD. 12
Como se observa en la figura Fig. 2, al disminuir el valor medio de la entrada,
el valor medio del error también disminuye.
En resumen, dado que si existe un valor medio será necesario eliminarlo
(trabajar con la entrada diferencial), trabajaremos con los incrementos de las señales
en todos los casos.
2.1.3 Representación de estado de modelos ARMA
Como es sabido en teoría de control, hay ocasiones en las que es más
interesante (otras veces no hay más alternativas) manejar representaciones de estado
de los modelos con los que se pretende trabajar. Dichas representaciones o modelos
en espacios de estado suponen una forma matricial de organizar las ecuaciones
diferenciales (en tiempo continuo) o las ecuaciones en diferencias (en tiempo
discreto).
En nuestro caso, son dos los objetivos que se persiguen trabajando con
espacios de estado:
1. Por un lado, se pretende simplificar el algoritmo recursivo de identificación de
parámetros que proporciona Matlab ® (RARMAX, [8]), con vistas a una futura
implementación del algoritmo recursivo de identificación de parámetros (RPEM,
ver apartado 2.1.4) en código C.
2. Por otro lado, como veremos más adelante (apartado 2.1.6), el algoritmo
recursivo de identificación de parámetros se modificará para minimizar errores
de predicción a más de una muestra, cosa que se simplifica utilizando espacio de
estado.
Memoria. Capítulo 2. Predicción del PGCD. 13
Así pues, nuestra representación del modelo identificado tomará la forma:
Ec. 6. Representación de estado de modelos ARMA
kk
mk
k
k
kkkkkkk
kk
mk
k
k
k
km
k
k
kkkkk
eD
x
x
x
CyeDXCy
eK
x
x
x
A
x
x
x
eKXAX
).(...
).().().(
)(...
)(...
).().(
2
1
2
1
)1(
)1(2
)1(1
1
θθθθ
θθθθ
+
=→+=
⋅+
⋅=
→+=
+
+
+
+
sistema del salida:
blanco ruido :
sdiferenciaen ecuación laen anteriores muestras de
salidasy entradas las aacompañan que conocidos) o (estimados parámetros los de
funciónSon estado. deción representa la de matrices:)(),(),(),(
estados devector :1
k
k
kkkk
k
y
e
DCKA
X
θθθθ+
En cuanto a la representación de estado elegida, se optará por emplear formas
típicas en control como son las formas canónicas de observabilidad y controlabilidad
(FCO y FCC en adelante). No obstante, durante el desarrollo del proyecto se observó
que dichas formas canónicas presentan algunas particularidades que hacen imposible
la reproducción exacta del algoritmo RARMAX ([8]), que nos servirá de
comparación para la identificación. Esto nos llevó a probar una representación de
estado obtenida especialmente para evitar este problema y que llamaremos SS. Una
Memoria. Capítulo 2. Predicción del PGCD. 14
explicación más detallada se puede encontrar en el Apéndice A. Representaciones de
estado en RPEM. Diferencias con RARMAX.
2.1.4 Identificación recursiva de modelos ARMA
En la identificación de sistemas es frecuente encontrar señales que no
corresponden a un único modelo lineal a lo largo del tiempo, sino que se deben
representar con distintos modelos lineales para poder considerar las no linealidades
del sistema. En este caso, así como cuando no se dispone de datos previos que nos
permitan identificar un modelo a priori, debemos hacer la identificación lo más
adaptativa posible, es decir, debemos recalcular la estructura (órdenes de los
polinomios en identificación paramétrica) y parámetros del modelo “cada cierto
tiempo” (podría ser cada muestra o al alcanzar una cota de error). En nuestro caso, la
estructura del modelo será fija y actualizaremos los parámetros cada muestra.
2.1.4.1 Algoritmo recursivo de identificación de parámetros
Para conseguir esta adaptabilidad en la identificación, emplearemos un
algoritmo recursivo de obtención de parámetros mediante el método del error de
predicción (RPEM). Este algoritmo trata de minimizar el error de predicción (a una
muestra en un principio, pero se puede modificar para minimizar errores de
predicción con otros horizontes –ver apartado 2.1.6-) y consta de los siguientes
elementos y pasos:
1) Función objetivo a minimizar: 2)( )(.2
1)( θελθ l
k
Nkl
lkV ∑−=
−= , siendo ek el
error de predicción y l el factor de olvido, que está relacionado con el
Memoria. Capítulo 2. Predicción del PGCD. 15
número de muestras que encontramos en una constante de tiempo en la
ventana deslizante de pesos de forma exponencial de la figura Fig. 3 (esta
ventana significa que se da más peso a los errores de predicción últimos,
disminuyendo este peso de forma exponencial según se aleja hacia errores
de muestras pasadas):
Fig. 3. Ventana de pesos exponencial
La relación de l con la obtención de los parámetros es directa, ya que
cuantos más datos se empleen en el cálculo, más tiempo se tardará en
conseguir los valores adecuados, pero menor será la dispersión alrededor
de los valores correctos.
2) Obtención de la salida predicha, ky y del error de predicción, ek. Este
cálculo se hará de distintas formas dependiendo de la estructura de nuestro
modelo y de si lo manejamos en espacio de estado o no.
3) Obtención del vector L: 1kk1-kkk1-kkk S..PL.'.P S −
=→+= ψψψλ)))
,
kconψ) = sensibilidades calculadas en k-1 y Pk-1= matriz de covarianzas.
Esta matriz (simétrica) nos da una idea de la bondad de los parámetros
calculados en k-1, y multiplicado por las sensibilidades (en Sk) indica la
incertidumbre en la predicción debida al proceso de actualización de
parámetros.
1
l
l2
kk-1 k-N
)(
1
/1/
λ
λ τ
LnN
ee NTs
−=→
→== −−
Memoria. Capítulo 2. Predicción del PGCD. 16
4) Obtención de los nuevos parámetros )'.(1 kkk L εθθ += −
5) Actualización de la matriz de covarianzas y del vector de sensibilidades:
( ) .L.SLP1
P kkk1-kkt
−=λ
, 1k+ψ)
(relacionado con la variación de la
predicción al variar los parámetros) calculado como corresponda al
modelo concreto sobre el que se aplique el algoritmo y otros elementos
que permitan el cálculo de la predicción en la muestra siguiente (cuyo
cálculo depende también del método concreto).
El estudio del RPEM de Matlab ®, llamado RARMAX, en paralelo con el
desarrollo de nuestros propios algoritmos recursivos de identificación de parámetros
para espacios de estado (ver apartado 2.1.4.2) nos llevó a detectar ciertas diferencias
que hacen necesaria la adición de pasos y de nuevas definiciones. Mostramos a
continuación el RPEM ampliado:
1) La función objetivo a minimizar y la interpretación de l no cambian.
2) Obtención de la salida predicha a priori, ky (salida predicha para el instante k
con la información –parámetros y predicciones de otros elementos para la
siguiente muestra- en k-1) y del error de predicción a priori, ek:
kkkkkk yyy ˆ,.ˆ 1 −== − εϕθ , donde [ ]nmk cccaaa ...... 21211 =−θ
es el vector de parámetros del filtro identificado en la muestra anterior y
[ ]'...... 2121 nkkkmkkkk yyy −−−−−−= εεεϕ es el vector de
regresores. Este error de predicción es el que emplearemos para el cálculo de
los nuevos parámetros.
Memoria. Capítulo 2. Predicción del PGCD. 17
3) Obtención del vector Lk.
4) Obtención de los nuevos parámetros )'.(1 kkk L εθθ += −
5) Estabilización del filtro calculado. Es posible (incluso frecuente si la señal
que queremos modelar no corresponde a un sistema lineal) que los
parámetros calculados den lugar a polos y/o ceros fuera del círculo unidad (en
el caso discreto esta es la condición de inestabilidad) que hagan que el filtro
sea inestable y/o inversamente inestable (dependiendo de la finalidad de la
identificación puede ser necesaria la estabilidad inversa –como en el caso de
utilizarla para predicción-). En el apartado 4.1.1 se hablará un poco mas de
los dos métodos más comunes de estabilización de filtros.
6) Cálculo del error de predicción a posteriori (error de predicción en la muestra
k calculado con los datos actualizados en k): kkkkkk yyy ϕθε .ˆ ** −=−= .
Este error será el que se emplee para las predicciones de la muestra siguiente.
7) Actualización del vector de regresores de la muestra siguiente ( 1+kϕ )
8) Actualización de la matriz de covarianzas.
9) Cálculo de sensibilidades.
Para más información sobre RARMAX ver [8].
Memoria. Capítulo 2. Predicción del PGCD. 18
2.1.4.2 RPEM para representaciones de estado
Como explicamos en el aparatado 2.1.3, manejaremos el modelo ARMA
mediante una representación de estado. Por tanto, el RPEM sufre algunas
modificaciones, quedando, en su forma general (antes de aplicarlo a ninguna
representación de estado en concreto) como sigue:
1) Elección de l y matriz de covarianzas iniciales. Como ya mencionamos en el
apartado 2.1.4, la elección de l debe venir del compromiso entre una
dispersión (y por tanto un error en la identificación y predicción) aceptable y
un número máximo de muestras en la ventana de pesos exponenciales (no
tiene sentido utilizar muchas muestras en la identificación de modelos que
cambian frecuentemente o en los que es importante que la identificación se
consiga en pocas muestras). Por otro lado, la matriz de covarianzas nos da
una medida de la incertidumbre en los parámetros obtenidos, por lo que
inicialmente se le suele dar un valor elevado (una matriz cuadrada diagonal
de dimensión m+n –siendo m el orden del polinomio denominador y n el del
numerador-).
2) Obtención de la salida predicha a priori (salida en el instante k con los
parámetros del instante anterior y con el estado predicho para k) y del error de
predicción a priori: kkkkkk yyXCy ˆ,.ˆ 1 −== − ε)
. Este error de predicción es
el que emplearemos para el cálculo de los nuevos parámetros.
3) Obtención del vector Lk: kk1-kk
k1-kk con
).'.P (
.PL ψ
ψψλ
ψ )))
)
+= = sensibilidades
calculadas en k-1. Por motivos de estabilidad numérica, puede ser necesario
(como en nuestro caso) juntar el cálculo de Sk con el de Lk.
4) Actualización de parámetros )'.(1 kkk L εθθ += − .
Memoria. Capítulo 2. Predicción del PGCD. 19
5) Garantizar la estabilidad inversa (el polinomio C(q) no tiene raíces fuera del
círculo unidad, para lo cual modificamos los parámetros ci si es necesario).
También podría interesar la estabilidad directa (raíces del polinomio A(q)).
En ambos casos, podremos utilizar dos métodos que se verán de forma más
detallada en 4.1.1.
6) Actualización1 de los estados en k: =+= −−*11 .. kkkkk KXAX ε
= )..(. 1111 −−−− −+ kkkkkk XCyKXA , siendo *1−kε el error de predicción a
posteriori en la muestra anterior.
7) Actualización de las derivadas de los estados en k:
*1
1111
1 . kk
kkk
kkkkk
kk
d
dKX
d
dC
d
dXCKX
d
dA
d
dXA
d
dXε
θθθθθθ⋅+
⋅+⋅−⋅+⋅= −
−−−−
− .
8) Cálculo del error de predicción a posteriori: kkkkkk XCyyy .ˆ ** −=−=ε .
9) Predicción del estado siguiente con el error de predicción actualizado:
=+=+*
1 .. kkkkk KXAX ε)
= kkkk yKXCKA ..).( +− .
10) Cálculo de las sensibilidades: en este paso encontramos diferencias
dependiendo del error de predicción que queramos minimizar (a una muestra,
ŷk+1 o a un horizonte más amplio, ŷk+h, cosa que se verá más adelante –
apartado 2.1.6-). Explicamos aquí las sensibilidades de la predicción a una
muestra:
( )=== ++
+θθ
ψd
XCd
d
yd kkkk
111
.ˆ)
)=⋅+⋅ +
+1
1 ˆˆ
kkk
k Xd
dC
d
XdC
θθ
1 Esto sólo es necesario en determinadas representaciones de estado
Memoria. Capítulo 2. Predicción del PGCD. 20
1ˆ
).(.
+⋅+
+
⋅+⋅
⋅−⋅−+⋅−=
kk
kk
kk
kkkkk
kkkk
Xd
dC
yd
dKX
d
dCKC
d
dK
d
dA
d
dXCKAC
θ
θθθθθ
2.1.5 Identificación a una muestra
Como se ha visto en los apartados previos, los algoritmos recursivos de
identificación precisan del cálculo de unas sensibilidades, que no son más que las
derivadas de las salidas predichas para el instante siguiente respecto de los
parámetros. En esto consiste precisamente la identificación a una muestra: en trabajar
con los valores de predicciones y sensibilidades para la muestra siguiente. Esto
implica que se da más importancia a las dinámicas rápidas, a las dinámicas a corto
plazo cuyas variaciones (representadas de cierta forma por las sensibilidades) son
rápidas, lo cual puede perjudicar a la identificación en caso de existir un ruido de alta
frecuencia superpuesto a la dinámica que se pretende modelar.
2.1.6 Identificación a un horizonte dado
Las identificaciones realizadas en apartados previos se basaban en la
minimización del error de predicción a una muestra, ek=yk-ŷk(θk-1), lo cual supone
que se predicen mejor las dinámicas rápidas y las predicciones a horizontes de
tiempo mayores pueden resultar poco satisfactorias.
Una de las ventajas de las representaciones de estado (y uno de los motivos
de su estudio durante los capítulos previos) es que la predicción a cualquier horizonte
Memoria. Capítulo 2. Predicción del PGCD. 21
es prácticamente igual de sencilla (o complicada, según se mire), ya que, conociendo
las matrices del estado, la simulación hacia adelante es trivial (basta con aumentar la
potencia de una matriz para obtener predicciones a horizontes mayores). Esto, unido
a la flexibilidad del algoritmo RPEM en este sentido, nos lleva a obtener
identificaciones que minimizan errores de predicción a más de una muestra sin más
que modificar el cálculo de las sensibilidades en el algoritmo (pasamos de manejar
θψ
d
yd k
k
11
ˆ+
+ =)
a manejar θ
ψd
yd hk
k
++ =
ˆ1
)). Para más detalles sobre este cálculo, ver
Apéndice B. Cálculo de sensibilidades
3 Predicción
Una de las finalidades de la identificación de sistemas (la principal en este
proyecto) es la predicción de series temporales modeladas mediante procesos
estocásticos. En nuestro caso en concreto, trataremos de predecir las señales cuyo
control adaptativo-predictivo queremos desarrollar (señales reales con interpretación
física y de las que no podemos asegurar que provengan de sistemas lineales –lo más
probable es que no respondan a un comportamiento lineal, ya que dependen del
comportamiento de varias zonas de regulación, del operador del sistema, de criterios
de minimización de costes, etc.-). En este apartado se desarrollarán las predicciones
empleadas durante el proyecto.
3.1 Predicción trivial
La predicción trivial realmente no tiene nada que ver con el problema de la
identificación de sistemas y predicción de señales con componente estocástica. Esta
predicción consiste en suponer que la señal conservará su valor actual, yk, en las
sucesivas muestras dentro del intervalo de predicción considerado (ŷk+1= ...ŷk+h=yk).
Memoria. Capítulo 2. Predicción del PGCD. 22
Sin embargo, nos servirá de comparación y referencia para nuestras predicciones (en
caso de no conseguir ninguna predicción mejor que la trivial, usaremos ésta para el
control predictivo-adaptativo, que es la parte fundamental del proyecto).
Otra predicción interesante para las comparaciones será el valor medio de la
señal, si bien éste debería ser peor que los predictores propuestos en este proyecto (si
no, es que habremos fracasado en la búsqueda de una predicción adecuada).
3.2 Predicción iterativa
Llamaremos predicción iterativa a aquélla en la que la identificación de los
parámetros se hace minimizando el error de predicción a una muestra y la predicción,
simulando recursivamente el modelo hacia delante. El nombre viene de que, si
trabajamos con incrementos de las señales (que será lo habitual –ver apartado 2.1.2-),
la predicción a un horizonte dado se compone de la suma de los incrementos
predichos desde la muestra actual hasta el final del horizonte. Es decir, lo que se
calcula en cada pasada del algoritmo de predicción es el incremento de la variable
respecto al estado anterior (que puede ser un estado predicho a partir de otro estado
previo), de ahí su calificación de iterativo.
La división del problema de predicción en dos partes (identificación y
predicción) nos permite identificar el modelo con una representación de estado y
predecir con otra. Sin embargo, como se comprobó durante los ensayos, los
predictores para los tres casos (FCO, FCC y SS) tienen idénticas propiedades, por lo
que optaremos por el predictor FCC (recordando que también elegimos esta opción
como identificador).
Memoria. Capítulo 2. Predicción del PGCD. 23
No debe extrañarnos el hecho de que los tres predictores proporcionen
resultados idénticos, ya que, a pesar de tener distintas matrices A, C, K y matriz de
predicción, Ap=A(h-1).(A-K.C), también tienen distintos estados, de tal forma que la
predicción Ap.X es igual para los tres casos (si el estado inicial es el mismo para los
tres). Además, las matrices de predicción de los tres predictores tienen los mismos
autovalores (teniendo en cuenta que la representación SS tiene más estados –m+n en
vez de m-, por lo que aparecen m+n autovalores, de los que n son nulos), con lo que,
recibiendo los mismos parámetros, serán estables o inestables por igual. Esto es
lógico si tenemos en cuenta que las matrices representan la dinámica de un modelo
que es común a los tres casos (la dinámica es única).
3.3 Predicción directa
En oposición a la predicción iterativa, llamamos predicción directa a aquélla
cuya identificación de parámetros se hace minimizando el error de predicción a más
de una muestra (lo más adecuado será que el horizonte de minimización, h, coincida
con el de predicción). La predicción es directa en tanto que, si trabajamos con
señales incrementales, el incremento predicho será el que hay que sumar al valor de
la señal en la muestra actual para obtener la predicción de la señal dentro de h
muestras (en lugar de sumar incrementos muestra a muestra). La motivación para
elaborar un predictor directo surge, como se vio anteriormente, de la necesidad de
dar mayor importancia a las dinámicas a medio y largo plazo que a las dinámicas
rápidas (como hace la predicción a una muestra).
De nuevo, tenemos varias opciones para la identificación y predicción, pero
su estudio no aportará nuevos datos, así que utilizaremos el identificador y predictor
FCC, que han resultado ser la mejor opción por lo visto hasta el momento.
Memoria. Capítulo 2. Predicción del PGCD. 24
3.4 Predicción previo filtrado de la señal
En ocasiones, la identificación de parámetros a un horizonte dado no basta
para prescindir de dinámicas rápidas que empeoran la predicción. Estas dinámicas
rápidas pueden considerarse como una perturbación que debemos eliminar mediante
filtros lineales del tipo paso bajo. En concreto, emplearemos filtros de Butterworth
de distintos órdenes.
Aunque el filtrado puede mejorar la predicción, debe tenerse en cuenta que
estos filtros introducen retardos que se añaden al horizonte de predicción
produciendo más error en la predicción (Fig. 6). Así pues, emplearemos órdenes
bajos para los filtros y tendremos que evaluar si se consigue una mejora o no.
Para determinar la frecuencia de corte del filtro paso bajo que emplearemos,
recurrimos a los periodogramas medios de las señales, que, si el número de muestras
es elevado2, se corresponden con el espectro del ruido coloreado que es nuestra señal.
Dichos periodogramas se pueden ver en las siguientes figuras (Fig. 4, Fig. 5):
2 El concepto de peridograma, como otros muchos de la identificación de sistemas, provienen de sumas de infinitos términos, por lo que una realización no será más que una mera aproximación a la realidad.
Memoria. Capítulo 2. Predicción del PGCD. 25
0 0.5 1 1.5 2 2.5 3 3.50
2
4
6
8
10
12
14
16x 10
4
Frecuencia (rad/s)
Periodograma del incremento del PGC a 10 muestras
Fig. 4. Espectro del incremento del PGC a 10 muestras
0 0.5 1 1.5 2 2.5 3 3.50
1
2
3
4
5
6
7
8
9
10x 10
4
Frecuencia (rad/s)
Periodograma incremento del ACE a 10 muestras
Fig. 5. Espectro del incremento del ACE a 10 muestras
Los periodogramas de las demás señales presentan un aspecto parecido, salvo
el del BIAS (desvío en frecuencia), que tiene una parte importante de su energía en
una frecuencia intermedia entre 0 y p, causante del pico en el ACE a esa frecuencia.
Aunque habrá que confirmarlo más adelante, esto parece indicar que se hará difícil
predecir el BIAS (y por tanto el ACE) a horizontes más o menos amplios.
Memoria. Capítulo 2. Predicción del PGCD. 26
Fig. 6. PGC filtrado paso bajo
4 Resultados
Este apartado trata de mostrar los resultados más relevantes de los ensayos
realizados a lo largo del proyecto.
4.1 Identificación
Para evaluar los resultados de la identificación, se ensayará primero con
filtros lineales que nos permitan determinar la corrección de la identificación. Estos
filtros tendrán la forma de la figura Fig. 7. Posteriormente, se probará en señales
reales para ver su comportamiento, aunque esto se hará integrado ya con la
predicción, puesto que, al no tener un modelo de las señales reales, no podemos saber
si la identificación es buena más que evaluando la predicción.
350 400 450 500 550 600 650 700 750 800
-100
-80
-60
-40
-20
0
20
40
60
PGC diferencial filtrado paso bajo
Sin filtroWc=0.03 Hz
350 400 450 500 550 600 650 700 750 800
-60
-40
-20
0
20
40
60
80
PGC diferencial filtrado paso bajo
Sin filtrowc=0.01 Hz
Memoria. Capítulo 2. Predicción del PGCD. 27
1+c1z -1
1+a1.z +a2z -1 -2
G
Fig. 7. Filtro lineal empleado en los ensayos
4.1.1 Identificación a una muestra
Como se comentó en 2.1.3, el análisis en profundidad del algoritmo recursivo
de identificación de parámetros aplicado a las formas canónicas de controlabilidad y
observabilidad (FCC y FCO) muestra que estas representaciones de estado no pueden
representar exactamente las ecuaciones del algoritmo RPEM de [8] (ver Apéndice A.
Representaciones de estado en RPEM. Diferencias con RARMAX para más detalle).
No obstante, esto no significa que no sirvan para identificar correctamente las series
temporales de trabajo. Es labor de este apartado determinar si el desarrollo de la
representación de estado SS se justifica con la mejora en la identificación y si las
formas canónicas son suficientemente buenas para el resto del proyecto. Para ello,
haremos comparaciones con el algoritmo RARMAX de Matlab.
En primer lugar, comparamos los parámetros identificados con la realidad del
filtro (Fig. 8).
En un principio, parece que todas las representaciones de estado identifican
correctamente. Esto, unido a que la representación de estado SS no supone una
mejora en la identificación, nos llevará a decidirnos por las formas canónicas como
representaciones de estado sobre las que desarrollar el resto del proyecto.
Memoria. Capítulo 2. Predicción del PGCD. 28
La predicción a una muestra de estos identificadores es prácticamente
idéntica a la de RARMAX (Fig. 9) y aceptable comparada con la realidad (Fig. 10).
Fig. 8. Identificación de parámetros de un filtro lineal mediante distintas
representaciones de estado
0 200 400 600 800 1000 1200 1400 1600-1.5
-1
-0.5
0
0.5
1Identificación de parámetros de un filtro mediante FCO
k
θi(k)
0 500 1000 1500
-1.5
-1
-0.5
0
0.5
Identificación de parámetros de un filtro mediante FCC
kθi(k)
0 500 1000 1500
-1.5
-1
-0.5
0
0.5
Identificación de parámetros de un filtro mediante RARMAX
k
θi(k)
0 500 1000 1500
-1.5
-1
-0.5
0
0.5
Identificación de parámetros de un filtro mediante SS
k
θi(k)
Memoria. Capítulo 2. Predicción del PGCD. 29
Fig. 9. Predicciones RARMAX y FCO
Fig. 10. Predicción FCO y salida real
Una vez comprobada la viabilidad de la identificación, pasamos a comprobar
qué mejoras se pueden dar modificando algunos de los parámetros del algoritmo.
En primer lugar, analizamos el factor de olvido. Como ya se mencionó en
2.1.4, dicho factor de olvido tiene una relación directa con la precisión en la
identificación. Como se ve en las siguientes tabla (Tabla 1) y gráficas obtenidas de
0 200 400 600 800 1000 1200 1400 1600-60
-40
-20
0
20
40
60Predicción RARMAX y FCO
k
y k
710 720 730 740 750 760 770
-40
-30
-20
-10
0
10
20
30
40
50
Predicción RARMAX y FCO
k
y k
0 200 400 600 800 1000 1200 1400 1600-60
-40
-20
0
20
40
60
80Predicción FCO y salida real
k
y k
640 650 660 670 680 690 700 710
-40
-20
0
20
40
60
Predicción FCO y salida real
k
y k
Memoria. Capítulo 2. Predicción del PGCD. 30
un ensayo para un filtro H=2
1
45.01
25.01−
−
−
−
q
q, bastante rápido para dificultar la
identificación, al aumentar el valor del factor de olvido (amplitud de la ventana
exponencial) disminuye la dispersión entorno al valor real del parámetro.
s2= ( )∑ −
N
N 1
2ˆ1θθ
l=0.97 (N=33) l=0.997 (N=333) l=0.9997 (N=3333)
s2(a1) 0.0575 0.0126 0.0078
s2(a2) 0.0249 0.0066 0.0063
s2(c1) 0.0887 0.0235 0.0194
Tabla 1. Variación del factor de olvido
500 1000 1500 2000 2500 3000 3500
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1
Parámetro a1
λ=0.97
λ=0.997
λ=0.9997
Fig. 11. Variación de la identificación con el factor de olvido
Memoria. Capítulo 2. Predicción del PGCD. 31
En la figura Fig. 11 se aprecia claramente la disminución en la dispersión que
se produce al aumentar el factor de olvido. Sin embargo, es en la siguiente figura
(Fig. 12) en la que se ve el problema y limitación de este aumento: si el valor inicial
del parámetro está lejos del real, tardará más en converger a dicho valor real.
Fig. 12 Efecto de factor de olvido elevado
La elección del factor de olvido deberá responder a un compromiso entre
dispersión y el número de muestras con peso significativo en la ventana exponencial,
cosa que a priori no podemos determinar.
En segundo lugar, analizaremos los métodos de estabilización del filtro. En la
identificación de sistemas es posible encontrar señales que no corresponden a un
modelo lineal, por lo que, al buscar unos parámetros para un modelo ARMA, podrían
obtenerse filtros inestables que intentan reproducir esa no linealidad. Incluso con
señales que sí corresponden a sistemas lineales puede darse este caso, ya que podría
tratarse de modelos cercanos a la inestabilidad para los que los parámetros calculados
(hasta converger a los valores reales) dan lugar a filtros inestables.
500 1000 1500 2000 2500 3000 3500
-0.7
-0.6
-0.5
-0.4
-0.3
-0.2
-0.1
0
0.1
0.2
Parámetro a2
Memoria. Capítulo 2. Predicción del PGCD. 32
En el apartado 2.1.4 introdujimos un paso necesario en el RPEM que
garantizase la estabilidad del filtro obtenido. También en dicho apartado se comentó
la existencia de dos métodos principales de estabilización: FSTAB (algoritmo de
proyección de raíces proporcionado por Matlab ®,[8]) y REDUC (algoritmo de
reducción de paso programado específicamente para nuestro problema de
identificación).
Nuestro método de reducción de paso consiste en la reducción del incremento
de los parámetros para que éstos no den lugar a filtros inestables. Se basa, por tanto,
en la aplicación de un factor de escalado, m (que disminuirá hasta conseguir
estabilidad), al incremento de los parámetros (Lk.ek), pero no en una variación en la
dirección de dicho incremento (Lk es un vector que puede interpretarse como la
dirección del cambio). Es decir, que al aplicarse el escalado al incremento de todos
los parámetros, sucederá que los parámetros se incrementarán de forma adecuada,
pero en menor cuantía de lo que sería deseable. Por el contrario, FSTAB lo que hace
es modificar esta dirección de cambio, ya que al proyectar las raíces dentro del
círculo unidad es posible (de hecho es lo más probable) que no modifique por igual
todos los parámetros.
A continuación mostramos la comparación de los métodos de estabilizar el
filtro calculado. En primer lugar, empleamos un filtro cuyos polos y ceros están cerca
de la inestabilidad (0.95, -0.91, 0.98). Por tanto, durante la identificación de los
parámetros, será frecuente que el filtro calculado sea inestable (directa y/o
inversamente), que es como se verá bien el efecto de FSTAB y REDUC. Es
importante destacar que ambos métodos de estabilización “deforman” el filtro
calculado realmente, por lo que no debemos esperar que se obtengan los parámetros
mencionados, sino que se obtendrán otros cuya predicción será similar a la señal real
y que convergerán a los parámetros de RARMAX, que emplea FSTAB para la
estabilidad inversa (polinomio C(q)).
Memoria. Capítulo 2. Predicción del PGCD. 33
500 1000 1500 2000-1
-0.5
0
0.5
1
1.5
Comparación a1 FSTAB-REDUC
RARMAXFSTABREDUC
Fig. 13. Comparación FSTAB y REDUC
Fig. 14. Comparación FSTAB y REDUC
En las figuras Fig. 13 y Fig. 14 se aprecia claramente la diferencia de los dos
métodos, pareciendo más adecuado el método de proyección de las raíces. Sin
embargo, alargando la simulación, se observa que llega un momento en que el
0 500 1000 1500 2000 2500-1.5
-1
-0.5
0
0.5
1Comparación a2 FSTAB-REDUC
0 500 1000 1500 2000 2500-1
-0.5
0
0.5
1Comparación c1 FSTAB-REDUC
Memoria. Capítulo 2. Predicción del PGCD. 34
método de reducción de paso se hace mejor (Fig. 15). En cualquier caso, como ya
mencionamos en otras comparativas, es posible conseguir predicciones similares con
parámetros distintos, y éste es nuestro caso.
Fig. 15. Comparación de métodos para estabilizar el filtro
Con otros filtros menos cercanos a la inestabilidad las diferencias son todavía
menores. Por tanto, como conslusión podemos decir que ninguno de los dos métodos
es claramente mejor. Además, los dos tienen problemas asociados. Mientras que el
inconveniente de FSTAB fue comentado previamente (deformación de la dirección
de cambio de los parámetros), el problema de REDUC es que tenemos que limitar el
mínimo incremento que queremos en los parámetros (el proceso de obtención de los
parámetros estables con REDUC es iterativo y, aparte de hacer muy lento el
0 2000 4000 6000 8000 10000 12000-1
-0.5
0
0.5
1
1.5
2
0 2000 4000 6000 8000 10000 12000-1.5
-1
-0.5
0
0.5
1
0 2000 4000 6000 8000 10000 12000-1
-0.5
0
0.5
1
200 400 600 800 1000 1200 1400
-1500
-1000
-500
0
500
1000
1500
2000
k
y k
Predicción con FSTAB y REDUC
Memoria. Capítulo 2. Predicción del PGCD. 35
algoritmo de identificación, podría darse el caso de que los parámetros no variasen –
a efectos prácticos- una vez finalizado el proceso de reducción de paso). En cualquier
caso, parece que la predicción con cualquiera de los dos métodos es casi idéntica, por
lo que en un principio no podemos asegurar qué método funcionará mejor.
Como tercer y último punto, símplemente apuntar unas ideas sobre los
parámetros iniciales de la identificación. El código desarrollado permite elegir entre
parámetros iniciales nulos, fijos estables y aleatorios estables. No están claras las
ventajas de unos y de otros, pero lo importante es que deben ser unos parámetros
estables. En nuestro caso, además, nos aseguramos de que el filtro inicial no tenga
polos ni ceros muy rápidos.
4.1.2 Identificación a un horizonte dado
Nuevamente, nos fijaremos en los parámetros identificados y en las
predicciones para evaluar la identificación. No obstante, en este caso es más difícil
evaluar la viabilidad de la identificación, ya que estos identificadores no obtienen los
parámetros del filtro ni dan una predicción comparable con RARMAX (que es a una
muestra). Además, hay que tener en cuenta que intervienen derivadas a un horizonte
más o menos amplio, lo que puede dar problemas de estabilidad. Por tanto, en este
apartado sólo buscaremos resultados razonables de la identificación (que no se haga
inestable, que la predicción sea razonable...) y trataremos de elegir la representación
de estado más conveniente.
En las figuras Fig. 16 y Fig. 17 encontramos la predicción y los parámetros
identificados por un identificador a 10 muestras que usa la FCC, que resultó ser la
mejor opción en estos ensayos.
Memoria. Capítulo 2. Predicción del PGCD. 36
Fig. 16. Predicción a 10 muestras con identificador FCC a 10 muestras
0 500 1000 1500 2000 2500 3000 3500 4000 4500 5000
-1
-0.5
0
0.5
Identificación de parámetros mediante FCC a 10 muestras
k
θi(k)
Fig. 17. Parámetros identificados con FCC a 10 muestras
Estas figuras sólo pretenden dar una idea de las diferencias entre la
identificación a una muestra y a un horizonte dado, pero no nos sirven a priori para
saber si será útil emplear este método en el proyecto. Eso será algo que decidiremos
estudiando las señales reales.
0 500 1000 1500 2000 2500 3000 3500 4000 4500 5000-60
-40
-20
0
20
40
60
Predicción FCC a 10 muestras
k
y k+h
2200 2220 2240 2260 2280 2300 2320 2340 2360 2380
-40
-30
-20
-10
0
10
20
30
40
50
Predicción FCC a 10 muestras
k
y k+h
Memoria. Capítulo 2. Predicción del PGCD. 37
4.2 Predicción
Para evaluar los mecanismos de predicción desarrollados en el proyecto,
ensayaremos, en primer lugar, con filtros lineales del tipo de la figura Fig. 7, y
después probaremos con señales reales. Para cuantificar la bondad de la predicción,
definiremos algunos índices comunes como el IAE (error en valor absoluto
acumulado), el ISE (errores al cuadrado acumulados) u otros.
4.2.1 Iterativa
Como se dijo en 3.2, cualquier representación de estado da las mismas
predicciones si parte de los mismos parámetros. Así pues, nos centramos en la FCC.
Tratamos de ver aquí si la predicción iterativa es viable y, sobre todo, si puede ser
mejor que la predicción trivial (3.1) para justificar el esfuerzo de cálculo.
Fig. 18. Predicción (rojo) a 10 muestras para un filtro lineal (salida real en azul)
500 1000 1500 2000 2500
-25
-20
-15
-10
-5
0
5
10
15
20
25
k
y k
Comparación de predicción y salida real
1820 1840 1860 1880 1900 1920 1940
-15
-10
-5
0
5
10
15
20
k
y k
Comparación de predicción y salida real
Memoria. Capítulo 2. Predicción del PGCD. 38
Se observa que el error que se comete es bastante grande, comparable a la
salida. Lógicamente, si disminuimos el horizonte de predicción, el error es menor,
pero sigue siendo grande (Fig. 19). Sin embargo, nos interesa la comparación con la
predicción trivial (predicción futura igual al valor actual) para ver si puede
compensar el esfuerzo de cálculo. En la figura Fig. 20 observamos que ninguna
opción es claramente mejor muestra a muestra, pero haciendo el cálculo del error
acumulado, vemos que la predicción trivial acumula bastante más error (del orden de
un 20 % más para un horizonte de 10 muestras). Además, encontramos que el error
de la predicción trivial es menor que el de la iterativa en, aproximadamente, el 45 %
de las muestras. Por eso, tanto si nos interesa acumular menos error como si lo que
queremos es aproximarnos a la realidad en más muestras, parece que la predicción
iterativa puede ser interesante.
Fig. 19. Comparación errores a distintos horizontes
200 400 600 800 1000 1200 1400 1600
5
10
15
20
k
y k
Errores de prediccion (IAE) a varios horizontes (h)
h=10h=5
1050 1100 1150 1200
0
2
4
6
8
10
12
14
16
18
k
y k
Errores de prediccion (IAE) a varios horizontes (h)
h=10h=5
Memoria. Capítulo 2. Predicción del PGCD. 39
Fig. 20. Comparación predicciones trivial e iterativa con FCC
El siguiente paso será ensayar la predicción iterativa con señales reales
(principalmente PGC y ACE3). Antes de comenzar los ensayos, conviene mencionar
lo siguiente. Estas señales reales están sometidas a las incidencias del sistema
eléctrico, por lo que pueden darse fuertes no linealidades por conexión y desconexión
de generadores, lo cual no representa realmente la dinámica del sistema, complica la
identificación y no aporta nada. Por tanto, trabajaremos con las señales filtradas
mediante un filtro no lineal proporcionado. Dicho filtro consigue una versión
incremental de la señal a la que se le quitan los picos provocados por las incidencias
mencionadas.
3 Los desarrollos y resultados para ambas señales son similares, así que nos centraremos en el PGC
500 1000 1500 2000 2500 3000 3500 4000 4500 5000
1
2
3
4
5
6
7
8
9
k
y k
Comparación errores de predicción a 10 muestras
FCCTrivial
2160 2180 2200 2220 2240 2260 2280
0
1
2
3
4
5
6
7
8
k
y k
Comparación errores de predicción a 10 muestras
FCCTrivial
Memoria. Capítulo 2. Predicción del PGCD. 40
Fig. 21. Predicción del PGC
Fig. 22. Errores de predicción (IAE)
Se sigue acumulando un error de un 20 % mayor en el caso de la predicción
trivial, pero ahora el número de muestras en que ésta es mejor que la iterativa sube
hasta, aproximadamente, el 50 %.
0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2
x 104
0
500
1000
1500
2000
2500
3000
3500
Predicción del PGC
k
PGC
IterativaRealTrivial
6400 6450 6500 6550 6600 66501580
1600
1620
1640
1660
1680
1700
1720
1740
Predicción del PGC
k
PGC
2000 4000 6000 8000 10000 12000 14000 16000 18000
0
10
20
30
40
50
60
70
80
k
IAE
Error de predicción
IterativoTrivial
1.495 1.5 1.505 1.51 1.515 1.52
x 104
0
10
20
30
40
50
60
70
80
k
IAE
Error de predicción
IterativoTrivial
Memoria. Capítulo 2. Predicción del PGCD. 41
4.2.2 Directa
Procedemos ahora de manera similar al apartado anterior. Sin embrago,
también debemos evaluar si la predicción directa puede ser mejor que la iterativa.
En primer lugar, analizamos la predicción con un filtro lineal.
Fig. 23. Predicción directa
Al igual que con la predicción iterativa, se comprueba que al disminuir el
horizonte de predicción, disminuye el error. Sin embrago, lo que nos interesa es la
comparación con el predictor trivial (en un primer paso).
Se observa en la figura Fig. 24 que la predicción directa es mejor que la
trivial en tramos de poca variación. Sin embargo, la trivial es mejor en bastantes
muestras. En conjunto, vuelve a suceder que el error acumulado por la predicción
trivial es mayor y el número de muestras en que es mejor es menor del 50 % (aunque
rondando esta cifra). Podemos decir a priori que puede interesar la predicción
directa.
500 1000 1500 2000 2500 3000 3500 4000 4500 5000
-25
-20
-15
-10
-5
0
5
10
15
20
Salidas real y predicha
k
y k
DirectaReal
4000 4050 4100 4150 4200 4250 4300
-20
-15
-10
-5
0
5
10
Salidas real y predicha
k
y k
Memoria. Capítulo 2. Predicción del PGCD. 42
1900 1920 1940 1960 1980 2000 2020 2040 2060
-20
-15
-10
-5
0
5
10
15
20
k
y k
Predicciones trivial y directa
DirectaRealTrivial
Fig. 24. Comparación de predicciones
Sin embargo, al comparar con la predicción iterativa, observamos que la
predicción directa no consigue ninguna mejora. Por tanto, prescindiremos del estudio
de la predicción directa con señales reales, ya que es de esperar que, o no haya
mejoras frente a la iterativa, o sean mínimas.
4.3 Identificación y predicción del PGCD
El PGCDk es la señal que indica la Potencia Generada bajo Control Deseada
en el instante de tiempo k4. Es decir, es la potencia que participa en la regulación
frecuencia-potencia del mercado secundario de energía eléctrica, potencia que puede
responder a los requisitos de regulación del sistema.
4 El PGCD es una señal propia de cada zona de regulación; es decir, en realidad deberíamos hablar del PGCDik como el PGCD de la zona i en la muestra k. Sin embargo, centraremos el estudio de la predicción en una zona de regulación, por lo que prescindiremos del subíndice i.
Memoria. Capítulo 2. Predicción del PGCD. 43
A pesar de que esta señal es filtrada en el algoritmo de la RCP mediante
filtros no lineales para evitar esfuerzos de regulación innecesarios (es decir, para
evitar aumentar la generación en el periodo k cuando la tendencia en el entorno de
ese periodo indica una disminución necesaria) y para evitar los picos producidos por
incidencias, sigue presentando oscilaciones que pueden oponerse en ocasiones al
requerimiento real de regulación a medio y largo plazo. Por tanto, parece que, en
caso de conocerse la tendencia futura del PGCD (o del ACE, señal íntimamente
relacionada con la anterior), podrían optimizarse las consignas de regulación, lo que
supone la motivación fundamental de este proyecto. No obstante, este control
predictivo no depende totalmente de que la predicción sea óptima, razón por la que,
como se verá al concluir este capítulo, podría darse el caso de que no fuese
interesante emplear las técnicas de identificación y predicción vistas hasta el
momento y fuese más conveniente recurrir a una predicción más simple (como por
ejemplo la trivial o la media).
A partir de las propias definiciones del PGCD, encontramos que esta señal es
igual a la potencia generada bajo control más el error de control de área o ACE (la
cantidad de potencia que es necesario aumentar o disminuir la generación para
cumplir los requisitos del Operador del Sistema), ambos en el periodo anterior. A su
vez, el ACE proviene de un cálculo a partir de otras señales de diversa naturaleza que
podrían requerir distintos modelos para una correcta predicción. Así pues, y
limitando un poco las opciones, en teoría se deberían ensayar las siguientes
combinaciones para predecir el PGCD:
- Predicción de ACE + PGC.
- Predicción de ACE + predicción de PGC.
- Predicción de PGC + suma de predicciones individuales de las señales que
componen el ACE.
Sin embargo, como se pudo comprobar experimentalmente, la predicción del
ACE es bastante poco satisfactoria, por lo que no merecerá la pena predecir cada una
de las componentes del ACE por separado, ya que de esta forma tendríamos un error
Memoria. Capítulo 2. Predicción del PGCD. 44
de predicción mayor (cada predicción aporta un error de predicción adicional). Es
decir, que nos interesará hacer el menor número de predicciones posible, por lo que
optamos por predecir directamente el PGCD como serie temporal única (Fig. 25). La
predicción a 15 muestras no mejora espectacularmente la predicción trivial, por lo
que no podemos garantizar que vaya a mejorar el control predictivo.
Por último, se comprobó si el filtrado lineal de los datos (técnica común en
identificación) puede mejorar la predicción. Como se esbozó en el apartado 3.4, es
posible dicha mejora prescindiendo de la información de alta frecuencia de la señal.
Basándonos en la información del espectro de las señales (Fig. 4 y Fig. 5),
aplicaremos filtros de frecuencias de corte 0.03 Hz y 0.01 Hz al PGC. Sin embargo,
se pudo comprobar en los ensayos que el filtrado no mejora prácticamente, así que
descartamos esta opción.
Fig. 25. Predicción del PGCD
0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2
x 104
0
500
1000
1500
2000
2500
3000
3500
k
MW
PGCD
IterativaRealTrivial
7650 7700 7750 7800 7850 7900 7950 8000 8050 8100
1800
1850
1900
1950
2000
2050
2100
2150
2200
k
MW
PGCD
Memoria. Capítulo 2. Predicción del PGCD. 45
5 Conclusiones
Como conclusión a esta parte del proyecto cabe mencionar lo siguiente:
- Las representaciones de estado son muy útiles para la identificación y
predicción de procesos estocásticos, presentando el inconveniente de la falta
de flexibilidad de otras formas de los modelos ARMA para manejar por
separado errores de predicción y entradas anteriores (con representaciones de
estado “mínimas”5 es imposible emular el comportamiento de otras
soluciones6).
- La identificación y predicción recursivas suponen un método muy adecuado
de conseguir adaptabilidad en los filtros que modelan señales con un cierto
nivel de aleatoriedad o incertidumbre. De nuevo, las representaciones de
estado suponen una cierta simplificación por su facilidad de extrapolar las
predicciones sin más que aumentar la potencia de la matriz A del sistema
(responsable de la dinámica del mismo).
- Durante la identificación y predicción aparecerán problemas que obligarán a
introducir modificaciones en los algoritmos recursivos para evitar
inestabilidades, para recuperar estados estables anteriores, parámetros
válidos...
- Es frecuente que un problema de identificación requiera un tratamiento
previo de la señal (especialmente si ésta no proviene de un experimento
diseñado a tal efecto) que anule el valor medio, que elimine las dinámicas que
interesen menos (como el ruido de alta frecuencia), etc.
5 Las representaciones de orden mínimo son aquéllas que tienen tantos estados como parámetros tiene el polinomio A(q) del modelo ARMAX correspondiente. 6 Las otras soluciones y formas de los modelos ARMAX se refieren al tratamiento con vector de regresores, de predictores y de parámetros de forma independiente y no combinados linealmente para dar estados de un espacio de estado.
Memoria. Capítulo 2. Predicción del PGCD. 46
- La predicción de las señales “eléctricas” con las que se trabaja en este
proyecto no es totalmente satisfactoria ya que éstas tienen numerosas no
linealidades debido a que dependen no sólo del comportamiento de una zona
de regulación sino de varias zonas y del operador del sistema, debido a que
estas señales pasan por filtros no lineales (los cuales desconocemos), que
responden a múltiples criterios de control (económicos, técnicos...), etc.
- Teniendo predicciones poco satisfactorias, no merece la pena predecir por
separado las señales que componen el PGCD para luego sumar dichas
predicciones, así que se optará por predecir directamente el PGCD.
No podemos decir a priori si merecerá la pena implantar los predictores
iterativo o directo en el control predictivo-adaptativo, ya que los resultados de este
capítulo no son concluyentes.
Memoria. Capítulo 3. Control predictivo-adaptativo. 47
CAPÍTULO 3. CONTROL PREDICTIVO-ADAPTATIVO
1 Introducción
Desde sus comienzos hasta hace relativamente poco tiempo, las técnicas de
control se limitaban a conseguir unos objetivos de rapidez, precisión,
amortiguamiento y estabilidad que determinaban el diseño y la teoría de reguladores.
A medida que las tecnologías evolucionaban y la capacidad de cálculo de dichos
reguladores aumentaba, se han ido planteando otros objetivos y se han desarrollado
nuevas técnicas de control. Así, por ejemplo, cabe destacar la aparición del control
óptimo como concepto general (que se plasma en distintos métodos concretos)
destinado a conseguir algunas metas que se persiguen actualmente:
- eficiencia
- ahorro energético
- calidad
- seguridad
- etc.
El control predictivo es un caso particular del control óptimo, ya que se basa
en la minimización de una función objetivo de tal forma que se determina una serie
de valores de las variables que intervienen en el proceso para cumplir ciertos
criterios. La elección de la función objetivo es un tema complejo que debería ser
estudiado en cada caso, pero, generalmente, se suele minimizar el cuadrado del error
de seguimiento de la trayectoria de la variable de proceso (salida) respecto de la
salida deseada. En este caso, las variables a determinar son los valores futuros del
mando en cada instante de tiempo (dentro de un horizonte de control). Además, suele
ser frecuente, por razones comentadas como el ahorro energético, que se trate de
Memoria. Capítulo 3. Control predictivo-adaptativo. 48
minimizar también el mando aplicado al sistema (o sus incrementos), con lo que
ambos criterios deben aparecer en la función objetivo.
El esquema general de un control predictivo-adaptativo se muestra en la
figura Fig. 26.
Fig. 26. Esquema de control predictivo-adaptativo
En cuanto a las capacidades adaptativas, como ya se ha mencionado en otras
partes del proyecto, suele ser frecuente enfrentarse a sistemas no lineales y
cambiantes en el tiempo, lo que dificulta el modelado. Dicho modelado es importante
para el correcto funcionamiento del control predictivo, ya que influye directamente
(mediante la predicción de la salida) en la función objetivo cuya minimización nos
dará el mando que se debe aplicar. Por tanto, la adaptación es fundamental en la
mayor parte de los casos reales, pues con un modelo y predicciones erróneos
funcionará peor el control. Sin embargo, dicha adaptación es relativamente
independiente del control. Es decir, el control predictivo existe como tal
independientemente de si hay adaptación o no (si conocemos la dinámica del sistema
y ésta no cambia, no hace falta adaptación) o de qué algoritmo se emplee.
Predicción Modelo predictivo
Proceso real
Señal de
control
Mecanismo adaptación
Referencia
salida
Memoria. Capítulo 3. Control predictivo-adaptativo. 49
Por otro lado, como ocurre en otras ocasiones, es posible modelar la realidad
física de distintas maneras, lo que obliga a usar distintas técnicas de control (todas
con la misma idea de optimalidad):
- Model Algorithmic Control (MAC): el modelo se obtiene por convolución
(respuesta al pulso).
- Dynamic Matrix Control (DMC) y sus variantes: emplean modelos de
respuesta a escalón.
- GPC y UPC (Generalized y Unified Predictive Control): emplean modelos de
función de transferencia (modelos ARMAX, ARIMA, ARX...).
- PFC (Predictive Functional Control): emplea representaciones de estado para
modelar la realidad. Será el que utilicemos en este proyecto, por las ventajas
comentadas a lo largo del mismo.
2 Modelos incrementales respecto a la trayectoria
Con modelos linealizados, no invariantes en el tiempo, suele emplearse un
tratamiento incremental respecto al valor anterior (modelo incremental sobre la
trayectoria). Esto permite prescindir del punto de trabajo. Así pues, pasamos de un
modelo incremental respecto del punto de trabajo (Ec. 7) a un modelo incremental
sobre la trayectoria, dado por Ec. 8. Debe destacarse el hecho de que las matrices de
estado son las mismas para ambos casos.
Memoria. Capítulo 3. Control predictivo-adaptativo. 50
Ec. 7. Modelo incremental respecto del punto de trabajo
kkkkk
kkkkk
uDXCyyy
uBXAXXX
∆+∆=−=∆
∆+∆=−=∆ +++
..
..0
0111
Siendo:
:k
X 01+ vector de estado del punto de trabajo en la muestra k.
:ky0 salida en el punto de trabajo en la muestra k.
:k
∆X vector de estado del modelo incremental sobre el punto de trabajo.
:k
∆y salida del modelo incremental sobre el punto de trabajo.
:A, B, C, D matrices de la representación de estado del modelo.
:k
∆u mando del modelo incremental sobre el punto de trabajo.
Ec. 8. Modelo incremental sobre la trayectoria
kkkkkkkkkkk
kkkkkkkkkkk
uDXCyyyyyyyyy
uBXAXXXXXXXXX
∆+∆=−−−=∆−∆=−=∆
∆+∆=−−−=∆−∆=−=∆
−−−−
+++++
..)(
..)(011
011
0011111
Siendo:
:k
X∆ vector de estado del modelo incremental sobre la trayectoria.
:ky∆ salida del modelo incremental sobre la trayectoria.
:A, B, C, D matrices de la representación de estado del modelo.
:ku∆ mando del modelo incremental sobre la trayectoria.
Memoria. Capítulo 3. Control predictivo-adaptativo. 51
En este proyecto se empleará este modelo incremental sobre la trayectoria,
puesto que, como ya se ha expuesto a lo largo del mismo, se trabajará con sistemas
no lineales.
3 Formulación del control predictivo
Presentamos a continuación los elementos fundamentales que componen el
control predictivo (sin tener en cuenta la adaptación, de momento).
3.1 Modelo de predicción
Como se vio en la introducción a este capítulo (1), existen diversas formas de
expresar matemáticamente la realidad que se quiere controlar, dando lugar a distintas
técnicas de control predictivo. En nuestro caso, optamos por la representación de
estado, eso sí, partiendo del siguiente modelo:
Ec. 9. Modelo de predicción (ARX)7
km
m
m
nkk u
qaqa
qbqbu
qA
qBy ∆
++
+=∆=∆
−−
−−
....1
....
)(
)(1
1
11
Un detalle común a todas estas técnicas es que suelen dividir la secuencia de
mandos futura en dos partes: una secuencia libre, uf, (la que se obtiene si el mando se
mantiene constante en su valor en k-1 durante todo el horizonte de control) y una
secuencia forzada, uc (provocada por las variaciones futuras del mando), como se ve
7 Suponemos que existirá, al menos, un retardo natural de una muestra asociado al muestreo
Memoria. Capítulo 3. Control predictivo-adaptativo. 52
en Fig. 27. Esto provocaría en el sistema dos respuestas: la respuesta libre (al aplicar
la secuencia libre del mando, respuesta a un escalón), yf, y la respuesta forzada, yc
(Fig. 28).
Fig. 27. Mandos forzado y libre
Fig. 28. Separación de salida en forzada y libre
0 2 4 6 8 10 120
0.5
1
1.5
2
2.5y
0 2 4 6 8 10 12-1
-0.5
0
0.5
1
1.5
2
2.5
yfyc
k-1 k k+1 k+2 ....... k+h
Memoria. Capítulo 3. Control predictivo-adaptativo. 53
Así pues, para el cálculo de la variable de mando, dividiremos la salida
predicha en dos partes (ŷi = yfi + yci).
Por un lado, la secuencia de salidas forzada, yci, se produce como respuesta a
la secuencia de mando forzada, uci. Suele ser frecuente emplear una combinación
lineal de funciones polinómicas (funciones base) para calcular la secuencia forzada
incremental del mando respecto del punto de trabajo (Ec. 10). Esto permite una
evolución suave del mando.
Ec. 10. Secuencia de mando (incrementos sobre punto de trabajo)
( ) N
n
nU
nnnuuu
nb
nbk
nb
nbknknk
.
...10
............
...10
1...11
....
,.......
10
22101
µµµµ
µµµµ
=
=∆
++++=−=∆ −++
Siendo:
Duk+n: incremento del mando en la muestra k+n respecto de uk-1.
uk+n: mando absoluto en k+n.
m0,m1...mnb: coeficientes de los incrementos de mando para cada función base.
nb: número de funciones base.
DUk: secuencia de incrementos de mando desde k hasta k+n calculados en k.
Sin embargo, en este proyecto se trabaja con modelos incrementales sobre la
trayectoria, por lo que la Ec. 10 se transforma en la expresión Ec. 11.
Memoria. Capítulo 3. Control predictivo-adaptativo. 54
Ec. 11. Secuencia de mando (incrementos sobre trayectoria)
( ) Nn
U
uuuuu
nnuuuuu
nbk
kkkkk
nknknknknk
.
............
1.2...30
1...10
0...01
....
0....,)12.(
10
011
2111
µµµµ
µ
µµ
=
+=∆
=−=∆−∆=∆
>∀+++=−=∆−∆=∆
−−
−++−+++
Donde:
nku +∆ : incremento del mando en la muestra k+n respecto del incremento anterior.
m0,m1...mnb: coeficientes de los incrementos de mando para cada función base.
kU∆ : secuencia de incrementos de mando desde k hasta k+n calculados en k.
El vector m es la variable cuyo valor debemos determinar para minimizar la
función de coste, J.
Fig. 29. Funciones base para el mando
t k k+1 k+2
m0
m1 m2
Memoria. Capítulo 3. Control predictivo-adaptativo. 55
Por tanto, la salida forzada se obtendría, una vez conocido el vector m, por
simulación del modelo del sistema ante la secuencia de entrada forzada. En caso de
un modelo en espacio de estado incremental respecto de la trayectoria, dicha
simulación sería:
Ec. 12. Simulación de respuesta forzada
Así, obtenemos los incrementos de las salidas forzadas desde el principio
( kyc∆ ), hasta el final del horizonte de predicción ( hpkyc +∆ ). No obstante, lo que nos
interesa es la respuesta forzada absoluta, para lo cual debemos acumular los
incrementos antes calculados (Ec. 13). Una vez hallada la respuesta forzada absoluta
en función de m, y en virtud de lo comentado en 3.3, se selecciona la respuesta en
determinados puntos de coincidencia y se construye la matriz YB (Ec. 14), que luego
emplearemos.
Ec. 13. Cálculo de la respuesta forzada absoluta ∑=
+−+ ∆+=n
i
ikknk ycyyc0
1
Ec. 14. Salida forzada del sistema
( )
==
nnbnbnb
n
n
nbBk
yyy
yyy
yyy
YYc
,1,0,
,11,10,1
,01,00,0
10
...
............
...
...
..... µµµµ
⇒111
112
..
..
+++
+++
∆+∆=∆
∆+∆=∆
kkk
kkk
ucDXCyc
ucBXAX
kkk
kkk
ucDXCyc
ucBXAX
∆+∆=∆
∆+∆=∆ +
..
..1
Memoria. Capítulo 3. Control predictivo-adaptativo. 56
Siendo:
kYc : secuencia de salidas forzadas durante el horizonte de predicción, calculada en k.
nby , : salida forzada por la función base b en la muestra n dividida por el coeficiente mb.
Por otro lado, la respuesta libre, yfi, se debe a la secuencia libre del mando
(constante e igual al último mando aplicado). Por tanto, en esta señal no interviene el
vector incógnita del problema de optimización (m), ya que para calcularla basta con
calcular la respuesta a un escalón del modelo del sistema. Para ello, debemos estimar
las condiciones iniciales, lo que en espacio de estado supone estimar el estado
mediante un observador (recordando que estamos trabajando con modelos
incrementales sobre la trayectoria):
Ec. 15. Observador para estimar el estado inicial
posterioriapredichalincrementasalidaUcDXCy
siguienteestadodellincrementapredicciónUcBXAX
observadormedianteestimadoestadoyyGXX
prioriapredichalincrementasalidaUcDXCy
kkk
kkk
kkkk
kkk
,..ˆ
,.~
.
),ˆ.(~
,..ˆ
*
1
∆+∆=∆
∆+∆=∆
∆−∆+∆=∆
∆+∆=∆
+
En teoría de control moderno se estudia a fondo la colocación de los polos del
observador (que influyen en la matriz de ganancias G) para que la dinámica del error
de observación sea estable y tienda a anularlo (ver [5] para ampliar). Suele ser
frecuente que los polos del observador sean más rápidos que los del control, lo que
en nuestro caso es complicado de determinar (no es evidente el concepto de polos en
control predictivo como podría serlo en control clásico). Sin embrago, el control
debe ser más rápido que el sistema a controlar, por lo que en nuestro caso,
Memoria. Capítulo 3. Control predictivo-adaptativo. 57
tomaremos como referencia los polos del sistema identificado para obtener los del
observador, haciendo que éstos sean más rápidos.
Una vez obtenidas las condiciones iniciales para la respuesta libre ( 1+∆ kX ,
estado incremental sobre trayectoria), simulamos hacia adelante el modelo de
predicción para obtener la respuesta libre.
Ec. 16. Simulación de respuesta libre 11
12
.
.
++
++
∆=∆
∆=∆
kk
kk
XCyf
XAX
Como en el caso de la respuesta forzada, debemos acumular los incrementos
para obtener la respuesta libre absoluta (para poder compararla con la trayectoria
deseada):
Ec. 17. Respuesta libre absoluta nk
n
i
knk yfyyf +=
−+ ∑ ∆+=0
1
Otro aspecto del modelo de predicción es la estimación de la perturbación.
Dicha perturbación se obtiene filtrando un ruido blanco, ek (Ec. 18), que estimaremos
a partir de la salida real y de la predicción con el modelo de predicción en la muestra
actual. A dicho error se le aplica una integración, Ec. 19 (o una doble integración,
Ec. 20) para simular las perturbaciones en el horizonte de predicción dado.
Ec. 18. Modelo general de perturbación kk eqD
qCn ⋅=
)(
)(
Ec. 19. Perturbación con integración 11 −−
=q
en kk � kkkt nn =+ )|(ˆ .
Memoria. Capítulo 3. Control predictivo-adaptativo. 58
Ec. 20. Perturbación con doble integración
( )211 −−=
q
en kk � ( )knnnn kkkkkt 1)|(ˆ −+ −+=
En la siguiente figura (Fig. 30), se observan las diferencias entre los dos
métodos (en este proyecto optaremos por una sola integración).
210 215 220 225 230 235 240 245 250 255
-1.5
-1
-0.5
0
0.5
1
1.5
Diferentes modelos de perturbación
Integración(1)
Integración(2)
Doble integración(3)
Doble integración
(1) Para un mismo modelo, hay dos
series (una para cada punto de
coincidencia).
(2) Para integración simple, coinciden
en los dos puntos.
(3) véase 1
Fig. 30. Modelos de perturbación
3.2 Trayectoria deseada
Una de las partes importantes del control predictivo es la elección de la
trayectoria de referencia. Dicha trayectoria es la que se querría conseguir para llegar,
Memoria. Capítulo 3. Control predictivo-adaptativo. 59
en un horizonte de tiempo dado, a la referencia futura. Es decir, en el instante de
tiempo k tenemos una predicción de la referencia futura, ypredk+h, a la cual queremos
aproximarnos de una manera más o menos suave (Fig. 31). A partir de esta
predicción filtrada, obtenemos la secuencia de referencias desde k hasta k+h. Esta es
una de las ventajas del control predictivo sobre, por ejemplo, los controles PID
clásicos. En estos últimos, la referencia se conoce en el mismo instante en que se
necesita, por lo que el esfuerzo de regulación es más brusco (por ejemplo, un escalón
en la referencia provoca que el mando sea tal que se intente alcanzar esa referencia
de forma inmediata). Sin embargo, al añadir capacidades predictivas, el regulador
tiene un tiempo para alcanzar la referencia, permitiendo una respuesta más suave. Es,
conceptualmente, parecido a lo que se obtendría con un prefiltro antes del lazo de
control en el caso de un PID.
Por tanto, es fácil entender que la velocidad de la trayectoria deseada fije, en
cierto sentido, la velocidad del control predictivo (Fig. 32 y Fig. 33).
Normalmente, suelen emplearse filtros no muy complicados, ya que la única
finalidad de filtrar la referencia es suavizarla. Así, es común encontrarse8:
- Filtros de primer orden. Son los más sencillos de todos. Siendo rk la
secuencia de referencias futuras, tenemos
Ec. 21 kkk rww ).1(. 1 αα −+= −
- Filtros de segundo orden. Estos filtros permiten que la respuesta inicial tenga
una derivada nula y, por tanto, que no haya discontinuidades en el origen de
la trayectoria deseada. Suelen emplearse dos polos iguales y amortiguamiento
crítico (implica que el filtro será lo más rápido posible sin oscilaciones),
como se nos dice en [4].
8 wk es un vector de valores. En cada instante k, se calculan los h+1 valores correspondientes a las referencias dentro del horizonte de predicción.
Memoria. Capítulo 3. Control predictivo-adaptativo. 60
Ec. 22 22
12 ....2. −− −−= knknknk wwrw ωωξω
- Otro tipo de filtros, que llamaremos complejos en el proyecto.
Ec. 23 ).( kk
k
kk yrrw −−= α
Fig. 31. Trayectorias de referencia
En las siguientes figuras (Fig. 32 y Fig. 33), se muestra el efecto de aumentar
la velocidad de la referencia, provocando algunos efectos similares a los que se
producen en control clásico al diseñar los controles más rápidos (más mando, más
sobrepaso...). La elección del valor adecuado se hará cuando se pruebe el control
predictivo-adaptativo sobre el esquema final de simulación (Fig. 35).
ŷk
w2k w1k
k+h yk
Memoria. Capítulo 3. Control predictivo-adaptativo. 61
Fig. 32. Control con filtro de primer orden y distintas velocidades de trayectoria
deseada
Fig. 33. Control con filtro complejo y distintas velocidades de trayectoria deseada
20 40 60 80 100 120 140 160
0
1
2
3
4
5
Comparación velocidades de trayectoria deseada
α = 0.96
α = 0.9Referencia
α = 0.5
14 16 18 20 22 24
-0.5
-0.4
-0.3
-0.2
-0.1
0
0.1
0.2
Comparación velocidades de trayectoria deseada
α = 0.96
α = 0.9Referencia
α = 0.5
20 40 60 80 100 120
-1
0
1
2
3
4
5
Comparacion velocidades de trayectoria deseada
Referencia
α = 0.5
α = 0.9
α = 0.96
14 16 18 20 22 24
-1
-0.5
0
0.5
Comparacion velocidades de trayectoria deseada
Referencia
α = 0.5
α = 0.9
α = 0.96
Memoria. Capítulo 3. Control predictivo-adaptativo. 62
3.3 Función objetivo a minimizar
Como ya se comentó, uno de los objetivos principales del control predictivo
es minimizar el error de seguimiento de la salida y el coste asociado al mando.
Aunque este coste puede ser de naturaleza diversa, se suelen intentar minimizar los
esfuerzos de regulación, penalizando las variaciones del mando. En nuestro caso,
dichas variaciones de mando implican transitorios en las turbinas generadoras de
potencia, provocando mayores consumos, mayor desgaste de elementos...
Ec. 24. Función objetivo
∆+= ∑∑
+
+
+
+
22 ..2
1i
nk
nk
ii
nk
nk
ik uqrJu
i
h
i
ε
Jk: función objetivo a minimizar en el instante k,
ri: ventana de pesos del error de seguimiento,
qi: ventana de pesos de los incrementos de mando,
Dui: secuencia de incrementos de mando,
ei: secuencia de errores de seguimiento,
ni: momento inicial para la minimización (generalmente ni=1),
nh: horizonte de minimización,
nu: horizonte de control.
Nota: para evitar las compensaciones del error de seguimiento (también del
incremento de mando) como consecuencia de signos opuestos en distintos instantes
de tiempo, se elevan al cuadrado.
El valor de esta función objetivo (Ec. 24) depende de las salidas predichas y
mandos futuros (ek = y*k – ŷk, siendo y
*k la salida deseada). Por tanto, el problema de
minimización debe determinar la secuencia de mandos (entre k y k+nh) que hace que
Jk tenga su valor mínimo, teniendo en cuenta una serie de restricciones (limitación de
Memoria. Capítulo 3. Control predictivo-adaptativo. 63
velocidad del incremento de mando, saturación del actuador y otras limitaciones
técnicas). En nuestro caso no tendremos en cuenta estas restricciones.
Normalmente, por simplicidad en el cálculo, no se plantea la función objetivo
más que en unos puntos determinados, llamados puntos de coincidencia, lo cual
permite reducir el orden del sistema de ecuaciones que es preciso resolver para
encontrar la secuencia del mando deseada.
Por otro lado, como observamos en la ecuación Ec. 24, las secuencias de
mandos y errores de seguimiento suelen ponderarse mediante ventanas cuyo cálculo
no aporta grandes ventajas al control y tiene una gran componente de prueba y error
(ver 9.5.1 en [5]). Por tanto, en este proyecto pesaremos por igual todas las muestras
(es como no aplicar ninguna ventana), salvo que se dejará abierta la posibilidad de
dar más importancia a la minimización del mando que a la del error de seguimiento
(lo cual, como se demuestra en 6.2, da buenos resultados).
Finalmente, mostramos la minimización de la función objetivo. Teniendo en
cuenta las expresiones de las ecuaciones Ec. 11 a Ec. 23, la función objetivo queda:
Ec. 25. Desarrollo de la función objetivo9
( )
∆+−−−= ∑∑
+
+=
+
+=
nppk
pki
nppk
pkiiiiiik uycnyfwJ
11
22 .2
1γ , lo que organizado con
vectores queda:
( )( ) ( )( )[ ]TT
BB NNYnyfwYnyfwJ .......2
1µµγµµ +−−−−−−=
9 El factor ½ no es realmente necesario, pero simplifica las cuentas.
Memoria. Capítulo 3. Control predictivo-adaptativo. 64
Donde:
p1: primer punto de coincidencia,
pnp: último punto de coincidencia (np es el número de puntos de coincidencia),
w [1 x np]: trayectoria de referencia,
yf [1 x np]: respuesta libre del sistema,
n [1 x np]: perturbación estimada,
m [1 x nfb]: vector de constantes de mando,
YB [nfb x np]: matriz de respuestas forzadas escaladas por m,
g: ponderación de la minimización del mando,
N [nfb x np]: matriz de mandos escalados por m.
Hay que destacar que los incrementos de mando en los puntos de
coincidencia serán distintos de cero si dichos puntos están dentro del horizonte de
control, que deberá ser menor o igual que el de optimización, y serán nulos en caso
contrario (fuera del horizonte de control sólo actúa la respuesta libre).
Siguiendo el desarrollo del Apéndice C. Minimización de función objetivo en
CPA, llegamos a obtener el mando que minimiza J:
Ec. 26. Minimización de la función objetivo
( ) ( ) ( )KnyfwNNYYYnyfwd
dJ T
B
T
B
T
B ...01
−−=+−−=⇒=−
µµ
, donde K
es una matriz [np x nfb].
Sin embargo, sólo vamos a aplicar el primer mando, ya que esto se recalcula
en cada muestra. Por tanto, nos interesa la primera columna de la matriz K, que
Memoria. Capítulo 3. Control predictivo-adaptativo. 65
multiplicada por el error de seguimiento de la respuesta libre más la perturbación,
nos da el mando que es necesario aplicar (en la ecuación Ec. 11 se ve que sólo afecta
m0 al primer mando, como también muestra la Ec. 27). En realidad se trata de un
control proporcional adaptativo que da un mando proporcionado al error que se
cometería sólo con la respuesta libre. Esta estrategia de recalcular el mando en cada
muestra en vez de aplicar los mandos obtenidos por optimización (estrategia
deslizante) supone una realimentación negativa, ya que en cada muestra se tiene en
cuenta (de una forma poco intuitiva) el error cometido por el mando aplicado en la
muestra anterior.
Ec. 27. Incremento de mando calculado
[ ] 01
1,1,11 .. µµµ ===∆ ∑=
+
nfb
i
iik NNu
4 Control Predictivo-Adaptativo
4.1 Introducción
De forma análoga a la primera parte del proyecto, estamos trabajando con
sistemas que no son lineales ni invariantes en el tiempo. Por tanto, surge la necesidad
de dotar al control de ciertas capacidades adaptativas que modifiquen el modelo de
predicción (3.1) del control. Existe una gran variedad de técnicas adaptativas, desde
las más simples como el ajuste de ganancia hasta las más complejas técnicas de
identificación. En este proyecto, no tiene sentido emplear soluciones “sencillas”
como la programación de ganancias, ya que no podemos conocer cómo serán los
cambios en la dinámica del sistema. Así pues, emplearemos control adaptativo,
basado en identificar el modelo de la ecuación Ec. 9.
Memoria. Capítulo 3. Control predictivo-adaptativo. 66
En los algoritmos de adaptación encontramos una serie de ideas comunes que
conviene mencionar. En primer lugar, es necesario que el lazo de adaptación sea
mucho más lento que el de control, para evitar inestabilidades. Esto no supone un
problema realmente, ya que bastará con trabajar con distintos tiempos de muestreo en
cada lazo.
Por otro lado, un concepto importante en la identificación de sistemas es el de
riqueza de la señal. Si pretendemos encontrar un modelo del sistema (es lo que busca
la adaptación) válido para un rango de frecuencias de interés, es necesario que la
señal que excita al sistema durante la adaptación contenga dichas frecuencias. En
algunas técnicas se añade riqueza a la señal de control. Sin embargo, en nuestro
proyecto no tendremos esto en cuenta.
Por último, los métodos de adaptación suelen tener dos elementos
fundamentales: la búsqueda de la dirección de cambio (mediante sensibilidades) y la
medida de la confianza en los parámetros (matriz de covarianzas, por ejemplo).
4.2 Algoritmo de adaptación
Aunque, como ya comentamos, el mecanismo de adaptación es una cosa
independiente del control predictivo (son dos cosas distintas, aunque
complementarias) y podríamos emplear cualquier método de adaptación, se usará en
este proyecto el enfoque que se propone en [4] y que garantiza (en un principio), la
estabilidad del sistema completo (el algoritmo es fruto de un amplio estudio de las
condiciones de estabilidad del control predictivo-adaptativo, por lo que en cierto
sentido es un enfoque integrado de adaptación y control). La idea general de este
Memoria. Capítulo 3. Control predictivo-adaptativo. 67
algoritmo es que la adaptación no se produce en cada muestra sino sólo cuando el
error de adaptación supera una cierta cota, y los pasos del mismo son10:
1) Actualización del vector de regresores11 a partir de las entradas y salidas
pasadas: [ ]1111)( ...,,,...,, +−−−−−+−−−−−− = ndkdkdkmdkdkdk
t
dkr uuuyyyφ , siendo m
el número de parámetros del polinomio A y n el de B (Ec. 9).
2) Normalización del vector de regresores: k
dkr
dkrn
)()(
−
− =φ
χ , siendo el factor
de normalización Cn dkrk ,max )( −= φ , es decir, el máximo de entre los
valores absolutos de los regresores y una constante C que se deberá fijar
empíricamente. Experimentalmente se comprueba que cuanto mayor sea
esta constante, menos variable será la adaptación (menor variación de los
parámetros de un instante a otro, como se ve en 6.3.1).
3) Normalización de la salida real del sistema: k
kn
kn
yy = .
4) Cálculo del error a priori normalizado: )()1( . dkr
t
kr
n
k
n
k ye −−−= χθ)
, siendo
[ ])1()1(2)1(1)1()1(2)1(1)1( ...,,,...,,−−−−−−− =knkkkmkk
t
kr bbbaaa)))))))
θ el vector de
parámetros estimados en la muestra k-1.
5) Estimación de la cota superior del error de adaptación: este error de
adaptación (que se calculó en el paso anterior) proviene tanto de las
diferencias entre el modelo y la realidad como de las perturbaciones y el
ruido de medida. Si el sistema real viene dado por n
kdkr
t
kr
n
ky ∆+= −− )()1( .χθ ,
10 Se muestra el algoritmo general, pero en este proyecto se aplicará con modelos incrementales 11 Realmente, como se puede ver en [4], la formulación de regresores y parámetros es más general para tener en cuenta la parte estocástica del modelo (perturbaciones medibles).
Memoria. Capítulo 3. Control predictivo-adaptativo. 68
donde k
kdku
t
ku
n
kn
∆+=∆ −− )()1( .χθ , siendo =−− )()1( . dku
t
ku χθ dinámica no
modelada y =∆
k
k
nperturbación y ruido de medida normalizados, tenemos
que una cota para el máximo del error será δ+∆≥∆∞<<
n
kk
n
b0max , siendo d una
constante positiva que se determinará empíricamente. Cuanto mayor sea
esta constante, mayor será la cota de error permitida y menos
actualizaciones de parámetros se harán (6.3.1).
6) Determinación de la necesidad de actualizar los parámetros. Como
sabemos, la actualización sólo se producirá si el error de adaptación supera
una cota. Así pues, encontramos dos casos:
a. Los parámetros anteriores siguen siendo válidos:
[ ]
n
b
n
b
dkr
t
dkr
dkr
t
dkrn
kk esi ∆<∆+
+<=
−−
−− .2.2
.1.20
)()(
)()(
χχ
χχψ
b. Es necesario actualizar los parámetros:
[ ]
n
b
n
b
dkr
t
dkr
dkr
t
dkrn
kk esi ∆≥∆+
+≥=
−−
−− .2.2
.1.21
)()(
)()(
χχ
χχψ
7) Actualización de los parámetros si es necesario:
)1(
)()(
)()(
ˆ..1
..ˆ−
−−
−+
+= kr
dkr
t
dkrk
dkr
n
kk
kr
eθ
χχψ
χψθ
Memoria. Capítulo 3. Control predictivo-adaptativo. 69
Como se observa, existen diversos parámetros que será necesario ajustar
empíricamente para minimizar la cota superior del error de adaptación, aunque es
previsible que no algunos no tengan demasiada influencia, por lo que su estudio en
detalle no será objetivo de este proyecto.
5 Control Predictivo-Adaptativo en AGC
Nos centramos ahora en el caso concreto que nos ocupa en este proyecto: el
control predictivo-adaptativo (CPA en adelante) integrado en sistemas eléctricos.
5.1 Esquema de control
Teniendo en cuenta las definiciones vistas en el CAPÍTULO 2.
PREDICCIÓN DEL PGCD, podemos concretar un poco más el esquema de la figura
Fig. 26.
Fig. 34. Esquema básico de CPA de AGCs
Planificador trayectoria
SUM1 Modelo
predictivo AGC
DPGCD PGC
Mecanismo Adaptación
PGCD
Memoria. Capítulo 3. Control predictivo-adaptativo. 70
De este esquema conviene hacer los siguientes comentarios:
- La entrada al control será la predicción del PGCD. Dicha predicción la
haremos con las técnicas desarrolladas en el proyecto a partir de la serie
temporal formada por señales como el ACE, el CRR, el NID... de las cuales
el CRR y el desvío en frecuencia (BIAS) son las consignas externas (el resto
son cálculos internos).
- La salida del sistema será la potencia generada bajo control y vendrá
proporcionada por los bloques desarrollados por D. Ignacio Egido ([9]).
- La salida del control será el incremento de potencia que debe ejecutar el
AGC.
- La referencia a seguir será la variable SUM1, que es el PGCD filtrado con
una constante de tiempo de 100 s, y que es el máximo permitido por ley.
Para concretar un poco más el esquema de control, mostramos la figura Fig.
35, al final de este apartado.
5.2 Especificaciones de control
Como pasa siempre en control, es necesario saber qué especificaciones, qué
prestaciones se le piden al control, con el fin de fijar los parámetros del mismo y
evaluar su respuesta. Las especificaciones típicas en control clásico son la rapidez, el
amortiguamiento... Sin embargo, en nuestro caso las especificaciones vienen
impuestas por la legislación del mercado eléctrico, en concreto por los criterios de
evaluación de la respuesta que hace REE:
Memoria. Capítulo 3. Control predictivo-adaptativo. 71
- Calcula el PGCD (potencia que debería ser generada por la zona en este ciclo
para eliminar el error de control de área, ACE existente en el ciclo anterior).
Es la respuesta más rápida posible:
( ) ( 1) ( 1)PGCD k PGC k ACE k= − + −
- Calcula la respuesta más lenta permitida (SUM1): exponencial de primer
orden y constante de tiempo T1 (actualmente, 100 segundos)12:
1( ) ( ) (1 ) 1( 1)T1 T1AGC AGCT T
SUM k PGCD k SUM k= ⋅ + − ⋅ −
La respuesta del AGC debe estar dentro de la banda comprendida entre los
valores de PGCD y de SUM1. Si esto no se cumple, se considerará que existe
un error igual a la distancia entre la potencia generada y el límite más cercano
de esta banda.
- Calcula el error en la respuesta (ERR) en el ciclo actual, utilizando las
variables auxiliares ERRSUM1 y ERRPGCD.
1
1
1 1
1
1( ) ( )
( ) ( )
0 0
( )
SUM
PGCD
SUM PGCD
SUM SUM PGCD
PGCD SUM PGCD
ERR SUM k PGC k
ERR PGCD k PGC k
ERR ERR
ERR k ERR ERR ERR
ERR ERR ERR
= −
= −
⋅ <
= < ≥
- Filtra el error ERR mediante un filtro lineal de primer orden (constante de
tiempo T2 = 13.3 segundos) para obtener el SUM, por lo que se admiten
errores mayores que el valor permitido durante un tiempo.
12 TAGC es el periodo de muestreo de la RCP, actualmente igual a 4 s.
Memoria. Capítulo 3. Control predictivo-adaptativo. 72
( ) ( ) (1 ) ( 1) T2 T2AGC AGCT T
SUM k ERR k SUM k= ⋅ + − ⋅ −
- Calcula el valor límite permitido para la variable SUM, denominado AT y que
es un porcentaje de la banda de regulación asignada a la zona en la hora
correspondiente (K2 = 7%), con un cierto valor mínimo (K4 = 5 MW).
- Comprueba si el valor absoluto de SUM supera el umbral AT. En ese caso, se
dice que hay incumplimiento por parte de la zona.
Por tanto, las especificaciones de nuestro control incluirán la minimización
del número de veces que se incurre en incumplimiento, o dicho de otra forma, se
tratará de estar siempre dentro de la banda [SUM1,PGCD]. Además, trataremos de
minimizar el mando, lo que nos lleva a tratar de hacer los transitorios lo más lentos
posible (acercarnos al SUM1).
Memoria. C
apítulo 3. Control predictivo-adaptativo.
73
Fig. 35. Esquema general del co
ntrol predictivo
de un AGC
z
1
z
1
1/z
1/z
1/z
y [k] y [k+h]
Predicción
CRR
df
1/G
Factor
Atenuación
y [k]
r[k+h]
th[k]
dtu[k+1]
Control
Predictivo
10*BBias
dtu[k]
dty [k]
th[k]
Adaptación
dP[k]
PGC[k]
PI[k]
NSI[k]
AGC reparto
y unidades
NID[k]
ACE[k]u[k]
u[k-1]
PGCD[k]
PGC[k]
PGCD[k+h]
Memoria. Capítulo 3. Control predictivo-adaptativo. 74
6 Resultados
6.1 Algoritmo de adaptación
Tratamos aquí de dar una idea de la capacidad de adaptación de nuestro
algoritmo, para lo que se realizaron ensayos con filtros lineales (Fig. 36) que nos dan
resultados satisfactorios (Fig. 37).
y
parámetros
iae
dy predicho
1/z
Ruido
blanco
Ruido
z
z+0.9Filtro H
c1.z +c2z -1 -2
1+a1.z +a2z -1 -2
Filtro G
Estocástica
Determinista
1e-5
Cota
error
u
y
error
theta[k]
th[k]
na[k]
y pred[k]
y p[k]
Adaptación
|u|
Abs
y [k]
y [k-1]
Fig. 36. Esquema de ensayo de la adaptación
Fig. 37. Resultados de la adaptación
0 500 1000 1500 2000 2500 3000 3500 4000 4500
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
Parámetros durante adaptación
k
Valores de θk
500 1000 1500 2000 2500 3000 3500 4000 4500 5000
0.5
1
1.5
2
2.5
Error en valor absoluto
k
IAE
500 1000 1500 2000 2500 3000 3500 4000 4500
0
0.05
0.1
0.15
0.2
0.25
0.3
0.35
0.4
0.45
Error en valor absoluto
k
IAE
Memoria. Capítulo 3. Control predictivo-adaptativo. 75
Con otros filtros puede dar resultados no tan precisos, pero lo importante es
que, aun con parámetros que no son exactamente los de filtro, la predicción de la
salida es casi perfecta (Fig. 38).
Fig. 38. Resultados de la adaptación
6.2 Control predictivo adaptativo
En este apartado haremos un ensayo típico de control: tren de escalones en
referencia con CPA de una planta lineal con perturbación de medida. Además,
probaremos el control en una planta no lineal. Si no se indica otra cosa, se empleará
un horizonte de predicción igual al de control (10 muestras), sin pesar la
minimización del mando.
1000 2000 3000 4000 5000 6000 7000 8000
-1.5
-1
-0.5
0
0.5
1
Parámetros durante adaptación
k
Valores de θk
1250 1260 1270 1280 1290 1300 1310 1320 1330 1340 1350
-150
-100
-50
0
50
100
150
200
k
y k
Salidas real y predicha
RealPredicha
Memoria. Capítulo 3. Control predictivo-adaptativo. 76
0
ruido nulo
1e-3
cota
error
1
activ
Ruido
Pulse
Generator
1
z -1.8z+0.812
Planta
z
z+0.5H
[y]
[y]
Activ ación
y [k+h]
y [k]
max|e[k]|
u[k]
CONTROL
PREDICTIVO
ADAPTATIVO
Fig. 39. Esquema de ensayo de control sobre planta lineal
Aunque no exista ruido de medida, habrá una perturbación por la adaptación
(modelo imperfecto de la planta), a pesar de lo cual los resultados del control son
satisfactorios (Fig. 40).
Fig. 40. Tren de escalones en CPA (2 funciones base, vpc13=[4 10] )
13 Vpc es el vector de puntos de coincidencia empleado
550 600 650 700 750 800 850 900 950 1000 1050
0
0.5
1
1.5
2
2.5
3
3.5
4
4.5
5
k
y k
Respuesta a escalones
CPA100sRefrencia
762 764 766 768 770 772 774 776 778 780
4.92
4.94
4.96
4.98
5
5.02
5.04
5.06
5.08
5.1
k
y k
Respuesta a escalones
Memoria. Capítulo 3. Control predictivo-adaptativo. 77
Se observa que el control predictivo se anticipa al escalón, aunque,
dependiendo de los puntos de coincidencia tomados, la respuesta inicial puede ir en
contra de lo debido. Hay dos formas de solucionarlo: encontrar los puntos de
coincidencia adecuados (Fig. 41) o fijar una ponderación elevada de los incrementos
de mando en la minimización de la función objetivo (Fig. 42).
Fig. 41. Tren de escalones en CPA (nfb=2, vpc=[1 10])
550 600 650 700 750 800 850 900 950
-0.03
-0.02
-0.01
0
0.01
0.02
0.03
0.04
0.05
0.06
k
uk
Valores del mando
Sin minimizar incrementos de mandoMinimizando incrementos de mando
Fig. 42. Minimización de los incrementos de mando
550 600 650 700 750 800
0
0.5
1
1.5
2
2.5
3
3.5
4
4.5
5
k
y k
Respuesta a escalones
CPA100 sRef
762 764 766 768 770 772 774 776 778 780
4.8
4.85
4.9
4.95
5
5.05
ky k
Respuesta a escalones
Memoria. Capítulo 3. Control predictivo-adaptativo. 78
Sin embargo, un exceso de ponderación de los incrementos de mando en la
minimización (g en Ec. 25) puede tener graves consecuencias del estilo de la
saturación del mando por limitaciones físicas de los actuadores:
Fig. 43. Efecto de ponderación inadecuada
Como ya se ha comentado, existe una multitud de parámetros y
combinaciones de ellos cuyo efecto sobre el control no es evidente y cuyo estudio en
profundidad no tiene sentido en este proyecto. Así, nos limitaremos a conseguir un
control adecuado, quedando como posible desarrollo futuro la optimización de los
parámetros del control.
A continuación, mostramos un ensayo del CPA sobre una planta no lineal
(modelo de una cuba cuyo caudal de salida es constante y del que se quiere controlar
la altura de agua regulando el caudal de entrada):
500 550 600 650 700 750 800 850 900 950 1000
-0.01
0
0.01
0.02
0.03
0.04
0.05
k
uk
Valores de mando
γ adecuada
γ excesiva
550 600 650 700 750 800 850
0
0.5
1
1.5
2
2.5
3
3.5
4
4.5
5
k
y k
Salida del CPA
γ excesivoSUM1Referencia
γ adecuado
Memoria. Capítulo 3. Control predictivo-adaptativo. 79
500 1000 1500 2000
-1
0
1
2
3
4
5
6
k
y k
Respuestas a escalones
yk
rk
Fig. 44. Respuestas a escalón de una planta no lineal con CPA
La figura Fig. 44 nos lleva a hacer los siguientes comentarios:
- Por un lado, se ve que el CPA funciona no sólo con filtros lineales, sino
también con plantas no lineales. Hay que tener en cuenta que no se trató de
optimizar la respuesta mostrada.
- Por otro lado, se ve que la respuesta a escalón mejora con el tiempo, cosa
debida a la adaptación. No existe información interesante para la adaptación
más que cuando se produce el escalón, momento en el que los parámetros
cambian y la respuesta ante el siguiente escalón mejora.
- Finalmente, hay que destacar que la no linealidad de este sistema no es muy
acusada, probablemente mucho menor que la del AGC, por lo que este
estudio no sirve de garantía para asegurar el éxito del CPA sobre AGCs
(simplemente pretendía mostrar la viabilidad del CPA con no linealidades).
Memoria. Capítulo 3. Control predictivo-adaptativo. 80
6.3 Control predictivo adaptativo para AGC
6.3.1 Adaptación en AGC
Como no tenemos un modelo del AGC con el que poder comparar nuestras
identificaciones, comparamos la salida real y la predicha. Durante los ensayos se
comprobó que la adaptación es más satisfactoria con órdenes bajos de los
polinomios, con pocos parámetros.
Fig. 45. Resultados de la adaptación de parámetros del AGC
En cuanto a algunos de los parámetros del algoritmo de adaptación, tenemos
que:
- Cuando aumentamos la constante C (Fig. 46), la dispersión de los parámetros
se hace menor (aunque no es espectacular, sí existe una mejora en la
adaptación). Si es demasiado elevada, no se produce adaptación.
200 400 600 800 1000 1200
-5
-4
-3
-2
-1
0
1
2
3
4
5
k
y k
Comparación salidas
AdaptaciónReal
700 720 740 760 780 800 820 840
-5
-4
-3
-2
-1
0
1
2
3
4
k
y k
Comparación salidas
Memoria. Capítulo 3. Control predictivo-adaptativo. 81
- La constante d tiene un efecto parecido a C: al aumentar, reduce la
variabilidad de los parámetros e influye en el error de adaptación (influye
directamente en el umbral admisible de error).
- Si aumentamos la cota del error, evidentemente la adaptación se produce en
menos muestras y permite más error, teniendo un efecto parecido a las
anteriores constantes.
500 600 700 800 900 1000 1100 1200
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
Variabilidad con C
k
θi(k)
En verde, C=1 En rojo, C=10
Fig. 46. Sensibilidad de los parámetros al variar C
6.3.2 Control predictivo-adaptativo
Puesto que uno de los principales objetivos de este proyecto era determinar la
viabilidad del control predictivo-adaptativo para gobernar sistemas eléctricos de
potencia, entraremos más en detalle que en apartados previos. Sin embrago, no se
consiguió que la adaptación aportase mejoras en el esquema completo de control, por
lo que se optó por no emplearla. Así pues, el control predictivo funcionará con un
modelo de la planta fijo, que proviene de la elección de unos polos lentos en un filtro
estable, a pesar de lo cual se obtendrán resultados satisfactorios.
Memoria. Capítulo 3. Control predictivo-adaptativo. 82
Es importante destacar que este apartado sólo pretende dar una idea de la
viabilidad del CPA en AGCs, pero no determinar si el control diseñado en este
proyecto es mejor que los controles actuales, cosa que sería difícil asegurar, ya que
intervienen muchas otras cuestiones (técnicas, económicas, de seguridad...) en la
evaluación de los reguladores de AGCs.
En primer lugar, debemos definir el esquema de control, las especificaciones
del mismo, las medidas que se harán para ver el grado de satisfacción de las
especificaciones y los ensayos desarrollados a tal efecto.
En cuanto al esquema de control, sigue siendo válido el esquema mostrado en
Fig. 35. Sobre este esquema se harán las siguientes variaciones y/o modificaciones:
- Las señales de referencia serán, según el ensayo, trenes de escalones en el
CRR y Df o las señales reales (de las mismas variables).
- El bloque de predicción del PGCD será un predictor iterativo, directo o
trivial, según el ensayo.
- El valor de la constante B será el correspondiente al bloque del AGC
diseñado por D. Ignacio Egido ([9]).
- El bloque del AGC (reparto y unidades) simula los grupos generadores de
una zona de generación. En ensayos de comparación se empleará otro bloque
similar que incluye el control propio del AGC, con el que se quiere establecer
la comparación (AGC completo, en adelante).
- Los criterios de evaluación serán los siguientes (según el ensayo): número de
muestras en que la zona incurre en incumplimiento (fijaremos el umbral de
mala respuesta en 15 MW, el 300 % del mínimo legal), seguimiento del
PGCD o área bajo la curva del valor absoluto del ACE.
Memoria. Capítulo 3. Control predictivo-adaptativo. 83
- Una vez conseguida una respuesta correcta, se tratará de evaluar la
minimización de los incrementos de mando.
El primer paso será hacer un tren de escalones y comparar con el AGC
completo. Para evaluar el ensayo, nos fijaremos en el seguimiento del PGCD que
hace el CPA (con predicción trivial, de momento) y compararemos el valor absoluto
del ACE (que es la magnitud que se desea anular) con el que se comete con el AGC
completo. No podemos comparar ambas salidas directamente (PGC con AGC
completo frente a CPA), ya que, al depender la referencia de la salida en la muestra
anterior (5.2), ambas referencias serán distintas.
Fig. 47. Ensayo ante tren de escalones de CRR
Parece que el CPA consigue seguir bastante bien al PGCD, e incluso
acumularía menos ACE que el AGC completo (aunque no sea menor en todas las
muestras).
700 800 900 1000 1100 1200 1300 1400 1500 1600
2920
2940
2960
2980
3000
3020
3040
3060
3080
3100
k
PGCk
Tren escalones de CRR
SUM1CPAPGCD
700 800 900 1000 1100 1200 1300
5
10
15
20
25
30
35
40
k
|ACEk|
|ACE| ante tren escalones de CRR
AGC completoCPA
Memoria. Capítulo 3. Control predictivo-adaptativo. 84
Si probamos ahora el control con algunos valores reales de desvío de
frecuencia y de requerimiento de regulación, obtenemos:
1000 1100 1200 1300 1400 1500 1600 1700 1800 1900 2000
2750
2800
2850
2900
2950
3000
3050
3100
k
PGCk
PGC en Control Predictivo Adaptativo
SUM1PGCDPGC
Fig. 48. Simulación con valores reales
El número de muestras en las que el control CPA incumple es menor del 80
% de las muestras en que lo hace el AGC completo, por lo que podemos afirmar que
el CPA podría mejorar el comportamiento de las zonas de regulación.
Memoria. Capítulo 3. Control predictivo-adaptativo. 85
Fig. 49. Comparación de incumplimientos del AGC completo y del CPA
>> sum(incumplimiento_cpa) = 824
>> sum(incumplimiento_agc) = 1080 (131 % del anterior)
Hasta el momento, hemos empleado una trayectoria de referencia que tiene en
cuenta todas las predicciones pasadas (dentro del horizonte de predicción). Sin
embargo, también existe la posibilidad de considerar la predicción constante en el
horizonte (igual a la última predicción), cosa que mejora aún más los resultados:
200 400 600 800 1000 1200 1400 1600 1800
0
20
40
60
80
100
120
140
160
180
200
k
MW
Incumplimiento de CPA
|SUM|Incumplimiento
200 400 600 800 1000 1200 1400 1600 1800
0
20
40
60
80
100
120
140
160
180
200
k
MW
Incumplimiento de AGC completo
|SUM|Incumplimiento
Memoria. Capítulo 3. Control predictivo-adaptativo. 86
Fig. 50. Control de AGC mediante CPA y referencia constante
>> sum(incumplimiento_cpa) = 668
>> sum(incumplimiento_agc) = 1074 (160 % de CPA)
Como ya dijimos en otro momento, no pretendemos hacer un estudio en
profundidad de los parámetros del control con vistas a optimizarlo, pero sí es
interesante mostrar aquí algunas variaciones de elementos.
En primer lugar, se observa (Fig. 51) que no existen grandes variaciones del
mando con el horizonte de predicción, al menos, si la trayectoria de referencia es
rápida (si los puntos de coincidencia están ya en una zona cercana al valor final, hay
poca diferencia). Por tanto, hay escasa influencia en la salida.
Donde sí se ve influencia es en la constante de tiempo de la trayectoria de
referencia (Fig. 52). Al aumentar, el filtro es más lento y damos más tiempo para
alcanzar la referencia, por lo que el mando disminuye, pero incumple más (empeora
la salida).
1300 1400 1500 1600 1700 1800 1900 2000
2700
2750
2800
2850
2900
2950
3000
3050
3100
k
MW
PGC del CPA
SUM1PGCDPGC
500 1000 1500 2000 2500
0
20
40
60
80
100
120
140
160
180
200
k
MW
Incumplimiento del CPA
|SUM|Incumplimiento
Memoria. Capítulo 3. Control predictivo-adaptativo. 87
900 920 940 960 980 1000
-30
-20
-10
0
10
20
30
40
k
MW
Mando para distintos horizontes
h=5h=15
Fig. 51. Variación del mando con h
900 920 940 960 980 1000
-30
-20
-10
0
10
20
30
40
k
MW
Mando para distintas referencias (α)
α=0.5
α=0.9
Fig. 52. Variación del mando con a
Memoria. Capítulo 3. Control predictivo-adaptativo. 88
Un efecto parecido tiene la ponderación del mando en la función objetivo
(Ec. 25). En este caso es mucho más difícil establecer el valor adecuado (mucho más
prueba y error) y estropea bastante la salida (aunque sigue incumpliendo menos que
AGC completo):
900 920 940 960 980 1000
-30
-20
-10
0
10
20
30
40
k
MW
Mando para distintas ponderaciones (γ)
γ=0
γ=10
Fig. 53. Variación del mando con la ponderación de referencia
Para terminar este apartado, una vez comprobadas algunas opciones del
control con predicción trivial (y sin adaptación, recordamos), queda ahora aplicar el
predictor iterativo (que resultó ser la mejor opción del CAPÍTULO 2. PREDICCIÓN
DEL PGCD) para ver si los resultados mejoran. Efectivamente, aunque la mejoría no
es espectacular (y menos si se usa una predicción constante en el horizonte de
predicción), sí puede compensar incluir el predictor iterativo, ya que no empeora la
predicción trivial y puede llegar a ser mejor que ésta, como muestran las siguientes
tablas (donde se muestran 5 ensayos para cuatro zonas de regulación distintas):
Memoria. Capítulo 3. Control predictivo-adaptativo. 89
Zona 1 Zona 2
CPA AGC CPA AGC
N=1 1887 (9%) 3821 (19%) 1885 (9%) 3667 (18%)
N=2 1843 (9%) 3818 (19%) 1862 (9%) 3679 (18%)
N=3 1874 (9%) 3825 (19%) 1897 (9%) 3676 (18%)
N=4 1913 (10%) 3831 (19%) 1867 (9%) 3682 (18%)
N=5 1917 (10%) 3824 (19%) 1843 (9%) 3672 (18%)
MMMM 1887 (9%) 3824 (19%) 1871 (9%) 3675 (18%)
s 30 5 21 6
CPA / AGC 49% 51%
Tabla 2. Valores de incumplimiento en muestras (I)
Tabla 3. Valores de incumplimiento en muestras (II)
Zona 3 Zona 4
CPA AGC CPA AGC
N=1 1854 (9%) 4077 (20%) 1887 (9%) 4063 (20%)
N=2 1879 (9%) 4065 (20%) 1890 (9%) 4068 (20%)
N=3 1862 (9%) 4067 (20%) 1821 (9%) 4060 (20%)
N=4 1889 (9%) 4071 (20%) 1903 (10%) 4063 (20%)
N=5 1869 (9%) 4063 (20%) 1886 (9%) 4069 (20%)
mmmm 1871 (9%) 4069 (20%) 1877 (9%) 4065 (20%)
ssss 14 6 32 4
CPA / AGC 46% 46%
Memoria. Capítulo 3. Control predictivo-adaptativo. 90
7 Conclusiones
Como conclusión a este capítulo haremos un resumen de las ideas extraídas
en el mismo.
Por un lado, se mostró la idea del control predictivo como estrategia viable
para sistemas diversos, ya que las técnicas de optimización son muy versátiles y
generales. Es más, se comprobó la utilidad del mismo incluso con modelos poco
fiables del sistema (en el fondo, es un control en lazo cerrado) y sin adaptación,
como se demostró sobre plantas lineales y no lineales (6.2).
Por otro lado, aunque en ensayos con filtros sencillos se demostró el correcto
funcionamiento del mecanismo de adaptación (6.1), sobre el sistema “real” (AGC) se
comprobó que dicho mecanismo dificultaba el control, por lo que se prescindió de él,
consiguiendo aun así buenos resultados.
Una tercera conclusión es que la predicción mediante los métodos vistos en el
CAPÍTULO 2. PREDICCIÓN DEL PGCD puede mejorar la respuesta del control en
nuestro caso, aunque no de forma espectacular.
Finalmente, como conclusión global al proyecto, diremos que el control
predictivo (sin adaptación), con predictores lineales e identificación paramétrica (o
con predicción trivial, que agiliza los cálculos), es válido para sistemas eléctricos de
potencia y podría incluso mejorar otros controles actualmente implantados, aunque,
como se comentó en 6.3, la evaluación del control del AGC responde a muchos
criterios (económicos, técnicos, de seguridad...) que no se han tenido en cuenta en
este proyecto.
Memoria. Capítulo 4. Futuros desarrollos. 91
CAPÍTULO 4. FUTUROS DESARROLLOS
En este capítulo se muestran una serie de ideas y líneas de investigación que
fueron surgiendo a lo largo del proyecto y que no se implantaron por falta de tiempo
o por salirse de los objetivos del mismo. No se pretende dar más que una idea de las
posibilidades existentes.
1 Identificación y predicción
Se ha comentado a lo largo del proyecto el problema que supone trabajar con
señales no lineales cuando se emplean técnicas lineales de identificación y
predicción. Parece, pues, más conveniente emplear métodos no lineales de obtención
de modelos. Se dará aquí una visión superficial de algunas de estas técnicas.
1.1 Cuantización vectorial
Las técnicas de cuantización vectorial, también denominadas de clustering,
tienen como finalidad codificar un conjunto extenso de vectores, V Õ ¬N, utilizando
exclusivamente un conjunto reducido de vectores ( )1 R=W w wL , wi Œ ¬N,
i=1...R, denominados vectores de referencia o centroides. De esta forma, un vector
cualquiera de datos ∈v V se describe mediante el vector ( )i ∈vw W para el cual la
distancia euclídea entre ambos vectores ( ) ( )2 2
( ) ( ) ( )1
,N
i i j i j
j
d v w=
= − = −∑v v vv w v w
es mínima. Mediante este procedimiento se divide el conjunto de vectores origen V
en R particiones Vi, denominadas regiones de Voronoi, a cada una de las cuales le
corresponde un vector de referencia wi:
Memoria. Capítulo 4. Futuros desarrollos. 92
{ }i i j j= ∈ − ≤ − ∀V v V v w v w
El criterio usado para definir los vectores de referencia es minimizar el error
de distorsión o reconstrucción del conjunto V a partir del conjunto W, definido como
la suma de las distancias euclídeas de los vectores pertenecientes a V con respecto a
sus correspondientes vectores de referencia en W.
1.2 Algoritmo Neural-Gas
Existen diferentes algoritmos de cuantización vectorial como k-means, mapas
autoorganizados (SOM, Self-Organizing Maps) o neural-gas. El algoritmo neural-
gas es el más comúnmente empleado para realizar la cuantización vectorial de un
conjunto de vectores V. Se parte de un conjunto de R vectores seleccionados
aleatoriamente de V como vectores de referencia iniciales. El algoritmo modifica los
vectores de referencia a medida que procesa los nuevos vectores de datos que le van
llegando. El procedimiento consta de dos fases: ordenación y actualización de
vectores de referencia.
1.3 Predicción mediante aproximación funcional local y lineal
Consideraremos cada secuencia de N datos consecutivos y más recientes de la
serie temporal como el vector de datos vk, actual perteneciente al conjunto de
vectores V que deseamos cuantizar: ( ) ( )T
1k k y k y k N∈ = − + v V v L
Por lo tanto en cada nueva muestra se definirá dicho vector y se empleará para
actualizar los vectores de referencia wi de las regiones de Voronoi Vi, según el
algoritmo neural-gas definido en la sección 1.2 de este capítulo. De esta forma
construiremos una función global de predicción a partir de funciones locales lineales
fi(.) definidas para cada región de Voronoi: ( ) ( )k k i k k i= ∈F v f v v V
Memoria. Capítulo 4. Futuros desarrollos. 93
El objetivo no es sólo actualizar los vectores de referencia en cada nueva
muestra, sino también la función lineal fi(.) que corresponda a la región de Voronoi
donde se encuadre el nuevo vector de datos vk (o las funciones de las regiones más
próximas). Las funciones lineales que se manejan en cada región de Voronoi tienen
la siguiente estructura: ( ) ( )Tˆ .i i i iy y= = + −f v a v w , donde iy es un parámetro
escalar y ai es un vector de parámetros de dimensión N. La actualización de estos
parámetros en cada paso se realiza de forma similar a como se hace en el caso de los
vectores de referencia wi (véase 1.2 en este capítulo):
( )}
( )1
ˆ. .
h l
l
iy e y y
λ
λε
′
−−
′′∆ = −
( )}
( )( ) ( )1
. . . .
h l
l
i i i ie y y
λ
λε
′
−−
′′∆ = − − − −a a v w v w
1.4 Predicción con promediado de los datos pasados mediante modelo lineal
Al realizar la predicción mediante un filtro AR, los coeficientes del filtro
pueden interpretarse como una secuencia de pesos a aplicar a las muestras pasadas de
la serie para estimar su valor futuro: ( ) ( )T
1
ˆ ( 1) .N
i k k k
i
y k n a y k i=
+ = − + = =∑ a y F y
donde [ ]T
1 2 Na a a=a L es el vector de pesos a aplicar. Parece razonable tener
en cuenta estos pesos en el proceso de cuantización vectorial con el fin de calcular
las distancias considerando la importancia real de cada muestra en la predicción. Por
lo tanto, el conjunto de vectores V sobre el que se realiza la cuantización vectorial
mediante el algoritmo neural-gas sería el siguiente:
[ ]{ }T1( ) ( ) ( 1)k Ny k a y k n a y k n N= = − − − +V v L
Memoria. Capítulo 4. Futuros desarrollos. 94
El vector de pesos más apropiado se determina a partir de todo el registro de
datos de la serie temporal mediante mínimos cuadrados. Una vez determinados los
vectores de referencia o centroides se asignaría el más apropiado en cada muestra
usando únicamente las N últimas muestras del vector de datos (el valor futuro de la
serie temporal se desconoce). La predicción se obtendría de la primera muestra del
vector de referencia asignado.
Otra estrategia de promediado consiste en utilizar una ventana de pesos exponencial
decreciente (se da más peso a la muestra más reciente) de la forma 1iia λ −= con λ
entre 0 y 1. En este caso conviene también aplicar un peso al valor de y(k+n) y
optimizar este peso y λ durante el proceso de aprendizaje.
1.5 Predicción basada en los vectores de datos más cercanos
Existe una variante en los métodos de clustering aplicados a la predicción en
la cual se prescinde de la definición inicial de centroides o vectores de referencia. En
lugar de realizar una etapa previa de aprendizaje con un conjunto de datos inicial
para definir las regiones de Voronoi y clasificar posteriormente los nuevos vectores
disponibles, se opta por integrar ambas etapas prescindiendo de la partición del
espacio inicial en regiones de Voronoi. Se trata de buscar en el conjunto de datos
disponible los k vectores más próximos al nuevo vector de datos (k-Nearest Neighbor
Algorithm) evitando la presencia de solapes entre los vectores seleccionados para
evitar que sean próximos en el tiempo (k-Nearest Trajectory Algorithm).
La predicción se calcula como la media ponderada de los valores n muestras
más adelante correspondientes a los vectores seleccionados. La función de peso más
comúnmente empleada es 22
21 i
k
d
d
−
, siendo di la distancia del vector en la posición i
y dk la distancia del vector en la posición k en la ordenación por cercanía al vector
considerado en la muestra actual.
Memoria. Capítulo 4. Futuros desarrollos. 95
Este método implica una nueva ordenación del conjunto de datos en cada
nueva muestra lo que puede incrementar considerablemente la carga computacional
requerida.
1.6 Red neuronal perceptrón multicapa (MLP)
Una red neuronal básica consta de varias capas de neuronas (también
denominadas unidades de procesamiento o nodos) y se aplica a la aproximación de
funciones no lineales como se requiere en el problema de predicción.
Los valores de entrada se alimentan a las neuronas de la capa de entrada
donde se procesan y envían a las neuronas de la denominada capa oculta. Un
procesado similar se realiza en las neuronas de la capa oculta para generar las señales
que se envían a las neuronas de la capa de salida que proporcionan la salida o salidas
de la red. Cada neurona de la capa oculta está conectada a todas las neuronas de la
capa de entrada y a todas las neuronas de la capa de salida. Cada una de esas
conexiones lleva asignada un peso (valor real) que determina la fortaleza de la
conexión. Dada una neurona cualquiera j en la capa l, su salida l
jx se determina
aplicando la denominada función de activación f(.) a la combinación lineal de las
entradas a la neurona 1lix− (salidas de las neuronas de la capa anterior l-1)
multiplicadas por sus correspondientes pesos 1ljiw− :
11 1
1
lj
l
s
Nl l l
j ji i
i
x f w x−
− −
=
=
∑
64748
siendo Nl el número de neuronas en la capa l y l
js la entrada a la función de
activación de la neurona j en la capa l. Las funciones de activación típicamente
empleadas son las siguientes:
Memoria. Capítulo 4. Futuros desarrollos. 96
• Función binaria: ( )1 0
0 / 1 0
sf s
s
≥=
− <
• Sigmoide: ( )1
1 sf s
e−=
+
• Tangente hiperbólica: ( )s s
s s
e ef s
e e
−
−
−=
+
La función de activación más utilizada es la sigmoide debido a la sencillez en
la evaluación de su derivada ( ( ) ( ) ( )( )' 1f s f s f s= − ), aunque tiene el
inconveniente de que su valor está comprendido entre 0 y 1 por lo que no se puede
usar en las neuronas de salida si la red debe aproximar valores negativos. En este
último caso se suele usar la tangente hiperbólica como función de activación.
Modificando los pesos de las conexiones entre neuronas de manera apropiada
se consigue que la red “aprenda” la relación entre el vector de entradas y el vector de
salidas. El procedimiento mediante el cual se modifican los pesos a partir de un
conjunto de datos de entrada y salida se denomina algoritmo de aprendizaje o
entrenamiento. Este algoritmo de aprendizaje debe ser capaz de generalizar la
relación entrada - salida, es decir captar las características generales del conjunto
datos empleados en el entrenamiento prescindiendo de sus características peculiares
(sobreaprendizaje u overfitting). Para evaluar el aprendizaje de la red se emplea un
conjunto de datos de validación diferentes de los utilizados durante la fase de
entrenamiento.
Aunque la red básica consta de una única capa oculta, es posible encontrar
redes neuronales con varias capas ocultas para aproximaciones funcionales
complejas.
Memoria. Capítulo 4. Futuros desarrollos. 97
2 Control
De manera similar al apartado anterior, se pretende aquí dar una ligera idea,
una primera aproximación a otras técnicas de control predictivo adaptativo que
podrían suponer mejoras respecto a los desarrollos de este proyecto.
En primer lugar, cabe destacar la idoneidad del control predictivo (como
parte del control óptimo que es) para incluir restricciones en la minimización de la
función objetivo que tiene como resultado el cálculo de los valores del mando. Estas
restricciones son muy comunes en la realidad, siendo de especial importancia las
limitaciones en amplitud y velocidad de los actuadores ([13]), y su tratamiento y
solución son de sobra conocidos en GPC (Generalized Predictive Control) y en
DMC (Dynamic Matrix Control) mediante técnicas de programación cuadrática
(QP).
En segundo lugar, cabe destacar el enfoque integrado de control predictivo e
identificación que se propone en [10] y [12]. En ellos se trata una extensión del MPC
(Model Predictive Control) que tiene en cuenta la identificación en las restricciones
(MPCI, Model Predictive Control and Identification iniciado por Genceli y Nikolaou
en 1996). Básicamente lo que se proponen son medidas para mantener la salida
controlada en unos límites mientras se consigue la información suficiente para
identificar el modelo. Mediante la adición de restricciones sobre la riqueza de la
información y sobre las cotas de la salida se garantiza que dicha salida no se
deteriora demasiado durante el proceso de obtención del modelo.
Por otro lado, ya se comentó a lo largo del proyecto que el control predictivo
es algo relativamente independiente, tanto de los modelos que se empleen del
sistema, como de los mecanismos de adaptación que traten de mejorar ese modelo
durante la ejecución. Así, sería posible utilizar el control predictivo (recordemos que
encierra una idea muy general de minimización) con modelos lineales (como pueden
ser los empleados en el proyecto o cualquiera de sus variantes) o no lineales (como
los mencionados en el apartado 1 de este capítulo, es decir, redes neuronales,
Memoria. Capítulo 4. Futuros desarrollos. 98
cuantización de vectores...), que tal vez consiguiesen mejores resultados con los
sistemas no lineales que son los AGCs.
Finalmente, en cuanto a la adaptación, es frecuente emplear los algoritmos de
mínimos cuadrados lineales (y así podría hacerse aquí también), aunque en este
proyecto se implementó el algoritmo propuesto en [4], que es fruto de un profundo
análisis de las condiciones de estabilidad.
Memoria. Apéndices. 99
APÉNDICES
Apéndice A. Representaciones de estado en RPEM.
Diferencias con RARMAX
Como se pudo comprobar en 4.1, las formas canónicas se pueden emplear en
los algoritmos recursivos de identificación de parámetros con resultados
satisfactorios. Sin embargo, tras el estudio de las ecuaciones de RARMAX de Matlab
®, apreciamos unas diferencias en el cálculo que hacen que las formas canónicas no
actualicen de manera adecuada los estados (para calcular la predicción a posteriori).
Dichas diferencias se deben a que los estados de la FCC y FCO son combinaciones
lineales de las entradas y errores de predicción de muestras anteriores, con lo que el
efecto de parámetros anteriores no se puede eliminar en los estados actualizados y,
por tanto, en las predicciones a posteriori una vez conocidos los nuevos parámetros.
Por el contrario, RARMAX almacena las entradas y errores de predicción pasados de
forma independiente unos de otros en el vector de regresores, por lo que la
actualización de la predicción es correcta (o al menos, distinta de lo que conseguimos
con FCC y FCO). Otra forma de verlo es que, si nuestro modelo ARMA de órdenes
na=m y nc=n tiene m+n variables que intervienen en el cálculo de la predicción
(entradas y errores de predicción a posterior en instantes de tiempo pasados) y sólo m
estados, esto significa que los estados serán una combinación lineal de entradas y
errores de muestras previas. Así pues, es imposible, usando las matrices de la
representación, manejar entradas y errores de predicción de forma independiente
(imposible multiplicar cada variable por su parámetro asociado sin que intervenga el
efecto de algún otro parámetro anterior).
Una vez localizado el problema, hallamos una representación de estado a
partir de las ecuaciones de RARMAX (Ec. 28). Llamaremos SS a esta representación
de estado.
Memoria. Apéndices. 100
Ec. 28: ecuaciones de RARMAX para na=2, nc=1.
=
−
−−
=
−
=−=
= →−==
+
+
−
1
2
1
,
)3(.1
)1(
)1(.1
)1(,ˆ
,'.ˆˆ,'.ˆ
*
1
*
1**
*1
c
a
a
siendo
c
cy
y
yy
yyyy
k
kkk
k
kkk
k
k
k
k
kkkk
kkk
parámetroscalculartras
kkkkkk
θ
ψε
ψ
ψ
ψ
ε
ϕϕε
θϕεθϕ
En nuestra representación de estado (Ec. 29), haremos coincidir los estados
con el vector de regresores de RARMAX (para poder manejar de forma
independiente las entradas y errores pasados). Sin embargo, esta representación de
estado presenta dos inconvenientes:
- No es una representación de estado mínima, sino que el número de
estados pasa de ser m (orden del polinomio denominador del filtro) a
ser m+n (número total de parámetros). Esto no supone un problema
realmente, salvo que aumenta el número de variables que hay que
almacenar en el estado.
- Las sensibilidades calculadas no corresponden a las derivadas de la
salida predicha a priori respecto de los parámetros, como debería ser
teóricamente. Puesto que, como veremos más adelante, estas
sensibilidades las calcularemos no para una muestra sino para un
horizonte de predicción más amplio y puesto que con el método que
acabamos de describir no será posible hacer esto, nuestro cálculo de
sensibilidades se hará mediante la derivación de los estados elegidos y
la salida predicha a priori. Esto supone una diferencia con RARMAX,
pero proporciona buenos resultados.
Memoria. Apéndices. 101
Por tanto, en la Ec. 29 reemplazaremos el cálculo de las sensibilidades por el
procedimiento de Ec. 30.
Ec. 2914. Representación de estado SS
[ ]
[ ]
*2
*121
**
*
*21
*1121111
*
*2
*1
2
1
.2.1.2.1ˆ
,.ˆ:
ˆ,.2.1.2.1.ˆ:
0
1
0
1
;).....;1;.....;1(
;
01),1(
),1(
)1,1(1
....1....1
:,
...
...
:
−−−−
−−−−−−−−−
−
−
−
−
−
−
−−++=−=
= →
−=++−−==
==−−=
−Ι−
+
+−−Ι
−−
=
=
kkkkkkkkkkkk
kkk
parámetroscalculartras
kkkkkkkkkkkkkk
kkk
k
k
nk
k
k
mk
k
k
k
ccyayayyy
XCyposterioriA
yyccyayaXCyprioriA
KKcncamaC
nmnzeros
nmzeros
nmzerosm
cncama
AMatricesy
y
y
XEstados
εεε
εεε
ε
εε
)
[ ]
[ ]
−
−
−
+
−Ι−
−−−
+−−Ι
−−−
=
+=
+
+
k
k
k
k
k
kkkkk
y
nzeros
mzeros
nmnzeros
cnccmzeros
nmzerosm
mzeroscncc
adesSensibilid
KXAXsiguienteEstado
*
1
*1
.
)2,1(
01
)2,1(
10
.
1),1(
...21),1(
)1,1(1
),1(...21
:
..:
εψψ
ε)
14 Al expresar las matrices, recurrimos a comandos de Matlab ®: zeros(a,b) nos da un vector a x b con elementos nulos. Además, con I[dim] nos referiremos a la matriz identidad de dimensión dim.
Memoria. Apéndices. 102
Ec. 30. Cálculo de sensibilidades para SS
θθθψ
θθθ
θ
εε
θθθθ
d
XdCX
d
dC
d
ydadesSensibilid
yKd
dXCKAX
d
dCK
d
dA
d
dK
d
dK
d
dXAX
d
dA
d
XdsiguienteestadodelDerivadas
kkk
kkk
kkk
kkkkk
kk
kkk
kkkk
kk
11
11
**1
.:
).(.
..:
++
++
+
+==
+−+
⋅−=
=+++=
))
)
)
El problema tratado en este apartado quedará más claro en el ejemplo
siguiente. A partir de las ecuaciones Ec. 28 (RARMAX 2x1), calculamos los pasos
del RPEM:
=
−
=
−
==
== →== −
0
0
0
,0,0,
,)(
0'.ˆ,'.ˆ)1
0
0
0
1
0
0
10*0
00*000100
θψϕε
θϕεθϕ
siendo
y
y
y
y
y
cerosonfactoresambos
yyy parámetroscalculartras
=
−−−
−
+−
=
−−
−
−
=
−−=
−==→===
1
1
1
1
011101
0
101
2
1101
0
1
2
1101*1
11011*1111011
1
2
1
,
.1)11.(
1.
,
)11.(
,)11.(
,)11.('.ˆ,0'.'.ˆ)2
c
a
a
siendo
ycacyy
y
cyy
acyy
y
y
acyy
acyyyy
θψϕ
ε
θϕεϕθϕv
Memoria. Apéndices. 103
[ ]
[ ]
[ ]
[ ] [ ],
.1)11.(1)11.(12.)11(
1.
)1.(1
1
2
1
,
)11.(12.)11(
))11.(12.()11(
)11.(.12.1.'.ˆ,ˆ
))11.(12.()11(
)11.(.12.1.'.ˆ)3
0111012112202212
101
11022
3
2
2
2
2
112202212
1
2
3
11220221
11012202122*2222
11110111
110111011122
−−−−−++−−
+−
−−−
=
=
−++−−
−
−
=
−+−−=
=−−+−−==−=
−+−−=
=−−+−−==
ycacyycaccayacyy
cyy
ycycy
c
a
a
siendo
accayacyy
y
y
accayacy
acyycayayyyy
accayacy
acyycayayy
ψ
θϕ
θϕε
θϕ
Procedemos ahora de igual forma para la FCO15. A partir de las ecuaciones
del RPEM para la FCO (Ec. 31), tenemos, para el ejemplo de órdenes na=m=2 y
nc=n=1:
Ec. 31. Ecuaciones RPEM con FCO
11
*111
..).(
..ˆ,)1(.ˆ
2
11;)0;1(;
02
11
−−
−−−
+−=
=+= →−===
−
−==
−
−=
kkkk
kkkkk
parámetroscalculartras
kkkkkkk
k
kk
k
k
yKXCKA
KXAXyyXXCy
a
acKC
a
aA
εε))
Otra posibilidad es: 121111 ...... −−−−−− −+=+= kkkkkkkkkkkk XCKyKXAKXAX)
ε
15 Para la FCC, mediante un cálculo similar, obtendríamos resultados parecidos (tampoco coincide con RARMAX).
Memoria. Apéndices. 104
***
11
*1
ˆ,.ˆ
).
,(......:
..).(..:
kkkkkk
kkkkkkkkkkkk
kkkkkkkkk
yyXCy
adelantemásverásecomo
válidaesnoXCKyKXAKXAXesdposibilidaOtra
yKXCKAKXAXsiguienteEstado
−==
−+=+=
+−=+=
−+
+
ε
ε
ε
))
)
En nuestro ejemplo:
=+=
=+−=+=
==
=
=
= →==
=
= −−
0
0..:
0
0..).(..:
;,0ˆ;0
0
;0
0;
00
10,0ˆ;
0
0;
00
10)1
00001
0000*00001
0*0
*00
0000011
ε
ε
ε
ε
KXAXesdposibilidaOtra
yKXCKAKXAXsiguienteEstado
yyX
KAyyKAparámetroscalculartras
)
)
.2.2
).11(..
2
11
;02
11ˆ,0)1(.ˆ)2
01
011*01011
1
1
1
11111101
formaslasdecualquieraporya
yacKXAX
a
acK
a
aAyyXXCy parámetroscalculartras
−
−=+=
−
−=
−
−= →−====
ε
ε))
Memoria. Apéndices. 105
−−−
−+−−−=
=
−
−+
−
−=+=
011111
111010111
1
1
1
1
11112
).11.(2.2
).1.1(.2).11.(1
.2
11.
02
11..:
yacaya
yacyayaca
ya
acX
a
aKXAXesdposibilidaOtra ε
)
−
−+−−−=
=
−
−+
−=+=
11
111010111
1
1
1
1
*11112
.2
).1.1(.2).11.(1
.2
11.
00
11..:
ya
yacyayacc
ya
acX
cKXAXsiguienteEstado ε
)
( ) RARMAXconcoincidenoqueaccayyacXy
ya
yacyayaccKXAX
a
acK
a
aAObtenemos
yacyayacaX
XCyqueyaválidoesnoformaotralaDe
yacyayaccXXCy
,)11.(12.).1.1()1(
.2
).1.1(.2).11.(1..
2
11;
02
11
;).1.1(.2).11.(1)1(
.ˆ,
.).1.1(.2).11.(1)1(.ˆ)3
112101222*2
12
122010112*12122
2
2
2
2
1110101112
212
1110101112212
−+−−==
→
−
−+−−−=+=
−
−=
−
−=
−+−−−=
==
−+−−−===
)
)
)
))
ε
Como hemos visto, el cálculo difiere de unas representaciones de estado a
otras, lo cual no significa que no se puedan conseguir resultados aceptables con FCC
y FCO (como se vio en 4.1). A continuación, mostramos un desarrollo parecido con
la representación de estado SS, que, como se ve en el ejemplo siguiente, se aproxima
más a RARMAX.
Memoria. Apéndices. 106
Ec. 3216: Ejemplo 2x2 con SS.
[ ]
[ ] [ ]
=+−=+=
====
=
= →===
0
0..).(..:
0;,0ˆ;0
;
0
1
0
1
;
0100
0000
0001
0000
,0ˆ;0)1
0
0
0000*00001
00*0
*00
000000
y
y
yKXCKAKXAXsiguienteEstado
yyC
KAyyX parámetroscalculartras
ε
ψε
ε
)
−
=⋅+⋅==
=⋅
⋅−+⋅−=
0
0ˆˆˆ
0).(ˆ
:
:
0
0
11
01
1
00
000
0001
y
y
Xd
dC
d
XdC
d
yd
Xd
dCK
d
dA
d
dXCKA
d
XdestadosDerivando
adesSensibilid
k
θθθψ
θθθθ
)
o
−
+
−−
−−
=0
*0
01 .
00
01
00
10
.
0100
2100
0001
0021
:
ycc
cc
resultadomismoRARMAXEcuaciones
k
εψψ
o
16 Aunque, como ya mencionamos antes, el cálculo de las sensibilidades lo haremos mediante las derivadas teóricas de la salida predicha, ofrecemos aquí la comparación con las sensibilidades de RARMAX.
Memoria. Apéndices. 107
=
−−
++−
=+=
−−=−=
−−
= →==−=
*0
*1
0
1
0
1101
0
*10101
*11112
1101*1110
*1
1111
1110001
)11.(
.1.1
..:
;)11.(,)11.(ˆ
0100
0000
0001
2121
,0)11.(ˆ)2
ε
ε
ε
ε
ε
ε
y
y
y
cayy
y
ycya
KXAXsiguienteEstado
cayycayy
ccaa
Aycayy parámetroscalculartras
)
[ ]
resultadomismoRARMAXEcuaciones
ycyycyy
yyX
d
dCK
d
dA
d
dXCKA
d
Xd
estadosDerivando
adesSensibilid
:
1.1.
0
0
0
0
0
0
0
0
0
0
0
0
0
0
).(ˆ
:
:
010*101012
0011
1111
2
o
)
o
−−+−=
−
=⋅
⋅−+⋅−=
εψ
θθθθ
[ ]
[ ]10*12
*1
*21012123
20*12
*1
*22012123
0101
3
*1
*2
1
2
3*22
*2
02110122021*222
1.1.1.1.:
1.1.1.1.
0
0
0
0
0
0
0
0
0
0
0
0ˆ
:
:
:;ˆ
,.2))11.((.12.1.ˆ,ˆ)3
cyccyycyyRARMAXEcuaciones
cyccyycyy
yyyd
XdestadosDerivando
adesSensibilid
y
y
XsiguienteEstadoyy
yccayycayayyy parámetroscalculartras
−−+−+−=
−−+−+−=
−
=
=−=
−−−+−−= →
εεεψ
εεεψ
εθ
ε
εε
ε
)o
)
o
)
Memoria. Apéndices. 108
Como se puede observar, las sensibilidades son distintas, con lo que los
parámetros identificados en la muestra siguiente serán también distintos. No
obstante, se puede ver en la comparación de predictores a una muestra (4.1.1) que los
resultados serán parecidos.
Apéndice B. Cálculo de sensibilidades
Cálculo de sensibilidades por el método analítico
La ecuación Ec. 33 muestra la predicción a un horizonte dado empleando
espacios de estado (en un principio, cualquier representación):
Ec. 33
11
1
ˆ).(ˆ
).().(ˆ
++
+
=
+=
kkk
kkkkk
XCy
KXAX
θ
εθθ
Puesto que la mejor estimación del error de predicción que podemos hacer es
su media y ésta es nula (recordamos que modelaremos nuestra señal con un ruido
blanco filtrado), tenemos que:
hkkhk
kk
h
kk
h
khkkhk
kkkkkkkkkk
kkkkkkk
XCy
KAXAXAX
KAXAXAXAX
XAKXAX
++
−−++
+++
++++
=
+==
+===
=+=
ˆ).(ˆ
).(.)(.)(ˆ).(ˆ
).(.)(.)(ˆ.)(ˆ).(ˆ
ˆ).(ˆ).(ˆ).(ˆ
11
231
223
1112
θ
εθθθθ
εθθθθθ
θεθθ
Memoria. Apéndices. 109
Por tanto (Ecs. 34): ( )
=== +++
θθψ
d
XCd
d
yd hkkhk
k
)) .ˆ
1 =⋅+⋅ ++
hk
khk
k Xd
dC
d
XdC ˆ
ˆ
θθ
hk
k
k
k
h
kk
kh
kkk
h
k
k
h
kkh
kk
Xd
dC
d
dKA
d
dKAK
d
dAX
d
dA
d
dXAC
+
−−−
⋅+
+
⋅⋅+⋅⋅+⋅⋅+⋅+⋅=
ˆ
. 111
θ
θ
εε
θε
θθθ
El cálculo es laborioso (por lo que se recurrirá al método descrito en el
apartado siguiente), pero sencillo si se tiene en cuenta el siguiente detalle sobre
derivación de potencias de matrices, que no es trivial y que nos pareció interesante
incluir aquí.
Dada una matriz ( )
dx
xdMxMh
dx
xMdxM h
hh )(
)(.)(
)( 1 ⋅≠→ −, ya que hay
que tener en cuenta el lado por el que se multiplica cada término (el producto
matricial no es conmutativo):
Ec. 3517: derivación de potencias de matrices.
( )dx
xdMxMxM
dx
xdMxMxM
dx
xdM
dx
xMd
xMxMxMxMxM
hhhh
h
)()(....)(
)()()(
)()(
)().......().().()(
121 −−− ⋅++⋅⋅+⋅=
→=
17 La derivación de M(x) respecto de x es trivial: elemento a elemento se derivan éstos respecto de x.
Memoria. Apéndices. 110
Cálculo de sensibilidades por diferencias finitas
Como se comprobó en el apartado anterior, el método analítico para hallar las
sensibilidades puede resultar tedioso. Por tanto, emplearemos el método de las
diferencias finitas, basado en la definición de derivada:
Ec. 36. Definición de derivada h
xfhxf
dx
xdf
h
)()()(lim
0
−+=
→
En nuestro caso, consideraremos la matriz como una función (las matrices de
la representación de estado son funciones de los parámetros, aunque no lo
indiquemos –por simplificar-).
A partir de las ecuaciones de la predicción dentro de h muestras (Ec. 37),
tenemos que:
Ec. 37. Predicción con representaciones de estado
( )[ ]
kkkk
kkkkkk
h
kkhkkhk
yKpXAp
yKXCKAACXCy
)()(
...ˆ.ˆ 1
θθ +=
=+−==−
++
Ec. 38. Sensibilidades por diferencias finitas18
18 El parámetro D será un valor pequeño (cuanto más mejor) dentro de los rangos que nos permita manejar Matlab ®, que es donde se harán estos cálculos.
Memoria. Apéndices. 111
( ) ( )∆
−∆++−∆+=
=∆
−∆+= +++
kkkkkk
hkhkhk
yKpKpXApAp
yy
d
yd
.)()(.)()(
)(ˆ)(ˆˆ
θθθθ
θθ
θ
Apéndice C. Minimización de función objetivo en CPA
Partiendo de la expresión Ec. 25, trataremos de aclarar de dónde sale la
ecuación Ec. 26, ya que la derivación de vectores y matrices no es trivial.
( )( ) ( )( )[ ]TT
BB NNYnyfwYnyfwJ .......2
1µµγµµ +−−−−−−=
Desarrollando las transpuestas:
( )( ) ( )( )[ ]
( )( ) ( ) ( )[
( ) ] ( )( )[
( ) ( ) ]TTT
BB
T
B
TTTT
BB
T
B
TT
B
T
TTTT
B
TTT
B
NNYYnyfwY
nyfwnyfwNNYY
nyfwYYnyfwnyfwnyfw
NNYnyfwYnyfwJ
µγµµ
µγµ
µµ
µµγµµ
.......2
.2
1....
.....2
1
.......2
1
++−−−
−−−−−=++
+−−−−−−−−−−=
=+−−−−−−=
Memoria. Apéndices. 112
( ) ( ) TTT
BB
T
B NNYYnyfwYd
dJµγ
µ..... ++−−−=
Donde:
w [1 x np]: trayectoria de referencia,
yf [1 x np]: respuesta libre del sistema,
n [1 x np]: perturbación estimada,
m [1 x nfb]: vector de constantes de mando,
YB [nfb x np]: matriz de respuestas forzadas escaladas por m,
g: ponderación de la minimización del mando,
N [nfb x np]: matriz de mandos escalados por m.
Memoria. Lista de figuras. 113
LISTA DE FIGURAS Fig. 1. Tiempos de respuesta de la regulación frecuencia-potencia .............................4
Fig. 2. Errores de predicción de entradas diferenciales y con medias 90 y 5.............11
Fig. 3. Ventana de pesos exponencial.........................................................................15
Fig. 4. Espectro del incremento del PGC a 10 muestras ............................................25
Fig. 5. Espectro del incremento del ACE a 10 muestras ............................................25
Fig. 6. PGC filtrado paso bajo ....................................................................................26
Fig. 7. Filtro lineal empleado en los ensayos .............................................................27
Fig. 8. Identificación de parámetros de un filtro lineal mediante distintas
representaciones de estado..................................................................................28
Fig. 9. Predicciones RARMAX y FCO ......................................................................29
Fig. 10. Predicción FCO y salida real.........................................................................29
Fig. 11. Variación de la identificación con el factor de olvido...................................30
Fig. 12 Efecto de factor de olvido elevado.................................................................31
Fig. 13. Comparación FSTAB y REDUC ..................................................................33
Fig. 14. Comparación FSTAB y REDUC ..................................................................33
Fig. 15. Comparación de métodos para estabilizar el filtro........................................34
Fig. 16. Predicción a 10 muestras con identificador FCC a 10 muestras ...................36
Fig. 17. Parámetros identificados con FCC a 10 muestras .........................................36
Fig. 18. Predicción (rojo) a 10 muestras para un filtro lineal (salida real en azul)....37
Fig. 19. Comparación errores a distintos horizontes ..................................................38
Fig. 20. Comparación predicciones trivial e iterativa con FCC .................................39
Fig. 21. Predicción del PGC .......................................................................................40
Fig. 22. Errores de predicción (IAE) ..........................................................................40
Fig. 23. Predicción directa ..........................................................................................41
Fig. 24. Comparación de predicciones .......................................................................42
Fig. 25. Predicción del PGCD ....................................................................................44
Fig. 26. Esquema de control predictivo-adaptativo....................................................48
Fig. 27. Mandos forzado y libre ................................................................................52
Fig. 28. Separación de salida en forzada y libre .........................................................52
Memoria. Lista de figuras. 114
Fig. 29. Funciones base para el mando.......................................................................54
Fig. 30. Modelos de perturbación...............................................................................58
Fig. 31. Trayectorias de referencia .............................................................................60
Fig. 32. Control con filtro de primer orden y distintas velocidades de trayectoria
deseada................................................................................................................61
Fig. 33. Control con filtro complejo y distintas velocidades de trayectoria deseada 61
Fig. 34. Esquema básico de CPA de AGCs................................................................69
Fig. 35. Esquema general del control predictivo de un AGC.....................................73
Fig. 36. Esquema de ensayo de la adaptación ............................................................74
Fig. 37. Resultados de la adaptación ..........................................................................74
Fig. 38. Resultados de la adaptación ..........................................................................75
Fig. 39. Esquema de ensayo de control sobre planta lineal ........................................76
Fig. 40. Tren de escalones en CPA (2 funciones base, vpc=[4 10] )..........................76
Fig. 41. Tren de escalones en CPA (nfb=2, vpc=[1 10])............................................77
Fig. 42. Minimización de los incrementos de mando.................................................77
Fig. 43. Efecto de ponderación inadecuada................................................................78
Fig. 44. Respuestas a escalón de una planta no lineal con CPA.................................79
Fig. 45. Resultados de la adaptación de parámetros del AGC....................................80
Fig. 46. Sensibilidad de los parámetros al variar C ....................................................81
Fig. 47. Ensayo ante tren de escalones de CRR .........................................................83
Fig. 48. Simulación con valores reales .......................................................................84
Fig. 49. Comparación de incumplimientos del AGC completo y del CPA................85
Fig. 50. Control de AGC mediante CPA y referencia constante ...............................86
Fig. 51. Variación del mando con h............................................................................87
Fig. 52. Variación del mando con a ..........................................................................87
Fig. 53. Variación del mando con la ponderación de referencia ................................88
Fig. 54. Librería de Identificación ............................................................................120
Fig. 55. Librería de predicción .................................................................................122
Fig. 56. Librería de control predictivo-adaptativo....................................................124
Memoria. Bibliografía. 115
BIBLIOGRAFÍA
[1] I. Egido, F. Fernández Bernal, L. Rouco et al.. An overview of an AGC for a de-
regulated power system.
[2] F. Fidel Fernández Bernal. Curso sobre el sistema de regulación frecuencia-
potencia en el sistema peninsular. Aspectos técnicos básicos: parte II. Instituto
de Investigación Tecnológica. Universidad Pontificia Comillas
[3] Luis Olmos, Juan Luis Zamora, Ramón R. Pecharromán, Ignacio De La Fuente.
Regulación Compartida Peninsular mediante un control predictivo adaptativo.
Instituto de Investigación Tecnológica. Universidad Pontificia Comillas
[4] J. M. Martín Sánchez, J. Rodellar. Adaptive Predictive Control. Prentice Hall,
1996.
[5] Gene F. Franklin, J. David Powell, Michael Workman. Digital Control of
Dynamic Systems. Third Edition. Addison-Wesley, 1998.
[6] F. Luis Pagola. Control Digital. Universidad Pontificia Comillas –Madrid,
2002.
[7] FSTAB. L.Ljung 2-10-92, $Revision: 1.6 $ $Date: 2001/04/06 14:21:48 $
Copyright 1986-2001 The MathWorks, Inc.
[8] RARMAX. L. Ljung 10-1-89, $Revision: 1.6 $ $Date: 2001/04/06 14:22:28
$. Copyright 1986-2001 The MathWorks, Inc. Ver también capítulo 11 en
Ljung (1999).
[9] Ignacio Egido Cortés. Diseño de reguladores para el control automático de la
generación. Universidad Pontificia Comillas –Madrid, 2005.
Memoria. Bibliografía. 116
[10] Manoj Schouche et al. Simultaneous constrained model predictive control and
identification of DARX processes. Automatica, February 1996.
[11] Michael J. Grimble, Peter Martin. Adaptive Predictive Control with Controllers
of Restricted Structure. Industrial Control Centre. University of Strathclyde.
[12] Alexander Schwarm, S. Alper Eker. Model predictive control and
identification: a new approach to closed-loop identification and adaptive
control. Chemical Engineering Dept. Texas A & M University.
[13] Andrzej Królikowski, Damian Jerzy. Self-tuning generalized predictive control
with input constraints. Int. J. Appl. Math. Comput. Sci., 2001, Vol. 11, No. 2,
459-479.
PARTE II. ESTUDIO
ECONÓMICO
Estudio Económico 118
1 Consideraciones previas
Como ya se ha comentado a lo largo del proyecto, se trata de un estudio simulado de la viabilidad del CPA en sistemas eléctricos de potencia. Así pues, es necesario contar con un programa de simulación potente y un ordenador. Además, como también se ha mencionado a lo largo de este documento, existen muchas consideraciones técnicas y económicas que habría que tener en cuenta para poder hacer un desarrollo comercializable. Supondremos que esto lleva implícito un coste de formación.
Por último, supondremos que el desarrollo del proyecto se concretará en un software que se venderá en forma de licencias de uso, mantenimiento y formación a empresas encargadas de la instalación de AGCs.
2 Coste de desarrollo
Materiales
Matlab ®, Simulink ® 1200 €
PC 800 €
3 Precio del producto
Desarrollo
Formación 1000 €
Mano de obra 40000 €
Total 43000 €
Tipo de licencia
Uso 60000 €
Mantenimiento y post-venta (anual) 1000 €
Formación (anual) 1000 €
PARTE III. MANUAL DE
USUARIO
Manual de usuario. Librerías. 120
LIBRERÍAS
Se muestran a continuación los bloques de Simulink ® desarrollados a lo
largo del proyecto. Estos bloques están organizados en tres librerías, según
funcionalidad.
1 Identificación
Esta librería contiene los desarrollos del apartado 2 del CAPÍTULO 2.
PREDICCIÓN DEL PGCD, es decir, los bloques de identificación recursiva a una o
varias muestas para las distintas representaciones de estado que se han manejado a lo
largo del proyecto.
Identificación a una muestra Identificación a un horizonte dado
Auxiliares
y
y p
theta
rpem_ss_h
y
y p
theta
rpem_ss
y
y p
theta
rpem_fco_h
y
y p
theta
rpem_fco
y
y p
theta
rpem_fcc_h
y
y p
theta
rpem_fcc
y
y p
theta
rpem_RARMA
Presente1 Pasado
Retardo de n muestras
v ec
v ec_retrasado
dif
Gestión entradas
Fig. 54. Librería de Identificación
Manual de usuario. Librerías. 121
Descripción del contenido:
- Identificación a una muestra:
o Rpem_RARMA: emplea la función RARMAX (identificador a una
muestra mediante RPEM) de Matlab ® ([8]). Es útil para
comparaciones.
o Rpem_SS: algoritmo RPEM implantado sobre la representación de
estado SS (creada para el proyecto y que resultó ser una versión de
REFERENCIA para series temporales).
o Rpem_fco: algoritmo RPEM sobre forma canónica de observabilidad.
o Rpem_fcc: algoritmo RPEM sobre forma canónica de controlabilidad.
- Identificación a un horizonte dado:
o Rpem_fco_h: algoritmo RPEM con sensibilidades a más de una
muestra y sobre la FCO.
o Rpem_fcc_h: algoritmo RPEM con sensibilidades a más de una
muestra y sobre la FCC.
o Rpem_ss_h: algoritmo RPEM con sensibilidades a más de una
muestra y sobre SS.
- Auxiliares:
o Retardo de n muestras: memoria, mediante una representación de
estado, de muestras pasadas (gentileza de D. Juan Luis Zamora).
Manual de usuario. Librerías. 122
o Gestión entradas: bloque que facilita la señal, su versión retrasada
(útil para predicción trivial) y la versión incremental.
2 Predicción
Esta librería contiene los desarrollos del apartado 3 del CAPÍTULO 2.
PREDICCIÓN DEL PGCD, es decir, los bloques de predicción iterativa y directa
para las distintas representaciones de estado que se han manejado a lo largo del
proyecto.
Predicción iterativa Predicción directa
y
y p
iden_in
pred_in
predictor_ss_directo
y
theta
y p
iden_in
pred_in
Predictor SS
y
y p
iden_in
pred_in
Predictor FCO directo
y
theta
y p
iden_in
pred_in
Predictor FCO
y
y p
iden_in
pred_in
Predictor FCC directo
y
theta
y p
iden_in
pred_in
Predictor FCC
y
theta
y p
iden_in
pred_in
Predictor Arma
Fig. 55. Librería de predicción
Descripción del contenido:
- Predicción iterativa: estos bloques hacen simplemente una simulación hacia
delante a partir de la entrada y parámetros proporcionados.
Manual de usuario. Librerías. 123
o Predictor Arma: emplea la función RARMAX (identificador y
predictor a una muestra mediante RPEM) de Matlab ® ([8]). Es útil
para comparaciones.
o Predictor SS: utiliza la representación de estado SS (creada para el
proyecto y que resultó ser una versión de la representación de estado
ARMA propuesta en [5], pero para series temporales).
o Predictor FCO: predictor sobre forma canónica de observabilidad.
o Predictor FCC: predictor sobre forma canónica de controlabilidad.
- Predicción directa:
o Predictor FCO directo: identifica los parámetros mediante
Rpem_fco_h (algoritmo RPEM con sensibilidades a más de una
muestra y sobre la FCO) y predice con la misma representación.
o Predictor FCC directo: identifica los parámetros mediante
Rpem_fcc_h (algoritmo RPEM con sensibilidades a más de una
muestra y sobre la FCC) y predice con la misma representación.
o Predictor SS directo: identifica los parámetros mediante Rpem_ss_h
(algoritmo RPEM con sensibilidades a más de una muestra y sobre
SS) y predice con la misma representación.
Manual de usuario. Librerías. 124
3 Control
Esta librería contiene los desarrollos del CAPÍTULO 3. CONTROL
PREDICTIVO-ADAPTATIVO, es decir, los bloques de adaptación, control y AGCs.
Adaptación Control Predictivo
Control Predictivo AdaptativoAuxiliares
r(t+npred)
y (t)
w
r(t)
Trayectoria
deseada
n(t) n
Estimación
Perturbación
df
CRR
NSI
PI
ACE
Cálculo ACE
dtu
dtx
th
K
Calculo de la
ganancia K
Activ ación
y [k+h]
y [k]
max|e[k]|
u[k]
CONTROL
PREDICTIVO
ADAPTATIVO
th[k-1]
y [k]
dtu[k-1]
r(t+npred)
Activ ación
y [k]-y _est[k]
f
f +n
x_est[k-1]
du
w
r(t)
p. obs
CONTROL
PREDICTIVO
PGCD[k]
PGC[k]
Incump
SUM
SUM1
Análisis
incumplimiento
u
y
error
th[k]
y p[k]
Adaptación
Fig. 56. Librería de control predictivo-adaptativo
Manual de usuario. Librerías. 125
Descripción del contenido:
- Adaptación: bloque con el algoritmo de adaptación de 4.2, CAPÍTULO 3.
CONTROL PREDICTIVO-ADAPTATIVO. Se ofrece como bloque aislado
para emplearlo en otros controles, diseños, proyectos...
- Control predictivo: consta de los bloques que componen un control predictivo
(ver 3, CAPÍTULO 3. CONTROL PREDICTIVO-ADAPTATIVO) y de un
bloque que los agrupa.
o Control predictivo: bloque de control que integra a los demás y que
puede ser empleado en cualquier esquema. Tiene numerosas salidas
que ayudan a entender, corregir y modificar lo que sucede durante la
simulación (polos del observador, trayectoria de referencia, estados,
mando...).
o Trayectoria deseada: bloque que permite generar la referencia
deseada (PDT) a partir de la predicción al final del horizonte y de la
salida actual.
o Cálculo de la ganancia: bloque que calcula la salida forzada a partir
del modelo del sistema y obtiene la matriz K (ver 3.3).
o Perturbación: simulador de la perturbación futura a partir de la
estimación actual (error de predicción) y mediante una o dos
integraciones.
- Auxiliares: nos ayudarán a evaluar el comportamiento del CPA en un
esquema real de AGC.
Manual de usuario. Librerías. 126
o Cálculo del ACE: este bloque hace los cálculos que tiene en cuenta el
AGC para generar su consigna (ver 2, en el CAPÍTULO 1.
INTRODUCCIÓN).
o Análisis incumplimiento: bloque que hace los cálculos de REE para
evaluar el correcto funcionamiento del AGC (ver 5.2 en CAPÍTULO
3. CONTROL PREDICTIVO-ADAPTATIVO).
- Control predictivo-adaptativo: bloque que integra las herramientas de
adaptación y control predictivo, objeto final del proyecto.
En el siguiente apartado profundizaremos un poco más en estas librerías para
comprender los parámetros de los bloques y su funcionamiento.
Manual de usuario. Manejo de las librerías. 127
MANEJO DE LAS LIBRERÍAS
Este apartado pretende dar una visión más o menos en profundidad de lo que
hacen los bloques de las librerías y de sus posibilidades.
1 Identificación
Se trata de la librería mostrada en la figura Fig. 54.
1.1 Identificación a una muestra
1.1.1 RPEM_RARMA
Este bloque no es más que la función RARMAX de Matlab ® (salvo por los
complementos necesarios). Así, los parámetros de la máscara del bloque son:
- Orden del denominador: el del polinomio A(q) en A(q).yk= C(q). ek , o lo que
es lo mismo, el número de muestras pasadas de la salida que se considera que
intervienen en el filtro.
- Orden del numerador: el del polinomio C(q) en A(q).yk= C(q). ek , o lo que es
lo mismo, el número de muestras pasadas del ruido blanco que se considera
que intervienen en el filtro. Debe ser menor o igual que el del denominador
(debe ser propia). Es importante recordar que el filtro es mónico, es decir,
A(q)=1+a1.q-1+...+am.q
-m y C(q)=1+c1.q
-1+...+cn.q
-n.
Manual de usuario. Manejo de las librerías. 128
- Factor de olvido (lambda, l): su definición y sentido se vio en 2.1.4.1, en
CAPÍTULO 2. PREDICCIÓN DEL PGCD.
- Sigma inicial: es una medida de la confianza que se tiene en los parámetros
iniciales (la matriz de covarianzas es la matriz identidad multiplicada por este
factor). Suele ser un valor elevado (104).
- Parámetros iniciales: esta lista desplegable permite elegir el tipo de
parámetros iniciales deseados entre (a priori, ninguna opción es mejor que las
otras):
o Nulos
o Aleatorios estables: selecciona los polos y ceros de manera aleatoria,
garantizando que son estables y no muy rápidos.
o Fijos estables: distribuye los polos y ceros de forma que el filtro
inicial es estable y los polos son lentos.
Este bloque tiene una entrada que es la salida del sistema y dos salidas: los
parámetros identificados y la salida predicha para la muestra siguiente.
1.1.2 RPEM_FCC
Básicamente tiene la misma funcionalidad, entradas y salidas y los mismos
parámetros de máscara que el anterior, salvo que se añaden los siguientes:
- Forzar A estable: permite elegir el método de estabilización del filtro entre
FSTAB, REDUC (reducción de paso) o ninguno, cuya discusión se vio en
4.1.1, CAPÍTULO 2. PREDICCIÓN DEL PGCD. Se recomienda forzar la
estabilidad con alguno de los 2 métodos.
Manual de usuario. Manejo de las librerías. 129
- Actualizar estados con th[k]: casilla de verificación que indica si se deben
recalcular los estados y sensibilidades del identificador al obtener los nuevos
parámetros (usando el error de predicción a posteriori). No existe mucha
diferencia entre seleccionarla o no (recordemos que, en cualquier caso, no
puede reproducir de forma exacta los pasos de RARMAX).
Este bloque es exactamente igual que RPEM_FCO, por lo que no
mostraremos éste. Por otro lado, sí existe diferencia con RPEM_SS, pero ésta
consiste simplemente en que no se muestra la casilla de verificación de actualización
de estados. En este caso, la representación SS no deja lugar a dudas sobre los estados
y derivadas del identificador.
1.2 Identificación a un horizonte dado
Los tres bloques son prácticamente idénticos, por lo que sólo comentaremos
uno de ellos (Rpem_fcc_h). Dicho bloque tiene los mismos parámetros que el bloque
del identificador a una muestra Rpem_fcc (1.1.2), pero a éstos se le añaden:
- Horizonte de minimización: es el horizonte en el que se calculan las
sensibilidades y, por tanto, el horizonte del error que se minimiza en este
bloque para obtener los parámetros.
- Tipo de derivación: permite calcular las sensibilidades por el método de las
diferencias finitas o analíticamente (Apéndice B. Cálculo de sensibilidades),
si bien se recomienda no usar el método analítico, que implica más cálculos y
no aporta ventajas.
- Asegurar predictor estable: si se activa esta opción, garantiza que los
parámetros identificados son tales que el predictor que resulta de ellos tiene
polos dentro del círculo unidad.
Manual de usuario. Manejo de las librerías. 130
A este bloque se le proporciona la salida del sistema y devuelve los
parámetros y la predicción de la salida para la muestra siguiente.
1.3 Auxiliares
El bloque Retardo de n muestras (gentileza de D. Juan Luis Zamora) tiene
como único parámetro el número de muestras a retardar. La salida que proporciona
es la entrada retrasada n muestras.
Por otro lado, el bloque Gestión de entradas tiene dos parámetros: el nombre
del vector de datos (sólo datos, una única columna) y el número de muestras de
retardo. Ofrece tres salidas: los datos del vector, su versión incremental a una
muestra y su versión retrasada.
2 Predicción
Es la librería de la figura Fig. 55.
2.1 Predicción Iterativa
A pesar de que existen cuatro bloques, todos tienen la misma máscara y
propiedades, por lo que no nos centraremos en ningun en concreto. En dicha máscara
encontramos los siguientes parámetros:
Manual de usuario. Manejo de las librerías. 131
- Orden del denominador: el del polinomio A(q) en A(q).yk= C(q). ek , o lo que
es lo mismo, el número de muestras pasadas de la salida que se considera que
intervienen en el filtro.
- Orden del numerador: el del polinomio C(q) en A(q).yk= C(q). ek , o lo que es
lo mismo, el número de muestras pasadas del ruido blanco que se considera
que intervienen en el filtro. Debe ser menor que el del denominador (debe ser
propia). Es importante recordar que el filtro es mónico, es decir,
A(q)=1+a1.q-1+...+am.q
-m y C(q)=1+c1.q
-1+...+cn.q
-n.
- Horizonte de predicción: el número de muestras a las que se hará la
predicción (ŷk+h).
- Salida: es una lista desplegable que permite elegir que la salida sea un vector
con las predicciones desde ŷk+1 hasta ŷk+h o sólo este último valor.
- Entrada diferencial: le indica al predictor si las predicciones son
incrementales o no. En cualquier caso, la salida es la predicción absoluta, ya
que en caso de marcar esta opción, los incrementos se acumulan.
- Estado inicial: permite elegir entre realimentado o nulo. Son las condiciones
iniciales del predictor, que pueden ser nulos o los procedentes de la muestra
anterior.
Los bloques reciben los parámetros y la salida actual y devuelven la o las
predicciones. También están provistos de unos flags (iden_in y pred_in) que indican
si los parámetros corresponden a un filtro inestable o suponen un predictor inestable.
Manual de usuario. Manejo de las librerías. 132
2.2 Predicción directa
Nuevamente, los bloques tienen la misma máscara, por lo que no nos
centraremos en ninguno en concreto.
Puesto que estos predictores incorporan una identificación a un horizonte
dado, podemos encontrar los parámetros de los identificadores rpem_x_h (1.2), es
decir, órdenes de numerador y denominador, horizonte de minimización (que en este
caso coincide con el horizonte de predicción), factor de olvido, actualización de
estados, etc. No se deja abierta la posibilidad de no forzar la estabilidad del predictor,
por lo que en la llamada al identificador, se activa el flag Forzar predictor estable.
Por otro lado, también incluye los parámetros de la parte del predictor:
- Si inestable, recuperar theta: permite recuperar los últimos parámetros
estables o determinar unos nuevos si la identificación da un filtro inestable.
Es una protección adicional en caso de no forzar la estabilidad del predictor
(cosa que se hace por código sin permitir al usuario cambiarlo, por lo que esta
comprobación es redundante y sólo serviría si se cambiase el código).
- Si inestable recalcular estados: permite recalcular los estados del identificador
con los parámetros estables recuperados, si es que el predictor o el filtro
identificado son inestables (nuevamente esto sólo sirve si se cambia el código
en la llamada al identificador para no forzar la estabilidad del predictor).
Como se puede ver, se ha dotado a estos bloques de múltiples posibilidades.
Sin embargo, no es fácil determinar las ventajas de cada opción, por lo que deberá
probarse en cada caso concreto.
Manual de usuario. Manejo de las librerías. 133
3 Control
Comentamos ahora los bloques de la librería de la figura Fig. 56.
3.1 Adaptación
Este bloque recibe la salida real del sistema y la entrada aplicada al mismo,
así como una cota del error permitido (que puede ser constante o no). Mediante el
algoritmo de adaptación explicado en 4.2, CAPÍTULO 3. CONTROL
PREDICTIVO-ADAPTATIVO, se ofrecen como salidas el valor de la salida
estimada con los parámetros adaptados y dichos parámetros. Según el sistema sobre
el que se aplique (si tiene retardos o no) es posible que las entradas al bloque sean los
valores de y y de u para instantes de tiempo distintos (para evitar lazos algebraicos).
Los parámetros que encontramos en la máscara son:
- Orden del denominador: el número de muestras pasadas de la salida que
intervienen en el cálculo de la salida acual (A(q)=1+a1.q-1+...+am.q
-m).
- Orden del numerador: el número de muestras pasadas del mando que
intervienen en el cálculo de la salida acual (B(q)=b1.q-1+...+bn.q
-n).
- Parámetros iniciales: como en el caso de la identificación, éstos podrán ser
nulos, aleatorios estables o fijos estables.
- Delta: es un parámetro que interviene en el algoritmo y que influye
directamente en la cota de error permitido para no actualizar los parámetros.
Su valor debe ser determinado empíricamente en cada caso.
Manual de usuario. Manejo de las librerías. 134
- C: otro parámetro del algoritmo, relacionado con la velocidad de adaptación.
Se determinará experimentalmente.
- Modelar incrementos: si esta opción está activada, se trabaja con las
versiones incrementales de entradas y mandos. Sin embargo, la salida
estimada es siempre absoluta.
3.2 Control predictivo
3.2.1 Trayectoria deseada
- Vector de puntos de coincidencia: es un vector con los puntos en los que se
planteará la minimización de la función objetivo (3.3 en CAPÍTULO 3.
CONTROL PREDICTIVO-ADAPTATIVO). El último punto deberá
coincidir con el horizonte de predicción.
- Alfa: factor de velocidad de la trayectoria de referencia. Es la constante de
tiempo si el filtro aplicado es de primer orden.
- Horizonte de predicción
- Tipo de filtro para w: permite elegir entre un filtro de primer orden (1) y otro
(2), que llamamos complejo en 3.2 del CAPÍTULO 3. CONTROL
PREDICTIVO-ADAPTATIVO. En principio, ninguno es claramente mejor
opción.
- Mantener referencia constante: indica si en el horizonte de predicción se
mantendrá una memoria de las predicciones pasadas (1), si se considerará una
predicción constante e igual al último valor predicho (2) o si será constante e
igual a la referencia actual (3). Este último caso hace que desaparezcan las
Manual de usuario. Manejo de las librerías. 135
características predictivas, ya que no se adelanta a la señal (la referencia en
todo momento es la actual).
Estos dos últimos parámetros son valores numéricos, ya que el bloque está
pensado para formar parte de otros bloques, cuyas máscaras tendrán estas opciones
como lista desplegable y rellenarán automáticamente la máscara de la Trayectoria
deseada.
El bloque recibe la predicción de la referencia dentro de un número de
muestras igual al horizonte de predicción y recibe también la salida actual del
sistema, que es de donde parte la trayectoria deseada. Las salidas de este bloque son
la secuencia de referencias dentro del horizonte (w) y la referencia actual.
3.2.2 Cálculo de la ganancia K
Este bloque tiene el grueso de la minimización de la función objetivo (3.3 en
CAPÍTULO 3. CONTROL PREDICTIVO-ADAPTATIVO). Sus parámetros son:
- Orden del polinomio A: el número de muestras pasadas de la salida que
intervienen en el cálculo de la salida acual (A(q)=1+a1.q-1+...+am.q
-m).
- Orden del polinomio B: el número de muestras pasadas del mando que
intervienen en el cálculo de la salida acual (B(q)=b1.q-1+...+bn.q
-n).
- Número de funciones base: el número de polinomios que intervienen en el
mando (Fig. 29 en 3.1 del CAPÍTULO 3. CONTROL PREDICTIVO-
ADAPTATIVO).
- Vector de puntos de coincidencia
Manual de usuario. Manejo de las librerías. 136
- Peso del mando en J: es una constante que permite pesar los incrementos de
mando en la función objetivo, tratando así de minimizarlos. Su valor deberá
ser estudiado experimentalmente en cada caso.
- Horizonte de control: es un instante de tiempo (siempre dentro del horizonte
de predicción) a partir del cual no se aplica más mando y se deja que el
sistema evolucione libremente (en la simulación hacia delante del cálculo de
la secuencia de mandos futuros que se hace en cada muestra). Está limitado
por código al horizonte de predicción.
El bloque recibe el mando, los parámetros del modelo de predicción y los
estados de dicho modelo, que, aunque actualmente no se usan, podrían emplearse
como estados iniciales para la simulación de la respuesta forzada. La salida es una
matriz, K, de dimensiones [número de funciones base x número de puntos de
coincidencia].
3.2.3 Estimación de la perturbación
Este bloque contiene la simulación, mediante un predictor (una o dos
integraciones como modelo), de la perturbación en el horizonte de predicción y a
partir de la estimación del ruido en la muestra actual (3.1 en CAPÍTULO 3.
CONTROL PREDICTIVO-ADAPTATIVO). Sus parámetros son el vector de puntos
de coincidencia y el tipo de integración (es un valor numérico -1 para integración
simple, 2 para doble- pensado para cambiarse desde máscaras de más alto nivel).
Recibe como entrada la estimación actual del ruido y devuelve la predicción en todo
el horizonte.
Manual de usuario. Manejo de las librerías. 137
3.2.4 Control predictivo
Este bloque integra el resto de bloques del apartado, por lo que en su máscara
se encuentran los parámetros comentados en a lo largo de este apartado 3. Además
encontramos una casilla de verificación que indica si se debe tener en cuenta el
cálculo de la perturbación o no. No existe mucha diferencia entre tenerlo en cuenta o
no.
Por otro lado, el bloque tiene otra parte importante del control predictivo y
que no existe como bloque independiente: el estimador de estado (3.1 en el
CAPÍTULO 3. CONTROL PREDICTIVO-ADAPTATIVO).
En cuanto a las entradas y salidas, se ha dotado a este bloque de multitud de
ellas para ver parte de los elementos internos. Así, encontramos:
- Entradas:
o Th[k-1]: parámetros identificados para el modelo de predicción y
cálculo de la ganancia.
o Y[k]: salida del sistema en la muestra actual.
o Dtu[k-1]: mando calculado en la muestra anterior.
o R[k+npred]: predicción para la referencia futura.
o Activación: flag que habilita el control. Se usa para no empezar los
cálculos hasta estar en un punto de equilibrio.
- Salidas:
o Y[k]-Y_est[k]: estimación del ruido en la muestra actual, que se usa
para estimar la perturbación futura.
o F: respuesta libre del sistema en todo el horizonte de predicción.
Manual de usuario. Manejo de las librerías. 138
o F+n: respuesta libre del sistema más estimación de la perturbación en
todo el horizonte de predicción.
o X_est[k-1]: estados estimados del modelo de predicción.
o Du: mando calculado.
o W: trayectoria de referencia calculada para el horizonte de predicción.
o R[k]: referencia actual.
o P. Obs: polos del observador usado en la estimación de la repuesta
libre.
3.3 Control predictivo adaptativo
Este bloque integra los bloques comentados hasta el momento de adaptación
y control predictivo. Como resultado, encontramos los mismos parámetros de
máscara que en los bloques de adaptación y control predictivo. Además, existen
otros:
- Velocidad de adaptación: como es sabido en teoría de control, es necesario
que el lazo de adaptación sea mucho más lento que el de control (para evitar
problemas de estabilidad). Así pues, se da la posibilidad de fijar aquí un
tiempo de muestreo para los parámetros (con el que se leen desde el control
predictivo los parámetros que salen de la adaptación) mayor que el del resto
del sistema. Este muestreo, junto con las constantes del algoritmo de
adaptación deben asegurar que este lazo es más lento que el de control.
- Saturación de los incrementos de mando: se ofrece la posibilidad de poner
unos límites a los incrementos de mando calculados por el control. Los
valores dependerán de la aplicación.
- Acumular mando: el bloque de control predictivo trabaja con modelos
incrementales respecto de la trayectoria, por lo que el mando calculado es
Manual de usuario. Manejo de las librerías. 139
incremental. Con esta casilla de verificación se permite acumular dichos
incrementos, de tal forma que la salida del control predictivo adaptativo sea el
mando absoluto que hay que aplicar. Por otro lado, según el sistema, puede
interesar no hacer esta acumulación (si el sistema la hace internamente, como
en el caso del bloque del AGC).
Otra diferencia con el control predictivo es que se ha limitado el número de
salidas, por claridad, al mando calculado (incremental o acumulado). El bloque
recibe como entradas la salida actual, y[k], la predicción de la referencia futura,
r[k+npred], la activación y una cota del error permitido en la adaptación (se deja
como entrada por si se quiere hacer dependiente de algún bloque externo).
3.4 Auxiliares
Estos bloques no pertenecen al control predictivo-adaptativo y tienen más
relación con la parte eléctrica. Sin embargo, se incorporaron a esta librería por su
utilidad. Se trata, por un lado, del cálculo del ACE (recibe el desvío de frecuencia, el
CRR, el programa de generación y la potencia total generada por la zona) y devuelve
el ACE según Ec. 2. Por otro lado, existe otro bloque que analiza el incumplimiento
del AGC según 5.2 del CAPÍTULO 3. CONTROL PREDICTIVO-ADAPTATIVO.
El bloque recibe el PGCD y el PGC y devuelve las señales que se evalúan para ver el
incumplimiento (SUM1 y SUM), así como un flag que indica si se ha superado el AT.
Los parámetros de este bloque son el periodo de muestreo de la RCP (en segundos),
las constantes de tiempo, en segundos, de los filtros para el SUM1 y el SUM y el AT,
en MW.
Manual de usuario. Código. 140
CÓDIGO
Se presenta a continuación el código de los bloques más significativos.
1 Identificación
1.1 Identificación a una muestra
1.1.1 RPEM_RARMA
function out = rpem_rarma(y,z,m,n,lambda)
%rpem_rarma: devuelve la identificacion a una muestra mediante la
funcion
%RARMAX aplicada a series temporales (A(q).y[k]=C(q)*e[k]). Es
decir,
%proporciona los parametros del filtro identificado y la salida
predicha
%a una muestra.
%y: salida actual del sistema,
%z: estados internos del identificador (regresores,
sensibilidades...),
%m: orden del denominador (C(q)),
%n: orden del denominador (A(q)),
%lambda: factor de olvido.
rth=z(1:m+n);
rp=[];
for i=0:n+m-1
rp=[rp z((n+m)+1+(m+n)*i:(n+m)+(m+n)*i+(m+n))];
end
l=3*n+(m-n)*(m>n);
rfi=z((n+m)+(m+n)*(n+m-1)+(m+n)+1:(n+m)+(m+n)*(n+m-1)+(m+n)+l);
Manual de usuario. Código. 141
rpsi=z((n+m)+(m+n)*(n+m-1)+(m+n)+l+1:(n+m)+(m+n)*(n+m-1)+(m+n)+l+l);
[rth,yp,rp,rfi,rpsi]=rarmax(y,[m n],'ff',lambda,rth,rp,rfi,rpsi);
z=[rth,rp(:)',rfi',rpsi'];
out=[yp rth z];
end
1.1.2 RPEM_FCC
function out = rpem_fcc(y,z,m,n,lambda,aest,act)
%Algoritmo recursivo de identificacion de parametros, basado en el
metodo
%del error de prediccion (PEM) y en forma canonica de
controlabilidad como
%representacion de estado de trabajo. Trabaja con series temporales,
es
%decir, A(q).y[k]=C(q).e[k], siendo e[k] un ruido blanco.
% ENTRADAS:
% y: Salida real del sistema
% z: Vector de estados del predictor (estados del modelo,
sensibilidades, parametros...)
% m: orden del polinomio A
% n: orden del polinomio C
% lambda: factor de olvido (ventana exponencial)
% aest: metodo de estabilizar el polinomio A (Ninguno, FSTAB,
Reduccion
% de paso)
% act: flag que indica si se deben actualizar los estados al conocer
los
% nuevos parametros
% SALIDAS:
% yp: prediccion de y[k] a priori (con parametros en k-1 y estado en
k
% estimado en k-1)
% tta: parametros en k
global maux;
Manual de usuario. Código. 142
estados=m;
xp=z(1:estados);
dxp=z(estados+1:estados+estados*(n+m));
dxp_sig=dxp;
theta_ant=z(estados+estados*(n+m)+1:estados+estados*(n+m)+n+m)';
%x=estados del algoritmo=[[xp] [dxp] [theta] [P]]
P_ant=[];
for i=0:n+m-1
P_ant=[P_ant
z(estados+(estados*(n+m))+(n+m)+1+(m+n)*i:estados+(estados*(n+m))+(n
+m)+(m+n)*i+(m+n))];
end
P=P_ant;
%Lectura de sensibilidades
psi_mio=z(estados+(estados*(n+m))+(n+m)+power(m+n,2)+1:estados+(esta
dos*(n+m))+(n+m)+power(m+n,2)+(m+n));
%Solo en las formas canonicas:
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
xp_ant=z(estados+(estados*(n+m))+(n+m)+power(m+n,2)+(m+n)+1:estados+
(estados*(n+m))+(n+m)+power(m+n,2)+(m+n)+estados);
dxp_ant=z(estados+(estados*(n+m))+(n+m)+power(m+n,2)+(m+n)+estados+1
:estados+(estados*(n+m))+(n+m)+power(m+n,2)+(m+n)+estados+estados*(m
+n));
y_ant=z(estados+(estados*(n+m))+(n+m)+power(m+n,2)+(m+n)+estados+est
ados*(m+n)+1);
if n>maux
theta_ant(maux+1:n)=0;
dxp_ant(1+maux*m:maux*m+m*(n-maux))=0;
dxp(1+maux*m:maux*m+m*(n-maux))=0;
psi_mio(1+maux:maux+(n-maux))=0;
P(1+maux:maux+(n-maux),1+maux:maux+(n-maux))=0;
P_ant(1+maux:maux+(n-maux),1+maux:maux+(n-maux))=0;
end
Manual de usuario. Código. 143
%MATRICES
[A_ant C_ant K_ant D_ant]=matrices_fcc_z(m,m,[1 theta_ant(1:m) 1
theta_ant(m+1:end) zeros(1,m-n)]);
%salida predicha
yp=C_ant*xp;
%error prediccion
epsilon_mio=y-yp;
L=P_ant*psi_mio/(lambda + psi_mio'*P_ant*psi_mio);
switch aest
case 1,
theta=theta_ant + (L*epsilon_mio)';
auxC=[1 theta(m+1:m+n)];
auxC=FSTAB(auxC);
theta(m+1:m+n)=auxC(2:length(auxC));
case 2,
theta=theta_ant + (L*epsilon_mio)';
auxC=[1 theta(m+1:m+n)]; %los m primeros parametros son ai;
los n siguientes, ci
auxC=FSTAB(auxC);
theta(m+1:m+n)=auxC(2:length(auxC));
auxA=[1 theta(1:m)];
auxA=FSTAB(auxA);
theta(1:m)=auxA(2:length(auxA));
case 3,
mu=2;
inestable=1;
while inestable
mu=mu/2;
theta=theta_ant + mu*(L*epsilon_mio)';
inestable=(any(abs(roots([1 theta(m+1:m+n)]))>=1) |
any(abs(roots([1 theta(1:m)]))>=1)) & mu>0.005;
end
end
Manual de usuario. Código. 144
if n>maux
theta(maux+1:n)=0;
end
%MATRICES
[A C K D]=matrices_fcc_z(m,m,[1 theta(1:m) 1 theta(m+1:end)
zeros(1,m-n)]);
%actualizacion matriz covarianzas
P=(P_ant-L*psi_mio'*P_ant)/lambda;
%actualizacion estados y derivadas
if act==1
xp=A*xp_ant+K*(y_ant-C_ant*xp_ant);
for i=0:1
for j=1+i*m:m+i*n
nd=j+1;
[A C K D dA dC dK]=matrices_fcc_z(m,m,[1 theta(1:m) 1
theta(m+1:end) zeros(1,m-n)],nd);
dxp((j-1)*estados+1:(j-1)*estados+estados)=(A-
K*C)*dxp_ant((j-1)*estados+1:(j-1)*estados+estados)+(dA-dK*C-
K*dC)*xp_ant+dK*y_ant;
end
end
if n>maux
dxp(1+maux*m:maux*m+m*(n-maux))=0;
end
end
%estados predictor T siguiente
xp_sig=(A-(K*C))*xp + K*y;
%derivadas xp(k+1)
for i=0:1
for j=1+i*m:m+i*n
nd=j+1;
[A C K D dA dC dK]=matrices_fcc_z(m,m,[1 theta(1:m) 1
theta(m+1:end) zeros(1,m-n)],nd);
Manual de usuario. Código. 145
dxp_sig((j-1)*estados+1:(j-1)*estados+estados)=(A-
K*C)*dxp((j-1)*estados+1:(j-1)*estados+estados)+(dA-dK*C-
K*dC)*xp+dK*y;
end
end
if n>maux
dxp_sig(1+maux*m:maux*m+m*(n-maux))=0;
end
%Calculo de sensibilidades k+1
%i=0-> parametros ai, (j=1->coeficientes ci)
psi_sig=[];
for i=0:1
for j=1+i*m:m+i*n
%DERIVADAS DE MATRICES
nd=j+1;
[A C K D dA dC dK]=matrices_fcc_z(m,m,[1 theta(1:m) 1
theta(m+1:end) zeros(1,m-n)],nd);
psi_sig=[psi_sig;C*dxp_sig((j-1)*estados+1:(j-
1)*estados+estados)+dC*xp_sig];
end
end
if n>maux
psi_sig(1+maux:maux+(n-maux))=0;
end
z = [xp_sig;dxp_sig;theta';P(:);psi_sig;xp;dxp;y];
if n>maux
tta=[theta(1:maux) theta(m+1:m+n)];
else
tta=theta;
end
out=[yp tta z'];
Manual de usuario. Código. 146
1.1.3 RPEM_FCO
function out = rpem_fco(y,z,m,n,lambda,aest,act)
%Algoritmo recursivo de identificacion de parametros, basado en el
metodo
%del error de prediccion (PEM) y en forma canonica de
controlabilidad como
%representacion de estado de trabajo. Trabaja con series temporales,
es
%decir, A(q).y[k]=C(q).e[k], siendo e[k] un ruido blanco.
% ENTRADAS:
% y: Salida real del sistema
% z: Vector de estados del predictor (estados del modelo,
sensibilidades, parametros...)
% m: orden del polinomio A
% n: orden del polinomio C
% lambda: factor de olvido (ventana exponencial)
% aest: metodo de estabilizar el polinomio A (Ninguno, FSTAB,
Reduccion
% de paso)
% act: flag que indica si se deben actualizar los estados al conocer
los
% nuevos parametros
% SALIDAS:
% yp: prediccion de y[k] a priori (con parametros en k-1 y estado en
k
% estimado en k-1)
% tta: parametros en k
global maux;
estados=m;
xp=z(1:estados);
dxp=z(estados+1:estados+estados*(n+m));
dxp_sig=dxp;
theta_ant=z(estados+estados*(n+m)+1:estados+estados*(n+m)+n+m)';
%x=estados del algoritmo=[[xp] [dxp] [theta] [P]]
P_ant=[];
for i=0:n+m-1
Manual de usuario. Código. 147
P_ant=[P_ant
z(estados+(estados*(n+m))+(n+m)+1+(m+n)*i:estados+(estados*(n+m))+(n
+m)+(m+n)*i+(m+n))];
end
P=P_ant;
%Lectura de sensibilidades
psi_mio=z(estados+(estados*(n+m))+(n+m)+power(m+n,2)+1:estados+(esta
dos*(n+m))+(n+m)+power(m+n,2)+(m+n));
%Solo en las formas canonicas:
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
xp_ant=z(estados+(estados*(n+m))+(n+m)+power(m+n,2)+(m+n)+1:estados+
(estados*(n+m))+(n+m)+power(m+n,2)+(m+n)+estados);
dxp_ant=z(estados+(estados*(n+m))+(n+m)+power(m+n,2)+(m+n)+estados+1
:estados+(estados*(n+m))+(n+m)+power(m+n,2)+(m+n)+estados+estados*(m
+n));
y_ant=z(estados+(estados*(n+m))+(n+m)+power(m+n,2)+(m+n)+estados+est
ados*(m+n)+1);
if n>maux
theta_ant(maux+1:n)=0;
dxp_ant(1+maux*m:maux*m+m*(n-maux))=0;
dxp(1+maux*m:maux*m+m*(n-maux))=0;
psi_mio(1+maux:maux+(n-maux))=0;
P(1+maux:maux+(n-maux),1+maux:maux+(n-maux))=0;
P_ant(1+maux:maux+(n-maux),1+maux:maux+(n-maux))=0;
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%MATRICES
[A_ant C_ant K_ant D_ant]=matrices_fco_z(m,m,[1 theta_ant(1:m) 1
theta_ant(m+1:end) zeros(1,m-n)]);
%salida predicha
yp=C_ant*xp;
Manual de usuario. Código. 148
%error prediccion
epsilon_mio=y-yp;
L=P_ant*psi_mio/(lambda + psi_mio'*P_ant*psi_mio);
switch aest
case 1,
theta=theta_ant + (L*epsilon_mio)';
auxC=[1 theta(m+1:m+n)];
auxC=FSTAB(auxC);
theta(m+1:m+n)=auxC(2:length(auxC));
case 2,
theta=theta_ant + (L*epsilon_mio)';
auxC=[1 theta(m+1:m+n)]; %los m primeros parametros son ai;
los n siguientes, ci
auxC=FSTAB(auxC);
theta(m+1:m+n)=auxC(2:length(auxC));
auxA=[1 theta(1:m)];
auxA=FSTAB(auxA);
theta(1:m)=auxA(2:length(auxA));
case 3,
mu=2;
inestable=1;
while inestable
mu=mu/2;
theta=theta_ant + mu*(L*epsilon_mio)';
inestable=(any(abs(roots([1 theta(m+1:m+n)]))>=1) |
any(abs(roots([1 theta(1:m)]))>=1)) & mu>0.005;
end
end
if n>maux
theta(maux+1:n)=0;
end
%MATRICES
Manual de usuario. Código. 149
[A C K D]=matrices_fco_z(m,m,[1 theta(1:m) 1 theta(m+1:end)
zeros(1,m-n)]);
%actualizacion matriz covarianzas
P=(P_ant-L*psi_mio'*P_ant)/lambda;
%actualizacion estados y derivadas
if act==1
xp=A*xp_ant+K*(y_ant-C_ant*xp_ant);
for i=0:1
for j=1+i*m:m+i*n
%DERIVADAS DE MATRICES
nd=j+1;
[A C K D dA dC dK]=matrices_fco_z(m,m,[1 theta(1:m) 1
theta(m+1:end) zeros(1,m-n)],nd);
dxp((j-1)*estados+1:(j-1)*estados+estados)=(A-
K*C)*dxp_ant((j-1)*estados+1:(j-1)*estados+estados)+(dA-dK*C-
K*dC)*xp_ant+dK*y_ant;
end
end
if n>maux
dxp(1+maux*m:maux*m+m*(n-maux))=0;
end
end
%estados predictor T siguiente
xp_sig=(A-(K*C))*xp + K*y;
%derivadas xp(k+1)
for i=0:1
for j=1+i*m:m+i*n
%DERIVADAS DE MATRICES
nd=j+1;
[A C K D dA dC dK]=matrices_fco_z(m,m,[1 theta(1:m) 1
theta(m+1:end) zeros(1,m-n)],nd);
dxp_sig((j-1)*estados+1:(j-1)*estados+estados)=(A-
K*C)*dxp((j-1)*estados+1:(j-1)*estados+estados)+(dA-dK*C-
K*dC)*xp+dK*y;
Manual de usuario. Código. 150
end
end
if n>maux
dxp_sig(1+maux*m:maux*m+m*(n-maux))=0; %creo que no hace falta,
porque dxp=0 siempre
end
%Calculo de sensibilidades k+1
%i=0-> parametros ai, (j=1->coeficientes ci)
psi_sig=[];
for i=0:1
for j=1+i*m:m+i*n
%DERIVADAS DE MATRICES
nd=j+1;
[A C K D dA dC dK]=matrices_fco_z(m,m,[1 theta(1:m) 1
theta(m+1:end) zeros(1,m-n)],nd);
psi_sig=[psi_sig;C*dxp_sig((j-1)*estados+1:(j-
1)*estados+estados)+dC*xp_sig];
end
end
if n>maux
psi_sig(1+maux:maux+(n-maux))=0;
end
z = [xp_sig;dxp_sig;theta';P(:);psi_sig;xp;dxp;y];
if n>maux
tta=[theta(1:maux) theta(m+1:m+n)];
else
tta=theta;
end
out=[yp tta z'];
Manual de usuario. Código. 151
1.1.4 RPEM_SS
function out = rpem_ss(y,z,m,n,lambda,aest)
%Algoritmo de identificacion de parametros mediante metodo del error
de
%prediccion, aplicado a una representacion de estado no minima que
llamamos
%SS, que es una variacion para series temporales de la
representacion ARMA
% (ver Franklin, Powell "Digital control of Dynamic Systems")
obtenida a partir de
%RARMAX, pero intenta conseguir las sensibilidades a partir de
%las derivadas de las matrices de estado.
%Algoritmo recursivo de identificacion de parametros, basado en el
metodo
%del error de prediccion (PEM) y en forma canonica de
controlabilidad como
%representacion de estado de trabajo. Trabaja con series temporales,
es
%decir, A(q).y[k]=C(q).e[k], siendo e[k] un ruido blanco.
% ENTRADAS:
% y: Salida real del sistema
% z: Vector de estados del predictor (estados del modelo,
sensibilidades, parametros...)
% m: orden del polinomio A
% n: orden del polinomio C
% lambda: factor de olvido (ventana exponencial)
% aest: metodo de estabilizar el polinomio A (Ninguno, FSTAB,
Reduccion
% de paso)
% SALIDAS:
% yp: prediccion de y[k] a priori (con parametros en k-1 y estado en
k
% estimado en k-1)
% theta: parametros en k
xp=z(1:m+n);
theta_ant=z(m+n+1:(n+m)+n+m)';
dxp=z(m+n+(n+m)+1:m+n+(n+m)+power(m+n,2));
Manual de usuario. Código. 152
P_ant=[];
for i=0:n+m-1
P_ant=[P_ant
z(m+n+(n+m)+power(m+n,2)+1+(m+n)*i:m+n+(n+m)+power(m+n,2)+(m+n)*i+(m
+n))];
end
P=P_ant;
%Lectura de sensibilidades
psi=z(m+n+(n+m)+2*power(m+n,2)+1:m+n+(n+m)+2*power(m+n,2)+(m+n));
[A C K D]=matrices_ss_z(m,m,[1 theta_ant(1:m) 1 theta_ant(m+1:end)
zeros(1,m-n)]);
%salida predicha
yp=C*xp;
%error prediccion
epsilon_mio=y-yp;
L=P_ant*psi/(lambda + psi'*P_ant*psi);
switch aest
case 1,
theta=theta_ant + (L*epsilon_mio)';
auxC=[1 theta(m+1:m+n)];
auxC=FSTAB(auxC);
theta(m+1:m+n)=auxC(2:length(auxC));
case 2,
theta=theta_ant + (L*epsilon_mio)';
auxC=[1 theta(m+1:m+n)]; %los m primeros parametros son ai;
los n siguientes, ci
auxC=FSTAB(auxC);
theta(m+1:m+n)=auxC(2:length(auxC));
auxA=[1 theta(1:m)];
auxA=FSTAB(auxA);
theta(1:m)=auxA(2:length(auxA));
Manual de usuario. Código. 153
case 3,
mu=2;
inestable=1;
while inestable
mu=mu/2;
theta=theta_ant + mu*(L*epsilon_mio)';
inestable=(any(abs(roots([1 theta(m+1:m+n)]))>=1) |
any(abs(roots([1 theta(1:m)]))>=1)) & mu>0.005;
end
end
[A C K D]=matrices_ss_z(m,m,[1 theta(1:m) 1 theta(m+1:end)
zeros(1,m-n)]);
%actualizacion matriz covarianzas
P=(P_ant-L*psi'*P_ant)/lambda;
%error prediccion a posteriori
epsilon=y-C*xp;
%estados predictor T siguiente
xp_sig=A*xp + K*epsilon;
%sensibilidades
for i=0:1
for j=1+i*m:m+i*n
nd=j+1;
[A C K D dA dC dK]=matrices_ss_z(m,m,[1 theta(1:m) 1
theta(m+1:end) zeros(1,m-n)],nd);
dxp_sig((j-1)*(m+n)+1:(j-1)*(m+n)+m+n,1)=(A-K*C)*dxp((j-
1)*(m+n)+1:(j-1)*(m+n)+m+n)+(dA-K*dC-dK*C)*xp;
end
end
psi_aux=[];
for i=0:1
for j=1+i*m:m+i*n
nd=j+1;
Manual de usuario. Código. 154
[A C K D dA dC dK]=matrices_ss_z(m,m,[1 theta(1:m) 1
theta(m+1:end) zeros(1,m-n)],nd);
psi_aux=[psi_aux;dC*xp_sig+C*dxp_sig((j-1)*(m+n)+1:(j-
1)*(m+n)+m+n)];
end
end
z = [xp_sig;theta';dxp_sig;P(:);psi_aux];
out=[yp theta z'];
1.2 Identificación a un horizonte dado
1.2.1 Rpem_fcc_h
function out = rpem_fcc_h(y,z,m,n,lambda,h,aest,deri,acte,pres)
%Se trata de un identificador recursivo de parametros de un modelo
RARMAX
%en el que el error que se minimiza en la actualizacion de
parametros es el
%error de prediccion a un horizonte h dado. En el calculo de las
sensibilidades
%por diferencias finitas, es importante hacer la actualizacion de
estados
%tambien con las matrices auxiliares (si no, no coinciden las
%sensibilidades para h=1).
%FCC: A=[[-a1;-a2;..;-an],[I;0,0...0]]; K=[c1-a1;c2-a2;..cn-an;-
a(n+1);..-am];
%C=[1 0 0....0]
%Trabaja con series temporales, es decir, A(q).y[k]=C(q).e[k],
siendo e[k] un ruido blanco.
% ENTRADAS:
% y: Salida real del sistema
% z: Vector de estados del predictor (estados del modelo,
sensibilidades, parametros...)
% m: orden del polinomio A
Manual de usuario. Código. 155
% n: orden del polinomio C
% lambda: factor de olvido (ventana exponencial)
% h: horizonte de minimizacion
% aest: metodo de estabilizar el polinomio A (Ninguno, FSTAB,
Reduccion
% de paso)
% deri: elige entre sensibilidades analiticas o por diferencias
finitas
% acte: flag que indica si se deben actualizar los estados al
conocer los
% nuevos parametros
% pres: flag que obliga a que el predictor que se obtendria de los
% parametros identificados sea estable (a h muestras)
% SALIDAS:
% yp: prediccion de y[k] a priori (con parametros en k-1 y estado en
k
% estimado en k-1)
% tta: parametros en k
global maux;
inestable=0;
estados=m;
xp=z(1:estados);
dxp=z(estados+1:estados+estados*(n+m));
dxp_sig=dxp;
theta_ant=z(estados+estados*(n+m)+1:estados+estados*(n+m)+n+m)';
%x=estados del algoritmo=[[xp] [dxp] [theta] [P]]
P_ant=[];
for i=0:n+m-1
P_ant=[P_ant
z(estados+(estados*(n+m))+(n+m)+1+(m+n)*i:estados+(estados*(n+m))+(n
+m)+(m+n)*i+(m+n))];
end
P=P_ant;
%Lectura de sensibilidades
psi_mio=z(estados+(estados*(n+m))+(n+m)+power(m+n,2)+1:estados+(esta
dos*(n+m))+(n+m)+power(m+n,2)+(m+n));
Manual de usuario. Código. 156
%Solo en las formas canonicas:
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
xp_ant=z(estados+(estados*(n+m))+(n+m)+power(m+n,2)+(m+n)+1:estados+
(estados*(n+m))+(n+m)+power(m+n,2)+(m+n)+estados);
dxp_ant=z(estados+(estados*(n+m))+(n+m)+power(m+n,2)+(m+n)+estados+1
:estados+(estados*(n+m))+(n+m)+power(m+n,2)+(m+n)+estados+estados*(m
+n));
y_ant=z(estados+(estados*(n+m))+(n+m)+power(m+n,2)+(m+n)+estados+est
ados*(m+n)+1);
if n>maux
theta_ant(maux+1:n)=0;
dxp_ant(1+maux*m:maux*m+m*(n-maux))=0;
dxp(1+maux*m:maux*m+m*(n-maux))=0;
psi_mio(1+maux:maux+(n-maux))=0;
P(1+maux:maux+(n-maux),1+maux:maux+(n-maux))=0;
P_ant(1+maux:maux+(n-maux),1+maux:maux+(n-maux))=0;
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%MATRICES
[A_ant C_ant K_ant D_ant]=matrices_fcc_z(m,m,[1 theta_ant(1:m) 1
theta_ant(m+1:end) zeros(1,m-n)]);
%salida predicha
yp=C_ant*xp;
%error prediccion
epsilon_mio=y-yp;
L=P_ant*psi_mio/(lambda + psi_mio'*P_ant*psi_mio);
switch aest
case 1,
theta=theta_ant + (L*epsilon_mio)';
Manual de usuario. Código. 157
auxC=[1 theta(m+1:m+n)];
auxC=FSTAB(auxC);
theta(m+1:m+n)=auxC(2:length(auxC));
case 2,
theta=theta_ant + (L*epsilon_mio)';
auxC=[1 theta(m+1:m+n)]; %los m primeros parametros son ai;
los n siguientes, ci
auxC=FSTAB(auxC);
theta(m+1:m+n)=auxC(2:length(auxC));
if m>0
auxA=[1 theta(1:m)];
auxA=FSTAB(auxA);
theta(1:m)=auxA(2:length(auxA));
end
case 3,
mu=2;
inestable=1;
theta=theta_ant;
while inestable
mu=mu/2;
thaux=theta_ant + mu*(L*epsilon_mio)';
%MATRICES:
%%%%%%%%%%%%%%%%%%%%%%
[A C K D]=matrices_fcc_z(m,m,[1 thaux(1:m) 1
thaux(m+1:end) zeros(1,m-n)]);
%%%%%%%%%%%%%%%%%%%%%%
inestable=(pres*any(abs(eig(mpower(A,h-1)*(A-K*C)))>=1)
| any(abs(roots([1 thaux(m+1:m+n)]))>=1) | any(abs(roots([1
thaux(1:m)]))>=1))& mu>0.0005;
end
if mu>0.0005
theta=thaux;
end
end
Manual de usuario. Código. 158
if n>maux
theta(maux+1:n)=0;
end
if inestable | (any(abs(roots([1 theta(m+1:m+n)]))>=1) |
any(abs(roots([1 theta(1:m)]))>=1))
theta=theta_ant;
end
%MATRICES
[A C K D]=matrices_fcc_z(m,m,[1 theta(1:m) 1 theta(m+1:end)
zeros(1,m-n)]);
%actualizacion matriz covarianzas
P=(P_ant-L*psi_mio'*P_ant)/lambda;
%SOLO EN FORMAS CANONICAS
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%actualizacion estados y derivadas
if acte==1
xp=A*xp_ant+K*(y_ant-C_ant*xp_ant);
dxp=dxpsig(dxp_ant,m,n,theta,xp_ant,y_ant);
if n>maux
dxp(1+maux*m:maux*m+m*(n-maux))=0;
end
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%estados predictor T siguiente
xp_sig=(A-(K*C))*xp + K*y;
%sensibilidades
dxp_sig=dxpsig(dxp,m,n,theta,xp,y);
if n>maux
Manual de usuario. Código. 159
dxp_sig(1+maux*m:maux*m+m*(n-maux))=0;
end
%Calculo de sensibilidades k+h
psi_h=sensibilidades(deri,dxp_sig,h,m,n,theta,xp_sig);
if n>maux
psi_h(1+maux:maux+(n-maux))=0;
end
%formas canonicas:
z = [xp_sig;dxp_sig;theta';P(:);psi_h;xp;dxp;y];
if n>maux
tta=[theta(1:maux) theta(m+1:m+n)];
else
tta=theta;
end
yp=C*mpower(A,h-1)*xp_sig;
out=[yp tta z'];
function [psi_h]=sensibilidades(deri,dxp_sig,h,m,n,theta,xp_sig)
%Calculo de sensibilidades k+h
psi_h=[];
[A C K D]=matrices_fcc_z(m,m,[1 theta(1:m) 1 theta(m+1:end)
zeros(1,m-n)]);
Ap=C*mpower(A,h-1);
for i=1:n+m
if deri==2
%CALCULO DE SENSIBILIDADES POR DIFERENCIAS FINITAS
thaux=theta;
inc=1e-5*abs(theta(i));
if abs(theta(i))<10*sqrt(eps)
inc=1e-4*sqrt(eps);
end
thaux(i)=theta(i)+inc;
Manual de usuario. Código. 160
[Aaux Caux Kaux Daux]=matrices_fcc_z(m,m,[1 thaux(1:m) 1
thaux(m+1:end) zeros(1,m-n)]);
%1)yh=Ap.X(k+1)=[C.mpower(A,h-1)].X(k+1)--
>dyh=dAp.X(k+1)+Ap.dX(k+1)
Apaux=Caux*mpower(Aaux,h-1);
dyh1=((Apaux-Ap)/inc)*xp_sig+Ap*dxp_sig((i-1)*m+1:(i-
1)*m+m);
else
%CALCULO DE SENSIBILIDADES ANALITICAMENTE
nd=i+1;
[A C K D dA dC dK]=matrices_fcc_z(m,m,[1 theta(1:m) 1
theta(m+1:end) zeros(1,m-n)],nd);
if h<2
dyh1=C*dxp_sig((i-1)*m+1:(i-1)*m+m)+dC*xp_sig;
else
DAp=0*A;
for j=1:h-1
DAp=DAp+mpower(A,j-1)*dA*mpower(A,h-1-j);
end
dyh1=(C*DAp+dC*mpower(A,h-1))*xp_sig;
dyh1=dyh1+Ap*dxp_sig((i-1)*m+1:(i-1)*m+m);
end
end
psi_h=[psi_h;dyh1];
end
;
function dxp_sig=dxpsig(dxp,m,n,theta,xp,y)
%sensibilidades
for i=0:1
for j=1+i*m:m+i*n
%DERIVADAS DE LAS MATRICES
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
nd=j+1;
[A C K D dA dC dK]=matrices_fcc_z(m,m,[1 theta(1:m) 1
theta(m+1:end) zeros(1,m-n)],nd);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Manual de usuario. Código. 161
dxp_sig((j-1)*m+1:(j-1)*m+m,1)=(A-K*C)*dxp((j-1)*m+1:(j-
1)*m+m)+(dA-K*dC-dK*C)*xp+dK*y;
end
end
end;
1.2.2 Rpem_fco_h
function out = rpem_fco_h(y,z,m,n,lambda,h,aest,deri,acte,pres)
%Se trata de un identificador recursivo de parametros de un modelo
ARMA
%en el que el error que se minimiza en la actualizacion de
parametros es el
%error de prediccion a un horizonte h dado. En el calculo de las
sensibilidades
%por diferencias finitas, es importante hacer la actualizacion de
estados
%tambien con las matrices auxiliares (si no, no coinciden las
%sensibilidades para h=1).
%Trabaja con series temporales, es decir, A(q).y[k]=C(q).e[k],
siendo e[k] un ruido blanco.
% ENTRADAS:
% y: Salida real del sistema
% z: Vector de estados del predictor (estados del modelo,
sensibilidades, parametros...)
% m: orden del polinomio A
% n: orden del polinomio C
% lambda: factor de olvido (ventana exponencial)
% h: horizonte de minimizacion
% aest: metodo de estabilizar el polinomio A (Ninguno, FSTAB,
Reduccion
% de paso)
% deri: elige entre sensibilidades analiticas o por diferencias
finitas
% acte: flag que indica si se deben actualizar los estados al
conocer los
% nuevos parametros
Manual de usuario. Código. 162
% pres: flag que obliga a que el predictor que se obtendria de los
% parametros identificados sea estable (a h muestras)
% SALIDAS:
% yp: prediccion de y[k] a priori (con parametros en k-1 y estado en
k
% estimado en k-1)
% tta: parametros en k
global maux;
inestable=0;
estados=m;
xp=z(1:estados);
dxp=z(estados+1:estados+estados*(n+m));
dxp_sig=dxp;
theta_ant=z(estados+estados*(n+m)+1:estados+estados*(n+m)+n+m)';
%x=estados del algoritmo=[[xp] [dxp] [theta] [P]]
P_ant=[];
for i=0:n+m-1
P_ant=[P_ant
z(estados+(estados*(n+m))+(n+m)+1+(m+n)*i:estados+(estados*(n+m))+(n
+m)+(m+n)*i+(m+n))];
end
P=P_ant;
%Lectura de sensibilidades
psi_mio=z(estados+(estados*(n+m))+(n+m)+power(m+n,2)+1:estados+(esta
dos*(n+m))+(n+m)+power(m+n,2)+(m+n));
%Solo en las formas canonicas:
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
xp_ant=z(estados+(estados*(n+m))+(n+m)+power(m+n,2)+(m+n)+1:estados+
(estados*(n+m))+(n+m)+power(m+n,2)+(m+n)+estados);
dxp_ant=z(estados+(estados*(n+m))+(n+m)+power(m+n,2)+(m+n)+estados+1
:estados+(estados*(n+m))+(n+m)+power(m+n,2)+(m+n)+estados+estados*(m
+n));
y_ant=z(estados+(estados*(n+m))+(n+m)+power(m+n,2)+(m+n)+estados+est
ados*(m+n)+1);
Manual de usuario. Código. 163
if n>maux
theta_ant(maux+1:n)=0;
dxp_ant(1+maux*m:maux*m+m*(n-maux))=0;
dxp(1+maux*m:maux*m+m*(n-maux))=0;
psi_mio(1+maux:maux+(n-maux))=0;
P(1+maux:maux+(n-maux),1+maux:maux+(n-maux))=0;
P_ant(1+maux:maux+(n-maux),1+maux:maux+(n-maux))=0;
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%MATRICES
[A_ant C_ant K_ant D_ant]=matrices_fco_z(m,m,[1 theta_ant(1:m) 1
theta_ant(m+1:end) zeros(1,m-n)]);
%salida predicha
yp=C_ant*xp;
%error prediccion
epsilon_mio=y-yp;
L=P_ant*psi_mio/(lambda + psi_mio'*P_ant*psi_mio);
switch aest
case 1,
theta=theta_ant + (L*epsilon_mio)';
auxC=[1 theta(m+1:m+n)];
auxC=FSTAB(auxC);
theta(m+1:m+n)=auxC(2:length(auxC));
case 2,
theta=theta_ant + (L*epsilon_mio)';
auxC=[1 theta(m+1:m+n)]; %los m primeros parametros son ai;
los n siguientes, ci
auxC=FSTAB(auxC);
theta(m+1:m+n)=auxC(2:length(auxC));
if m>0
Manual de usuario. Código. 164
auxA=[1 theta(1:m)];
auxA=FSTAB(auxA);
theta(1:m)=auxA(2:length(auxA));
end
case 3,
mu=2;
inestable=1;
theta=theta_ant;
while inestable
mu=mu/2;
thaux=theta_ant + mu*(L*epsilon_mio)';
%MATRICES:
%%%%%%%%%%%%%%%%%%%%%%
[A C K D]=matrices_fco_z(m,m,[1 thaux(1:m) 1
thaux(m+1:end) zeros(1,m-n)]);
%%%%%%%%%%%%%%%%%%%%%%
inestable=(pres*any(abs(eig(mpower(A,h-1)*(A-K*C)))>=1)
| any(abs(roots([1 thaux(m+1:m+n)]))>=1) | any(abs(roots([1
thaux(1:m)]))>=1))& mu>0.0005;
end
if mu>0.0005
theta=thaux;
end
end
if n>maux
theta(maux+1:n)=0;
end
if inestable | (any(abs(roots([1 theta(m+1:m+n)]))>=1) |
any(abs(roots([1 theta(1:m)]))>=1))
theta=theta_ant;
end
%MATRICES
[A C K D]=matrices_fco_z(m,m,[1 theta(1:m) 1 theta(m+1:end)
zeros(1,m-n)]);
Manual de usuario. Código. 165
%actualizacion matriz covarianzas
P=(P_ant-L*psi_mio'*P_ant)/lambda;
%SOLO EN FORMAS CANONICAS
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%actualizacion estados y derivadas
if acte==1
xp=A*xp_ant+K*(y_ant-C_ant*xp_ant);
dxp=dxpsig(dxp_ant,m,n,theta,xp_ant,y_ant);
if n>maux
dxp(1+maux*m:maux*m+m*(n-maux))=0;
end
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%estados predictor T siguiente
xp_sig=(A-(K*C))*xp + K*y;
%derivadas xp(k+1)
dxp_sig=dxpsig(dxp,m,n,theta,xp,y);
if n>maux
dxp_sig(1+maux*m:maux*m+m*(n-maux))=0;
end
%Calculo de sensibilidades k+1
psi_h=sensibilidades(deri,dxp_sig,h,m,n,theta,xp_sig);
if n>maux
psi_h(1+maux:maux+(n-maux))=0;
end
%formas canonicas:
z = [xp_sig;dxp_sig;theta';P(:);psi_h;xp;dxp;y];
if n>maux
tta=[theta(1:maux) theta(m+1:m+n)];
Manual de usuario. Código. 166
else
tta=theta;
end
yp=C*mpower(A,h-1)*xp_sig;
out=[yp tta z'];
function [psi_h]=sensibilidades(deri,dxp_sig,h,m,n,theta,xp_sig)
%Calculo de sensibilidades k+h
psi_h=[];
[A C K D]=matrices_fco_z(m,m,[1 theta(1:m) 1 theta(m+1:end)
zeros(1,m-n)]);
Ap=C*mpower(A,h-1);
for i=1:n+m
if deri==2
%CALCULO DE SENSIBILIDADES POR DIFERENCIAS FINITAS
thaux=theta;
inc=1e-5*abs(theta(i));
if abs(theta(i))<10*sqrt(eps)
inc=1e-4*sqrt(eps);
end
thaux(i)=theta(i)+inc;
[Aaux Caux Kaux Daux]=matrices_fco_z(m,m,[1 thaux(1:m) 1
thaux(m+1:end) zeros(1,m-n)]);
%1)yh=Ap.X(k+1)=[C.mpower(A,h-1)].X(k+1)--
>dyh=dAp.X(k+1)+Ap.dX(k+1)
Apaux=Caux*mpower(Aaux,h-1);
dyh1=((Apaux-Ap)/inc)*xp_sig+Ap*dxp_sig((i-1)*m+1:(i-
1)*m+m);
else
%CALCULO DE SENSIBILIDADES ANALITICAMENTE
nd=i+1;
[A C K D dA dC dK]=matrices_fco_z(m,m,[1 theta(1:m) 1
theta(m+1:end) zeros(1,m-n)],nd);
if h<2
dyh1=C*dxp_sig((i-1)*m+1:(i-1)*m+m)+dC*xp_sig;
Manual de usuario. Código. 167
else
DAp=0*A;
for j=1:h-1
DAp=DAp+mpower(A,j-1)*dA*mpower(A,h-1-j);
end
dyh1=(C*DAp+dC*mpower(A,h-1))*xp_sig;
dyh1=dyh1+Ap*dxp_sig((i-1)*m+1:(i-1)*m+m);
end
end
psi_h=[psi_h;dyh1];
end
;
function dxp_sig=dxpsig(dxp,m,n,theta,xp,y)
%sensibilidades
for i=0:1
for j=1+i*m:m+i*n
%DERIVADAS DE LAS MATRICES
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
nd=j+1;
[A C K D dA dC dK]=matrices_fco_z(m,m,[1 theta(1:m) 1
theta(m+1:end) zeros(1,m-n)],nd);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
dxp_sig((j-1)*m+1:(j-1)*m+m,1)=(A-K*C)*dxp((j-1)*m+1:(j-
1)*m+m)+(dA-K*dC-dK*C)*xp+dK*y;
end
end
end;
1.2.3 Rpem_ss_h
function out = rpem_ss_h(y,z,m,n,lambda,h,aest,deri,pres)
%Se trata de un identificador recursivo de parametros de un modelo
RARMAX
%en el que el error que se minimiza en la actualizacion de
parametros es el
Manual de usuario. Código. 168
%error de prediccion a un horizonte h dado. Emplea la representacion
SS.
%Trabaja con series temporales, es decir, A(q).y[k]=C(q).e[k],
siendo e[k] un ruido blanco.
% ENTRADAS:
% y: Salida real del sistema
% z: Vector de estados del predictor (estados del modelo,
sensibilidades, parametros...)
% m: orden del polinomio A
% n: orden del polinomio C
% lambda: factor de olvido (ventana exponencial)
% h: horizonte de minimizacion
% aest: metodo de estabilizar el polinomio A (Ninguno, FSTAB,
Reduccion
% de paso)
% deri: elige entre sensibilidades analiticas o por diferencias
finitas
% pres: flag que obliga a que el predictor que se obtendria de los
% parametros identificados sea estable (a h muestras)
% SALIDAS:
% yp: prediccion de y[k] a priori (con parametros en k-1 y estado en
k
% estimado en k-1)
% tta: parametros en k
global maux;
inestable=0;
estados=m+n;
xp=z(1:estados);
dxp=z(estados+1:estados+estados*(n+m));
dxp_sig=dxp;
theta_ant=z(estados+estados*(n+m)+1:estados+estados*(n+m)+n+m)';
%x=estados del algoritmo=[[xp] [dxp] [theta] [P]]
P_ant=[];
for i=0:n+m-1
P_ant=[P_ant
z(estados+(estados*(n+m))+(n+m)+1+(m+n)*i:estados+(estados*(n+m))+(n
+m)+(m+n)*i+(m+n))];
Manual de usuario. Código. 169
end
P=P_ant;
%Lectura de sensibilidades
psi_mio=z(estados+(estados*(n+m))+(n+m)+power(m+n,2)+1:estados+(esta
dos*(n+m))+(n+m)+power(m+n,2)+(m+n));
%MATRICES
%[A C K]=matrices_ss(m,n,theta_ant);
[A C K D]=matrices_ss_z(m,m,[1 theta_ant(1:m) 1 theta_ant(m+1:end)
zeros(1,m-n)]);
%salida predicha
yp=C*xp;
%error prediccion
epsilon_mio=y-yp;
L=P_ant*psi_mio/(lambda + psi_mio'*P_ant*psi_mio);
switch aest
case 1,
theta=theta_ant + (L*epsilon_mio)';
auxC=[1 theta(m+1:m+n)];
auxC=FSTAB(auxC);
theta(m+1:m+n)=auxC(2:length(auxC));
case 2,
theta=theta_ant + (L*epsilon_mio)';
auxC=[1 theta(m+1:m+n)]; %los m primeros parametros son ai;
los n siguientes, ci
auxC=FSTAB(auxC);
theta(m+1:m+n)=auxC(2:length(auxC));
if m>0
auxA=[1 theta(1:m)];
auxA=FSTAB(auxA);
theta(1:m)=auxA(2:length(auxA));
end
Manual de usuario. Código. 170
case 3,
mu=2;
inestable=1;
theta=theta_ant;
while inestable
mu=mu/2;
thaux=theta_ant + mu*(L*epsilon_mio)';
[A C K D]=matrices_ss_z(m,m,[1 thaux(1:m) 1
thaux(m+1:end) zeros(1,m-n)]);
inestable=(pres*any(abs(eig(mpower(A,h-1)*(A-K*C)))>=1)
| any(abs(roots([1 thaux(m+1:m+n)]))>=1) | any(abs(roots([1
thaux(1:m)]))>=1))& mu>0.0005;
end
if mu>0.0005
theta=thaux;
end
end
if inestable | (any(abs(roots([1 theta(m+1:m+n)]))>=1) |
any(abs(roots([1 theta(1:m)]))>=1))
theta=theta_ant;
end
%MATRICES
[A C K D]=matrices_ss_z(m,m,[1 theta(1:m) 1 theta(m+1:end)
zeros(1,m-n)]);
%actualizacion matriz covarianzas
P=(P_ant-L*psi_mio'*P_ant)/lambda;
%estados predictor T siguiente
xp_sig=(A-(K*C))*xp + K*y;
%derivadas xp(k+1)
for i=0:1
for j=1+i*m:m+i*n
%DERIVADAS DE MATRICES
Manual de usuario. Código. 171
nd=j+1;
[A C K D dA dC dK]=matrices_ss_z(m,m,[1 theta(1:m) 1
theta(m+1:end) zeros(1,m-n)],nd);
dxp_sig((j-1)*estados+1:(j-1)*estados+estados)=(A-
K*C)*dxp((j-1)*estados+1:(j-1)*estados+estados)+(dA-dK*C-
K*dC)*xp+dK*y;
end
end
%Calculo de sensibilidades k+1
psi_h=[];
for i=1:n+m
Ap=C*mpower(A,h-1);
if deri==2
thaux=theta;
inc=(1e-3)*abs(theta(i));
if abs(theta(i))<10*sqrt(eps)
inc=(1e-2)*sqrt(eps);
end
thaux(i)=theta(i)+inc;
%MATRICES
[Aaux Caux Kaux]=matrices_ss_z(m,m,[1 thaux(1:m) 1
thaux(m+1:end) zeros(1,m-n)]);
%1)yh=Ap.X(k+1)=[C.mpower(A,h-1)].X(k+1)--
>dyh=dAp.X(k+1)+Ap.dX(k+1)
Apaux=Caux*mpower(Aaux,h-1);
dyh1=((Apaux-Ap)/inc)*xp_sig+Ap*dxp_sig((i-1)*estados+1:(i-
1)*estados+estados);
else
%1)y(k+h)=C.X(k+h)=[C.mpower(A,h-1)].X(k+1)-->
%dy(k+h)=[C.mpower(A,h-1)].dX(k+1)+[C.(h-1).mpower(A,h-
2).dA].X(
%k+1)
nd=i+1;
Manual de usuario. Código. 172
[A C K D dA dC dK]=matrices_ss_z(m,m,[1 theta(1:m) 1
theta(m+1:end) zeros(1,m-n)],nd);
if h<2
dyh1=C*dxp_sig((i-1)*estados+1:(i-
1)*estados+estados)+dC*xp_sig;
else
DAp=0*A;
for j=1:h-1
DAp=DAp+mpower(A,j-1)*dA*mpower(A,h-1-j);
end
dyh1=C*DAp*xp_sig;
dyh1=dyh1+Ap*dxp_sig((i-1)*estados+1:(i-
1)*estados+estados);
end
end
psi_h=[psi_h;dyh1];
end
z = [xp_sig;dxp_sig;theta';P(:);psi_h];
yp=C*mpower(A,h-1)*xp_sig;
out=[yp theta z'];
2 Predicción
2.1 Iterativa
A continuación se muestra el código del predictor iterativo FCC, siendo los
demás idénticos salvo por las matrices de estado manejadas.
Manual de usuario. Código. 173
2.1.1 Predictor FCC iterativo
function out = predictor_fcc_mod(y,theta,z,m,n,h,vec,dife,esta)
%Predictor iterativo basado en FCC.
% y: salida real del sistema en k. Entrada al predictor
% theta: parametros en k
% z: estado realimentado (los estados del predictor)
% m: orden A
% n: orden C
% h: horizonte prediccion
% vec: elije entre la ultima salida o todo el vector de predicciones
% dife: elije entre entrada diferencial o no
% esta: permite elegir entre almacenar el estado de una muestra a
otra o no
if m<n
tta(1:n,1)=[theta(1:m);zeros(n-m,1)];
tta(n+1:2*n,1)=theta(m+1:m+n);
theta=tta;
maux=m;
m=n;
end
[A C K D]=matrices_fcc_z(m,m,[1 theta(1:m)' 1 theta(m+1:end)'
zeros(1,m-n)]);
if esta==2
z=0*z;
end
X_sig=(A-K*C)*z+K*y;
yp=C*X_sig;
X_k_mas_1=X_sig;
for i=2:h
X_sig=A*X_sig;
yp=[yp C*X_sig];
end
Manual de usuario. Código. 174
if any(abs(roots([1 theta(1:m)']))>=1)
iden_in=1;
else
iden_in=0;
end
M=A-K*C;
if vec==1
salida=yp*(1-dife)+cumsum(yp)*dife;
if any(abs(eig(M))>=1)
pred_in=1;
salida=y*ones(1,h)*(1-dife);
else
pred_in=0;
for i=2:h
M=A*M;
if any(abs(eig(M))>=1)
pred_in=1;
i=h;
salida=y*ones(1,h)*(1-dife);
end
end
end
else
salida=yp(h)*(1-dife)+sum(yp)*dife;
pred_in=0;
M=mpower(A,h-1)*M;
if any(abs(eig(M))>=1)
pred_in=1;
salida=y*(1-dife);
end
end
out=[salida iden_in pred_in X_k_mas_1'];
end
Manual de usuario. Código. 175
2.2 DIRECTA
2.2.1 Predictor FCC directo
function out =
predictor_fcc_directo(y,z,m,n,h,lambda,dife,aest,deri,recu,reca,acte
)
%Predictor directo: incluye la identificacion minimizando el error
de
%prediccion a h muestras y el espacio de estado FCC y el predictor
FCC.
% y: salida real del sistema en k. Entrada al predictor
% theta: parametros en k
% z: estado realimentado (los estados del predictor)
% m: orden A
% n: orden C
% h: horizonte prediccion
% vec: elije entre la ultima salida o todo el vector de predicciones
% dife: elije entre entrada diferencial o no
% aest: elige entre FSTAB y REDUC para stabilizar
% deri: calculo de sensibilidades (analitica o numerica)
% recu: define que parametros recuperar si se hace inestable
% reca: fuerza que recalcule estados si se hizo inestable
% acte: actualiza el estado en la identificacion con el los nuevos
th
global maux;
estados=m;
xp=z(1:estados);
dxp=z(estados+1:estados+(m+n)*estados);
theta_ant=z(estados+(m+n)*estados+1:estados+(m+n)*estados+m+n)';
P_ant=[];
for i=0:n+m-1
P_ant=[P_ant
z(estados+(m+n)*estados+(m+n)+1+(m+n)*i:estados+(m+n)*estados+(m+n)+
(m+n)*i+(m+n))];
Manual de usuario. Código. 176
end
P=P_ant;
%Lectura de sensibilidades
psi=z(estados+(m+n)*estados+(m+n)+power(m+n,2)+(m+n)+1:estados+(m+n)
*estados+(m+n)+power(m+n,2)+(m+n)+(m+n));
%identificacion:
out=rpem_fcc_h(y,z,m,n,lambda,h,aest,deri,acte,1);
yp=out(1);
theta=out(2:1+m+n);
z=out(2+m+n:end)';
[A C K D]=matrices_fcc_z(m,m,[1 theta(1:m) 1 theta(m+1:end)
zeros(1,m-n)]);
if any(abs(eig(A))>=1)
iden_in=1;
inestable=1;
else
iden_in=0;
inestable=0;
end
M=A-K*C;
pred_in=0;
M=mpower(A,h-1)*M;
if any(abs(eig(M))>=1)
pred_in=1;
inestable=1;
yp=y*(1-dife);
end
%Si el identificador o el predictor son inestables, cambio
parametros
%por unos estables nuevos (los anteriores podrian estar cerca de
%inestables)-ahora comentado- o los ultimos estables (los
anteriores),
%pero escalados
Manual de usuario. Código. 177
%El problema de usar los anteriores es que si estos estan cerca de
ser
%inestable, cada vez que actualice se haran inestables y lo hace muy
%lento
cambio_theta=0;
wtch=0;
while inestable & (pred_in | iden_in) & wtch<10
cambio_theta=1;
wtch=wtch+1;
switch recu
case 1,
theta=theta_ant;
case 2,
fact=1;%0.8;
polA=poly(fact*roots([1 theta(1:m)]));
polC=poly(fact*roots([1 theta(m+1:m+n)]));
theta=[polA(2:m+1) polC(2:n+1)];
case 3,
fact=0.15;
if m>=n
polA0=poly(0.8+fact*rand(1,m));
polC0=poly([fact*rand(1,n) zeros(1,m-n)]);
else
polC0=poly(fact*rand(1,n));
polA0=poly([fact*rand(1,m) zeros(1,n-m)]);
end
theta=[polA0(2:1+m) polC0(2:1+n)];
end
%MATRICES
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
[A C K D]=matrices_fcc_z(m,m,[1 theta(1:m) 1 theta(m+1:end)
zeros(1,m-n)]);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
inestable=any(abs(eig(mpower(A,h-1)*(A-K*C)))>=1);
end
if cambio_theta==1
Manual de usuario. Código. 178
yp=y*(1-dife);
if reca==1
P=(P_ant-L*psi'*P_ant)/lambda;
xp_sig=(A-K*C)*xp + K*y;
dxp_sig=dxpsig(dxp,m,n,theta,xp,y);
psi_h=sensibilidades(deri,dxp_sig,h,m,n,theta,xp_sig);
z(1:estados)=xp_sig;
z(estados+1:estados+(m+n)*estados)=dxp_sig;
z(estados+(m+n)*estados+(m+n)+power(m+n,2)+(m+n)+1:estados+(m+n)*est
ados+(m+n)+power(m+n,2)+(m+n)+(m+n))=psi_h;
end
end
out=[yp iden_in pred_in z'];
end
function [psi_h]=sensibilidades(deri,dxp_sig,h,m,n,theta,xp_sig)
%Calculo de sensibilidades k+h
psi_h=[];
[A C K D]=matrices_fcc_z(m,m,[1 theta(1:m) 1 theta(m+1:end)
zeros(1,m-n)]);
Ap=C*mpower(A,h-1);
for i=1:n+m
if deri==2
%CALCULO DE SENSIBILIDADES POR DIFERENCIAS FINITAS
thaux=theta;
inc=1e-5*abs(theta(i));
if abs(theta(i))<10*sqrt(eps)
inc=1e-4*sqrt(eps);
end
thaux(i)=theta(i)+inc;
[Aaux Caux Kaux Daux]=matrices_fcc_z(m,m,[1 thaux(1:m) 1
thaux(m+1:end) zeros(1,m-n)]);
%1)yh=Ap.X(k+1)=[C.mpower(A,h-1)].X(k+1)--
>dyh=dAp.X(k+1)+Ap.dX(k+1)
Manual de usuario. Código. 179
Apaux=Caux*mpower(Aaux,h-1);
dyh1=((Apaux-Ap)/inc)*xp_sig+Ap*dxp_sig((i-1)*m+1:(i-
1)*m+m);
else
%CALCULO DE SENSIBILIDADES ANALITICAMENTE
nd=i+1;
[A C K D dA dC dK]=matrices_fcc_z(m,m,[1 theta(1:m) 1
theta(m+1:end) zeros(1,m-n)],nd);
if h<2
dyh1=C*dxp_sig((i-1)*m+1:(i-1)*m+m)+dC*xp_sig;
else
DAp=0*A;
for j=1:h-1
DAp=DAp+mpower(A,j-1)*dA*mpower(A,h-1-j);
end
dyh1=(C*DAp+dC*mpower(A,h-1))*xp_sig;
dyh1=dyh1+Ap*dxp_sig((i-1)*m+1:(i-1)*m+m);
end
end
psi_h=[psi_h;dyh1];
end
;
function dxp_sig=dxpsig(dxp,m,n,theta,xp,y)
%sensibilidades
for i=0:1
for j=1+i*m:m+i*n
%DERIVADAS DE LAS MATRICES
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
nd=j+1;
[A C K D dA dC dK]=matrices_fcc_z(m,m,[1 theta(1:m) 1
theta(m+1:end) zeros(1,m-n)],nd);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
dxp_sig((j-1)*m+1:(j-1)*m+m,1)=(A-K*C)*dxp((j-1)*m+1:(j-
1)*m+m)+(dA-K*dC-dK*C)*xp+dK*y;
end
end
end;
Manual de usuario. Código. 180
2.2.2 Predictor FCO directo
function out =
predictor_fco_directo(y,z,m,n,h,lambda,dife,aest,deri,recu,reca,acte
)
%Predictor directo: incluye la identificacion minimizando el error
de
%prediccion a h muestras y el espacio de estado FCO y el predictor
FCO.
% y: salida real del sistema en k. Entrada al predictor
% theta: parametros en k
% z: estado realimentado (los estados del predictor)
% m: orden A
% n: orden C
% h: horizonte prediccion
% vec: elije entre la ultima salida o todo el vector de predicciones
% dife: elije entre entrada diferencial o no
% aest: elige entre FSTAB y REDUC para stabilizar
% deri: calculo de sensibilidades (analitica o numerica)
% recu: define que parametros recuperar si se hace inestable
% reca: fuerza que recalcule estados si se hizo inestable
% acte: actualiza el estado en la identificacion con el los nuevos
th
global maux;
estados=m;
xp=z(1:estados);
dxp=z(estados+1:estados+(m+n)*estados);
theta_ant=z(estados+(m+n)*estados+1:estados+(m+n)*estados+m+n)';
P_ant=[];
for i=0:n+m-1
P_ant=[P_ant
z(estados+(m+n)*estados+(m+n)+1+(m+n)*i:estados+(m+n)*estados+(m+n)+
(m+n)*i+(m+n))];
end
P=P_ant;
%Lectura de sensibilidades
Manual de usuario. Código. 181
psi=z(estados+(m+n)*estados+(m+n)+power(m+n,2)+(m+n)+1:estados+(m+n)
*estados+(m+n)+power(m+n,2)+(m+n)+(m+n));
out=rpem_fco_h(y,z,m,n,lambda,h,aest,deri,acte,1);
yp=out(1);
theta=out(2:1+m+n);
z=out(2+m+n:end)';
[A C K D]=matrices_fco_z(m,m,[1 theta(1:m) 1 theta(m+1:end)
zeros(1,m-n)]);
if any(abs(eig(A))>=1)
iden_in=1;
inestable=1;
else
iden_in=0;
inestable=0;
end
M=A-K*C;
pred_in=0;
M=mpower(A,h-1)*M;
if any(abs(eig(M))>=1)
pred_in=1;
inestable=1;
yp=y*(1-dife);
end
%Si el identificador o el predictor son inestables, cambio
parametros
%por unos estables nuevos (los anteriores podrian estar cerca de
%inestables)-ahora comentado- o los ultimos estables (los
anteriores),
%pero escalados
%El problema de usar los anteriores es que si estos estan cerca de
ser
%inestable, cada vez que actualice se haran inestables y lo hace muy
%lento
cambio_theta=0;
Manual de usuario. Código. 182
wtch=0;
while inestable & (pred_in | iden_in) & wtch<10
cambio_theta=1;
wtch=wtch+1;
switch recu
case 1,
theta=theta_ant;
case 2,
fact=1;%0.8;
polA=poly(fact*roots([1 theta(1:m)]));
polC=poly(fact*roots([1 theta(m+1:m+n)]));
theta=[polA(2:m+1) polC(2:n+1)];
case 3,
fact=1;%0.6;
if m>=n
polA0=poly(fact*rand(1,m));
polC0=poly([fact*rand(1,n) zeros(1,m-n)]);
else
polC0=poly(fact*rand(1,n));
polA0=poly([fact*rand(1,m) zeros(1,n-m)]);
end
theta=[polA0(2:1+m) polC0(2:1+n)];
end
%MATRICES
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
[A C K D]=matrices_fco_z(m,m,[1 theta(1:m) 1 theta(m+1:end)
zeros(1,m-n)]);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
inestable=any(abs(eig(mpower(A,h-1)*(A-K*C)))>=1);
end
if cambio_theta==1
yp=y*(1-dife);
if reca==1
P=(P_ant-L*psi'*P_ant)/lambda;
xp_sig=(A-K*C)*xp + K*y;
dxp_sig=dxpsig(dxp,m,n,theta,xp,y);
Manual de usuario. Código. 183
psi_h=sensibilidades(deri,dxp_sig,h,m,n,theta,xp_sig);
z(1:estados)=xp_sig;
z(estados+1:estados+(m+n)*estados)=dxp_sig;
z(estados+(m+n)*estados+(m+n)+power(m+n,2)+(m+n)+1:estados+(m+n)*est
ados+(m+n)+power(m+n,2)+(m+n)+(m+n))=psi_h;
end
end
out=[yp iden_in pred_in z'];
end
function [psi_h]=sensibilidades(deri,dxp_sig,h,m,n,theta,xp_sig)
%Calculo de sensibilidades k+h
psi_h=[];
[A C K D]=matrices_fco_z(m,m,[1 theta(1:m) 1 theta(m+1:end)
zeros(1,m-n)]);
Ap=C*mpower(A,h-1);
for i=1:n+m
if deri==2
%CALCULO DE SENSIBILIDADES POR DIFERENCIAS FINITAS
thaux=theta;
inc=1e-5*abs(theta(i));
if abs(theta(i))<10*sqrt(eps)
inc=1e-4*sqrt(eps);
end
thaux(i)=theta(i)+inc;
[Aaux Caux Kaux Daux]=matrices_fco_z(m,m,[1 thaux(1:m) 1
thaux(m+1:end) zeros(1,m-n)]);
%1)yh=Ap.X(k+1)=[C.mpower(A,h-1)].X(k+1)--
>dyh=dAp.X(k+1)+Ap.dX(k+1)
Apaux=Caux*mpower(Aaux,h-1);
dyh1=((Apaux-Ap)/inc)*xp_sig+Ap*dxp_sig((i-1)*m+1:(i-
1)*m+m);
else
Manual de usuario. Código. 184
%CALCULO DE SENSIBILIDADES ANALITICAMENTE
nd=i+1;
[A C K D dA dC dK]=matrices_fco_z(m,m,[1 theta(1:m) 1
theta(m+1:end) zeros(1,m-n)],nd);
if h<2
dyh1=C*dxp_sig((i-1)*m+1:(i-1)*m+m)+dC*xp_sig;
else
DAp=0*A;
for j=1:h-1
DAp=DAp+mpower(A,j-1)*dA*mpower(A,h-1-j);
end
dyh1=(C*DAp+dC*mpower(A,h-1))*xp_sig;
dyh1=dyh1+Ap*dxp_sig((i-1)*m+1:(i-1)*m+m);
end
end
psi_h=[psi_h;dyh1];
end
;
function dxp_sig=dxpsig(dxp,m,n,theta,xp,y)
%sensibilidades
for i=0:1
for j=1+i*m:m+i*n
%DERIVADAS DE LAS MATRICES
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
nd=j+1;
[A C K D dA dC dK]=matrices_fco_z(m,m,[1 theta(1:m) 1
theta(m+1:end) zeros(1,m-n)],nd);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
dxp_sig((j-1)*m+1:(j-1)*m+m,1)=(A-K*C)*dxp((j-1)*m+1:(j-
1)*m+m)+(dA-K*dC-dK*C)*xp+dK*y;
end
end
end;
Manual de usuario. Código. 185
3 Control
3.1 Adaptacion
function s = adaptacion(c,delta,error,fi,incr,m,n,theta,uk,yk)
% [fi theta]=adaptacion(c,delta,error,fi,incr,m,n,theta,uk,yk)
% c=cte para factor normalizacion
% delta=cte para cota superior
% error=error en la muestra k. REVISAR
% fi=vector de regresores muestra anterior. Tienen las salidas y
entradas
% pasadas hasta n-1 y nr-1, respectivamente. Al actualizar, añado
las
% actuales (queda desde k hasta k-n y k-nr, respectivamente).
% m=numero parametros ai
% n=numero parametros bi
% theta=parametros en k-1
% uk: mando
% yk: salida
norm=max([abs(fi)' c]);
fin=fi/norm;
%error salida normalizado:
y_k_1=theta'*fi;
en=(yk-y_k_1)/norm;
%cota error normalizada:
errorn=error/norm;
dbn=abs(errorn)+delta;
cota=(2*(1+fin'*fin)/(2+fin'*fin))*dbn;
if abs(en)<cota
psi=0;
Manual de usuario. Código. 186
else
psi=1;
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%ACTUALIZACION Y ESTABILIZADO CON REDUC:
%actualizar parametros:
mu=1;
th_ant=theta;
th=theta+mu*(psi*en*fin)/(1+psi*fin'*fin);
while (any(abs(roots([1 th(1:m)']))>=1) |
any(abs(roots([th(m+1:end)']))>=1)) & mu>=1/64
mu=mu/2;
th=theta+mu*(psi*en*fin)/(1+psi*fin'*fin);
end
if mu <1/32
theta=th_ant;
else
theta=th;
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%actualizar regresores y normalizar: fi(k)=[-y(k) -y(k-1)...-y(k-
nr+1) u(k)...u(k-n+1)]
fi(2:m)=fi(1:m-1);
if length(fi)>m+1
fi(m+2:end)=fi(m+1:end-1);
end
fi(1)=-yk;
if length(fi)>m
fi(m+1)=uk;
end
Manual de usuario. Código. 187
s=[fi;theta;theta'*fi];
3.2 Control predictivo-adaptativo
3.2.1 Calcula ganancia
function K=calcula_gananacia_PFC(nfbase,p_coin,th,na,nb,x,u,ju,nu)
% nfbase: numero de funciones base (polinomicas)
% p_coin: vector con los puntos de coincidencia
% th: vector de parametros especificos del robot
% na: orden del polinomio A(q^-1) en A.y=B.u (numero de salidas
pasadas
% almacenadas)
% nb: orden del polinomio B(q^-1) en A.y=B.u (numero de mandos
pasados
% almacenados)
% x: vector de estado del robot (posiciones y velocidades de cada
eslabon)
% ju: porcentaje mando en la funcion de coste (REVISAR EL SENTIDO
DEL %)
% nu: horizonte de control
% La entrada u se utilizaria para la linealizacion sobre la
trayectoria
% K: matriz fila de ganancias
% Funciones base
% B1[k]=1
% B2[k]=k
% B3[k]=k^2
% ....
% Respuesta a las funciones base
%trabaja con polinomios en z: como existe al menos un retardo,
%B=b1.q^-1+b2.q^-2+..., por lo que al multiplicar A(q^-1) y B(q^-1)
por
Manual de usuario. Código. 188
%la mayor potencia de q (na), en el numerador queda (na-1)
[A,B,C,D]=ssdata(tf(th(na+2:end),th(1:na+1),1));
y_est=[];
orden=length(A);
%La respuesta libre debe ser absoluta, para lo cual calculo la
respuesta
%incremental sobre la trayectoria (por coherencia con los
incrementos de
%mando, que tambien seran sobre la trayectoria). Por tanto como las
%funciones base polinomicas dan la respuesta incremental sobre el
valor
%actual, debo hacer sus incrementos:
%du(k+h)=u(k+h)-u(k-1)=m1(k)+m2(k)*h+m3(k)*h^2, para h>=0, 0 para
h<0
%du(k+1+h)=u(k+1+h)-u(k-1)=m1(k)+m2(k)*(h+1)+m3(k)*(h+1)^2, para
h>=0, 0 para h<0
%du^(k)=u(k)-u(k-1)=du(0+k)=m1(k),du^(k+1)=u(k+1)-u(k)=du(1+k)-
du(0+k)=m1(k)+m2(k)+m3(k)-m1(k),
%du^(k+h)=u(k+h)-u(k+h-1)=du(h+k)-du(h-1+k)=m1(k)+m2(k)*h+m3(k)*h^2-
(m1(k)+
%m2(k)*(h-1)+m3(k)*(h-1)^2)=m2(k)+m3(k)*(2*h+1)
for cont1=1:nfbase
dty=[];
dtvu=[];
dtx=zeros(orden,1);
dtu_ant=0;
for cont2=1:p_coin(end)+1 %el primer punto corresponde a k=0
dtu=(cont2<=nu+1)*(cont2-1)^(cont1-1); %ub(i)/mu(i)
dtu=dtu-dtu_ant;
dtu_ant=(cont2<=nu+1)*(cont2-1)^(cont1-1);
%VENTANAS:
q=1;%-(exp(cont2)/exp(p_coin(end))); %ventana exponencial de
pesos para error seguimiento
r=1;%-(exp(cont2)/exp(p_coin(end))); %ventana exponencial de
pesos para incrementos de mando
Manual de usuario. Código. 189
%q=1.05-exp(-0.5*(cont2-1)/p_coin(end)); %ventana
exponencial de pesos para error seguimiento
%r=1.05-exp(-0.5*(cont2-1)/p_coin(end)); %ventana
exponencial de pesos para incrementos de mando
%incrementos de la salida respecto a la trayectoria
(escalados por
%1/mu(i)) ante incrementos de mando:
dty=[dty;(C*dtx+D*dtu)*q];
dtx=A*dtx+B*dtu;
%incrementos de mando respecto a la trayectoria (escalados
por
%1/mu(i)):
dtvu=[dtvu;dtu*r];
end
dty=cumsum(dty);
YB(:,cont1)=[dty(p_coin+1)]; %p_coin=1 --> k+1, p_coin=0 --> k
if nu>p_coin(end)
'El horizonte de prediccion se limita al ultimo punto de
coincidencia'
T(:,cont1)=[dtvu(1:end)];
else
T(:,cont1)=[dtvu(1:nu+1)];
end
end
% Calculo de la matriz de ganancias
K=0.5*((YB'*YB+ju*T'*T)\YB');
K=K(1,:);
3.2.2 Estima_estado
function
sal=estima_estado_PFC(dtx_est,th,na,nb,ym,ym_ant,dtu_ant,p_coin)
% dtx_est: vector de estado incremental sobre trayectoria estimado
% th: vector de parametros
Manual de usuario. Código. 190
% na: orden del polinomio A(q^-1) en A.y=B.u (numero de salidas
pasadas
% almacenadas)
% nb: orden del polinomio B(q^-1) en A.y=B.u (numero de mandos
pasados
% almacenados)
% ym: salida incremental sobre muestra anterior en t
% ym_ant: salida incremental anterior
% dtu_ant: entrada incremental sobre muestra anterior en t-1
% p_coin: puntos de coincidencia
dtym=ym-ym_ant;
%trabaja con polinomios en z: como existe al menos un retardo,
%B=b1.q^-1+b2.q^-2+..., por lo que al multiplicar A(q^-1) y
B(q^-1) por
%la mayor potencia de q (na), en el numerador queda (na-1)
[A,B,C,D]=ssdata(tf(th(na+2:end),th(1:na+1),1));
orden=length(A);
dtx=dtx_est;
%%%%%%%%%%%%%%% Ganancia del observador %%%%%%%%%%%%%%%%%%%%%%%%%
polos_planta=roots([th(1:na+1)]);
polos=(ones(na,1)*0.5)+0.05*(-ones(na,1)+2*rand(na,1));
mu=0;
while (any(abs(eig(A'-place(A',C',polos*0.9^mu)*C'))>=1) |
any(abs(eig(A-place(A,B,polos*0.9^mu)*B))>=1)) & mu<3
mu=mu+1;
end
G=place(A',C',polos*0.9^mu);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%dt=incremento sobre trayectoria
dtx_pred=A*dtx_est+B*dtu_ant; %estado predicho actual basado en
estimado anterior: dtX^[k]=A.dtX[k-1]+B.dtu[k-1]
dty_pred=C*dtx_pred; %salida a priori: dty^[k]=C.dtX^[k]
Manual de usuario. Código. 191
dtx_est=dtx_pred+G'*(dtym-dty_pred); %correccion del estado:
dtX[k|k]=dtX^[k|k-1]+G.dte[k], con dte[k]=dtym[k]-dty^[k|k]
dty_est=C*dtx_est; %dty^[k]=C.dtX[k|k]
%El estimador permite que en el estado ya esten las entradas y
salidas
%pasadas que necesitaria para calcular la respuesta libre.
%%%%% PREDICCION DE LA RESPUESTA LIBRE: el modelo es incremental
sobre trayectoria,
%por lo que calculo estos incrementos y los acumulo %%%%%%%%%%
n_pred=p_coin(end);
dtx=dtx_est*0;
%Ahora los incrementos respecto de la trayectoria son nulos, ya que
se
%trata de la respuesta libre (mando constante e igual al ultimo
aplicado)
dtu=0;
for cont1=1:n_pred;
dty=[];
% simulacion interna: prediccion a una muestra
dtx_pred=A*dtx_est+B*dtu; %estado predicho actual basado en
estimado anterior: dtX^[k]=A.dtX[k-1]+B.dtu[k-1]
dty_pred=C*dtx_pred; %salida a priori: dty^[k]=C.dtX^[k]
dtx_est=dtx_pred; %correccion del estado: dtX[k|k]=dtX^[k|k-
1]+dtG.e[k], con dte[k]=dtym[k]-dty^[k|k]
dty=C*dtx_est; %dty^[k]=C.dtX[k|k]
f(cont1)=dty(1);
end
%Si quiero que la respuesta libre en la primera muestra coincida con
la
%real, no uso la estimacion en k=0 sino la real:
f=[dtym f];
%La respuesta libre debe ser absoluta, para lo cual calculo la
respuesta
Manual de usuario. Código. 192
%incremental sobre la trayectoria (por coherencia con los
incrementos de
%mando, que tambien seran sobre la trayectoria).
f=ym_ant+cumsum(f);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
y_est=ym_ant+dty_est;
%El primer punto del vector f es para k=0:
sal=[dtx;polos*0.9^mu;y_est;f(p_coin+1)'];
3.2.3 Trayectoria deseada
function w=trayectoria_deseada_PFC(p_coin,alfa,err_act,r,filtro,y)
% p_coin: vector columna con los puntos de coincidencia
% alfa: constante de filtrado de la referencia
% err_act: valor actual r(t)-y(t)
% r: vector columna con los valores futuros de la referencia [r(t+1)
r(t+2) ... r(t+n_pred)]'
% w: vector columna con los valores futuros de la trayectoria
deseada
% en los puntos de coincidencia [w(t+n1) w(t+n2) ... w(t+nh)]'
% filtro: permite elegir entre un primer orden o uno mas complejo
(ver
% mascara niveles superiores)
% y: salida real en k
n_pred=p_coin(end);
if filtro==2
w=r(1:n_pred+1)-alfa.^(0:n_pred)'*err_act;
else
w_ant=y;
Manual de usuario. Código. 193
w=w_ant;
for i=1:p_coin(end)
w=[w;alfa*w_ant+(1-alfa)*r(i)];
w_ant=w(end);
end
end
w=[w(p_coin+1)];