Optimo 1

CONTROL ÓPTIMO Control óptimo es una técnica matemática usada para resolver problemas de optimización en sistemas que ev

Views 261 Downloads 4 File size 664KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

CONTROL ÓPTIMO Control óptimo es una técnica matemática usada para resolver problemas de optimización en sistemas que evolucionan en el tiempo y que son susceptibles de ser influenciados por fuerzas externas. Pueden ser sistemas que evolucionan en el tiempo el cuerpo humano y el sistema económico. Una vez que el problema ha sido resuelto el control óptimo nos da una senda de comportamiento para las variables de control, es decir, nos indica qué acciones se deben seguir para poder llevar a la totalidad del sistema de un estado inicial a uno final de forma óptima. La teoría de control óptimo ha sido desarrollada desde principios de los años 50 por un equipo de matemáticos rusos dirigidos por Pontryagin. Esta teoría constituye una herramienta complementaria para resolver los problemas de optimización dinámica, integrando la teoría de cálculo de variación y el principio de optimalidad asociado a la ecuación de Bellman. Estas teorías que abordan el mismo tema, tienen inevitablemente imbricaciones muy estrechas, incluso históricamente los desarrollos de Bellman y del equipo de Pontryagin, se han llevado a cabo de manera paralela. Sería interesante mostrar los lazos existentes entre estas tres teorías, pero este artículo se centra en presentar de manera simple la teoría de control óptimo únicamente El objetivo de este artículo es proveer los principales resultados de esta teoría con el fin de que éstos puedan ser directamente aplicados por un lector que tenga poco o ningún conocimiento de la teoría de control óptimo. Además, se intentará mostrar la diversidad de aplicaciones posibles de esta teoría, exponiendo los ejemplos tradicionales donde la dinámica es función del tiempo, así como otros más específicos traídos de la teoría de los contratos, la cual revela que el control óptimo puede ser utilizado para problemas muy diferentes. Esta presentación de la teoría de control óptimo tiene un doble objetivo. Se exponen en una primera parte las principales intuiciones sobre la cual reposa esta teoría. Esta parte es igual o más importante que la segunda ya que no es frecuente encontrar en la literatura trabajos que aborden el control óptimo de esta manera, así mismo, permite comprender mejor el sentido de la formalización de problemas expuestos subsecuentemente. La siguiente parte constituye una guía de utilización de la teoría de control óptimo exponiendo los casos en los que se puede aplicar a problemas económicos contemporáneos, presentando los teoremas asociados a cada uno de esos casos, los cuales se ilustrarán usualmente con ejemplos.

Las intuiciones de la teoría del control óptimo Se empieza por exponer las principales intuiciones que se derivan del principio del máximo explicando la construcción de un Hamiltoniano. Luego se exponen los teoremas proveyendo las condiciones necesarias y suficientes de optimalidad que se aplican a un problema de control estándar. Enseguida se dan dos ejemplos que permiten aplicar las condiciones derivadas de esos teoremas.

Principio del Máximo e Intuiciones La teoría de control óptimo permite resolver problemas dinámicos de naturaleza muy variada, donde la evolución de un sistema que depende del tiempo puede ser controlada en parte por las decisiones de un agente. En esta parte se hablará de un sistema dinámico general sin hacer referencia a una situación precisa y donde existe un agente, denominado planificador, que toma las decisiones. En cada momento t el sistema puede estar descrito por un vector de estado X ε Rn. El planificador escoge igualmente en cada momento un vector de control U ε Rm. La relación que une el vector de control al vector de estado esta descrita de la siguiente manera:

Opciones diferentes del valor de la variable de control implican trayectorias diferentes del sistema dinámico. El planificador debe tener en cuenta esta restricción para determinar el vector de control que maximice su objetivo intertemporal:

Para el problema de maximización se considerarán el horizonte, las condiciones iniciales y finales como dadas. El planificador dispone de un vector de estado inicial predeterminado x0. El problema de control óptimo consiste entonces en establecer la trayectoria óptima, es decir, la trayectoria que maximiza el objetivo del planificador, teniendo en cuenta la relación que une el vector de estado al vector de control. El principio del máximo elaborado por Pontryagin permite descomponer este problema en dos etapas. La primera consiste en devolverse a un problema de optimización estática a cada instante t mientras que la segunda etapa es la solución de un sistema de ecuaciones diferenciales definido por las condiciones necesarias de optimalidad del problema estático. La primera etapa reposa sobre la lógica siguiente: a cada instante t , el planificador dispone de un vector de estado x(t) y debe escoger un vector de control U(t) que determina simultáneamente el valor del objetivo al instante t , dado por Ft(.) y la variación del vector de estado definido por x(t). La escogencia del vector genera entonces dos efectos: un primero efecto, inmediato a través del valor instantáneo del objetivo, un segundo, al nivel de cambios de la variable de estado. Intuitivamente se sabe que si el vector de control es escogido para maximizar sólo el valor instantáneo del objetivo, esta escogencia tiene poca probabilidad de ser óptima. Se presenta entonces un arbitraje en la determinación del vector de control óptimo entre el valor que uno puede asignar al objetivo instantáneo y la trayectoria tomada por la variable de estado que tendrá un efecto sobre los valores futuros de la función objetivo.

