You are on page 1of 24

Universidad del Zulia

Especializacin en Ingeniera de Control de Procesos


Tpicos Avanzados en Identificacin de Procesos

REDES NEURONALES
Dairy Gonzlez
Mara Lorbes
Sandra Gonzlez

ACTIVIDAD II

A partir de los datos dados


proporcionados,
se
desea
construir una Red Neuronal
feedforward (RNFF) y Red
Neuronal con funcin de
activacin de base radial
(RNBNF) que aproximen esta
funcin desconocida. Observe
que la red cuenta con dos
entradas x, y y una salida z.

PARTE 1
load datos.mat
1. FUNCIN DESCONOCIDA SIN NORMALIZAR
mesh(x,y,z);
title('Superficie funcin desconocida')
2. FUNCIN DESCONOCIDA NORMALIZADA
%Normalizar intervalo [-1,1],min -690 max 200
minX=-690;
maxX=200;
xnor=-1+2*(x-minX)/(maxX-minX);
minY=-690;
maxY=200;
ynor=-1+2*(y-minY)/(maxY-minY);
figure
mesh(x,y,znor)
title('Superficie funcin desconocida normalizada')
3. GRAFICOS EN EL DOMINIO DE LA FUNCIN
3.a Entrada 1: Entrenamiento y prueba
figure
plot(ENTRADA1_ENT,TARGET1_ENT,'ko')
hold on
plot(ENTRADA1_PRU,TARGET1_PRU,'ro')
title('Entrada 1')
legend('ENTRADA1_ENT','ENTRADA1_PRU','location','best')
3.b Entrada 2: Entrenamiento y prueba
figure
plot(ENTRADA2_ENT,TARGET2_ENT,'ko')
hold on
plot(ENTRADA2_PRU,TARGET2_PRU,'ro')
title('Entrada 2')
legend('ENTRADA2_ENT','ENTRADA2_PRU','location','best')

PARTE 1
NORMALIZACION DE LOS DATOS DE ENTRADA
ni=2; %numero de entradas a la redes
Entrada 1
u_1=ENTRADA1_ENT;
u1=u_1';
umax1=max(u1);%vector que contiene los valos maximos de u
umin1=min(u1);%vector que contiene los valos mainimos de u
up_1=ENTRADA1_PRU;
up1=up_1';
upmax1=max(up1);%vector que contiene los valos maximos de u
upmin1=min(up1);%vector que contiene los valos mainimos de u
Entrada 2
u_2=ENTRADA2_ENT;
u2=u_2';
umax2=max(u2);%vector q contiene los valos maximos de u
umin2=min(u2);%vector q contiene los valos mainimos de u
up_2=ENTRADA2_PRU;
up2=up_2';
upmax2=max(up2);%vector q contiene los valos maximos de u
upmin2=min(up2);%vector q contiene los valos mainimos de u
N=length(u_1);
for k=1:N
for j=1:ni %Indice con respecto a la entrada
Uo1(j,k)=-1+2*(u_1(j,k)-umin1(j))/(umax1(j)-umin1(j));%Entrada1
Uopru1(j,k)=-1+2*(up_1(j,k)-upmin1(j))/(upmax1(j)-upmin1(j));%Prueba1
Uo2(j,k)=-1+2*(u_2(j,k)-umin2(j))/(umax2(j)-umin2(j));%Entrada2
Uopru2(j,k)=-1+2*(up_2(j,k)-upmin2(j))/(upmax2(j)-upmin2(j));%Prueba2
end
end

nntool-Levenbertg Macquart

Red 1-RNFF

Red_1_20 (nh=20)

Red_1_5 (nh=5)

Red_1_40 (nh=40)

Red 2-RNFF

Red_2_20 (nh=20)

Red_2_5 (nh=5)

Red_2_40 (nh=40)

Algoritmo OS-ELM
%Porcentajes de datos
So=0.10;
N=length(u);
No=round(N*So);
%Normalizacin de los datos de entrada, salida._ % de vali y ent.
for k=1:N
if k<=No
for j=1:ni
Uo(j,k)=-1+2*(u(j,k)-umin(j))/(umax(j)-umin(j));
end
for j=1:no
Yo(j,k)=-1+2*(y(j,k)-ymin(j))/(ymax(j)-ymin(j));
eval(['Yo',num2str(j) '=Yo(j,:);']);
end
else %Vectores para aprendizaje secuencial
for j=1:ni
Ua(j,k)=-1+2*(u(j,k)-umin(j))/(umax(j)-umin(j));
end
for j=1:no
Ya(j,k)=-1+2*(y(j,k)-ymin(j))/(ymax(j)-ymin(j));
eval(['Ya',num2str(j) '=Ya(j,:);']);
end
end
end
for k=1:N %Vectores de validacin
for j=1:ni
Upru(j,k)=-1+2*(up(j,k)-upmin(j))/(upmax(j)-upmin(j));
end
for j=1:no
Ypru(j,k)=-1+2*(yp(j,k)-ypmin(j))/(ypmax(j)-ypmin(j));
eval(['Yp',num2str(j) '=Ypru(j,:);']);
end
end

