Main Content

La traduction de cette page n'est pas à jour. Cliquez ici pour voir la dernière version en anglais.

Identification de modèles boîte noire non linéaires avec l’application System Identification

Introduction

Objectifs

Estimer et valider des modèles non linéaires à partir de données à entrée unique/sortie unique (SISO) pour trouver celui qui représente le mieux la dynamique du système.

À la fin de ce tutoriel, vous serez capable d’accomplir les tâches suivantes avec l’application System Identification :

  • Importer des objets de données depuis l’espace de travail MATLAB® dans l’application.

  • Estimer et valider des modèles non linéaires à partir des données.

  • Tracer et analyser le comportement des non-linéarités.

Description des données

Ce tutoriel utilise le fichier de données twotankdata.mat, qui contient les données SISO dans le domaine temporel du système à deux cuves représenté sur la figure suivante.

Système à deux cuves

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

Dans le système à deux cuves, l’eau se déverse à travers un tuyau dans la cuve 1, s’écoule dans la cuve 2 et quitte le système à travers un petit trou au fond de la cuve 2. L’entrée mesurée u(t) du système est la tension appliquée à la pompe qui alimente en eau la cuve 1 (en volts). La sortie mesurée y(t) est la hauteur d’eau dans la cuve inférieure (en mètres).

D’après le théorème de Bernoulli, qui énonce que l’eau s’écoulant à travers un petit trou au fond d’un réservoir dépend du niveau d’eau dans la cuve selon une formule non linéaire, vous prévoyez que la relation entre les données d’entrée et de sortie est non linéaire.

twotankdata.mat inclut 3 000 échantillons avec un pas d’échantillonnage de 0,2 s.

Quels sont les modèles boîte noire non linéaires ?

Types de modèles boîte noire non linéaires

Vous pouvez estimer des modèles boîte noire à temps discret non linéaires pour des données à sortie unique et à sorties multiples dans le domaine temporel. Vous pouvez choisir parmi deux types de structure de modèle boîte noire non linéaire :

  • Modèles ARX non linéaires

  • Modèles de Hammerstein-Wiener

Remarque

Vous pouvez estimer des modèles boîte noire de Hammerstein-Wiener à partir uniquement de données d’entrée/sortie. Ces modèles ne supportent pas les données de séries temporelles sans entrée.

Pour plus d'informations sur l’estimation de modèles boîte noire non linéaires, consultez Nonlinear Model Identification.

Qu’est-ce qu’un modèle ARX non linéaire ?

Un modèle ARX non linéaire se compose des variables explicatives d'un modèle et d’une fonction de sortie. La fonction de sortie contient un ou plusieurs objets de correspondance, un pour chaque entrée du modèle. Chaque objet de correspondance peut inclure une fonction linéaire ou non linéaire qui agit sur les variables explicatives du modèle pour donner la sortie du modèle et un décalage fixe pour cette sortie. Ce schéma bloc représente la structure d’un modèle ARX non linéaire à entrée unique dans un scénario de simulation.

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.

