Skip to content

baillietn/Optimal_Control

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Contrôle Optimal - Travaux Pratiques

N7

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.

📋 Structure du Projet

Travaux Pratiques (TP)

TP1 - Intégration Numérique et Systèmes Dynamiques

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

TP2 - Tir Simple Indirect

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

TP3 - Méthodes Directes et Indirectes

Comparaison des approches directe et indirecte pour le contrôle optimal.

  • Décision sur la meilleure approche
  • Analyse de convergence

TP4 - Commande Prédictive (MPC) et Navigation

Application du contrôle optimal à des problèmes de navigation.

  • Model Predictive Control
  • Planification de trajectoires

TP5 - Calcul de Dérivées

Techniques de différentiation automatique et numérique.

  • Utilisation de ForwardDiff.jl
  • Validation des dérivées

TP6 - Méthodes Runge-Kutta Explicites

Implémentation et analyse des schémas d'intégration Runge-Kutta.

  • Ordre de convergence
  • Stabilité numérique
  • Performance comparative

Projets Spécialisés

Transfert Orbital (transfert_orbital/)

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

🚀 Installation et Configuration

Prérequis

Packages Julia Requis

Les notebooks installeront automatiquement les dépendances suivantes :

  • DifferentialEquations.jl - Résolution d'EDO
  • NLsolve.jl - Résolution non-linéaire
  • ForwardDiff.jl - Différentiation automatique
  • Plots.jl - Visualisation
  • LinearAlgebra.jl - Opérations linéaires

Démarrage Rapide

# Cloner le repository
git clone <repository-url>
cd Optimal_Control

# Lancer Jupyter
jupyter notebook

# Ouvrir le notebook souhaité (par exemple TP1/ode.ipynb)

📚 Contenu des Dossiers

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

📖 Concepts Clés Abordés

  • É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

🔧 Utilisation des Utilitaires

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

📝 Notes Pédagogiques

  • 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.jl contiennent des fonctions de visualisation et d'aide utiles

🎯 Objectifs Pédagogiques

À l'issue de ces travaux pratiques, vous serez capable de :

  1. Résoudre numériquement des systèmes d'EDO
  2. Formuler et résoudre des problèmes de contrôle optimal
  3. Implémenter les méthodes directes et indirectes
  4. Analyser les trajectoires optimales obtenues
  5. Appliquer ces techniques à des problèmes réels (transferts orbitaux)

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors