L'objectif est de développer sous MATLAB un outil permettant d'identifier les paramètres du modèle mathématique d'un processus inconnu stable ou instable.
L'utilisation des modèles discrets est devenue de plus en plus courante que ça soit pour le développement de calculateurs numériques ou la mise en oeuvre de commandes qui sont calculées à partir du modèle. Nous traiterons dans ce rapport quelques méthodes permettant l'identification de modèles paramétriques discrets à partir des mesures entrées-sorties échantillonnées aux mêmes instants.
Lorsque la structure du modèle est choisie, la détermination des paramètres du modèle peut se faire suivant deux classes de méthodes : celles basées sur l'erreur de sortie, et celles basées sur l'erreur d'équation ou de prédiction.
[...] Cet avantage ne fait pas non plus de ce algorithme un algorithme fiable dans toutes les circonstances. RESEAUX DE NEURONES : Avantages : o Minimisation de systèmes non linéaires o Implantation en temps réel par des mesures prises sur , Inconvénients : o Possibilité de capter des dépendances non linéaires. o Rapidité ARMAX : Avantages : o Résolution de systèmes linéaires en théorie o Implantation en temps réel sur des calculateurs sous forme récursive (rapidité). Inconvénients : o Modèle réservé à l'étude de o systèmes basés sur une régression linéaire o Non fiabilité. [...]
[...] % bouton poussoir qui permet d'appeler la fonction ARMAX BPARMAX2=uicontrol(gcf handle sur fenêtre graphique 'style','push' style du bouton 'position', [ 25] %position du bouton 'string', ' ARMAX1' %texte du bouton 'callback', 'ARMAX1'); % fonction ,script à appeller ou % commande à exécuter %sortir de la fenêtre principale CLabel='Fin'; CPos=[ CCallBack='close all; clear all'; BPFin=uicontrol(HFenP 'style','push' 'position',CPos 'string',CLabel 'callback',CCallBack); % Etat initial de la fenêtre principale set(HFenP,'Color',[ %visible après la construction de tous les elements set(HFenP,'Visible','on'); Illustration POUR ALLER PLUS LOIN Nous avions pu développer un algorithme qui nous permet d'identifier les paramètres d'un système d'ordre 1 par la méthode des moindres carrées : cette fonction permet de déterminer des systèmes de la forme : y(t)=a1y(t- 1)+b1u(t-1)+b2u(t-2) Présentation de l'algorithme % identification par méthode des moindres carrés récursif % model du processus à identifier %y(t)=a1y(t-1)+b1u(t-1)+b2u(t-2) global data1; a1= 0.8 ; b1=1;b2=- 0.5 ; %paramètres à retrouver param=[a1 b1 % vecteur paramètres N=200; %nombre de points np=3; %nombre de paramètres u1=data1.Y(1,1).Data; u=u1; %disp(' voici la matrice de sortie') y1=data1.Y(1,2).Data; y=y1; % initialisation de la matrice de variance P=1e8*eye(np); %initialisation du vecteur paramètres teta=zeros(np,2); %génération de bruit %e=randn(1,N); %génération du signal de sortie du processus %param for i=3:N %disp(' matrice du modele %disp(' matrice du vecteur de sortie teta(:,i)=teta(:,i-1)+P*phi*(y(i)-teta(:,i-1)'*phi)/(1+phi'*P*phi); %disp(' matrice du vecteur du parametre P=P-(P*phi*phi'*P)/(1+phi'*P*phi); %disp(' matrice de la variance') P ; end disp(['valeurs finales des paramètres param; %sortie du modèle ym=[0 % initialisation de la sorie du modèle for i=3:N u(i-2)]*param'; end % résidu de l'identification err=ym-y; %moyenne moy=mean(err); var=std(err-moy)^2; %calcul de l'autocorrélation du résidu err=err-moy;% centrage de l'erreur %appel de la fonction corryxy.m ( voir en dessous) cor_err=corrxy(err,err); %trace de la fonction d'autocorrélation k=-length(err)+1:length(err)-1; figure(5) subplot(221) plot(1:N,ym,'y') subplot(222) plot(1:N,y,'b') title('signal sortie du modèle') subplot(223) for i=1:np plot(1:N,teta(i,:),'r') hold on end title(' Evolution des paramètres') grid figure(2) subplot(221) plot(1:N,u,'g') hold on plot(1:N,y,'b') title('signal d'entré sortie du processus(b)') grid %trace du résidu d'identification %figure(3) subplot(222) plot(1:N,err) title('résidu de l'identification') grid %figure(4) subplot(223) plot(k,cor_err), grid title(' Autocorrélation du résidu de l'autocorrelation') %figure(5) subplot(224) % autocorrélation de randn t=0:1000; x=randn(size(t)); corr_x=corrxy(x,x); k=-length(x)+1:length(x)-1; plot(k,corr_x); grid title('autocorrélation du signal par randn') fonction d'autocorrélation function corr=corrxy(x,y,k) % x,y signaux dont on calcule la corrélation étendue de la fonction d'autocorrélation % si k n'est pas précise l'étendue de la fonction %d'autocorrélation est la meme que celle des signaux x et y % corr: fonction d'auto normalisée if length(x)~=length(y) error('les 2 signaux doivent être de meme dimension') end x=x-mean(x); y=y-mean(y); % calcul de l'autocorrélation normalisée corr=conv(x,fliplr(y)); if nargin if k>length(x)-1; end corr=corr(length(x)-k: length(x)+k); end corr=corr/max(corr); Conclusion Les deux fonctions étudiées sont l'une des meilleures méthodes d'identification des paramètres d'un processus. Elles ont cependant chacune des performances et des faiblesses. L'analyse comparative nous à permis de voir que les réseaux de neurones présentent un avantage du point de vue de la minimisation de l'erreur. [...]
[...] Notre erreur a été de choisir un temps d'échantillonnage trop petit. SYSTEME 1 : Signal d'entrée Carre Sinus Triangle Système de la suspension électromagnétique: Analyse de l'algorithme des réseaux de neurones : On voit vraiment la propriété suiveuse du système 1 .L'erreur est centrée en 0. Cela nous confirme l'avantage adaptatif des réseaux de neurones. Pour la suspension magnétique on voit que c'est un système d'ordre 3 grâce aux paramètres renvoyés par l'algorithme. [...]
[...] Le deuxième programme nous permet de définir les paramètres de la fonction ARMAX au cas où nous l'aurions choisie.Voir annexe 3. III- Annexes Annexe1 : Présentation du programme de la fonction ARMAX de données d'un autre fichier global fichier global data1; global na; global nb; global nc; global nk; % ces paramètres ont été préalablement choisie dans l'interface disp(' voici les paramètres') na,nb,nc,nk la matrice d'entree u1=data1.Y(1,1).Data; la matrice de sortie y1=data1.Y(1,2).Data; matrice de donnée Appel de la fonction ARMAX th=armax(z,[na nb nc détermination des paramètres estimés Ae=th.A; Be=th.B; Ce=th.C; disp(' disp(' voici les paramètres estimés Ae Be Ce filtrage numérique des paramètres pour minimiser l'erreur yest=filter(Be,Ae,u); eest=filter(Ae,Ce,y-yest); disp(' plot des résultats figure subplot(221) plot(y,'r') hold on plot(u,'b') title('entree(bleu) et sortie(rouge)') subplot(222) plot(y,'r') hold on plot(yest,'b:'); title('comparaison des sorties reelles et estimee subplot(223) plot((y-yest),'b'); title('visualisation de l'erreur'); print -deps -f1 sysid.eps Annexe2 : Présentation du programme de la fonction Réseaux de neurones global data1; % nombre de points N=20000; données % voici la matrice dentree u1=data1.Y(1,1).Data; % voici la matrice de sortie y1=data1.Y(1,2).Data; % model neuronal % matrice de données Nt=N; génération de réseaux de neurones nnet=newff([-2 -20 20; -20 20],[10 1],{'tansig' 'purelin'}); nnet.trainParam.epochs=300; %******visualisation de la generation des couches de neurones figure subplot(211); nnet=train(nnet,Ut,Yt); % initialisation de la matrice de la sortie predicte % generation de la sorie du modele à partir du modèle neuronal yest=zeros(N,1); for yest(n)=sim(nnet,U); end plot des résultats figure(7) title('comparaison des sorties réelle(-) et estimées(:)'); xlabel('n') ylabel('y(n), figure(9) plot(1:N,(y-yest),'b') title('visualisation de l'erreur'); print -deps -f1 nn.eps; Annexe3 : Présentation des programmes de l'interface Programme 1 : ce programme nous permet de charger les données dans le workspace espace de travail logiciel. [...]
[...] %stockage du nom 'fichier=get(edname,''string'');' . % bouton poussoir de chargement de données BPLoad=uicontrol(gcf handle sur fenêtre graphique 'style','push' style du bouton 'position', [ 25] %position du bouton 'string','Load' %texte du bouton 'callback','interface_load_function'); % fonction ,script à appeller ou % commande à exécuter CPos=[ % trait blanc horizontal FrmCol=uicontrol(HFenP 'style','frame' 'Position',CPos 'BackgroundColor',[ % bouton poussoir d'appel de l'interface 2 BPARMAX2=uicontrol(gcf handle sur fenêtre graphique 'style','push' style du bouton 'position', [ 25] %position du bouton 'string', ' ARMAX2' %texte du bouton 'callback', 'ARMAX2'); % fonction ,script à appeller ou % commande à exécuter %bouton poussoir pour la fonction neurone BPNeurone=uicontrol(gcf handle sur fenêtre graphique 'style','push' style du bouton 'position', [ 25] %position du bouton 'string','Neurone' %texte du bouton 'callback','Neurone'); % fonction ,script à appeller ou % commande à exécuter %bouton de fin %sortir de la fenêtre principale CLabel='Fin'; CPos=[ CCallBack='close all; clear all'; BPFin=uicontrol(HFenP 'style','push' 'position',CPos 'string',CLabel 'callback',CCallBack); % Etat initial de la fenêtre principale set(HFenP,'Color',[ %visible après la construction de tous les élements set(HFenP,'Visible','on'); Illustration Programme qui permet de choisir les paramètres de la fonction ARMAX : %création d'une fenêtre graphique %close all; % clear all; global na; global nb; global nc; global nk; %fixer les dimensions de la fenêtre FPos=[ 430]; %on crée une figure à qui on donne des propriétés et des dimensions HFenP = figure('Name','Choisir les dégres des paramètres' titre de la fenêtre 'NumberTitle','off' 'Resize','off' %taille non modifiable 'Visible','off' non visible dès le début 'Position',FPos); % zone de texte de l'interface : TXTna=uicontrol(gcf handle sur fenêtre graphique 'style','text' style du contrôle 'position', [ 20] %position du texte 'string', 'dégré % texte % acquisition de la valeur du paramètre na EdNom=uicontrol(gcf handle sur fenêtre graphique 'style','edit' style du contrôle 'position', [ 20] %position du texte 'string', texte 'Max' zone uniligne 'callback', [ . [...]
Source aux normes APA
Pour votre bibliographieLecture en ligne
avec notre liseuse dédiée !Contenu vérifié
par notre comité de lecture