prftrain.f 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. SUBROUTINE PRFTRAIN (PRFT,TC,USCT,UCET,USET,FSC,FCE,AA,
  2. 1 PSC,PCE,BB,TAUSC,TAUCE,TAUSE)
  3. IMPLICIT REAL*8 (A-H,O-Z)
  4. DIMENSION Z(14), X(3), XL(3), XU(3)
  5. DIMENSION W(3000), IACT(51)
  6. INCLUDE 'param.inc'
  7. COMMON /PB/ NPROB
  8. COMMON /VARS/ Z
  9. ZERO = 0.0D0
  10. ONE = 1.0D0
  11. TWO = 2.0D0
  12. C Indicate that the objective is to maximize
  13. C the profit of the train operator
  14. NPROB=4
  15. Z(4) = TAUSC
  16. Z(5) = TAUCE
  17. Z(6) = TAUSE
  18. Z(10) = FSC
  19. Z(11) = FCE
  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. N=3
  34. NPT=N+2
  35. RHOBEG=5.D0
  36. RHOEND=1.0D-6
  37. IPRINT=0
  38. MAXFUN=2000
  39. CALL BOBYQA (N,NPT,X,XL,XU,RHOBEG,RHOEND,IPRINT,MAXFUN,W,IACT)
  40. USCT = X(1)
  41. UCET = X(2)
  42. USET = X(3)
  43. PSC = Z(7)
  44. PCE = Z(8)
  45. BB = Z(14)
  46. CALL CALFUN(N,X,F)
  47. PRFT = -F
  48. NPROB = 1
  49. CALL CALFUN(N,X,F)
  50. TC = F
  51. RETURN
  52. END