Saltar al contenido

NMPC – Control Predictivo Basado en Modelo No Lineal

En esta entrada, nos adentraremos en el Control Predictivo Basado en Modelo No Lineal (NMPC – Nonlinear Model Predictive Control). Hasta ahora, hemos enfocado nuestros esfuerzos en el control predictivo lineal, debido a que en muchas ocasiones los sistemas industriales pueden ser bien representados por modelos lineales. Sin embargo, cuando los sistemas son inherentemente no lineales, o cuando los controladores lineales no logran cumplir los objetivos deseados, se recurre al NMPC.

¿Qué es el Control Predictivo No Lineal (NMPC)?

El Control Predictivo No Lineal (NMPC) es una técnica avanzada de control que extiende el concepto del control predictivo lineal para manejar sistemas cuya dinámica es no lineal. La diferencia principal respecto al control predictivo lineal (MPC) radica en que el NMPC necesita resolver un problema de optimización no lineal en cada intervalo de control, mientras respeta las restricciones del sistema.

En un sistema lineal, como en los controladores DMC, GPC o en espacio de estados, se suele resolver un problema de optimización cuadrático. No obstante, en el caso del NMPC, la optimización implica programación no lineal, que es más compleja, ya que debe lidiar con restricciones no lineales y dinámicas complejas del proceso.

El objetivo del NMPC sigue siendo el mismo: minimizar una función de costo que evalúa el error entre el valor deseado y el valor real de salida del sistema, mientras se respetan las restricciones del proceso.

Formulación Básica del NMPC

La formulación de un controlador NMPC es similar a la del control predictivo lineal, con la principal diferencia en la resolución de modelos no lineales del proceso:

\begin{matrix}
\min\ J(x,u)& \\
{\rm s.a}\ \ : & \\
& x_{k+j}=f(x_{k+j-1},u_{k+j-1})\\
&y_{k+j}=h(x_{k+j},u_{k+j}) \\
& y_{min}\leq y_{k+j}\leq y_{max},\ j=1,2,...,N\\
& \Delta u_{min}\leq \Delta u_{k+j}\leq \Delta u_{max}
\end{matrix}

Donde continuamos minimizando una función cuadratica (\min\ J(x,u)) pero en las restricciones vamos a tener que solucionar el modelo No Lineal del proceso (x_{k+j}, y_{k+j}) junto con las restricciones de operación del proceso.

Técnicas para Resolver el NMPC

Existen varias técnicas para resolver los problemas que plantea el NMPC, cada una con sus ventajas y desventajas en cuanto a complejidad computacional y precisión.

1. Programación Cuadrática Secuencial (SQP):

Con esta técnica, se resuelve el problema de optimización simultáneamente, integrando el modelo no lineal, las restricciones físicas y la trayectoria óptima del control en cada ciclo de optimización. Este enfoque es más preciso, pero requiere una alta capacidad computacional.

2. Combinación Lineal de Soluciones No Lineales:

Este método combina varios modelos lineales obtenidos en diferentes puntos de operación del proceso no lineal. Luego, las salidas de estos modelos se combinan usando diferentes estrategias, como lógica difusa o ponderaciones lineales basadas en la distancia entre los puntos de operación.

3. Modelos Lineales Dinámicos con Componentes No Lineales Estáticos:

Una estrategia híbrida en la cual la parte dinámica del proceso se modela con ecuaciones lineales, mientras que ciertos componentes no lineales (por ejemplo, actuadores) se modelan de manera no lineal.

NMPC – Programación Cuadrática Sucesiva (o Secuencial)

El objetivo de esta técnica es diseñar un control avanzado NMPC (Control Predictivo con Modelo No lineal) aplicado sobre algún proceso el cual está modelado por ecuaciones diferenciales NO lineales.

Las ecuaciones diferenciales son reducidas a ecuaciones algebraicas aplicando algún método de discretización, por ejemplo usando el método de colocación ortogonal por elementos finitos, que es un caso particular del método de los residuos. Las ecuaciones del modelo son resueltas simultaneamente con las restricciones del proceso dentro de una otimización de Programación Cuadrática Sucesiva (SQP) (BIEGLER, 1984).

NMPC – Combinación Lineal

Describe el sistema por varios modelos no lineales a lo largo de la trayectoria del proceso, para eso se hace el diagrama de la respuesta estática del sistema o diagrama de soluciones, y para cada punto de operación, se linealiza y se calcula un MPC lineal:

Combinacion Lineal NMPC