Le software calcule la sortie du modèle ARX non linéaire y en deux étapes :

  1. Il calcule les valeurs des variables explicatives à partir des valeurs d’entrée actuelles et passées et des données de sortie passées.

    Dans le cas le plus simple, les variables explicatives sont des entrées et des sorties retardées, comme u(t–1) et y(t–3). Les variables explicatives de ce type sont appelées variables explicatives linéaires. Vous spécifiez des variables explicatives linéaires avec l’objet linearRegressor. Vous pouvez également spécifier des variables explicatives linéaires en utilisant des ordres de modèle ARX linéaire comme arguments d’entrée. Pour plus d’informations, consultez Nonlinear ARX Model Orders and Delay. Cependant, cette deuxième approche limite votre jeu de variables explicatives à des variables explicatives linéaires avec des retards consécutifs. Pour créer des variables explicatives polynomiales, utilisez l’objet polynomialRegressor. Pour créer des variables explicatives périodiques contenant des fonctions sinus et cosinus de variables d’entrée et de sortie retardées, utilisez l’objet periodicRegressor. Vous pouvez également spécifier des variables explicatives personnalisées, qui sont des fonctions non linéaires d’entrées et de sorties retardées. Par exemple, u(t–1)y(t–3) est une variable explicative personnalisée qui multiplie ensemble des instances d’entrée et de sortie. Spécifiez des variables explicatives personnalisées avec l’objet customRegressor.

    Vous pouvez attribuer n’importe quelle variable explicative comme entrée du bloc de fonction linéaire de la fonction de sortie, du bloc de fonction non linéaire ou des deux.

  2. Il établit une correspondance entre les variables explicatives et la sortie du modèle avec un bloc de fonction de sortie. Le bloc de fonction de sortie peut inclure plusieurs blocs d'objets de correspondance linéaires, non linéaires et de décalage (offset) en parallèle. Par exemple, considérez l’équation suivante :

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

    Ici, x est un vecteur des variables explicatives et r est la moyenne de x. F(x)=LT(xr)+y0 est la sortie du bloc de fonction linéaire. g(Q(xr))+y0 représente la sortie du bloc de fonction non linéaire. Q est une matrice de projection qui permet que les calculs soient bien conditionnés. d est un décalage scalaire qui est ajouté aux sorties combinées des blocs linéaires et non linéaires. La forme exacte de F(x) dépend de la fonction de sortie que vous avez choisie. Vous pouvez faire une sélection parmi les objets de correspondance disponibles, comme des réseaux de partition en arborescence, des réseaux d’ondelettes et des réseaux de neurones multicouches. Vous pouvez également exclure le bloc de fonction linéaire ou non linéaire de la fonction de sortie.

    Lors de l’estimation d’un modèle ARX non linéaire, le software calcule les valeurs des paramètres du modèle, comme L, r, d, Q, et d’autres paramètres spécifiant g.

Les modèles ARX non linéaires résultants sont des objets idnlarx qui enregistrent toutes les données du modèle, y compris les variables explicatives et les paramètres de la fonction de sortie. Pour plus d'informations sur ces objets, consultez Nonlinear Model Structures.

Qu'est-ce qu'un modèle de Hammerstein-Wiener ?

Ce schéma bloc représente la structure d’un modèle de Hammerstein-Wiener :

  • f est une fonction non linéaire qui transforme les données d’entrée u(t) selon w(t) = f(u(t)).

    w(t), une variable interne, est la sortie du bloc Input Nonlinearity et a la même dimension que u(t).

  • B/F est une fonction de transfert linéaire qui transforme w(t) selon x(t) = (B/F)w(t).

    x(t), une variable interne, est la sortie du bloc linéaire et a la même dimension que y(t).

    B et F sont similaires à des polynômes dans un modèle Output-Error linéaire. Pour plus d'informations sur les modèles Output-Error, consultez What Are Polynomial Models?.

    Pour ny sorties et nu entrées, le bloc linéaire est une matrice de fonction de transfert contenant des entrées :

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

    j = 1,2,...,ny et i = 1,2,...,nu.

  • h est une fonction non linéaire qui établit une correspondance entre la sortie du bloc linéaire x(t) et la sortie du système y(t) selon y(t) = h(x(t)).

Comme f agit sur le port d’entrée du bloc linéaire, cette fonction est appelée input nonlinearity. De même, comme h agit sur le port de sortie du bloc linear, cette fonction est appelée output nonlinearity. Si votre système contient plusieurs entrées et sorties, vous devez définir les fonctions f et h pour chaque signal d’entrée et de sortie. Vous n’êtes pas obligé d’inclure à la fois la non-linéarité d’entrée et la non-linéarité de sortie dans la structure de modèle. Si un modèle contient uniquement la non-linéarité d’entrée (Input Nonlinearity) f, il est appelé modèle de Hammerstein. De même, si un modèle contient uniquement la non-linéarité de sortie (Output Nonlinearity)h, il est appelé modèle de Wiener.

