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