Guía Practica de Matlab y Simulink

16
1 Santiago Sur. Ingeniería en Automatización y Control Industrial. Proyecto de Control. Guía de Matlab y Simulink. Nombre Alumno (s): Joshua González Almarza Christian Lara Arellano Nombre Profesor (s): Hernán Pimentel Torrejón Joel Vega Caro Fecha: 29 de Noviembre de 2013

description

Guía practica para utilizar el modulo de Simulink de Matlab; explica de forma genérica lo que es Matlab y Simulink

Transcript of Guía Practica de Matlab y Simulink

1

Santiago Sur.

Ingeniería en Automatización y Control Industrial.

Proyecto de Control.

Guía de Matlab y Simulink.

Nombre Alumno (s): Joshua González Almarza

Christian Lara Arellano

Nombre Profesor (s): Hernán Pimentel Torrejón

Joel Vega Caro

Fecha: 29 de Noviembre de 2013

2

CONTENIDO

1. ¿Qué es MATLAB?............................................................................3

2. ¿Qué es SIMULINK?.........................................................................4

3. Redes Neuronales Artificiales y Toolbox Nnet…………………….6

3.1. Redes Neuronales Artificiales........................................................ 6

3.2. Composición de las RNA…………………………………………..6

3.3. Librería Nnet en Simulink……………………………................…8

3.4.Bloque Narma-L2………………………………………...…………9

3.5. Ejemplo de redes neuronales utilizando Scripts……………..……10

Bibliografía…………………………………………………16

3

1. ¿Qué es MATLAB?

MATLAB es un lenguaje de alto desempeño diseñado para realizar cálculos técnicos.

MATLAB integra el cálculo, la visualización y la programación en un ambiente fácil de

utilizar donde los problemas y las soluciones se expresan en una notación matemática.

MATLAB es un sistema interactivo cuyo elemento básico de datos es el arreglo que no

requiere de dimensionamiento previo. Esto permite resolver muchos problemas

computacionales, específicamente aquellos que involucren vectores y matrices, en un tiempo

mucho menor al requerido para escribir un programa en un lenguaje escalar no interactivo tal

como C o Fortran.

MATLAB se utiliza ampliamente en:

• Cálculos numéricos

• Desarrollo de algoritmos

• Modelado, simulación y prueba de prototipos

• Análisis de datos, exploración y visualización

• Gráficos de datos con fines científicos o de ingeniería

• Desarrollo de aplicaciones que requieran de una interfaz gráfica de usuario (GUI,

Graphical User Interface).

En el ámbito académico y de investigación, es la herramienta estándar para los cursos

introductorios y avanzados de matemáticas, ingeniería e investigación. En la industria

MATLAB es la herramienta usada para el análisis, investigación y desarrollo de nuevos

productos tecnológicos.

La ventaja principal de MATLAB es el uso de familias de comandos de áreas específicas

llamadas Toolbox. Lo más importante para los usuarios de MATLAB es que los Toolbox le

permiten aprender y aplicar la teoría. Los Toolbox son grupos de comandos de MATLAB

(archivos M) que extienden el ambiente de MATLAB para resolver problemas de áreas

específicas de la ciencia e ingeniería. Por ejemplo, existen toolbox para las áreas de

Procesamiento Digital de Señales, Sistemas de Control, Redes Neuronales, Lógica Difusa,

Wavelets, etc.

4

2. ¿Qué es SIMULINK?

Simulink viene a ser una herramienta de simulación de modelos o sistemas, con cierto grado de

abstracción de los fenómenos físicos involucrados en los mismos. Se hace hincapié en el

análisis de sucesos, a través de la concepción de sistemas (cajas negras que realizan alguna

operación).

Se emplea arduamente en Ingeniería Automatización en temas relacionados con la simulación

de procesos y modelamientos matemáticos, involucrando temas específicos de ingeniería

biomédica, telecomunicaciones, entre otros. También es muy utilizado en Ingeniería de Control

y Robótica.

Posee importantes librerías con bloques que permiten desde una simulación de sistemas a

producir el control de proyectos de ingeniería, procesos neuronales artificiales, reducción de

armónicos y muchas más aplicaciones.

Algunos ejemplos de los elementos que podemos encontrar en las librearías son:

Bloque Función Librería Parámetros requeridos

Constante Asigna un valor constante a la

entrada.

Sources Valor de la constante.

Entrada escalón Introduce un escalón de

magnitud específica en un

tiempo dado.

Sources Tiempo del escalón

Valor inicial del escalón,

Valor Final del Escalón

Entrada Rampa Introduce una rampa en un

tiempo especificado.

Sources Tiempo de la rampa,

pendiente

Entrada Senoidal Introduce una señal senoidal

especificada por el usuario.

Sources Amplitud de la onda,

Fase.

Workspace Almacena datos de la señal

que llega al bloque y la

convierte en vector. Si se

conecta al reloj se almacena

el vector tiempo.

Sinks Nombre y tipo de la

variable (Save format:

Matrix)

Scope Grafica la señal que se

