Diseñar un controlador neuronal de referencia de modelos en Simulink
La arquitectura de control de referencia de modelos neuronales utiliza dos redes neuronales: una red de controlador y una red de modelo de planta, como se muestra en la figura siguiente. Primero se identifica el modelo de planta y, luego, se entrena el controlador para que la salida de planta siga la salida del modelo de referencia.
En la figura siguiente se muestran los detalles del modelo de planta de red neuronal y del controlador de red neuronal tal como se implementan en el software Deep Learning Toolbox™. Cada red tiene dos capas, y se puede seleccionar el número de neuronas que se usarán en las capas ocultas. Hay tres juegos de entradas del controlador:
Entradas de referencia retrasadas
Salidas de controlador retrasadas
Salidas de planta retrasadas
Para cada una de estas entradas, se puede seleccionar el número de valores retrasados que se utilizarán. Normalmente, el número de retrasos aumenta con el orden de la planta. Existen dos conjuntos de entradas para el modelo de planta de red neuronal:
Salidas de controlador retrasadas
Salidas de planta retrasadas
Igual que con el controlador, se puede establecer el número de retrasos. En la sección siguiente se muestra cómo establecer los parámetros.
Utilizar el bloque Model Reference Controller
Nota
Para diseñar un controlador adaptativo de referencia de modelos, también puede utilizar el bloque Model Reference Adaptive Control (Simulink Control Design) de Simulink®.
Se recomienda este flujo de trabajo por las siguientes ventajas:
Simplifica el diseño del controlador.
Solo requiere una conjetura inicial de la dinámica del modelo de planta.
Caracteriza automáticamente alteraciones e incertidumbres del modelo como redes neuronales de una sola capa oculta. Después, el bloque actualiza los parámetros del controlador en tiempo real para cancelar estas alteraciones e incertidumbres en el sistema controlado, con lo que deja de ser necesario el reajuste manual. Para obtener más información sobre cómo usar redes neuronales de una sola capa oculta, consulte Disturbance and Uncertainty Model (Simulink Control Design).
Admite generación de código.
Para ver un ejemplo de cómo utilizar estas herramientas, consulte Quadrotor Control Using Model Reference Adaptive Control (Simulink Control Design).
En esta sección se muestra cómo se entrena el controlador de la red neuronal. El primer paso es copiar el bloque Model Reference Controller del conjunto de bloques de Deep Learning Toolbox al editor de Simulink. Si tiene dudas sobre cómo hacerlo, consulte la documentación de Simulink. Este paso se omite en el ejemplo siguiente.
Con el software Deep Learning Toolbox, se proporciona un modelo de ejemplo para mostrar el uso del controlador de referencia de modelos. En este ejemplo, el objetivo es controlar el movimiento de un brazo robótico simple de un solo enlace, tal como se muestra en la figura siguiente:
La ecuación del movimiento del brazo es:
donde ϕ es el ángulo del brazo y u es el par suministrado por el motor de corriente continua.
El objetivo es entrenar el controlador para que el brazo siga el modelo de referencia
donde yr es la salida del modelo de referencia y r es la señal de referencia de entrada.
En este ejemplo se utiliza un controlador de red neuronal con una arquitectura 5-13-1. Las entradas al controlador constan de dos entradas de referencia retrasadas, dos salidas de planta retrasadas y una salida de controlador retrasada. Se utiliza un intervalo de muestreo de 0,05 segundos.
Para ejecutar este ejemplo:
Inicie MATLAB®.
Escriba
mrefrobotarm
en la ventana de comandos de MATLAB. Este comando abre el editor de Simulink con el bloque Model Reference Controller ya en el modelo.Haga doble clic en el bloque Model Reference Controller. Se abrirá la ventana siguiente para entrenar el controlador de referencia de modelos.
El paso siguiente normalmente sería hacer clic en Plant Identification, lo que abre la ventana Plant Identification. Entonces entrenaría el modelo de planta. Dado que la ventana Plant Identification es idéntica a la utilizada con los controladores anteriores, aquí ese proceso se omite.
Haga clic en Generate Training Data. El programa empieza a generar datos para el entrenamiento del controlador. Una vez generados los datos, aparece la ventana siguiente:
Haga clic en Accept Data. Vuelva a la ventana Model Reference Control y haga clic en Train Controller. El programa presenta un segmento de datos a la red y entrena la red durante un número especificado de iteraciones (en este caso, cinco). Este proceso continúa, con un segmento cada vez, hasta que todo el conjunto de entrenamiento se ha presentado a la red. El entrenamiento del controlador puede ser significativamente más laborioso que el entrenamiento del modelo de planta. Esto se debe a que el controlador debe ser entrenado utilizando retropropagación dinámica (consulte [HaJe99]). Después de que se complete el entrenamiento, se muestra la respuesta del sistema de lazo cerrado resultante, tal como se muestra en la figura siguiente.
Vuelva a la ventana Model Reference Control. Si el rendimiento del controlador no es preciso, puede seleccionar Train Controller de nuevo, con lo que se continuará con el entrenamiento del controlador con el mismo conjunto de datos. Si desea utilizar un nuevo conjunto de datos para continuar el entrenamiento, antes de seleccionar Train Controller, seleccione Generate Data o Import Data. (Asegúrese de que Use Current Weights esté seleccionado si desea continuar con el entrenamiento con los mismos pesos). Puede que sea necesario volver a entrenar el modelo de planta. Si el modelo de planta no es preciso, puede afectar al entrenamiento del controlador. Para este ejemplo, el controlador debería ser lo suficientemente preciso, así que seleccione OK. Se cargan los pesos del controlador en el modelo de Simulink.
Vuelva al editor de Simulink y empiece la simulación eligiendo la opción de menú Simulation > Run. Mientras la simulación se ejecuta, se muestran la salida de la planta y la señal de referencia, como en la figura siguiente.