Control Fuzzy
Modelo Red Neuronal de un Buque
Primero que todo obtenemos los datos del modelo operativo, para este caso usamos la simulación del controlador del buque desde Simulink y capturamos los datos de Curso a Seguir, Angulo del Timón y la salida del Controlador en lazo abierto; SCourse, ARudder, CCourse, respectivamente.
En la Imagen 1 se presenta el modelo realizado enSimulink de la planta y controlador de un buque.
Se exportan las variables al Workspace desde Simulink.
ARudder: Angle Rudder
SCourse: Set Course
CCourse: Controlled Course
Imagen 1 – Control en Simulink para Buque de Superficie
Simulando obtenemos la siguiente gráfica donde se puede observar tres líneas que corresponden a la variable controlada, el set point, y la salida del controlador.Imagen 2 – Scope resultado de simulación de modelo en Simulink
Amarillo: Set Course
Azul: Rumbo del buque
Morado: Acción de control en lazo cerrado.
Tal como se observa en la Imagen 2, se configura un primer rumbo en 35 (SetCourse), provocando que el rumbo del buque varíe desde 0 que es el rumbo inicial, hasta 35 que es donde se normaliza y el deseado, a su vez la acción de control cambiapara poder llevar el rumbo actual al rumbo deseado o configurado. Este proceso se repite para los rumbos -35, 35 y 0 sucesivamente.
Código en Matlab para realizar la Red Neuronal
close all
clc
CAPTURA DE DATOS DESDE EL WORKSPACE
% Data load
x1 = SCourse.signals.values;
x2 = ARudder.signals.values;
yp = CCourse.signals.values;
OBTENCIÓN DEL TAMANO DEL VECTOR
[aq,bq] = size(x2); %tamano del vector
DETERMINACIÓN DE VARIABLES DE ENTRADA Y DE SALIDA, Y CUANTOS DATOS PREDECESORES SE NECESITAN PARA LOGRAR UN ÓPTIMO ENTRENAMIENTO.
for t=5:aq % for para recortar datos
xa(t) = [x2(t)];
xb(t) = [yp(t-4)];
sa(t) = [yp(t)];
end
P = [xa; xb]; % Datos de entrada a la red
T = sa; % Definicion de salida
DESARROLLO DE RED EN MATLAB
COMANDOS:
NEWFF =CREA NUEVA RED CON BACKPROPAGATION
P = VARIABLE ENTRADA
T = VARIABLE SALIDA
2 = NUMERO DE CAPAS OCULTAS
1 = NUMERO DE SALIDAS
% Red
net = newff (P,T,[2,1], {'logsig','logsig'});
ENTRENAMIENTO DE LA RED
DEFINICIÓN DE NÚMERO DE SIMULACIONES DETERMINA UN MEJOR ENTRENAMIENTO ES DECIR UN ERROR MENOR Ó FINALIZACIÓN DE ENTRENAMIENTO CUANDO SE ENCUENTRA UN ERROR MÍNIMO ESTABLECIDO.
% Trainingnet.trainParam.epochs = 400; % 400 = Define # máximo de runs
net.trainParam.goal = 1e-3; % 1e-2 = Define error máximo a alcanzar
[net,tr] = train(net, P,T);
SIMULACIÓN DE LA RED
% Simulación
a = sim(net,P);
CALCULO DE ERROR CUADRÁTICO MEDIO
% Error Cuadrático Medio
ECM = mse(yp-a')
GRÁFICO DE SALIDA REAL Vs SALIDA NEURONAL
% Gráficas
plot(yp);
hold on;
plot (a,'r');
grid;title('Salida Real Vs Salida Red Neuronal')
VISUALIZACIÓN DE LOS PESOS DE LA RED
% Pesos de la red
W = net.IW{1,1}
VISUALIZACIÓN DE LOS UMBRALES
% Bias o Umbral
b = net.b{1}
La Imagen 3 visualiza el estado del entrenamiento de la red neuronal, donde se visualiza el tiempo del entrenamiento, las iteraciones cumplidas y el error logrado en cada iteración.
Imagen 3 – Ventana deentrenamiento de la red Matlab
Imagen 4 – Gráfica de salida del controlador Vs Salida Neuronal
Imagen 5 – Gráfica con Zoom de Salida del controlador Vs Salida Neuronal
Una vez finalizado el entrenamiento de la red neuronal, se visualiza la salida real del controlador y la salida neuronal lograda, Ver Imagen 4.
En la Imagen 5 se visualiza el comportamiento del Error Cuadrático Medio, (MSE desus siglas en ingles), donde se observa que el error disminuye considerablemente desde el inicio del entrenamiento de la red hasta la iteración 400, donde se mantiene casi constante sin llegar al límite deseado. Sin embargo como se explica anteriormente, con este entrenamiento de la red, se aproxima al valor deseado.
Lo que se puede concluir de analizar esta gráfica es que podemos obtener un MSE...
Regístrate para leer el documento completo.