f_main.f 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503
  1. PROGRAM SCBD
  2. IMPLICIT REAL*8 (A-H,O-Z)
  3. COMMON /PB/ NPROB
  4. INCLUDE "param.inc"
  5. DIMENSION X(10), W(3000), IACT(51)
  6. DIMENSION XL(10), XU(10)
  7. CHARACTER LINE0,LINE1,LINE2,LINE3
  8. DIMENSION LINE0(90),LINE1(90),LINE2(90),LINE3(90)
  9. ZERO=0.0D0
  10. ONE=1.0D0
  11. TWO=2.0D0
  12. EPS = 1.0D-9
  13. NMAX = 25
  14. CALL PARAM("scbd.dat",PSC,PCE,PSE,BB,TAUSC,TAUCE,TAUSE,
  15. 1 FSC,FCE,FSE,AA)
  16. CW = VAL * CW
  17. SC = VAL * SC
  18. ASCR = VAL * ASCR
  19. ACER = VAL * ACER
  20. ASER = VAL * ASER
  21. DO 1, I=1,90
  22. LINE0(I)='-'
  23. LINE1(I)='='
  24. LINE2(I)='='
  25. LINE3(I)='='
  26. 1 CONTINUE
  27. LINE2(20)='N'
  28. LINE2(21)='0'
  29. LINE2(23)='T'
  30. LINE2(24)='R'
  31. LINE2(25)='A'
  32. LINE2(26)='I'
  33. LINE2(27)='N'
  34. LINE2(29)='S'
  35. LINE2(30)='E'
  36. LINE3(18)='W'
  37. LINE3(19)='I'
  38. LINE3(20)='T'
  39. LINE3(21)='H'
  40. LINE3(23)='T'
  41. LINE3(24)='R'
  42. LINE3(25)='A'
  43. LINE3(26)='I'
  44. LINE3(27)='N'
  45. LINE3(29)='S'
  46. LINE3(30)='E'
  47. C (* fixed costs, free-flow travel times *)
  48. dTse=DSQRT(dTsc*dTsc+dTce*dTce-2*dTsc*dTce*DCOS(theta))
  49. dRse=DSQRT(dRsc*dRsc+dRce*dRce-2*dRsc*dRce*DCOS(theta))
  50. Fsct=dTsc/sTsc*val
  51. Fcet=dTce/sTce*val
  52. Fset=dTse/sTse*val
  53. Fscr=dRsc/sRsc*val
  54. Fcer=dRce/sRce*val
  55. Fser=dRse/sRse*val
  56. C Fser=(theta*dRsc)/sRse*val
  57. POP = POPSC+POPCE+POPSE
  58. PRINT '(6F9.2)', FSCT, FCET, FSET, FSCR, FCER, FSER
  59. C ------------------------
  60. C Head of the output table
  61. C ------------------------
  62. PRINT '(90A)', LINE1
  63. WRITE (*, '(3X,A10,9X,A15,22X,A15)') 'ADM REGIME','TRAIN','ROADS'
  64. PRINT '(90A)', LINE0
  65. WRITE (*, '(16X,4A8,5X,4A8)') 'SC','CE','SE','AGR',
  66. & 'SC','CE','SE','AGR'
  67. PRINT '(90A)', LINE2
  68. C ------------------------
  69. C 1 -- COMPUTE THE OPTIMUM
  70. C ------------------------
  71. ID=1
  72. DO 10, I = 1,NMAX
  73. CALL OPTIMUM (TC,USCT,UCET,USET,FSC,FCE,FSE,AA,
  74. 1 PSC,PCE,BB,TAUSC,TAUCE,TAUSE,ID)
  75. TMP1 = DSQRT(CW*(USCT+USET)/(TWO*PHI))
  76. TMP2 = DSQRT(CW*(UCET+USET)/(TWO*PHI))
  77. TMP3 = (TMP1-FSC)**2+(TMP2-FCE)**2
  78. IF(TMP3.LT.EPS) GOTO 11
  79. FSC = TMP1
  80. FCE = TMP2
  81. 10 CONTINUE
  82. 11 CONTINUE
  83. IF(I.EQ.NMAX+1) PRINT*,'No convergence after ',NMAX,' iterations'
  84. WRITE (*, '(A12,35X,F8.4)' ) 'Optimum', TC
  85. POPTRAIN = USCT+UCET+USET
  86. POPCAR = POP-POPTRAIN
  87. WRITE (*, '(11X,A5,4F8.2,5X,4F8.2)') 'Users',
  88. & USCT,UCET,USET,POPTRAIN,
  89. & POPSC-USCT,POPCE-UCET,POPSE-USET,POPCAR
  90. C1T=FSCT+CW/(TWO*FSC)+ASCT*(USCT+USET)/FSC
  91. C2T=FCET+CW/(TWO*FCE)+ACET*(UCET+USET)/FCE
  92. C3T=C1T+C2T-AA*CW/(TWO*FSC)+(ONE-AA)*SC
  93. CT =(USCT*C1T+UCET*C2T+USET*C3T)/(USCT+UCET+USET)
  94. C1R=FSCR+ASCR*(POPSC-USCT)
  95. C2R=FCER+ACER*(POPCE-UCET)
  96. C3R=FSER+ASER*(POPSE-USET)
  97. CR =((POPSC-USCT)*C1R+(POPCE-UCET)*C2R+(POPSE-USET)*C3R)/
  98. & (POPSC+POPCE+POPSE-USCT-UCET-USET)
  99. WRITE (*, '(11X,A5,4F8.2,5X,4F8.2,5X)') 'Costs',
  100. & C1T,C2T,C3T,CT,C1R,C2R,C3R,CR
  101. WRITE (*, '(11X,A5,2F8.2)') 'Freq.',FSC,FCE
  102. WRITE (*, '(11X,A5,4F8.2)') 'Fares',PSC,PCE,BB*(PSC+PCE),
  103. & PSC*USCT+PCE*UCET+PSE*USET
  104. WRITE (*, '(11X,A5,37X,4F8.2)') 'Tolls',TAUSC,TAUCE,TAUSE,
  105. & (POPSC-USCT)*TAUSC+(POPCE-UCET)*TAUCE+(POPSE-USET)*TAUSE
  106. PRINT '(90A)', LINE0
  107. C ------------------------
  108. C 2 -- BETA LIMITED: BETA <= BETA_MAX
  109. C ------------------------
  110. TAUSC=ZERO
  111. TAUCE=ZERO
  112. TAUSE=ZERO
  113. PSC =ZERO
  114. PCE =ZERO
  115. BB = 1.0D0
  116. DO 20, I=1, NMAX
  117. CALL BETAFIXED (FSC,FCE,AA,PSC,PCE,BB,TAUSC,TAUCE,TAUSE,
  118. 1 USCT,UCET,USET,TC)
  119. TMP1 = DSQRT(CW*(USCT+USET)/(TWO*PHI))
  120. TMP2 = DSQRT(CW*(UCET+USET)/(TWO*PHI))
  121. TMP3 = (TMP1-FSC)**2+(TMP2-FCE)**2
  122. IF(TMP3.LT.EPS) GOTO 21
  123. FSC = TMP1
  124. FCE = TMP2
  125. 20 CONTINUE
  126. 21 CONTINUE
  127. IF(I.EQ.NMAX+1) PRINT*,'No convergence after ',NMAX,' iterations'
  128. WRITE (*, '(A12,35X,F8.4)' ) 'Beta bounded',TC
  129. POPTRAIN = USCT+UCET+USET
  130. POPCAR = POP-POPTRAIN
  131. WRITE (*, '(11X,A5,4F8.2,5X,4F8.2)') 'Users',
  132. & USCT,UCET,USET,POPTRAIN,
  133. & POPSC-USCT,POPCE-UCET,POPSE-USET,POPCAR
  134. C1T=FSCT+CW/(TWO*FSC)+ASCT*(USCT+USET)/FSC
  135. C2T=FCET+CW/(TWO*FCE)+ACET*(UCET+USET)/FCE
  136. C3T=C1T+C2T-AA*CW/(TWO*FSC)+(ONE-AA)*SC
  137. CT =(USCT*C1T+UCET*C2T+USET*C3T)/(USCT+UCET+USET)
  138. C1R=FSCR+ASCR*(POPSC-USCT)
  139. C2R=FCER+ACER*(POPCE-UCET)
  140. C3R=FSER+ASER*(POPSE-USET)
  141. CR =((POPSC-USCT)*C1R+(POPCE-UCET)*C2R+(POPSE-USET)*C3R)/
  142. & (POPSC+POPCE+POPSE-USCT-UCET-USET)
  143. WRITE (*, '(11X,A5,4F8.2,5X,4F8.2,5X)') 'Costs',
  144. & C1T,C2T,C3T,CT,C1R,C2R,C3R,CR
  145. WRITE (*, '(11X,A5,2F8.2)') 'Freq.',FSC,FCE
  146. WRITE (*, '(11X,A5,4F8.2)') 'Fares',PSC,PCE,BB*(PSC+PCE),
  147. & PSC*USCT+PCE*UCET+PSE*USET
  148. WRITE (*, '(11X,A5,37X,4F8.2)') 'Tolls',TAUSC,TAUCE,TAUSE,
  149. & (POPSC-USCT)*TAUSC+(POPCE-UCET)*TAUCE+(POPSE-USET)*TAUSE
  150. PRINT '(90A)', LINE0
  151. CC -------------------------
  152. CC 2 -- UNPRICED EQUILIBRIUM
  153. CC -------------------------
  154. ID = 2
  155. DO 30, I=1, NMAX
  156. CALL EQUILIBRIUM (TC,USCT,UCET,USET,FSC,FCE,FSE,AA,
  157. 1 ZERO,ZERO,ZERO,ZERO,ZERO,ZERO,ID)
  158. TMP1 = DSQRT(CW*(USCT+USET)/(TWO*PHI))
  159. TMP2 = DSQRT(CW*(UCET+USET)/(TWO*PHI))
  160. TMP3 = (TMP1-FSC)**2+(TMP2-FCE)**2
  161. IF(TMP3.LT.EPS) GOTO 31
  162. FSC = TMP1
  163. FCE = TMP2
  164. 30 CONTINUE
  165. 31 CONTINUE
  166. IF(I.EQ.NMAX+1) PRINT*,'No convergence after ',NMAX,' iterations'
  167. POPTRAIN = USCT+UCET+USET
  168. POPCAR = POP-POPTRAIN
  169. WRITE (*, '(A12,35X,F8.4)' ) 'Unpriced', TC
  170. WRITE (*, '(11X,A5,4F8.2,5X,4F8.2)') 'Users',
  171. & USCT,UCET,USET,POPTRAIN,
  172. & POPSC-USCT,POPCE-UCET,POPSE-USET,POPCAR
  173. C1T=FSCT+CW/(TWO*FSC)+ASCT*(USCT+USET)/FSC
  174. C2T=FCET+CW/(TWO*FCE)+ACET*(UCET+USET)/FCE
  175. C3T=C1T+C2T-AA*CW/(TWO*FSC)+(ONE-AA)*SC
  176. CT =(USCT*C1T+UCET*C2T+USET*C3T)/(USCT+UCET+USET)
  177. C1R=FSCR+ASCR*(POPSC-USCT)
  178. C2R=FCER+ACER*(POPCE-UCET)
  179. C3R=FSER+ASER*(POPSE-USET)
  180. CR =((POPSC-USCT)*C1R+(POPCE-UCET)*C2R+(POPSE-USET)*C3R)/
  181. & (POPSC+POPCE+POPSE-USCT-UCET-USET)
  182. WRITE (*, '(11X,A5,4F8.2,5X,4F8.2)') 'Costs',
  183. & C1T,C2T,C3T,CT,C1R,C2R,C3R,CR
  184. WRITE (*, '(11X,A5,2F8.2)') 'Freq.',FSC,FCE
  185. PRINT '(90A)', LINE0
  186. CC -----------------------
  187. CC 2 -- PRICED EQUILIBRIUM
  188. CC -----------------------
  189. C TAUSC= ZERO
  190. C TAUCE= ZERO
  191. C TAUSE= ZERO
  192. C PSC = -0.97D0
  193. C PCE = -0.97D0
  194. C BB = 0.74D0
  195. C PRINT*, '---------PRICED EQUIL'
  196. C CALL EQUILIBRIUM (TC,USCT,UCET,USET,FSC,FCE,AA,
  197. C 1 PSC,PCE,BB,TAUSC,TAUCE,TAUSE)
  198. C WRITE (*,'(4F9.4)') TC, USCT,UCET,USET
  199. CC -----------------------
  200. CC 2 -- ROAD PROFIT
  201. CC -----------------------
  202. DO 40, I=1, NMAX
  203. CALL PRFROAD (PRFR,TC,USCT,UCET,USET,FSC,FCE,AA,
  204. 1 ZERO,ZERO,ZERO,TAUSC,TAUCE,TAUSE)
  205. TMP1 = DSQRT(CW*(USCT+USET)/(TWO*PHI))
  206. TMP2 = DSQRT(CW*(UCET+USET)/(TWO*PHI))
  207. TMP3 = (TMP1-FSC)**2+(TMP2-FCE)**2
  208. IF(TMP3.LT.EPS) GOTO 41
  209. FSC = TMP1
  210. FCE = TMP2
  211. 40 CONTINUE
  212. 41 CONTINUE
  213. IF(I.EQ.NMAX+1) PRINT*,'No convergence after ',NMAX,' iterations'
  214. C WRITE (*,'(8F9.4)') TC, USCT,UCET,USET,PRFR,TAUSC,TAUCE,TAUSE
  215. WRITE (*, '(A12,35X,F8.4)' ) 'Road prf', TC
  216. POPTRAIN = USCT+UCET+USET
  217. POPCAR = POP-POPTRAIN
  218. WRITE (*, '(11X,A5,4F8.2,5X,4F8.2)') 'Users',
  219. & USCT,UCET,USET,POPTRAIN,
  220. & POPSC-USCT,POPCE-UCET,POPSE-USET,POPCAR
  221. C1T=FSCT+CW/(TWO*FSC)+ASCT*(USCT+USET)/FSC
  222. C2T=FCET+CW/(TWO*FCE)+ACET*(UCET+USET)/FCE
  223. C3T=C1T+C2T-AA*CW/(TWO*FSC)+(ONE-AA)*SC
  224. CT =(USCT*C1T+UCET*C2T+USET*C3T)/(USCT+UCET+USET)
  225. C1R=FSCR+ASCR*(POPSC-USCT)
  226. C2R=FCER+ACER*(POPCE-UCET)
  227. C3R=FSER+ASER*(POPSE-USET)
  228. CR =((POPSC-USCT)*C1R+(POPCE-UCET)*C2R+(POPSE-USET)*C3R)/
  229. & (POPSC+POPCE+POPSE-USCT-UCET-USET)
  230. WRITE (*, '(11X,A5,4F8.2,5X,4F8.2,5X)') 'Costs',
  231. & C1T,C2T,C3T,CT,C1R,C2R,C3R,CR
  232. WRITE (*, '(11X,A5,2F8.2)') 'Freq.',FSC,FCE
  233. WRITE (*, '(11X,A5,37X,4F8.2)') 'Tolls',TAUSC,TAUCE,TAUSE,PRFR
  234. PRINT '(90A)', LINE0
  235. CC --------------------
  236. CC 2 -- TRAIN PROFIT
  237. CC --------------------
  238. DO 50, I=1, NMAX
  239. CALL PRFTRAIN (PRFT,TC,USCT,UCET,USET,FSC,FCE,AA,
  240. 1 PSC,PCE,BB,ZERO,ZERO,ZERO)
  241. TMP1 = DSQRT(CW*(USCT+USET)/(TWO*PHI))
  242. TMP2 = DSQRT(CW*(UCET+USET)/(TWO*PHI))
  243. TMP3 = (TMP1-FSC)**2+(TMP2-FCE)**2
  244. IF(TMP3.LT.EPS) GOTO 51
  245. FSC = TMP1
  246. FCE = TMP2
  247. 50 CONTINUE
  248. 51 CONTINUE
  249. IF(I.EQ.NMAX+1) PRINT*,'No convergence after ',NMAX,' iterations'
  250. WRITE (*, '(A12,35X,F8.4)' ) 'Train prf', TC
  251. POPTRAIN = USCT+UCET+USET
  252. POPCAR = POP-POPTRAIN
  253. WRITE (*, '(11X,A5,4F8.2,5X,4F8.2)') 'Users',
  254. & USCT,UCET,USET,POPTRAIN,
  255. & POPSC-USCT,POPCE-UCET,POPSE-USET,POPCAR
  256. C1T=FSCT+CW/(TWO*FSC)+ASCT*(USCT+USET)/FSC
  257. C2T=FCET+CW/(TWO*FCE)+ACET*(UCET+USET)/FCE
  258. C3T=C1T+C2T-AA*CW/(TWO*FSC)+(ONE-AA)*SC
  259. CT =(USCT*C1T+UCET*C2T+USET*C3T)/(USCT+UCET+USET)
  260. C1R=FSCR+ASCR*(POPSC-USCT)
  261. C2R=FCER+ACER*(POPCE-UCET)
  262. C3R=FSER+ASER*(POPSE-USET)
  263. CR =((POPSC-USCT)*C1R+(POPCE-UCET)*C2R+(POPSE-USET)*C3R)/
  264. & (POPSC+POPCE+POPSE-USCT-UCET-USET)
  265. WRITE (*, '(11X,A5,4F8.2,5X,4F8.2,5X)') 'Costs',
  266. & C1T,C2T,C3T,CT,C1R,C2R,C3R,CR
  267. WRITE (*, '(11X,A5,2F8.2)') 'Freq.',FSC,FCE
  268. WRITE (*, '(11X,A5,4F8.2)') 'Fares',PSC,PCE,BB*(PSC+PCE),PRFT
  269. PRINT '(90A)', LINE0
  270. CC --------------------
  271. CC 2 -- SEMI-PUBLIC
  272. CC --------------------
  273. PSC = ZERO
  274. PCE = ZERO
  275. PSE = ZERO
  276. DO 60, I=1, NMAX
  277. CALL SEMIPUBLIC (PRFT,PRFR,TC,USCT,UCET,USET,FSC,FCE,AA,
  278. 1 PSC,PCE,BB,TAUSC,TAUCE,TAUSE)
  279. TMP1 = DSQRT(CW*(USCT+USET)/(TWO*PHI))
  280. TMP2 = DSQRT(CW*(UCET+USET)/(TWO*PHI))
  281. TMP3 = (TMP1-FSC)**2+(TMP2-FCE)**2
  282. IF(TMP3.LT.EPS) GOTO 61
  283. FSC = TMP1
  284. FCE = TMP2
  285. 60 CONTINUE
  286. 61 CONTINUE
  287. IF(I.EQ.NMAX+1) PRINT*,'No convergence after ',NMAX,' iterations'
  288. WRITE (*, '(A12,35X,F8.4)' ) 'Semi-pub', TC
  289. POPTRAIN = USCT+UCET+USET
  290. POPCAR = POP-POPTRAIN
  291. WRITE (*, '(11X,A5,4F8.2,5X,4F8.2)') 'Users',
  292. & USCT,UCET,USET,POPTRAIN,
  293. & POPSC-USCT,POPCE-UCET,POPSE-USET,POPCAR
  294. C1T=FSCT+CW/(TWO*FSC)+ASCT*(USCT+USET)/FSC
  295. C2T=FCET+CW/(TWO*FCE)+ACET*(UCET+USET)/FCE
  296. C3T=C1T+C2T-AA*CW/(TWO*FSC)+(ONE-AA)*SC
  297. CT =(USCT*C1T+UCET*C2T+USET*C3T)/(USCT+UCET+USET)
  298. C1R=FSCR+ASCR*(POPSC-USCT)
  299. C2R=FCER+ACER*(POPCE-UCET)
  300. C3R=FSER+ASER*(POPSE-USET)
  301. CR =((POPSC-USCT)*C1R+(POPCE-UCET)*C2R+(POPSE-USET)*C3R)/
  302. & (POPSC+POPCE+POPSE-USCT-UCET-USET)
  303. WRITE (*, '(11X,A5,4F8.2,5X,4F8.2,5X)') 'Costs',
  304. & C1T,C2T,C3T,CT,C1R,C2R,C3R,CR
  305. WRITE (*, '(11X,A5,2F8.2)') 'Freq.',FSC,FCE
  306. WRITE (*, '(11X,A5,4F8.2)') 'Fares',PSC,PCE,BB*(PSC+PCE),PRFT
  307. WRITE (*, '(11X,A5,37X,4F8.2)') 'Tolls',TAUSC,TAUCE,TAUSE,PRFR
  308. PRINT '(90A)', LINE0
  309. CC --------------------
  310. CC 2 -- DUOPOLY
  311. CC --------------------
  312. DO 70, I=1, NMAX
  313. CALL DUOPOLY (PRFT,PRFR,TC,USCT,UCET,USET,FSC,FCE,AA,
  314. 1 PSC,PCE,BB,TAUSC,TAUCE,TAUSE)
  315. TMP1 = DSQRT(CW*(USCT+USET)/(TWO*PHI))
  316. TMP2 = DSQRT(CW*(UCET+USET)/(TWO*PHI))
  317. TMP3 = (TMP1-FSC)**2+(TMP2-FCE)**2
  318. IF(TMP3.LT.EPS) GOTO 71
  319. FSC = TMP1
  320. FCE = TMP2
  321. 70 CONTINUE
  322. 71 CONTINUE
  323. IF(I.EQ.NMAX+1) PRINT*,'No convergence after ',NMAX,' iterations'
  324. WRITE (*, '(A12,35X,F8.4)' ) 'Duopoly', TC
  325. POPTRAIN = USCT+UCET+USET
  326. POPCAR = POP-POPTRAIN
  327. WRITE (*, '(11X,A5,4F8.2,5X,4F8.2)') 'Users',
  328. & USCT,UCET,USET,POPTRAIN,
  329. & POPSC-USCT,POPCE-UCET,POPSE-USET,POPCAR
  330. C1T=FSCT+CW/(TWO*FSC)+ASCT*(USCT+USET)/FSC
  331. C2T=FCET+CW/(TWO*FCE)+ACET*(UCET+USET)/FCE
  332. C3T=C1T+C2T-AA*CW/(TWO*FSC)+(ONE-AA)*SC
  333. CT =(USCT*C1T+UCET*C2T+USET*C3T)/(USCT+UCET+USET)
  334. C1R=FSCR+ASCR*(POPSC-USCT)
  335. C2R=FCER+ACER*(POPCE-UCET)
  336. C3R=FSER+ASER*(POPSE-USET)
  337. CR =((POPSC-USCT)*C1R+(POPCE-UCET)*C2R+(POPSE-USET)*C3R)/
  338. & (POPSC+POPCE+POPSE-USCT-UCET-USET)
  339. WRITE (*, '(11X,A5,4F8.2,5X,4F8.2,5X)') 'Costs',
  340. & C1T,C2T,C3T,CT,C1R,C2R,C3R,CR
  341. WRITE (*, '(11X,A5,2F8.2)') 'Freq.',FSC,FCE
  342. WRITE (*, '(11X,A5,4F8.2)') 'Fares',PSC,PCE,BB*(PSC+PCE),PRFT
  343. WRITE (*, '(11X,A5,37X,4F8.2)') 'Tolls',TAUSC,TAUCE,TAUSE,PRFR
  344. PRINT '(90A)', LINE3
  345. WRITE (*, '(16X,4A8,5X,4A8)') 'SC','CE','SE','AGR',
  346. & 'SC','CE','SE','AGR'
  347. PRINT '(90A)', LINE0
  348. C ---------------------------------------------
  349. C 1 -- COMPUTE THE OPTIMUM WITH DIRECT TRAIN SE
  350. C ---------------------------------------------
  351. ID=10
  352. DO 100, I=1, NMAX
  353. CALL OPTIMUM (TC,USCT,UCET,USET,FSC,FCE,FSE,AA,
  354. 1 PSC,PCE,BB,TAUSC,TAUCE,TAUSE,ID)
  355. TMP1 = DSQRT(CW*USCT/(TWO*PHI))
  356. TMP2 = DSQRT(CW*UCET/(TWO*PHI))
  357. TMP3 = DSQRT(CW*USET/(TWO*PHI))
  358. TMP4 = (TMP1-FSC)**2+(TMP2-FCE)**2
  359. IF(TMP4.LT.EPS) GOTO 101
  360. FSC = TMP1
  361. FCE = TMP2
  362. FSE = TMP3
  363. 100 CONTINUE
  364. 101 CONTINUE
  365. IF(I.EQ.NMAX+1) PRINT*,'No convergence after ',NMAX,' iterations'
  366. WRITE (*, '(A12,35X,F8.4)' ) 'Optimum', TC
  367. POPTRAIN = USCT+UCET+USET
  368. POPCAR = POP-POPTRAIN
  369. WRITE (*, '(11X,A5,4F8.2,5X,4F8.2)') 'Users',
  370. & USCT,UCET,USET,POPTRAIN,
  371. & POPSC-USCT,POPCE-UCET,POPSE-USET,POPCAR
  372. C1T=FSCT+CW/(TWO*FSC)+ASCT*USCT/FSC
  373. C2T=FCET+CW/(TWO*FCE)+ACET*UCET/FCE
  374. C3T=FSET+CW/(TWO*FSE)+ASET*USET/FCE
  375. CT =(USCT*C1T+UCET*C2T+USET*C3T)/(USCT+UCET+USET)
  376. C1R=FSCR+ASCR*(POPSC-USCT)
  377. C2R=FCER+ACER*(POPCE-UCET)
  378. C3R=FSER+ASER*(POPSE-USET)
  379. CR =((POPSC-USCT)*C1R+(POPCE-UCET)*C2R+(POPSE-USET)*C3R)/
  380. & (POPSC+POPCE+POPSE-USCT-UCET-USET)
  381. WRITE (*, '(11X,A5,4F8.2,5X,4F8.2)') 'Costs',
  382. & C1T,C2T,C3T,CT,C1R,C2R,C3R,CR
  383. WRITE (*, '(11X,A5,3F8.2)') 'Freq.',FSC,FCE,FSE
  384. WRITE (*, '(11X,A5,4F8.2)') 'Fares',PSC,PCE,BB,
  385. & PSC*USCT+PCE*UCET+PSE*USET
  386. WRITE (*, '(11X,A5,37X,4F8.2)') 'Tolls',TAUSC,TAUCE,TAUSE,
  387. & (POPSC-USCT)*TAUSC+(POPCE-UCET)*TAUCE+(POPSE-USET)*TAUSE
  388. PRINT '(90A)', LINE0
  389. CC ----------------------------------------------
  390. CC 2 -- UNPRICED EQUILIBRIUM WITH DIRECT TRAIN SE
  391. CC ----------------------------------------------
  392. ID = 11
  393. DO 110, I=1, NMAX
  394. CALL EQUILIBRIUM (TC,USCT,UCET,USET,FSC,FCE,FSE,AA,
  395. 1 ZERO,ZERO,ZERO,ZERO,ZERO,ZERO,ID)
  396. TMP1 = DSQRT(CW*USCT/(TWO*PHI))
  397. TMP2 = DSQRT(CW*UCET/(TWO*PHI))
  398. TMP3 = DSQRT(CW*USET/(TWO*PHI))
  399. TMP4 = (TMP1-FSC)**2+(TMP2-FCE)**2
  400. IF(TMP4.LT.EPS) GOTO 111
  401. FSC = TMP1
  402. FCE = TMP2
  403. FSE = TMP3
  404. 110 CONTINUE
  405. 111 CONTINUE
  406. IF(I.EQ.NMAX+1) PRINT*,'No convergence after ',NMAX,' iterations'
  407. WRITE (*, '(A12,35X,F8.4)' ) 'Unpriced', TC
  408. POPTRAIN = USCT+UCET+USET
  409. POPCAR = POP-POPTRAIN
  410. WRITE (*, '(11X,A5,4F8.2,5X,4F8.2)') 'Users',
  411. & USCT,UCET,USET,POPTRAIN,
  412. & POPSC-USCT,POPCE-UCET,POPSE-USET,POPCAR
  413. C1T=FSCT+CW/(TWO*FSC)+ASCT*USCT/FSC
  414. C2T=FCET+CW/(TWO*FCE)+ACET*UCET/FCE
  415. C3T=FSET+CW/(TWO*FSE)+ASET*USET/FCE
  416. CT =(USCT*C1T+UCET*C2T+USET*C3T)/(USCT+UCET+USET)
  417. C1R=FSCR+ASCR*(POPSC-USCT)
  418. C2R=FCER+ACER*(POPCE-UCET)
  419. C3R=FSER+ASER*(POPSE-USET)
  420. CR =((POPSC-USCT)*C1R+(POPCE-UCET)*C2R+(POPSE-USET)*C3R)/
  421. & (POPSC+POPCE+POPSE-USCT-UCET-USET)
  422. WRITE (*, '(11X,A5,4F8.2,5X,4F8.2,5X)') 'Costs',
  423. & C1T,C2T,C3T,CT,C1R,C2R,C3R,CR
  424. WRITE (*, '(11X,A5,3F8.2)') 'Freq.',FSC,FCE,FSE
  425. PRINT '(90A)', LINE1
  426. END