198
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

42a5fa638d871

Embed Size (px)

Citation preview

Page 1: 42a5fa638d871

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

Page 2: 42a5fa638d871

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

Page 3: 42a5fa638d871

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

Page 4: 42a5fa638d871

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

Page 5: 42a5fa638d871

PARTE I. MEMORIA

Page 6: 42a5fa638d871

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.

Page 7: 42a5fa638d871

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).

Page 8: 42a5fa638d871

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.

Page 9: 42a5fa638d871

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

Page 10: 42a5fa638d871

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.

Page 11: 42a5fa638d871

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.

Page 12: 42a5fa638d871

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.

Page 13: 42a5fa638d871

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:

Page 14: 42a5fa638d871

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

Page 15: 42a5fa638d871

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:

Page 16: 42a5fa638d871

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

Page 17: 42a5fa638d871

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.

Page 18: 42a5fa638d871

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

Page 19: 42a5fa638d871

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

Page 20: 42a5fa638d871

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

−=→

→== −−

Page 21: 42a5fa638d871

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.

Page 22: 42a5fa638d871

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].

Page 23: 42a5fa638d871

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 εθθ += − .

Page 24: 42a5fa638d871

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

Page 25: 42a5fa638d871

Memoria. Capítulo 2. Predicción del PGCD. 20

).(.

+⋅+

+

⋅+⋅

⋅−⋅−+⋅−=

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

Page 26: 42a5fa638d871

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).

Page 27: 42a5fa638d871

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).

Page 28: 42a5fa638d871

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.

Page 29: 42a5fa638d871

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.

Page 30: 42a5fa638d871

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.

Page 31: 42a5fa638d871

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

Page 32: 42a5fa638d871

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.

Page 33: 42a5fa638d871

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)

Page 34: 42a5fa638d871

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

Page 35: 42a5fa638d871

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

Page 36: 42a5fa638d871

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

Page 37: 42a5fa638d871

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)).

Page 38: 42a5fa638d871

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

Page 39: 42a5fa638d871

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

Page 40: 42a5fa638d871

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.

Page 41: 42a5fa638d871

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

Page 42: 42a5fa638d871

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

Page 43: 42a5fa638d871

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

Page 44: 42a5fa638d871

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

Page 45: 42a5fa638d871

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

Page 46: 42a5fa638d871

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

Page 47: 42a5fa638d871

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.

Page 48: 42a5fa638d871

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

Page 49: 42a5fa638d871

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

Page 50: 42a5fa638d871

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.

Page 51: 42a5fa638d871

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.

Page 52: 42a5fa638d871

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

Page 53: 42a5fa638d871

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

Page 54: 42a5fa638d871

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.

Page 55: 42a5fa638d871

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.

Page 56: 42a5fa638d871

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

Page 57: 42a5fa638d871

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

Page 58: 42a5fa638d871

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.

Page 59: 42a5fa638d871

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

Page 60: 42a5fa638d871

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

Page 61: 42a5fa638d871

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,

Page 62: 42a5fa638d871

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 =+ )|(ˆ .

Page 63: 42a5fa638d871

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,

Page 64: 42a5fa638d871

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.

Page 65: 42a5fa638d871

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

Page 66: 42a5fa638d871

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

Page 67: 42a5fa638d871

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

Page 68: 42a5fa638d871

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.

Page 69: 42a5fa638d871

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

Page 70: 42a5fa638d871

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.

Page 71: 42a5fa638d871

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

Page 72: 42a5fa638d871

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).

Page 73: 42a5fa638d871

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

χχψ

χψθ

Page 74: 42a5fa638d871

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

Page 75: 42a5fa638d871

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:

Page 76: 42a5fa638d871

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.

Page 77: 42a5fa638d871

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).

Page 78: 42a5fa638d871

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]

Page 79: 42a5fa638d871

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

Page 80: 42a5fa638d871

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

Page 81: 42a5fa638d871

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

Page 82: 42a5fa638d871

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

Page 83: 42a5fa638d871

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

Page 84: 42a5fa638d871

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).

Page 85: 42a5fa638d871

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

Page 86: 42a5fa638d871

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.

Page 87: 42a5fa638d871

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.

Page 88: 42a5fa638d871

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

Page 89: 42a5fa638d871

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.

Page 90: 42a5fa638d871

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

Page 91: 42a5fa638d871

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

Page 92: 42a5fa638d871

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

Page 93: 42a5fa638d871

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):

Page 94: 42a5fa638d871

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%

Page 95: 42a5fa638d871

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.

Page 96: 42a5fa638d871

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:

Page 97: 42a5fa638d871

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

Page 98: 42a5fa638d871

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

Page 99: 42a5fa638d871

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.

Page 100: 42a5fa638d871

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:

Page 101: 42a5fa638d871

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.

Page 102: 42a5fa638d871

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,

Page 103: 42a5fa638d871

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.

Page 104: 42a5fa638d871

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.

