Problema

Assim como nos casos 8 e caso 9, deseja-se aqui que o sinal siga alguma trajetória de referência. Mas nesse tipo de problema conhecido como rastreador ou tracking, o valor do sinal x(t) é obrigado a seguir qualquer tipo de trajetória de referência diferente de um valor constante. Essa trajetória de referência pode ser uma reta, uma curva, um polinômio, enfim qualquer tipo de trajetória contínua. Uma aplicação em economia seria o Banco Central seguindo uma curva meta para a inflação, ou juros, ou venda de títulos. Em engenharia, diversas aplicações são encontradas para motores e controladores automáticos de fábircas. Mesmo em eventos do dia a dia é possível encontrar reguladores tais como nos refrigeradores domésticos.

O problema principal de otimização dinâmica continua o mesmo, ou seja, do ponto de vista matemático deseja-se


onde agora troca-se o sinal constante xref por um sinal variável chamado de rast(t)

Quem é rast(t)? Por exemplo pode ser uma reta que obrigará o sinal x(t) a segui-lo o mais perto e rápido possível. A noção de velocidade de aproximação no alvo rast(t) nesse caso é dado em termos do parâmetro P. Ele é o peso que vai encarecer ou baretear a função custo. Quanto maior o valor do peso P, mais rápido o controlador fará o sinal x(t) se aproximar do sinal de referência rast(t) para tentar não deixar o custo tão alto.

Vamos supor como exemplo mais fácil que a função rast(t) seja uma reta do tipo:

Então o controlador deverá fazer o sinal x(t) seguir essa reta o mais próximo possível. Qualquer desvio mais forte de x(t) para longe do sinal de referência encarece a função custo e será "punida" pelo controlador u(t) trazendo-a de volta. Vamos supor que desejamos que um sistema dinâmico simples tenha que acompanhar a reta rast(t)=-0.1t+1 durante um tempo t = 10. Antes de atingir esse tempo final t = 10 o sinal de x(t) que tem sua própria dinâmica deverá estar praticamente colado na reta para obter o menor custo possível.

Do ponto de vista formal de otimização, deseja-se



Com


 

 

Solução

A solução analítica deve repetir todos os passos explicados no caso 8, substituindo os valores tf=10, P=10 e com o sinal de referência variável xref(t) =-0.1t+1 para se obter a solução final. É um exercício interessante para se compreender o problema do regulador que fica ao leitor para sua verificação.

 

 

Programação - Solução Numérica

A solução numérica pode ser resolvida via Matlab novamente, usando o mesmo recurso de toolbox e código conhecido como bvp4c.m. O programa é uma mera repetição do caso 8 e do caso 9, mas agora substituindo os valores do tempo final, peso do custo P e valor de referência. Obviamente que a função hamiltoniana vai ser alterada bem como a equação adjunta, visto que agora o valor de referência não é nulo e fará parte dessa equação.

Hamiltoniana


Vamos adotar apenas como simplicidade de notação que as variáveis x(t)=x e u(t)=u para não carregar o parêntesis nas notações das derivadas. Então,



Adjunta



Controle Ótimo


Ao inserir na programação essa alteração, o resultado obtido é mostrado na figura a seguir:

 

 

SINAL x(t)
CONTROLADOR u(t)

ADJUNTA DA DINÂMICA(lambda)

 

Observa-se que nesse caso o controle (gráfico à direita) atuando forte para trazer o sinal x(t) na reta de referência (pontilhado em vermelho no primeiro gráfico à esquerda). O controle faz isso no sentido de "baratear" o custo final. Uma vez atingindo a reta de referência, o controle torna-se nulo fazendo apenas a dinâmica agir para manter o sinal x(t) na referência. O sinal é então rastreado o tempo todo e feita uma somatória das diferenças (a integral de custo significa isso) para ver se a trajetória não está saindo do controle. Caso algo faça a trajetória se desviar da referência, o controlador atua trazendo x(t) de volta.

 

Algoritmo do Rastreador(tracking) - Matlab

clear all
global T
global uf
global x0
global y0
global xf
global yf
global Q
global R
global rast
global P
 
T=10;
x0=2;
xf=2;
Q=10;
R=1;
P=100;
rast=1;
 
H =[]; G =[]; x = []; J = [];
%===============================INICIALIZACAO PARAMETROS AIDS (P013)
 
type TRACKInit;
type TRACKM;
type TRACKRes;
type TRACKM;
%===================================================
close all;
solinit = bvpinit(linspace(0,1,101),@TRACKInit);
options = bvpset('Stats','on','RelTol',1e-6);
 
sol = bvp4c(@TRACKM,@TRACKRes,solinit,options);
 
t = sol.x;
x = sol.y;
 
time=t*x(4,length(t));
 
for i=1:1:size(t,2)
%   
    mm1(i) = -x(3,i)/2;
    reta(i)=-0.1*t(i)*T+1;
 
end;   
  
clf reset
subplot(221)
plot(time,x(1,:),'-k',time,reta,'--k')
xlabel('time')
ylabel('x(t)')
grid
 
 
subplot(222)
plot(time,mm1,'-k')
xlabel('time')
ylabel('controle')
grid
 
subplot(223)
plot(time,x(3,:),'-k')
xlabel('time')
ylabel('lambda')
grid

 

FUNCTION DO RASTREADOR E DINÂMICA

function dxdt = TRACKM(t,x);
global Q
global R
global rast
global T
 
u=-x(3)/(2*R);
rast=-0.1*t*T+1;
dxdt = [(-x(1)+u)*x(4);
         (Q*(x(1)-rast)^2+R*u^2)*x(4);
        (x(3)-2*Q*x(1)+2*Q*rast)*x(4);
        0];

 

 

 

Voltar ao índice de otimização dinâmica

 

 

Caso10: Rastreador (Tracking)