fernando villalba activ i dad 13

23
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: 04-02-2015 Nombre alumno: Fernando Villalba 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 multivariables 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'); y1 = sim(net,p)

Upload: fernando-villalba

Post on 23-Dec-2015

19 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: Fernando Villalba Activ i Dad 13

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: 04-02-2015

Nombre alumno: Fernando Villalba

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 multivariables

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');

y1 = sim(net,p)

Page 2: Fernando Villalba Activ i Dad 13

Página 2

Analisis del código La función newff llama al método de aprendizaje de la red que en este caso está dada por la función NET.trainFcn, empleando los valores indicados por NET.trainParam entre ellos número de épocas, error final. La función crea una red tipo Backpropagation, requiere que le sean especificados los siguientes parámetros newff: (PR,[S1 S2...SNl],{TF1 TF2...TFNl},BTF,BLF,PF)

PR : Rx2 Matriz de valores máximos y mínimos de cada uno de las R neuronas de entrada. Si : Número de neuronas para cada una de las capas. TFi : Función 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 : Función de actualización de los pesos, por defecto utiliza learngdm. PF : Función para evaluar el desempeño de la red, por defecto utiliza mse.

Funcionalidad de los comandos: newff: Este comando se utiliza para crear una red de alimentación hacia adelante de dos capas. sim: Este comando sirve para simular la red neuronal. net.trainParam.epochs = 50: En este comando se especifica el número de épocas de entrenamiento de la red neuronal. net.trainParam.goal = 0.01: Este comando específica el valor al que se desea llegar en el error medio cuadrático. [0 8]: Representan el rango de los valores de entrada. [10 1]: En este parámetro se especifica el número de neuronas de entrenamiento en una capa y el número 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 función de transferencia neuronal. purelin: Es la función de activación de la tangente hiperbólica. Del tipo lineal mx+b. trainlm: Es el método de entrenamiento y se especifica que es un método de aproximaciones de segunda derivada ya que al tener lm se dice que se usa la segunda derivada, es un método ofisticado. La presente gráfica nos muestra los resultado del entrenamiento épocas, tiempo total de entrenamiento, error final, e incluso podemos cambiar el número de épocas deseadas

% 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,'*')

Page 3: Fernando Villalba Activ i Dad 13

Página 3

Y el resultado final obtenido

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

Page 4: Fernando Villalba Activ i Dad 13

Página 4

Además 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 función 𝑧 = 𝑥𝑒−𝑥2−𝑦2. Presente el gráfico de la

función original y de la función aproximada mediante red neuronal para −2 ≤ 𝑥 ≤ 2; −2 ≤𝑦 ≤ 2. 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.

Gráfica de función real

Código

Page 5: Fernando Villalba Activ i Dad 13

Página 5

[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);

Gráfica con 6 neuronas

Gráfica con 12 neuronas

Page 6: Fernando Villalba Activ i Dad 13

Página 6

Gráfica 12 neuronas, 10000 épocas

Page 7: Fernando Villalba Activ i Dad 13

Página 7

Análisis de Gráficas

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

gráficas de entrenamiento con la gráfica original

El incremento de épocas tampoco ayuda al entrenamiento

Mientras más épocas se desarrollen mayor será el tiempo de duración de entrenamiento

3. Repita el ejercicio anterior, identifique mediante una red neuronal la función 𝑧 =

𝑥𝑒−𝑥2−𝑦2. Presente el gráfico de la función original y de la función aproximada mediante

red neuronal para −2 ≤ 𝑥 ≤ 2; −2 ≤ 𝑦 ≤ 2. 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.

Gráfica de función real

Código

[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;

Page 8: Fernando Villalba Activ i Dad 13

Página 8

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);

Gráfica con 6 neuronas

Page 9: Fernando Villalba Activ i Dad 13

Página 9

Gráfica con 12 neuronas

Análisis de gráficas

Se puede apreciar mediante las gráficas que se ha llegado a un entrenamiento casi preciso en

comparación con el método anterior, con la única diferencia que las gráfica entrenada se

encuentra rotada 90 grados, para lo cual cambiamos los ejes X,Y para visualizar la exactitud

de ambas gráficas

El incremento del número de épocas no cambia en nada al entrenamiento

Código con los ejes rotados para visualizar la exactitud del entrenamiento

Gráfica entrenada

Page 10: Fernando Villalba Activ i Dad 13

Página 10

Gráfica 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);

Page 11: Fernando Villalba Activ i Dad 13

Página 11

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)

En síntesis el método “trainlm” es un algoritmo de entrenamiento que actualiza los pesos y

ganancias de acuerdo a la optimización de Levenberg Marquardt, este método mejora la solución a

los problemas que son difíciles para resolver por ajuste de la tasa de aprendizaje en repetidas

ocasiones, como implica en el método 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 método 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 método de Levenberg Marquardt son similares a las del

método de Newton-Gauss. La convergencia local es lenta cuando el residuo es grande y cuando el

problema es fuertemente no lineal. Sin embargo este método es superior cuando el paso es grande,

la dirección de descenso es mejor que en el método de Newton- Gauss. Por ello es preferible el uso

del método de Levenberg- Marquardt para la mayoría de los problemas.

Este algoritmo converge en menos iteraciones que cualquier método discutido anteriormente, por

supuesto requiere más cálculos computacionales por iteración, debido a que implica el cálculo de

matrices inversas. A pesar de su gran esfuerzo computacional sigue siendo el algoritmo de

entrenamiento más rápido para redes neuronales cuando se trabaja con un moderado número de

parámetros en la red, si el número de parámetros es muy grande utilizarlo resulta poco práctico.

5. Realice el diagrama en simulink del sistema dinámico antena descrito por las ecuaciones:

𝒙𝟏 = 𝜽 á𝒏𝒈𝒖𝒍𝒐 [°]; 𝝎 = 𝒙𝟐 =𝒅𝜽

𝒅𝒕 = velocidad angular [

°

𝑺]

𝒖 = 𝒇𝒖𝒆𝒓𝒛𝒂 [𝑵] �̇�𝟏 = 𝒙𝟐

�̇�𝟐 = 𝟗. 𝟖𝟏 ∗ 𝒔𝒆𝒏(𝒙𝟏) − 𝟐 ∗ 𝒙𝟐 + 𝒖

Page 12: Fernando Villalba Activ i Dad 13

Página 12

6. Presente las respuestas dinámicas del sistema durante 20 segundos para las siguientes

condiciones iniciales:

a) 𝜃 = 80°; 𝑤 = 30°

𝑠; 𝑢 = 5 𝑁

b) 𝜃 = −5°; 𝑤 = −60°

𝑠 ; 𝑢 = 15 N

Page 13: Fernando Villalba Activ i Dad 13

Página 13

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: −20 ≤ 𝜃 ≤ 200 en pasos de 22°.

b) Velocidad: −90 ≤ 𝜔 ≤ 90 en pasos de 36 °

𝑠 .

c) Fuerza: −30 ≤ 𝑢 ≤ 30 en pasos de 6 N

Código para generar patrones de entrenamiento con todas las posibles convianciones

mediante comando combvec

%Construccion de parámetros targ=[]; %pasos de patrones %angulo en pasos de 22 grados anguloP=-20:22:200; anguloP=anguloP.*(pi/180);

Page 14: Fernando Villalba Activ i Dad 13

Página 14

%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

Código de entrenamiento de la red según datos presentes obtenidos del código 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

Gráficas de resultados

Gráfica de posición

Page 15: Fernando Villalba Activ i Dad 13

Página 15

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 mínima diferencia entre los valores de posición seleccionados con color rojo

y los valores entrenados con color azul

Gráficas de velocidad

A simple vista no se puede identificar el entrenamiento, el error es ínfimo para poder ver los

cambios se realiza un zoom

Page 16: Fernando Villalba Activ i Dad 13

Página 16

Se puede observar una mínima diferencia entre los valores de velocidad seleccionados con color

rojo y los valores entrenados con color azul

El diagrama empleado en los códigos 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 número de columnas igual al número de combinaciones.

Verifique los resultados obtenidos con los del numeral 6 y comente.

Código de combinación de valores %Construccion de parámetros 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

Page 17: Fernando Villalba Activ i Dad 13

Página 17

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

Código 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

Page 18: Fernando Villalba Activ i Dad 13

Página 18

Resultados con 6 capas de entrada y dos de salida

Gráfica con valores establecidos de fuerza, velocidad, posición

Page 19: Fernando Villalba Activ i Dad 13

Página 19

Gráfica con valores combinados de fuerza, velocidad, posición 6capas de entrada

Gráfica con valores combinados de fuerza, velocidad, posición 8capas de entrada

Análisis 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 más lenta mientras que

intervalos más cortos la red es más rápida.

Los valores presentes en velocidad, posición y ángulo hacen que el sistema oscile, mientras

que si poseemos una combinación de los valores para el sistema en un rango determinado el

sistema es más estable

El incremento en la capa de entrada hacen que el sistema aprenda más rápido, siempre y

cuando usemos el método trainlm en este caso podemos apreciar que la variación en la

velocidad es mayor a cuando se tenia una red de 6 neuronas en la capa de entrada

Page 20: Fernando Villalba Activ i Dad 13

Página 20

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.

%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 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).

Page 21: Fernando Villalba Activ i Dad 13

Página 21

Velocidad=10, posición=22, fuerza= 3

Velocidad=50, posición=100, fuerza= 10

Page 22: Fernando Villalba Activ i Dad 13

Página 22

Velocidad=50, posición=100, fuerza= 3

Page 23: Fernando Villalba Activ i Dad 13

Página 23

Velocidad=20, posición=50, fuerza= 5

Análisis de Resultados:

Si excedemos el valor de la fuerza el sistema presenta muchas perturbaciones,

consecuentemente no aprende

El sistema es más estable para valores pequeños tanto de fuerza como de velocidad

El aprendizaje mediante las combinaciones de valores de fuerza, posición y velocidad

hacen que el sistema sea más estable que colocando independientemente los valores

Mientras mayor sea el número de neuronas en la capa de entrada el sistema posee menos

error

Yo Fernando Villalba 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