Télécharger excel1.dgibi

Retour à la liste

Numérotation des lignes :

  1. * fichier : excel1.dgibi
  2. ************************************************************************
  3. ************************************************************************
  4. opti echo 0;
  5. * excel1.dgibi
  6. *
  7. * deux methode sont proposees dans l'opérateur exce :
  8. * la methode standard ( minimisation convexe) avec t0 = 0.6;
  9. * la methode move limite;
  10. * on trace aussi sur une grille la valeur de la fonction et la
  11. * condition
  12. *
  13. * min de ((X1 - mx1)*(X1-mx1)/sx1/sx1 +
  14. * (X2 - mx2)*(X2-mx2)/sx2/sx2)**0.5)
  15. *
  16. * sachant que X1 -X2/A =<0
  17. *
  18. mess ' fichier de donnees : excel1.dgibi';
  19. graph = faux;
  20. xx1 = 10.;
  21. xx2 = 10.;
  22. *
  23. * donnée des constantes
  24. *
  25. mx1=272.72; sx1=16.36;
  26. mx2=70.; sx2=15.;
  27. A=0.42;
  28. *
  29. * petite procedur pour calculer les conditions et les derivees
  30. * les inconnues X1 et X2 sont dans la table tvx0
  31. debproc intmci tmci txv0;
  32. tmci . 0 = txv0 . 1 - ( txv0 . 2 / A);
  33. tmci . 1 = 1.;
  34. tmci . 2 = -1./ A;
  35. finproc;
  36. *
  37. * procedur pour calculer la fonction et ses derivees
  38. * les inconnues X1 et X2 sont dans la table tvx0
  39. *
  40. debpro intvf tvf*table tvx0*table;
  41. xx = ( tvx0 . 1 - mx1 )*( tvx0 . 1 - mx1 ) /sx1 /sx1
  42. +( ( tvx0 . 2 - mx2 )*( tvx0 . 2 - mx2 ) /sx2 /sx2);
  43. yy = 2. * ( tvx0 . 1 - mx1 )/ SX1/SX1;
  44. zz = 2. * ( tvx0 . 2 - mx2 )/ SX2 / sx2;
  45. tvf . 0 = xx ** 0.5;
  46. tvf . 1 = 0.5 * yy / tvf . 0;
  47. tvf. 2 = zz * 0.5 / tvf . 0;
  48. finproc;
  49. * traitement annexe
  50. * calcul de la fonction,de la condition et visualisation
  51. * on regarde dans un interval predefini xdep-(xdep + nx*ax)
  52. * ydep-( ydep + ny*ay)
  53. opti dime 2 elem qua4;
  54. ax = 5 ; ay = 3;xdep = 220; ydep = 80;
  55. nx = 12; ny=15;
  56. li = (xdep (xdep *a)) droi 1 ((nx*ax + xdep) ((nx*ax + xdep)*a));
  57. pa = xdep ydep; pb = (nx*ax + xdep) ydep;
  58. liab = pa droi nx pb;
  59. su = liab trans ny ( 0 (ny*ay));
  60. mtot = 0;
  61. repe ii (nx + 1);
  62. x = xdep + ( (&ii - 1) * ax);
  63. repe jj ( ny + 1);
  64. y = ydep + ( (&jj - 1) * ay);
  65. pp = x y;
  66. pp = point su proche pp ;
  67. f = ( x - mx1 )*( x - mx1 ) /sx1 /sx1
  68. +( ( y - mx2 )*( y - mx2 ) /sx2 /sx2);
  69. f = f ** 0.5;
  70. mm = manu chpo pp 1 'FFF' f nature diffus;
  71. si ( mtot ega 0) ; mtit = mm;mtot = 1;
  72. sinon; mtit = mtit et mm; finsi;
  73. fin jj;
  74. fin ii;
  75. ch = chain 'CAS 1 -- XDEP: '
  76. xdep ' DX: ' ax ' YDEP: ' ydep ' DY: ' ay;
  77. titre ch;
  78. si graph;
  79. trac ( su et li) mtit;
  80. finsi;
  81. *
  82. * fin du dessin de la fonction et debut de l'optimisation
  83. * boucle pour les 2 methodes
  84. repeter met 2;
  85. ta = table;
  86. * definition d'un point de depart
  87. tvx0 = table vecteur;
  88. tvx0.1 = xx1;
  89. tvx0 . 2 = xx2;
  90. *
  91. * tvf contiendra la valeur de la fonction et les derivees
  92. * calculées au point de depart
  93. *
  94. tvf = table vecteur;
  95. *
  96. * tmci contient la ieme condition et les derivees calculees
  97. * au point de départ
  98. *
  99. tmc = table ; tmci=table vecteur; tmc . 1 = tmci;
  100. *
  101. * def de la valeur min des variables dans tvxmin
  102. *
  103. tvxmin = table vecteur;
  104. tvxmin . 1 =1.;
  105. tvxmin . 2 = 1.;
  106. *
  107. * def de la valeur max des variables dans tvxmax
  108. *
  109. tvxmax = table vecteur;
  110. tvxmax. 1 = 1000.;
  111. tvxmax . 2 = 1000.;
  112. *
  113. * definition des valeurs au second membre des conditions
  114. *
  115. tvcmax= table vecteur; tvcmax . 1 = 0.;
  116. *
  117. * choix de la méthode et remplissage de la table argument de exce
  118. *
  119. ta . mc = tmc;
  120. ta.vxmin = tvxmin; ta . vxmax = tvxmax;
  121. ta.vcmax = tvcmax;
  122. si (ega &met 1) ;
  123. ta . methode = sta; ta . t0 = 0.6;
  124. titi = mot 'cas 1 methode sta';
  125. sinon;
  126. ta.methode = mov;
  127. titi = mot 'cas 1 methode mov';
  128. finsi;
  129. * calcul de la fonction et de ses derivees
  130. intvf tvf tvx0;
  131. * calcul des conditions et de leurs dérivées
  132. intmci tmci tvx0;
  133. *
  134. * preparation des listreel pour stocker les résultats
  135. * intermediaires de la fonction est des variables
  136. ff = prog tvf.0; x1 = prog tvx0.1; x2 = prog tvx0.2;
  137. *
  138. * boucle d'optimisation
  139. *
  140.  
  141. repeter bouc 30;
  142.  
  143. * on remplit la partie changeante de ta
  144. ta . vx0 = tvx0;
  145. ta. vf = tvf;
  146. ta . mc . 1 = tmci;
  147. *
  148. * appel à exce
  149. *
  150. ta = exce ta;
  151. *
  152. * recuperation des variables dans ta.VX0
  153. tvx0 = ta . vx0;
  154. * calcul de la fonction et des dérivées
  155. intvf tvf tvx0;
  156. * calcul des conditions et de leurs dérivées
  157. intmci tmci tvx0;
  158.  
  159. * remplissage des listreels pour visualition des itérations
  160. ff = ff et ( prog tvf.0);
  161. x1 = x1 et ( prog tvx0 . 1);
  162. x2 = x2 et ( prog tvx0 . 2);
  163. fin bouc;
  164.  
  165.  
  166. *
  167. * visualisation des résultats
  168. *
  169. aa = dime ff;
  170. ll = prog 0 pas 1 (aa - 1) ;
  171. titre titi 'fonction :' ( extr ff ( dime ff));
  172. ev1 = evol manu iteration ll ffff ff;
  173. titre titi ' x1 final :'( extr x1 ( dime x1));
  174. ev2 = evol manu iteration ll xxx1 x1;
  175. ch = chain titi ' x2 final :'( extr x2 ( dime x2));
  176. titre ch;
  177. ev3 = evol manu iteration ll xxx2 x2;
  178. si graph;
  179. titre titi 'fonction :'( extr ff ( dime ff)) ;
  180. dess ev1;
  181. titre titi ' x1 final :' ( extr x1 ( dime x1)); dess ev2;
  182. titre titi ' x2 final :' ( extr x2 ( dime x2));dess ev3;
  183. finsi;
  184. aa = ( extr ff ( dime ff));
  185. si ((( aa - 2.6997) / 2.6997 ) > 0.001 );
  186. mess ' on trouve aa au lieu de 2.6997 STOP';
  187. erreur 5;
  188. sinon;
  189. message ' le cas test est correct';
  190. finsi;
  191. fin met;
  192.  
  193.  
  194. fin;
  195.  
  196.  
  197.  

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