Skip to content
Snippets Groups Projects
Commit 6bd9865a authored by Olivier Cots's avatar Olivier Cots
Browse files

foo

parent f762ed58
No related branches found
No related tags found
1 merge request!5Refonte ok
%% Cell type:markdown id: tags: %% Cell type:markdown id: tags:
<center> <center>
<h1> TP-Projet d'optimisation numérique </h1> <h1> TP-Projet d'optimisation numérique </h1>
<h1> Année 2020-2021 - 2e année département Sciences du Numérique </h1> <h1> Année 2020-2021 - 2e année département Sciences du Numérique </h1>
<h1> Noms: </h1> <h1> Noms: </h1>
<h1> Prénoms: </h1> <h1> Prénoms: </h1>
</center> </center>
%% Cell type:markdown id: tags: %% Cell type:markdown id: tags:
# Algorithme de Newton # Algorithme de Newton
## Implémentation ## Implémentation
1. Coder l’algorithme de Newton local tel que décrit dans la section *Algorithme de Newton* (fichier `Algorithme_De_Newton.jl`) 1. Coder l’algorithme de Newton local tel que décrit dans la section *Algorithme de Newton* (fichier `Algorithme_De_Newton.jl`)
2. Tester l’algorithme sur les fonctions $f_{1}$ , $f_{2}$ avec les points initiaux $x_{011}$ , $x_{012}$ (pour $f_{1}$ ) et $x_{021}$ , $x_{022}$ , $x_{023}$ (pour $f_{2}$ ) donnés en Annexe A. 2. Tester l’algorithme sur les fonctions $f_{1}$ , $f_{2}$ avec les points initiaux $x_{011}$ , $x_{012}$ (pour $f_{1}$ ) et $x_{021}$ , $x_{022}$ , $x_{023}$ (pour $f_{2}$ ) donnés en Annexe A.
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` julia ``` julia
using Pkg using Pkg
Pkg.status() Pkg.status()
``` ```
%% Output %% Output
 Status `~/.julia/environments/v1.6/Project.toml`  Status `~/.julia/environments/v1.6/Project.toml`
 [336ed68f] CSV v0.9.10  [336ed68f] CSV v0.9.10
 [a93c6f00] DataFrames v1.2.2  [a93c6f00] DataFrames v1.2.2
 [0c46a032] DifferentialEquations v6.20.0  [0c46a032] DifferentialEquations v6.20.0
 [7073ff75] IJulia v1.23.2  [7073ff75] IJulia v1.23.2
 [91a5bcdd] Plots v1.23.6  [91a5bcdd] Plots v1.23.6
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` julia ``` julia
#using Pkg; Pkg.add("LinearAlgebra"); Pkg.add("Markdown") #using Pkg; Pkg.add("LinearAlgebra"); Pkg.add("Markdown")
# using Documenter # using Documenter
using LinearAlgebra using LinearAlgebra
using Markdown # Pour que les docstrings en début des fonctions ne posent using Markdown # Pour que les docstrings en début des fonctions ne posent
# pas de soucis. Ces docstrings sont utiles pour générer # pas de soucis. Ces docstrings sont utiles pour générer
# la documentation sous GitHub # la documentation sous GitHub
include("Algorithme_De_Newton.jl") include("Algorithme_De_Newton.jl")
# Affichage les sorties de l'algorithme des Régions de confiance # Affichage les sorties de l'algorithme des Régions de confiance
function my_afficher_resultats(algo,nom_fct,point_init,xmin,fxmin,flag,sol_exacte,nbiters) function my_afficher_resultats(algo,nom_fct,point_init,xmin,fxmin,flag,sol_exacte,nbiters)
println("-------------------------------------------------------------------------") println("-------------------------------------------------------------------------")
printstyled("Résultats de : ",algo, " appliqué à ",nom_fct, " au point initial ", point_init, ":\n",bold=true,color=:blue) printstyled("Résultats de : ",algo, " appliqué à ",nom_fct, " au point initial ", point_init, ":\n",bold=true,color=:blue)
println(" * xsol = ",xmin) println(" * xsol = ",xmin)
println(" * f(xsol) = ",fxmin) println(" * f(xsol) = ",fxmin)
println(" * nb_iters = ",nbiters) println(" * nb_iters = ",nbiters)
println(" * flag = ",flag) println(" * flag = ",flag)
println(" * sol_exacte : ", sol_exacte) println(" * sol_exacte : ", sol_exacte)
end end
# Fonction f0 # Fonction f0
# ----------- # -----------
f0(x) = sin(x) f0(x) = sin(x)
# la gradient de la fonction f0 # la gradient de la fonction f0
grad_f0(x) = cos(x) grad_f0(x) = cos(x)
# la hessienne de la fonction f0 # la hessienne de la fonction f0
hess_f0(x) = -sin(x) hess_f0(x) = -sin(x)
sol_exacte = -pi/2 sol_exacte = -pi/2
options = [] options = []
x0 = sol_exacte x0 = sol_exacte
xmin,f_min,flag,nb_iters = Algorithme_De_Newton(f0,grad_f0,hess_f0,x0,options) xmin,f_min,flag,nb_iters = Algorithme_De_Newton(f0,grad_f0,hess_f0,x0,options)
my_afficher_resultats("Newton","f0",x0,xmin,f_min,flag,sol_exacte,nb_iters) my_afficher_resultats("Newton","f0",x0,xmin,f_min,flag,sol_exacte,nb_iters)
x0 = -pi/2+0.5 x0 = -pi/2+0.5
xmin,f_min,flag,nb_iters = Algorithme_De_Newton(f0,grad_f0,hess_f0,x0,options) xmin,f_min,flag,nb_iters = Algorithme_De_Newton(f0,grad_f0,hess_f0,x0,options)
my_afficher_resultats("Newton","f0",x0,xmin,f_min,flag,sol_exacte,nb_iters) my_afficher_resultats("Newton","f0",x0,xmin,f_min,flag,sol_exacte,nb_iters)
x0 = pi/2 x0 = pi/2
xmin,f_min,flag,nb_iters = Algorithme_De_Newton(f0,grad_f0,hess_f0,x0,options) xmin,f_min,flag,nb_iters = Algorithme_De_Newton(f0,grad_f0,hess_f0,x0,options)
my_afficher_resultats("Newton","f0",x0,xmin,f_min,flag,sol_exacte,nb_iters) my_afficher_resultats("Newton","f0",x0,xmin,f_min,flag,sol_exacte,nb_iters)
``` ```
%% Output %% Output
------------------------------------------------------------------------- -------------------------------------------------------------------------
Résultats de : Newton appliqué à f0 au point initial -1.5707963267948966: Résultats de : Newton appliqué à f0 au point initial -1.5707963267948966:
* xsol = [0.0] * xsol = [0.0]
* f(xsol) = 0 * f(xsol) = 0
* nb_iters = 0 * nb_iters = 0
* flag = 0 * flag = 0
* sol_exacte : -1.5707963267948966 * sol_exacte : -1.5707963267948966
------------------------------------------------------------------------- -------------------------------------------------------------------------
Résultats de : Newton appliqué à f0 au point initial -1.0707963267948966: Résultats de : Newton appliqué à f0 au point initial -1.0707963267948966:
* xsol = [0.0] * xsol = [0.0]
* f(xsol) = 0 * f(xsol) = 0
* nb_iters = 0 * nb_iters = 0
* flag = 0 * flag = 0
* sol_exacte : -1.5707963267948966 * sol_exacte : -1.5707963267948966
------------------------------------------------------------------------- -------------------------------------------------------------------------
Résultats de : Newton appliqué à f0 au point initial 1.5707963267948966: Résultats de : Newton appliqué à f0 au point initial 1.5707963267948966:
* xsol = [0.0] * xsol = [0.0]
* f(xsol) = 0 * f(xsol) = 0
* nb_iters = 0 * nb_iters = 0
* flag = 0 * flag = 0
* sol_exacte : -1.5707963267948966 * sol_exacte : -1.5707963267948966
%% Cell type:markdown id: tags: %% Cell type:markdown id: tags:
## Interprétation ## Interprétation
Justifier Justifier
1. les résultats obtenus pour l'exemple $f_0$ ci-dessus; 1. les résultats obtenus pour l'exemple $f_0$ ci-dessus;
2. que l’algorithme implémenté converge en une itération pour $f_{1}$; 2. que l’algorithme implémenté converge en une itération pour $f_{1}$;
3. que l’algorithme puisse ne pas converger pour $f_{2}$ avec certains points initiaux. 3. que l’algorithme puisse ne pas converger pour $f_{2}$ avec certains points initiaux.
%% Cell type:markdown id: tags: %% Cell type:markdown id: tags:
## Vos réponses? ## Vos réponses?
%% Cell type:markdown id: tags: %% Cell type:markdown id: tags:
# Régions de confiance avec pas de cauchy # Régions de confiance avec pas de cauchy
## Implémentation ## Implémentation
1. Coder l'algorithme du pas de Cauchy d’un sous-problème de 1. Coder l'algorithme du pas de Cauchy d’un sous-problème de
régions de confiance (fichier `Pas_De_Cauchy.jl`). Tester sur les quadratiques proposées en Annexe B. régions de confiance (fichier `Pas_De_Cauchy.jl`). Tester sur les quadratiques proposées en Annexe B.
2. Coder l'algorithme de régions de confiance (fichier `Regions_De_Confiance.jl`). Tester sur les problèmes de l’Annexe A. 2. Coder l'algorithme de régions de confiance (fichier `Regions_De_Confiance.jl`). Tester sur les problèmes de l’Annexe A.
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` julia ``` julia
# Vos tests # Vos tests
``` ```
%% Cell type:markdown id: tags: %% Cell type:markdown id: tags:
## Interprétation ## Interprétation
1. Quelle relation lie la fonction test $f_1$ et son modèle de Taylor à l’ordre 2 ? Comparer alors les performances de Newton et RC-Pas de Cauchy sur cette fonction. 1. Quelle relation lie la fonction test $f_1$ et son modèle de Taylor à l’ordre 2 ? Comparer alors les performances de Newton et RC-Pas de Cauchy sur cette fonction.
2. Le rayon initial de la région de confiance est un paramètre important dans l’analyse 2. Le rayon initial de la région de confiance est un paramètre important dans l’analyse
de la performance de l’algorithme. Sur quel(s) autre(s) paramètre(s) peut-on jouer de la performance de l’algorithme. Sur quel(s) autre(s) paramètre(s) peut-on jouer
pour essayer d’améliorer cette performance ? Étudier l’influence d’au moins deux de pour essayer d’améliorer cette performance ? Étudier l’influence d’au moins deux de
ces paramètres. ces paramètres.
%% Cell type:markdown id: tags: %% Cell type:markdown id: tags:
## Vos réponses? ## Vos réponses?
%% Cell type:markdown id: tags: %% Cell type:markdown id: tags:
# Régions de confiance avec gradient conjugué tronqué # Régions de confiance avec gradient conjugué tronqué
## Implémentation ## Implémentation
1. Implémenter l’algorithme du Gradient Conjugué Tronqué, en se basant sur le cours (fichier `Gradient_Conjugue_Tronque.jl`). 1. Implémenter l’algorithme du Gradient Conjugué Tronqué, en se basant sur le cours (fichier `Gradient_Conjugue_Tronque.jl`).
On validera les résultats sur les fonctions de l’Annexe C. On validera les résultats sur les fonctions de l’Annexe C.
2. Intégrer finalement l’algorithme du Gradient Conjugué Tronqué dans le code de 2. Intégrer finalement l’algorithme du Gradient Conjugué Tronqué dans le code de
régions de confiance, et appliquer ce code pour résoudre les exemples proposés en régions de confiance, et appliquer ce code pour résoudre les exemples proposés en
Annexe A. Annexe A.
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` julia ``` julia
# Vos tests # Vos tests
``` ```
%% Cell type:markdown id: tags: %% Cell type:markdown id: tags:
## Interprétation ## Interprétation
1. Comparer la décroissance obtenue avec celle du pas de Cauchy, en retournant, dans 1. Comparer la décroissance obtenue avec celle du pas de Cauchy, en imposant la sortie
un premier temps le dernier itéré admissible à courbure positive (c’est à dire, que si
l’une ou l’autre des deux conditions (b) ou (d) sont rencontrées dans l’algorithme 3,
alors on ne calcule pas ``σ_{j}`` et on retourne le dernier itéré ``s_{j}`` directement).
2. Comparer la décroissance obtenue avec celle du pas de Cauchy, en imposant la sortie
dans l’algorithme 3 au bout d’une itération seulement. Que remarquez vous ? dans l’algorithme 3 au bout d’une itération seulement. Que remarquez vous ?
3. Comparer la décroissance obtenue avec celle du pas de Cauchy dans le cas général. 2. Comparer la décroissance obtenue avec celle du pas de Cauchy dans le cas général.
4. Quels sont les avantages et inconvénients des deux approches ? 3. Quels sont les avantages et inconvénients des deux approches ?
%% Cell type:markdown id: tags: %% Cell type:markdown id: tags:
## Vos réponses? ## Vos réponses?
%% Cell type:markdown id: tags: %% Cell type:markdown id: tags:
# Lagrangien augmenté # Lagrangien augmenté
## Implémentation ## Implémentation
1.Choisir des critères d’arrêt pour la convergence de l'algorithme. 1.Choisir des critères d’arrêt pour la convergence de l'algorithme.
2.Implémenter l'algorithme du lagrangien augmenté, en utilisant les différentes méthodes 2.Implémenter l'algorithme du lagrangien augmenté, en utilisant les différentes méthodes
qui ont été vues en première partie pour la résolution de la suite de problémes sans qui ont été vues en première partie pour la résolution de la suite de problémes sans
contraintes (fichier `Lagrangien_Augmente.jl`) contraintes (fichier `Lagrangien_Augmente.jl`)
3.Tester les différentes variantes sur les problèmes en Annexe D. 3.Tester les différentes variantes sur les problèmes en Annexe D.
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` julia ``` julia
# Vos tests # Vos tests
``` ```
%% Cell type:markdown id: tags: %% Cell type:markdown id: tags:
## Interprétation ## Interprétation
1.Commenter les résultats obtenus, en étudiant notamment les valeurs de $\lambda_k$ et $\mu_k$. 1.Commenter les résultats obtenus, en étudiant notamment les valeurs de $\lambda_k$ et $\mu_k$.
2.Étudier l'influence du paramètre $\tau$ dans la performance de l'algorithme. 2.Étudier l'influence du paramètre $\tau$ dans la performance de l'algorithme.
3.**Supplémentaire** : 3.**Supplémentaire** :
Que proposez-vous comme méthode pour la résolution des problèmes avec Que proposez-vous comme méthode pour la résolution des problèmes avec
des contraintes à la fois d'égalité et d'inégalité ? Implémenter (si le temps le permet) des contraintes à la fois d'égalité et d'inégalité ? Implémenter (si le temps le permet)
ce nouvel algorithme ce nouvel algorithme
%% Cell type:markdown id: tags: %% Cell type:markdown id: tags:
## Vos réponses? ## Vos réponses?
......
File moved
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment