Main Content

La traduzione di questa pagina non è aggiornata. Fai clic qui per vedere l'ultima versione in inglese.

Identificazione di modelli black-box non lineari utilizzando l’app System Identification

Introduzione

Obiettivi

Stimare e convalidare modelli non lineari da dati a ingresso singolo/uscita singola (SISO) per trovare quello che rappresenta meglio la dinamica del sistema.

Dopo aver completato questo tutorial, si sarà in grado di eseguire le seguenti attività utilizzando l’app System Identification:

  • Importare oggetti dati dall’area di lavoro MATLAB® nell’app.

  • Stimare e convalidare modelli non lineari dai dati.

  • Tracciare e analizzare il comportamento delle non linearità.

Descrizione dei dati

Questo tutorial utilizza il file di dati twotankdata.mat, che contiene dati SISO nel dominio del tempo per un sistema con due serbatoi, mostrato nella figura seguente.

Sistema con due serbatoi

Illustration of two-tank system. Tank 1 is on the top. Tank 2 is on the bottom.

Nel sistema con due serbatoi, l’acqua scorre nel serbatoio 1 attraverso un tubo, defluisce nel serbatoio 2 e fuoriesce dal sistema attraverso un piccolo foro sul fondo del serbatoio 2. L’ingresso misurato u(t) al sistema è la tensione applicata alla pompa che alimenta l’acqua nel serbatoio 1 (in volt). L’uscita misurata y(t) è l’altezza dell’acqua nel serbatoio inferiore (in metri).

Sulla base della legge di Bernoulli che afferma che l’acqua che scorre attraverso un piccolo foro sul fondo del serbatoio dipende in modo non lineare dal livello dell’acqua nel serbatoio, si prevede che la relazione tra l’ingresso e l’uscita dei dati sia non lineare.

twotankdata.mat include 3000 campioni con un tempo di campionamento di 0,2 s.

Cosa sono i modelli black-box non lineari?

Tipi di modelli black-box non lineari

Si possono stimare modelli black-box a tempo discreto non lineari per i dati nel dominio del tempo sia a uscita singola sia a uscita multipla. È possibile scegliere tra due tipi di strutture del modello black-box non lineare:

  • Modelli ARX non lineari

  • Modelli Hammerstein-Wiener

Nota

È possibile stimare i modelli black-box Hammerstein-Wiener solo da dati in ingresso/in uscita. Questi modelli non supportano i dati di serie temporale dove non è presente alcun ingresso.

Per ulteriori informazioni sulla stima dei modelli black-box non lineari, vedere Nonlinear Model Identification.

Che cos’è un modello ARX non lineare?

Un modello ARX non lineare è costituito da regressori del modello e da una funzione di uscita. La funzione di uscita contiene uno o più oggetti di mappatura, uno per ogni uscita del modello. Ogni oggetto di mappatura può includere una funzione lineare e una non lineare che agiscono sui regressori del modello per fornire l’uscita del modello e un offset fisso per tale uscita. Questo diagramma a blocchi rappresenta la struttura di un modello ARX non lineare a uscita singola, in uno scenario di simulazione.

Regressor block is on the left. Output function is on the right. Output function block contains, from top to bottom, Offset, Nonlinear Function, and Linear Function. The inputs to the Regressor block are system input u and the output of the output function y.

Il software calcola l’uscita del modello ARX non lineare y in due fasi:

  1. Calcola i valori del regressore dai valori in ingresso attuali e passati e dai dati in uscita passati.

    Nel caso più semplice, i regressori sono ingressi e uscite ritardati, come u(t–1) e y(t–3). Questi tipi di regressori sono chiamati regressori lineari. I regressori lineari vengono specificati utilizzando l’oggetto linearRegressor. È inoltre possibile specificare i regressori lineari utilizzando gli ordini del modello ARX come un argomento in ingresso. Per ulteriori informazioni, vedere Nonlinear ARX Model Orders and Delay. Tuttavia, questo secondo approccio vincola l’insieme di regressori a regressori lineari con ritardi consecutivi. Per creare regressori polinomiali, utilizzare l’oggetto polynomialRegressor. Per creare regressori periodici che contengono le funzioni seno e coseno delle variabili in ingresso e in uscita ritardate, utilizzare l’oggetto periodicRegressor. È inoltre possibile specificare regressori personalizzati, che sono funzioni non lineari di ingressi e uscite ritardati. Ad esempio, u(t–1)y(t–3) è un regressore personalizzato che moltiplica le istanze in ingresso e in uscita insieme. Specificare i regressori personalizzati utilizzando l’oggetto customRegressor.

    È possibile assegnare qualsiasi regressore come ingresso al blocco della funzione lineare della funzione di uscita, al blocco della funzione non lineare o a entrambi.

  2. Mappa i regressori dell’uscita del modello utilizzando un blocco di funzione di uscita. Il blocco della funzione di uscita può includere più oggetti di mappatura lineari e non lineari, e blocchi di offset in parallelo. Ad esempio, si consideri la seguente equazione:

    F(x)=LT(xr)+g(Q(xr))+d

    In questo caso, x è un vettore dei regressori e r è la media di x. F(x)=LT(xr)+y0 è l’uscita del blocco della funzione lineare. g(Q(xr))+y0 rappresenta l’uscita del blocco della funzione non lineare. Q è una matrice di proiezione che rende i calcoli ben condizionati. d è un offset scalare che viene aggiunto alle uscite combinate dei blocchi lineari e non lineari. La forma esatta di F(x) dipende dalla scelta fatta per la funzione di uscita. È possibile fare una selezione tra gli oggetti di mappatura disponibili, come reti di partizione ad albero, reti wavelet e reti neurali multistrato. È inoltre possibile escludere il blocco della funzione lineare o non lineare dalla funzione di uscita.

    Quando si stima un modello ARX non lineare, il software calcola i valori dei parametri del modello, come L, r, d, Q e altri parametri specificando g.

