Télécharger moca_mma.notice

Retour à la liste

Afficher cette notice en

Numérotation des lignes :
$$$$ MOCA_MMA NOTICE  FD218221  26/04/29    21:15:02     12530          
                                             DATE     26/04/29

     Procedure MOCA_ MMA                    Voir aussi : MMA MOCA LEVM
     __________________                                 AJUSTE  

     Syntaxe :
     ---------

     LX1 (LSH LXH) = MOCA_MMA  'X0'   LX0  'ABSC' LP   'ORDO' LH   'PROC' FONC1  ...

                          ... ('XMIN' L1) ('XMAX' L2) ('POID' LW) ('CONT' FONC2) ...
                          ... ('CRIT' Z1) ('ITER' N1) ('INCR' DX)                ...
                          ... ('ECHO' N2) ('VISU' LV)                            ;




     Objet :
     -------

     La procedure MOCA_MMA permet d'ajuster les parametres d'une fonction
     pour passer au mieux (au sens des moindres carres) par une serie de points connus.
     Le processus de minimisation est base sur la Méthode des Asymptotes Mobiles.

     La fonction a ajuster peut etre non lineaire selon les parametres x.
     Les parametres x peuvent egalement etre soumis a des contraintes non lineaires.

     Description detaillee :
       Soit (P1,H1) (P2,H2) ... (Pm,Hm) une serie de m points connus.

       On cherche a ajuster une fonction h(P,x), s'exprimant aux points P,
       mais egalement dependante du vecteur x=(x1,x2,...xn) de n parametres,
       de maniere a avoir le plus faible ecart avec l'ensemble des points connus.

       Les parametres x peuvent etre soumis a un ensemble de r contraintes
       d'inegalite :  gj(x) < 0    pour j=1,2,...,r

       On pose donc le probleme d'optimisation suivant :

                                     m
                                    ----
                                1   \
         Minimiser :    S(x) = ---  /     wi * [h(Pi,x) - Hi]^2
         sur x                  2   ----
                                    i = 1
 
         tel que   :    gj(x) < 0         pour j = 1,...,r
                        xmin < xi < xmax  pour i = 1,...,n


       La procedure MOCA_MMA determine x, solution du probleme d'optimisation,
       en partant d'un point de depart x0 et en appliquant iterativement
       l'operateur MMA de maniere a reduire l'ecart quadratique S(x) tout en
       satisfaisant les fonctions gj(x) < 0.

       Le processus est arrete lorsque l'une des conditions suivantes est atteinte :
       - le residu sur les conditions KKT est inferieur a la precision ;
       - le nombre d'iterations maximal est atteint.


     Arguments :
     -----------

     En entree, obligatoires :

     LX0   : LISTREEL, valeurs initiales x0 des parametres recherches
                       de dimension n

     LP    : LISTREEL, abscisses (Pi) des points connus
                       de dimension m

     LH    : LISTREEL, ordonnees (Hi) des points connus
                       de dimension m

     FONC1 : MOT, nom de la procedure Gibiane decrivant la fonction h.
                  Attention, il faut donner un MOT egal au nom de la
                  procedure (et non pas l'objet procedure lui meme) !
                  Elle doit avoir la syntaxe suivante :
                  LIS1 LIS2 = FONC1 LP LX ('VISU') ;    ou :
                  -- LP et LX sont les LISTREELs precedents
                  -- LIS1 est un LISTREEL des m valeurs de h(Pi,x) (i=1,...,m)
                  -- LIS2 est un LISTOBJE contenant m LISTREEL, ou chaque
                     LISTREEL i est constitue des n valeurs des derivees partielles
                     [dh(Pi,x)/dx1 , dh(Pi,x)/dx2, ... , dh(Pi,x)/dxn]
                  -- 'VISU' mot clef optionnel, si present la procedure
                     ne doit retourner que LIS1 (cette option est utilisee
                     a des fin de visualisation)

     En entree, facultatives :

     L1     : LISTREEL, bornes min (xmin) pour x, de dimension n
                        (par defaut toutes egales a 0.)

     L2     : LISTREEL, bornes max (xmax) pour x, de dimension n
                        (par defaut toutes egales a 1000.)

     LW     : LISTREEL, poids associes (wi) a chaque point (Pi,Hi) connu,
                        de dimension m
                        (par defaut tous egaaux a 1.)

     FONC2 : MOT, nom de la procedure Gibiane decrivant les fonctions contraintes gj.
                  Attention, il faut donner un MOT egal au nom de la
                  procedure (et non pas l'objet procedure lui meme) !
                  Elle doit avoir la syntaxe suivante :
                  LIS1 LIS2 = FONC2 LX ;    ou :
                  -- LX est le LISTREEL des variables x
                  -- LIS1 est un LISTREEL de r valeurs des fonctions contraintes gj
                     [g1(x) , g2(x) , ... , gr(x)]
                  -- LIS2 est un LISTOBJE contenant r LISTREELs, ou chaque
                     LISTREEL j est constitue des n valeurs des derivees partielles
                     [dgj(x)/dx1 , dgj(x)/dx2, ... , dgj(x)/dxn]

     Z1     : FLOTTANT, critere d'arret sur le residu KKT
                        (par defaut egal a 1.E-4)

     N1     : ENTIER, nombre maximal d'iterations d'appel a MMA
                      (par defaut egal a 50)

     DX     : FLOTTANT, limite d'increment (move) pour chaque iteration de MMA
                        (par defaut egal a 0.1)

     N2     : ENTIER, niveau d'affichage
                      N2 = 0   pas d'affichage (defaut)
                      N2 = 1   affiche les valeurs de x et du residu KKT au cours
                               de l'optimisation
                      N2 = 2   idem + renvoie ces valeurs intermediaires en sortie

     'VISU' LV : MOT + LISTREEL, si le mot clef 'VISU' est utilise, la procedure
                     trace une representation graphique de la fonction h(P,x) au cours
                     de l'optimisation, sur le domaine definit par LV.
                     Les points connus (LP,LH) seront egalement traces.


     En sortie :

     LX1 : LISTREEL, valeurs de x apres optimisation

     LSH : LISTREEL, liste de l'ecart quadratique S(x) pour chaque iteration
                     de l'optimisation (seulement si N2 = 2)

     LXH : LISTOBJE, liste de LISTREELs des valeurs de x pour chaque iteration
                     de l'optimisation (seulement si N2 = 2)

© Cast3M 2003 - Tous droits réservés.
Mentions légales