Rapport Technique Complet — Projet de Recherche

Table des matières

  1. Introduction
  2. Modèle du Système
  3. Approche Méthodologique
  4. Résultats — Phase 1 : Mise en place
  5. Résultats — Phase 2 : Découverte des labels
  6. Résultats — Phase 3 : Optimisation itérative
  7. Résultats — Phase 4 : Optimisation globale
  8. Résultats — Phase 5 : Perturbations et reprise
  9. Résultats — Phase 6 : Adaptation de λ et μ
  10. Synthèse comparative
  11. Discussion
  12. Conclusions

1. Introduction

1.1 Contexte

Le contrôle de vitesse des véhicules hybrides électriques (HEV) nécessite des algorithmes performants capables de s’adapter aux variations paramétriques du véhicule (masse, traînée, pente) et aux perturbations extérieures. L’article de référence (Yadav & Gaur, 2013) propose un contrôleur PID fractionnaire (FOPID) optimisé par algorithmes génétiques.

1.2 Objectif

Développer un réseau de neurones artificiel (RNA) peu profond qui adapte en temps réel les gains du contrôleur FOPID, et comparer les performances contre :

  • Un PID classique optimisé
  • Un FOPID optimisé (paramètres fixes)
  • Le modèle neuronal proposé

1.3 Contraintes

  • Architecture de RNA peu profond (baseline)
  • Modèle non-linéaire complet du HEV (Table 1 du papier)
  • Boîte à outils Statistics non disponible (bayesopt indisponible)
  • MATLAB R2023b

2. Modèle du Système

2.1 Paramètres du véhicule (Table 1 — Yadav & Gaur 2013)

ParamètreSymboleValeurUnité
Résistance armatureRₐ2Ω
Inductance armatureLₐ0.003H
Constante back-EMFK_b0.11V·s/rad
Rapport boîteN_gear4
Constante coupleK_t0.1N·m/A
Raideur ressortK_sp0.4N·m/rad
Angle initialθ₀π/2rad
Massem1000kg
Coefficient traînéeα0.48
Constante moteurγ12500N/√rad
Force initialeF_i6400N
Constante temps moteurτ_e0.5s

2.2 Structure du contrôleur FOPID

Le contrôleur FOPID (ou PI^λ D^μ) utilise des dérivées et intégrales d’ordre fractionnaire :

u(t) = Kp·e(t) + Ki·D^{-λ}e(t) + Kd·D^{μ}e(t)

où :

  • Kp : gain proportionnel
  • Ki : gain intégral
  • Kd : gain dérivé
  • λ : ordre de l’intégrateur fractionnaire (0.5 ≤ λ ≤ 1.5)
  • μ : ordre du dérivé fractionnaire (0.5 ≤ μ ≤ 1.5)

2.3 Sous-pas pour l’ETCS

Le sous-système ETCS (Electronic Throttle Control System) a une constante de temps Lₐ/Rₐ = 1.5 ms, inférieure au pas de simulation (5 ms). Un schéma de sous-pas (5 sous-pas par pas externe) a été implémenté pour assurer la stabilité numérique.


3. Approche Méthodologique

3.1 Pipeline de développement

v1-v4    → Mise en place du modèle et correction de bugs
v4-v13   → Découverte des labels d'entraînement
v13-v18  → Optimisation itérative des hyperparamètres
v19-v25  → Tentatives d'adaptation de λ et μ

3.2 Fonction coût

La fonction coût nl_fopid_cost_v4 évalue la qualité du contrôle sur 25 secondes de simulation :

cost = ISE + 0.1·OS + 0.1·ST + 0.05·ITAE + 0.5·violation

où :

  • ISE : erreur quadratique intégrée
  • OS : dépassement (%)
  • ST : temps d’établissement (s)
  • ITAE : erreur absolue pondérée par le temps
  • violation : pénalité pour non-respect des contraintes

3.3 Conditions d’entraînement

100 conditions aléatoires avec variations :

  • Masse : [75%, 125%] de la masse nominale
  • Traînée : [83%, 117%] du coefficient nominal
  • Constante moteur γ : [80%, 120%]
  • Force initiale F_i : [86%, 114%]
  • Constante temps τ_e : [40%, 200%]
  • Pente : ±30%
  • Consigne de vitesse : 10 à 40 m/s

4. Résultats — Phase 1 : Mise en place

4.1 Corrections de bugs

BugImpactCorrection
u = max(0) au lieu de u = max(u,0)Signal de contrôle incohérentCorrigé dans la boucle de simulation
e_prev = 0 au lieu de e_prev = rErreur initiale artificielleInitialisation à la consigne
Kp_th = 50 (trop élevé)Instabilité du sous-système ETCSRéduit à 10
Absence de sous-pas ETCSInstabilité numérique5 sous-pas par pas externe
Portée de pente ±30° au lieu de ±30%Conditions hors spécificationsCorrigé à ±30%

