Open jbcaillau opened 1 year ago
Bonsoir @Ange632 pour la suite :
CTProblems
l'exemple Double integrator: time minimisation : il s'agit de minimiser non plus la norme $L^2$ du contrôle (= la fonction $u$, qui représente l'accélération) mais le temps pour atteindre la cible (on démontre alors que la stratégie optimale est "bang-bang", i.e. avec contrôle possiblement discontinu et valant $pm 1$) OptimalControl.jl
) chez toi et teste la résolution de ce même problème [^1] en faisant
using OptimalControl
@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
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"
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.
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).
Bonsoir @Ange632, deux choses :
build.zip
mais l'idée est que tu pousses (git push
) sur ce repo ci (OptimalControl.jl, qui est un fork de l'original que j'ai fait pour que tu puisses travailler dessus) tes modifs (notamment le fichier markdown tutorial-double-integrator.md
qui sert à Documenter.jl
)Est-ce clair ?
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.
D'ailleurs pour le dossier build
c'est bien voulu, il est inscrit dans le .gitignore
Bonsoir @Ange632 ; bien vu le push :
build
n'a en effet pas vocation à être inclus dans le push
Documenter
du build
en ligne (dans un endroit ad hoc dans le repo)make
associéPour terminer (cf. fin expé. pro. ce vendredi 8/9), une dernière tâche :
fork
de OptimalControl.jl
, pour commencer) un tuto "LQR: energy and distance minimisation" associé à ce problèmet ∈ [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
@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 :