optimum.f 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. SUBROUTINE OPTIMUM (TC,USCT,UCET,USET,FSC,FCE,FSE,AA,
  2. 1 PSC,PCE,BB,TAUSC,TAUCE,TAUSE,ID)
  3. C ID = 1, withour direct SE train
  4. C ID = 10, with direct SE train
  5. IMPLICIT REAL*8 (A-H,O-Z)
  6. DIMENSION Z(13), X(3), W(3000), IACT(51)
  7. DIMENSION XL(3), XU(3)
  8. INCLUDE "param.inc"
  9. COMMON /PB/ NPROB
  10. COMMON /VARS/ Z
  11. ZERO=0.0D0
  12. ONE=1.0D0
  13. TWO=2.0D0
  14. NPROB=ID
  15. N=3
  16. NPT=N+2
  17. Z(10) = FSC
  18. Z(11) = FCE
  19. Z(12) = FSE
  20. Z(13) = AA
  21. C INITIAL CONDITION
  22. X(1)=POPSC/TWO
  23. X(2)=POPCE/TWO
  24. X(3)=POPSE/TWO
  25. C SET BOUNDS FOR VARIABLES
  26. XL(1)=ZERO
  27. XL(2)=ZERO
  28. XL(3)=ZERO
  29. XU(1)=POPSC
  30. XU(2)=POPCE
  31. XU(3)=POPSE
  32. C SET PARAMETERS FOR BOBYQA
  33. RHOBEG=5.0D-1
  34. RHOEND=1.0D-6
  35. IPRINT=0
  36. MAXFUN=2000
  37. C Call BOBYQA routine
  38. CALL BOBYQA (N,NPT,X,XL,XU,RHOBEG,RHOEND,IPRINT,MAXFUN,W,IACT)
  39. USCT = X(1)
  40. UCET = X(2)
  41. USET = X(3)
  42. TAUSC=FSCT+CW/(TWO*Z(10))+ASCT*(X(1)+X(3))/Z(10)-
  43. 1 FSCR-ASCR*(POPSC-X(1))
  44. TAUCE=FCET+CW/(TWO*Z(11))+ACET*(X(2)+X(3))/Z(11)-
  45. 1 FCER-ACER*(POPCE-X(2))
  46. TAUSE=FSCT+CW/(TWO*Z(10))+ASCT*(X(1)+X(3))/Z(10)+
  47. 1 FCET+CW/(TWO*Z(11))+ACET*(X(2)+X(3))/Z(11)-
  48. 2 Z(13)*CW/(TWO*Z(11))+(ONE-Z(13))*SC-
  49. 3 FSER-ASER*(POPSE-X(3))
  50. PSC=-TAUSC
  51. PCE=-TAUCE
  52. IF(ID.EQ.1) THEN
  53. BB=(FSER+ASER*(POPSE-X(3))-(
  54. 1 FSCT+CW/(TWO*Z(10))+ASCT*(X(1)+X(3))/Z(10)+
  55. 2 FCET+CW/(TWO*Z(11))+ACET*(X(2)+X(3))/Z(11)-
  56. 3 Z(13)*CW/(TWO*Z(11))+(ONE-Z(13))*SC))/(PSC+PCE)
  57. ELSEIF(ID.EQ.10) THEN
  58. TAUSC=FSCT+CW/(TWO*Z(10))+ASCT*(X(1))/Z(10)-
  59. 1 FSCR-ASCR*(POPSC-X(1))
  60. TAUCE=FCET+CW/(TWO*Z(11))+ACET*(X(2))/Z(11)-
  61. 1 FCER-ACER*(POPCE-X(2))
  62. TAUSE=FSET+CW/(TWO*Z(12))+ASET*(X(3))/Z(12)-
  63. 1 FSER-ASER*(POPSE-X(3))
  64. PSC=-TAUSC
  65. PCE=-TAUCE
  66. BB =-TAUSE
  67. ENDIF
  68. CALL CALFUN(N,X,F)
  69. TC = F
  70. RETURN
  71. END