Вы находитесь на странице: 1из 5

Conceptos sobre control óptimo

Optimización dinámica: busca responder la pregunta, ¿Cuál es el valor óptimo para cada
período de tiempo de una variable de elección? Por tanto, debemos encontrar un valor
para cada momento en el intervalo de tiempo relevante para el problema (el que
eventualmente puede ser infinito). Lo que queremos encontrar ahora es una función, y no
solo un único valor (como en la optimización estática).
La idea es que cada función nos estará dando valores distintos del funcional que estemos
maximizando. Tenemos que elegir entonces la función que nos dé el mayor valor (si es
un problema de maximización).
Supongamos que tenemos los siguientes caminos para transportar una carga desde el
punto inicial A hasta el terminal Z. El costo del transporte depende del largo del camino
y de la topografía del mismo (por tanto, no necesariamente la línea recta es la más
conveniente). En este ejemplo buscamos minimizar costos, eligiendo el camino óptimo.
El funcional: V [y(t)]. Mapea funciones en valores (en el ejemplo anterior podía ser el
costo del transporte entre A y Z). Al maximizarlo (o minimizarlo) nos permite elegir la
función óptima. Distintos puntos terminales del problema: (a) t = T (problema con línea
vertical terminal) (consumo a lo largo de T años); (b) y = Z (problema con línea horizontal
terminal) (meta inflación) y (c) Z = φ(T) (curva terminal) (calidad vs rapidez).
En los problemas de control óptimo tenemos 3 variables relevantes en vez de las 2 que
veníamos viendo. Ahora, además de V (funcional) y de y (variable de estado) tenemos u
(variable de control). La variable u es la que le da nombre a esta teoría y que pasará a
ocupar el escenario central del problema (relegando a y a un rol secundario). Esto será así
siempre y cuando a través de u logremos afectar el camino que sigue y. Por tanto, en
nuestro problema ahora deberemos tener una ecuación que vincule a ambas variables:
𝑑𝑦
= 𝑦̇ (𝑡) = 𝑓[𝑡, 𝑦(𝑡), 𝑢(𝑡)]
𝑑𝑡

Ejemplo donde aplique control óptimo


Supongamos una economía con un stock finito de petróleo (P(t)), siendo P(0) = P0. A
𝜕𝑃(𝑡)
medida que el petróleo es extraído, la reserva se irá reduciendo en: = −𝐸(𝑡). Siendo
𝜕𝑡
E(t) la tasa de extracción de petróleo en t. E(t) califica como variable de control dado que
posee las siguientes 2 propiedades:
1. Está sujeta a nuestra elección discrecional.
2. El valor de E(t) afecta a la trayectoria de P(t) (variable de estado).
La variable E(t) nos permite conducir la variable de estado P(t) a la posición que
deseamos, en cualquier momento del tiempo, a través de la ecuación diferencial:
𝜕𝑃(𝑡)
= −𝐸(𝑡)
𝜕𝑡
Direccionando acertadamente la variable de control, podemos proponernos optimizar
algún criterio de performance expresado en una función objetivo. Podríamos plantearnos
por ejemplo la maximización del valor presente de la utilidad (o ganancia) derivada del
uso del petróleo extraído durante un período de tiempo [0, t]. El problema podría
plantearse como:
𝑀á𝑥𝑖𝑚𝑖𝑧𝑎𝑟
𝑡
∫ 𝑈(𝐸)𝑒 −𝜌𝑡 𝑑𝑡
0

Sujeto a:
𝜕𝑃(𝑡)
= −𝐸(𝑡)
𝜕𝑡
P(0) = P0, P(T) libre

Regulador cuadrático lineal (LQR)


El regulador lineal cuadrático está dado por las siguientes ecuaciones:
El sistema a ser controlado es descrito por las ecuaciones espacio de estado:
𝑥̇ (𝑡) = 𝐴(𝑡)𝑥(𝑡) + 𝐵(𝑡)𝑢(𝑡), 𝑥(𝑡0 ) = 𝑥0
𝑦(𝑡) = 𝐶𝑥(𝑡)
Y el índice de desempeño asociado a ser minimizado es:
𝑡𝑓
1 𝑇 1 𝑇
𝐽(𝑥) = 𝑥 (𝑡𝑓 )𝐹𝑥(𝑡𝑓 ) + ∫ [ 𝑥 (𝑡)𝑄(𝑡)𝑥(𝑡) + 𝑢𝑇 (𝑡)𝑅(𝑡)𝑢(𝑡)]𝑑𝑡
2 𝑡0 2

Donde Q = QT ≥ 0 y F = FT son matrices reales simétricas semi-definidas positivas y R =


RT > 0, es una matriz real simétrica y definida positiva, el estado inicial t0, y el estado
final tf son especificados y u(t) y x(t) no están restringidos. La teoría del control óptimo
se refiere a operar un sistema dinámico a un costo mínimo. El caso donde la dinámica del
sistema se describe mediante un conjunto de ecuaciones diferenciales lineales y el costo
se describe mediante una función cuadrática se denomina problema LQ. Uno de los
principales resultados en la teoría es que se proporciona la solución por el regulador lineal
cuadrático “LQR” (por sus siglas en ingles Linear-Quadratic Regulator), un controlador
por retroalimentación. El regulador lineal cuadrático LQR es una parte importante de la
solución para el problema LQG (control lineal cuadrático Gaussiano). Los ajustes de un
controlador (regulador) que gobierna una máquina o un proceso (como un avión o un
reactor químico) se encuentran utilizando un algoritmo matemático que reduce al mínimo
una función de costo con factores de ponderación suministrados por un humano
(ingeniero). La función de costo frecuentemente se define como una suma de las
desviaciones de las mediciones clave, altitud deseada o temperatura de proceso, de sus
valores deseados. Por lo tanto, el algoritmo encuentra los ajustes del controlador que
reducen al mínimo las desviaciones no deseadas. La magnitud de la acción de control en
sí también se puede incluir en la función de costo. El algoritmo LQR reduce la cantidad
de trabajo realizado por el ingeniero de sistemas de control para optimizar el controlador.
Sin embargo, el ingeniero aún necesita especificar los parámetros de la función de costo
y comparar los resultados con los objetivos de diseño especificados. A menudo, esto
significa que la construcción del controlador será un proceso iterativo en el cual el
ingeniero juzga los controladores "óptimos" producidos a través de la simulación y luego
ajusta los parámetros para producir un controlador más consistente con los objetivos de
diseño. El algoritmo LQR es esencialmente una forma automatizada de encontrar un
controlador de retroalimentación de estado apropiado. Como tal, no es frecuente que los
ingenieros de control prefieran métodos alternativos, como la retroalimentación de estado
completo, también conocida como colocación de polos, en la que existe una relación más
clara entre los parámetros del controlador y el comportamiento del controlador.

