jbcaillau / OptimalControl.jl

Solvers of optimal control problems
MIT License
0 stars 0 forks source link

Expérience pro. #1

Open jbcaillau opened 1 year ago

jbcaillau commented 1 year ago

@Ange632

Ton travail pour cette expérience pro. académique va consister à enrichir la base d’exemples du projet control-toolbox.org

Ces exemples sont contenus dans le repo CTProblems que je te laisse le soin, pour commencer, de forker ^1 et de tester sur ta machine en suivant la documentation sur cette même page relative au problème "simple exponential - energy min".

Il te faut pour cela :

jbcaillau commented 1 year ago

Bonsoir @Ange632 pour la suite :

@def ocp begin tf ∈ R, variable t ∈ [ 0, tf ], time x ∈ R², state u ∈ R, control tf ≥ 0 -1 ≤ u(t) ≤ 1 q = x₁ v = x₂ q(0) == 1 v(0) == 2 q(tf) == 0 v(tf) == 0 0 ≤ q(t) ≤ 5, (1) -2 ≤ v(t) ≤ 3, (2) ẋ(t) == [ v(t), u(t) ] tf → min end

sol = solve(ocp) plot(sol)


- pour cela, tu dois lancer `julia` depuis le répertoire `OptimalControl.jl` qui contient ce clone, et faire un `activate .` depuis le [gestionnaire de package](https://pkgdocs.julialang.org/v1/getting-started/#**2.**-Getting-Started)
- le but est ensuite que tu ajoutes à la doc de `OptimalControl.jl` un tuto concernant la résolution par méthode directe et indirecte (on précisera) similaire à [celui-ci](https://control-toolbox.org/docs/optimalcontrol/stable/tutorial-basic-example.html)
- [x] regarde pour cela comment est fait le fichier markdown associé [tutorial-basic-example.md](https://github.com/control-toolbox/OptimalControl.jl/blob/main/docs/src/tutorial-basic-example.md) (il contient du code julia + qques directives pour [Documenter.jl](https://documenter.juliadocs.org/stable) qui servent à générer la documentation)
- [x] pour comprendre le contexte général du contrôle optimal des EDO (= équations différentielles ordinaires) et des méthodes de résolution "directes", consulte [ce cours CIMPA](https://git.polytech.unice.fr/CIMPA/gnmoc/-/blob/master/README.md)

[^1]: par rapport au problème déjà sur la doc, il y a qques contraintes en plus `0 ≤ q(t) ≤ 5...` pour aider à la convergence
ange-kokotakis commented 1 year ago

Bonsoir, le dernier lien ne fonctionne pas et je ne vois pas la fin de la phrase après " clone ce repo-ci OptimalControl.jl chez toi et teste la résolution de ce même problème en faisant"

jbcaillau commented 1 year ago

Bonsoir, le dernier lien ne fonctionne pas et je ne vois pas la fin de la phrase après " clone ce repo-ci OptimalControl.jl chez toi et teste la résolution de ce même problème en faisant"

Ça doit être OK, dis moi sinon.

ange-kokotakis commented 1 year ago

Bonsoir, j'ai regardé le cours et testé les résolutions de problèmes. J'ai aussi fait la documentation du problème en reprenant tutorial-basic-example et Double integrator: time minimisation en utilisant Documenter.jl : build.zip (il faut l'extraire pour avoir la bonne mise en page).

jbcaillau commented 1 year ago

Bonsoir @Ange632, deux choses :

Est-ce clair ?

ange-kokotakis commented 1 year ago

Bonsoir monsieur @jbcaillau, oui c'est bien compris, je viens de push pour rajouter tutorial-double-integrator.md. En revanche ca ne push pas le dossier build que crée Documenter.jl, je ne sais pas si c'est voulu.

ange-kokotakis commented 1 year ago

D'ailleurs pour le dossier build c'est bien voulu, il est inscrit dans le .gitignore

jbcaillau commented 1 year ago

Bonsoir @Ange632 ; bien vu le push :

Pour terminer (cf. fin expé. pro. ce vendredi 8/9), une dernière tâche :

t ∈ [t0, tf], time
x ∈ R², state
u ∈ R, control
x(t0) == x0, initial_con
ẋ(t) == A * x(t) + B * u(t)
∫(0.5 * (x₁(t)^2 + x₂(t)^2 + u(t)^2)) → min