Utilisation d'un algorithme génétique pour régler les contrôleurs


9

J'ai lu quelques articles pour contrôler des systèmes non linéaires (par exemple un pendule non linéaire). Il existe plusieurs approches pour cibler les systèmes non linéaires. Les contrôleurs les plus courants sont la linéarisation par rétroaction , le backstepping et les contrôleurs en mode coulissant .

Dans mon cas, j'ai fait les parties théoriques et pratiques du contrôle du modèle non linéaire d'un pendule simple ainsi que d'autres problèmes de manipulateurs en C ++. Pour le pendule, j'ai utilisé un contrôleur de backstepping pour résoudre la tâche de suivi du déplacement angulaire et de la vitesse. Les résultats sont

θ¨+(k/m)θ˙+(g/L)péchéθ=u

m=0,5,k=0,0001,L=.2 et .g=9,81

Graphique 1

Graphique 2

Les résultats sont bons. Cependant, le réglage du contrôleur prend du temps. La majorité des articles utilisent des algorithmes génétiques pour régler leurs contrôleurs tels que les contrôleurs PD, PID et backstepping. Je ne sais rien dans ce domaine et j'espère que quelqu'un fera la lumière sur ce concept, préférable s'il existe un échantillon MATLAB pour au moins contrôler un pendule simple.

Jusqu'à présent, j'ai conçu une interface graphique simple en C ++ / Qt afin de régler manuellement le contrôleur. Dans l'image ci-dessous, la réponse du contrôleur pour la fonction de pas.

Capture d'écran de l'interface graphique de l'application de réglage du contrôleur

Réponses:


1

L'utilisation de méthodes évolutives (GA en fait partie) pour le réglage des paramètres est en effet une méthode courante [1] dans le domaine de contrôle. Surtout pour les systèmes non linéaires, les solutions analytiques pour les paramètres optimaux peuvent être difficiles à trouver. Les méthodes évolutives sont un moyen d'effectuer efficacement une recherche de paramètres quasi optimaux.

Une méthode très réussie et universelle qui est largement utilisée est CMA-ES . Il existe un grand nombre d' implémentations , y compris pour MATLAB. Je sais que l'équilibrage des pôles sous ses différentes formes est souvent utilisé comme référence.

L'application de l'algorithme n'est généralement pas si difficile. Évaluer la performance de votre résultat - c'est ce qu'on appelle la fonction fitness dans EA - est généralement la partie la plus impliquée.

[1] PJ Fleming, RC Purshouse, Algorithmes évolutionnaires dans l'ingénierie des systèmes de contrôle: une enquête, Control Engineering Practice, Volume 10, Numéro 11, novembre 2002, Pages 1223-1241, ISSN 0967-0661, http: //dx.doi. org / 10.1016 / S0967-0661 (02) 00081-3 .


Avez-vous trouvé un bon livre que vous pensez qu'il vaut la peine de lire sur GA?
CroCo

8

Les algorithmes génétiques sont une technique d'apprentissage automatique qui supprime la nécessité pour un utilisateur de `` peaufiner '' un système et permet à la place à un ordinateur de comprendre comment régler le système. Les avantages de cette approche sont qu'elle libère du temps pour les chercheurs / utilisateurs et peut souvent conduire à un système mieux réglé que ce que le chercheur / utilisateur aurait pu réaliser lui-même.

L'idée générale d'utiliser un algorithme génétique suivrait un flux de contrôle de base comme suit:

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()

Le meilleur exemple que je peux facilement montrer de ce principe dans la pratique est ce «jeu» qui utilise l'évolution génétique pour concevoir des véhicules capables de conduire sur un parcours. La même idée s'applique à tout système que vous souhaitez affiner sans avoir à effectuer de réglage vous-même. Exemple: http://rednuht.org/genetic_cars_2/


Si c'est ce que @CroCo voulait dire en utilisant un algorithme génétique, alors la méthode de réglage de Ziegler Nichols serait un excellent candidat pour la mise en œuvre, car elle est bien procédurale.
SteveO

Je ne vois pas ce que @CroCo aurait signifié d'autre, mais le problème avec Ziegler Nichols est qu'il vous oblige toujours à régler l'un des composants où, comme avec un algo génétique, vous pouvez changer n'importe quel aspect du système et il `` évoluera '' correspondre sans que le développeur n'ait à faire de travail brutal
beeedy

1
Cette réponse reste le processus général pour y parvenir. Les algorithmes génétiques sont un domaine d'étude complet et loin d'être complexe, mais pour vraiment l'expliquer dans une courte réponse, je vous recommande de les lire si vous êtes intéressé à les utiliser pour régler vos modèles!
beeedy

2
J'imagine un algorithme génétique mal borné qui casse très heureusement la chaîne en cas de réglage excessif.
Ramrod

1
comme l'a mentionné @octopus, cela est difficile à réaliser avec un équipement physique réel, sauf si vous êtes prêt à laisser une longue période de temps à l'ordinateur pour contrôler physiquement l'appareil que vous essayez de régler, même si vous avez besoin d'un programme `` gardien '' qui surveille et note chaque contrôleur en fonction des performances et vérifie qu'il ne va pas endommager la machine. Dans l'ensemble, c'est une tâche relativement complexe qui nécessitera beaucoup de lecture sur les algorithmes génétiques à mettre en œuvre, ce n'est pas une mince tâche.
beeedy

2

Je suis confus par ce que vous appelez un algorithme génétique. Les contrôleurs PD, PID, etc. ne sont pas des méthodes heuristiques ni stochastiques, et ils ne sont pas basés sur des algorithmes évolutionnaires. Ce sont plutôt des algorithmes déterministes destinés à permettre le placement des pôles et des zéros d'une réponse système pour fournir les performances souhaitées (minimisation des erreurs, vitesse de réponse, temps de stabilisation, stabilité et rejet des perturbations). Une bonne référence d'apprentissage, à mon avis, est le livre de Kuo's Automatic Control Systems . Vous pouvez trouver un traitement moins rigoureux dans le livre de Raven Automatic Control Engineering .


Je ne connais pas l'algorithme génétique (GA). Je viens de voir certains articles affirmer que la partie réglage de leurs contrôleurs se faisait en utilisant GA. Aucun autre détail dans leurs papiers à ce sujet. Je ne sais pas ce qu'est l'enfer GA et comment puis-je l'utiliser.
CroCo

L'utilisation de méthodes évolutives pour le réglage des paramètres est une technique très courante. Je considérerais cela comme une méthode alternative aux approches analytiques que vous décrivez.
Jakob
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.