Sunteți pe pagina 1din 23

UNIVERSIDAD DE FUERZAS ARMADAS ESPE

DEPARTAMENTO DE ELCTRICA Y ELECTRNICA


ASIGNATURA: CONTROL INTELIGENTE
Actividad No 13 y No 14. Identificacin de funciones de varias variables. Identificacin de
sistemas dinmicos.
Fecha: 04-02-2015
Nombre alumno: Fernando Villalba

Introduccin. IDENTIFICACIN DE UN SISTEMA DINMICO MEDIANTE RED


NEURONAL
La identificacin de un sistema dinmico mediante una red neuronal consiste en
determinar los parmetros de la red de tal manera que los dos sistemas tengan respuestas
similares cuando son excitados con las mismas seales de control.
Un sistema dinmico puede caracterizarse en el espacio de estado. En la formulacin de
espacio de estado un sistema est caracterizado por la ecuacin de estado. Esta formulacin
es aplicable a sistemas de una entrada, una salida SISO o para sistemas multivariables
MIMO. La ecuacin de estado es:
= (, )
= (, )
Donde x son los estados y u es la seal de control. La descripcin del sistema dinmico es
completa cuando se define una condicin inicial para los estados y una seal de control.
En esta actividad, la red neuronal que se utilizar para la identificacin es una red esttica
(que no vara en el tiempo). La red neuronal por tanto solo puede identificar a un sistema
esttico. Si se restringe al sistema dinmico a un pequeo intervalo de tiempo, se lo puede
considerar como un sistema esttico. Es posible obtener una red neuronal que tiene las
mismas variaciones que el sistema dinmico luego de que ha transcurrido un pequeo
intervalo de tiempo . Para que la red neuronal refleje el comportamiento del sistema
dinmico es necesario que su comportamiento sea similar para un entramado lo
suficientemente fino de valores de los estados y seal de control del sistema. Esto se logra
mediante la generacin de patrones de entrenamiento que capten la respuesta a los valores
de dicho entramado de tal manera que la red neuronal aprenda el comportamiento para
las distintas condiciones del sistema dinmico.
1. Analice el cdigo de ayuda del comando train. Ejecute el cdigo, grafique los resultados e
indique la funcionalidad de los comandos: newff, sim, net.trainParam.epochs = 50;
net.trainParam.goal = 0.01. Identifique el significado de los parmetros [0 8],[10
1],{'tansig' 'purelin'},'trainlm' en la funcin newff

%
%
%
%
%
%

p = [0 1 2 3 4 5 6 7 8];
t = [0 0.84 0.91 0.14 -0.77 -0.96 -0.28 0.66 0.99];
plot(p,t,'o')
Here NEWFF is used to create a two layer feed forward network.
The network will have an input (ranging from 0 to 8), followed
by a layer of 10 TANSIG neurons, followed by a layer with 1
PURELIN neuron. TRAINLM backpropagation is used. The network
is also simulated.
net = newff([0 8],[10 1],{'tansig' 'purelin'},'trainlm');
y1 = sim(net,p)

Pgina 1

%
%
%

Here the network is trained for up to 50 epochs to a error goal of


0.01, and then resimulated.
net.trainParam.epochs = 50;
net.trainParam.goal = 0.01;
net = train(net,p,t);
y2 = sim(net,p)
plot(p,t,'o',p,y1,'x',p,y2,'*')

Analisis del cdigo


