70 lines
2.7 KiB
Julia
Executable file
70 lines
2.7 KiB
Julia
Executable file
@doc doc"""
|
|
Tester l'algorithme du Lagrangien augmenté
|
|
|
|
# Entrées :
|
|
* affichage : (Bool) affichage ou non des résultats de chaque test
|
|
|
|
# Les cas de test (dans l'ordre)
|
|
* Newton
|
|
* fct1 : x01, x02
|
|
* fct2 : x03, x04
|
|
* gct
|
|
* fct1 : x01, x02
|
|
* fct2 : x03, x04
|
|
* Cauchy
|
|
* fct1 : x01, x02
|
|
* fct2 : x03, x04
|
|
"""
|
|
function tester_lagrangien_augmente(afficher::Bool, Lagrangien_Augmente::Function)
|
|
|
|
# initialisation des paramètres
|
|
lambda0 = 2
|
|
mu0 = 10
|
|
tho = 2
|
|
epsilon = 1e-8
|
|
tol = 1e-5
|
|
max_iters = 1000
|
|
options = [epsilon, tol, max_iters, lambda0, mu0, tho]
|
|
# La tolérance utilisée dans les tests
|
|
tol_erreur = 1e-4
|
|
|
|
# Les trois algorithmes d'optimisations sans contraintes utlisés
|
|
algos = ["newton", "gct", "cauchy"]
|
|
|
|
@testset "Lagrangien augmenté " begin
|
|
@testset "Avec $algo" for algo in algos
|
|
# le cas de test 1
|
|
xmin, fxmin, flag, nbiters = Lagrangien_Augmente(algo, fct1, contrainte1, grad_fct1, hess_fct1, grad_contrainte1,
|
|
hess_contrainte1, pts2.x01, options)
|
|
if (afficher)
|
|
afficher_resultats("Lagrangien augmenté avec " * algo, "fonction 1", "x01", xmin, fxmin, flag, sol_fct1_augm, nbiters)
|
|
end
|
|
@test isapprox(xmin, sol_fct1_augm, atol = tol_erreur)
|
|
|
|
# le cas de test 2
|
|
xmin, fxmin, flag, nbiters = Lagrangien_Augmente(algo, fct1, contrainte1, grad_fct1, hess_fct1, grad_contrainte1,
|
|
hess_contrainte1, pts2.x02, options)
|
|
if (afficher)
|
|
afficher_resultats("Lagrangien augmenté avec " * algo, "fonction 1", "x02", xmin, fxmin, flag, sol_fct1_augm, nbiters)
|
|
end
|
|
@test isapprox(xmin, sol_fct1_augm, atol = tol_erreur)
|
|
|
|
# le cas de test 3
|
|
xmin, fxmin, flag, nbiters = Lagrangien_Augmente(algo, fct2, contrainte2, grad_fct2, hess_fct2, grad_contrainte2,
|
|
hess_contrainte2, pts2.x03, options)
|
|
if (afficher)
|
|
afficher_resultats("Lagrangien augmenté avec " * algo, "fonction 2", "x03", xmin, fxmin, flag, sol_fct2_augm, nbiters)
|
|
end
|
|
@test isapprox(xmin, sol_fct2_augm, atol = tol_erreur)
|
|
|
|
# le cas de test 4
|
|
xmin, fxmin, flag, nbiters = Lagrangien_Augmente(algo, fct2, contrainte2, grad_fct2, hess_fct2, grad_contrainte2,
|
|
hess_contrainte2, pts2.x04, options)
|
|
if (afficher)
|
|
afficher_resultats("Lagrangien augmenté avec " * algo, "fonction 2", "x04", xmin, fxmin, flag, sol_fct2_augm, nbiters)
|
|
end
|
|
@test isapprox(xmin, sol_fct2_augm, atol = tol_erreur)
|
|
end
|
|
end
|
|
end
|