Articulo de referencia

PROPIEDAD

El software de control óptimo PROPT [ 1 ] MATLAB es una plataforma de nueva generación para resolver problemas de control óptimo aplicado (con formulación ODE o DAE ) y estimaci...

El software de control óptimo PROPT [ 1 ] MATLAB es una plataforma de nueva generación para resolver problemas de control óptimo aplicado (con formulación ODE o DAE ) y estimación de parámetros .

La plataforma fue desarrollada por Per Rutquist , ganador del concurso de programación de MATLAB, en 2008. La versión más reciente admite variables binarias y enteras, además de contar con un módulo de escalado automático.

Descripción

PROPT es un motor combinado de modelado , compilación y resolución, basado en la clase de modelado TomSym , para la generación de problemas de control óptimo de alta complejidad. PROPT utiliza un método de colocación pseudoespectral (con puntos de Gauss o Chebyshev) para resolver problemas de control óptimo. Esto significa que la solución adopta la forma de un polinomio , el cual satisface la ecuación diferencial algebraica (EDA) y las restricciones de trayectoria en los puntos de colocación.

En general, PROPT tiene las siguientes funciones principales:

  • Cálculo de las matrices constantes utilizadas para la diferenciación e integración de los polinomios empleados para aproximar la solución al problema de optimización de trayectorias .
  • Transformación de la fuente para convertir expresiones proporcionadas por el usuario en código MATLAB para la función de costo.F{\displaystyle f}y función de restriccióndo{\displaystyle c}que se pasan a un solucionador de programación no lineal en TOMLAB . El paquete de transformación de fuentes TomSym genera automáticamente derivadas de primer y segundo orden.
  • Funcionalidad para graficar y calcular diversa información para la solución del problema.
  • Detección automática de lo siguiente:
    • Objetivo lineal y cuadrático.
    • Límites simples, restricciones lineales y no lineales.
    • Expresiones no optimizadas.
  • Soporte integrado para problemas de control óptimo no suaves [ 2 ] (híbridos).
  • Módulo para el escalado automático de problemas complejos relacionados con el espacio.
  • Compatibilidad con variables, controles o estados binarios y enteros.

Modelado

El sistema PROPT utiliza el motor de transformación de código fuente simbólico TomSym para modelar problemas de control óptimo. Es posible definir variables independientes , funciones dependientes, escalares y parámetros constantes:

toms tf toms t p = tomPhase ( 'p' , t , 0 , tf , 30 ); x0 = { tf == 20 }; cbox = { 10 <= tf <= 40 };toms z1 cbox = { cbox ; 0 <= z1 <= 500 }; x0 = { x0 ; z1 == 0 };ki0 = [ 1e3 ; 1e7 ; 10 ; 1e-3 ];

Estados y controles

Los estados y los controles solo se diferencian en que los estados deben ser continuos entre fases.

tomStates x1 x0 = { icollocate ({ x1 == 0 })};tomControls u1 cbox = { - 2 <= colocar ( u1 ) <= 1 }; x0 = { x0 ; colocar ( u1 == - 0.01 )};

Restricciones de límites, trayectorias, eventos e integrales

A continuación se muestran diversas restricciones de límites, trayectorias, eventos e integrales:

cbnd = initial ( x1 == 1 ); % Punto de inicio para x1 cbnd = final ( x1 == 1 ); % Punto final para x1 cbnd = final ( x2 == 2 ); % Punto final para x2 pathc = collocate ( x3 >= 0.5 ); % Restricción de ruta para x3 intc = { integrate ( x2 ) == 1 }; % Restricción integral para x2 cbnd = final ( x3 >= 0.5 ); % Restricción de evento final para x3 cbnd = initial ( x1 <= 2.0 ); % Restricción de evento inicial x1

Ejemplo de control óptimo monofásico

Oscilador de Van der Pol [ 3 ]

Minimizar:

Jincógnita,t=incógnita3(tF){\displaystyle {\begin{matrix}J_{x,t}&=&x_{3}(t_{f})\\\end{matrix}}}

