Ensemble complet de travaux pratiques et projets sur le contrôle optimal et les systèmes dynamiques, réalisés en Julia avec des notebooks Jupyter.
Initiation aux méthodes numériques pour résoudre les équations différentielles ordinaires (EDO).
- Introduction à
DifferentialEquations.jl - Résolution de problèmes à valeur initiale (IVP)
- Visualisation de trajectoires et champs de flux
Résolution de problèmes de contrôle optimal par la méthode du tir indirect.
- Systèmes hamiltoniens
- Conditions d'optimalité
- Affichage de fronts d'ondes et extrémales
- Utilisation de solveurs non-linéaires
Comparaison des approches directe et indirecte pour le contrôle optimal.
- Décision sur la meilleure approche
- Analyse de convergence
Application du contrôle optimal à des problèmes de navigation.
- Model Predictive Control
- Planification de trajectoires
Techniques de différentiation automatique et numérique.
- Utilisation de
ForwardDiff.jl - Validation des dérivées
Implémentation et analyse des schémas d'intégration Runge-Kutta.
- Ordre de convergence
- Stabilité numérique
- Performance comparative
Problème réel de contrôle optimal appliqué aux transferts orbitaux spatiaux.
- Modélisation de la dynamique spatiale
- Transfert de Hohmann généralisé
- Optimisation des trajectoires spatiales
- Animation et visualisation 3D
Les notebooks installeront automatiquement les dépendances suivantes :
DifferentialEquations.jl- Résolution d'EDONLsolve.jl- Résolution non-linéaireForwardDiff.jl- Différentiation automatiquePlots.jl- VisualisationLinearAlgebra.jl- Opérations linéaires
# Cloner le repository
git clone <repository-url>
cd Optimal_Control
# Lancer Jupyter
jupyter notebook
# Ouvrir le notebook souhaité (par exemple TP1/ode.ipynb)Optimal_Control/
├── TP1/
│ ├── ode.ipynb # Notebook avec exercices
│ └── utils.jl # Utilitaires (plot_traj!, plot_flow!, etc.)
├── TP2/
│ ├── simple-shooting.ipynb # Implémentation du tir simple
│ └── utils.jl
├── TP3/
│ ├── direct-indirect.ipynb # Comparaison d'approches
│ └── utils.jl
├── TP4/
│ ├── mpc-navigation.ipynb # Contrôle prédictif
│ └── utils.jl
├── TP5/
│ ├── derivative.ipynb # Calcul de dérivées
│ └── utils.jl
├── TP6/
│ ├── rk-explicites.ipynb # Schémas Runge-Kutta
│ └── utils.jl
└── transfert_orbital/
├── transfert-orbital.ipynb # Projet orbital
├── space.jl # Modèle spatial complet
└── utils.jl
- Équations Différentielles Ordinaires (EDO) : théorie et résolution numérique
- Systèmes Dynamiques : analyse et visualisation
- Théorie du Contrôle Optimal : principes de Pontryagin, hamiltonien
- Méthodes de Tir : tir simple, tir multiple, tir indirect
- Programmation Dynamique : balance between control input and trajectory deviation
- Contrôle Prédictif : MPC et applications temps réel
- Différentiation Automatique : calcul efficace des dérivées
- Méthodes d'Intégration : Runge-Kutta explicites et implicites
- Applications Spatiales : transferts orbitaux, optimisation de trajectoires
Chaque dossier contient un fichier utils.jl avec des fonctions réutilisables :
include("utils.jl")
# Tracer une trajectoire
plot_traj!(x, t)
# Afficher le champ de flux
plot_flow!(f)
# Accéder aux structures de données (Flow, etc.)
flow = Flow(...)- Les notebooks sont structurés avec des sections théoriques suivies d'exercices pratiques
- Les exemples commencent simples et progressent en complexité
- Chaque TP peut être réalisé indépendamment, mais bénéficie des connaissances des TP précédents
- Les fichiers
utils.jlcontiennent des fonctions de visualisation et d'aide utiles
À l'issue de ces travaux pratiques, vous serez capable de :
- Résoudre numériquement des systèmes d'EDO
- Formuler et résoudre des problèmes de contrôle optimal
- Implémenter les méthodes directes et indirectes
- Analyser les trajectoires optimales obtenues
- Appliquer ces techniques à des problèmes réels (transferts orbitaux)
