Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Control inteligente
Nombre: Ronald Romero
NRC: 2758 Fecha: 04/05/2018
1
1. Graficar f ( ϰ )= −α ϰ y su derivada para α =1,2,4 , f ( ϰ ) se llama signoide y comparar
1+e
con la función signo.
Código de Matlab
syms x;
x=-3:0.1:3;
a=hardlim(x);
figure()
alfa=1;
y=1./(1+exp(-alfa*x));
y1=alfa.*y.*(1-y);
plot(x,y,'r')
hold on
plot(x,y1,'g')
hold on
plot(x,a,'b')
legend('Funcion','Derivada','Signo');
title('Alfa=1');
ylim([-0.05 1.05])
grid on
figure()
alfa=2;
y=1./(1+exp(-alfa*x));
y1=alfa.*y.*(1-y);
plot(x,y,'r')
hold on
plot(x,y1,'g')
hold on
plot(x,a,'b')
legend('Funcion','Derivada','Signo');
title('Alfa=2');
ylim([-0.05 1.05])
grid on
figure()
alfa=2;
y=1./(1+exp(-alfa*x));
y1=alfa.*y.*(1-y);
plot(x,y,'r')
hold on
plot(x,y1,'g')
hold on
plot(x,a,'b')
legend('Funcion','Derivada','Signo');
title('Alfa=2');
ylim([-0.05 1.05])
grid on
Resultados.
Los resultados son satisfactorios con 150 épocas y factor de aprendizaje de 0.5
Código de Matlab
alfa=4;n=0.5; in0=1;
w0=rand;w1=rand;w2=rand;
p=[1 0.1;2 0.2;0.1 0.3;2 0.3;0.2 0.4;3 0.4;0.1 0.5;1.5 0.5;0.5 0.6;
1.6 0.7;];
targ=[ 1 1 0 1 0 1 0 1 0 0];
errorv=[]; epocav=[];
for epoca=1:1:150 %EPOCAS
Error=0;
for i=1:1:10
in1=p(i,1);
in2=p(i,2);
net=w0*in0+w1*in1+w2*in2;
out=sigmoide(net,alfa);
e=targ(i)-out;
deltaw0=-n*e*(-1)*alfa*out*(1-out)*in0;
deltaw1=-n*e*(-1)*alfa*out*(1-out)*in1;
deltaw2=-n*e*(-1)*alfa*out*(1-out)*in2;
w0=w0+deltaw0;
w1=w1+deltaw1;
w2=w2+deltaw2;
Error=Error+(targ(i)-out)^2;
end
errorv=[errorv Error];
epocav=[epocav epoca];
plot(epocav,errorv)
grid on
title('Evolucion del error por época')
end
for i=1:10
in1=p(i,1);
in2=p(i,2);
out=hardlim(w0+w1*p(i,1)+w2*p(i,2));
if out==0
disp('Bomber')
end
if out==1
disp('Fighter')
end
end
1
E= e2
2
Y e=targ−out
−η∗∂ E
∗∂ e
∂e
∗∂ out
∂ out
∗∂ net
∂net
∗∂ out 1
∂ out 1
∗∂ net 1
−η∗∂ E ∂ net 1
∆ b 0= =
∂b0 ∂b 0
Remplazamos valores y obtenemos las ecuaciones de los pesos y sesgos
∆ b 0=−η∗( targ−out )∗−1∗(α∗out ( 1−out ) )∗W 5∗( α∗out 1 ( 1−out 1 ) )∗1
deltab0=-n*e*(-
1)*sigmoide_prima(net,alfa)*w5*sigmoide_prima(net1,alfa)*1;
deltab1=-n*e*(-
1)*sigmoide_prima(net,alfa)*w5*alfa*sigmoide_prima(net1,alfa)*1;
deltab2=-n*e*(-1)*alfa*out*(1-out)*1;
deltaw1=-n*e*(-
1)*sigmoide_prima(net,alfa)*w5*sigmoide_prima(net1,alfa)*in1;
deltaw2=-n*e*(-
1)*sigmoide_prima(net,alfa)*w6*sigmoide_prima(net2,alfa)*in1;
deltaw3=-n*e*(-
1)*sigmoide_prima(net,alfa)*w5*sigmoide_prima(net1,alfa)*in2;
deltaw4=-n*e*(-
1)*sigmoide_prima(net,alfa)*w6*sigmoide_prima(net2,alfa)*in2;
deltaw5=-n*e*(-1)*sigmoide_prima(net,alfa)*out1;
deltaw6=-n*e*(-1)*sigmoide_prima(net,alfa)*out2;
b0=b0+deltab0;
b1=b1+deltab1;
b2=b2+deltab2;
w1=w1+deltaw1;
w2=w2+deltaw2;
w3=w3+deltaw3;
w4=w4+deltaw4;
w5=w5+deltaw5;
w6=w6+deltaw6;
Error=Error+(targ(i)-out)^2;
end
errorv=[errorv Error];
epocav=[epocav epoca];
plot(epocav,errorv)
grid on
title('Evolucion del error por época')
end
La Figura 6, muestra la evolución del error por época de la función xor.
Figura 6. Error por época
Resultados obtenidos