Le software calcule la sortie du modèle de Hammerstein-Wiener y en trois étapes :

  1. Il calcule w(t) = f(u(t)) à partir des données d’entrée.

    w(t) est une entrée de la fonction de transfert linéaire B/F.

    La non-linéarité d’entrée est une fonction statique (sans mémoire), où la valeur de la sortie à un instant t donné dépend uniquement de la valeur d’entrée à l’instant t.

    Vous pouvez configurer la non-linéarité d’entrée sous forme de réseau sigmoïde, de réseau d’ondelettes, de saturation, de zone morte, de fonction linéaire par morceaux, de polynôme unidimensionnel ou de réseau personnalisé. Vous pouvez également supprimer la non-linéarité d’entrée.

  2. Il calcule la sortie du bloc linéaire à l’aide de w(t) et des conditions initiales : x(t) = (B/F)w(t).

    Vous pouvez configurer le bloc linéaire en spécifiant les ordres du numérateur B et du dénominateur F.

  3. Il calcule la sortie du modèle en transformant la sortie du bloc linéaire x(t) à l’aide de la fonction non linéaire : h selon y(t) = h(x(t)).

    Comme la non-linéarité d’entrée, la non-linéarité de sortie est une fonction statique. Vous pouvez configurer la non-linéarité de sortie de la même manière que la non-linéarité d’entrée. Vous pouvez également supprimer la non-linéarité de sortie, de sorte que y(t) = x(t).

Les modèles résultants sont des objets idnlhw qui enregistrent toutes les données du modèle, y compris les paramètres du modèle et les estimateurs de non-linéarité. Pour plus d'informations sur ces objets, consultez Nonlinear Model Structures.

Préparation des données

Charger les données dans l'espace de travail MATLAB

Chargez les données d’échantillons dans twotankdata.mat en saisissant la commande suivante dans la fenêtre de commande MATLAB :

load twotankdata

Cette commande charge les deux variables suivantes dans le navigateur de l’espace de travail MATLAB :

  • u est la donnée d’entrée, qui est la tension appliquée à la pompe qui alimente en eau la cuve 1 (en volts).

  • y est la donnée de sortie, qui est la hauteur d’eau dans la cuve 2 (en mètres).

Créer des objets iddata

Les objets de données System Identification Toolbox™ encapsulent les valeurs des données et leurs propriétés dans une seule entité. Vous pouvez utiliser les commandes System Identification Toolbox pour manipuler aisément ces objets de données comme des entités uniques.

Vous devez avoir déjà chargé les données d’échantillon dans l’espace de travail MATLAB, comme décrit dans Charger les données dans l'espace de travail MATLAB.

Utilisez les commandes suivantes pour créer deux objets de données iddata, ze et zv, où ze contient des données pour l’estimation du modèle et zv contient des données pour la validation du modèle. Ts est le pas d'échantillonnage.

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);

Pour visualiser les propriétés de l’objet iddata, utilisez la commande get. Par exemple :

get(ze)

Le software MATLAB renvoie les propriétés et les valeurs des données suivantes :

               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: []

Pour modifier les propriétés des données, utilisez la notation par points. Par exemple, pour attribuer aux canaux des noms et des unités qui étiquettent les axes du graphique, saisissez la syntaxe suivante dans la fenêtre de commande 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';

Pour vérifier que la propriété InputName de ze est modifiée, saisissez la commande suivante :

ze.inputname

Conseil

Les noms de propriétés, comme InputName, ne sont pas sensibles à la casse. Vous pouvez également abréger les noms de propriétés qui commencent par Input ou Output en remplaçant u par Input et y par Output dans le nom de la propriété. Par exemple, OutputUnit est équivalent à yunit.

Démarrer l’application System Identification

Pour ouvrir l’application System Identification, saisissez la commande suivante dans la fenêtre de commande MATLAB :

systemIdentification

Le nom de session par défaut Untitled apparaît dans la barre de titre.

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

Importation d’objets de données dans l’application System Identification

Vous pouvez importer les objets de données dans l’application depuis l’espace de travail MATLAB.

Vous devez avoir déjà créé les objets de données, comme décrit dans Créer des objets iddata, et ouvert l’application, comme décrit dans Démarrer l’application System Identification.

Pour importer des objets de données :

  1. Dans l’application System Identification, sélectionnez Import data > Data object.

    List of data types. Data object is selected.

    Cette action ouvre la boîte de dialogue Import Data (Importer des données).

    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. Saisissez ze dans le champ Object pour importer les données d’estimation. Appuyez sur Entrée.

    Cette action saisit les informations des objets dans les champs Import Data.

    Cliquez sur More pour visualiser des informations supplémentaires sur ces données, y compris les noms des canaux et les unités.

  3. Cliquez sur Import pour ajouter l’icône nommée ze à l’application System Identification.

  4. Dans la boîte de dialogue Import Data, saisissez zv dans le champ Object pour importer les données de validation. Appuyez sur Entrée.

  5. Cliquez sur Import pour ajouter l’icône nommée zv à l’application System Identification.

  6. Dans la boîte de dialogue Import Data, cliquez sur Close.

  7. Dans l’application System Identification, faites glisser l’icône de données de validation zv dans le rectangle Validation Data. L’icône de données d’estimation ze est déjà indiquée dans le rectangle Working Data.

    Sinon, faites un clic droit sur l’icône zv pour ouvrir la boîte de dialogue Data/model Info (Info données/modèle). Sélectionnez la case à cocher Use as Validation Data. Cliquez sur Apply, puis sur Close pour ajouter zv au rectangle Validation Data.

    L’application System Identification ressemble maintenant à la figure suivante.

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