I modelli ARX non lineari risultanti sono oggetti idnlarx che memorizzano tutti i dati del modello, inclusi i regressori e i parametri del modello della funzione di uscita. Per ulteriori informazioni su questi oggetti, vedere Nonlinear Model Structures.

Ch cos’è un modello Hammerstein-Wiener?

Questo diagramma a blocchi rappresenta la struttura di un modello Hammerstein-Wiener:

Dove,

  • f è una funzione non lineare che trasforma i dati in ingresso u(t) come w(t) = f(u(t)).

    w(t), una variabile interna, è l’uscita del blocco Input Nonlinearity e ha la stessa dimensione di u(t).

  • B/F è una funzione di trasferimento lineare che trasforma w(t) come x(t) = (B/F)w(t).

    x(t), una variabile interna, è l’uscita del blocco Linear e ha la stessa dimensione di y(t).

    B e F sono simili ai polinomi in un modello lineare di errore in uscita. Per ulteriori informazioni sui modelli di errore in uscita, vedere What Are Polynomial Models?.

    Per le uscite ny e gli ingressi nu, il blocco lineare è una matrice di funzione di trasferimento contenente le voci:

    Bj,i(q)Fj,i(q)

    dove j = 1,2,...,ny e i = 1,2,...,nu.

  • h è una funzione non lineare che mappa l’uscita del blocco lineare x(t) all’uscita del sistema y(t) come y(t) = h(x(t)).

Considerando che f agisce sulla porta in ingresso del blocco lineare, questa funzione è chiamata non linearità in ingresso. Analogamente, considerando che h agisce sulla porta in uscita del blocco lineare, questa funzione è chiamata non linearità in uscita. Se il sistema contiene più ingressi e uscite, è necessario definire le funzioni f e h per ogni segnale in ingresso e in uscita. Non è necessario includere nella struttura del modello sia la non linearità in ingresso sia la non linearità in uscita. Quando un modello contiene esclusivamente la non linearità in ingresso f, è chiamato modello Hammerstein. Analogamente, quando il modello contiene esclusivamente la non linearità in uscita h, è chiamato modello Wiener.

Il software calcola l’uscita del modello Hammerstein-Wiener y in tre fasi:

  1. Calcola w(t) = f(u(t)) dai dati in ingresso.

    w(t) è un ingresso alla funzione di trasferimento lineare B/F.

    La non linearità in ingresso è una funzione statica (senza memoria) in cui il valore dell’uscita in un dato momento t dipende solo dal valore in ingresso nell’istante t.

    È possibile configurare la non linearità in ingresso come una rete sigmoidea, una rete a wavelet, una saturazione, una zona morta, una funzione lineare a tratti, un polinomio monodimensionale o una rete personalizzata. È inoltre possibile rimuovere la non linearità in ingresso.

  2. Calcola l’uscita del blocco lineare utilizzando w(t) e le condizioni iniziali: x(t) = (B/F)w(t).

    È possibile configurare il blocco lineare specificando gli ordini del numeratore B e del denominatore F.

  3. Calcola l’uscita del modello trasformando l’uscita del blocco lineare x(t), utilizzando la funzione non lineare h come y(t) = h(x(t)).

    Analogamente alla non linearità in ingresso, la non linearità in uscita è una funzione statica. È possibile configurare la non linearità in uscita allo stesso modo della non linearità in ingresso. È inoltre possibile rimuovere la non linearità in uscita, in modo che y(t) = x(t).

