************************************************************************ ************************************************************************ ************************************************************************ * Test de la procédure NELDMEAD : * * optimisation par Nelder-Mead Simplex * * Application à la fonction "banane" de Rosenbrock * * * * Le problème s'écrit : * * Minimiser : f0(x) = (1-x1)² + 100*(x2-x1²)² * * sur x * * * * La solution est : x1 = 1 x2 = 1 f0(1,1) = 0 * ************************************************************************ **----------------------------- Préambule ----------------------------** * Options itrac = FAUX ; * Procédure pour calculer f0 selon 2 arguments quelconques DEBP F00 x1 x2 ; f0 = ((1. - x1) ** 2) + (100. * ((x2 - (x1 ** 2)) ** 2)) ; FINP f0 ; * Procédure pour calculer la fonction sur un LISTREEL f0 = F00 x1 x2 ; FINP f0 ; * Procédure pour tracer la fonction et le simplexe SI itrac ; FINSI ; FINP ; * Maillage + champ (pour la visualisation) f0msh = F00 x y ; * Solution de référence MESS ; MESS 'Solution de reference' ; MESS ' x1 x2 f0' ; **------------- Calcul 1 : on donne le simplexe initial --------------** MESS ; * Simplexe initial * Ici, on fait "nit" appels à NELDMEAD, en les limitant à 1 seule itération * interne, afin de tracer les l'évolution des résultats nit = 100 ; MESS 'It x1 x2 f0' ; PLOT s0 fs0 'Simplxe initial' ; REPE b1 nit ; SI (EGA &b1 1) ; SINON ; FINSI ; * Affichage du simplexe et des valeurs lit = lit ET &b1 ; FIN b1 ; MESS ; * Vérification du resultat final MESS err1 ; * Courbes de convergence SI itrac ; FINSI ; **--------------- Calcul 2 : on donne un point initial ---------------** * + changement des paramètres * MESS ' x1 x2 f0' ; MESS ; * Point initial * Ici les itérations sont faites en interne de la procédure NELDMEAD * jusqu'à atteindre le critère MESS ; * Vérification du resultat final MESS err2 ; * Sortie en erreur si l'écart aux valeurs de références est trop important SI (errmax > 1.E-8) ; SINON ; MESS 'Cas test passe avec succes !' ; FINSI ; FIN ;
© Cast3M 2003 - Tous droits réservés.
Mentions légales