La variación de la variable de estado puede entonces ser interpretada como una restricción. De manera similar al método utilizado para resolver un problema de optimización estática, este arbitraje es tenido en cuenta asociando un precio a esta restricción. Técnicamente ésta consiste en escribir una función objetivo modificado que tiene en cuenta estos dos efectos. q(t) designa el vector de multiplicadores (o de precios) asociado a las variaciones del vector de estado (en la momento t ), después la determinación del vector de control. Este objetivo modificado, llamado hamiltoniano, está definido de la siguiente manera:

El primer componente del Hamiltoniano designa el efecto del vector de control sobre el valor instantáneo del objetivo. El segundo componente expresa el aumento futuro del objetivo seguido a la variación del vector de estado. Un Hamiltoniano, es entonces la suma del valor instantáneo del objetivo y de los valores futuros de este objetivo teniendo en cuenta la variación del vector de estado, ponderada por el precio asociado a esta variación. El arbitraje anteriormente descrito aparece claramente al momento de escribir la condición de primer orden con respecto al vector de control.

La condición (4) muestra que el planificador debe arbitrar entre las ganancias inmediatas generadas por el valor del objetivo al instante t y la pérdida generada por la reducción de oportunidades futuras, expresado a través de los valores futuros del vector de estado. Sin embargo, el arbitraje que se acaba de exponer sólo es óptimo si el vector de multiplicador de q(t) es definido correctamente, es decir, de manera que refleje el impacto marginal del vector de estado sobre el objetivo del planificador. Se vuelve entonces intuitivo que el vector de multiplicadores debe verificar:

Dicho de otra forma, el multiplicador debe ser igual al valor marginal del objetivo con respecto a la variable de estado. Adicionalmente, la variación del valor objetivo, seguido de una variación de la variable de estado en el tiempo está dada por:

Es conveniente maximizar el valor de esta variación de la variable de estado y del objetivo instantáneo Ft (ut,xt) con respecto a la variable de estado. Es decir, maximizar la siguiente expresión respecto a xt:

Escrito de otra forma,

Se obtiene

El cual se conoce generalmente bajo la forma:

Se presenta a continuación el primer teorema relativo a las condiciones necesarias de optimalidad del problema de control óptimo siguiente:

IMPLEMENTACIÓN DE CONTROLADOR ÓPTIMO PARA MOTOR DC Estudio de la dinámica del sistema a controlar

Un motor de C.D. controlado por armadura o controlado por inducido, se puede representar esquemáticamente como se ilustra en la figura 16. En la figura Ra y La representan la resistencia del devanado de armadura y la inductancia del mismo. Las ecuaciones simplificadas referidas a esta figura las describimos a continuación:

Fig. Modelo matemático de motor DC

Diagrama de bloques del sistema

Fig. Modelo de motor DC Desarrollando se tiene la función transferencia es de la forma, tomando TF = 0:

Identificación de parámetros del motor DC Circuitos de adquisición de datos: Para la identificación de parámetros del motor DC se tomo la respuesta de este a un escalón; se tomo la lectura del encoder hacia un circuito conversor de la frecuencia a voltaje el cual se llevo hacia la entrada análoga de tarjeta de adquisición de datos (NIDAQ 6009). Se muestra el diagrama de bloques del sistema.

Fig. Diagrama de bloque para modelar motor DC

Circuito de velocidad conversor de frecuencia voltaje:

Fig. Circuito conversor de frecuencia voltaje

Circuito De potencia para motor DC:

Fig. Puente H para motor DC

Se desarrollo un programa en LABVIEW para la adquisición de datos del motor:

Fig. Programa de adquisición de datos en LABVIEW Análisis de la data en Matlab La data adquirida se grafico en MATLAB el cual presento la siguiente respuesta.