I modelli risultanti sono oggetti idnlhw che memorizzano tutti i dati del modello, inclusi i parametri del modello e gli stimatori di non linearità. Per ulteriori informazioni su questi oggetti, vedere Nonlinear Model Structures.

Preparazione dei dati

Caricamento dei dati nell’area di lavoro MATLAB

Caricare i dati campione in twotankdata.mat digitando il seguente comando nella Finestra di comando MATLAB:

load twotankdata

Questo comando carica le due variabili seguenti nel browser dell’area di lavoro MATLAB:

  • u sono i dati in ingresso, corrispondenti alla tensione applicata alla pompa che alimenta l’acqua nel serbatoio 1 (in volt).

  • y sono i dati in uscita, corrispondenti all’altezza dell’acqua nel serbatoio 2 (in metri).

Creazione di oggetti iddata

Gli oggetti dati System Identification Toolbox™ inglobano sia i valori dei dati sia le proprietà dei dati in un’entità unica. È possibile utilizzare i comandi System Identification Toolbox per manipolare questi oggetti dati in modo conveniente come entità singole.

È necessario che i dati di campionamento siano già caricati nell’area di lavoro MATLAB, come descritto in Caricamento dei dati nell’area di lavoro MATLAB.

Utilizzare i seguenti comandi per creare due oggetti dati iddata, ze e zv, dove ze contiene i dati per la stima del modello e zv contiene i dati per la convalida del modello. Ts è il tempo di campionamento.

Ts = 0.2; % Sample time is 0.2 sec
z = iddata(y,u,Ts);
% First 1000 samples used for estimation
ze = z(1:1000);
% Remaining samples used for validation
zv = z(1001:3000);

Per visualizzare le proprietà dell’oggetto iddata, utilizzare il comando get. Ad esempio:

get(ze)

il software MATLAB restituisce i seguenti valori e proprietà dei dati:

               Domain: 'Time'
                Name: ''
          OutputData: [1000x1 double]
                   y: 'Same as OutputData'
          OutputName: {'y1'}
          OutputUnit: {''}
           InputData: [1000x1 double]
                   u: 'Same as InputData'
           InputName: {'u1'}
           InputUnit: {''}
              Period: Inf
         InterSample: 'zoh'
                  Ts: 0.2000
              Tstart: 0.2000
    SamplingInstants: [1000x0 double]
            TimeUnit: 'seconds'
      ExperimentName: 'Exp1'
               Notes: {}
            UserData: []

Per modificare le proprietà dei dati, utilizzare la notazione col punto. Ad esempio, per assegnare i nomi ai canali e alle unità che etichettano gli assi del grafico, digitare la seguente sintassi nella finestra di comando MATLAB:

% Set time units to minutes
ze.TimeUnit = 'sec';
% Set names of input channels
ze.InputName = 'Voltage';
% Set units for input variables
ze.InputUnit = 'V';
% Set name of output channel
ze.OutputName = 'Height';
% Set unit of output channel
ze.OutputUnit = 'm';

% Set validation data properties
zv.TimeUnit = 'sec';
zv.InputName = 'Voltage';
zv.InputUnit = 'V';
zv.OutputName = 'Height';
zv.OutputUnit = 'm';

Per verificare che la proprietà InputName di ze sia stata modificata, digitare il seguente comando:

ze.inputname

Suggerimento

I nomi delle proprietà, come InputName, non fanno distinzione tra lettere maiuscole e lettere minuscole. È inoltre possibile abbreviare i nomi delle proprietà che iniziano con Input o Output sostituendo u per Input e y per Output nel nome della proprietà. Ad esempio, OutputUnit equivale a yunit.

Avvio dell’app System Identification

Per aprire l’app System Identification, digitare il seguente comando nella Finestra di comando MATLAB:

systemIdentification

Il nome predefinito della sessione Untitled viene visualizzato nella barra del titolo.

System Identification app main screen. The Import data area is on the left. This area includes Data Views selections at the bottom. The Operations area is to the right of the Import data area. The Import models area is on the right. This area includes Model Views selections at the bottom

Importazione di oggetti dati nell’app System Identification

È possibile importare oggetti dati nell’app dall’area di lavoro MATLAB.

È necessario che gli oggetti dati siano già stati creati, come descritto in Creazione di oggetti iddata e che l’app sia già stata aperta, come descritto in Avvio dell’app System Identification.