La funcin newff llama al mtodo de aprendizaje de la red que en este caso est dada por la
funcin NET.trainFcn, empleando los valores indicados por NET.trainParam entre ellos nmero
de pocas, error final.
La funcin crea una red tipo Backpropagation, requiere que le sean especificados los siguientes
parmetros
newff: (PR,[S1 S2...SNl],{TF1 TF2...TFNl},BTF,BLF,PF)
PR : Rx2 Matriz de valores mximos y mnimos de cada uno de las R neuronas de
entrada.
Si : Nmero de neuronas para cada una de las capas.
TFi : Funcin de transferencia a utilizar en cada una de las capas, por defecto utiliza
tansig
BTF : Algoritmo de entrenamiento a utilizar, por defecto utiliza trainlm
BLF : Funcin de actualizacin de los pesos, por defecto utiliza learngdm.
PF : Funcin para evaluar el desempeo de la red, por defecto utiliza mse.
Funcionalidad de los comandos:
newff: Este comando se utiliza para crear una red de alimentacin hacia adelante de dos capas.
sim: Este comando sirve para simular la red neuronal.
net.trainParam.epochs = 50: En este comando se especifica el nmero de pocas de
entrenamiento de la red neuronal.
net.trainParam.goal = 0.01: Este comando especfica el valor al que se desea llegar en el error
medio cuadrtico.
[0 8]: Representan el rango de los valores de entrada.
[10 1]: En este parmetro se especifica el nmero de neuronas de entrenamiento en una capa y el
nmero de neuronas que le sigue en la siguiente capa. Se dice aqu que es una capa de diez
neuronas seguido por una capa de una neurona.
tansig: Es la funcin de transferencia neuronal.
purelin: Es la funcin de activacin de la tangente hiperblica. Del tipo lineal mx+b.
trainlm: Es el mtodo de entrenamiento y se especifica que es un mtodo de aproximaciones de
segunda derivada ya que al tener lm se dice que se usa la segunda derivada, es un mtodo
ofisticado.
La presente grfica nos muestra los resultado del entrenamiento pocas, tiempo total de
entrenamiento, error final, e incluso podemos cambiar el nmero de pocas deseadas

Pgina 2

Y el resultado final obtenido

Donde los crculos representan los valores deseados, las x representan los valores de la red sin
entrenar y los asteriscos en rojo representan los puntos ya entrenados

Pgina 3

Adems podemos visualizar los resultados obtenidos en el transcurso del entrenamiento por
ejemplo cual fue el mejor resultado obtenido y en que poca se la obtuvo

2. Identifique mediante una red neuronal la funcin = . Presente el grfico de la


funcin original y de la funcin aproximada mediante red neuronal para 2 2; 2
2. a) Utilice 6 neuronas en la capa escondida, el mtodo de entrenamiento traingd. b)
Utilice 12 neuronas en la capa escondida, el mtodo de entrenamiento traingd.
Grfica de funcin real

Cdigo

Pgina 4

[X,Y] = meshgrid(-2:.2:2, -2:.2:2);


Z = X .* exp(-X.^2 - Y.^2);
surf(X,Y,Z)
figure(1)
mesh ( X,Y,Z)
%vector transpuesta de cada elemento de la matriz filas por columnas
xT=X(:)';
yT=Y(:)';
zT=Z(:)';
p=[xT; yT];
t=[zT];
net=newff(minmax(p),[6,1],{'tansig','purelin'},'traingd');
%6 neuronas de la capa de entrada
%1 neuronas de la capa de salida
% set training parameters
net.trainParam.show = 50;
net.trainParam.lr = 0.05;
net.trainParam.epochs = 1000;
net.trainParam.goal = 1e-7;
[net,tr]=train(net,p,t);
a = sim(net,p)
cont=1;
for i=1:1:21
for j=1:1:21
matriz(i,j)= a(cont);
cont=cont+1;
end
end
figure(2)
mesh(X,Y,matriz);

Grfica con 6 neuronas

Grfica con 12 neuronas


Pgina 5

Grfica 12 neuronas, 10000 pocas

Pgina 6

Anlisis de Grficas
Como podemos apreciar el incremento de neuronas en la capa de entrada ayuda un poco al
entrenamiento sin embargo el error aun es alto, como podemos visualizar comparando las
grficas de entrenamiento con la grfica original
El incremento de pocas tampoco ayuda al entrenamiento
Mientras ms pocas se desarrollen mayor ser el tiempo de duracin de entrenamiento
3. Repita el ejercicio anterior, identifique mediante una red neuronal la funcin =
2
2
. Presente el grfico de la funcin original y de la funcin aproximada mediante
red neuronal para 2 2; 2 2. a) Utilice 6 neuronas en la capa escondida, el
mtodo de entrenamiento trainlm. b) Utilice 12 neuronas en la capa escondida, el mtodo
de entrenamiento trainlm.
Grfica de funcin real

Cdigo
[X,Y] = meshgrid(-2:.2:2, -2:.2:2);
Z = X .* exp(-X.^2 - Y.^2);
surf(X,Y,Z)
figure(1)
mesh ( X,Y,Z)
%vector transpuesta de cada elemento de la matriz filas por columnas
xT=X(:)';
yT=Y(:)';
zT=Z(:)';
p=[xT; yT];
t=[zT];
net=newff(minmax(p),[6,1],{'tansig','purelin'},'trainlm');
%6 neuronas de la capa de entrada
%1 neuronas de la capa de salida
% set training parameters
net.trainParam.show = 50;
Pgina 7

net.trainParam.lr = 0.05;
net.trainParam.epochs = 10000;
net.trainParam.goal = 1e-7;
[net,tr]=train(net,p,t);
a = sim(net,p)
cont=1;
for i=1:1:21
for j=1:1:21
matriz(i,j)= a(cont);
cont=cont+1;
end
end
figure(2)
mesh(X,Y,matriz);

Grfica con 6 neuronas

Pgina 8

Grfica con 12 neuronas

Anlisis de grficas
Se puede apreciar mediante las grficas que se ha llegado a un entrenamiento casi preciso en
comparacin con el mtodo anterior, con la nica diferencia que las grfica entrenada se
encuentra rotada 90 grados, para lo cual cambiamos los ejes X,Y para visualizar la exactitud
de ambas grficas
El incremento del nmero de pocas no cambia en nada al entrenamiento
Cdigo con los ejes rotados para visualizar la exactitud del entrenamiento
Grfica entrenada

Pgina 9

Grfica real

[X,Y] = meshgrid(-2:.2:2, -2:.2:2);


Z = X .* exp(-X.^2 - Y.^2);
surf(X,Y,Z)
figure(1)
mesh ( X,Y,Z)
%vector transpuesta de cada elemento de la matriz filas por columnas
xT=X(:)';
yT=Y(:)';
zT=Z(:)';
p=[xT; yT];
t=[zT];
net=newff(minmax(p),[12,1],{'tansig','purelin'},'trainlm');
%6 neuronas de la capa de entrada
%1 neuronas de la capa de salida
% set training parameters
net.trainParam.show = 50;
net.trainParam.lr = 0.05;
net.trainParam.epochs = 1000;
net.trainParam.goal = 1e-7;
[net,tr]=train(net,p,t);
a = sim(net,p)
cont=1;
for i=1:1:21
for j=1:1:21
matriz(i,j)= a(cont);
cont=cont+1;
end
end
figure(2)
mesh(Y,X,matriz);

Pgina 10

4.

Escriba dos prrafos que describan las caractersticas principales del entrenamiento al que se
refiere el comando trainlm.(pag. 180 de Neural Networks for applied Sciences and Engineering, Sandhya
Samarasinghe)

En sntesis el mtodo trainlm es un algoritmo de entrenamiento que actualiza los pesos y


ganancias de acuerdo a la optimizacin de Levenberg Marquardt, este mtodo mejora la solucin a
los problemas que son difciles para resolver por ajuste de la tasa de aprendizaje en repetidas
ocasiones, como implica en el mtodo de Gauss-Newton que incorpora las dos derivadas (primera y
segunda) del error, y en ves de ajustar el error, permite calcular el error. Este mtodo consiste en
inicializar dicho error con la unidad e insertar un valor de e a la segunda derivada donde es el valor
neperiano
Las propiedades de convergencia del mtodo de Levenberg Marquardt son similares a las del
mtodo de Newton-Gauss. La convergencia local es lenta cuando el residuo es grande y cuando el
problema es fuertemente no lineal. Sin embargo este mtodo es superior cuando el paso es grande,
la direccin de descenso es mejor que en el mtodo de Newton- Gauss. Por ello es preferible el uso
del mtodo de Levenberg- Marquardt para la mayora de los problemas.
Este algoritmo converge en menos iteraciones que cualquier mtodo discutido anteriormente, por
supuesto requiere ms clculos computacionales por iteracin, debido a que implica el clculo de
matrices inversas. A pesar de su gran esfuerzo computacional sigue siendo el algoritmo de
entrenamiento ms rpido para redes neuronales cuando se trabaja con un moderado nmero de
parmetros en la red, si el nmero de parmetros es muy grande utilizarlo resulta poco prctico.
5. Realice el diagrama en simulink del sistema dinmico antena descrito por las ecuaciones:

= []; = = = velocidad angular []


= []
=
= . () +

Pgina 11

6. Presente las respuestas dinmicas del sistema durante 20 segundos para las siguientes
condiciones iniciales:

a) = 80; = 30 ; = 5

b) = 5; = 60 ; = 15 N

Pgina 12

7. Escriba el cdigo para generar un conjunto de patrones de entrenamiento que genere un


entramado (todas las combinaciones posibles) de valores de ngulo, velocidad y fuerza con
los siguientes rangos y resoluciones:
a) ngulo: 20 200 en pasos de 22.

b) Velocidad: 90 90 en pasos de 36 .
c) Fuerza: 30 30 en pasos de 6 N
Cdigo para generar patrones de entrenamiento con todas las posibles convianciones
mediante comando combvec
%Construccion de parmetros
targ=[];
%pasos de patrones
%angulo en pasos de 22 grados
anguloP=-20:22:200;
anguloP=anguloP.*(pi/180);

Pgina 13

%velocidad en pasos de 36 por segundo


velocidadP=-90:36:90;
velocidadP=velocidadP.*(pi/180);
%fuerza en pasos de 6 Newtons
fuerzaP=-30:6:30;
%Combvec: Realiza todas las combinaciones
%posibles de los vectores ingresados
p=combvec(anguloP,velocidadP,fuerzaP);
for i=1:1:length(p)
fuerza=p(3,i);
velocidad0=p(2,i);
angulo0=p(1,i);
sim('Antena', 0.05)
%variaciones de velocidad, angulo, y formacion de vectores para meta
dvelocidad=velocidad-velocidad0;
dangulo=angulo-angulo0;
dt=[dangulo; dvelocidad];
targ=[targ dt];
end

Cdigo de entrenamiento de la red segn datos presentes obtenidos del cdigo anterior
net = newff(minmax(p),[6 2],{'tansig' 'purelin'},'trainlm');
net.trainParam.epochs = 50;
net.trainParam.goal = 1e-6;
net = train(net,p,targ);
y2 = sim(net,p)
figure(1)
% en la primera fila se encuentran los valores de posicion
plot(targ(1,:),'r')
hold on}
%valores entrenados de posicion
plot(y2(1,:),'b')
hold off
figure(2)
%en la segunda fila se encuentran los valores de velocidad
plot(targ(2,:),'r')
hold on
%valores entrenados de velocidad
plot(y2(2,:),'b')
hold off

Grficas de resultados
Grfica de posicin

Pgina 14

A simple vista no se puede identificar el entrenamiento, el error es nfimo para poder ver los
cambios se realiza un zoom

Se puede observar una mnima diferencia entre los valores de posicin seleccionados con color rojo
y los valores entrenados con color azul
Grficas de velocidad

A simple vista no se puede identificar el entrenamiento, el error es nfimo para poder ver los
cambios se realiza un zoom

Pgina 15

Se puede observar una mnima diferencia entre los valores de velocidad seleccionados con color
rojo y los valores entrenados con color azul
El diagrama empleado en los cdigos de entrenamiento

8. Obtenga las variaciones de velocidad y ngulo que se obtienen luego de 50ms para cada una
de los valores que se obtuvieron en el numeral anterior. Almacene estos resultados en un
vector de dos filas y nmero de columnas igual al nmero de combinaciones.
Verifique los resultados obtenidos con los del numeral 6 y comente.
Cdigo de combinacin de valores
%Construccion de parmetros
targ=[];
%pasos de patrones
%angulo en pasos de 22 grados
anguloP=-20:22:200;
anguloP=anguloP.*(pi/180);
%velocidad en pasos de 36 por segundo
velocidadP=-90:36:90;
velocidadP=velocidadP.*(pi/180);
%fuerza en pasos de 6 Newtons
fuerzaP=-30:6:30;
%Combvec: Realiza todas las combinaciones
%posibles de los vectores ingresados
Pgina 16

