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