Per importare gli oggetti dati:

  1. Nell’app System Identification, selezionare Import data > Data object.

    List of data types. Data object is selected.

    Questa azione apre la finestra di dialogo Importa dati.

    Import Data dialog box. Data Type is on the top. Workspace Variable is second from the top. Data information is third from the top. Import, Reset, Close, and Help buttons are on the bottom

  2. Immettere ze nel campo Object per importare i dati di stima. Premere Invio.

    Questa azione inserisce le informazioni dell’oggetto nei campi Importa dati.

    Fare clic su More per visualizzare ulteriori informazioni su questi dati, inclusi i nomi dei canali e le unità.

  3. Fare clic su Import per aggiungere l’icona denominata ze all’app System Identification.

  4. Nella finestra di dialogo Importa dati, digitare zv nel campo Object per importare i dati di convalida. Premere Invio.

  5. Fare clic su Import per aggiungere l’icona denominata zv all’app System Identification.

  6. Nella finestra di dialogo Importa dati, fare clic su Close.

  7. Nell’app System Identification, trascinare l’icona dei dati di convalida zv sul rettangolo Validation Data. L’icona dei dati di stima ze è già designata nel rettangolo Working Data.

    In alternativa, fare clic con il tasto destro del mouse sull’icona zv per aprire la finestra di dialogo Informazioni sui dati/modello. Selezionare la casella di spunta Use as Validation Data. Fare clic su Apply, quindi su Close per aggiungere zv al rettangolo Validation Data.

    L’app System Identification assomiglia adesso alla figura seguente.

    The top cells of the Import data columns on the left show ze and zv.

Stima di modelli ARX non lineari

Stima del modello ARX non lineare con le impostazioni predefinite

In questa sezione del tutorial, si stima un modello ARX non lineare utilizzando la struttura del modello predefinita e le opzioni di stima.

È necessario che i dati siano già stati preparati, come descritto in Preparazione dei dati. Per ulteriori informazioni sui modelli ARX non lineari, vedere Che cos’è un modello ARX non lineare?.

Nota

Le illustrazioni in questo tutorial rappresentano una sessione tipica dell’app System Identification. I risultati potrebbero non corrispondere esattamente ai risultati delle immagini.

  1. Nell’app System Identification, selezionare Estimate > Nonlinear models.

    List of model types. Nonlinear ARX Models is selected.

    Questa azione apre la finestra di dialogo Estimate Nonlinear ARX Models.

    Model Structure tab of the Estimate Nonlinear ARX Models dialog box. From top to bottom, this tab contains Model name, Initial model, and the Regressors tab. At the top of the Regressors tab is a block diagram that contains an Estimation Data block with input and output variables, a Regressors block with regressor variables, and a generic Output Function block. Beneath this block diagram is option to select the type of regressors to add. Beneath this selection is the Regressor sets area, which lists each regressor set and displays the parameters for the selected regressor. At the bottom is the Regressor assignment table.

    La finestra di dialogo contiene due schede: Model Structure e Estimation Options.

    La scheda Model Structure contiene i parametri che configurano la struttura del modello, come la scelta dei regressori e il tipo di funzione di uscita. Specificare il nome del modello da stimare in Model name. Il nome predefinito del modello è nlarx1.

    Utilizzare la scheda Regressors per creare gli insiemi di regressori da usare. Per impostazione predefinita, l’app crea un insieme di regressori lineari con ritardi [1 2] in ciascuna variabile e memorizza il regressore come Linear regressors #1 nell’area Regressor Sets. Questo pannello contiene una tabella che permette di modificare i ritardi da utilizzare per ciascuna variabile.

    List of Regressor Sets with one regressor

    Il pannello di configurazione Configure: Linear regressors #1 contiene una tabella che mostra i valori del ritardo utilizzato dall’insieme di regressori. Questi ritardi possono essere modificati.

    Regressor configuration table for Linear regressors #1

    La tabella di assegnazione del regressore Assign Regressors to Output Function elenca i nomi dei regressori e le assegnazioni degli stessi ai componenti della funzione di uscita.

    Assignment table. Regressor names are on the left. Linear Function selections are in the middle. Nonlinear Function selections are on the right

    Le assegnazioni del regressore nella tabella producono un modello per l’uscita Height di:

    Height(t) = f(Height(t-1), Height(t-2),Voltage(t-1),Voltage(t-2))

    In questo caso, f(.) è una funzione non lineare statica che mappa i regressori sull’uscita. Per scegliere f(.) e i parametri associati, utilizzare la scheda Output Function.

    È possibile aggiungere più insiemi di regressori, come i polinomi e le formule personalizzate, selezionando un tipo di regressore in Add regressors of type.

    Add regressors of type list. No regressor types are selected.

    Questo esempio utilizza solo Linear regressors #1.

  2. Selezionare la scheda Output Function.

    La scheda mostra che l’app seleziona Wavelet Network come tipo predefinito di funzione di uscita f(.). Questa funzione utilizza una somma di una funzione lineare, una funzione non lineare (che è una somma di wavelet scalate) e un termine di offset per calcolare l’uscita. La scheda mostra inoltre un insieme di parametri di configurazione. Il numero di wavelet utilizzate dalla funzione è configurato per essere automaticamente scelto durante la stima. Questa selezione può essere modificata. È inoltre possibile modificare i valori iniziali dei coefficienti lineari e dell’offset. Per la prima stima, mantenere le scelte predefinite.

    Output Function tab. On the top is a block diagram containing an Estimation Data block with estimation variables, a generic Regressors block, and an Output Function block that contains the components Offset, Nonlinear Function, and Linear Function. Each component shows an icon of an open lock. Below the block diagram is a table that includes, from left to right, Output(s), Use Linear Function, Nonlinear Function, Use Offset. The second row shows the settings for the Height variable. Use Linear function is selected. The selected Nonlinear Function is Wavelet Network. Use Offset is selected. Below the table is a set of parameters for configuring the wavelet network

  3. Fare clic su Estimate.

    Questa azione aggiunge il modello nlarx1 alla scheda del modello dell’app System Identification, come mostrato nella figura seguente.

    In the Import models grid on the right, nlarx1 is in the top left corner.

  4. Fare doppio clic o fare clic con il tasto destro del mouse sull’icona del modello nlarx1. La scheda del modello mostra le informazioni relative al modello stimato. L’area superiore descrive la struttura del modello e i risultati di stima (dati utilizzati, percentuale di adattamento e altre metriche di qualità). L’area inferiore (Diary and Notes) mostra lo script MATLAB che si può utilizzare per riprodurre i risultati di stima nella riga di comando.

    Data/Model information board for nlarx1

    Nota

    Fit (%) è calcolata utilizzando l’insieme di dati di stima focalizzato sulla previsione e non sull’insieme di dati di convalida. Tuttavia, il grafico di uscita del modello nel passaggio successivo paragona l’adattamento all’insieme dei dati di convalida. Per verificare in che misura il modello possa simulare la risposta di un insieme di dati di convalida indipendente, utilizzare il grafico Model Output, come illustrato nei passaggi seguenti.

  5. Nell’area Model Views dell’app System Identification, selezionare Model output. Questa azione simula il modello utilizzando i dati di convalida in ingresso come ingresso per il modello e traccia l’uscita simulata sopra i dati di convalida dell’uscita.

    Model Output plot

    L’area Best Fits del grafico di uscita del modello mostra la concordanza tra l’uscita del modello e l’uscita dei dati di convalida utilizzando una metrica di bontà dell’adattamento dell’errore quadratico medio normalizzato (NRMSE). La concordanza risulta scadente nell’intervallo di tempo 400-500.