p=combvec(anguloP,velocidadP,fuerzaP);
for i=1:1:length(p)
fuerza=p(3,i);
velocidad0=p(2,i);
angulo0=p(1,i);
sim('Antena', 0.05)
%variaciones de velocidad, angulo, y formacion de vectores para meta
dvelocidad=velocidad-velocidad0;
dangulo=angulo-angulo0;
dt=[dangulo; dvelocidad];
targ=[targ dt];
end
Cdigo de entrenamiento de la red
%entrenamiento con 8 capas de entrada y dos de salida
net = newff(minmax(p),[8 2],{'tansig' 'purelin'},'trainlm');
net.trainParam.epochs = 50;
net.trainParam.goal = 1e-6;
net = train(net,p,targ);
y2 = sim(net,p)
figure(1)
% en la primera fila se encuentran los valores de posicion
plot(targ(1,:),'r')
hold on}
%valores entrenados de posicion
plot(y2(1,:),'b')
hold off
figure(2)
%en la segunda fila se encuentran los valores de velocidad
plot(targ(2,:),'r')
hold on
%valores entrenados de velocidad
plot(y2(2,:),'b')
hold off

Resultados con 8 capas de entrada y dos de salida

Pgina 17

Resultados con 6 capas de entrada y dos de salida

Grfica con valores establecidos de fuerza, velocidad, posicin

Pgina 18

Grfica con valores combinados de fuerza, velocidad, posicin 6capas de entrada

Grfica con valores combinados de fuerza, velocidad, posicin 8capas de entrada

Anlisis de Resultados
Cuando la misma red neuronal es simulada en intervalos de tiempo distintos, la red produce
respuestas similares pero en intervalos superiores la respuesta es ms lenta mientras que
intervalos ms cortos la red es ms rpida.
Los valores presentes en velocidad, posicin y ngulo hacen que el sistema oscile, mientras
que si poseemos una combinacin de los valores para el sistema en un rango determinado el
sistema es ms estable
El incremento en la capa de entrada hacen que el sistema aprenda ms rpido, siempre y
cuando usemos el mtodo trainlm en este caso podemos apreciar que la variacin en la
velocidad es mayor a cuando se tenia una red de 6 neuronas en la capa de entrada

Pgina 19

9. Escriba el cdigo para entrenar una red neuronal con 8 neuronas en la capa oculta para
identificar el sistema dinmico antena en un lapso de tiempo de 50 ms.
%entrenamiento con 8 capas de entrada y dos de salida
net = newff(minmax(p),[8 2],{'tansig' 'purelin'},'trainlm');
net.trainParam.epochs = 50;
net.trainParam.goal = 1e-6;
net = train(net,p,targ);
y2 = sim(net,p)
gensim(net,0.05)

10. Construya un diagrama en simulink que permita la verificacin del sistema identificado
con red neuronal mediante una comparacin con el sistema original. Transcriba el
diagrama de simulink y los resultados obtenidos para varias condiciones iniciales y de
seal de fuerza aplicada (mnimo tres casos de estudio).

Pgina 20

Velocidad=10, posicin=22, fuerza= 3

Velocidad=50, posicin=100, fuerza= 10

Pgina 21

Velocidad=50, posicin=100, fuerza= 3

Pgina 22

Velocidad=20, posicin=50, fuerza= 5

Anlisis de Resultados:
Si excedemos el valor de la fuerza el sistema presenta muchas perturbaciones,
consecuentemente no aprende
El sistema es ms estable para valores pequeos tanto de fuerza como de velocidad
El aprendizaje mediante las combinaciones de valores de fuerza, posicin y velocidad
hacen que el sistema sea ms estable que colocando independientemente los valores
Mientras mayor sea el nmero de neuronas en la capa de entrada el sistema posee menos
error

Yo Fernando Villalba afirmo que esta actividad es de mi autora y establezco que para la
elaboracin de la misma he seguido los lineamientos del Cdigo de tica de la Universidad de
las Fuerzas Armadas ESPE

Pgina 23

S-ar putea să vă placă și