Réglage génétique d’un PID
Ce projet, réalisé à l’ITA avec André Thiessen et José Ronaldo, pose une question précise de synthèse : que change le fait de traiter les gains PID comme un problème d’optimisation plutôt que de les obtenir par une règle empirique ?
Les deux méthodes sont implémentées en Python et comparées sur la réponse indicielle en boucle fermée d’une même plante du troisième ordre. Ziegler–Nichols fournit une référence déterministe issue de la limite de stabilité ; l’algorithme génétique cherche directement les gains favorisant les critères temporels choisis.
Système contrôlé
La plante en boucle ouverte et le correcteur PID parallèle sont
Avec un retour unitaire négatif, chaque triplet de gains est évalué sur
tf_sys = TransferFunction([20], [1, 32, 140, 0])
tf_pid = TransferFunction([kd, kp, ki], [1, 0])
closed_loop = (tf_sys * tf_pid).feedback()
Référence de Ziegler–Nichols
La méthode du gain ultime supprime d’abord les actions intégrale et dérivée, puis augmente le gain proportionnel jusqu’aux oscillations entretenues. Le polynôme caractéristique donne ici
La règle PID classique fixe ensuite
et produit . Le calcul est rapide, mais la réponse obtenue est agressive et présente un fort dépassement initial.
Représentation génétique des gains
Chaque gain est codé sur cinq bits ; un chromosome contient donc 15 bits :
Chaque bloc est projeté sur selon
Il n’existe ainsi que 32 valeurs possibles par gain, espacées de . Les gains finaux — , et — appartiennent exactement à cette grille. Le codage définit donc aussi la résolution de la recherche.
value = np.dot(bits, [2 ** (n_bit - j - 1) for j in range(n_bit)])
value /= (2**n_bit) - 1
gain = lower_bound + (upper_bound - lower_bound) * value
La population initiale contient 100 candidats aléatoires. À chaque génération, les deux meilleurs sont sélectionnés, la première moitié de leurs chromosomes est échangée, les bits sont mutés indépendamment, puis les deux enfants remplacent les individus les moins aptes. La recherche s’arrête lorsque la meilleure fitness dépasse 83.
Fonction objectif
Quatre grandeurs sont extraites de la réponse indicielle : temps de montée , valeur finale , dépassement et temps d’établissement . Le score implémenté est
avec si et sinon. Une fitness élevée est préférable. Cette fonction favorise fortement une montée rapide et un faible dépassement, tout en considérant identiques tous les temps d’établissement inférieurs à dix secondes.
Un détail mérite d’être explicité : le second terme emploie la valeur finale de sortie, bien qu’il soit nommé erreur statique. Pour un échelon unitaire, il faudrait utiliser . Les deux contrôleurs atteignent ici la valeur un, mais cette correction rendrait l’objectif cohérent pour d’autres résultats.
Résultats
| Mesure | GA | ZN |
|---|---|---|
| Kp | 67.742 | 134.400 |
| Ki | 3.226 | 505.733 |
| Kd | 32.258 | 8.929 |
| Temps de montée | 0.073 s | 0.112 s |
| Dépassement | 1.033% | 61.805% |
| Temps d’établissement | 0.915 s | 1.900 s |
| Erreur statique | 0 | 0 |


Le correcteur trouvé par l’algorithme génétique atteint environ de dépassement, contre pour Ziegler–Nichols. Le temps d’établissement passe également de s à s, et les deux réponses convergent vers la consigne unitaire.
Pour cette plante et cet objectif, la recherche numérique trouve donc un correcteur moins oscillatoire que la référence empirique. Cela ne signifie pas que le réglage génétique est toujours supérieur : Ziegler–Nichols vise un réglage initial peu coûteux, tandis que l’algorithme génétique simule la plante pendant des centaines de générations et est jugé par la fonction qu’il optimise.
Limites et prolongements
Le résultat provient d’une seule exécution stochastique, d’une seule plante et d’un codage fixe. L’algorithme emploie une probabilité de mutation par bit très élevée, sélectionne toujours les deux meilleurs parents et ne mesure pas la variance entre plusieurs exécutions. L’objectif ne pénalise ni l’effort de commande ni la saturation des actionneurs.
Une étude plus robuste répéterait la recherche pour plusieurs graines aléatoires, réserverait des plantes ou perturbations inédites à la validation et inclurait des optimiseurs déterministes modernes. Un critère ITAE complété par des pénalités de dépassement, d’énergie de commande et de marge de robustesse correspondrait mieux aux contraintes d’ingénierie. Un codage réel ou une optimisation locale finale supprimerait enfin la quantification due aux cinq bits.
Références
- J. G. Ziegler et N. B. Nichols, « Optimum Settings for Automatic Controllers », Transactions of the ASME, vol. 64, p. 759–768, 1942.
- J. H. Holland, Adaptation in Natural and Artificial Systems, University of Michigan Press, 1975.
- K. J. Åström et T. Hägglund, Advanced PID Control, ISA, 2006.
Commentaires et suggestions
Questions, corrections et suggestions sont les bienvenues. Je lis chaque message avant sa publication.
Chargement des commentaires…