Confronto del modello di previsione ideale e basato sui dati nel controller MPC

Aug 20 2020

Ho implementato un controller MPC non lineare per un sistema con dinamiche sconosciute presunte, dove il modello di previsione è dato da un modello NARX discreto secondo

$$y_{k+1} = f(w_k) = f(x_k, x_{k-1}, y_k, y_{k-1}, y_{k-2})$$

per$y_{k+1} \in \mathbb{R}^{1 \times 1}$, con 2 ritardi di ingresso, descritti da$x$, e 3 ritardi di uscita, indicati$y$. Qui$f(\cdot)$è approssimato dai dati di input e output disponibili. Ciò si traduce nel seguente modello di spazio degli stati:

$$x_{k+1} = \begin{bmatrix} y_{k+1} \\ y_{k} \\ y_{k-1} \\ u_{k-1} \end{bmatrix} = \begin{bmatrix} f(w_k) \\ y_{k} \\ y_{k-1} \\ u_{k-1} \end{bmatrix} $$

Per confrontare le prestazioni del controller MPC basato sui dati, voglio confrontarlo con un controller MPC che utilizza gli ODE come modello di previsione, poiché ho questo disponibile. Le ODE sono discretizzate e implementate come un modello di differenza discreta secondo

$$z_{k+1} = g(z_k, u_k)$$

dove$z_{k+1} \in \mathbb{R}^{3 \times 1}$. La previsione si ottiene usando quello

$$ y_{k+1} = C^{T}z_{k+1}$$

dove$C = \begin{bmatrix}1 & 0 & 0 \end{bmatrix}$.

Ora devo formulare un modello NARX utilizzando il modello di previsione esatto. La domanda è ora, al fine di rendere i due controllori il più comparabili possibile, la rappresentazione dello spazio degli stati che utilizza il modello di previsione esatto dovrebbe essere la seguente

$$x_{k+1} = \begin{bmatrix} y_{k+1} \\ y_{k} \\ y_{k-1} \\ u_{k-1} \end{bmatrix} = \begin{bmatrix} C^{T}g(z_k, u_k) \\ y_{k} \\ y_{k-1} \\ u_{k-1} \end{bmatrix} $$

Ha senso, considerando il fatto che$g(z_k, u_k)$non dipende dall'intero vettore di stato NARX come nel modello approssimato?

Risposte

1 unobservable_node Aug 20 2020 at 18:48

Per entrambi gli scenari, ovvero basato sui dati e basato su modello, si avranno stati, output e input diversi. Cioè, per il caso basato sui dati, diciamo che il tuo controller MPC lo è$\mathcal{D}$che genera l'input$u_k$. Qui, hai il seguente sistema$$ \begin{array}{ccl} x_{k+1} &=& \left[\begin{array}{c} f(w_k) \\ y_k \\ y_{k-1} \\ u_{k-1} \end{array}\right] \\ y_{k+1} &=& f(w_k). \end{array} $$

Per lo scenario basato su modello, supponiamo che il tuo controller MPC lo sia$\mathcal{M}$(con la stessa struttura di$\mathcal{D}$ma avendo dipendenza dal modello) che genera l'input$\hat{u}_k$. Qui, il tuo sistema è il seguente$$ \begin{array}{ccl} \hat{x}_{k+1} &=& \left[\begin{array}{c} C^T z_{k+1} \\ \hat{y}_k \\ \hat{y}_{k-1} \\ \hat{u}_{k-1} \end{array}\right] \\ z_{k+1} &=& g(z_k,\hat{u}_k) \\ \hat{y}_{k+1} &=& C^T z_{k+1}. \end{array} $$

Ora puoi confrontarli in termini di energia esercitata da entrambi i controller, ad es.$$ \sum_{k=1}^T \|u_k\|_2 \quad \text{vs.} \quad \sum_{k=1}^T \|\hat{u}_k\|_2. $$Se stai stabilizzando o regolando, puoi vedere i transitori di$x_k$vs.$\hat{x}_k$, eccetera.