Plottaggio di sezioni trasversali di non linearità per modelli ARX non lineari

Eseguire la seguente procedura per visualizzare la forma della non linearità come una funzione di un regressore in un grafico di un modello ARX non lineare.

  1. Nell’app System Identification, selezionare la casella di spunta Nonlinear ARX per visualizzare le sezioni trasversali di non linearità.

    Per impostazione predefinita, il grafico mostra la relazione tra i regressori in uscita Height(t-1) e Height(t-2). Il grafico nella figura seguente mostra un piano regolare. Pertanto, la relazione tra i regressori e l’uscita è approssimativamente un piano lineare.

    Nonlinearity Cross-Section plot of the output Height with the regressors based on Height. The plot is on the left. The regressor descriptions are on the right

  2. Nella finestra del grafico del modello ARX non lineare, impostare Regressor 1 su Voltage(t-1). Impostare Regressor 2 su Voltage(t-2). Fare clic su Apply.

    La relazione tra questi regressori e l’uscita non è lineare, come mostrato nel grafico seguente.

    Nonlinearity Cross-Section plot of the output Height with the regressors based on the variable Voltage.

  3. Per ruotare la superficie di non linearità, selezionare Style > Rotate 3D e trascinare il grafico sul nuovo orientamento.

  4. Per visualizzare una sezione trasversale monodimensionale per il regressore 1, impostare il regressore 2 su none e fare clic su Apply. La figura seguente mostra la grandezza di non linearità del regresore 1, che rappresenta il segnale della tensione spostato nel tempo Voltage(t-1).

    Nonlinearity 1-D Cross-Section plot

Modifica della struttura del modello ARX non lineare

In questa sezione del tutorial, si stima un modello ARX non lineare con specifiche impostazioni di ritardo in ingresso e di non linearità. Usualmente, gli ordini del modello si selezionano per tentativi ed errori fino a quando non si ottiene un modello che produce un adattamento accurato ai dati.