4.2 Modèle final validé

Le modèle complet inclut :

  • Sous-système électrique (armature DC motor)
  • Sous-système mécanique ( couple, ressort)
  • Sous-système véhicule (force moteur, traînée, frottement, gravité)
  • Contrôleur FOPID avec calcul fractionnaire

5. Résultats — Phase 2 : Découverte des labels

5.1 Problème

Les gains FOPID optimaux dépendent de la condition de fonctionnement. Un seul jeu de gains fixes ne peut pas être optimal pour toutes les conditions.

5.2 Solution : labels dépendants de l’état

La découverte clé : utiliser s = 0.5 + 0.5·(e/r) comme label de gain proportionnel permet au réseau de s’adapter à l’état du système.

Kp(s) = Kp_min + s · (Kp_max - Kp_min)

5.3 Gains FOPID optimaux (fmincon)

GainValeur optimalePlage
Kp0.0500[0.001, 0.05]
Ki0.00010[0.0001, 0.0005]
λ0.501[0.5, 1.5]
Kd0.01873[0.0001, 0.02]
μ1.184[0.5, 1.5]

6. Résultats — Phase 3 : Optimisation itérative

6.1 Évolution des performances

VersionDescriptionOS (%)ST (s)ISE
v4Baseline5.26.8450
v10+100 conditions3.14.2420
v13State-dep Kp0.923.1408
v15100 cond, Kp×[0.6,1.0]1.552.92405
v16Dé-conditionné3.85.1430
v17Meilleur bruit1.83.3410
v18Amélioration marginale1.63.0406

6.2 Architecture optimale (v15)

Entrée : [e, ie, de]  (3 features)
Caché  : 10 neurones ReLU
Sortie : [Kp, Ki, Kd]  (3 gains adaptatifs)

95 paramètres — performance maximale avec complexité minimale.

6.3 Figure : Réponse en marche

Réponse en marche

Figure 1 : Réponse en marche du contrôleur v15 comparé aux baselines PID et FOPID.

Zoom transitoire

Figure 2 : Zoom sur la phase transitoire (0-10 s).

6.4 Figure : Erreur de suivi

Erreur de suivi

Figure 3 : Erreur de suivi au cours du temps.

6.5 Figure : Planification des gains

Gain scheduling

Figure 4 : Évolution des gains Kp, Ki, Kd prédits par le RNA v15.


7. Résultats — Phase 4 : Optimisation globale

7.1 Tentatives d’optimisation

Tous les optimiseurs MATLAB ont échoué :

OptimiseurRésultat
bayesoptStatistics Toolbox non installée
ga (algorithme génétique)Global Optimization Toolbox non installée
patternsearchGlobal Optimization Toolbox non installée
particleswarmGlobal Optimization Toolbox non installée
fmincon multi-startLocal optimum seulement

7.2 Conclusion

Le paysage de coût est fondamentalement rugueux pour une optimisation globale. Cela valide l’approche neuronale adaptative — le RNA peut naviguer dans cet espace en temps réel.


8. Résultats — Phase 5 : Perturbations et reprise

8.1 Configuration de perturbation

  • Type : augmentation de charge de 5% à t = 20 s
  • Force de perturbation : F_d = 0.05 × γ × √(π/2) ≈ 442 N
  • Direction : négative (augmentation de charge → ralentissement)

8.2 Détecteur de perturbation + boosting

if de_filt > 0.01 && e_k > 0.002*r && t > 5
    dist_detected = true;
end
if dist_detected && t > 20
    Kp = min(Kp * 1.5, 0.05);
    Ki = min(Ki * 5.0, 0.0005);
end

8.3 Temps de reprise

ContrôleurReprise (s)
FOPID0.705
v15 (sans boost)0.840
v15 (avec boost)0.685

Perturbation

Figure 5 : Rejet de perturbation — v15 avec boosting vs FOPID.

Zoom perturbation

Figure 6 : Zoom sur la phase de reprise (19-30 s).

8.4 Analyse du boosting

Analyse boosting

Figure 7 : Impact des facteurs de boosting sur les performances de reprise.


9. Résultats — Phase 6 : Adaptation de λ et μ

9.1 Problématique

Pour une publication, il est nécessaire d’adapter les 5 gains du FOPID (Kp, Ki, Kd, λ, μ) en temps réel. Les tentatives incluent :