¿Cómo funcionan las funciones “lqr” y “dlqr” en Matlab?


lqr: Diseño de reguladores lineales cuadráticos LQR para sistemas continuos.
dlqr: Diseño de reguladores LQR lineales cuadráticos para sistemas de tiempo discreto.
[K,S,e] = lqr(SYS,Q,R,N) calcula la matriz de ganancia óptimo K.
Para un sistema en tiempo continuo, la retroalimentación de estado ley u = –
Kx minimiza la cuadrática función de costos

J(u) = ∫0 (𝑥𝑇𝑄𝑥 + 𝑢𝑇𝑅𝑢 + 2𝑥𝑇𝑁𝑢)𝑑𝑡
sujeto a la dinámica del sistema
ẋ =Ax+Bu.
Además de la ganancia de realimentación de estado K, lqr devuelve la solución S de la
ecuación de Riccati asociada

ATS + SA − (SB + N)R−1(BTS + NT) + Q = 0


y los valores propios del lazo cerrado e = eig(A - B*K). K se deriva de S usando

K = R−1(BTS + NT)
Para un modelo de espacio de estado de tiempo discreto, u[n] = –Kx[n] minimiza
J = ∑∞ 𝑇 𝑇 𝑇
𝑛=0{𝑥 𝑄𝑥 + 𝑢 𝑅𝑢 + 2𝑥 𝑁𝑢}
sujeto a x[n + 1] = Ax[n] + Bu[n].
[K,S,e] = LQR(A,B,Q,R,N) es una sintaxis equivalente para los modelos de tiempo
continuo con dinámica ̇x = Ax + Bu.

[K,S,e] = dlqr(A,B,Q,R,N)
[K,S,e] = dlqr(A,B,Q,R,N) calcula la matriz de ganancia óptimo K tal que la ley de estado
de respuesta
u[n] = −Kx[n]
minimiza la cuadrática función de costos
J(u)=∑∞ (𝑥[𝑛]𝑇𝑄𝑥[𝑛] + 𝑢[𝑛]𝑇𝑅𝑢[𝑛] + 2𝑥[𝑛]𝑇𝑁𝑢[𝑛])
𝑛=0

para el modo de espacio de estado de tiempo discreto


x[n+1] = Ax[n]+Bu[n]
El valor por defecto N=0 se asume cuando N se omite.
Además de la ganancia de realimentación de estado K, dlqr devuelve la solución
horizonte infinito S de la ecuación de Riccati asociada de tiempo discreto
−1
ATSA−S − (ATSB + N) (BTSB + R) (BTSA + NT) + Q=0
y los valores propios del lazo cerrado e = eig(A-B*K). Tenga en cuenta que K se deriva
de S por
−1
K = (BTSB + R) (BTSA + NT)
Limitaciones
Los datos del problema deben satisfacer:
 El par (A, B) es estabilizable.
 R > 0 y Q − NR– 1NT ≥ 0
 (Q − NR– 1NT, UNA BR −– 1N

Aplicativo (script) usando las funciones “lqr” y “dlqr”


Diseño optimo
El elemento (1,1) será usado para pesar la posición del carro, y el elemento (3,3) para
pesar el ángulo del péndulo. Dejamos el peso en el control R=1. Ahora que sabemos qué
forma tiene Q, podemos experimentar hasta encontrar la matriz K que nos da un buen
controlador. Hacemos un programita para que los cambios en Q se vean
automáticamente en la respuesta del controlador obtenido para cada iteración hasta
encontrar la Q - y K - que satisfacen los requerimientos de diseño. Agregar las
siguientes líneas en el archivo-m:
x=1;
y=1;
Q=[x 0 0 0; 0 0 0 0; 0 0 y 0; 0 0 0 0];
R = 1;
K = lqr(A,B,Q,R)
Ac = [(A-B*K)];
Bc = [B];
Cc = [C];
Dc = [D];
T=0:0.01:5;
U=0.2*ones(size(T));
[Y,X]=lsim(Ac,Bc,Cc,Dc,U,T);
plot(T,Y)
legend('Carro','Péndulo')
Ejemplo 2

close
all

% Initial Conditions
x0 = [3; % 3 radians
0]; % 0 rad/s

% System Dynamics
A = [0 1;
0.01 0];
B = [0;
1];
C = [1 0];
D = 0;

% Control Law
Q = [1 0; % Penalize angular error
0 1]; % Penalize angular rate
R = 1; % Penalize thruster effort
K = lqr(A,B,Q,R);

% Closed loop system


sys = ss((A - B*K), B, C, D);

% Run response to initial condition


t = 0:0.005:30;
[y,t,x] = initial(sys, x0, t);

Вам также может понравиться