Télécharger mma.notice

Retour à la liste thématique

Afficher cette notice en

Numérotation des lignes :
   1 : $$$$ MMA      NOTICE  FD218221  26/03/05    21:15:02     12483          
   2 :                                              DATE     26/03/05
   3 : 
   4 :   Operateur MMA                    Voir aussi : EXCE LEVM MOCA
   5 :      _____________                                 AJUSTE TOPOPTIM  
   6 : 
   7 :   L'operateur MMA met en oeuvre la methode des asymptotes mobiles,
   8 :   "Method of Moving Asymptotes", pour resoudre un probleme d'optimisation
   9 :   sous la forme decrite ci-dessous.
  10 : 
  11 :   Les variables sont :
  12 :   x = [x_1 ... x_n]^T vecteur  dans R^n
  13 :   y = [y_1 ... y_m]^T vecteur  dans R^m
  14 :   z                   scalaire dans R
  15 : 
  16 :   Le probleme "generique" est :
  17 : 
  18 :       Minimiser : f_0(x) + a_0*z  +   Somme  [ c_i*y_i + 0.5*d_i*(y_i)^2 ]
  19 :       sur x,y,z                     i=1,...,m
  20 : 
  21 :        soumis a : f_i(x) - a_i*z - y_i <= 0  pour i = 1,...,m (nombre de contraintes)
  22 :                   xmin_j <= x_j <= xmax_j    pour j = 1,...,n (nombre de variables)
  23 :                   z >= 0    y_i >= 0         pour i = 1,...,m
  24 : 
  25 : 
  26 :   Cette formulation "generique" permet de traiter, dans le meme cadre,
  27 :   plusieurs problemes "classiques" d'optimisation, comme par exemple :
  28 :    
  29 :   - un probleme "standard" de minimisation d'une fonction sous contraintes :
  30 :         Minimiser : f_0(x)
  31 :          soumis a : f_i(x) <= 0  pour i = 1,...,m
  32 : 
  33 :   - un probleme "min-max" (minimiser la plus grande d'un groupe de fonctions) :
  34 :         Minimiser : Max{h_i(x)}  pour i = 1,...,p
  35 :          soumis a : g_i(x) <= 0  pour i = 1,...,q (nombre de contraintes)
  36 : 
  37 :   - un probleme des "moindres carres" sous la forme :
  38 :         Minimiser : 0.5 * Somme  [ (h_i(x))^2 ]
  39 :                         i=1,...,p
  40 :          soumis a : g_i(x) <= 0  pour i = 1,...,q (nombre de contraintes)
  41 : 
  42 :   Plus d'informations sont disponibles dans la section "Remarques".
  43 : 
  44 : 
  45 : 
  46 :      Syntaxe :
  47 :      ---------
  48 : 
  49 :      MMA TAB1 ;
  50 : 
  51 : 
  52 : 
  53 :      Objet :
  54 :      -------
  55 : 
  56 :   L'operateur permet d'effectuer une iteration d'optimisation par la MMA
  57 :   a partir de la donnee de :
  58 :   -- un point de depart x
  59 :   -- l'evaluation de la fonction f_0(x) et des fonctions f_i(x)
  60 :   -- l'evaluation de leurs gradients :
  61 :      -- gadients de f_0, par rapport a toutes les variables x_j, en x
  62 :      -- gradients des f_i, par rapport a toutes les variables x_j, en x
  63 : 
  64 :   La nouvelle variable optimisiee x' est rendue et peut alors servir a :
  65 :   -- evaluer a nouveau les fonctions et leurs gradients en x'
  66 :   -- effectuer une nouvelle iteration de MMA
  67 :   -- evaluer un critere de convergence global
  68 :   -- etc...
  69 : 
  70 :   Exemples d'utilisation :
  71 :   -- problemes simples a peu de variables                 : mma_**.dgibi
  72 :   -- probleme de grande taille (optimisation topologique) : top_mma.dgibi
  73 : 
  74 : 
  75 : 
  76 :      Arguments :
  77 :      -----------
  78 : 
  79 :   En entree :
  80 : 
  81 :   TAB1              : TABLE contenant les donnees du probleme d'optimisation
  82 : 
  83 :   TAB1 . 'X'        : LISTREEL (dimension n)
  84 :                       valeurs de depart des variables x_j
  85 : 
  86 :   TAB1 . 'XMIN'     : LISTREEL (dimension n) ou FLOTTANT
  87 :                       bornes inferieures des x_j
  88 :                       si un FLOTTANT est donne, la meme borne est imposee pour tous les x_j
  89 : 
  90 :   TAB1 . 'XMAX'     : LISTREEL (dimension n) ou FLOTTANT
  91 :                       bornes superieures des x_j
  92 :                       si un FLOTTANT est donne, la meme borne est imposee pour tous les x_j
  93 : 
  94 :   TAB1 . 'F0VAL'    : FLOTTANT
  95 :                       valeur de la fonction objectif f_0 (au point xval)
  96 : 
  97 :   TAB1 . 'DF0DX'    : LISTREEL (dimension n)
  98 :                       gradient de f_0 par rapport au variables x_j (au point xval)
  99 : 
 100 :   TAB1 . 'FVAL'     : LISTREEL (dimension m)
 101 :                       valeurs des fonctions contraintes f_i (au point xval)
 102 : 
 103 :   TAB1 . 'DFDX'     : TABLE contenant les valeurs des gradients des fonctions contraintes f_i
 104 :                       cette table doit contenir m indices de type ENTIER :
 105 :   TAB1 . 'DFDX' . 1 : LISTREEL (dimension n), gradient de f_1 par rapport au variables x_j (au point xval)
 106 :                 ...
 107 :                 ...
 108 :   TAB1 . 'DFDX' . m : LISTREEL (dimension n), gradient de f_m par rapport au variables x_j (au point xval)
 109 : 
 110 :   TAB1 . 'ITER'     : ENTIER (facultatif), numero de l'iteration courante ( = 1 au premier appel a MMA)
 111 :                       par defaut, pris egal a 1
 112 : 
 113 :   TAB1 . 'XOLD1'    : LISTREEL (facultatif, dimension n)
 114 :                       contenant les valeurs 'X' a 1 iteration precedente (a condition que 'ITER' > 1)
 115 :                       par defaut, pris egal à 'X'
 116 : 
 117 :   TAB1 . 'XOLD2'    : LISTREEL (facultatif, dimension n)
 118 :                       contenant les valeurs 'X' a 2 iterations precedentes (a condition que 'ITER' > 2)
 119 :                       par defaut, pris egal à 'XOLD1'
 120 : 
 121 :   TAB1 . 'LOW'      : LISTREEL (facultatif, dimension n)
 122 :                       valeurs des asymptotes inferieures a l'iteration precedente (a condition que 'ITER' > 1)
 123 :                       par defaut, pris egale a 'XMIN'
 124 : 
 125 :   TAB1 . 'UPP'      : LISTREEL (facultatif, dimension n)
 126 :                       valeurs des asymptotes superieures a l'iteration precedente (a condition que 'ITER' > 1)
 127 :                       par defaut, pris egale a 'XMAX'
 128 : 
 129 :   TAB1 . 'A0'       : FLOTTANT (facultatif)
 130 :                       constante dans l'equation a_0*z du probleme (2)
 131 :                       par defaut, pris egal a 1
 132 : 
 133 :   TAB1 . 'A'        : LISTREEL (facultatif, dimension m)
 134 :                       coefficients dans l'equation a_i*z du probleme (2)
 135 :                       par defaut, pris egal a 0.  0. ..., 0.
 136 : 
 137 :   TAB1 . 'C'        : LISTREEL (facultatif, dimension m)
 138 :                       coefficients dans l'equation c_i*y_i du probleme (2)
 139 :                       par defaut, pris egal a 10000. 10000. ... 10000.
 140 : 
 141 :   TAB1 . 'D'        : LISTREEL (facultatif, dimension m)
 142 :                       coefficients dans le terme quadratique 0.5*d_i*(y_i)^2 du probleme (2)
 143 :                       par defaut, pris egal a 1. 1. ... 1.
 144 : 
 145 :   TAB1 . 'MOVE'     : FLOTTANT (facultatif)
 146 :                       parametre pour la mise a jour des asymptotes
 147 :                       par defaut, pris egal a 0.1
 148 : 
 149 : 
 150 :   En sortie :
 151 : 
 152 :   TAB1 . 'X'        : LISTREEL (dimension n)
 153 :                       valeurs optimisees des variables x_j
 154 :                       les valeurs precedentes sont deplacees dans l'indice 'XOLD1'
 155 : 
 156 :   TAB1 . 'XOLD1'    : LISTREEL (dimension n)
 157 :                       valeurs de 'X' 1 iteration precedente
 158 :                       les valeurs precedentes sont deplacees dans l'indice 'XOLD2'
 159 : 
 160 :   TAB1 . 'XOLD2'    : LISTREEL (dimension n)
 161 :                       valeurs de 'XOLD1' 1 iteration precedente,
 162 :                       correspond aussi aux valeurs de 'X' 2 iterations precedentes
 163 : 
 164 :   TAB1 . 'ITER'     : ENTIER, egal a sa valeur precedente incrementee de 1
 165 : 
 166 :   TAB1 . 'LOW'      : LISTREEL (dimension n)
 167 :                       valeurs des asymptotes inferieures mises a jour
 168 : 
 169 :   TAB1 . 'UPP'      : LISTREEL (dimension n)
 170 :                       valeurs des asymptotes superieures mises a jour
 171 : 
 172 :   TAB1 . 'Y'        : LISTREEL (dimension m)
 173 :                       valeurs optimisees des variables y_i
 174 : 
 175 :   TAB1 . 'Z'        : FLOTTANT
 176 :                       valeur optimisee de la variable z
 177 : 
 178 :   TAB1 . 'LAMBDA'   : LISTREEL (dimension m)
 179 :                       multiplicateurs de Lagrange pour les contraintes generales f_i
 180 : 
 181 :   TAB1 . 'XSI'      : LISTREEL (dimension n)
 182 :                       multiplicateurs de Lagrange pour les bornes inferieures des x_j
 183 : 
 184 :   TAB1 . 'ETA'      : LISTREEL (dimension n)
 185 :                       multiplicateurs de Lagrange pour les bornes superieures des x_j
 186 : 
 187 :   TAB1 . 'MU'       : LISTREEL (dimension m)
 188 :                       multiplicateurs de Lagrange pour les contraintes de non negativite des y_i
 189 : 
 190 :   TAB1 . 'ZET'      : FLOTTANT
 191 :                       multiplicateur de Lagrange pour la contrainte de non negativite de z
 192 : 
 193 :   TAB1 . 'S'        : LISTREEL (dimension m)
 194 :                       variables d'ecart pour les contraintes generales f_i
 195 : 
 196 : 
 197 : 
 198 :      Remarques :
 199 :      -----------
 200 : 
 201 :   Ces remarques sont issues de la section "Some practical consideration" de l'artice de K. Svanberg.
 202 :   Il s'agit de recommandations pour le choix des fonctions contraintes, leur mise a l'echelle
 203 :   et des parametres de l'optimisation.
 204 : 
 205 :   - Les contraintes f_i(x) <= 0 sont generalement ecritent sous la forme g_i(x) <= gmax_i
 206 :     ce qui correspond a f_i(x) = g_i(x) - gmax_i
 207 :     il est recommande de mettre a l'echelle les fonctions de sorte que 1 ≤ gmax_i ≤ 100
 208 :   - Il est recommande de mettre a l'echelle la fonction objectif de sorte que 1 ≤ f0(x) ≤ 100
 209 :   - Il est recommande de mettre a l'echelle les variables x_j de sorte que 0.1 ≤ xmax_j - xmin_j ≤ 100
 210 : 
 211 :   Pour rendre le probleme "generique" (quasiment) equivalent au probleme "standard",
 212 :   il faut choisir :
 213 :      a_0 = 1
 214 :      a_i = 0                 pour i = 1,...,m
 215 :      c_i = "un grand nombre" pour i = 1,...,m
 216 :      d_i = 1                 pour i = 1,...,m
 217 : 
 218 : 
 219 : 
 220 :      Pour plus d'informations :
 221 :      --------------------------
 222 : 
 223 :   Code original de K. Svanberg (en Matlab) : https://www.smoptit.se/
 224 : 
 225 :   Details de fonctionnement et d'implementation de la methode :
 226 :   https://people.kth.se/~krille/mmagcmma.pdf
 227 : 
 228 :   References :
 229 :   [1] K. Svanberg, The method of moving asymptotes – a new method for structural optimization
 230 :       International Journal for Numerical Methods in Engineering, 1987, 24, 359-373.
 231 :   [2] K. Svanberg, A class of globally convergent optimization methods based on conservative
 232 :       convex separable approximations
 233 :       SIAM Journal of Optimization, 2002, 12, 555-573.
 234 : 
 235 : 
 236 : 

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