Problema LQR com horizonte infinito
2. Determine a lei de controle de realimentação ótima para o seguinte sistema:
e o índice de desempenho é:
Deverão ser apresentadas:
(a) as contas das matrizes a serem utilizadas, a equação do controle ótimo, etc.
(b) os arquivos de simulação no MATLAB ou OCTAVE que resolvam numericamente o sistema ótimo;
(c) as curvas dos estados ótimos simulados numericamente;
(d) a curva do controle ótimo simulado numericamente.
2. Determine a lei de controle de realimentação ótima para o seguinte sistema:
(a) as contas das matrizes a serem utilizadas, a equação do controle ótimo, etc.
(b) os arquivos de simulação no MATLAB ou OCTAVE que resolvam numericamente o sistema ótimo;
(c) as curvas dos estados ótimos simulados numericamente;
(d) a curva do controle ótimo simulado numericamente.
Passo 1
O problema é um LQR de horizonte infinito para o sistema
onde
e o índice de desempenho é
com
Vamos determinar a lei de realimentação ótima
através da resolução da equação de Riccati algébrica e depois simular o sistema em malha fechada.
Passo 2
Definimos as matrizes do LQR:
Passo 3
A equação de Riccati algébrica (ARE) é
Em MATLAB/Octave resolvemos diretamente com
ou usando
O ganho de realimentação ótimo é
Passo 4
A lei de controle ótima em realimentação de estados é
Passo 5
Para simular, fechamos o loop e integramos
Escolhemos uma condição inicial, por exemplo
e usamos o solver . Em seguida calculamos
.
ode45
para obter
Passo 6
Arquivo MATLAB/Octave (salvar como
lqr_infinito.m
):% \(lqr_infinito\).m
A = [\(01\); -1 -1];
B = [1;1];
Q = [\(20\); \(04\)];
R \(=0.5\);
[K,P] = lqr(A,B,Q,R);
% condição inicial
x\(0=\) [1; 0];
% dinâmica em malha fechada
sys = @(t,x) (A-B*K)*x;
% simulação
[t, X] = ode45(sys, [\(010\)], x0);
% controle ótimo
U = - (K*X')';
% plots
figure;
plot(t, X(:,1), 'b', t, X(:,2), 'r','LineWidth',1.5);
xlabel('t'); ylabel('Estados'); legend('x_1','x_2');
title('Trajetórias dos estados em malha fechada');
figure;
plot(t, U, 'k','LineWidth',1.5);
xlabel('t'); ylabel('u(t)');
title('Controle ótimo u(t)');
Passo 7
Rodando e gera duas figuras:
lqr_infinito
, o MATLAB calcula numericamente
- Curvas de
e mostrando a convergência a zero. - Curva de
, o sinal de controle ótimo ao longo do tempo.
Resposta
A lei de realimentação ótima é
onde
é obtido em MATLAB via
No exemplo acima, ao executar o script, obtemos numericamente, por exemplo,
e as figuras exibem as trajetórias de
e de
em malha fechada.