È necessario che il modello ARX non lineare sia già stato stimato con le impostazioni predefinite, come descritto in Stima del modello ARX non lineare con le impostazioni predefinite.

  1. Nella finestra di dialogo Estimate Nonlinear ARX Models, selezionare la scheda Model Structure, quindi selezionare la scheda Regressors.

  2. Nel pannello Configure: Linear regressors #1, modificare i ritardi della variabile Voltage su [3 4]. In quanto i dati suggeriscono che è presente un ritardo di minimo 3 campioni tra l’ingresso e l’uscita.

    Questa azione aggiorna l’elenco dei regressori per mostrare i termini Voltage(t-3) e Voltage(t-4) con un ritardo minimo di tre campioni.

    Regressor tab within Configure tab. The list of regressor sets and a button to delete a set is in the top left portion. The regressor configuration table is in the top right portion. The regressor assignments table is on the bottom.

  3. Fare clic su Estimate.

    Questa azione aggiunge il modello nlarx2 all’app System Identification e aggiorna la finestra Model Output per includere questo modello. Facendo doppio clic sull’icona nlarx2 nella scheda del modello della finestra principale dell’app verranno visualizzati i risultati di stima.

    Model Board for nlarx2

    L’app aggiorna inoltre il grafico di uscita del modello per visualizzare l’adattamento del modello nlarx2 all’insieme di dati di convalida zv. Il grafico mostra che la scelta dei ritardi corretti delle variabili in ingresso migliora l’adattamento.

    Model Output plot for nlarx2 and nlarx1. nlarx2 has a substantially better fit than nlarx1

  4. Nella finestra di dialogo Estimate Nonlinear ARX Models, selezionare la scheda Model Structure, quindi selezionare la scheda Regressors.

  5. Selezionare la scheda Output Function.

  6. Per il Number of Units, selezionare Enter e immettere 6. L’impostazione di un numero specifico controlla la flessibilità della funzione non lineare specificando direttamente il numero di wavelet utilizzate dal Wavelet Network.

    Output Function Tab. The Number of Units choices are on the lower left side.

  7. Fare clic su Estimate.

    Questa azione aggiunge il modello nlarx3 all’app System Identification. Aggiorna inoltre la finestra Model Output, come mostrato nella figura seguente.

    Model Output window that adds nlarx3. nlarx3 has a better fit than nlarx2.

Utilizzo dei regressori polinomiali

È possibile stimare un modello ARX non lineare che utilizza potenze maggiori di variabili ritardate come regressori. In questo esempio, si aggiungeranno polinomi del secondo ordine delle variabili ritardate, inclusi i termini trasversali.

  1. Nella finestra di dialogo Estimate Nonlinear ARX Models, selezionare la scheda Model Structure, quindi selezionare la scheda Regressors.

  2. Espandere Add regressors of type e selezionare Polynomial.

    Add regressors selection for Polynomial is on the left.

    Questa azione aggiunge un insieme di regressori polinomiali chiamato Polynomial regressors #1 all’elenco degli insiemi dei regressori. Per impostazione predefinita, questo insieme è configurato per generare regressori di ordine 2, come mostrato nel pannello di configurazione.

    The Polynomial regressors #1 selection is on the left. The configuration parameters are on the right.

  3. Modificare i ritardi Voltage su [3 4].

  4. Selezionare Include mix of variables per includere tutti i termini trasversali. Questa azione aggiunge al modello dieci regressori del secondo ordine, oltre ai quattro forniti da Linear regressor #1.

  5. Fare clic su Estimate. Questa azione aggiunge il modello nlarx4 all’app. L’app aggiorna il grafico Model Output, come mostrato nella figura seguente.

    Model Output plot hat adds nlarx4. nlarx4 has a substantially worse fit than nlarx3.

    Il grafico mostra che l’aggiunta di regressori polinomiali non ha migliorato la capacità di generalizzazione del modello. Ossia, il modello non fornisce un adattamento migliore tra l’uscita del modello e l’uscita misurata per i dati di convalida indipendenti. Questo risultato è usualmente lo scenario con sovraadattamenti, ovvero quando il modello contiene più regressori di quanti ne sono assolutamente necessari.

Selezione di un sottoinsieme di regressori nel blocco non lineare

È possibile stimare un modello ARX non lineare che includa solo un sottoinsieme di regressori che si inseriscono come ingressi nel blocco non lineare. Per impostazione predefinita, tutti i regressori sono utilizzati nel blocco non lineare. In questa sezione del tutorial, si assegna solo un sottoinsieme dei regressori al blocco non lineare.

