Télécharger mma.notice

Retour à la liste thématique

Afficher cette notice en

Numérotation des lignes :
   1 : $$$$ MMA      NOTICE  FD218221  25/09/02    21:15:06     12346          
   2 :                                              DATE     25/09/02
   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 :     sur des problemes "simples" (peu de variables) :
  72 :     mma_00.dgibi mma_01.dgibi mma_02.dgibi mma_04.dgibi
  73 : 
  74 :     sur un probleme de plus grande taille :
  75 :     top_mma.dgibi
  76 : 
  77 : 
  78 : 
  79 :      Arguments :
  80 :      -----------
  81 : 
  82 :   En entree :
  83 : 
  84 :   TAB1              : TABLE contenant les donnees du probleme d'optimisation
  85 : 
  86 :   TAB1 . 'X'        : LISTREEL (dimension n)
  87 :                       valeurs de depart des variables x_j
  88 : 
  89 :   TAB1 . 'XMIN'     : LISTREEL (dimension n) ou FLOTTANT
  90 :                       bornes inferieures des x_j
  91 :                       si un FLOTTANT est donne, la meme borne est imposee pour tous les x_j
  92 : 
  93 :   TAB1 . 'XMAX'     : LISTREEL (dimension n) ou FLOTTANT
  94 :                       bornes superieures des x_j
  95 :                       si un FLOTTANT est donne, la meme borne est imposee pour tous les x_j
  96 : 
  97 :   TAB1 . 'F0VAL'    : FLOTTANT
  98 :                       valeur de la fonction objectif f_0 (au point xval)
  99 : 
 100 :   TAB1 . 'DF0DX'    : LISTREEL (dimension n)
 101 :                       gradient de f_0 par rapport au variables x_j (au point xval)
 102 : 
 103 :   TAB1 . 'FVAL'     : LISTREEL (dimension m)
 104 :                       valeurs des fonctions contraintes f_i (au point xval)
 105 : 
 106 :   TAB1 . 'DFDX'     : TABLE contenant les valeurs des gradients des fonctions contraintes f_i
 107 :                       cette table doit contenir m indices de type ENTIER :
 108 :   TAB1 . 'DFDX' . 1 : LISTREEL (dimension n), gradient de f_1 par rapport au variables x_j (au point xval)
 109 :                 ...
 110 :                 ...
 111 :   TAB1 . 'DFDX' . m : LISTREEL (dimension n), gradient de f_m par rapport au variables x_j (au point xval)
 112 : 
 113 :   TAB1 . 'ITER'     : ENTIER (facultatif), numero de l'iteration courante ( = 1 au premier appel a MMA)
 114 :                       par defaut, pris egal a 1
 115 : 
 116 :   TAB1 . 'XOLD1'    : LISTREEL (facultatif, dimension n)
 117 :                       contenant les valeurs 'X' a 1 iteration precedente (a condition que 'ITER' > 1)
 118 :                       par defaut, pris egal à 'X'
 119 : 
 120 :   TAB1 . 'XOLD2'    : LISTREEL (facultatif, dimension n)
 121 :                       contenant les valeurs 'X' a 2 iterations precedentes (a condition que 'ITER' > 2)
 122 :                       par defaut, pris egal à 'XOLD1'
 123 : 
 124 :   TAB1 . 'LOW'      : LISTREEL (facultatif, dimension n)
 125 :                       valeurs des asymptotes inferieures a l'iteration precedente (a condition que 'ITER' > 1)
 126 :                       par defaut, pris egale a 'XMIN'
 127 : 
 128 :   TAB1 . 'UPP'      : LISTREEL (facultatif, dimension n)
 129 :                       valeurs des asymptotes superieures a l'iteration precedente (a condition que 'ITER' > 1)
 130 :                       par defaut, pris egale a 'XMAX'
 131 : 
 132 :   TAB1 . 'A0'       : FLOTTANT (facultatif)
 133 :                       constante dans l'equation a_0*z du probleme (2)
 134 :                       par defaut, pris egal a 1
 135 : 
 136 :   TAB1 . 'A'        : LISTREEL (facultatif, dimension m)
 137 :                       coefficients dans l'equation a_i*z du probleme (2)
 138 :                       par defaut, pris egal a 0.  0. ..., 0.
 139 : 
 140 :   TAB1 . 'C'        : LISTREEL (facultatif, dimension m)
 141 :                       coefficients dans l'equation c_i*y_i du probleme (2)
 142 :                       par defaut, pris egal a 10000. 10000. ... 10000.
 143 : 
 144 :   TAB1 . 'D'        : LISTREEL (facultatif, dimension m)
 145 :                       coefficients dans le terme quadratique 0.5*d_i*(y_i)^2 du probleme (2)
 146 :                       par defaut, pris egal a 1. 1. ... 1.
 147 : 
 148 :   TAB1 . 'MOVE'     : FLOTTANT (facultatif)
 149 :                       parametre pour la mise a jour des asymptotes
 150 :                       par defaut, pris egal a 0.1
 151 : 
 152 : 
 153 :   En sortie :
 154 : 
 155 :   TAB1 . 'X'        : LISTREEL (dimension n)
 156 :                       valeurs optimisees des variables x_j
 157 :                       les valeurs precedentes sont deplacees dans l'indice 'XOLD1'
 158 : 
 159 :   TAB1 . 'XOLD1'    : LISTREEL (dimension n)
 160 :                       valeurs de 'X' 1 iteration precedente
 161 :                       les valeurs precedentes sont deplacees dans l'indice 'XOLD2'
 162 : 
 163 :   TAB1 . 'XOLD2'    : LISTREEL (dimension n)
 164 :                       valeurs de 'XOLD1' 1 iteration precedente,
 165 :                       correspond aussi aux valeurs de 'X' 2 iterations precedentes
 166 : 
 167 :   TAB1 . 'ITER'     : ENTIER, egal a sa valeur precedente incrementee de 1
 168 : 
 169 :   TAB1 . 'LOW'      : LISTREEL (dimension n)
 170 :                       valeurs des asymptotes inferieures mises a jour
 171 : 
 172 :   TAB1 . 'UPP'      : LISTREEL (dimension n)
 173 :                       valeurs des asymptotes superieures mises a jour
 174 : 
 175 :   TAB1 . 'Y'        : LISTREEL (dimension m)
 176 :                       valeurs optimisees des variables y_i
 177 : 
 178 :   TAB1 . 'Z'        : FLOTTANT
 179 :                       valeur optimisee de la variable z
 180 : 
 181 :   TAB1 . 'LAMBDA'   : LISTREEL (dimension m)
 182 :                       multiplicateurs de Lagrange pour les contraintes generales f_i
 183 : 
 184 :   TAB1 . 'XSI'      : LISTREEL (dimension n)
 185 :                       multiplicateurs de Lagrange pour les bornes inferieures des x_j
 186 : 
 187 :   TAB1 . 'ETA'      : LISTREEL (dimension n)
 188 :                       multiplicateurs de Lagrange pour les bornes superieures des x_j
 189 : 
 190 :   TAB1 . 'MU'       : LISTREEL (dimension m)
 191 :                       multiplicateurs de Lagrange pour les contraintes de non negativite des y_i
 192 : 
 193 :   TAB1 . 'ZET'      : FLOTTANT
 194 :                       multiplicateur de Lagrange pour la contrainte de non negativite de z
 195 : 
 196 :   TAB1 . 'S'        : LISTREEL (dimension m)
 197 :                       variables d'ecart pour les contraintes generales f_i
 198 : 
 199 : 
 200 :      Remarques :
 201 :      -----------
 202 : 
 203 :   Ces remarques sont issues de la section "Some practical consideration" de l'artice de K. Svanberg.
 204 :   Il s'agit de recommandations pour le choix des fonctions contraintes, leur mise a l'echelle
 205 :   et des parametres de l'optimisation.
 206 : 
 207 :   - Les contraintes f_i(x) <= 0 sont generalement ecritent sous la forme g_i(x) <= gmax_i
 208 :     ce qui correspond a f_i(x) = g_i(x) - gmax_i
 209 :     il est recommande de mettre a l'echelle les fonctions de sorte que 1 ≤ gmax_i ≤ 100
 210 :   - Il est recommande de mettre a l'echelle la fonction objectif de sorte que 1 ≤ f0(x) ≤ 100
 211 :   - Il est recommande de mettre a l'echelle les variables x_j de sorte que 0.1 ≤ xmax_j - xmin_j ≤ 100
 212 : 
 213 :   Pour rendre le probleme "generique" (quasiment) equivalent au probleme "standard",
 214 :   il faut choisir :
 215 :      a_0 = 1
 216 :      a_i = 0                 pour i = 1,...,m
 217 :      c_i = "un grand nombre" pour i = 1,...,m
 218 :      d_i = 1                 pour i = 1,...,m
 219 : 
 220 : 
 221 : 
 222 :      Pour plus d'informations :
 223 :      --------------------------
 224 : 
 225 :   Code original de K. Svanberg (en Matlab) : https://www.smoptit.se/
 226 : 
 227 :   Details de fonctionnement et d'implementation de la methode :
 228 :   https://people.kth.se/~krille/mmagcmma.pdf
 229 : 
 230 :   References :
 231 :   [1] K. Svanberg, The method of moving asymptotes – a new method for structural optimization
 232 :       International Journal for Numerical Methods in Engineering, 1987, 24, 359-373.
 233 :   [2] K. Svanberg, A class of globally convergent optimization methods based on conservative
 234 :       convex separable approximations
 235 :       SIAM Journal of Optimization, 2002, 12, 555-573.
 236 : 
 237 : 
 238 : 

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