Sujeto a:

{dincógnita1dt=(1incógnita22)incógnita1incógnita2+dincógnita2dt=incógnita1dincógnita3dt=incógnita12+incógnita22+2incógnita(t0)=[0 1 0]tF=50,31.0{\displaystyle {\begin{cases}{\frac {dx_{1}}{dt}}=(1-x_{2}^{2})*x_{1}-x_{2}+u\\{\frac {dx_{2}}{dt}}=x_{1}\\{\frac {dx_{3}}{dt}}=x_{1}^{2}+x_{2}^{2}+u^{2}\\x(t_{0})=[0\ 1\ 0]\\t_{f}=5\\-0.3\leq u\leq 1.0\\\end{cases}}}

Para resolver el problema con PROPT se puede utilizar el siguiente código (con 60 puntos de colocación):

toms t p = tomPhase ( 'p' , t , 0 , 5 , 60 ); setPhase ( p );tomStates x1 x2 x3 tomControls u% Suposición inicial x0 = { icollocate ({ x1 == 0 ; x2 == 1 ; x3 == 0 }) colocar ( u == - 0.01 )};% Restricciones de caja cbox = { - 10 <= icollocate ( x1 ) <= 10 - 10 <= icollocate ( x2 ) <= 10 - 10 <= icollocate ( x3 ) <= 10 - 0.3 <= collocate ( u ) <= 1 };% Restricciones de contorno cbnd = inicial ({ x1 == 0 ; x2 == 1 ; x3 == 0 });% EDO y restricciones de ruta ceq = collocate ({ dot ( x1 ) == ( 1 - x2 .^ 2 ) .* x1 - x2 + u dot ( x2 ) == x1 ; dot ( x3 ) == x1 .^ 2 + x2 .^ 2 + u .^ 2 });% Objetivo objetivo = final ( x3 );% Resuelve el problema opciones = struct ; opciones . nombre = 'Van Der Pol' ; solución = ezsolve ( objetivo , { cbox , cbnd , ceq }, x0 , opciones );

Ejemplo de control óptimo multifase

Cohete unidimensional [ 4 ] con tiempo final libre y desplazamiento de fase indeterminado.

Minimizar:

Jincógnita,t=tdot{\displaystyle {\begin{matrix}J_{x,t}&=&tCut\\\end{matrix}}}

Sujeto a:

{dincógnita1dt=incógnita2dincógnita2dt=agramo (0<t<=tdot)dincógnita2dt=gramo (tdot<t<tF)incógnita(t0)=[0 0]gramo=1a=2incógnita1(tF)=100{\displaystyle {\begin{cases}{\frac {dx_{1}}{dt}}=x_{2}\\{\frac {dx_{2}}{dt}}=a-g\ (0<t<=tCut)\\{\frac {dx_{2}}{dt}}=-g\ (tCut<t<t_{f})\\x(t_{0})=[0\ 0]\\g=1\\a=2\\x_{1}(t_{f})=100\\\end{cases}}}

El problema se resuelve con PROPT creando dos fases y conectándolas:

toms t toms tCut tp2 p1 = tomPhase ( 'p1' , t , 0 , tCut , 20 ); p2 = tomPhase ( 'p2' , t , tCut , tp2 , 20 );tf = tCut + tp2 ;x1p1 = tomState ( p1 , 'x1p1' ); x2p1 = tomState ( p1 , 'x2p1' ); x1p2 = tomState ( p2 , 'x1p2' ); x2p2 = tomState ( p2 , 'x2p2' );% Estimación inicial x0 = { tCut == 10 tf == 15 icollocate ( p1 ,{ x1p1 == 50 * tCut / 10 ; x2p1 == 0 ;}) icollocate ( p2 ,{ x1p2 == 50 + 50 * t / 100 ; x2p2 == 0 ;})};% Restricciones de caja cbox = { 1 <= tCut <= tf - 0.00001 tf <= 100 0 <= icollocate ( p1 , x1p1 ) 0 <= icollocate ( p1 , x2p1 ) 0 <= icollocate ( p2 , x1p2 ) 0 <= icollocate ( p2 , x2p2 )};% Restricciones de límite cbnd = { inicial ( p1 ,{ x1p1 == 0 ; x2p1 == 0 ;}) final ( p2 , x1p2 == 100 )};% EDO y restricciones de ruta a = 2 ; g = 1 ; ceq = { collocate ( p1 ,{ dot ( p1 , x1p1 ) == x2p1 dot ( p1 , x2p1 ) == a - g }) collocate ( p2 ,{ dot ( p2 , x1p2 ) == x2p2 dot ( p2 , x2p2 ) == - g })};% Objetivo objetivo = tCut ;% Fase de enlace enlace = { final ( p1 , x1p1 ) == initial ( p2 , x1p2 ) final ( p1 , x2p1 ) == initial ( p2 , x2p2 )};%% Resuelve el problema opciones = struct ; opciones . nombre = 'One Dim Rocket' ; constr = { cbox , cbnd , ceq , link }; solución = ezsolve ( objetivo , constr , x0 , opciones );

Ejemplo de estimación de parámetros

Problema de estimación de parámetros [ 5 ]

Minimizar:

Jpag=i=1,2,3,5(incógnita1(ti)incógnita1metro(ti))2{\displaystyle {\begin{matrix}J_{p}&=&\sum _{i=1,2,3,5}{(x_{1}(t_{i})-x_{1}^{m}(t_{i}))^{2}}\\\end{matrix}}}

Sujeto a:

{dincógnita1dt=incógnita2dincógnita2dt=12incógnita2incógnita1incógnita0=[pag1 pag2]ti=[1 2 3 5]incógnita1metro(ti)=[0,264 0,594 0,801 0,959]|pag1:2|<=1.5{\displaystyle {\begin{cases}{\frac {dx_{1}}{dt}}=x_{2}\\{\frac {dx_{2}}{dt}}=1-2*x_{2}-x_{1}\\x_{0}=[p_{1}\ p_{2}]\\t_{i}=[1\ 2\ 3\ 5]\\x_{1}^{m}(t_{i})=[0.264\ 0.594\ 0.801\ 0.959]\\|p_{1:2}|<=1.5\\\end{cases}}}

En el código que se muestra a continuación, el problema se resuelve con una cuadrícula fina (10 puntos de colocación). Posteriormente, esta solución se ajusta con 40 puntos de colocación:

toms t p1 p2 x1meas = [ 0.264 ; 0.594 ; 0.801 ; 0.959 ]; tmeas = [ 1 ; 2 ; 3 ; 5 ];% Restricciones de la caja cbox = { - 1.5 <= p1 <= 1.5 - 1.5 <= p2 <= 1.5 };%% Resuelve el problema, usando un número sucesivamente mayor de puntos de colocación para n =[ 10 40 ] p = tomPhase ( 'p' , t , 0 , 6 , n ); setPhase ( p ); tomStates x1 x2% Estimación inicial si n == 10 x0 = { p1 == 0 ; p2 == 0 }; de lo contrario x0 = { p1 == p1opt ; p2 == p2opt icollocate ({ x1 == x1opt ; x2 == x2opt })}; fin% Restricciones de contorno cbnd = inicial ({ x1 == p1 ; x2 == p2 });% EDO y restricciones de ruta x1err = suma (( atPoints ( tmeas , x1 ) - x1meas ) .^ 2 ); ceq = colocar ({ punto ( x1 ) == x2 ; punto ( x2 ) == 1 - 2 * x2 - x1 });% Objetivo objetivo = x1err ;%% Resuelve el problema opciones = struct ; opciones . nombre = 'Estimación de parámetros' ; opciones . solucionador = 'snopt' ; solución = ezsolve ( objetivo , { cbox , cbnd , ceq }, x0 , opciones );% Óptimo x, p para el punto de partida x1opt = subs ( x1 , solution ); x2opt = subs ( x2 , solution ); p1opt = subs ( p1 , solution ); p2opt = subs ( p2 , solution ); fin

Problemas de control óptimo admitidos

Referencias

  1. Rutquist, Per; MM Edvall (junio de 2008). PROPT - Software de control óptimo para Matlab (PDF) . Pullman, WA: Tomlab Optimization Inc.
  2. Banga, JR; Balsa-Canto, E.; Moles, CG; Alonso, AA (2003). "Optimización dinámica de bioprocesos: estrategias numéricas eficientes y robustas". Journal of Biotechnology.{{cite journal}}: Para citar una revista se requiere |journal=( ayuda )
  3. "Oscilador de Van Der Pol - Solución en Matlab", Página principal de PROPT , junio de 2008.
  4. "Lanzamiento de cohete unidimensional (2 tiempos libres)", página principal de PROPT , junio de 2008.
  5. "Estimación dinámica de parámetros en Matlab con PROPT", Página principal de PROPT , junio de 2008.
  6. Betts, J. (2007). "SOCS Release 6.5.0". THE BOEING COMPANY.{{cite journal}}: Para citar una revista se requiere |journal=( ayuda )
  7. Liang, J.; Meng, M.; Chen, Y.; Fullmer, R. (2003). "Resolución de problemas complejos de control óptimo mediante un servidor de optimización habilitado para red (NEOS)". Escuela de Ingeniería, Universidad Estatal de Utah, EE. UU., Universidad de Hong Kong, China.{{cite journal}}: Para citar una revista se requiere |journal=( ayuda )
  8. Carrasco, EF; Banga, JR (septiembre de 1998). "UN MÉTODO HÍBRIDO PARA EL CONTROL ÓPTIMO DE PROCESOS QUÍMICOS". Universidad de Gales, Swansea, Reino Unido: Conferencia Internacional UKACC sobre CONTROL 98.{{cite journal}}: Para citar una revista se requiere |journal=( ayuda )
  9. Vassiliadis, VS; Banga, JR; Balsa-Canto, E. (1999). "Sensibilidades de segundo orden de sistemas dinámicos generales con aplicación a problemas de control óptimo". Chemical Engineering Science . 54 (17): 3851– 3860. Bibcode : 1999ChEnS..54.3851V . doi : 10.1016/S0009-2509(98)00432-1 .
  10. Luus, R. (2002). Programación dinámica iterativa . Chapman and Hall/CRC.
  11. Fabien, BC (1998). "Una aplicación Java para la solución de problemas de control óptimo". Stevens Way, Box 352600 Seattle, WA 98195, EE. UU.: Ingeniería Mecánica, Universidad de Washington.{{cite journal}}: La cita de la revista requiere |journal=( ayuda ) CS1 mantenimiento: ubicación ( enlace )
  12. Jennings, LS; Fisher, ME (2002). "MISER3: Manual de usuario de la caja de herramientas de control óptimo, Matlab Beta Versión 2.0". Nedlands, WA 6907, Australia: Departamento de Matemáticas, Universidad de Australia Occidental.{{cite journal}}: La cita de la revista requiere |journal=( ayuda ) CS1 mantenimiento: ubicación ( enlace )
  13. Banga, JR; Seider, WD (1996). Floudas, CA; Pardalos, PM (eds.). Optimización global de procesos químicos mediante algoritmos estocásticos: estado del arte en optimización global: métodos computacionales y aplicaciones . Dordrecht, Países Bajos: Kluwer Academic Publishers. pp. 563–583 . ISBN  0-7923-3838-3.
  14. Dolan, ED; More, JJ (enero de 2001). "Evaluación comparativa de software de optimización con COPS". 9700 South Cass Avenue, Argonne, Illinois 60439: LABORATORIO NACIONAL DE ARGONNE.{{cite journal}}: La cita de la revista requiere |journal=( ayuda ) CS1 mantenimiento: ubicación ( enlace )
  • TOMLAB - Desarrollador y distribuidor del software.
  • TomSym - Motor de transformación de código fuente utilizado en software.
  • PROPT - Página principal de PROPT.
  • SNOPT : solucionador predeterminado utilizado en PROPT.