È necessario che la struttura del modello sia già stato specificata, come descritto in Modifica della struttura del modello ARX non lineare.

  1. Nella finestra di dialogo Estimate Nonlinear ARX Models, selezionare la scheda Model Structure, quindi selezionare la scheda Regressors.

  2. Se compresso, espandere il pannello Assign Regressors to Output Function.

  3. Deselezionare le selezioni di tutti i regressori del secondo ordine dalla colonna Height:NonlinearFcn della tabella. Inoltre, deselezionare le selezioni di tutti i regressori con termini trasversali (ovvero i regressori composti dal prodotto di 2 termini) da Height:LinearFcn

    Regressor assignment table. Regressor names are on the left. Linear function assignments are in the middle. All boxes are checked. Nonlinear function assignments are on the right. Only the first four boxes are checked.

  4. Fare clic su Estimate.

    Questa azione aggiunge il modello nlarx5 all’app System Identification. Aggiorna inoltre la finestra Model Output.

Model Output plot that adds nlarx5. nlarx5 has a better fit than nlarx3.

Questo modello mostra una migliore capacità di generalizzazione.

Specifica del modello stimato in precedenza con una diversa funzione di non linearità in uscita

È possibile stimare una serie di modelli ARX non lineari introducendo delle variazioni sistematiche alla struttura del modello e basando ogni nuovo modello sulla configurazione di un modello stimato in precedenza. In questa sezione del tutorial, si stima un modello ARX non lineare simile a un modello esistente (nlarx3), ma che presenta una non linearità diversa nella funzione di uscita.

  1. Nella finestra di dialogo Estimate Nonlinear ARX Models, selezionare la scheda Model Structure.

  2. Selezionare nlarx3 da Initial Model. Questo imposta le proprietà visualizzate nelle schede Regressors e Output Function sui valori corrispondenti a nlarx3.

  3. Selezionare la scheda Output Function.

  4. Nella tabella, modificare la scelta di Nonlinear Function su Sigmoid Network. Questo imposta la funzione di uscita su una rete sigmoidea.

  5. In Enter the number of units, immettere 6.

  6. Fare clic su Estimate.

    Questa azione aggiunge il modello nlarx6 all’app System Identification. Aggiorna inoltre il grafico Model Output, come mostrato nella figura seguente.

Selezione del modello migliore

Il modello migliore è il modello più semplice che descrive accuratamente la dinamica. I risultati indicano che il modello nlarx3 è candidato ad essere il miglior modello idnlarx per questi dati, in base alle varie scelte di struttura del modello esplorate in questo esempio.

Esportazione del modello migliore nell’area di lavoro di base

Trascinare l’icona nlarx3 nel riquadro To Workspace nella finestra principale dell’app System Identification. In alternativa, fare doppio clic sull’icona nlarx3 per aprire la relativa scheda informazioni. Da qui, fare clic su Export per esportare il modello nell’area di lavoro di base.

Stima dei modelli Hammerstein-Wiener

Stima dei modelli Hammerstein-Wiener con le impostazioni predefinite

In questa sezione del tutorial, si stimano i modelli Hammerstein-Wiener non lineari utilizzando la struttura del modello predefinita e le opzioni di stima.

È necessario che i dati siano già stati preparati, come descritto in Preparazione dei dati. Per ulteriori informazioni sui modelli ARX non lineari, vedere Ch cos’è un modello Hammerstein-Wiener?

Nota

Le illustrazioni in questo tutorial rappresentano una sessione tipica dell’app System Identification. I risultati potrebbero non corrispondere esattamente ai risultati delle immagini.

  1. Nell’app System Identification, selezionare Estimate > Hammerstein-Wiener Models per aprire la finestra di dialogo Estimate Hammerstein-Wiener Models. La finestra di dialogo contiene due schede: Model Structure e Estimation Options.

  2. Ispezionare la struttura del modello predefinita. La scheda Model Structure contiene tre schede, una per ogni componente del modello. Questi componenti sono la non linearità in ingresso, il blocco dinamico lineare e la non linearità in uscita.

    1. Selezionare la scheda Input Nonlinearity. La non linearità predefinita è una funzione Piecewise Linear con 10 punti di interruzione.

    2. Selezionare la scheda Linear Block. La funzione lineare di trasferimento ha un numeratore di ordine 2, che implica un polinomio del secondo ordine in z-1, un denominatore di ordine 3 e un ritardo in ingresso di 1 campione.

    3. Selezionare la scheda Output Nonlinearity. Come per la scheda Input Nonlinearity, la non linearità predefinita è una funzione Piecewise Linear con 10 punti di interruzione.

  3. Fare clic su Estimate.

    Questa azione stima i parametri del modello Hammerstein-Wiener per minimizzare la differenza tra l’uscita del modello e l’uscita misurata (ze.OutputData). I parametri stimati sono:

    1. Le posizioni dei punti di interruzione (coordinate x- e y-) delle funzioni lineari a tratti in ingresso e in uscita.

    2. I coefficienti polinomiali del numeratore e del denominatore che compongono la funzione di trasferimento del blocco lineare.

    Il software aggiunge il modello stimato nlhw1 alla scheda del modello dell’app System Identification.

  4. Nell’app System Identification, selezionare la casella di spunta Model output.

    Questa azione simula il modello utilizzando i dati di convalida in ingresso come ingresso per il modello e traccia l’uscita simulata sopra i dati di convalida dell’uscita. Si noti che i dati di convalida sono impostati su zv.

    L’area Best Fits della finestra di uscita del modello mostra la concordanza tra l’uscita del modello e l’uscita dei dati di convalida.

    La convalida del modello nlhw1 non è ottimale. L’adattamento a zv.OutputData è scarso.