Estimer des modèles ARX non linéaires

Estimer un modèle ARX non linéaire avec des paramètres par défaut

Dans cette partie du tutoriel, vous estimez un modèle ARX non linéaire à l’aide d’une structure de modèle par défaut et d’options d’estimation.

Vous devez avoir déjà préparé les données, comme décrit dans Préparation des données. Pour plus d'informations sur les modèles ARX non linéaires, consultez Qu’est-ce qu’un modèle ARX non linéaire ?.

Remarque

Les illustrations de ce tutoriel représentent une session typique de l’application System Identification. Vos résultats peuvent ne pas correspondre exactement aux résultats sur les images.

  1. Dans l’application System Identification, sélectionnez Estimate > Nonlinear models.

    List of model types. Nonlinear ARX Models is selected.

    Cette action ouvre la boîte de dialogue 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 boîte de dialogue contient deux onglets : Model Structure et Estimation Options.

    L’onglet Model Structure contient des paramètres qui configurent la structure du modèle, comme le choix des variables explicatives et le type de fonction de sortie. Spécifiez le nom du modèle à estimer dans Model name. Le nom du modèle par défaut est nlarx1.

    Utilisez l’onglet Regressors pour créer les jeux de variables explicatives à utiliser. Par défaut, l’application crée un jeu de variables explicatives linéaires avec des décalages [1 2] dans chaque variable et enregistre la variable explicative en tant que Linear regressors #1 dans le champ Regressor Sets. Ce panneau contient une table qui vous permet de modifier les décalages à utiliser pour chaque variable.

    List of Regressor Sets with one regressor

    Le panneau de configuration Configure: Linear regressors #1 contient une table qui indique les valeurs de décalage utilisées par le jeu de variables explicatives. Vous pouvez modifier ces décalages.

    Regressor configuration table for Linear regressors #1

    La table d’affectation des variables explicatives Assign Regressors to Output Function liste les noms des variables explicatives et les affectations des variables explicatives aux composantes de la fonction de sortie.

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

    Les affectations des variables explicatives dans la table produisent un modèle pour la sortie Height de :

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

    Ici, f(.) est une fonction non linéaire statique qui établit une correspondance entre les variables explicatives et la sortie. Pour choisir f(.) et ses paramètres associés, utilisez l’onglet Output Function.

    Vous pouvez ajouter d’autres jeux de variables explicatives, comme des polynômes et des formules personnalisées, en sélectionnant un type de variable explicative dans Add regressors of type.

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

    Cet exemple utilise uniquement Linear regressors #1.

  2. Sélectionnez l’onglet Output Function.

    L’onglet montre que l’application sélectionne Wavelet Network comme type par défaut de la fonction de sortie f(.). Cette fonction utilise la somme d’une fonction linéaire, d’une fonction non linéaire (qui est une somme d’ondelettes mises à l’échelle) et d’un terme de décalage pour calculer la sortie. L’onglet montre également un jeu de paramètres de configuration. Le nombre d’ondelettes utilisé par la fonction est configuré pour être choisi automatiquement pendant l’estimation. Vous pouvez modifier cette sélection. Vous pouvez également modifier les valeurs initiales des coefficients linéaires et du décalage. Pour la première estimation, conservez les choix par défaut.

    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. Cliquez sur Estimate.

    Cette action ajoute le modèle nlarx1 au tableau des modèles de l’application System Identification, comme le montre la figure suivante.

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

  4. Double-cliquez ou faites un clic droit sur l’icône du modèle nlarx1. Le tableau des modèles affiche les informations sur le modèle estimé. Le champ supérieur décrit la structure du modèle et les résultats de l’estimation (données utilisées, pourcentage d’ajustement et autres mesures de qualité). Le champ inférieur (Diary and Notes) affiche le script MATLAB que vous pouvez utiliser pour reproduire les résultats de l’estimation en ligne de commande.

    Data/Model information board for nlarx1

    Remarque

    Fit (%) est calculé à l’aide du jeu de données d’estimation avec en objectif la prédiction, et non à l’aide du jeu de données de validation. Cependant, le tracé de la sortie du modèle de l’étape suivante compare l’ajustement au jeu de données de validation. Pour voir dans quelle mesure le modèle peut simuler la réponse d’un jeu de données de validation indépendant, utilisez le graphique Model Output, comme le décrit l’étape suivante.

  5. Dans le champ Model Views de l’application System Identification, sélectionnez Model output. Cette action simule le modèle à l’aide des données de validation d’entrée comme entrée du modèle et trace la sortie simulée au-dessus des données de validation de sortie.

    Model Output plot

    Le champ Best Fits du graphique de la sortie du modèle montre la correspondance entre la sortie du modèle et la sortie des données de validation à l’aide d’une mesure de moyenne quadratique normalisée (NRMS, Normalized Root Mean Squared) du degré d’ajustement. L’ajustement est médiocre dans l’intervalle de temps 400-500.

