Open jbcaillau opened 1 month ago
@ibtissammim
wsl
) setBonjour Monsieur, Est ce que les constantes du problème sont bien : ε = 0.1 Γ = 9.855e-2 γ = 3.65e-3 ? Cordialement, Ibtissam
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
@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
D'accord, merci beaucoup.
@ibtissammim
@ibtissammim
Documenter.jl
@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 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)
@jbcaillau C'est quoi les fonctions : pz1 et pz2 de la page 35? Merci
@ibtissammim
fsolve
de MINPACK.jl
, voir ici@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
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.
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}$
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).
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 :
Alors que j'ai effectué des changements dans documentation.yml :
Et aussi des modifications dans make.jl:
Est que je dois changer un autre fichier ?
Merci
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.
D'accord @jbcaillau, merci.
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.
Merci!!
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.
@ocots en effet, symétrie $(y, z, u) \mapsto (-y, z, -u)$
@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)
D'accord @jbcaillau
@ibtissammim pour la suite, voir :
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?
Voici ce comment j'ai définit la fonction ode :
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.
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.
D'accord @jbcaillau, Merci :)
@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.
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?
Voici ce comment j'ai définit la fonction ode :
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.
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?
Voici ce comment j'ai définit la fonction ode :
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
@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 !
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?
Voici ce comment j'ai définit la fonction ode :
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.
Point du 17/06/2024
@ibtissammim
@![IMG_3246](https://github.com/control-toolbox/spin/assets/62183989/9a96bdfd-cf3c-4dc9-ba10-0a70782bca2f)