Plottaggio delle non linearità e della funzione di trasferimento lineare

È possibile tracciare le non linearità in ingresso/in uscita e la funzione di trasferimento lineare su un grafico Hammerstein-Wiener.

  1. Nell’app System Identification, selezionare Hamm-Wiener per visualizzare il grafico del modello Hammerstein-Wiener.

    Il grafico visualizza la non linearità in ingresso, come mostrato nella figura seguente.

  2. Fare clic sul rettangolo yNL nella parte superiore della finestra del grafico Hammerstein-Wiener.

    Il grafico si aggiorna per visualizzare la non linearità in uscita.

  3. Fare clic sul rettangolo Linear Block nella parte superiore della finestra del grafico Hammerstein-Wiener.

    Il grafico si aggiorna per visualizzare la risposta al gradino della funzione di trasferimento lineare.

  4. Nell’elenco Choose plot type, selezionare Bode. Questa azione visualizza un grafico Bode della funzione di trasferimento lineare.

Modifica del ritardo in ingresso del modello Hammerstein-Wiener

In questa sezione del tutorial, si stima un modello Hammerstein-Wiener con un ordine del modello specifico e impostazioni di non linearità. Usualmente, gli ordini e i ritardi del modello si selezionano per tentativi ed errori fino a quando non si ottiene un modello che produce un adattamento accurato ai dati.

È necessario che il modello Hammerstein-Wiener sia già stato stimato con le impostazioni predefinite, come descritto in Stima dei modelli Hammerstein-Wiener con le impostazioni predefinite.

  1. Nella finestra di dialogo Estimate Hammerstein-Wiener, selezionare la scheda Model Structure, quindi selezionare la scheda Linear Block.

  2. Per il canale in ingresso Voltage, fare doppio clic sulla cella Input Delay (nk) corrispondente e immettere il valore 3.

  3. Fare clic su Estimate.

    Questa azione aggiunge il modello nlhw2 all’app System Identification e aggiorna il grafico Model Output, come mostrato nella figura seguente.

    Il pannello Best Fits della finestra di uscita del modello mostra la qualità dell’adattamento nlhw2, che è un miglioramento rispetto a quello del modello nlhw1.

Modifica dello stimatore di non linearità nel modello Hammerstein-Wiener

In questa sezione dell’esempio, si modifica la struttura predefinita del modello Hammerstein-Wiener cambiando il relativo stimatore di non linearità.

Suggerimento

Se si ha a conoscenza che il sistema include non linearità di saturazione o di zona morta, è possibile specificare tali stimatori specializzati di non linearità nel modello. Piecewise Linear, Wavelet Network e Sigmoid Network sono stimatori di non linearità per l’approssimazione di non linearità generale.

  1. Nella finestra di dialogo Estimate Hammerstein-Wiener Models, selezionare la scheda Model Structure, quindi selezionare la scheda Input Nonlinearity.

  2. Fare clic sulla cella Nonlinearity per la variabile Voltage e selezionare Sigmoid Network dall’elenco.

  3. In Enter the number of units, impostare il valore su 20.

  4. Fare clic su Estimate.

    Questa azione aggiunge il modello nlhw3 all’app System Identification. Aggiorna inoltre la finestra Model Output, come mostrato nella figura seguente.

  5. Nella finestra di dialogo Estimate Hammerstein-Wiener Models, selezionare la scheda Input Nonlinearity.

  6. Per l’ingresso Voltage, impostare Nonlinearity su Wavelet Network. Il valore predefinito per Number of Units è Select Automatically.

  7. Selezionare la scheda Output Nonlinearity.

  8. Impostare l’uscita Height Nonlinearity su One-dimensional Polynomial. Impostare Degree of polynomial su 2.

  9. Fare clic su Estimate.

    Questa azione aggiunge il modello nlhw4 all’app System Identification. Aggiorna inoltre la finestra Model Output, come mostrato nella figura seguente.

Selezione del modello migliore

Il modello migliore è il modello più semplice che descrive accuratamente la dinamica.

In questo esempio, i modelli nlhw3 e nlhw4 sono dei buoni candidati..