Esta estrategia de control combina las soluciones encontradas en cada punto de operación y en sus regiones próximas para generar el control a ser aplicado. Para determinar cual región de cada punto usar, existen diferentes técnicas como (fuzzy, ponderaciones por distancia, etc)

Si el proceso se encuentra entre un punto intermedio. ¿Cuál MPC lineal debo escoger? Para eso debo establecer cual serán mis estrategias, tales como lógica Fuzzy o simplemente haciendo ponderaciones lineales. Donde Calculo Mi control u1 con el DMC1 y calculo mi control u2 con el DMC2, luego hago una ponderación lineal basado en la distancia con el parámetro \alpha, \in[0,1]. Es decir estoy ponderando un poco cada acción de control

u=\alpha u_1+(1-\alpha) u_2

Otra forma alternativa, es inicialmente hacer la descripción de todos los modelos lineales igual al paso anterior.

Luego hago una combinación lineal de todos esos modelos para generar un único modelo Lineal.

Y luego aplico un control predictivo para el modelo Lineal.

O sea, por ejemplo calcularía la predicción en \hat{y}_1 y \hat{y}_2. Y con esas predicciones se calcula una predicción ponderada:

\hat{y}=\alpha \hat{y}_1+(1-\alpha) \hat{y}_2

Y aplica un único MPC basado en ese modelo.

 Implementación del NMPC Explícito usando Single Shooting en MATLAB

El control predictivo con modelo no lineal explícito (NMPC) es una variación del NMPC tradicional, donde en lugar de resolver un problema de optimización a cada paso de tiempo, se pre-calculan soluciones para diferentes regiones operativas del proceso. Esto reduce significativamente el tiempo de cálculo en línea y hace que el controlador sea adecuado para sistemas que requieren decisiones rápidas. En particular, el método de «Single Shooting» es una técnica popular en la implementación del NMPC explícito, la cual integra las ecuaciones diferenciales no lineales del sistema y luego optimiza la trayectoria completa en un solo bloque.

¿Cómo funciona el NMPC explícito con Single Shooting?

La técnica de Single Shooting es un método común para implementar el NMPC explícito. A continuación te explico cómo funciona:

  1. Formulación del problema: En esta técnica, se integra el modelo no lineal desde un estado inicial usando un conjunto de variables de control predefinidas. A diferencia de otros enfoques, como el «Multiple Shooting», aquí toda la trayectoria del sistema es calculada de una sola vez, lo que reduce la complejidad del problema a resolver.
  2. Optimización global: El algoritmo busca minimizar una función objetivo basada en el error entre la salida esperada y la salida real, resolviendo simultáneamente las restricciones del sistema. Al realizar todo este cálculo offline, el controlador resultante puede ser ejecutado rápidamente en tiempo real.
  3. Ventajas: Al pre-calcular las soluciones, este tipo de controlador es muy eficiente en aplicaciones de tiempo real, ya que reduce el procesamiento necesario en línea y es particularmente útil para sistemas con restricciones complejas y no linealidades pronunciadas.

Ejemplo de Implementación en MATLAB

En el siguiente video, te muestro cómo implementar un NMPC explícito usando la técnica de Single Shooting aplicado al reactor no lineal de Van de Vusse. Este ejemplo muestra desde la creación del modelo matemático no lineal hasta su implementación en MATLAB, con explicaciones detalladas de cada paso.


Bibliografia

  • BIEGLER, L. (1984). Solutíon of Dynamic Optimizatíon Problems by Successive Quadratic Programming and Orthogonal Collocation. Comput. chem. Engng., 243-248.

Entradas relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Comentarios (4)

Los temas abordados son de excelente nivel académico.
Reciba un sincero agradecimiento por la gentileza de compartir su conocimiento.
Particularmente, me interesó el control NMPC; actualmente trabajo con reactores batch y tengo pendiente enfocar un algoritmo NMPC basado en NDMC.

Responder

Boa tarde, Sergio. Primeiramente, gostaria de parabenizar por esta página. É muito raro encontrar um lugar na internet com tanto conteúdo de qualidade e de forma super didática. Gostaria de saber se é possível você compartilhar os arquivos usados para o exemplo de NMPC com SQP e colocação ortogonal, mostrado no vídeo para o reator Van de Vusse. Eu gostaria de passar esse exemplo para Python e usar na minha disciplina de Controle aqui na UFES. Parabenizo novamente e muito obrigado pela atenção.

Responder

Oi professor Julio, esse código ainda não está 100%, eu devo trabalhar nele um pouco para melhorar os resultados. Vou entrar em contato por email. Obrigado por comentar.

Responder

Hola ,Me podría ayudar con un ejemplo de MPC no lineal en matlab

Responder