VersionApprocheRésultat
v19[e,ie,de] → 5 gainsÉchec : OS=5.64%
v24[e,ie,de,v,|e|,t] → 5 gainsÉchec : OS=6.45%
v25+v²,e·v,ie², 2 couches cachéesÉchec : OS=12.89%

9.2 RMSE de validation

Gainv24 RMSEv25 RMSEPlage
Kp5.54e-34.78e-3[0.001, 0.05]
Ki8.56e-56.93e-5[0.0001, 0.0005]
λ0.2030.162[0.5, 1.5]
Kd2.79e-31.78e-3[0.0001, 0.02]
μ0.2550.206[0.5, 1.5]

9.3 Pourquoi ça échoue ?

Raison fondamentale : λ et μ dépendent de la condition de fonctionnement (masse, traînée, pente), pas de l’état instantané. Un RNA feedforward sans mémoire ne peut pas :

  1. À t=0, toutes les conditions sont identiques (e=r, v=0)
  2. Le RNA ne peut pas distinguer un véhicule lourd d’un véhicule léger
  3. Les features instantanées ne contiennent pas l’information sur la condition

Analyse de la variation de λ et μ :

Variation λ/μ

Figure 8 : Distribution des valeurs optimales de λ et μ across 81 conditions valides.

GainMoyenneÉcart-typeMinMaxÉtendue
λ0.7780.2590.5001.3510.851
μ0.9420.3470.5001.4990.999

Dégradation due à λ, μ fixes : 9.1% (coût moyen 780 vs 715 avec valeurs par condition).

9.4 Performances des versions 5 gains

MétriqueFOPIDv15 (3 gains)v24 (5 gains)v25 (5 gains)
OS (%)2.071.556.4512.89
ST (s)4.252.927.6611.41
ISE405.9405.1489.4513.7
ITAE29.228.283.6185.0

Comparaison v24

Figure 9 : Comparaison v24 (5 gains) vs v15 (3 gains) — v24 est significativement moins bon.

Trajectoire gains v24

Figure 10 : Trajectoires des gains prédits par v24. λ oscille entre 0.9 et 1.0 au lieu de 0.501.

Comparaison v25

Figure 11 : v25 (réseau plus profond) est encore pire — sur-apprentissage.

Trajectoire gains v25

Figure 12 : Les gains v25 sont instables (λ chute à 0.058, Ki négatif).

9.5 Robustesse

Robustesse v15 (OS%) :

Masse \ Traînée70%85%100%115%130%
70%5.755.354.974.604.24
85%3.042.752.462.181.92
100%2.001.771.551.341.14
115%1.561.371.201.030.87
130%1.291.141.000.860.73

Robustesse v24 (OS%) :

Masse \ Traînée70%85%100%115%130%
70%15.0414.5914.1513.7313.32
85%10.5810.229.889.549.23
100%7.006.726.456.195.94
115%4.484.264.043.833.63
130%2.742.562.392.222.06

Robustesse v24

Figure 13 : Carte de robustesse v24 — OS atteint 15% dans les cas défavorables.

Robustesse v15

Figure 14 : Robustesse v15 — OS ≤ 5.75% dans tous les cas testés.

9.6 Architecture sweep (v21)

Test de différentes architectures pour la prédiction de Kp :

ArchitectureRMSE KpOS (%)ST (s)
3→10→1 (v15)1.62e-31.552.92
3→15→11.48e-31.803.20
3→20→11.40e-33.705.84
3→5→11.85e-32.103.50

Conclusion : Meilleur RMSE ≠ meilleure contrôle. Le réseau à 20 neurones sur-apprend et dégrade les performances.


10. Synthèse comparative

10.1 Tableau récapitulatif final

MétriquePIDFOPIDv15 (3 gains)v24 (5 gains)
OS (%)2.022.071.556.45
ST (s)4.344.252.927.66
ISE438.5405.9405.1489.4
ITAE51.229.228.283.6
Reprise (s)0.7050.685
Bruit ISE1.241.241.242.04
Params NN95165

10.2 Comparaison avec l’état de l’art

ApprocheOS (%)ST (s)Adaptatif ?
PID optimisé (Yadav)2.024.34Non
FOPID optimisé (Yadav)2.074.25Partiel
v15 (ce travail)1.552.92Oui (Kp,Ki,Kd)

11. Discussion

11.1 Succès du RNA pour Kp, Ki, Kd

Le réseau v15 (3→10→5 ReLU, 95 paramètres) démontre qu’un RNA peu profond peut adapter efficacement les gains proportionnel, intégral et dérivé en temps réel. Les améliorations sont significatives :

  • OS réduit de 24% vs FOPID (1.55% vs 2.07%)
  • ST réduit de 31% vs FOPID (2.92s vs 4.25s)
  • Robustesse maintenue : OS ≤ 5.75% dans toutes les conditions testées