introduzca con respecto al

tiempo.

Sinks Entradas

XYgraph Grafica la entrada superior en

el eje x y la inferior en el eje

y

Sinks Rango de los ejes

Función de

Transferencia

Representa la función de

transferencia a lazo abierto

Contin. Numerador y

Denominador de la FT

Integrador Integra una señal en función

del tiempo

Contin. Valor inicial desde el

cual se va a integrar

5

Control de nivel con Redes Neuronales Artificiales.

Universidad tecnológica de Chile INACAP

6

3. Redes Neuronales Artificiales y Toolbox Nnet

3.1. Redes Neuronales Artificiales

Esta técnica de programación, relativamente joven en su ampliación en el campo de las

aplicaciones automáticas, ha demostrado un potencial sin precedentes respecto a las técnicas

convencionales. Basándose su programación en el comportamiento de una neurona biológica,

simulando sus estados de activación e inhibición como 0’s y 1’s respectivamente, es capaz de

actuar con una memoria sujeta a aprendizaje, con variables de tiempo de entrenamiento, error

permisible en su respuesta y cantidad de información a aprender. Si se enlazan en diferentes

arquitecturas estas neuronas artificiales se consigue una red neuronal artificial, y según la

estructura de esta red la finalidad de la misma será propicia para un tipo u otro de problemas.

3.2. Composición de las RNA

Las Redes Neuronas Artificiales están definidas por las siguientes variables:

- Entradas: Pueden ser una o varias a una misma neurona. Son los datos con los que va a

trabajar la neurona, los que va a procesar que van a ser procedentes de una fuente o de las

salidas de otras neuronas. Si provienen de la fuente en la fase de aprendizaje de la neurona, se

les llaman Paterns.

- Pesos de Unión: Estas variables son factores que van a modificar las entradas a las neuronas.

Las entradas se multiplican por estos pesos de interconexión de neuronas. Existe un peso

determinado entre cada neurona origen m (de la cual proviene la entrada de la neurona destino

n) y neurona destino n (a la que va dirigida la salida de la neurona m), definido por la

simbología w (m, n).

Estas variables dan a entender la efectividad de la sinapsis de los enlaces entre neuronas, es

decir, cuanta información pasa o se pierde en la comunicación entre neuronas.

Los pesos entre neuronas son los que van a ir modificándose en la fase de aprendizaje de la red

neuronal hasta llegar a un punto de convergencia en el que el cómputo de los Paterns según la

función de transferencia que deben aprender dé la salida deseada Target con un error mínimo

preestablecido. Hay una relación entonces entre los pesos de una red y el error que provoca a su

salida. Esto se puede representar en gráficos tridimensionales donde un plano lleno de picos y

valles está definido por los múltiples valores que pueden alcanzar los pesos de la RNA siendo

la altura la variable Error.

La fase de aprendizaje consiste en que la red neuronal converja hacia el valle absoluto de la

representación, obteniendo así unos valores de pesos que ofrecen el error mínimo de la red. Los

problemas con los que puede encontrarse son en saltarse este valle absoluto o caer en un valle

local del que no pueda salir, y donde el error no sea el mínimo deseado.

7

- Funciones: Están encargadas de modificar los parámetros de entrada y transformarlos en una

única salida, existen 3 tipos de funciones que podemos encontrar en una red neuronal, pero no

necesariamente deben existir las 3 en una red.

Función de propagación (función de excitación). Consiste en la sumatoria de cada

entrada multiplicada por el peso de su interconexión (valor neto). Si el peso es positivo

la conexión se denomina “Excitatoria”; por el contrario si es negativo se denomina

“Inhibitoria”.

Función de activación. Modifica a la anterior, puede no existir, siendo en este caso la

salida la misma función de propagación.

Función de transferencia. Se aplica al valor devuelto por la función de activación. Se

usa para acotar la salida de la neurona.

8

3.3. Librería Nnet en Simulink.

Respecto al bloque neuronal de Simulink, lo podemos encontrar en la librería con el nombre

“Neuronal Network Toolbox”.

En su interior podemos encontrar los siguientes bloques:

Modelo Referencial Modelo Predictivo Modelo Narma-L2

9

3.4. Bloque Narma-L2

El que utilizaremos en la maqueta de nivel es el Modelo Narma-L2 por sus características,

siendo una de las más importantes la obtención del modelo matemático de la planta sin la

necesidad de gran intervención del programador, ya que genera el modelo mediante la

observación del comportamiento de las variables de entradas respecto a las salidas obtenidas

del sistema, siendo de gran utilidad y dando mayor facilidad para después producir el

entrenamiento de la red neuronal integrada en el mismo bloque Narma.

10

También es factible realizar experiencia de Redes Neuronales Artificiales mediante el uso de

Scripts (Programación), un ejemplo podría ser ver el comportamiento de las compuertas lógicas

como muestra el siguiente ejemplo:

3.5. Ejemplo de redes neuronales utilizando Scripts:

Comprobación de compuerta XOR