Tracer des sections transversales de non-linéarité pour des modèles ARX non linéaires

Effectuez la procédure suivante pour visualiser la forme de la non-linéarité comme une fonction des variables explicatives sur un tracé de modèle ARX non linéaire.

  1. Dans l’application System Identification, sélectionnez la case à cocher Nonlinear ARX pour visualiser les sections transversales de non-linéarité.

    Par défaut, le tracé montre la relation entre les variables explicatives de sortie Height(t-1) et Height(t-2). Ce tracé montre un plan régulier sur la figure suivante. Ainsi, la relation entre les variables explicatives et la sortie est approximativement un plan linéaire.

    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. Dans la fenêtre Nonlinear ARX Model Plot, réglez Regressor 1 sur Voltage(t-1). Réglez Regressor 2 sur Voltage(t-2). Cliquez sur Apply.

    La relation entre ces variables explicatives et la sortie est non linéaire, comme le montre le graphique suivant.

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

  3. Pour faire tourner la surface de non-linéarité, sélectionnez Style > Rotate 3D et faites glisser le graphique dans une nouvelle orientation.

  4. Pour afficher une section transversale 1-D pour la variable explicative 1, réglez Regressor 2 sur none, puis cliquez sur Apply. La figure suivante montre l’amplitude de non-linéarité résultante pour la variable explicative 1, qui représente le signal de tension décalé dans le temps Voltage(t-1).

    Nonlinearity 1-D Cross-Section plot

Modifier une structure de modèle non linéaire

Dans cette partie du tutoriel, vous estimez un modèle ARX non linéaire avec un retard d’entrée et des paramètres de non-linéarité spécifiques. Généralement, vous sélectionnez des ordres de modèle en méthode essai-erreur jusqu’à obtenir un modèle qui produit un ajustement précis aux données.

Vous devez avoir déjà estimé le modèle ARX non linéaire avec des paramètres par défaut, comme décrit dans Estimer un modèle ARX non linéaire avec des paramètres par défaut.

  1. Dans la boîte de dialogue Estimate Nonlinear ARX Models, sélectionnez l’onglet Model Structure, puis sélectionnez l’onglet Regressors.

  2. Dans le panneau Configure: Linear regressors #1, remplacez les décalages de la variable Voltage par [3 4]. En effet, les données suggèrent qu’il y a au minimum 3 échantillons de décalage entre l’entrée et la sortie.

    Cette action met à jour la liste des variables explicatives pour afficher les termes Voltage(t-3) et Voltage(t-4) avec un retard minimum de trois échantillons.

    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. Cliquez sur Estimate.

    Cette action ajoute le modèle nlarx2 à l’application System Identification et met à jour la fenêtre Model Output pour inclure ce modèle. Double-cliquez sur l’icône nlarx2 dans le tableau des modèles de la fenêtre principale de l’application pour afficher les résultats de l’estimation.

    Model Board for nlarx2

    L’application met également à jour le tracé de la sortie du modèle pour afficher l’ajustement du modèle nlarx2 au jeu de données de validation zv. Le graphique montre que le choix de décalages corrects pour les variables d’entrée améliore l’ajustement.

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

  4. Dans la boîte de dialogue Estimate Nonlinear ARX Models, sélectionnez l’onglet Model Structure, puis sélectionnez l’onglet Regressors.

  5. Sélectionnez l’onglet Output Function.

  6. Pour Number of Units, sélectionnez Enter et saisissez 6. La définition d’un nombre spécifique contrôle la flexibilité de la fonction non linéaire en spécifiant directement le nombre d’ondelettes utilisé par Wavelet Network.

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

  7. Cliquez sur Estimate.

    Cette action ajoute le modèle nlarx3 à l’application System Identification. Elle met également à jour la fenêtre Model Output, comme le montre la figure suivante.

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

