Télécharger mma.notice

Retour à la liste

Afficher cette notice en

Numérotation des lignes :
$$$$ MMA      NOTICE  FD218221  26/09/16    21:15:08     12646          
                                             DATE     26/09/16

     Operateur MMA               Voir aussi : EXCE LEVM MOCA TOPOPTIM
     _____________                            MOCA_MMA AJUSTE  

  L'operateur MMA met en oeuvre la methode des asymptotes mobiles,
  "Method of Moving Asymptotes", pour resoudre un probleme d'optimisation
  non lineaire par approximation convexe.

  Les variables sont :
  x = [x_1 ... x_n]  (dimension n) variables reeles
  y = [y_1 ... y_m]  (dimension m) variables artificielles d'ecart
  z                                variable  artificielle  d'ajustement

  Le probleme "generique" est :

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

       soumis a : f_i(x) - a_i*z - y_i <= 0  pour i = 1,...,m (fonctions contraintes)
                  xmin_j <= x_j <= xmax_j    pour j = 1,...,n (bornes des 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 sous contraintes :
        Minimiser : f_0(x)
         soumis a : f_i(x) <= 0  pour i = 1,...,m

  - un probleme "min-max" sur un groupe de fonctions :
        Minimiser : Max{h_i(x)}  pour i = 1,...,p
         soumis a : g_i(x) <= 0  pour i = 1,...,q

  - 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

  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 :
  -- petite taille (peu de variables)         : mma_**.dgibi
  -- grande taille (optimisation topologique) : 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 x)
  TAB1 . 'DF0DX'    : LISTREEL (dimension n)
                      gradient de f_0 par rapport au variables x_j
                      (au point x)
  TAB1 . 'FVAL'     : LISTREEL (dimension m)
                      valeurs des fonctions contraintes f_i
                      (au point x)
  TAB1 . 'DFDX'     : gradients des fonctions contraintes f_i,
                      2 types possibles :
                      - TABLE contenant m indices ENTIER :
                        . 1 : LISTREEL (dimension n), gradient de f_1
                               par rapport au variables x_j (au point x)
                         ...
                         ...
                        . m : LISTREEL (dimension n), gradient de f_m
                               par rapport au variables x_j (au point x)
                      - LISTOBJE contenant m objets LISTREEL
                        la ieme liste contenant le gradient de f_i par
                        rapport aux variables x_j (au point x)
  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', 1 iteration precedente
                      (a condition que 'ITER' > 1)
                      par defaut, pris egal à 'X'
  TAB1 . 'XOLD2'    : LISTREEL (facultatif, dimension n)
                      contenant les valeurs 'X', 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)
                      coefficient dans l'equation a_0*z du probleme
                      par defaut, pris egal a 1.
  TAB1 . 'A'        : LISTREEL (facultatif, dimension m)
                      coefficients dans l'equation a_i*z du probleme
                      par defaut, pris egal a [0.  0. ..., 0.]
  TAB1 . 'C'        : LISTREEL (facultatif, dimension m)
                      coefficients dans l'equation c_i*y_i du probleme
                      par defaut, pris egal a [10000. 10000. ... 10000.]
  TAB1 . 'D'        : LISTREEL (facultatif, dimension m)
                      coefficients dans l'equation 0.5*d_i*(y_i)^2 du probleme
                      par defaut, pris egal a [1. 1. ... 1.]
  TAB1 . 'MOVE'     : FLOTTANT (facultatif)
                      taille maximale de l'increment des variables
                      par defaut, pris egal a 0.1
  TAB1 . 'ALBEFA'   : FLOTTANT (facultatif)
                      pourcentage d'ecart par rapport aux bornes
                      ALFA/BETA du sous-probleme convexe
                      par defaut, pris egal a 0.1
  TAB1 . 'RAA0'     : FLOTTANT (facultatif)
                      parametre de conservatisme/courbure de l'objectif
                      du sous probleme convexe
                      par defaut, pris egal a 0.00001
  TAB1 . 'ASYINIT'  : FLOTTANT (facultatif)
                      facteur d'initialisation des asymptotes LOW/UPP
                      du sous probleme convexe
                      par defaut, pris egal a 0.5
  TAB1 . 'ASYINCR'  : FLOTTANT (facultatif)
                      facteur d'eloignement des asymptotes LOW et UPP
                      du sous probleme convexe
                      par defaut, pris egal a 1.2
  TAB1 . 'ASYDECR'  : FLOTTANT (facultatif)
                      facteur de rapprochement des asymptotes LOW et UPP
                      du sous probleme convexe
                      par defaut, pris egal a 0.7
  TAB1 . 'ASYMIN'   : FLOTTANT (facultatif)
                      limite inferieure de la distance entre les
                      asymptotes LOW et UPP du sous probleme convexe
                      par defaut, pris egal a 0.01
  TAB1 . 'ASYMAX'   : FLOTTANT (facultatif)
                      limite superieure de la distance entre les
                      asymptotes LOW et UPP du sous probleme convexe
                      par defaut, pris egal a 10.
  TAB1 . 'EPSIMIN'  : FLOTTANT (facultatif)
                      tolerance de convergence pour la resolution du
                      sous probleme
                      par defaut, pris egal a 0.0000001



  En sortie : les indices suivants sont ecrases

  TAB1 . 'X'        : LISTREEL (dimension n)
                      valeurs optimisees des variables reeles 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 a 'X' 2 iterations precedentes
  TAB1 . 'ITER'     : ENTIER, egal a sa valeur precedente + 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 d'ecart y_i
                      associees a chaque fonction contrainte f_i
  TAB1 . 'Z'        : FLOTTANT
                      valeur optimisee de la variable d'ajustement z
  TAB1 . 'LAMBDA'   : LISTREEL (dimension m)
                      multiplicateurs de Lagrange associes aux
                      contraintes f_i
  TAB1 . 'XSI'      : LISTREEL (dimension n)
                      multiplicateurs de Lagrange associes aux
                      bornes inferieures xmin_j <= x_j
  TAB1 . 'ETA'      : LISTREEL (dimension n)
                      multiplicateurs de Lagrange associes aux
                      bornes superieures x_j <= xmax_j
  TAB1 . 'MU'       : LISTREEL (dimension m)
                      multiplicateurs de Lagrange associes aux
                      contraintes y_i >= 0
  TAB1 . 'ZET'      : FLOTTANT
                      multiplicateur de Lagrange associes a la
                      contrainte z>= 0
  TAB1 . 'S'        : LISTREEL (dimension m)
                      variables d'ecart associees aux contraintes 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 ≤ f_0(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
   ce qui correspond aux valeurs par defaut de ces coefficients.


     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