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