Télécharger mma.notice

Retour à la liste thématique

Afficher cette notice en

Numérotation des lignes :
   1 : $$$$ MMA      NOTICE  FD218221  26/10/07    21:15:08     12662          
   2 :                                              DATE     26/10/07
   3 : 
   4 :   Operateur MMA               Voir aussi : EXCE LEVM MOCA TOPOPTIM
   5 :      _____________                            MOCA_MMA AJUSTE  
   6 : 
   7 : 
   8 : 
   9 : 
  10 :   L'operateur MMA met en oeuvre la methode des asymptotes mobiles,
  11 :   "Method of Moving Asymptotes", pour resoudre un probleme d'optimisation
  12 :   non lineaire par approximation convexe [1] [2].
  13 : 
  14 :   Les variables sont :
  15 :   x = [x_1 ... x_n]  (dimension n) variables reeles
  16 :   y = [y_1 ... y_m]  (dimension m) variables artificielles d'ecart
  17 :   z                                variable  artificielle  d'ajustement
  18 : 
  19 :   Le probleme "generique" est :
  20 : 
  21 :       Minimiser : f_0(x) + a_0*z + Somme [ c_i*y_i + 0.5*d_i*(y_i)^2 ] (fonction objectif)
  22 :       sur x,y,z                   i=1,...,m
  23 : 
  24 :        soumis a : f_i(x) - a_i*z - y_i <= 0  pour i = 1,...,m (fonctions contraintes)
  25 :                   xmin_j <= x_j <= xmax_j    pour j = 1,...,n (bornes des variables)
  26 :                   z >= 0    y_i >= 0         pour i = 1,...,m
  27 : 
  28 : 
  29 :   Cette formulation generique permet de traiter, dans le meme cadre,
  30 :   plusieurs problemes "classiques" d'optimisation, comme par exemple :
  31 :    
  32 :   - un probleme "standard" de minimisation sous contraintes :
  33 :         Minimiser : f_0(x)
  34 :          soumis a : f_i(x) <= 0  pour i = 1,...,m
  35 : 
  36 :   - un probleme "min-max" sur un groupe de fonctions :
  37 :         Minimiser : Max{h_i(x)}  pour i = 1,...,p
  38 :          soumis a : g_i(x) <= 0  pour i = 1,...,q
  39 : 
  40 :   - un probleme des "moindres carres" sous la forme :
  41 :         Minimiser : 0.5 * Somme  [ (h_i(x))^2 ]
  42 :                         i=1,...,p
  43 :          soumis a : g_i(x) <= 0  pour i = 1,...,q
  44 : 
  45 :   Plus d'informations sont disponibles dans la section "Remarques".
  46 : 
  47 : 
  48 : 
  49 :      Syntaxe :
  50 :      ---------
  51 : 
  52 :      MMA TAB1 ;
  53 : 
  54 : 
  55 : 
  56 :      Objet :
  57 :      -------
  58 : 
  59 :   L'operateur permet d'effectuer une iteration d'optimisation par la MMA
  60 :   a partir de la donnee de :
  61 :   -- un point de depart x
  62 :   -- l'evaluation de la fonction f_0(x) et des fonctions f_i(x)
  63 :   -- l'evaluation de leurs gradients :
  64 :      -- gadients de f_0, par rapport a toutes les variables x_j, en x
  65 :      -- gradients des f_i, par rapport a toutes les variables x_j, en x
  66 : 
  67 :   La nouvelle variable optimisiee x' est rendue et peut alors servir a :
  68 :   -- evaluer a nouveau les fonctions et leurs gradients en x'
  69 :   -- effectuer une nouvelle iteration de MMA
  70 :   -- evaluer un critere de convergence global
  71 :   -- etc...
  72 : 
  73 :   Exemples d'utilisation :
  74 :   -- petite taille (peu de variables)         :   mma_**.dgibi
  75 :                                                 gcmma_**.dgibi
  76 :   -- grande taille (optimisation topologique) : top_mma.dgibi
  77 : 
  78 : 
  79 : 
  80 :      Arguments d'entree (obligatoires) :
  81 :      -----------------------------------
  82 : 
  83 :   TAB1              : TABLE contenant les donnees du probleme
  84 :                       d'optimisation
  85 : 
  86 :   TAB1 . 'X'        : LISTREEL (dimension n)
  87 :                       valeurs de depart des variables x_j
  88 :   TAB1 . 'XMIN'     : LISTREEL (dimension n) ou FLOTTANT
  89 :                       bornes inferieures des x_j
  90 :                       si un FLOTTANT est donne, la meme borne
  91 :                       est imposee pour tous les x_j
  92 :   TAB1 . 'XMAX'     : LISTREEL (dimension n) ou FLOTTANT
  93 :                       bornes superieures des x_j
  94 :                       si un FLOTTANT est donne, la meme borne
  95 :                       est imposee pour tous les x_j
  96 :   TAB1 . 'F0VAL'    : FLOTTANT
  97 :                       valeur de la fonction objectif f_0 (au point x)
  98 :   TAB1 . 'DF0DX'    : LISTREEL (dimension n)
  99 :                       gradient de f_0 par rapport au variables x_j
 100 :                       (au point x)
 101 :   TAB1 . 'FVAL'     : LISTREEL (dimension m)
 102 :                       valeurs des fonctions contraintes f_i
 103 :                       (au point x)
 104 :   TAB1 . 'DFDX'     : gradients des fonctions contraintes f_i,
 105 :                       2 types possibles, TABLE ou LISTOBJE :
 106 :                       - TABLE contenant m indices ENTIER :
 107 :                         . 1 : LISTREEL (dimension n), gradient de f_1
 108 :                                par rapport au variables x_j (au point x)
 109 :                          ...
 110 :                          ...
 111 :                         . m : LISTREEL (dimension n), gradient de f_m
 112 :                                par rapport au variables x_j (au point x)
 113 :                       - LISTOBJE contenant m objets LISTREEL de dimension n.
 114 :                         La ieme liste contenant le gradient de f_i par
 115 :                         rapport aux variables x_j (au point x)
 116 : 
 117 : 
 118 : 
 119 :      Arguments d'entree (facultatifs) :
 120 :      ----------------------------------
 121 : 
 122 :   TAB1 . 'ITER'     : ENTIER (facultatif), numero de l'iteration
 123 :                       courante ( = 1 au premier appel a MMA)
 124 :                       par defaut, pris egal a 1
 125 :   TAB1 . 'XOLD1'    : LISTREEL (facultatif, dimension n)
 126 :                       contenant les valeurs 'X', 1 iteration precedente
 127 :                       (a condition que 'ITER' > 1)
 128 :                       par defaut, pris egal à 'X'
 129 :   TAB1 . 'XOLD2'    : LISTREEL (facultatif, dimension n)
 130 :                       contenant les valeurs 'X', 2 iterations precedentes
 131 :                       (a condition que 'ITER' > 2)
 132 :                       par defaut, pris egal à 'XOLD1'
 133 :   TAB1 . 'LOW'      : LISTREEL (facultatif, dimension n)
 134 :                       valeurs des asymptotes inferieures a l'iteration
 135 :                       precedente (a condition que 'ITER' > 1)
 136 :                       par defaut, pris egale a 'XMIN'
 137 :   TAB1 . 'UPP'      : LISTREEL (facultatif, dimension n)
 138 :                       valeurs des asymptotes superieures a l'iteration
 139 :                       precedente (a condition que 'ITER' > 1)
 140 :                       par defaut, pris egale a 'XMAX'
 141 :   TAB1 . 'A0'       : FLOTTANT (facultatif)
 142 :                       coefficient dans l'equation a_0*z du probleme
 143 :                       par defaut, pris egal a 1.
 144 :   TAB1 . 'A'        : LISTREEL (facultatif, dimension m) ou FLOTTANT
 145 :                       coefficients dans l'equation a_i*z du probleme
 146 :                       par defaut, pris egal a [0.  0. ..., 0.]
 147 :                       si un FLOTTANT est donne, le meme coefficient
 148 :                       est impose pour tous les a_i
 149 :   TAB1 . 'C'        : LISTREEL (facultatif, dimension m) ou FLOTTANT
 150 :                       coefficients dans l'equation c_i*y_i du probleme
 151 :                       par defaut, pris egal a [10000. 10000. ... 10000.]
 152 :                       si un FLOTTANT est donne, le meme coefficient
 153 :                       est impose pour tous les c_i
 154 :   TAB1 . 'D'        : LISTREEL (facultatif, dimension m) ou FLOTTANT
 155 :                       coefficients dans l'equation 0.5*d_i*(y_i)^2 du probleme
 156 :                       par defaut, pris egal a [1. 1. ... 1.]
 157 :                       si un FLOTTANT est donne, le meme coefficient
 158 :                       est impose pour tous les d_i
 159 :   TAB1 . 'MOVE'     : FLOTTANT (facultatif)
 160 :                       taille maximale de l'increment des variables
 161 :                       par defaut, pris egal a 0.1
 162 :   TAB1 . 'ALBEFA'   : FLOTTANT (facultatif)
 163 :                       pourcentage d'ecart par rapport aux bornes
 164 :                       ALFA/BETA du sous-probleme convexe
 165 :                       par defaut, pris egal a 0.1
 166 :   TAB1 . 'RAA0'     : FLOTTANT (facultatif)
 167 :                       parametre de conservatisme/courbure de l'objectif
 168 :                       du sous probleme convexe
 169 :                       par defaut, pris egal a 0.00001
 170 :   TAB1 . 'ASYINIT'  : FLOTTANT (facultatif)
 171 :                       facteur d'initialisation des asymptotes LOW/UPP
 172 :                       du sous probleme convexe
 173 :                       par defaut, pris egal a 0.5
 174 :   TAB1 . 'ASYINCR'  : FLOTTANT (facultatif)
 175 :                       facteur d'eloignement des asymptotes LOW et UPP
 176 :                       du sous probleme convexe
 177 :                       par defaut, pris egal a 1.2
 178 :   TAB1 . 'ASYDECR'  : FLOTTANT (facultatif)
 179 :                       facteur de rapprochement des asymptotes LOW et UPP
 180 :                       du sous probleme convexe
 181 :                       par defaut, pris egal a 0.7
 182 :   TAB1 . 'ASYMIN'   : FLOTTANT (facultatif)
 183 :                       limite inferieure de la distance entre les
 184 :                       asymptotes LOW et UPP du sous probleme convexe
 185 :                       par defaut, pris egal a 0.01
 186 :   TAB1 . 'ASYMAX'   : FLOTTANT (facultatif)
 187 :                       limite superieure de la distance entre les
 188 :                       asymptotes LOW et UPP du sous probleme convexe
 189 :                       par defaut, pris egal a 10.
 190 :   TAB1 . 'EPSIMIN'  : FLOTTANT (facultatif)
 191 :                       tolerance de convergence pour la resolution du
 192 :                       sous probleme
 193 :                       par defaut, pris egal a 0.0000001
 194 : 
 195 : 
 196 : 
 197 :      Arguments d'entree pour la GC-MMA (facultatifs) :
 198 :      -------------------------------------------------
 199 : 
 200 :   TAB1 . 'GC'       : LOGIQUE (facultatif), egal a VRAI pour utiliser la
 201 :                       GC-MMA, version "Globalement Convergente" [2].
 202 :                       par defaut, pris egal a FAUX
 203 :   TAB1 . 'RAA'      : LISTREEL (facultatif, dimension m), parametres de
 204 :                       conservatisme/courbure des contraintes du sous
 205 :                       probleme convexe
 206 :                       par defaut, pris egal a [0.00001 0.00001 ... 0.00001]
 207 : 
 208 : 
 209 : 
 210 :      Arguments de sortie (les indices suivants sont ecrases) :
 211 :      ---------------------------------------------------------
 212 : 
 213 :   TAB1 . 'X'        : LISTREEL (dimension n)
 214 :                       valeurs optimisees des variables reeles x_j
 215 :                       les valeurs precedentes sont deplacees dans
 216 :                       l'indice 'XOLD1'
 217 :   TAB1 . 'XOLD1'    : LISTREEL (dimension n)
 218 :                       valeurs de 'X' 1 iteration precedente
 219 :                       les valeurs precedentes sont deplacees dans
 220 :                       l'indice 'XOLD2'
 221 :   TAB1 . 'XOLD2'    : LISTREEL (dimension n)
 222 :                       valeurs de 'XOLD1' 1 iteration precedente,
 223 :                       correspond a 'X' 2 iterations precedentes
 224 :   TAB1 . 'ITER'     : ENTIER, egal a sa valeur precedente + 1
 225 :   TAB1 . 'LOW'      : LISTREEL (dimension n)
 226 :                       valeurs des asymptotes inferieures mises a jour
 227 :   TAB1 . 'UPP'      : LISTREEL (dimension n)
 228 :                       valeurs des asymptotes superieures mises a jour
 229 :   TAB1 . 'Y'        : LISTREEL (dimension m)
 230 :                       valeurs optimisees des variables d'ecart y_i
 231 :                       associees a chaque fonction contrainte f_i
 232 :   TAB1 . 'Z'        : FLOTTANT
 233 :                       valeur optimisee de la variable d'ajustement z
 234 :   TAB1 . 'LAMBDA'   : LISTREEL (dimension m)
 235 :                       multiplicateurs de Lagrange associes aux
 236 :                       contraintes f_i
 237 :   TAB1 . 'XSI'      : LISTREEL (dimension n)
 238 :                       multiplicateurs de Lagrange associes aux
 239 :                       bornes inferieures xmin_j <= x_j
 240 :   TAB1 . 'ETA'      : LISTREEL (dimension n)
 241 :                       multiplicateurs de Lagrange associes aux
 242 :                       bornes superieures x_j <= xmax_j
 243 :   TAB1 . 'MU'       : LISTREEL (dimension m)
 244 :                       multiplicateurs de Lagrange associes aux
 245 :                       contraintes y_i >= 0
 246 :   TAB1 . 'ZET'      : FLOTTANT
 247 :                       multiplicateur de Lagrange associes a la
 248 :                       contrainte z>= 0
 249 :   TAB1 . 'S'        : LISTREEL (dimension m)
 250 :                       variables d'ecart associees aux contraintes f_i
 251 : 
 252 : 
 253 : 
 254 :      Arguments de sortie pour la GC-MMA :
 255 :      ------------------------------------
 256 : 
 257 :   TAB1 . 'CONSERV'  : LOGIQUE indiquant si le sous probleme resolu a la derniere
 258 :                       sous iteration est conservatif
 259 :   TAB1 . 'RAA0'     : FLOTTANT, valeur mise a jour du parametre de
 260 :                       conservatisme/courbure de l'objectif du sous probleme convexe
 261 :   TAB1 . 'RAA'      : LISTREEL (dimension m), valeurs mises a jour des parametres de
 262 :                       conservatisme/courbure des contraintes du sous probleme convexe
 263 :   TAB1 . 'WTABLE'   : TABLE des resultats de la derniere sous iteration,
 264 :                       tant que le sous probleme n'est pas conservatif
 265 :   TAB1 . 'WTABLE' . 'ITER'   : ENTIER numero de la derniere sous iteration
 266 :   TAB1 . 'WTABLE' . 'RAA0'   : FLOTTANT valeur de RAA0 utilise a la derniere sous iteration
 267 :   TAB1 . 'WTABLE' . 'RAA'    : LISTREEL valeurs de RAA utilisees a la derniere sous iteration
 268 :   TAB1 . 'WTABLE' . 'F0APP'  : FLOTTANT valeur  approximee  de la fonction objectif
 269 :   TAB1 . 'WTABLE' . 'FAPP'   : LISTREEL valeurs approximees des fonctions contraintes
 270 :   TAB1 . 'WTABLE' . 'X'      : LISTREEL valeurs de X a la derniere sous iteration
 271 :   TAB1 . 'WTABLE' . 'Y'      : LISTREEL valeurs de Y a la derniere sous iteration
 272 :   TAB1 . 'WTABLE' . 'Z'      : FLOTTANT valeur  de Z a la derniere sous iteration
 273 :   TAB1 . 'WTABLE' . 'LAMBDA' : LISTREEL valeurs de LAMBDA a la derniere sous iteration
 274 :   TAB1 . 'WTABLE' . 'XSI'    : LISTREEL valeurs de XSI a la derniere sous iteration
 275 :   TAB1 . 'WTABLE' . 'ETA'    : LISTREEL valeurs de ETA a la derniere sous iteration
 276 :   TAB1 . 'WTABLE' . 'MU'     : LISTREEL valeurs de MU a la derniere sous iteration
 277 :   TAB1 . 'WTABLE' . 'ZET'    : FLOTTANT valeur  de ZET a la derniere sous iteration
 278 :   TAB1 . 'WTABLE' . 'S'      : LISTREEL valeurs de S a la derniere sous iteration
 279 : 
 280 : 
 281 : 
 282 :      Remarques :
 283 :      -----------
 284 : 
 285 :   Ces remarques sont issues de la section "Some practical consideration"
 286 :   de l'artice de K. Svanberg.
 287 :   Il s'agit de recommandations pour le choix des fonctions contraintes,
 288 :   leur mise a l'echelle et des parametres de l'optimisation.
 289 : 
 290 :   - Les contraintes f_i(x) <= 0 sont generalement ecritent sous la forme
 291 :     g_i(x) <= gmax_i   ce qui correspond a f_i(x) = g_i(x) - gmax_i
 292 :     il est recommande de mettre a l'echelle les fonctions de sorte que
 293 :     1 ≤ gmax_i ≤ 100
 294 :   - Il est recommande de mettre a l'echelle la fonction objectif
 295 :     de sorte que 1 ≤ f_0(x) ≤ 100
 296 :   - Il est recommande de mettre a l'echelle les variables x_j de sorte
 297 :     que 0.1 ≤ xmax_j - xmin_j ≤ 100
 298 : 
 299 :   Pour rendre le probleme "generique" (quasiment) equivalent au probleme
 300 :   "standard", il faut choisir :
 301 :      a_0 = 1
 302 :      a_i = 0                 pour i = 1,...,m
 303 :      c_i = "un grand nombre" pour i = 1,...,m
 304 :      d_i = 1                 pour i = 1,...,m
 305 :    ce qui correspond aux valeurs par defaut de ces coefficients.
 306 : 
 307 : 
 308 :      Pour plus d'informations :
 309 :      --------------------------
 310 : 
 311 :   Code original de K. Svanberg (en Matlab) : https://www.smoptit.se/
 312 : 
 313 :   Details de fonctionnement et d'implementation de la methode :
 314 :   https://people.kth.se/~krille/mmagcmma.pdf
 315 : 
 316 : 
 317 :   References:
 318 :   [1] K. Svanberg, The method of moving asymptotes – a new method for
 319 :       structural optimization
 320 :       International Journal for Numerical Methods in Engineering,
 321 :       1987, 24, 359-373.
 322 :   [2] K. Svanberg, A class of globally convergent optimization methods
 323 :       based on conservative convex separable approximations
 324 :       SIAM Journal of Optimization, 2002, 12, 555-573.
 325 : 
 326 : $$$$
 327 :  
 328 :  

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