clc; close all; clear all load motor3_red.lvm DATA = motor3_red; t = DATA(:,1); y = DATA(:,2); plot(t,y); RESPUESTA MOTOR DC ESCALON 12v 4.5

4

3.5

3

V(s)

2.5

2

1.5

1

0.5

0

-0.5

0

1

2

3

4

5

6

7

8

t(s)

Fig. Respuesta de motor a escalón 12V Luego de esto se ajusta la data para aplicarle el algoritmo de identificación por interpolación lineal. RESPUESTA MOTOR DC 4.5 4 3.5 3

V

2.5 2 1.5 1 0.5 0 0

0.5

1

1.5

t(s)

Fig. Para pasar algoritmo de interpolación lineal Con la data se pasa el algoritmo de interpolación lineal en el cual se obtiene la función transferencia del motor:

5281 --------------------s^2 + 125 s + 1037

Sintonización del motor DC por la regla de G – O y Z - N Para Z – N: Se pasa el algoritmo de sintonización por Z -N los cuales dan los siguientes resultados: Curva Teória del motor DC

5

4.5

4

3.5

Amplitud

3

2.5

2

1.5

1

0.5

0 0

0.1

0.2

0.3

0.4

0.5 t(seg)

0.6

0.7

0.8

0.9

1

Fig. Sintonización Z-N Kp = 2.9545 Ti = 0.1475 Td = 0.0037 Kp =2.9545 Ki = 20.0255 Kd =0.0108 Función transferencia del controlador. 0.01083 s^2 + 2.955 s + 20.03 -------------------------------------S Se pasa el algoritmo de sintonización por G – O los cuales dan los siguientes resultados: Para G – O se tiene: Kp = 2.5688 Ki = 21.9717 Ti = 0.1169 Kd = 0.0184 Td = 0.0072

PID Galier Otto 5 ZN GO 4.5

4

3.5

3

2.5

2

1.5

1

0.5

0

0

0.05

0.1

0.15

0.2

0.25

Fig. Comparación de las sintonizaciones Z –N y G - O Función transferencia del controlador: 0.01841 s^2 + 2.569 s + 21.97 ------------------------------------S

DISEÑO DEL CONTROLADOR ÓPTIMO Simulación del controlador en LABVIEW

0.3

Interfaz de visualización

RESULTADOS Luego del diseño y programación se procede a la simulación del controlador; se puede observar que el sistema inicialmente presenta un sobrepico (Línea negra), debido que la aproximación lineal desarrollada no es tan exacta, se observa los mismos picos en la señal de salida al motor.

CONCLUSIONES • • • • •

Se logro implementar un control de velocidad de motor en el cual se visualizan que presentan un sobreimpulso debido a lo poca linealidad del sistema. Se puede mejorar la linealidad del sistema aumentando el número reglas del sistema. Se observa que bajo esas reglas el control PID por G – O tiene mejor desempeño. El modelo identificado ese si cumple con los requerimientos del sistema, para lo cual se visualiza las curvas características. Se logra manejar correctamente las muestras del sistema.

ANEXOS Programa de identificación de parámetros de motor DC clc; close all; clear all load motor_valde.lvm DATA = motor_valde; t = DATA(:,1); y = DATA(:,2); %plot(t,y); % y2 = y(4342:1:5300); t2 = t(4342:1:5300); N = length(t2); %figure %plot(t2,y2) % % eliminando offset ymin = min(y2); tmin = min(t2); y3 = y2 - ymin*ones(N,1); t3 = t2 - tmin*ones(N,1); figure plot(t3,y3), xlabel('t(s)'), ylabel('V(voltaje)'), title('Respuesta de motor a escalon') %tomando valor en estado estacionario N = length(y3); A = median(y3(N-200:N)); x_data = t3(40:180); y_data = log(A-y3(40:180)); % %mejor pendiente figure plot(x_data, y_data);title('ln(A - y(t))'),xlabel('t(s)'), ylabel('Voltaje'); %%

