control-toolbox / spin

Spin
GNU General Public License v3.0
0 stars 0 forks source link

Suivi stage I. Mimoun #1

Open jbcaillau opened 1 month ago

jbcaillau commented 1 month ago

Point du 17/06/2024

@ibtissammim

IMG_3247 IMG_3245

@ IMG_3246

jbcaillau commented 1 month ago

See also: https://github.com/control-toolbox/CTDirect.jl/issues/119

jbcaillau commented 1 month ago

Point du 24/06/2024

@ibtissammim

ibtissammim commented 1 month ago

Bonjour Monsieur, Est ce que les constantes du problème sont bien : ε = 0.1 Γ = 9.855e-2 γ = 3.65e-3 ? Cordialement, Ibtissam

ibtissammim commented 1 month ago

Bonjour Monsieur,

Le problème ne converge plus. En effet, j'ai constaté que j'avais mal défini les conditions initiales. Après avoir effectué les changements nécessaires, le problème ne converge plus et j'obtiens l'erreur suivante : EXIT: Converged to a point of local infeasibility. Problem may be infeasible. knot-vectors must be unique and sorted in increasing order

Je vais mettre la nouvelle version du code sur Git.

Cordialement, Ibtissam MIMOUN

jbcaillau commented 1 month ago

@ibtissammim Deux exemples avec "warm start" pour continuation sur condition initiale : https://control-toolbox.org/CTDirect.jl/stable/tutorial.html#Initial-guess-options https://control-toolbox.org/docs/optimalcontrol/dev/tutorial-batch.html

ibtissammim commented 1 month ago

D'accord, merci beaucoup.

jbcaillau commented 1 month ago

Point du 1er juillet 2024

@ibtissammim

Misc

jbcaillau commented 1 month ago

Point du 3 juillet 2024

@ibtissammim

ibtissammim commented 1 month ago

@jbcaillau J'ai un petit soucis avec la fonction de tir. En effet, je vois pas d'où vient le H01 et H1 dans la section 7.1.

jbcaillau commented 1 month ago

@jbcaillau J'ai un petit soucis avec la fonction de tir. En effet, je vois pas d'où vient le H01 et H1 dans la section 7.1.

$$ H_0(x,p) = \langle p,F0(x) \rangle,\quad H{01} = \lbrace H_0,H_1 \rbrace $$

(crochet de Poisson, voir ici)

ibtissammim commented 1 month ago

@jbcaillau C'est quoi les fonctions : pz1 et pz2 de la page 35? Merci

jbcaillau commented 4 weeks ago

@ibtissammim

Point du 8/7/2024

ibtissammim commented 3 weeks ago

@jbcaillau Bonjour monsieur, J'ai réussi à faire marché la fonction de tir, avec MINPACK, mais la solution ne converge pas, comment changer le p0? est ce que je le fais aléatoirement? Merci

jbcaillau commented 3 weeks ago

bonjour @ibtissammim ; merci pour les nouvelles. pour le p0, surtout pas ! normalement, tu dois avoir une bonne initial guess avec le direct et sol.costate(0). si ça ne suffit pas à faire converger, re-résout le pb avec une grille plus fine.

ibtissammim commented 3 weeks ago

Bonjour @jbcaillau , shoot! me retourne une valeur, que signifie-t-elle ? Et est ce que la norme du vecteur s de shoot! doit être à une certaine valeur ? La methode indirecte converge mais en changeant la tolérance de fsolve qui est normalement $10^{-8}$ à $10^{-6}$

jbcaillau commented 3 weeks ago

Bonjour @jbcaillau , shoot! me retourne une valeur, que signifie-t-elle ? Et est ce que la norme du vecteur s de shoot! doit être à une certaine valeur ? La methode indirecte converge mais en changeant la tolérance de fsolve qui est normalement 10−8 à 10−6

@ibtissammim shoot! retourne la dernière valeur affectée, ici une composante du tir : https://github.com/control-toolbox/spin/blob/f7def56020859ad0f893971695bd5bf70fed9b55/src/tir_saturation.jl#L75

C'est plus propre d'ajouter à la fin un return nothing.

OK pour les tolérances, c'est normal (on reverra ensemble).

ibtissammim commented 3 weeks ago

Bonjour @jbcaillau, Lorsque j'essaye de déployer la page web de tir_saturation.md que je viens d'écrire exactement comme bisaturation.md, j'ai cette erreur : image Alors que j'ai effectué des changements dans documentation.yml : image Et aussi des modifications dans make.jl: image Est que je dois changer un autre fichier ? Merci

jbcaillau commented 3 weeks ago

Bonjour @ibtissammim il ne faut pas faire comme ça dans Documentation.yml : fais ton .md sans te poser de question, je fais les modifs après pour rendre le déploiement possible.

ibtissammim commented 3 weeks ago

D'accord @jbcaillau, merci.

ibtissammim commented 2 weeks ago

Bonjour @jbcaillau @ocots,

J'ai un petit souci avec l'utilisation du solveur linéaire MA57 avec HSL. Les valeurs du contrôle sont l'opposé de ce que je dois trouver. Je ne vois pas d'où vient cette erreur. prob 2 spins Merci!!

