Télécharger mma.notice

Retour à la liste

Afficher cette notice en

Numérotation des lignes :
$$$$ MMA      NOTICE  FD218221  25/09/02    21:15:06     12346          
                                             DATE     25/09/02

     Operateur MMA                    Voir aussi : EXCE LEVM MOCA
     _____________                                 AJUSTE TOPOPTIM  

  L'operateur MMA met en oeuvre la methode des asymptotes mobiles,
  "Method of Moving Asymptotes", pour resoudre un probleme d'optimisation
  sous la forme decrite ci-dessous.

  Les variables sont :
  x = [x_1 ... x_n]^T vecteur  dans R^n
  y = [y_1 ... y_m]^T vecteur  dans R^m
  z                   scalaire dans R

  Le probleme "generique" est :

      Minimiser : f_0(x) + a_0*z  +   Somme  [ c_i*y_i + 0.5*d_i*(y_i)^2 ]
      sur x,y,z                     i=1,...,m

       soumis a : f_i(x) - a_i*z - y_i <= 0  pour i = 1,...,m (nombre de contraintes)
                  xmin_j <= x_j <= xmax_j    pour j = 1,...,n (nombre de variables)
                  z >=0     y_i >= 0         pour i = 1,...,m


  Cette formulation "generique" permet de traiter, dans le meme cadre,
  plusieurs problemes "classiques" d'optimisation, comme par exemple :
   
  - un probleme "standard" de minimisation d'une fonction sous contraintes :
        Minimiser : f_0(x)
         soumis a : f_i(x) <= 0  pour i = 1,...,m

  - un probleme "min-max" (minimiser la plus grande d'un groupe de fonctions) :
        Minimiser : Max{h_i(x)}  pour i = 1,...,p
         soumis a : g_i(x) <= 0  pour i = 1,...,q (nombre de contraintes)

  - un probleme des "moindres carres" sous la forme :
        Minimiser : 0.5 * Somme  [ (h_i(x))^2 ]
                        i=1,...,p
         soumis a : g_i(x) <= 0  pour i = 1,...,q (nombre de contraintes)

  Plus d'informations sont disponibles dans la section "Remarques".



     Syntaxe :
     ---------

     MMA TAB1 ;



     Objet :
     -------

  L'operateur permet d'effectuer une iteration d'optimisation par la MMA
  a partir de la donnee de :
  -- un point de depart x
  -- l'evaluation de la fonction f_0(x) et des fonctions f_i(x)
  -- l'evaluation de leurs gradients :
     -- gadients de f_0, par rapport a toutes les variables x_j, en x
     -- gradients des f_i, par rapport a toutes les variables x_j, en x

  La nouvelle variable optimisiee x' est rendue et peut alors servir a :
  -- evaluer a nouveau les fonctions et leurs gradients en x'
  -- effectuer une nouvelle iteration de MMA
  -- evaluer un critere de convergence global
  -- etc...

  Exemples d'utilisation :
    sur des problemes "simples" (peu de variables) :
    mma_00.dgibi mma_01.dgibi mma_02.dgibi mma_04.dgibi

    sur un probleme de plus grande taille :
    top_mma.dgibi



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

  En entree :

  TAB1              : TABLE contenant les donnees du probleme d'optimisation

  TAB1 . 'X'        : LISTREEL (dimension n)
                      valeurs de depart des variables x_j

  TAB1 . 'XMIN'     : LISTREEL (dimension n) ou FLOTTANT
                      bornes inferieures des x_j
                      si un FLOTTANT est donne, la meme borne est imposee pour tous les x_j

  TAB1 . 'XMAX'     : LISTREEL (dimension n) ou FLOTTANT
                      bornes superieures des x_j
                      si un FLOTTANT est donne, la meme borne est imposee pour tous les x_j

  TAB1 . 'F0VAL'    : FLOTTANT
                      valeur de la fonction objectif f_0 (au point xval)

  TAB1 . 'DF0DX'    : LISTREEL (dimension n)
                      gradient de f_0 par rapport au variables x_j (au point xval)

  TAB1 . 'FVAL'     : LISTREEL (dimension m)
                      valeurs des fonctions contraintes f_i (au point xval)

  TAB1 . 'DFDX'     : TABLE contenant les valeurs des gradients des fonctions contraintes f_i
                      cette table doit contenir m indices de type ENTIER :
  TAB1 . 'DFDX' . 1 : LISTREEL (dimension n), gradient de f_1 par rapport au variables x_j (au point xval)
                ...
                ...
  TAB1 . 'DFDX' . m : LISTREEL (dimension n), gradient de f_m par rapport au variables x_j (au point xval)

  TAB1 . 'ITER'     : ENTIER (facultatif), numero de l'iteration courante ( = 1 au premier appel a MMA)
                      par defaut, pris egal a 1

  TAB1 . 'XOLD1'    : LISTREEL (facultatif, dimension n)
                      contenant les valeurs 'X' a 1 iteration precedente (a condition que 'ITER' > 1)
                      par defaut, pris egal à 'X'

  TAB1 . 'XOLD2'    : LISTREEL (facultatif, dimension n)
                      contenant les valeurs 'X' a 2 iterations precedentes (a condition que 'ITER' > 2)
                      par defaut, pris egal à 'XOLD1'

  TAB1 . 'LOW'      : LISTREEL (facultatif, dimension n)
                      valeurs des asymptotes inferieures a l'iteration precedente (a condition que 'ITER' > 1)
                      par defaut, pris egale a 'XMIN'

  TAB1 . 'UPP'      : LISTREEL (facultatif, dimension n)
                      valeurs des asymptotes superieures a l'iteration precedente (a condition que 'ITER' > 1)
                      par defaut, pris egale a 'XMAX'

  TAB1 . 'A0'       : FLOTTANT (facultatif)
                      constante dans l'equation a_0*z du probleme (2)
                      par defaut, pris egal a 1

  TAB1 . 'A'        : LISTREEL (facultatif, dimension m)
                      coefficients dans l'equation a_i*z du probleme (2)
                      par defaut, pris egal a 0.  0. ..., 0.

  TAB1 . 'C'        : LISTREEL (facultatif, dimension m)
                      coefficients dans l'equation c_i*y_i du probleme (2)
                      par defaut, pris egal a 10000. 10000. ... 10000.

  TAB1 . 'D'        : LISTREEL (facultatif, dimension m)
                      coefficients dans le terme quadratique 0.5*d_i*(y_i)^2 du probleme (2)
                      par defaut, pris egal a 1. 1. ... 1.

  TAB1 . 'MOVE'     : FLOTTANT (facultatif)
                      parametre pour la mise a jour des asymptotes
                      par defaut, pris egal a 0.1


  En sortie :

  TAB1 . 'X'        : LISTREEL (dimension n)
                      valeurs optimisees des variables x_j
                      les valeurs precedentes sont deplacees dans l'indice 'XOLD1'

  TAB1 . 'XOLD1'    : LISTREEL (dimension n)
                      valeurs de 'X' 1 iteration precedente
                      les valeurs precedentes sont deplacees dans l'indice 'XOLD2'

  TAB1 . 'XOLD2'    : LISTREEL (dimension n)
                      valeurs de 'XOLD1' 1 iteration precedente,
                      correspond aussi aux valeurs de 'X' 2 iterations precedentes

  TAB1 . 'ITER'     : ENTIER, egal a sa valeur precedente incrementee de 1

  TAB1 . 'LOW'      : LISTREEL (dimension n)
                      valeurs des asymptotes inferieures mises a jour

  TAB1 . 'UPP'      : LISTREEL (dimension n)
                      valeurs des asymptotes superieures mises a jour

  TAB1 . 'Y'        : LISTREEL (dimension m)
                      valeurs optimisees des variables y_i

  TAB1 . 'Z'        : FLOTTANT
                      valeur optimisee de la variable z

  TAB1 . 'LAMBDA'   : LISTREEL (dimension m)
                      multiplicateurs de Lagrange pour les contraintes generales f_i

  TAB1 . 'XSI'      : LISTREEL (dimension n)
                      multiplicateurs de Lagrange pour les bornes inferieures des x_j

  TAB1 . 'ETA'      : LISTREEL (dimension n)
                      multiplicateurs de Lagrange pour les bornes superieures des x_j

  TAB1 . 'MU'       : LISTREEL (dimension m)
                      multiplicateurs de Lagrange pour les contraintes de non negativite des y_i

  TAB1 . 'ZET'      : FLOTTANT
                      multiplicateur de Lagrange pour la contrainte de non negativite de z

  TAB1 . 'S'        : LISTREEL (dimension m)
                      variables d'ecart pour les contraintes generales f_i


     Remarques :
     -----------

  Ces remarques sont issues de la section "Some practical consideration" de l'artice de K. Svanberg.
  Il s'agit de recommandations pour le choix des fonctions contraintes, leur mise a l'echelle
  et des parametres de l'optimisation.

  - Les contraintes f_i(x) <= 0 sont generalement ecritent sous la forme g_i(x) <= gmax_i
    ce qui correspond a f_i(x) = g_i(x) - gmax_i
    il est recommande de mettre a l'echelle les fonctions de sorte que 1 ≤ gmax_i ≤ 100
  - Il est recommande de mettre a l'echelle la fonction objectif de sorte que 1 ≤ f0(x) ≤ 100
  - Il est recommande de mettre a l'echelle les variables x_j de sorte que 0.1 ≤ xmax_j - xmin_j ≤ 100

  Pour rendre le probleme "generique" (quasiment) equivalent au probleme "standard",
  il faut choisir :
     a_0 = 1
     a_i = 0                 pour i = 1,...,m
     c_i = "un grand nombre" pour i = 1,...,m
     d_i = 1                 pour i = 1,...,m



     Pour plus d'informations :
     --------------------------

  Code original de K. Svanberg (en Matlab) : https://www.smoptit.se/

  Details de fonctionnement et d'implementation de la methode :
  https://people.kth.se/~krille/mmagcmma.pdf

  References :
  [1] K. Svanberg, The method of moving asymptotes – a new method for structural optimization
      International Journal for Numerical Methods in Engineering, 1987, 24, 359-373.
  [2] K. Svanberg, A class of globally convergent optimization methods based on conservative
      convex separable approximations
      SIAM Journal of Optimization, 2002, 12, 555-573.



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