Vous êtes sur la page 1sur 6

Objectifs ;

-Le but de ce travail pratique est de se familiariser avec les réseaux


de neurones artificiels. La maîtrise de ces notions est nécessaire afinde
pouvoir réaliser des projets de synthèse
1
Etapes de simulation :
clearall , close all , clc
SSE=[ ]; INDEX=[ ];
INPUT=[0 0 0;0 0 1;0 1 0;0 1 1;1 0 0;1 0 1;1 1 0;1 1 1];
DOUTPUT=[0 0;0 1;0 1 ;0 1;0 1;0 1;0 1 ;1 1];
%etap01 :initialatoin des matrices despoids et des biais
W1=rand(3,1);W2=rand(1,2);
B1=rand(1,1); B2=rand(1,2);
%Etape2 : Avec les valeursinitialescalculer le vecteur de sortie correspond
%le vecteur d’entré [i1 i2 i3]. Considérer le vecteur de cibledésiréest [t1 t2]
fori=1:1:300
for j=1:1:8
H=1/(1+exp(-(INPUT*W1+repmat(B1,[8 1]))));
OUTPUT=H.'*W2 +repmat(B2,[8 1]);
ERR_HO=DOUTPUT-OUTPUT;
ERR_IH=H.*(1-H).*(sum('RR_HO'));
%Etape3 :ajustement des poids
lr_ho=0.01;
lr_ih=0.01;
W2(1,1)=W2(1,1)+ERR_HO(j,1)*H(1,j)*lr_ho;
W2(1,2)=W2(1,2)+ERR_HO(j,2)*H(1,j)*lr_ho;
W1(1,1)=W1(1,1)+ERR_IH(1,j)*INPUT(j,1)*lr_ih;
W1(2,1)=W1(2,1)+ERR_IH(1,j)*INPUT(j,2)*lr_ih;
W1(3,1)=W1(3,1)+ERR_IH(1,j)*INPUT(j,3)*lr_ih;
%Etape4 :ajustement des biais
B1=B1+ERR_IH(1,j)*lr_ih;
B2(1,1)=B2(1,1)+ERR_HO(j,1)*lr_ho;
B2(1,2)=B2(1,2)+ERR_HO(j,2)*lr_ho;
%Etape5 :calcule de l’erreurquadratiquemoyenne
end
INDEX=[INDEX i];
SSE=[SSE sum(sum(ERR_HO.^2))];
plot(INDEX,SSE,'r');
xlabel('ITERATION')
ylabel('SSE')
pause(0.2)
end
H=logsig(INPUT*W1+repmat(B1,[8 1]));
OUTPUT=H*W2 +repmat(B2,[8 1]);
%Programme2 :modélisation
clearall; close all; clc
%modélisationneuronale d'un système SISO
for k = 1:100
u(k) = sin(2*pi*k/25) + sin(2*pi*k/50);
end
yd(1) = 1;
for k = 1:100
yd(k+1) = yd(k)/(1 + yd(k)^2) + u(k);
end

for k = 1:100
x(1,k) = u(k);
x(2,k) = yd(k);
1
end

n1 = 3;
v = rand(1,n1);
b2 = zeros(1,1);
w = rand(n1,2)/10;
b1 = zeros(n1,1);
taux = 0.09;
i = 1;
for k = 1:100
%for i = 1:10 %
h = logsig(w*x(:,k) + b1);
y(k) = purelin(v*h + b2);
e(k) = yd(k) - y(k);
delta2 = e(k);
v = v + taux*delta2*h';
b2 = b2 + taux*delta2;
delta1 = ((1 - h).*h).*(v'*delta2);
w = w + taux*delta1*x(:,k)';
b1 = b1 + taux*delta1;
end
plot(yd,'k') , hold on
plot(y,'r')
xlabel('temps')
ylabel(' yd et y')
h = legend(' yd: la sortie du système','y: la sortie du modèleneuronale');
%modélisationneuronale d'un système SISO
clearall;closeall ; clc;
for k = 1:100
u(k) = sin(2*pi*k/25) + sin(2*pi*k/50);
end
yd(1) = 1;
for k = 1:100
yd(k+1) = yd(k)/(1 + yd(k)^2) + u(k);
end
for k = 1:100
x(1,k) = u(k);
x(2,k) = yd(k);
end
net = newff(minmax(x),[4 1],{'logsig','purelin'},'traingd');
net.trainParam.goal = 0.001;
net.trainParam.epochs = 1000;
net = train(net,x,yd(1:100));
y = sim(net,x);
plot(yd,'k') , hold on
plot(y,'r')
xlabel('temps')
ylabel(' yd et y')
h = legend(' yd: la sortie du système','y: la sortie du modèleneuronale');
1
Résultat :
L'erreur:

la différence entre la sortie desystéme et la sortie du modèle neuronale :


1
1
1

Vous aimerez peut-être aussi