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
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
Top Related