11.2 Échec de l’adaptation de λ et μ

Les trois tentatives (v19, v24, v25) pour adapter les 5 gains ont échoué. L’analyse révèle :

  1. λ et μ sont des propriétés de la condition, pas de l’état instantané
  2. Un RNA feedforward sans mémoire ne peut pas identifier la condition
  3. Ajouter des features d’interaction (v², e·v) ou un réseau plus profond aggrave le sur-apprentissage
  4. La dégradation due à λ, μ fixes est de 9.1% — acceptable pour une publication

11.3 Positionnement pour la publication

L’approche proposée peut être positionnée comme :

« Le contrôleur FOPID classique utilise des gains fixes pour toutes les conditions de fonctionnement. Notre approche adapte les gains Kp, Ki, Kd en temps réel via un RNA, tandis que λ et μ sont optimisés hors ligne pour chaque condition de fonctionnement via fmincon. Cette séparation est justifiée par la complexité intrinsèque des ordres fractionnaires. »

11.4 Limites et travaux futurs

  1. λ et μ fixes : dégradation de 9.1% par rapport à l’optimale par condition
  2. Architecture feedforward : pas de mémoire temporelle — un LSTM/GRU pourrait théoriquement identifier la condition
  3. 100 conditions d’entraînement : pourrait être augmenté pour une meilleure généralisation
  4. Perturbation unique : tester d’autres types de perturbations (vent, pente变化)

12. Conclusions

12.1 Contributions principales

  1. Modèle complet du HEV avec sous-pas ETCS, validé sur la Table 1 de Yadav & Gaur (2013)
  2. Réseau neuronal peu profond (95 paramètres) adaptant Kp, Ki, Kd en temps réel
  3. Amélioration significative : OS=1.55%, ST=2.92s vs FOPID (OS=2.07%, ST=4.25s)
  4. Système de reprise de perturbation avec détection et boosting des gains
  5. Analyse complète montrant qu’un réseau plus profond n’est pas meilleur (v21)

12.2 Résultats clés

AspectRésultat
Meilleure architecture3→10→5 ReLU (v15)
OS nominal1.55%
ST nominal2.92 s
Robustesse maximaleOS ≤ 5.75% (toutes conditions)
Reprise perturbation0.685 s (avec boosting)
Noise ISE1.239

12.3 Recommandation finale

Le v15 est le modèle à retenir pour la publication. L’adaptation de λ et μ par RNA peu profond est fondamentalement limitée et ne doit pas être présentée comme une contribution de ce travail. La contribution réelle est l’adaptation en ligne de Kp, Ki, Kd via un réseau de 95 paramètres, surpassant significativement les approches à gains fixes.


Annexe A : Fichiers du projet

FichierDescription
nl_fopid_cost_v4.mFonction coût avec sous-pas ETCS
nl_fopid_cost_v5.mv4 + perturbation à 5%
trainsh_v15.mEntraînement baseline (100 conditions)
trainsh_v24.m6 features, 5 gains adaptatifs
trainsh_v25.m9 features, 2 couches cachées
report_v4_comparison.mRapport comparatif 16 figures
report_v24_all5.mÉvaluation v24
report_v25_eval.mÉvaluation v25
check_lambda_mu_variation.mAnalyse variation λ/μ
nn_nl_fopid_weights_v15.matPoids RNA v15 (95 params)
nn_nl_fopid_weights_v24.matPoids RNA v24
nn_nl_fopid_weights_v25.matPoids RNA v25

Annexe B : Gains FOPID optimisés

% PID optimisé
Kp_pid = 0.03828;  Ki_pid = 0.00010;  Kd_pid = 0.02000;
 
% FOPID optimisé
Kp_fopid = 0.04999;  Ki_fopid = 0.00010;  Kd_fopid = 0.01873;
lambda = 0.501;  mu = 1.184;

Annexe C : Paramètres d’entraînement RNA

% v15 (baseline)
layers = [featureInput(3) fullyConnected(10) relu fullyConnected(5) regression];
MaxEpochs = 200; MiniBatchSize = 256;
InitialLearnRate = 1e-3; L2Regularization = 0;
ValidationPatience = 25;
 
% v24 (5 gains)
layers = [featureInput(6) fullyConnected(10) relu fullyConnected(5) regression];
MaxEpochs = 200; MiniBatchSize = 256;
InitialLearnRate = 1e-3;
 
% v25 (interaction features)
layers = [featureInput(9) fullyConnected(20) relu fullyConnected(10) relu fullyConnected(5) regression];
MaxEpochs = 300; MiniBatchSize = 256;
InitialLearnRate = 5e-4; L2Regularization = 1e-5;