$$$$ MMA NOTICE FD218221 26/09/16 21:15:08 12646 DATE 26/09/16 Operateur MMA Voir aussi : EXCE LEVM MOCA TOPOPTIM _____________ MOCA_MMA AJUSTE L'operateur MMA met en oeuvre la methode des asymptotes mobiles, "Method of Moving Asymptotes", pour resoudre un probleme d'optimisation non lineaire par approximation convexe. Les variables sont : x = [x_1 ... x_n] (dimension n) variables reeles y = [y_1 ... y_m] (dimension m) variables artificielles d'ecart z variable artificielle d'ajustement Le probleme "generique" est : Minimiser : f_0(x) + a_0*z + Somme [ c_i*y_i + 0.5*d_i*(y_i)^2 ] (fonction objectif) sur x,y,z i=1,...,m soumis a : f_i(x) - a_i*z - y_i <= 0 pour i = 1,...,m (fonctions contraintes) xmin_j <= x_j <= xmax_j pour j = 1,...,n (bornes des variables) z >= 0 y_i >= 0 pour i = 1,...,m Cette formulation generique permet de traiter, dans le meme cadre, plusieurs problemes "classiques" d'optimisation, comme par exemple : - un probleme "standard" de minimisation sous contraintes : Minimiser : f_0(x) soumis a : f_i(x) <= 0 pour i = 1,...,m - un probleme "min-max" sur un groupe de fonctions : Minimiser : Max{h_i(x)} pour i = 1,...,p soumis a : g_i(x) <= 0 pour i = 1,...,q - un probleme des "moindres carres" sous la forme : Minimiser : 0.5 * Somme [ (h_i(x))^2 ] i=1,...,p soumis a : g_i(x) <= 0 pour i = 1,...,q Plus d'informations sont disponibles dans la section "Remarques". Syntaxe : --------- MMA TAB1 ; Objet : ------- L'operateur permet d'effectuer une iteration d'optimisation par la MMA a partir de la donnee de : -- un point de depart x -- l'evaluation de la fonction f_0(x) et des fonctions f_i(x) -- l'evaluation de leurs gradients : -- gadients de f_0, par rapport a toutes les variables x_j, en x -- gradients des f_i, par rapport a toutes les variables x_j, en x La nouvelle variable optimisiee x' est rendue et peut alors servir a : -- evaluer a nouveau les fonctions et leurs gradients en x' -- effectuer une nouvelle iteration de MMA -- evaluer un critere de convergence global -- etc... Exemples d'utilisation : -- petite taille (peu de variables) : mma_**.dgibi -- grande taille (optimisation topologique) : top_mma.dgibi Arguments : ----------- En entree : TAB1 : TABLE contenant les donnees du probleme d'optimisation TAB1 . 'X' : LISTREEL (dimension n) valeurs de depart des variables x_j TAB1 . 'XMIN' : LISTREEL (dimension n) ou FLOTTANT bornes inferieures des x_j si un FLOTTANT est donne, la meme borne est imposee pour tous les x_j TAB1 . 'XMAX' : LISTREEL (dimension n) ou FLOTTANT bornes superieures des x_j si un FLOTTANT est donne, la meme borne est imposee pour tous les x_j TAB1 . 'F0VAL' : FLOTTANT valeur de la fonction objectif f_0 (au point x) TAB1 . 'DF0DX' : LISTREEL (dimension n) gradient de f_0 par rapport au variables x_j (au point x) TAB1 . 'FVAL' : LISTREEL (dimension m) valeurs des fonctions contraintes f_i (au point x) TAB1 . 'DFDX' : gradients des fonctions contraintes f_i, 2 types possibles : - TABLE contenant m indices ENTIER : . 1 : LISTREEL (dimension n), gradient de f_1 par rapport au variables x_j (au point x) ... ... . m : LISTREEL (dimension n), gradient de f_m par rapport au variables x_j (au point x) - LISTOBJE contenant m objets LISTREEL la ieme liste contenant le gradient de f_i par rapport aux variables x_j (au point x) TAB1 . 'ITER' : ENTIER (facultatif), numero de l'iteration courante ( = 1 au premier appel a MMA) par defaut, pris egal a 1 TAB1 . 'XOLD1' : LISTREEL (facultatif, dimension n) contenant les valeurs 'X', 1 iteration precedente (a condition que 'ITER' > 1) par defaut, pris egal à 'X' TAB1 . 'XOLD2' : LISTREEL (facultatif, dimension n) contenant les valeurs 'X', 2 iterations precedentes (a condition que 'ITER' > 2) par defaut, pris egal à 'XOLD1' TAB1 . 'LOW' : LISTREEL (facultatif, dimension n) valeurs des asymptotes inferieures a l'iteration precedente (a condition que 'ITER' > 1) par defaut, pris egale a 'XMIN' TAB1 . 'UPP' : LISTREEL (facultatif, dimension n) valeurs des asymptotes superieures a l'iteration precedente (a condition que 'ITER' > 1) par defaut, pris egale a 'XMAX' TAB1 . 'A0' : FLOTTANT (facultatif) coefficient dans l'equation a_0*z du probleme par defaut, pris egal a 1. TAB1 . 'A' : LISTREEL (facultatif, dimension m) coefficients dans l'equation a_i*z du probleme par defaut, pris egal a [0. 0. ..., 0.] TAB1 . 'C' : LISTREEL (facultatif, dimension m) coefficients dans l'equation c_i*y_i du probleme par defaut, pris egal a [10000. 10000. ... 10000.] TAB1 . 'D' : LISTREEL (facultatif, dimension m) coefficients dans l'equation 0.5*d_i*(y_i)^2 du probleme par defaut, pris egal a [1. 1. ... 1.] TAB1 . 'MOVE' : FLOTTANT (facultatif) taille maximale de l'increment des variables par defaut, pris egal a 0.1 TAB1 . 'ALBEFA' : FLOTTANT (facultatif) pourcentage d'ecart par rapport aux bornes ALFA/BETA du sous-probleme convexe par defaut, pris egal a 0.1 TAB1 . 'RAA0' : FLOTTANT (facultatif) parametre de conservatisme/courbure de l'objectif du sous probleme convexe par defaut, pris egal a 0.00001 TAB1 . 'ASYINIT' : FLOTTANT (facultatif) facteur d'initialisation des asymptotes LOW/UPP du sous probleme convexe par defaut, pris egal a 0.5 TAB1 . 'ASYINCR' : FLOTTANT (facultatif) facteur d'eloignement des asymptotes LOW et UPP du sous probleme convexe par defaut, pris egal a 1.2 TAB1 . 'ASYDECR' : FLOTTANT (facultatif) facteur de rapprochement des asymptotes LOW et UPP du sous probleme convexe par defaut, pris egal a 0.7 TAB1 . 'ASYMIN' : FLOTTANT (facultatif) limite inferieure de la distance entre les asymptotes LOW et UPP du sous probleme convexe par defaut, pris egal a 0.01 TAB1 . 'ASYMAX' : FLOTTANT (facultatif) limite superieure de la distance entre les asymptotes LOW et UPP du sous probleme convexe par defaut, pris egal a 10. TAB1 . 'EPSIMIN' : FLOTTANT (facultatif) tolerance de convergence pour la resolution du sous probleme par defaut, pris egal a 0.0000001 En sortie : les indices suivants sont ecrases TAB1 . 'X' : LISTREEL (dimension n) valeurs optimisees des variables reeles x_j les valeurs precedentes sont deplacees dans l'indice 'XOLD1' TAB1 . 'XOLD1' : LISTREEL (dimension n) valeurs de 'X' 1 iteration precedente les valeurs precedentes sont deplacees dans l'indice 'XOLD2' TAB1 . 'XOLD2' : LISTREEL (dimension n) valeurs de 'XOLD1' 1 iteration precedente, correspond a 'X' 2 iterations precedentes TAB1 . 'ITER' : ENTIER, egal a sa valeur precedente + 1 TAB1 . 'LOW' : LISTREEL (dimension n) valeurs des asymptotes inferieures mises a jour TAB1 . 'UPP' : LISTREEL (dimension n) valeurs des asymptotes superieures mises a jour TAB1 . 'Y' : LISTREEL (dimension m) valeurs optimisees des variables d'ecart y_i associees a chaque fonction contrainte f_i TAB1 . 'Z' : FLOTTANT valeur optimisee de la variable d'ajustement z TAB1 . 'LAMBDA' : LISTREEL (dimension m) multiplicateurs de Lagrange associes aux contraintes f_i TAB1 . 'XSI' : LISTREEL (dimension n) multiplicateurs de Lagrange associes aux bornes inferieures xmin_j <= x_j TAB1 . 'ETA' : LISTREEL (dimension n) multiplicateurs de Lagrange associes aux bornes superieures x_j <= xmax_j TAB1 . 'MU' : LISTREEL (dimension m) multiplicateurs de Lagrange associes aux contraintes y_i >= 0 TAB1 . 'ZET' : FLOTTANT multiplicateur de Lagrange associes a la contrainte z>= 0 TAB1 . 'S' : LISTREEL (dimension m) variables d'ecart associees aux contraintes f_i Remarques : ----------- Ces remarques sont issues de la section "Some practical consideration" de l'artice de K. Svanberg. Il s'agit de recommandations pour le choix des fonctions contraintes, leur mise a l'echelle et des parametres de l'optimisation. - Les contraintes f_i(x) <= 0 sont generalement ecritent sous la forme g_i(x) <= gmax_i ce qui correspond a f_i(x) = g_i(x) - gmax_i il est recommande de mettre a l'echelle les fonctions de sorte que 1 ≤ gmax_i ≤ 100 - Il est recommande de mettre a l'echelle la fonction objectif de sorte que 1 ≤ f_0(x) ≤ 100 - Il est recommande de mettre a l'echelle les variables x_j de sorte que 0.1 ≤ xmax_j - xmin_j ≤ 100 Pour rendre le probleme "generique" (quasiment) equivalent au probleme "standard", il faut choisir : a_0 = 1 a_i = 0 pour i = 1,...,m c_i = "un grand nombre" pour i = 1,...,m d_i = 1 pour i = 1,...,m ce qui correspond aux valeurs par defaut de ces coefficients. Pour plus d'informations : -------------------------- Code original de K. Svanberg (en Matlab) : https://www.smoptit.se/ Details de fonctionnement et d'implementation de la methode : https://people.kth.se/~krille/mmagcmma.pdf References : [1] K. Svanberg, The method of moving asymptotes – a new method for structural optimization International Journal for Numerical Methods in Engineering, 1987, 24, 359-373. [2] K. Svanberg, A class of globally convergent optimization methods based on conservative convex separable approximations SIAM Journal of Optimization, 2002, 12, 555-573.
© Cast3M 2003 - Tous droits réservés.
Mentions légales