ocots commented 2 weeks ago

Ce n'est pas nécessairement une erreur car c'est symétrique. C'est tout de même légèrement surprenant que le solveur converge vers la solution symétrique.

jbcaillau commented 2 weeks ago

@ocots en effet, symétrie $(y, z, u) \mapsto (-y, z, -u)$

jbcaillau commented 1 week ago

@ibtissammim je viens de faire des modifs dans la doc (et dans les fichiers CI / doc), tout passe et c'est mergé dans la branche main https://github.com/control-toolbox/spin/pull/9

Par contre, la doc tir_saturation.md est à compléter (j'ai supprimé la fin qui ne passait pas, et semblait obsolète

NB. Il faut visiblement mettre des global pour les variables qui apparaissent dans les boucles (alors que ce n'est plus la peine en julia standard^1 / hors Documenter)

ibtissammim commented 1 week ago

D'accord @jbcaillau

jbcaillau commented 1 week ago

@ibtissammim pour la suite, voir :

ibtissammim commented 6 days ago

Bonjour @jbcaillau, A quoi correspond le paramètre mu? puisque je le vois pas définit dans la fonction init. Je suppose que cette fonction définit la dynamique, et donc puisque dans la dynamique du problème j'ai besoin de \epsilon, cette variable "z" doit le contenir. est ce que c'est correct? ode_z Voici ce comment j'ai définit la fonction ode : bisat

ibtissammim commented 6 days ago

Bonjour @jbcaillau, je suis bloquée et je ne comprends pas comment notre problème de spin peut être traité de la même manière que les autres problèmes. ocp

jbcaillau commented 5 days ago

bonjour @ibtissammim rdv 16:30 ce mercredi pour un point zoom : https://univ-cotedazur.zoom.us/my/caillau

Bonjour @jbcaillau, je suis bloquée et je ne comprends pas comment notre problème de spin peut être traité de la même manière que les autres problèmes.

ibtissammim commented 5 days ago

D'accord @jbcaillau, Merci :)

jbcaillau commented 4 days ago

@ibtissammim https://github.com/control-toolbox/BVP-DAE/issues/1#issuecomment-2262397840

PlMlsn commented 4 days ago

@ibtissammim @jbcaillau Si je peux me permettre, je pense que le plus simple est de partir du problème Goddard primal-dual. D'une part c'est un problème à temps minimal comme celui que vous traitez. Par ailleurs, en réalité, la méthode primale-duale est assez simple à implémenter car elle est très systématique.

PlMlsn commented 4 days ago

Bonjour @jbcaillau, A quoi correspond le paramètre mu? puisque je le vois pas définit dans la fonction init. Je suppose que cette fonction définit la dynamique, et donc puisque dans la dynamique du problème j'ai besoin de \epsilon, cette variable "z" doit le contenir. est ce que c'est correct? ode_z Voici ce comment j'ai définit la fonction ode : bisat

En général, je note z la variable contenant les solutions des équations algébriques. Plus précisément, il s'agit du contrôle u et de tous les multiplicateurs des contraintes. Dans ce cas, la variable mu est le multiplicateur associé à la contrainte d'état.

jbcaillau commented 4 days ago

Bonjour @jbcaillau, A quoi correspond le paramètre mu? puisque je le vois pas définit dans la fonction init. Je suppose que cette fonction définit la dynamique, et donc puisque dans la dynamique du problème j'ai besoin de \epsilon, cette variable "z" doit le contenir. est ce que c'est correct? ode_z Voici ce comment j'ai définit la fonction ode : bisat

En général, je note z la variable contenant les solutions des équations algébriques. Plus précisément, il s'agit du contrôle u et de tous les multiplicateurs des contraintes. Dans ce cas, la variable mu est le multiplicateur associé à la contrainte d'état.

🙏🏽 merci @PlMlsn en effet, on a vu ça hier : $\mu$ pour $g(x) \leq 0$, $\eta$ pour $c(x,u) \leq 0$, de mémoire

jbcaillau commented 4 days ago

@ibtissammim @jbcaillau Si je peux me permettre, je pense que le plus simple est de partir du problème Goddard primal-dual. D'une part c'est un problème à temps minimal comme celui que vous traitez. Par ailleurs, en réalité, la méthode primale-duale est assez simple à implémenter car elle est très systématique.

@PlMlsn dans l'immédiat, il s'agit de tester ton code python sur le cas de contrôle quantique (pas de réimplémenter). merci pour le conseil !

ibtissammim commented 3 days ago

Bonjour @jbcaillau, A quoi correspond le paramètre mu? puisque je le vois pas définit dans la fonction init. Je suppose que cette fonction définit la dynamique, et donc puisque dans la dynamique du problème j'ai besoin de \epsilon, cette variable "z" doit le contenir. est ce que c'est correct? ode_z Voici ce comment j'ai définit la fonction ode : bisat

En général, je note z la variable contenant les solutions des équations algébriques. Plus précisément, il s'agit du contrôle u et de tous les multiplicateurs des contraintes. Dans ce cas, la variable mu est le multiplicateur associé à la contrainte d'état.

Merci beaucoup pour votre réponse @PlMlsn.