Rapport
Rapport
Rapport
I. Introduction :
Sortie de Benchmark
L'identification est l'opération de détermination du
modèle dynamique d'un système à partir des mesures
entrées/sorties. La connaissance du modèle dynamique
est nécessaire pour la conception et la mise en œuvre
d'un système performant de régulation. Pratiquement,
l'identification a généralement pour but la
détermination de modèle de conduite, utilisables pour
simuler, commander ou régler un processus. Ce L’identification va se faire sur ces données :
modèle peut être physique (au sens de simulateur
analogique ou numérique et de modèle réduit), ou bien
un modèle abstrait (système d’équations algébriques
ou différentielles). Pour être aisément utilisables, les
modèles choisis sont dans la mesure de possible assez
simples. Les imperfections de modélisations et
d'identification seront généralement absorbées par la
boucle de régulation. Dans le présent travail, on se
propose d’identifier les paramètres d’un modèle
linéaire dite Best linear Approximation(BLA) qui
approxime au mieux le modèle de comportement d’un
système non linéaire de type Wiener-Hammerstein. Linéarité du système:
Les histogrammes de l’entrée ainsi que de la sortie de Z
Présentation de Modèle Benchmark : sont illustrés dans les figures suivantes :
[2]
- Commentaire :
Les données d’entrées sont similaires aux celles de
sortie, ce qui justifie le linéarité du système. Le modèle ARX:
Plage d’estimation:
Identification par les modèles ARX,OE,ARMAX
et BJ:
a. Le FIT:
Le modèle OE:
Plage d’estimation:
- Commentaire :
Plage de test:
- Commentaire :
- Commentaire : - Commentaire :
D’après le graphe et le tableau on constate que notre D’après le graphe et le tableau on constate qu’à partir de
modèle est fiable pour un ordre de 6 avec un fit 82.13. l’ordre 7 le fit deviant variable donc le fit optimal est
correspond au 82.11%.
Plage de test: Plage de test:
- Commentaire : - Commentaire :
On remarque que ces résultats montrent que not On remarque que ces résultats montrent que nos modèles
modèles estimés sont valables . estimés sont valables .
Modèle OE:
Commentaire :
c. Le STD:
Modèle BJ:
- Commentaire :
- Commentaire :
[5]
Le modèle OE:
e. Comparaison des modèles par AKAIKE
(aic): Ordre mean Rms Std
1 0.035 0.180 0.17
Le principe de cette approche est : 2 0.036 0.087 0.08
Le modèle est MIEUX si la valeur d’akaike est 3 0.036 0.056 0.043
Faible. 4 0.036 0.055 0.042
5 0.036 0.055 0.042
Le modèle La valeur d’akaike 6 0.034 0.12 0.11
OE -5.4867 7 0.0361 0.055 0.042
ARX -14.078 8 0.0361 0.055 0.042
ARMAX -14.322 9 0.0361 0.055 0.042
BJ -14.345 10 0.034 0.19 0.18
- Commentaire :
On remarque que la valeur d’akaike la plus faible est Le modèle ARX:
celle de modèle BJ.
Ordre Rms Mean Std
1 0.23 0.037 0.23
f. Les performances des modèles utilisés :
2 0.18 0.037 0.17
Pour déterminer les différentes erreurs on saisit le 3 0.07 0.035 0.06
programme . 4 0.065 0.036 0.05
VOIR ANNEXE 2 5 0.056 0.036 0.043
6 0.055 0.036 0.042
On récapitule tous les résultats obtenus dans les 7 0.042 0.00004 0.042
tableaux suivants: 8 0.047 0.01 0.045
9 0.042 0.000016 0.042
Le modèle ARX: 10 0.044 -0.00050 0.044
[6]
[7]
ANNEXES
close all;
clear all;
load Wiener.mat;
fs=51200;
Ts=1/fs;
pas = (1./47000);
x=0:pas:4-pas;
x=x';
figure(1),plot (x,uBenchMark,'k');title(['uBenchMark'])
figure(2),plot (x,yBenchMark,'k');title(['yBenchMark'])
Z=iddata(yBenchMark,uBenchMark,Ts,'Name','W-H Benchmark data');
figure(3),plot(Z,'k');
Z1=Z(1:100000);
Z2=Z(100001:188000);
plot(Z1,'k',Z2,'c');
figure(4),hist(Z.u,30,'k');title(['histogramme Z.u'])
figure(5),hist(Z.y,30,'k');title(['histogramme Z.y'])
tei=1001; tef=100000; % temps d 'estimation initial et final
Ze=Z(tei:tef);% donée estimation
tti=101001;ttf=188000; % temps de test initial et final
Zt=Z(tti:ttf); % donnée test
nmax=10;
OE=1;
ARX=2;
ARMAX=3;
BJ=4;
nk=1;
Error=zeros(99000,10,4);
for n = 1:nmax
figure(10+n);
na =n;
nb=n;
nc=n;
nd=n;
for k = 1:4
switch k
case OE
R{n,k}.m = oe(Ze,[na,nb,nk]);
[De,fit]=compare(Ze,R{n,k}.m);
R{n,k}.yse=De.y;
R{n,k}.fit=fit;
R{n,k}.error=(R{n,k}.yse-Ze.y);
R{n,k}.mean=mean(R{n,k}.error);
R{n,k}.rms=rms(R{n,k}.error);
R{n,k}.std=std(R{n,k}.error);
Fit(n,k)=fit ;
Mean(n,k)=R{n,k}.mean;
Rms(n,k)=R{n,k}.rms;
Std(n,k)=R{n,k}.std;
Error(:,n,k)=R{n,k}.error;
%subplot(2,2,k);
%plot(Error(:,n,k));
%title(['Error = ','\color{black}',num2str(n),'\color{black} OE']);
case ARX
R{n,k}.m = arx(Ze,[na,nb,nk]);
[De,fit]=compare(Ze,R{n,k}.m);
R{n,k}.yse=De.y;
R{n,k}.fit=fit;
R{n,k}.error=(R{n,k}.yse-Ze.y);
R{n,k}.mean=mean(R{n,k}.error);
R{n,k}.rms=rms(R{n,k}.error);
R{n,k}.std=std(R{n,k}.error);
Fit(n,k)=fit;
Mean(n,k)=R{n,k}.mean;
Rms(n,k)=R{n,k}.rms;
Std(n,k)=R{n,k}.std;
Error(:,n,k)=R{n,k}.error;
% subplot(2,2,k);
% plot(Error(:,n,k));
%title(['Error = ','\color{black}',num2str(n),'\color{black} ARX']);
case ARMAX
R{n,k}.m = armax(Ze,[na,nb,nc,nk]);
[De,fit]=compare(Ze,R{n,k}.m);
R{n,k}.yse=De.y;
R{n,k}.fit=fit;
R{n,k}.error=(R{n,k}.yse-Ze.y);
R{n,k}.mean=mean(R{n,k}.error);
R{n,k}.rms=rms(R{n,k}.error);
R{n,k}.std=std(R{n,k}.error);
Fit(n,k)=fit;
Mean(n,k)=R{n,k}.mean;
Rms(n,k)=R{n,k}.rms;
Std(n,k)=R{n,k}.std;
Error(:,n,k)=R{n,k}.error;
% subplot(2,2,k);
% plot(Error(:,n,k));
% title(['Error = ','\color{black}',num2str(n),'\color{black} ARMAX']);
case BJ
R{n,k}.m = bj(Ze,[na,nb,nc,nd,nk]);
[De,fit]=compare(Ze,R{n,k}.m);
R{n,k}.yse=De.y;
R{n,k}.fit=fit;
R{n,k}.error=(R{n,k}.yse-Ze.y);
R{n,k}.mean=mean(R{n,k}.error);
R{n,k}.rms=rms(R{n,k}.error);
R{n,k}.std=std(R{n,k}.error);
Fit(n,k)=fit ;
Mean(n,k)=R{n,k}.mean;
Rms(n,k)=R{n,k}.rms;
Std(n,k)=R{n,k}.std;
Error(:,n,k)=R{n,k}.error;
% subplot(2,2,k);
%plot(Error(:,n,k));
% title(['Error = ','\color{black}',num2str(n),'\color{black} BJ']);
end
end
end
9
mark={'*','x','o','+'}
figure(20)
plot(Error(:,n,k));
title(['Error,OE']);
figure(21)
plot(Error(:,n,k));
title(['Error,ARX ']);
figure(22)
plot(Error(:,n,k));
title(['Error,ARMAX ']);
figure(23)
plot(Error(:,n,k));
title(['Error,BJ ']);
figure(6);
hold on;
for k = 1:4
plot(Fit(:,k),mark{k})
end
legend('oe','arx','armax','bj')
title('FIT')
hold off;
mark={'*','x','o','+'}
figure(7)
hold on;
for k = 1:4
plot (Mean(:,k),mark{k})
end
legend('oe','arx','armax','bj')
title('valeur moyenne')
hold off;
figure(8);
hold on;
for k = 1:4
plot (Rms(:,k),mark{k})
end
legend('oe','arx','armax','bj')
title('Root Mean sqware')
hold off;
figure(9)
hold on;
for k = 1:4
plot (Std(:,k),mark{k})
end
legend('oe','arx','armax','bj')
title('valeur Std')
hold off
10
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% modèle OE
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
display('model OE')
M=oe(Ze,[na,nb,1]);
[A,B,C,D,F]=polydata(M);
ye=lsim(M,Ze.u);
yt=lsim(M,Zt.u);
[Zce fit]=compare(Ze,M);
figure(11),plot(Zce)
hold on;
plot([Ze.y Zce.y])
estimerror=Ze.y-Zce.y;
figure(12);plot([Ze.y estimerror])
yeff=rms(Ze.y);
display('donnee de estimation OE')
mean(estimerror/yeff)
rms(estimerror/yeff)
std(estimerror/yeff)
[zct fit]=compare(Zt,M);
figure(13),plot(zct)
hold on;
plot([Zt.y])
testerror=(Zt.y - zct.y);
ytff=rms(Zt.y);
display('donnee de test OE')
mean(testerror/ytff)
rms(testerror/ytff)
std(testerror/ytff)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% modèle ARX
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
display('model ARX')
MM=arx(Ze,[na,nb,1]);
[A,B,C,D,F]=polydata(MM);
ye=lsim(MM,Ze.u);
yt=lsim(MM,Zt.u);
[Zce fit]=compare(Ze,MM);
figure(8),plot(Zce)
hold on;
plot([Ze.y])
estimerror=Ze.y-Zce.y;
figure(14);plot([Ze.y estimerror])
yeff=rms(Ze.y);
display('donnee de estimation arx')
mean(estimerror/yeff)
rms(estimerror/yeff)
std(estimerror/yeff)
[zct fit]=compare(Zt,MM);
testerror=Zt.y - zct.y;
ytff=rms(Zt.y);
display('donnee de test arx')
mean(testerror/ytff)
rms(testerror/ytff)
std(testerror/ytff)
11
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% modèle ARMAX
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
display('model ARmaX')
MMM=armax(Ze,[na,nb,nc,1]);
[A,B,C,D,F]=polydata(MMM);
ye=lsim(MMM,Ze.u);
yt=lsim(MMM,Zt.u);
[Zce fit]=compare(Ze,MMM);
figure(10),plot(Zce)
hold on;
plot([Ze.y])
estimerror=Ze.y-Zce.y;
figure(15);plot([Ze.y estimerror])
yeff=rms(Ze.y);
display('donnee de estimation armax')
mean(estimerror/yeff)
rms(estimerror/yeff)
std(estimerror/yeff)
[zct fit]=compare(Zt,MMM);
testerror=Zt.y - zct.y;
ytff=rms(Zt.y);
display('donnee de test armax')
mean(testerror/ytff)
rms(testerror/ytff)
std(testerror/ytff)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% modèle BJ
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
display('model BJ')
MMMM=bj(Ze,[na,nb,nc,nd,1]);
[A,B,C,D,F]=polydata(MMMM);
ye=lsim(MMMM,Ze.u);
yt=lsim(MMMM,Zt.u);
[Zce fit]=compare(Ze,MMMM);
figure(10),plot(Zce)
hold on;
plot([Ze.y])
estimerror=Ze.y-Zce.y;
figure(17);plot([Ze.y estimerror])
yeff=rms(Ze.y);
display('donnee de estimation bj')
mean(estimerror/yeff)
rms(estimerror/yeff)
std(estimerror/yeff)
[zct fit]=compare(Zt,MMMM);
testerror=Zt.y - zct.y;
ytff=rms(Zt.y);
display('donnee de test bj')
mean(testerror/ytff)
rms(testerror/ytff)
std(testerror/ytff)
12
Annexe 2 : différentes erreurs
13
armax_m6=armax(Z_estimation,[6 6 6 1]);
armax_m7=armax(Z_estimation,[7 7 7 1]);
armax_m8=armax(Z_estimation,[8 8 8 1]);
armax_m9=armax(Z_estimation,[9 9 9 1]);
armax_m10=armax(Z_estimation,[10 10 10 1]);
figure(4),compare(Z_estimation,armax_m1,'b' ,
armax_m2,'b',armax_m3,'b',armax_m4,'b',armax_m5,'b',armax_m6,'b',armax_m7,'
b',armax_m8,'b',armax_m9,'b' ,armax_m10,'b');
armax_m1=armax(Z_test,[1 1 1 1]);
armax_m2=armax(Z_test,[2 2 2 1]);
armax_m3=armax(Z_test,[3 3 3 1]);
armax_m4=armax(Z_test,[4 4 4 1]);
armax_m5=armax(Z_test,[5 5 5 1]);
armax_m6=armax(Z_test,[6 6 6 1]);
armax_m7=armax(Z_test,[7 7 7 1]);
armax_m8=armax(Z_test,[8 8 8 1]);
armax_m9=armax(Z_test,[9 9 9 1]);
armax_m10=armax(Z_test,[10 10 10 1]);
figure(5),compare(Z_test, armax_m1,'b' ,
armax_m2,'b',armax_m3,'b',armax_m4,'b',armax_m5,'b',armax_m6,'b',armax_m7,'
b',armax_m8,'b',armax_m9,'b' ,armax_m10,'b');
bj_m1=bj(Z_estimation,[1 1 1 1 1]);
bj_m2=bj(Z_estimation,[2 2 2 2 1]);
bj_m3=bj(Z_estimation,[3 3 3 3 1]);
bj_m4=bj(Z_estimation,[4 4 4 4 1]);
bj_m5=bj(Z_estimation,[5 5 5 5 1]);
bj_m6=bj(Z_estimation,[6 6 6 6 1]);
bj_m7=bj(Z_estimation,[7 7 7 7 1]);
bj_m8=bj(Z_estimation,[8 8 8 8 1]);
bj_m9=bj(Z_estimation,[9 9 9 9 1]);
bj_m10=bj(Z_estimation,[10 10 10 10 1]);
figure(6),compare(Z_estimation,bj_m1,'b' ,
bj_m2,'b',bj_m3,'b',bj_m4,'b',bj_m5,'b',bj_m6,'b',bj_m7,'b',bj_m8,'b',bj_m9
,'b' ,bj_m10,'b');
bj_m1=bj(Z_test,[1 1 1 1 1]);
bj_m2=bj(Z_test,[2 2 2 2 1]);
bj_m3=bj(Z_test,[3 3 3 3 1]);
bj_m4=bj(Z_test,[4 4 4 4 1]);
bj_m5=bj(Z_test,[5 5 5 5 1]);
bj_m6=bj(Z_test,[6 6 6 6 1]);
bj_m7=bj(Z_test,[7 7 7 7 1]);
bj_m8=bj(Z_test,[8 8 8 8 1]);
bj_m9=bj(Z_test,[9 9 9 9 1]);
bj_m10=bj(Z_test,[10 10 10 10 1]);
figure(7),compare(Z_test,bj_m1,'b' ,
oe_m2,'b',oe_m3,'b',oe_m4,'b',oe_m5,'b',oe_m6,'b',oe_m7,'b',oe_m8,'b',oe_m9
,'b' ,oe_m10,'b');
14