Télécharger raaupdt.eso

Retour à la liste

Numérotation des lignes :

raaupdt
  1. C RAAUPDT SOURCE FD218221 26/10/07 21:15:10 12662
  2. SUBROUTINE RAAUPDT(N,M,XMMA,XVAL,XMIN,XMAX,LOW,UPP,
  3. & F0NEW,FNEW,F0APP,FAPP,EPSIMIN,
  4. & RAA0,RAA)
  5.  
  6. C ----------------------------------------------------------------------
  7. C Ce code est une adaptation en FORTRAN/ESOPE de l'algorithme de la GC-MMA
  8. C (Methode des Asymptotes Mobiles Globalement Convergente) propose initialement
  9. C en langage Matlab par K. Svarberg (sources : https://www.smoptit.se/)
  10. C ----------------------------------------------------------------------
  11. C Cette subroutine met a jour les parametres RAA0 et RAA au cours des
  12. C sous iterations de la GC-MMA.
  13. C Les valeurs sont ajustees selon les valeurs courrantes et approximees
  14. C des fonctions objectif et contraintes. Ces nouvelles valeurs doivent
  15. C permettre de mieux approcher les fonctions
  16. C
  17. C Entrees :
  18. C ---------
  19. C N = Nombre de variables x_j
  20. C M = Nombre de contraintes
  21. C XMMA = Vecteur (N) des variables x_j courantes
  22. C XVAL = Vecteur (N) des variables x_j au debut des sous iterations
  23. C XMIN/XMAX = Vecteurs (N) des bornes inferieures/superieures pour les variables x_j
  24. C LOW/UPP = Vecteurs (N) des asymptotes inferieures/superieures du sous-probleme
  25. C F0NEW = Scalaire valeur courante de la fonction objectif
  26. C FNEW = Vecteur (M) valeurs courantes des fonctions contraintes
  27. C F0APP = Scalaire valeur approximee de la fonction objectif
  28. C FAPP = Vecteur (M) valeurs approximees des fonctions contraintes
  29. C EPSIMIN = Petit nombre positif ajoute aux valeurs approximees
  30. C RAA0 = Scalaire valeur approchee de la fonction objectif par le sous probleme
  31. C RAA = Vecteur (M) des valeurs approchees des fonctions contraintes par le sous probleme
  32. C
  33. C Sorties :
  34. C ---------
  35. C RAA0 = Scalaire, mise a jour
  36. C RAA = Vecteur (M), mis a jour
  37. C ----------------------------------------------------------------------
  38.  
  39. IMPLICIT INTEGER(I-N)
  40. IMPLICIT REAL*8(A-H,O-Z)
  41.  
  42. C Arguments
  43. REAL*8 XMMA(N),XVAL(N),XMIN(N),XMAX(N),LOW(N),UPP(N)
  44. REAL*8 F0NEW,FNEW(M),F0APP,FAPP(M),EPSIMIN
  45. REAL*8 RAA0, RAA(M)
  46.  
  47. C Constante locale
  48. PARAMETER (RAACOFMIN=1.0D-12)
  49.  
  50. C Calcul de RAACOF
  51. RAACOF = 0.0D0
  52. DO 10 I = 1, N
  53. XMAMI = MAX((XMAX(I)-XMIN(I)),1.0D-5)
  54. XXUL = ((XMMA(I)-XVAL(I))/(UPP(I)-XMMA(I))) *
  55. & ((XMMA(I)-XVAL(I))/(XMMA(I)-LOW(I)))
  56. ULXX = (UPP(I)-LOW(I))/XMAMI
  57. RAACOF = RAACOF+(XXUL*ULXX)
  58. 10 CONTINUE
  59. RAACOF = MAX(RAACOF,RAACOFMIN)
  60.  
  61. C Mise a jour de RAA0
  62. F0APPE = F0APP + 0.5D0 * EPSIMIN
  63. IF (F0NEW.GT.F0APPE) THEN
  64. DELTARAA0 = (1.0D0 / RAACOF) * (F0NEW - F0APP)
  65. ZZ0 = 1.1D0 * (RAA0 + DELTARAA0)
  66. ZZ0 = MIN(ZZ0, 10.D0 * RAA0)
  67. RAA0 = ZZ0
  68. ENDIF
  69.  
  70. C Mise a jour de RAA
  71. DO 20 I = 1, M
  72. FAPPE = FAPP(I) + 0.5D0 * EPSIMIN
  73. FDELTA = FNEW(I) - FAPPE
  74. ZZI = 1.1D0 * (RAA(I) + ((FNEW(I) - FAPP(I)) / RAACOF))
  75. ZZI = MIN(ZZI, 10.D0 * RAA(I))
  76. IF (FDELTA.GT.0.D0) RAA(I) = ZZI
  77. 20 CONTINUE
  78.  
  79. RETURN
  80. END
  81.  
  82.  

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