Para comprender mejor las redes neuronales vamos a ver un ejemplo que resuelve la función

XOR:

Necesitamos una red neuronal con dos neuronas de entrada y una de salida.

No es un problema separable linealmente, por tanto, necesitamos una capa oculta en la que

colocaremos dos neuronas.

[NOTA] Os vendría bien hacer un script para no tener que volver a repetir todos lo pasos

cuando tengáis que modificar algo.

Para crear la red utilizaremos la función newff:

net = newff([0 1; 0 1],[2 1],{'logsig','logsig'})

Como parámetros necesita el rango de valores de las neuronas de entrada ([0 1; 0 1]), el número

de celdas en la capa oculta y en la de salida ([2 1]) y la función de activación de cada capa

({‘logsig’,’logsig’} en este caso, ver figura 1).

Figura 1.- La función de activación logsig

11

Las funciones de activación tienen que estar acordes con el tipo de número que van a recibir en

la capa de entrada. Si reciben algo en [0,1] ponemos logsig, si es algo entre [-1,1] ponemos

tansig. Lo mismo sucede con la capa de salida: si queremos devolver algo en [-1,1] ponemos

tansig y si es entre [0,1] ponemos logsig.

Vamos a ver cómo es de “buena” la red sin entrenar. Necesitamos una matriz con las entradas.

Las entradas de la red son las columnas de la matriz. Si queremos una matriz con las entradas:

“1 1”, “1 0”, “0 1” y “0 0” debemos escribir:

>> input = [1 1 0 0; 1 0 1 0]

input =

1 1 0 0

1 0 1 0

Veamos qué salidas obtenemos si le damos esta entrada a la red:

>> output=sim(net, input)

output =

0.3394 0.0659 0.0769 0.1025

La función sim se utiliza para simular la red y así calcular las salidas. La salida no es muy

buena. Lo deseable era (0 1 1 0) y nos hemos encontrado con (0.3394 0.0659 0.0769 0.1025).

Esto es así porque los pesos se han inicializado aleatoriamente y la red no ha sido entrenada

(seguramente que cuando lo ejecutes tú saldrán otros valores).

El objetivo de esta red es ser capaz de producir:

>> target = [0 1 1 0]

target =

0 1 1 0

Con el comando plot podemos ver el objetivo y lo que hemos conseguido hasta el momento:

>> plot(target, 'o')

>> hold on

>> plot(output, '+r')

12

Veamos el resultado en la figura 3:

Figura 3.- Objetivo (círculos en azul) y solución obtenida sin entrenar la red (+ en rojo)

Parece que con los pesos que tiene la red sin entrenar no se obtiene una buena solución.

Veamos los pesos que hay entre la capa de entrada y la capa oculta:

>> net.IW{1,1}

ans =

7.7055 1.8290

-7.9089 -0.4123

Figura 4.- La red con los pesos iniciales

13

Podríamos cambiar cualquier peso de la red:

>> net.IW{1,1}(1,2)=5;

>> net.IW{1,1}

ans =

7.7055 5.0000

-7.9089 -0.4123

Los pesos entre la capa oculta y la capa de salida se almacenan en LW:

>> net.LW{2,1}

ans =

4.6527 3.1164

Así la red con todos los pesos sería (incluyendo el cambio realizado):

Figura 5.- La red con todos los pesos iniciales.

Hemos cambiado un peso, así que podemos volver a evaluar la red:

>> output=sim(net,input)

output =

0.6645 0.0659 0.0846 0.1025

>> plot(output,'g*')

14

En la figura vemos que las salidas han cambiado ligeramente:

Figura 6.- Objetivo (círculos en azul) y solución obtenida sin entrenar la red (+ en rojo).

En (* verde) las salidas habiendo modificado un peso a mano.

Podríamos pasarnos horas modificando los pesos tratando de acercarlos a la solución

(Prueba a hacer un par de cambios). Pero parece más sencillo dejar que los pesos se calculen

automáticamente. Para ello tenemos que entrenar la red.

Para entrenar la red tenemos que utilizar la función train:

>> net = train(net,input,target); Aparece un gráfico en el que vemos la evolución del entrenamiento. El objetivo a alcanzar es

bajar de un gradiente de 1E-10 (por defecto). Vemos también que el número de iteraciones

máximo, por defecto, es 100.

Como hay pocos ejemplos el entrenamiento es muy rápido. Veamos si hemos aprendido bien:

>> output = sim(net,input)

output =

0.0000 1.0000 1.0000 0.0000

15

Y ahora vamos a ver los pesos que se han calculado en el entrenamiento:

>> net.IW{1,1}

ans =

9.2325 -11.5070

-12.0289 13.7543

>> net.LW{2,1}

ans =

27.6393 30.3009

16

BIBLIOGRAFIA.

La información se obtuvo de las siguientes páginas:

http://www.mathworks.com/products/matlab/

http://matlablatino.blogspot.com/2009/04/002-que-es-simulink.html

http://www.aic.uniovi.es/ssii/P10/P10-RedesNeuronales.pdf