%calculando pendiente t_min =0.05, t_max = 0.15; xi =t_min:0.002:t_max; yi = interp1(x_data,y_data,xi,'linear'); figure plot(x_data,y_data,'r'),title('Calculo de mejor pendiente'); xlabel('t(s)'), ylabel('V voltaje'); hold on plot(xi,yi,'.k'); % % %calulando p1=m p1 = (yi(1) - yi(length(yi)))/(t_max-t_min) % %calculo de B: B(t)= (y(t)- A)/ exp(-p1*t); B = (y3 - A)./exp(-p1*t3); figure plot(t3, B, 'k.'); title ('Grafica de B(t)= y(t)-A/exp(-p1*t)'); hold on plot([0 1], [median(B(10:50)) median(B(10:50))],'b:'), axis([0.02 0.2 -10 10]) B2 = median(B(5:100)) %% %calculo de C = -(A+B) C = -(A+B2) % %calculo de P2 p2 = -(B2/C)*p1 %% %graficando: ln(y2)= ln(y- (A + Be^(-p1t)) )= ln(Ce^(-p2t)); % % y4 = log(y3 - (A+B*exp(-p1.*t3))); % % figure % % plot(t3(1:6)',y4(1:6)','b') % % hold on % % xii = 0.2: 0.1:0.5; % % yii = interp1(t3(1:6)', y4(1:6)', xii, 'linear'); % % plot(xii,yii); %% % % %comprobando el valor de p2 % % %a = yii(3); % % %b = yii(1); %% % %calculo de la ganancia k = A*p1*p2 % %funcion transferencia experimental Gexp = tf(k,conv([1 p1], [1 p2])) Gexp2= zpk(Gexp) [a b c d]= tf2ss(k,conv([1 p1], [1 p2])); t4 = 0:0.001:1; yexp = step(Gexp,t4); figure plot(t4,yexp,'b');title('Gexperimental'), ylabel('Voltaje'), xlabel('t(s)');

hold on plot(t3,y3,'r'); legend('G_{experimental}', 'G_{data}',4); %% %Función transferencia identificada %Transfer function: % 5281 %-----------------%s^2 + 125 s + 1037 Programa de identificación de parámetros de motor DC clc; close all; clear all load motor_valde.lvm DATA = motor_valde; t = DATA(:,1); y = DATA(:,2); %plot(t,y); % y2 = y(4342:1:5300); t2 = t(4342:1:5300); N = length(t2); %figure %plot(t2,y2) % % eliminando offset ymin = min(y2); tmin = min(t2); y3 = y2 - ymin*ones(N,1); t3 = t2 - tmin*ones(N,1); figure plot(t3,y3), xlabel('t(s)'), ylabel('V(voltaje)'), title('Respuesta de motor a escalon')

%tomando valor en estado estacionario N = length(y3); A = median(y3(N-200:N)); x_data = t3(40:180); y_data = log(A-y3(40:180)); % %mejor pendiente figure plot(x_data, y_data);title('ln(A - y(t))'),xlabel('t(s)'), ylabel('Voltaje'); %% %calculando pendiente t_min =0.05, t_max = 0.15; xi =t_min:0.002:t_max; yi = interp1(x_data,y_data,xi,'linear'); figure plot(x_data,y_data,'r'),title('Calculo de mejor pendiente'); xlabel('t(s)'), ylabel('V voltaje'); hold on plot(xi,yi,'.k'); % % %calulando p1=m p1 = (yi(1) - yi(length(yi)))/(t_max-t_min) % %calculo de B: B(t)= (y(t)- A)/ exp(-p1*t); B = (y3 - A)./exp(-p1*t3); figure

plot(t3, B, 'k.'); title ('Grafica de B(t)= y(t)-A/exp(-p1*t)'); hold on plot([0 1], [median(B(10:50)) median(B(10:50))],'b:'), axis([0.02 0.2 -10 10]) B2 = median(B(5:100)) %% %calculo de C = -(A+B) C = -(A+B2) % %calculo de P2 p2 = -(B2/C)*p1 %% %graficando: ln(y2)= ln(y- (A + Be^(-p1t)) )= ln(Ce^(-p2t)); % % y4 = log(y3 - (A+B*exp(-p1.*t3))); % % figure % % plot(t3(1:6)',y4(1:6)','b') % % hold on % % xii = 0.2: 0.1:0.5; % % yii = interp1(t3(1:6)', y4(1:6)', xii, 'linear'); % % plot(xii,yii); %% % % %comprobando el valor de p2 % % %a = yii(3); % % %b = yii(1); %% % %calculo de la ganancia k = A*p1*p2 % %funcion transferencia experimental

Gexp = tf(k,conv([1 p1], [1 p2])) Gexp2= zpk(Gexp) [a b c d]= tf2ss(k,conv([1 p1], [1 p2])); t4 = 0:0.001:1; yexp = step(Gexp,t4); figure plot(t4,yexp,'b');title('Gexperimental'), ylabel('Voltaje'), xlabel('t(s)'); hold on plot(t3,y3,'r'); legend('G_{experimental}', 'G_{data}',4);

%% %Función transferencia identificada %Transfer function: %

5281

%-----------------%s^2 + 125 s + 1037