Main Content

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.

Model reference diagram with input labeled "Command Input" and outputs labeled "Control Error" and "Plant Output"

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.

Model diagram with sections labeled "Neural Network Controller" and "Neural Network Plant Model". The model has input labeled "r(t)" and outputs labeled "e_c(t)" and "c(t)"

Utilizar el bloque Model Reference Controller

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:

Diagram of robot arm with angle of angle from the vertical labeled with phi.

La ecuación del movimiento del brazo es:

d2ϕdt2=10sinϕ2dϕdt+u

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

d2yrdt2=9yr6dyrdt+9r

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:

  1. Inicie MATLAB®.

  2. 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.

    Screenshot of mrefrobotarm Simulink model

  3. Haga doble clic en el bloque Model Reference Controller. Se abrirá la ventana siguiente para entrenar el controlador de referencia de modelos.

    Screenshot of Model Reference Control dialogue box

  4. 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.

  5. 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:

    Screen shot of Plant Input-Output Data for NN Model Reference Control dialogue box

  6. 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.

    Screen shot of Plant Input-Output Data for NN Model Reference Control dialogue box

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

  8. 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.

    2-D line plot with title "X Y Plot". The horizontal axis is labeled "X Axis". The vertical axis is labeled "Y Axis".