Télécharger excel5.dgibi

Retour à la liste

Numérotation des lignes :

  1. * fichier : excel5.dgibi
  2. ************************************************************************
  3. ************************************************************************
  4.  
  5. ************************************************************************
  6. * Test de l'opérateur EXCE : Méthode des Asymptotes Mobiles *
  7. * Optimisation des dimensions d'une boite de conserve *
  8. * *
  9. * On considère une boite de conserve cylindrique de rayon r et de *
  10. * hauteur h et devant contenir un volume de 1000 cm3 d'aliments. *
  11. * On cherche le couple (r,h) qui minimise la surface de métal à *
  12. * utiliser pour la fabrication de cette boite. *
  13. * *
  14. * La fonction objectif est la surface de la boite : *
  15. * f(r,h) = 2*(pi*r*r) + (2*pi*r*h) *
  16. * *
  17. * Les contraintes portent sur : *
  18. * le volume : v(r,h) = pi*r*r*h = v0 = 1000 cm3 *
  19. * cette égalité sera imposée via 2 inégalités : *
  20. * g1(r,h) = v(r,h) < v0 * (1 + epsilon) *
  21. * g2(r,h) = -v(r,h) < -v0 * (1 - epsilon) *
  22. * le rayon : 0 cm < r < 20 cm *
  23. * la hauteur : 0 cm < h < 20 cm *
  24. * *
  25. * La solution au problème est : *
  26. * r = 5.42 cm et h = 10.84 cm *
  27. ************************************************************************
  28.  
  29. * Options d'affichage
  30. OPTI 'ECHO' 0 ;
  31. idess = FAUX ;
  32.  
  33. * Choix des paramètres du problème d'optimisation
  34. v0 = 1000. ;
  35. epsilon = 0.01 ;
  36. rmin = 0. ;
  37. rmax = 20. ;
  38. hmin = 0. ;
  39. hmax = 20. ;
  40. g1max = (1. + epsilon) * v0 ;
  41. g2max = (1. - epsilon) * v0 * -1. ;
  42.  
  43.  
  44.  
  45. ************************************************************************
  46. * F O N C T I O N O B J E C T I F *
  47. * E T *
  48. * F O N C T I O N S C O N T R A I N T E S *
  49. ************************************************************************
  50.  
  51. * Procédure FF : calcul de la fonction objectif s(r,h) et de ses
  52. * dérivées partielles
  53. DEBP FF tx*'TABLE' ;
  54. r = tx . 1 ;
  55. h = tx . 2 ;
  56. tf = TABL 'VECTEUR' ;
  57. tf . 0 = (2. * pi * r * r) + (2. * pi * r * h) ;
  58. tf . 1 = (4. * pi * r) + (2. * pi * h) ;
  59. tf . 2 = 2. * pi * r ;
  60. FINP tf ;
  61.  
  62. * Procédure FG1 : calcul de la fonction contrainte v(r,h) et ses
  63. * dérivées partielles
  64. DEBP FG1 tx*'TABLE' ;
  65. r = tx . 1 ;
  66. h = tx . 2 ;
  67. tc = TABL 'VECTEUR' ;
  68. tc . 0 = pi * r * r * h ;
  69. tc . 1 = 2. * pi * r * h ;
  70. tc . 2 = pi * r * r ;
  71. FINP tc ;
  72. * Procédure FG2 : calcul de la fonction contrainte -v(r,h) et ses
  73. * dérivées partielles
  74. DEBP FG2 tx*'TABLE' ;
  75. r = tx . 1 ;
  76. h = tx . 2 ;
  77. tc = TABL 'VECTEUR' ;
  78. tc . 0 = -1. * pi * r * r * h ;
  79. tc . 1 = -2. * pi * r * h ;
  80. tc . 2 = -1. * pi * r * r ;
  81. FINP tc ;
  82.  
  83.  
  84.  
  85.  
  86. ************************************************************************
  87. * O P T I M I S A T I O N *
  88. ************************************************************************
  89.  
  90. * Initialisation de la table d'optimisation
  91. to = TABL ;
  92. * -- valeurs initales de r et h
  93. to . 'VX0' = TABL 'VECTEUR' ;
  94. to . 'VX0' . 1 = 19. ;
  95. to . 'VX0' . 2 = 7. ;
  96. * -- valeur initiale de la fonction f(r,h)
  97. to . 'VF' = FF (to . 'VX0') ;
  98. * -- valeurs initiales des contraintes g1(r,h) et g2(r,h)
  99. to . 'MC' = TABL ;
  100. to . 'MC' . 1 = FG1 (to . 'VX0') ;
  101. to . 'MC' . 2 = FG2 (to . 'VX0') ;
  102. * -- bornes pour r et h
  103. to . 'VXMIN' = TABL 'VECTEUR' ;
  104. to . 'VXMIN' . 1 = rmin ;
  105. to . 'VXMIN' . 2 = hmin ;
  106. to . 'VXMAX' = TABL 'VECTEUR' ;
  107. to . 'VXMAX' . 1 = rmax ;
  108. to . 'VXMAX' . 2 = hmax ;
  109. * -- bornes pour les fonctions contraintes (g1max et g2max)
  110. to . 'VCMAX' = TABL 'VECTEUR' ;
  111. to . 'VCMAX' . 1 = g1max ;
  112. to . 'VCMAX' . 2 = g2max ;
  113. * -- choix de la methode ('STA' ou 'MOV')
  114. to . 'METHODE' = 'MOV' ;
  115. to . 'T0' = 4./5. ;
  116. to . 'S0' = 0.5 ;
  117.  
  118. * Listes pour stocker les resultats intermediaires :
  119. * fonction objectif, infaisabilité et variables de conception
  120. lf = PROG (to . 'VF' . 0) ;
  121. g1 = to . 'MC' . 1 . 0 ;
  122. g2 = to . 'MC' . 2 . 0 ;
  123. li = PROG (MAXI (PROG 0. ((g1 - g1max) / g1max) ((g2 - g2max) / g2max))) ;
  124. lr = PROG (to . 'VX0' . 1) ;
  125. lh = PROG (to . 'VX0' . 2) ;
  126.  
  127. * Boucle d'optimisation
  128. REPE bop 150 ;
  129. * appel a l'operateur EXCE --> nouveau couple (r,h) optimisé
  130. to_new = EXCE to ;
  131. * récuperation des nouvelles valeurs des variables r et h
  132. tx_new = to_new . 'VX0' ;
  133. * calcul de la nouvelle valeur de la fonction objectif et de ses dérivées
  134. tf_new = FF tx_new ;
  135. fi = tf_new . 0 ;
  136. * calcul des nouvelles valeurs des fonctions contraintes et de leurs dérivées
  137. tg1_new = FG1 tx_new ;
  138. tg2_new = FG2 tx_new ;
  139. g1 = tg1_new . 0 ;
  140. g2 = tg2_new . 0 ;
  141. * mise à jour de la table d'optimisation
  142. to . 'VX0' = tx_new ;
  143. to . 'VF' = tf_new ;
  144. to . 'MC' . 1 = tg1_new ;
  145. to . 'MC' . 2 = tg2_new ;
  146. * calcul de l'infaisabilité (écart sur les fonctions contraintes)
  147. infi = MAXI (PROG 0. ((g1 - g1max) / g1max) ((g2 - g2max) / g2max)) ;
  148. * remplissage des listes pour visualition des itérations
  149. lf = lf ET fi ;
  150. li = li ET infi ;
  151. lr = lr ET (tx_new . 1) ;
  152. lh = lh ET (tx_new . 2) ;
  153. FIN bop ;
  154. nit = (DIME lf) - 1 ;
  155.  
  156.  
  157.  
  158.  
  159. ************************************************************************
  160. * V É R I F I C A T I O N *
  161. ************************************************************************
  162.  
  163. * Valeurs de référence attendues pour la fonction objectif et les
  164. * variables de conception r,h
  165. fref = 554. ;
  166. rref = 5.42 ;
  167. href = 10.84 ;
  168. * Comparaison avec les valeurs calculées par Cast3M
  169. tol1 = 1.E-2 ;
  170. ierr = FAUX ;
  171. MESS ' Variable de | Valeur | Valeur | Erreur' ;
  172. MESS ' conception | calculee | attendue | relative' ;
  173. MESS '-----------------------------------------------' ;
  174. r = tx_new . 1 ;
  175. h = tx_new . 2 ;
  176. errr = ABS ((r - rref) / rref) ;
  177. errh = ABS ((h - href) / href) ;
  178. motr = CHAI 'FORMAT' '(F7.2)' 'r' *5 '|' *14 r /16 '|' *26 rref /28 '|' *38 errr /40 ;
  179. moth = CHAI 'FORMAT' '(F7.2)' 'h' *5 '|' *14 h /16 '|' *26 href /28 '|' *38 errh /40 ;
  180. SI (errr > tol1) ;
  181. ierr = VRAI ;
  182. motr = CHAI motr ' <-- NOK' ;
  183. FINSI ;
  184. MESS motr ;
  185. SI (errh > tol1) ;
  186. ierr = VRAI ;
  187. moth = CHAI moth ' <-- NOK' ;
  188. FINSI ;
  189. MESS moth ;
  190. MESS ' Fonction | Valeur | Valeur | Erreur' ;
  191. MESS ' objectif | calculee | attendue | relative' ;
  192. MESS '-----------------------------------------------' ;
  193. erri = ABS ((fi - fref) / fref) ;
  194. moti = CHAI 'FORMAT' '(F7.2)' 'f' *5 '|' *14 fi /16 '|' *26 fref /28 '|' *38 erri /40 ;
  195. SI (erri > tol1) ;
  196. ierr = VRAI ;
  197. moti = CHAI moti ' <-- NOK' ;
  198. FINSI ;
  199. MESS moti ;
  200.  
  201.  
  202.  
  203.  
  204.  
  205. ************************************************************************
  206. * P O S T T R A I T E M E N T *
  207. ************************************************************************
  208.  
  209. * Évolutions temporelles de f, de l'infaisabilité et des variables
  210. * de conception en fonction des iterations d'optimisation
  211. SI idess ;
  212. lit = PROG 0. 'PAS' 1. nit ;
  213. evf = EVOL 'ROUG' 'MANU' 'Iteration' lit 'F' lf ;
  214. evfr = EVOL 'ROUG' 'MANU' 'Iteration' (PROG 0. nit) 'F' (PROG fref fref) ;
  215. tl = TABL ;
  216. tl . 2 = 'TIRR' ;
  217. tl . 'TITRE' = TABL ;
  218. tl . 'TITRE' . 1 = 'F calculee' ;
  219. tl . 'TITRE' . 2 = 'F ref.' ;
  220. DESS (evf ET evfr) 'TITR' 'Fonction objectif F(x) VS Iterations' 'LEGE' tl ;
  221. evi = EVOL 'VERT' 'MANU' 'Iteration' lit 'Inf' li ;
  222. tl . 'TITRE' . 1 = 'Infaisabilite' ;
  223. DESS evi 'TITR' 'Infaisabilite VS Iterations' 'LEGE' tl ;
  224. evr = EVOL 'ROUG' 'MANU' 'Iteration' lit 'r,h' lr ;
  225. evrr = EVOL 'ROUG' 'MANU' 'Iteration' (PROG 0. nit) 'F' (PROG rref rref) ;
  226. evh = EVOL 'ORAN' 'MANU' 'Iteration' lit 'r,h' lh ;
  227. evhr = EVOL 'ORAN' 'MANU' 'Iteration' (PROG 0. nit) 'F' (PROG href href) ;
  228. tl . 4 = 'TIRR' ;
  229. tl . 'TITRE' . 1 = 'r calcule' ;
  230. tl . 'TITRE' . 2 = 'r ref.' ;
  231. tl . 'TITRE' . 3 = 'h calcule' ;
  232. tl . 'TITRE' . 4 = 'h ref.' ;
  233. DESS (evr ET evrr ET evh ET evhr) 'TITR' 'Valeurs r et h VS Iterations' 'LEGE' tl ;
  234. FINSI ;
  235.  
  236. * Tracé des points de recherche (r,h) dans l'espace
  237. OPTI 'DIME' 2 'ELEM' 'QUA4' ;
  238. * maillage du plan (r,h)
  239. lr0 = PROG rmin 'PAS' ((rmax - rmin) / 20.) rmax ;
  240. lh0 = PROG hmin 'PAS' ((hmax - hmin) / 20.) hmax ;
  241. l1 = QUEL 'SEG2' lr0 (0. * lr0) ;
  242. l2 = QUEL 'SEG2' (0. * lh0) lh0 ;
  243. mail = l1 GENE l2 ;
  244. * champs des fonctions surface et volume de la boite
  245. r h = COOR mail ;
  246. chs = (2. * pi) * ((r * r) + (r * h)) ;
  247. chv = pi* r * r * h ;
  248. * maillage des points de recherche lors de l'optimisation
  249. lrh = QUEL 'SEG2' lr lh ;
  250. * maillage du point optimum
  251. po = rref href ;
  252. po1 = po PLUS (0.2 0.) ;
  253. lo = CERC 4 'ROTA' 360. po1 po 'ELIM' ;
  254. * tracés
  255. SI idess ;
  256. TRAC chs mail ((CONT mail) ET lrh ET lo) 'TITR' 'Trajet de recherche dans l''espace de la fonction objectif' ;
  257. OPTI 'ISOV' 'LIGN' ;
  258. lv = PROG 50. 500. 1000. 1500. 2000. 3000. ;
  259. TRAC chv mail ((CONT mail) ET lrh ET lo) lv 'TITR' 'Trajet de recherche dans l''espace de la fonction contrainte' ;
  260. FINSI ;
  261.  
  262.  
  263. * Sortie en erreur si l'écart aux valeurs de références est trop important
  264. SI ierr ;
  265. ERRE 'Erreur dans le calcul d''optimisation' ;
  266. FINSI ;
  267.  
  268. FIN ;
  269.  
  270.  
  271.  
  272.  

© Cast3M 2003 - Tous droits réservés.
Mentions légales