Utiliser des variables explicatives polynomiales

Vous pouvez estimer un modèle ARX non linéaire qui utilise des puissances supérieures de variables décalées comme variables explicatives. Dans cet exemple, vous ajoutez des polynômes de second ordre de variables décalées, y compris des termes croisés.

  1. Dans la boîte de dialogue Estimate Nonlinear ARX Models, sélectionnez l’onglet Model Structure, puis sélectionnez l’onglet Regressors.

  2. Développez Add regressors of type et sélectionnez Polynomial.

    Add regressors selection for Polynomial is on the left.

    Cette action ajoute un jeu de variables explicatives polynomiales, appelées Polynomial regressors #1, à la liste des jeux de variables explicatives. Par défaut, ce jeu est configuré pour générer des variables explicatives d’ordre 2, comme le montre le panneau de configuration.

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

  3. Remplacez les décalages de Voltage par [3 4].

  4. Sélectionnez Include mix of variables pour inclure tous les termes croisés. Cette action ajoute dix variables explicatives de second ordre au modèle, en plus des quatre apportées par Linear regressor #1.

  5. Cliquez sur Estimate. Cette action ajoute le modèle nlarx4 à l’application. L’application met à jour le graphique Model Output, comme le montre la figure suivante.

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

    Le graphique montre que l’ajout de variables explicatives polynomiales n’a pas amélioré la capacité de généralisation du modèle. Autrement dit, le modèle ne fournit pas un meilleur ajustement entre la sortie du modèle et la sortie mesurée pour des données de validation indépendantes. Ce résultat est un scénario avec surajustements (overfits) typique, c’est-à-dire que le modèle contient plus de variables explicatives qu’absolument nécessaire.

Sélectionner un sous-ensemble de variables explicatives dans un bloc non linéaire

Vous pouvez estimer un modèle ARX non linéaire qui inclut uniquement un sous-ensemble de variables explicatives en entrée du bloc non linéaire. Par défaut, toutes les variables explicatives sont utilisées dans le bloc non linéaire. Dans cette partie du tutoriel, vous attribuez uniquement un sous-ensemble de variables explicatives au bloc non linéaire.

Vous devez avoir déjà spécifié la structure de modèle, comme décrit dans Modifier une structure de modèle non linéaire.

  1. Dans la boîte de dialogue Estimate Nonlinear ARX Models, sélectionnez l’onglet Model Structure, puis sélectionnez l’onglet Regressors.

  2. S’il est réduit, développez le panneau Assign Regressors to Output Function.

  3. Effacez les sélections de toutes les variables explicatives de second ordre dans la colonne Height:NonlinearFcn de la table. Effacez également les sélections de toutes les variables explicatives avec des termes croisés (c’est-à-dire des variables explicatives composées de produits de 2 termes) de 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. Cliquez sur Estimate.

    Cette action ajoute le modèle nlarx5 à l’application System Identification. Elle met également à jour la fenêtre Model Output.

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

Ce modèle montre une meilleure capacité de généralisation.

Spécifier un modèle estimé précédemment avec une non-linéarité différente dans la fonction de sortie

