Usar algoritmo genético para ajustar controladores

9

He leído algunos documentos para controlar sistemas no lineales (por ejemplo, péndulo no lineal). Existen varios enfoques para apuntar a sistemas no lineales. Los más comunes son los controladores de modo lineal de retroalimentación , retroceso y deslizamiento .

En mi caso, hice las partes teóricas y prácticas del control del modelo no lineal de un péndulo simple más otros problemas de manipuladores en C ++. Para el péndulo, he utilizado un controlador de retroceso para resolver la tarea de seguimiento del desplazamiento angular y la velocidad. Los resultados son

θ¨+(k/m)θ˙+(g/L)sinθ=u

donde y .g = 9.81m=0.5,k=0.0001,L=.2g=9.81

Gráfica 1

Gráfica 2

Los resultados son buenos. Sin embargo, ajustar el controlador lleva mucho tiempo. La mayoría de los artículos utilizan algoritmos genéticos para ajustar sus controladores, como PD, PID y controladores de retroceso. No tengo ni idea en este campo y espero que alguien arroje algo de luz sobre este concepto, preferible si hay una muestra de MATLAB para al menos controlar un péndulo simple.

Hasta ahora, he diseñado una GUI simple en C ++ / Qt para ajustar el controlador manualmente. En la siguiente imagen, la respuesta del controlador para la función de paso.

Captura de pantalla de la GUI de la aplicación de ajuste del controlador

CroCo
fuente

Respuestas:

1

El uso de métodos evolutivos (GA es uno de ellos) para el ajuste de parámetros es de hecho un método común [1] en el dominio de control. Especialmente para sistemas no lineales, las soluciones analíticas para parámetros óptimos pueden ser difíciles de encontrar. Los métodos evolutivos son una forma de realizar una búsqueda eficiente de parámetros casi óptimos.

Un método muy exitoso y universal que se usa ampliamente es CMA-ES . Hay una gran cantidad de implementaciones , incluso para MATLAB. Sé que el equilibrio de polos en sus diversas formas se usa a menudo como punto de referencia.

Aplicar el algoritmo generalmente no es tan difícil. La calificación del rendimiento de su resultado (esto se denomina función de aptitud en EA) suele ser la parte más complicada.

[1] PJ Fleming, RC Purshouse, Algoritmos evolutivos en ingeniería de sistemas de control: una encuesta, Control Engineering Practice, Volumen 10, Número 11, noviembre de 2002, páginas 1223-1241, ISSN 0967-0661, http: //dx.doi. org / 10.1016 / S0967-0661 (02) 00081-3 .

Jakob
fuente
¿Te has encontrado con algún buen libro que creas que valga la pena leer sobre GA?
CroCo
8

Los algoritmos genéticos son una técnica de aprendizaje automático para eliminar la necesidad de que un usuario 'ajuste' un sistema y, en su lugar, permita que una computadora descubra cómo ajustar el sistema. Los beneficios de este enfoque son que libera el tiempo de los investigadores / usuarios y, a menudo, puede conducir a un sistema que se ajusta mejor de lo que el investigador / usuario podría haber logrado.

La idea general de usar un algoritmo genético seguiría un flujo de control básico de la siguiente manera:

Create_X_Number_Of_Random_Controllers()
while (Not_Yet_Satisfied_With_tuning)
    Score_Each_Controller_Based_On_Performance()
    Remove_Lowest_Performing_Controllers()
    Create_New_Controllers_By_Mixing_Best_Performers()
    Add_Slight_Randomness_For_Evolution()
Display_Top_Performer()

El mejor ejemplo que puedo mostrar fácilmente de este principio en la práctica es este 'juego' que utiliza la evolución genética para diseñar vehículos que sean capaces de conducir en un curso. La misma idea se aplica a cualquier sistema que desee ajustar sin tener que realizar ningún ajuste usted mismo. Ejemplo: http://rednuht.org/genetic_cars_2/

Beeedy
fuente
Si eso es lo que @CroCo quiso decir con el uso de un algoritmo genético, entonces el método de ajuste Ziegler Nichols sería un gran candidato para la implementación, ya que es muy procesal.
SteveO
No puedo ver qué más habría significado @CroCo, pero el problema con Ziegler Nichols es que todavía requiere que sintonice uno de los componentes, donde con un algo genético puede cambiar cualquier aspecto del sistema y 'evolucionará' para que coincida con el desarrollador sin tener que hacer ningún trabajo bruta
beeedy
1
Esta respuesta sigue siendo el proceso general para lograr eso. Los algoritmos genéticos son un área completa de estudio y son muy complejos, sin embargo, para explicar realmente en una respuesta breve, recomiendo leerlos, sin embargo, si está interesado en usarlos para ajustar sus modelos.
Beeedy
2
Me estoy imaginando un algoritmo genético mal delimitado que muy felizmente ajusta la cadena cuando se sobre afina.
Ramrod
1
como mencionó @octopus, esto es difícil de lograr con un equipo de física real, a menos que esté dispuesto a permitir que la computadora controle físicamente el dispositivo que está tratando de sintonizar, incluso cuando necesite un programa 'guardián' que monitoree y califica cada controlador en función del rendimiento y verifica que no dañará la máquina. En general, esta es una tarea relativamente compleja que requerirá mucha lectura sobre algoritmos genéticos para implementar, esta no es una tarea pequeña.
Beeedy
2

Estoy confundido por lo que llamas un algoritmo genético. Los controladores PD, PID, etc., no son métodos heurísticos ni estocásticos, y no se basan en algoritmos evolutivos. Son, en cambio, algoritmos deterministas destinados a permitir la colocación de polos y ceros de una respuesta del sistema para proporcionar el rendimiento deseado (minimización de errores, velocidad de respuesta, tiempo de establecimiento, estabilidad y rechazo de perturbaciones). Una buena referencia de aprendizaje, en mi opinión, es el libro de Sistemas de control automático de Kuo . Puede encontrar un tratamiento menos riguroso en el libro de Ingeniería de control automático de Raven .

SteveO
fuente
No estoy familiarizado con el algoritmo genético (GA). Acabo de ver que algunos documentos afirman que la parte de ajuste de sus controladores se realiza mediante el uso de GA. No hay más detalles en sus documentos sobre este asunto. No sé qué demonios es GA y cómo puedo utilizarlo.
CroCo
El uso de métodos evolutivos para el ajuste de parámetros es una técnica muy común. Lo consideraría un método alternativo a los enfoques analíticos que está describiendo.
Jakob