Beruflich Dokumente
Kultur Dokumente
=
= , ;
= , :
= , :
= , :
= , :
Caracterizando un controlador con red neuronal inversa
Pgina 2
= {
Pgina 3
Simule un control con red neuronal inversa para el sistema de dos tanques
Lo primero que debemos hacer es entrenar la red neuronal para lo cual hemos utilizado el
siguiente cdigo.
Corriendo el programa anterior alamacenamos las variables mediante la funcin save en nuestro
caso como:
save tanques
Pm1(1,:)=Pm(1,:);%H1in
Pm1(2,:)=Tm(1,:);%delta H1
Pm1(3,:)=Pm(3,:);%H2in
Pm1(4,:)=Tm(2,:);%delta H2
Pm1(5,:)=Pm(5,:);%q0
Tm1(1,:)=Pm(2,:);%Target
Tm1(2,:)=Pm(4,:);%Target
% Aproximacion de funciones
P=Pm1
T=Tm1
net = newff(minmax(P),[8 2],{'tansig' 'purelin'});
Y = sim(net,P);
net.trainParam.epochs = 50;
net.trainParam.goal=1e-5
net = train(net,P,T);
Y = sim(net,P);
close all
figure(1)
subplot(211)
plot(Pm(2,:),'k')
subplot(212)
plot(Pm(4,:),'k')
figure(2)
ap1nn= Y(1,:)
ap2nn=Y(2,:)
subplot(211)
plot(ap1nn)
subplot(212)
plot(ap2nn)
hold off
Pgina 4
Obtenemos la siguiente grafica de aprendizaje y la comparamos y obtenemos la red neuronal
entrenada
Pgina 5
Generamos con la funcin gensim el controlador y lo reemplazamos en nuestro diagrama
de simulink
Pgina 6
Pgina 7
Compare su funcionalidad con respecto a un controlador PID
Pgina 8
Analice cuatro casos de estudio. Analice el comportamiento de las vlvulas, tiempos de
respuesta y error de estado estable.
Caso 1:
Caudal = 30;
H1 deseado =8;
H2 deseado =8;
Caso 1:
Caudal = 20;
H1 deseado =5;
H1 deseado =5;
Pgina 9
Caso 3:
Caudal = 20;
H1 deseado =7;
H2 deseado =5;
Caso 4:
Caudal = 20;
H1 deseado=5;
H2 deseado=7;
Pgina 10
Conclusin
Se ve una mejor respuesta al comparar las grficas del control de la red neuronal con el control
PID y podemos decir que depender del diseador seleccionar el mejor mtodo de control ya que
a pesar de que el control mediante el aprendizaje de la red neuronal es mejor este tiene un costo
computacional ms alto que el del PID.
Nosotros Carlos Araujo y Marco Hinojosa afirmamos que esta actividad es de nuestra autora y
establecemos que para la elaboracin de la misma hemos seguido los lineamientos del Cdigo de
tica de la Universidad de las Fuerzas Armadas ESPE
Pgina 11
Anexos
Cdigo para la generacin de las variables.
q0V=[20,23,26,29];
H1iniV=[5:2:25];%
H2iniV=[5:2:25];
ap1V=[0.5:0.1:1]
ap2V=[0.5:0.1:1]
Pm=combvec(H1iniV,ap1V,H2iniV,ap2V,q0V);
dh1V=[]
dh2V=[]
for i=1:length(Pm)
q0=Pm(5,i);
H1ini=Pm(1,i);
ap1=Pm(2,i);
H2ini=Pm(3,i);
ap2=Pm(4,i);
sim('two_tank_1',[0 1])
dh1=H1-H1ini;
dh2=H2-H2ini;
dh1V=[dh1V dh1];
dh2V=[dh2V dh2];
mensaje=sprintf('patron no %d de %d',i,length(Pm))
end
Tm=[dh1V;dh2V];
P=Pm
T=Tm
net = newff(minmax(P),[8 2],{'tansig' 'purelin'});
Y = sim(net,P);
net.trainParam.epochs = 50;
net.trainParam.goal=1e-5
net = train(net,P,T);
Y = sim(net,P);
close all
figure(1)
subplot(211)
plot(dh1V,'k')
subplot(212)
plot(dh2V,'k')
figure(2)
dh1nn= Y(1,:)
dh2nn=Y(2,:)
subplot(211)
plot(dh1nn)
subplot(212)
plot(dh2nn)
hold off