Vous pouvez estimer une suite de modèles ARX non linéaires par variations systématiques de la structure de modèle et baser chaque nouveau modèle sur la configuration d’un modèle estimé précédemment. Dans cette partie du tutoriel, vous estimez un modèle ARX non linéaire similaire à un modèle existant (nlarx3), mais avec une non-linéarité différente dans la fonction de sortie.

  1. Dans la boîte de dialogue Estimate Nonlinear ARX Models, sélectionnez l’onglet Model Structure.

  2. Sélectionnez nlarx3 dans Initial Model . Cette action règle les propriétés qui sont affichées dans les onglets Regressors et Output Function sur les valeurs correspondant à nlarx3.

  3. Sélectionnez l’onglet Output Function.

  4. Dans la table, changez le choix de Nonlinear Function, en Sigmoid Network. Cette action règle la fonction de sortie sur un réseau sigmoïde.

  5. Dans Enter the number of units, saisissez 6.

  6. Cliquez sur Estimate.

    Cette action ajoute le modèle nlarx6 à l’application System Identification. Elle met également à jour le graphique Model Output, comme le montre la figure suivante.

Sélectionner le meilleur modèle

Le meilleur modèle est le modèle le plus simple qui décrit avec précision la dynamique. Les résultats indiquent que le modèle nlarx3 est susceptible d’être le meilleur modèle idnlarx pour ces données, d’après les différentes structures de modèle examinées dans cet exemple.

Exporter le meilleur modèle dans l’espace de travail de base

Faites glisser l’icône nlarx3 dans la case To Workspace de la fenêtre principale de l’application System Identification. Autrement, double-cliquez sur l’icône nlarx3 pour ouvrir son tableau d’information. Cliquez alors sur Export pour exporter le modèle dans l’espace de travail.

Estimer des modèles de Hammerstein-Wiener

Estimer des modèles de Hammerstein-Wiener avec des paramètres par défaut

Dans cette partie du tutoriel, vous estimez un modèle de Hammerstein-Wiener non linéaire à l’aide d’une structure de modèle par défaut et d’options d’estimation.

Vous devez avoir déjà préparé les données, comme décrit dans Préparation des données. Pour plus d'informations sur les modèles ARX non linéaires, consultez Qu'est-ce qu'un modèle de Hammerstein-Wiener ?.

Remarque

Les illustrations de ce tutoriel représentent une session typique de l’application System Identification. Vos résultats peuvent ne pas correspondre exactement aux résultats sur les images.

  1. Dans l’application System Identification, sélectionnez Estimate > Hammerstein-Wiener Models pour ouvrir la boîte de dialogue Estimate Hammerstein-Wiener Models. La boîte de dialogue contient deux onglets : Model Structure et Estimation Options.

  2. Inspection de la structure de modèle par défaut. L’onglet Model Structure contient trois onglets, un pour chaque composante du modèle. Ces composantes sont la non-linéarité d’entrée, le bloc dynamique linéaire et la non-linéarité de sortie.

    1. Sélectionnez l’onglet Input Nonlinearity. La non-linéarité par défaut est une fonction Piecewise Linear avec 10 points de coupure.

    2. Sélectionnez l’onglet Linear Block. La fonction de transfert linéaire a un ordre de numérateur égal à 2, ce qui implique un polynôme de second ordre dans z-1, un ordre de dénominateur égal à 3 et un retard d’entrée de 1 échantillon.

    3. Sélectionnez l’onglet Output Nonlinearity. Comme pour l’onglet Input Nonlinearity, la non-linéarité par défaut est une fonction Piecewise Linear avec 10 points de coupure.

  3. Cliquez sur Estimate.

    Cette action estime les paramètres du modèle de Hammerstein-Wiener afin de minimiser la différence entre la sortie du modèle et la sortie mesurée (ze.OutputData). Les paramètres estimés sont :

    1. Les emplacements des points de coupure (coordonnées x et y) des fonctions linéaires par morceaux d’entrée et de sortie.

    2. Les coefficients polynomiaux du numérateur et du dénominateur qui composent la fonction de transfert du bloc linéaire.

    Le software ajoute le modèle estimé nlhw1 au tableau des modèles de l’application System Identification.

  4. Dans l’application System Identification, sélectionnez la case à cocher Model output.

    Cette action simule le modèle à l’aide des données de validation d’entrée comme entrée du modèle et trace la sortie simulée au-dessus des données de validation de sortie. Notez que les données de validation sont définies par zv.

    La zone Best Fits de la fenêtre Model Output montre la correspondance entre la sortie du modèle et la sortie des données de validation.

    La validité du modèle nlhw1 n’est pas très bonne. L’ajustement à zv.OutputData est médiocre.

