* fichier : mma_05.dgibi ************************************************************************ ************************************************************************ ************************************************************************ * Test de l'operateur MMA : Methode des Asymptotes Mobiles * * Application a l'optimisation d'un treillis a 3 barres * * * * Reference : * * 2008 M. Bruggi * * On an alternative approach to stress constraints relaxation in * * topology optimization * * Struct Multidisc Optim, 36:125–141 * * https://link.springer.com/article/10.1007/s00158-007-0203-6 * * * * On considere un treillis de 3 barres reparties entre 4 noeuds * * Les noeuds p2, p3 et p4 sont encastres, le noeud p1 est soumis a * * 2 cas de chargement f1 et f2 * * * * Ʌ f1 = [0 1.5]^T * * ‖ * * ‖ * * ‖ * * p1 *====> f2 = [1 0]^T * * /|\ * * / | \ * * / | \ * * x1 / | \ x3 * * / x2| \ * * * * * * * p2 p3 p4 * * * * Les variables d'optimisation sont les densites des barres x1, x2, x3 * * Le problème d'optimisation consiste a minimiser le volume de la * * structure tel que les contraintes ne depassent pas une valeur seuil * * En choisissant : * * - des caracteristiques geometriques/mecaniques unitaires * * - des longueur de barre l1 = l3 = 1. et l2 = sqrt(2) * * - une limite en contrainte sigy = 3. pour chaque barre * * - une loi puissance reliant le module d'Young a la densite (SIMP) * * - d'eliminer la variable x3 (avec x3=x1), car la contrainte dans la * * barre 3 est superflue pour ce chargement * * alors, le probleme d'optimisation s'ecrit : * * * * Minimiser : f0(x1,x2) = 2sqrt(2) x1 + x2 * * sur x1,x2 * * 0.75 x1^p * * avec : f1(x1,x2) = ---------------------- - 3 x1^p <= 0 * * x1^p / sqrt(2) + x2^p * * * * 1.5 x2^p * * f2(x1,x2) = ---------------------- - 3 x2^p <= 0 * * x1^p / sqrt(2) + x2^p * * * * f3(x1,x2) = 1/sqrt(2) - 3 x1^p <= 0 * * * * 0 < x1 <= 1 0 <= x2 <= 1 * * * * Le probleme admet un optimum global en x1 = 0.708 x2 = 0. * * un optimum local en x1 = 0.617 x2 = 0.7 * ************************************************************************ * Options itrac = FAUX ; * Parametres du probleme p = 3. ; q = 3. ; * Procedures pour le calcul de la fonction objectif (f0) des fonctions limitations (f1 f2 f3) * et de leurs derivees partielles * Ici, l'exposant q est utilise pour penaliser les contraintes relaxer le probleme original * Si q < p --> probleme relaxe * Si q = p --> probleme initial (singulier, avec espaces degeneres) * Juste les valeurs des fonctions DEBP F0123 x1 x2 p q ; rac2 = 2. ** 0.5 ; f0 = (2. * rac2 * x1) + x2 ; xdeno = ((x1 ** p) / rac2) + (x2 ** p) ; f1 = (0.75 * (x1 ** p) / xdeno) - (3. * (x1 ** q)) ; f2 = (1.5 * (x2 ** p) / xdeno) - (3. * (x2 ** q)) ; f3 = (1. / rac2) - (3. * (x1 ** q)) ; FINP f0 f1 f2 f3 ; * Les fonctions et leurs derivees rac2 = 2. ** 0.5 ; f0 f1 f2 f3 = F0123 x1 x2 p q ; xdeno = ((x1 ** p) / rac2) + (x2 ** p) ; dfdx . 1 = PROG ((0.75 * p * (x1 ** (p - 1.)) * (x2 ** p) / (xdeno ** 2.)) - (3. * q * (x1 ** (q - 1.)))) (-0.75 * p * (x2 ** (p - 1.)) * (x1 ** p) / (xdeno ** 2.)) ; ((( 1.5 / rac2) * p * (x2 ** (p - 1.)) * (x1 ** p) / (xdeno ** 2.)) - (3. * q * (x2 ** (q - 1.)))) ; 0. ; FINP f0 df0dx f dfdx ; * Solution de reference x1ref = 0.708 ; x2ref = 0. ; MESS ; MESS 'Solution de reference' ; MESS ' x1 x2 f0' ; * Choix d'un point initial pour les inconnues * Calcul de f0(x0), df0dx(x0), fval(x0), dfdx(x0) * Initialisation de la table pour la MMA t . 'X' = x0 ; t . 'XMAX' = 1. ; t . 'F0VAL' = f0 ; t . 'DF0DX' = df0dx ; t . 'FVAL' = fval ; t . 'DFDX' = dfdx ; t . 'A0' = 1. ; t . 'MOVE' = 0.01 ; * Iterations de la MMA MESS ; MESS 'Optimisation par MMA' ; MESS 'It x1 x2 f0 kktnorm' ; * Boucle d'optimisation REPE loop 150 ; * Appel a MMA lit = lit ET &loop ; MMA t ; xmma = t . 'X' ; lx1 = lx1 ET x1 ; lx2 = lx2 ET x2 ; * Mise a jour des valeurs des fonctions lf0 = lf0 ET f0 ; t . 'F0VAL' = f0 ; t . 'DF0DX' = df0dx ; t . 'FVAL' = fval ; t . 'DFDX' = dfdx ; * Calcul du residu pour les conditions KKT res kkt2 kktinf = KKT_MMA t ; * Bilan de l'iteration FIN loop ; MESS ; * Verification du resultat MESS errmax ; MESS ; * Évolutions temporelles de f, de l'infaisabilité et des variables * en fonction des iterations d'optimisation SI itrac ; xmax = t . 'XMAX' ; f0msh f1msh f2msh f3msh = F0123 x y p q ; pdep = x01 x02 ; pfin = x1 x2 ; (annd ET annf) 'TITR' 'Isovaleurs de la fonction objectif F0 et chemin au cours de l''optimisation' ; tl . 2 = 'TIRR' ; tl . 'TITRE' . 1 = 'F0 calculee' ; tl . 'TITRE' . 2 = 'F0 ref.' ; tl . 'TITRE' . 1 = 'Infaisabilite' ; tl . 4 = 'TIRR' ; tl . 'TITRE' . 1 = 'x1 calcule' ; tl . 'TITRE' . 2 = 'x1 ref.' ; tl . 'TITRE' . 3 = 'x2 calcule' ; tl . 'TITRE' . 4 = 'x2 ref.' ; FINSI ; * Sortie en erreur si l'écart aux valeurs de références est trop important SI (errmax > 1.E-3) ; SINON ; MESS 'Cas test passe avec succes !' ; FINSI ; FIN ;
© Cast3M 2003 - Tous droits réservés.
Mentions légales