Page 105: 42a5fa638d871

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.

Page 106: 42a5fa638d871

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.

Page 107: 42a5fa638d871

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

Page 108: 42a5fa638d871

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).

Page 109: 42a5fa638d871

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

−=+=

−=

−= →−====

ε

ε))

Page 110: 42a5fa638d871

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.

Page 111: 42a5fa638d871

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.

Page 112: 42a5fa638d871

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

:

:

:;ˆ

,.2))11.((.12.1.ˆ,ˆ)3

cyccyycyyRARMAXEcuaciones

cyccyycyy

yyyd

XdestadosDerivando

adesSensibilid

y

y

XsiguienteEstadoyy

yccayycayayyy parámetroscalculartras

−−+−+−=

−−+−+−=

=

=−=

−−−+−−= →

εεεψ

εεεψ

εθ

ε

εε

ε

)o

)

o

)

Page 113: 42a5fa638d871

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

θ

εθθθθ

εθθθθθ

θεθθ

Page 114: 42a5fa638d871

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.

Page 115: 42a5fa638d871

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.

Page 116: 42a5fa638d871

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

++−−−

−−−−−=++

+−−−−−−−−−−=

=+−−−−−−=

Page 117: 42a5fa638d871

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.

Page 118: 42a5fa638d871

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

Page 119: 42a5fa638d871

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

Page 120: 42a5fa638d871

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.

Page 121: 42a5fa638d871

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.

Page 122: 42a5fa638d871

PARTE II. ESTUDIO

ECONÓMICO

Page 123: 42a5fa638d871

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 €

Page 124: 42a5fa638d871

PARTE III. MANUAL DE

USUARIO

Page 125: 42a5fa638d871

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

Page 126: 42a5fa638d871

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).

Page 127: 42a5fa638d871

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.

Page 128: 42a5fa638d871

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.

Page 129: 42a5fa638d871

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

Page 130: 42a5fa638d871

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.

Page 131: 42a5fa638d871

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.

Page 132: 42a5fa638d871

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.

Page 133: 42a5fa638d871

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.

Page 134: 42a5fa638d871

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.

Page 135: 42a5fa638d871

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:

Page 136: 42a5fa638d871

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.

Page 137: 42a5fa638d871

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.

Page 138: 42a5fa638d871

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.

Page 139: 42a5fa638d871

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

Page 140: 42a5fa638d871

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

Page 141: 42a5fa638d871

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.

Page 142: 42a5fa638d871

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.

Page 143: 42a5fa638d871

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

Page 144: 42a5fa638d871

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.

Page 145: 42a5fa638d871

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);

Page 146: 42a5fa638d871

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;

Page 147: 42a5fa638d871

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

Page 148: 42a5fa638d871

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

Page 149: 42a5fa638d871

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);

Page 150: 42a5fa638d871

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'];

Page 151: 42a5fa638d871

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

Page 152: 42a5fa638d871

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;

Page 153: 42a5fa638d871

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

Page 154: 42a5fa638d871

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;

Page 155: 42a5fa638d871

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'];

Page 156: 42a5fa638d871

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));

Page 157: 42a5fa638d871

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));

Page 158: 42a5fa638d871

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;

Page 159: 42a5fa638d871

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

Page 160: 42a5fa638d871

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));

Page 161: 42a5fa638d871

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)';

Page 162: 42a5fa638d871

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

Page 163: 42a5fa638d871

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

Page 164: 42a5fa638d871

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;

Page 165: 42a5fa638d871

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);

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

Page 166: 42a5fa638d871

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

Page 167: 42a5fa638d871

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);

Page 168: 42a5fa638d871

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

Page 169: 42a5fa638d871

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)]);

Page 170: 42a5fa638d871

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)];

Page 171: 42a5fa638d871

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;

Page 172: 42a5fa638d871

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

Page 173: 42a5fa638d871

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))];

Page 174: 42a5fa638d871

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

Page 175: 42a5fa638d871

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

Page 176: 42a5fa638d871

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;

Page 177: 42a5fa638d871

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.

Page 178: 42a5fa638d871

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

Page 179: 42a5fa638d871

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

Page 180: 42a5fa638d871

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))];

Page 181: 42a5fa638d871

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

Page 182: 42a5fa638d871

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

Page 183: 42a5fa638d871

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)

Page 184: 42a5fa638d871

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;

Page 185: 42a5fa638d871

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

Page 186: 42a5fa638d871

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;

Page 187: 42a5fa638d871

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);

Page 188: 42a5fa638d871

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

Page 189: 42a5fa638d871

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;

Page 190: 42a5fa638d871

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;

Page 191: 42a5fa638d871

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

Page 192: 42a5fa638d871

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

Page 193: 42a5fa638d871

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

Page 194: 42a5fa638d871

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

Page 195: 42a5fa638d871

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]

Page 196: 42a5fa638d871

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

Page 197: 42a5fa638d871

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;

Page 198: 42a5fa638d871

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)];