NORMALIZACION DE LA DATA
Y FRACCIONAMIENTO

Algoritmo OS-ELM
INICIALIZACION

%Parametros
niter=30; %Numeros de iteraciones
cont=5; %contador
nh=5; % numero de unidades en la capa ocultas
lambda=0.95;%valor inicial de lambda
nent=n*no+n*ni; %numero de entradas
act_fun=0; %funcin de activacin de las unidades ocultas
%Inicializacion de las redes
ninit=1;%numero de datos para inicializar
for k=1:no
Y=eval(['Yo',num2str(k)]);
[V,P,W]=initnet_oselm(Uo(:,1:ninit),Yo(:,1:ninit),nh,act_fun);
eval(['V',num2str(k) '=V;']);%pesos entre capa entrada y oculta
eval(['W',num2str(k) '(:,1)=W;']);%pesos entre capa oculta y salida
eval(['P',num2str(k) '=1e0*eye(nh+1,nh+1);']);%matriz inicial de la red
end

function [V,P,W]=initnet_oselm(X,T,nh,act_fun)
%activation function of the hidden units
%hyperbolic tangent: act_fun=0
%rbf: act_fun=1
sizeinput=size(X);
ni=sizeinput(1,1);
chunk=sizeinput(1,2);
stdpar1=sqrt(1);
stdpar2=sqrt(1);
if act_fun==0
V=stdpar1*randn(ni+1,nh);
Xmod=[ones(1,chunk);X];
H=(tanh(V'*Xmod))';
else
C=stdpar1*randn(ni,nh);
D=stdpar2*randn(1,nh);
V=[C;D];
for i=1:chunk
for j=1:nh
H(i,j)=exp(-(norm(X(:,i)-C(:,j))^2)/(2*D(j)^2));
end
end
end
size(H)
H=[ones(chunk,1) H];
P=pinv(H'*H);
W=P*H'*T';

Algoritmo OS-ELM
E=[];
Wa=[];
j=1;
jj=1; %cuenta iteraciones
% Aprendizaje secuencial
while jj<=niter & j<=5
for k=ninit+1:length(Ua)
for kk=1:no
% Entrenamiento
PP=eval(['P',num2str(kk)]);
[PP,W(:,kk),epsilon(kk,k-1),lambda]=trainnet_extls_oselm(Ua(:,k-1),Ya(kk,k1),V,W(:,kk),PP,nh,act_fun,lambda);
eval(['P',num2str(kk) '=PP;']);
Ww1(:,jj)=W(:,kk);
% Validacin
[Yphat,Hphat]=simnet_oselm(Up,V,W,act_fun);
eval(['Yphat',num2str(kk) '=Yphat;']);
end
end
e1=(Yp-Yphat).^2; %Calculo del error cuadrtico medio
e=sum(e1)/N;
E=[E e];
if jj>1
if e>=E(jj-1);
if j==5
E(jj-5:jj);
W=Ww1(:,jj-5);
end
j=j+1;
else
j=1;
end
end
jj=jj+1;
end
W

RNFF Nh=5

V.I:10

V.A.S=90

# de iteraciones

RNFF Nh=20

V.I:10

V.A.S=90

# de iteraciones

RNFF Nh=40

V.I:10

V.A.S=90

# de iteraciones

RNFF Nh=5

V.I:30

V.A.S=70

# de iteraciones

RNFF Nh=20

V.I:30

# de iteraciones

V.A.S=70

RNFF Nh=40

V.I:30

23 # iteracin

V.A.S=70

RNBR Nh=5

V.I:10

V.A.S=90

# de iteraciones

RNBR Nh=20

V.I:10

V.A.S=90

# de iteraciones

RNBR Nh=40

V.I:10

V.A.S=90

# de iteraciones

RNBR Nh=5

V.I:30

V.A.S=70

6 # iteracin

RNBR Nh=20

V.I:30

6 # iteracin

V.A.S=70

RNBR Nh=40

V.I:30

V.A.S=70

# de iteraciones

CONCLUSIONES

GRACIAS

You might also like