Tracer des non-linéarités et la fonction de transfert non linéaire

Vous pouvez tracer les non-linéarités d’entrée/sortie et la fonction de transfert linéaire du modèle sur un tracé de Hammerstein-Wiener.

  1. Dans l’application System Identification, sélectionnez Hamm-Wiener pour visualiser le tracé du modèle de Hammerstein-Wiener.

    Le tracé affiche la non-linéarité d’entrée, comme le montre la figure suivante.

  2. Cliquez sur le rectangle yNL dans la partie supérieure de la fenêtre Hammerstein-Wiener Model Plot.

    Le tracé se met à jour et affiche la non-linéarité de sortie.

  3. Cliquez sur le rectangle Linear Block dans la partie supérieure de la fenêtre Hammerstein-Wiener Model Plot.

    Le graphique se met à jour et affiche la réponse indicielle de la fonction de transfert linéaire.

  4. Dans la liste Choose plot type, sélectionnez Bode. Cette action affiche le diagramme de Bode de la fonction de transfert linéaire.

Modifier le retard en entrée du modèle de Hammerstein-Wiener

Dans cette partie du tutoriel, vous estimez un modèle de Hammerstein-Wiener avec un ordre de modèle et des paramètres de non-linéarité spécifiques. Généralement, vous sélectionnez des ordres de modèle et des retards avec une méthode d'essai-erreur jusqu’à obtenir un modèle qui produit un ajustement satisfaisant aux données.

Vous devez avoir déjà estimé le modèle de Hammerstein-Wiener avec des paramètres par défaut, comme décrit dans Estimer des modèles de Hammerstein-Wiener avec des paramètres par défaut.

  1. Dans la boîte de dialogue Estimate Hammerstein-Wiener, sélectionnez l’onglet Model Structure, puis l’onglet Linear Block.

  2. Pour le canal d’entrée Voltage, double-cliquez sur la cellule Input Delay (nk) correspondante et saisissez la valeur 3.

  3. Cliquez sur Estimate.

    Cette action ajoute le modèle nlhw2 à l’application System Identification et met à jour le graphique Model Output, comme le montre la figure suivante.

    Le panneau Best Fits de la fenêtre Model Output montre la qualité de l’ajustement nlhw2, qui est meilleur que celui du modèle nlhw1.

Modifier l’estimateur de non-linéarité dans un modèle de Hammerstein-Wiener

Dans cette partie de l’exemple, vous modifiez la structure du modèle de Hammerstein-Wiener par défaut en changeant son estimateur de non-linéarité.

Conseil

Si vous savez que votre système inclut des non-linéarités de saturation ou de zone morte, vous pouvez spécifier ces estimateurs de non-linéarité spécifiques dans votre modèle. Piecewise Linear, Wavelet Network et Sigmoid Network sont des estimateurs de non-linéarité pour une approximation de non-linéarité générale.

  1. Dans la boîte de dialogue Estimate Hammerstein-Wiener Models, sélectionnez l’onglet Model Structure, puis l’onglet Input Nonlinearity.

  2. Cliquez sur la cellule Nonlinearity de la variable Voltage et sélectionnez Sigmoid Network dans la liste.

  3. Dans Enter the number of units, réglez la valeur sur 20.

  4. Cliquez sur Estimate.

    Cette action ajoute le modèle nlhw3 à l’application System Identification. Elle met également à jour la fenêtre Model Output, comme le montre la figure suivante.

  5. Dans la boîte de dialogue Estimate Hammerstein-Wiener Models, sélectionnez l’onglet Input Nonlinearity.

  6. Pour l’entrée Voltage, réglez Nonlinearity sur Wavelet Network. La valeur par défaut de Number of Units est Select Automatically.

  7. Sélectionnez l’onglet Output Nonlinearity.

  8. Réglez la sortie Height Nonlinearity sur One-dimensional Polynomial. Réglez Degree of polynomial sur 2.

  9. Cliquez sur Estimate.

    Cette action ajoute le modèle nlhw4 à l’application System Identification. Elle met également à jour la fenêtre Model Output, comme le montre la figure suivante.

Sélectionner le meilleur modèle

Le meilleur modèle est le modèle le plus simple qui décrit avec précision la dynamique.

Dans cet exemple, les modèles nlhw3 et nlhw4 sont de bons candidats.