Upload
evelyn-gabriela-lema-vinueza
View
97
Download
0
Embed Size (px)
DESCRIPTION
IDENTIFICACIÓN DE UN SISTEMA DINÁMICO MEDIANTE RED NEURONAL
Citation preview
Página 1
UNIVERSIDAD DE FUERZAS ARMADAS “ESPE” DEPARTAMENTO DE ELÉCTRICA Y ELECTRÓNICA
ASIGNATURA: CONTROL INTELIGENTE
Actividad No 13 y No 14. Identificación de funciones de varias variables. Identificación de
sistemas dinámicos.
Fecha: Lunes, 19 de Mayo del 2014.
Nombre alumno: Evelyn Gabriela Lema Vinueza.
NRC: 2055.
Introducción. IDENTIFICACIÓN DE UN SISTEMA DINÁMICO MEDIANTE RED
NEURONAL
La identificación de un sistema dinámico mediante una red neuronal consiste en determinar los
parámetros de la red de tal manera que los dos sistemas tengan respuestas similares cuando son
excitados con las mismas señales de control.
Un sistema dinámico puede caracterizarse en el espacio de estado. En la formulación de espacio
de estado un sistema está caracterizado por la ecuación de estado. Esta formulación es aplicable
a sistemas de una entrada, una salida SISO o para sistemas multi variables MIMO. La ecuación
de estado es:
Donde x son los estados y u es la señal de control. La descripción del sistema dinámico es
completa cuando se define una condición inicial para los estados y una señal de control.
En esta actividad, la red neuronal que se utilizará para la identificación es una red estática (que
no varía en el tiempo). La red neuronal por tanto solo puede identificar a un sistema estático. Si
se restringe al sistema dinámico a un pequeño intervalo de tiempo, se lo puede considerar como
un sistema estático. Es posible obtener una red neuronal que tiene las mismas variaciones que el
sistema dinámico luego de que ha transcurrido un pequeño intervalo de tiempo . Para que la
red neuronal refleje el comportamiento del sistema dinámico es necesario que su
comportamiento sea similar para un entramado lo suficientemente fino de valores de los estados
y señal de control del sistema. Esto se logra mediante la generación 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 dinámico.
1. Analice el código de ayuda del comando train. Ejecute el código, 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 parámetros [0 8],[10 1],{'tansig' 'purelin'},'trainlm' en la función 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'); %capa de 10 neuronas de una sola capa función de activación de la
neurona y1 = sim(net,p) %simula el comportamiento de la red
Página 2
% Here the network is trained for up to 50 epochs to a error goal of
% 0.01, and then resimulated.
%
net.trainParam.epochs = 50; % Parametro de la red número de epocas de entramiento
net.trainParam.goal = 0.01; % Meta a la q se dese que llegue el error medio cuadratico
net = train(net,p,t);
y2 = sim(net,p)
plot(p,t,'o',p,y1,'x',p,y2,'*')
Resultados obtenidos:
0 1 2 3 4 5 6 7 8-2
-1
0
1
2
3
4
5
newff: Este comando de MATLAB sirve para la creación de una red neuronal:
sim: simula o prueba el comportamiento de la red
y1 = sim(net,p)
net.trainParam.epochs = 50
Máximo número de iteraciones para obtener convergencia, época de entrenamiento.
net.trainParam.goal = 0.01.
Error máximo permitido, meta a la que se desea que llegue el error medio cuadrático.
Identifique el significado de los parámetros [0 8],[10 1],{'tansig' 'purelin'},'trainlm' en la
función newff
1. La cantidad de neuronas de entrada y el rango de cada una
2. La cantidad de neuronas en las capas subsiguientes:
3. La función de transferencia de cada capa en este caso: tansig(tangencial) y purelin
(linear)
4. El método de entrenamiento en este caso: trainlm Algoritmo que actualiza los pesos
y las ganancias de acuerdo a la optimización de Levenberg-Marquardt
net = newff([0 8],[10 1],{'tansig' 'purelin'},'trainlm');
Página 3
2. Identifique mediante una red neuronal la función . Presente el gráfico de la función original y
de la función aproximada mediante red neuronal para a) Utilice 6 neuronas en la
capa escondida, el método de entrenamiento traingd. b) Utilice 12 neuronas en la capa escondida, el método
de entrenamiento traingd.
a) Utilice 6 neuronas en la capa escondida, el método de entrenamiento traingd
% Back Propagation Algorithm (Code 8) % specify input and target p = [-1 -1 2 2;0 5 0 5]; t = [-1 -1 1 1]; % create a FFN net=newff(minmax(p),[3,1],{'tansig','purelin'},'traingd'); % set training parameters net.trainParam.show = 50; net.trainParam.lr = 0.05; net.trainParam.epochs = 300; net.trainParam.goal = 1e-5; % Now train the network [net,tr]=train(net,p,t); % check the output a = sim(net,p)
Gráfico de la Función Original
-2
-1
0
1
2
-2
-1
0
1
2-0.4
-0.2
0
0.2
0.4
Gráfico de la Función Aproximada
-2
-1
0
1
2
-2
-1
0
1
2-0.4
-0.2
0
0.2
0.4
a)Código del Programa: 6 neuronas escondidas
[X,Y] = meshgrid(-2:.2:2, -2:.2:2);
Z = X .* exp(-X.^2 - Y.^2);
surf(X,Y,Z)
mesh ( X,Y,Z)
xT=X(:)'; %TRASNFORMACION A UN SOLO VALOR
yT=Y(:)';%TRASNFORMACION A UN SOLO VALOR
zT=Z(:)'; %TRASNFORMACION A UN SOLO VALOR
p=[xT; yT];
t=[zT];
% create a FFN
net=newff(minmax(p),[6,1],{'tansig','purelin'
},'traingd');
% set training parameters
net.trainParam.show = 50;
net.trainParam.lr = 0.05;
net.trainParam.epochs = 1000;
net.trainParam.goal = 1e-7;
% Now train the network
[net,tr]=train(net,p,t);
% check the output
a = sim(net,p)
cont=1;
for i=1:1:21
for j=1:1:21
matrizA(i,j)= a(cont);
cont=cont+1;
end
end
mesh(X,Y,matrizA);
Gráfico de la Función Aproximada
-2
-1
0
1
2
-2
-1
0
1
2-0.4
-0.2
0
0.2
0.4
Página 4
3. Repita el ejercicio anterior, identifique mediante una red neuronal la función . Presente el
gráfico de la función original y de la función aproximada mediante red neuronal para a) Utilice 6 neuronas en la capa escondida, el método de entrenamiento trainlm. b)
Utilice 12 neuronas en la capa escondida, el método de entrenamiento trainlm.
Utilice 3 neuronas en la capa escondida, el método de entrenamiento trainlm.
b) Utilice 12 neuronas en la capa escondida, el método de entrenamiento traingd.
b)Código del Programa: 12 neuronas
escondidas
[X,Y] = meshgrid(-2:.2:2, -2:.2:2);
Z = X .* exp(-X.^2 - Y.^2);
surf(X,Y,Z)
mesh ( X,Y,Z)
xT=X(:)'; %TRASNFORMACION A UN SOLO VALOR
yT=Y(:)';%TRASNFORMACION A UN SOLO VALOR
zT=Z(:)'; %TRASNFORMACION A UN SOLO VALOR
p=[xT; yT];
t=[zT];
% create a FFN
net=newff(minmax(p),[12,1],{'tansig','pure
lin'},'traingd');
% set training parameters
net.trainParam.show = 50;
net.trainParam.lr = 0.05;
net.trainParam.epochs = 1000;
net.trainParam.goal = 1e-7;
% Now train the network
[net,tr]=train(net,p,t);
% check the output
a = sim(net,p)
cont=1;
for i=1:1:21
for j=1:1:21
matrizA(i,j)= a(cont);
cont=cont+1;
end
end
mesh(X,Y,matrizA);
Gráfico de la Función Aproximada
-2
-1
0
1
2
-2
-1
0
1
2-0.4
-0.2
0
0.2
0.4
[X,Y] = meshgrid(-2:.2:2, -2:.2:2);
Z = X .* exp(-X.^2 - Y.^2);
surf(X,Y,Z)
mesh ( X,Y,Z)
xT=X(:)'; %TRASNFORMACION A UN SOLO VALOR
yT=Y(:)';%TRASNFORMACION A UN SOLO VALOR
zT=Z(:)'; %TRASNFORMACION A UN SOLO VALOR
p=[xT; yT];
t=[zT];
% create a FFN
net=newff(minmax(p),[3,1],{'tansig','purelin'},'trainlm'
);
% set training parameters
net.trainParam.show = 50;
net.trainParam.lr = 0.05;
net.trainParam.epochs = 1000;
net.trainParam.goal = 1e-7;
% Now train the network
[net,tr]=train(net,p,t);
% check the output
a = sim(net,p)
cont=1;
for i=1:1:21
for j=1:1:21
matrizA(i,j)= a(cont);
cont=cont+1;
end
end
mesh(X,Y,matrizA);
Gráfico de la Función Original
-2
-1
0
1
2
-2
-1
0
1
2-0.5
0
0.5
Gráfico de la Función Aproximada
-2
-1
0
1
2
-2
-1
0
1
2-0.2
-0.1
0
0.1
0.2
0.3
Página 5
a) Utilice 6 neuronas en la capa escondida, el método de entrenamiento trainlm.
b) Utilice 12 neuronas en la capa escondida, el método de entrenamiento trainlm.
a)Código del Programa: 6 neuronas escondidas
[X,Y] = meshgrid(-2:.2:2, -2:.2:2);
Z = X .* exp(-X.^2 - Y.^2);
surf(X,Y,Z)
mesh ( X,Y,Z)
xT=X(:)'; %TRASNFORMACION A UN SOLO VALOR
yT=Y(:)';%TRASNFORMACION A UN SOLO VALOR
zT=Z(:)'; %TRASNFORMACION A UN SOLO VALOR
p=[xT; yT];
t=[zT];
% create a FFN
net=newff(minmax(p),[6,1],{'tansig','purelin'},'trainlm'
);
% set training parameters
net.trainParam.show = 50;
net.trainParam.lr = 0.05;
net.trainParam.epochs = 1000;
net.trainParam.goal = 1e-7;
% Now train the network
[net,tr]=train(net,p,t);
% check the output
a = sim(net,p)
cont=1;
for i=1:1:21
for j=1:1:21
matrizA(i,j)= a(cont);
cont=cont+1;
end
end
mesh(X,Y,matrizA);
Gráfico de la Función Aproximada
-2
-1
0
1
2
-2
-1
0
1
2-0.5
0
0.5
b)Código del Programa: 12 neuronas escondidas
[X,Y] = meshgrid(-2:.2:2, -2:.2:2);
Z = X .* exp(-X.^2 - Y.^2);
surf(X,Y,Z)
mesh ( X,Y,Z)
xT=X(:)'; %TRASNFORMACION A UN SOLO VALOR
yT=Y(:)';%TRASNFORMACION A UN SOLO VALOR
zT=Z(:)'; %TRASNFORMACION A UN SOLO VALOR
p=[xT; yT];
t=[zT];
% create a FFN
net=newff(minmax(p),[12,1],{'tansig','purelin'},'trainlm
');
% set training parameters
net.trainParam.show = 50;
net.trainParam.lr = 0.05;
net.trainParam.epochs = 1000;
net.trainParam.goal = 1e-7;
% Now train the network
[net,tr]=train(net,p,t);
% check the output
a = sim(net,p)
cont=1;
for i=1:1:21
for j=1:1:21
matrizA(i,j)= a(cont);
cont=cont+1;
end
end
mesh(X,Y,matrizA);
Gráfico de la Función Aproximada
-2
-1
0
1
2
-2
-1
0
1
2-0.5
0
0.5
Página 6
4. Escriba dos párrafos que describan las características principales del entrenamiento al que se
refiere el comando trainlm.(pag. 180 de Neural Networks for applied Sciences and Engineering,
Sandhya Samarasinghe)
5. Realice el diagrama en simulink del sistema dinámico antena descrito por las ecuaciones:
[ ]
velocidad angular [
]
[ ]
“trainlm” es algoritmo de entrenamiento que actualiza los pesos y las ganancias de acuerdo a
la optimización de Levenberg-Marquardt. Este método mejora la solución a los problemas que
son mucho más difíciles de resolver por sólo el ajuste de la tasa de aprendizaje en repetidas
ocasiones. Incorpora el método de Gauss-Newton que permite calcular el error, en vez de
ajustar el error, el método inicializa este error con la unidad y se inserta un nuevo término
a la segunda derivada, donde es el número neperiano.
Por ejemplo si se tiene un peso , donde la segunda derivada está dada por:
El nuevo peso que se actualiza en cada época m quedara expresado de la siguiente manera:
Dónde:
.
El término produce un efecto de condicionamiento a la segunda derivada a tal punto que
el error nunca incrementa en situaciones donde el método de Gauss-Newton puede dar como
resultado un incremento del error alterando así la estabilidad de la solución.
Página 7
6. Presente las respuestas dinámicas del sistema durante 20 segundos para las siguientes condiciones
iniciales: a)
b)
N
7. Escriba el código 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: en pasos de 22 .
b) Velocidad: en pasos de 36
.
c) Fuerza: en pasos de 6 N
Para realizar esto analice el código:
a)
b)
N
Código del Programa:
angulo=[-20:22:200]; % Patrones de entrenamiento del angulo velocidad=[-90:36:90]; % Patrones de entrenamiento de la velocidad fuerza=[-30:6:30]; % Patrones de entrenamiento de la fuerza p= combvec(angulo, velocidad, fuerza)
Para la generación de patrones de entrenamiento, se usan las combinaciones de valores de las variables de
estado/entradas que abarquen el rango completo de funcionamiento del sistema. Luego creamos las posibles
combinaciones usamos el comando combvec, se debe tomar en cuenta que las combinaciones deben estar dentro
de un rango adecuado para que permitan aprender a la red neuronal y no saturarle.
Gráfica de la Respuesta Dinámica del Sistema
Gráfica de la Respuesta Dinámica del Sistema
Grafica del Respuesta Ángulo Gráfica de la Respuesta de la Velocidad
Grafica del Respuesta Ángulo
Gráfica de la Respuesta de la Velocidad
Se realizan las combinaciones entre los patrones de entrenamiento
para formar una matriz de estados iniciales, valiéndonos del
comando “combvec()” en Matlab. Los que hace este comando es
hacer todas las combinaciones de los vectores que fueron
definidos al inicio para ser guardados en la variable “p”, que es la
matriz de estados iniciales.
Página 8
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 número de columnas igual al número de combinaciones.
Verifique los resultados obtenidos con los del numeral 6 y comente.
9. Escriba el código para entrenar una red neuronal con 8 neuronas en la capa oculta para identificar el
sistema dinámico antena en un lapso de tiempo de 50 ms.
Análisis de Resultados:
% Creacion de la Red Neuronal net=newff(minmax(p),[8,2],{'tansig','purelin'},'trainlm');
% Establecer parámetros de entrenamiento net.trainParam.show = 50; net.trainParam.lr = 0.05; net.trainParam.epochs = 300; net.trainParam.goal = 1e-7;
% Entrenamiento de la Red [net,tr]=train(net,p,T);
%simulacion a = sim(net,p)
Código del Programa:
angulo=[-20:22:200]*pi/180; % Patrones de entrenamiento del angulo
velocidad=[-90:36:90] *pi/180; % Patrones de entrenamiento de la
velocidad fuerza=[-30:6:30]; % Patrones de entrenamiento de la fuerza p= combvec(angulo, velocidad, fuerza) T=[]; for i=1:1:length(p)
u=p(3,i)*pi/180; %ingreso de valor en radianes w0=p(2,i)*pi/180; teta0=p(1,i); sim('antena', 50e-3);%permite simular el sistema creado en
simulink deltaw = velocidad-w0; deltaT = angulo-teta0; delta=[deltaT;deltaw] T=[T delta]
end
Los valores obtenidos difieren en
un rango muy pequeño de lo
esperado se puede deducir que el
aprendizaje se ha realizado de
manera eficiente, para el
problema propuesto.
Página 9
10. Construya un diagrama en simulink que permita la verificación del sistema identificado con red
neuronal mediante una comparación con el sistema original. Transcriba el diagrama de simulink y los
resultados obtenidos para varias condiciones iniciales y de señal de fuerza aplicada (mínimo tres
casos de estudio).
angulo=[-20:22:200]*pi/180; % Patrones de entrenamiento del angulo
velocidad=[-90:36:90]*pi/180; % Patrones de entrenamiento de la velocidad fuerza=[-30:6:30]; % Patrones de entrenamiento de la fuerza p= combvec(angulo, velocidad, fuerza) T=[]; for i=1:1:length(p)
u=p(3,i); %ingreso de valor en radianes w0=p(2,i); teta0=p(1,i); sim('antena', 50e-3);%permite simular el sistema creado en simulink deltaw = velocidad-w0; deltaT = angulo-teta0; delta=[deltaT;deltaw] T=[T delta]
end
Código para entrenamiento de la Neurona
% Creacion de la Red Neuronal
net=newff(minmax(p),[8,2],{'tansig','purelin'},'trainlm');
% Establecer parámetros de entrenamiento
net.trainParam.show = 50;
net.trainParam.lr = 0.05;
net.trainParam.epochs = 300;
net.trainParam.goal = 1e-7;
% Entrenamiento de la Red
[net,tr]=train(net,p,T);
%simulacion
a = sim(net,p)
Asignación de valores para el ángulo, velocidad y fuerza: teta0=0*pi/180
w0=0*pi/180
u=1
Generamos el bloque de entrenamiento: gensim(net,0.05)
Página 10
Página 11
1. Qué es la identificación de un sistema dinámico
La aplicación de técnicas de control a sistemas dinámicos requiere de una representación
que caracterice el proceso físico, o sea, un modelo matemático del mismo. Esta
representación matemática puede obtenerse en forma estrictamente teórica, lo que se
denomina Modelado; así como también en forma empírica, mediante experimentos sobre
el sistema real, basándose en datos de entrada y salida del proceso, llamado
Identificación.
La identificación de un sistema dinámico mediante una red neuronal consiste en
determinar los parámetros de la red de tal manera que los dos sistemas tengan respuestas
similares cuando son excitados con las mismas señales de control.
2. Si la red neuronal FF es un sistema estático, cómo se pretende identificar un sistema
dinámico
La red neuronal es un sistema estático no dinámico. Si se restringe al sistema dinámico a un
pequeño intervalo de tiempo, se lo puede considerar como un sistema estático. Es posible
obtener una red neuronal que tiene las mismas variaciones que el sistema dinámico luego
de que ha transcurrido un pequeño intervalo de tiempo . Para que la red neuronal
refleje el comportamiento del sistema dinámico es necesario que su comportamiento sea
similar para un entramado lo suficientemente fino de valores de los estados y señal de
control del sistema. Esto se logra mediante la generación 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 dinámico.
3. Qué elementos tiene cada patrón de entrenamiento para la:
a) Aproximación de una función
Factor de aprendizaje.
Numero de neuronas ocultas, de entrada y salida.
Tipo de conexión Feed Back, Feed Foward, Lateral y de Retardo
Página 12
b) Identificación del sistema dinámico
Variación de salida en el patrón de entrenamiento.
Tiempo de ejecución del patrón de entrenamiento.
Pesos de conexión.
Tipo de función limitante.
4. Cómo se caracteriza un sistema dinámico en el espacio de estado
Un sistema dinámico en el espacio de estado se caracteriza por ser el conjunto más pequeño
de variables de estado de tal forma que la información que tienen esas variables en un
determinado instante diferente al inicial, conjuntamente con la información de la entrada para
dicho instante determina completamente el comportamiento del sistema en cualquier tiempo.
5. En qué consiste el “entrenamiento” que se requiere para entrenar la red neuronal
comente el compromiso entre la resolución y la carga computacional
En el entrenamiento lo que se desea que nuestra red aprenda de tal forma que pueda reconocer todo lo
que entre por la entrada de nuestra red neuronal. Durante este proceso se irán modificando los valores
de los pesos hasta encontrar la salida deseada. El proceso de entrenamiento será iterativo.
El entramado es una estructura formada por muchos procesadores simples llamados nodos o neuronas
ya sean ocultas o visibles, estas se encuentran conectadas por canales de comunicación o conexiones,
por ende para entrenar una red neuronal se necesitara un entramado complejo si así lo requiere el
problema o uno simple si el problema es de fácil solución.
La resolución de un entrenamiento depende de cuan eficaz es el proceso de aprendizaje y cuan
complejo sea este proceso, si el problema requiere de varias capas de neuronas la carga
computacional será alta pues se deberán realizar procesos de cálculos en diferentes niveles lo que de
cierta forma demora el tener una respuesta, mientras que si el problema requiere de una capa de
neurona la carga computacional será baja y por ende la resolución de aprendizaje será mejor pues se
tienen una mayor asertividad en los resultados.
Yo Evelyn Gabriela Lema Vinueza afirmo que esta actividad es de mi autoría y establezco que
para la elaboración de la misma he seguido los lineamientos del Código de Ética de la
Universidad de las Fuerzas Armadas ESPE