• 沒有找到結果。

第六章 結論與建議

第二節 建議

第二節 第二節

第二節 建議 建議 建議 建議

一、模式應用分析行人族群比例之離峰時段與尖峰時段步行速率結果,可作為 路口時相之步行速率設定參考。

二、本研究行人流模式,為細胞自動機研究行人模式先例,從文獻回顧瞭解,

大部份細胞自動機模擬對象為車流,因此本研究行人流模式對於往後細胞 自動機應用研究行人流模式中,可以作為參考與運用。

參考文獻 參考文獻 參考文獻 參考文獻

朱山江、史其信(2006)。基於細胞自動機的行人管理。中國北京市:清華大學,

取自http://www.redlib.cn/html/ITSTong_15409/JiYuYuanBao16079812.htm。

吳宗修、張建彥、郭明仁、林佩霖、鮑雨薇、王森豐、彭裕涵(2008)。行人步行 速度資料庫之建立。交通大學 96 年度車輛行車事故鑑定研究計畫。台北市:

交通部運輸研究所,1-187。

林峰田(2004)。多主題模擬實驗室。台北市:林峰田 Notlogo 程式集,取自 http://www.bp.ntu.edu.tw/WebUsers/ftlin/course/uris/NetLOGO 程式寫作.doc。 林惠玲、陳正倉(2003)。應用統計學二版。台北市:雙葉書廊有限公司,427。

Amosun, S.L., Burgess, T., Groeneveldt, L., & Hodgson, T. (2007). Are elderly pedestrians allowed enough time at pedestrian crossings in Cape Town, South Africa?Physiotherapy theor yand practice 23(6), 325-332..

Blue, V. J., & Adler, J. L. (2001). Cellular automata microsimulation for modeling bi-directional pedestrian walkways. Transportation Research, Part B, 35,

293-312.

Daamen, W., & Hoogendoorn, S. P. (2003). Experimental Research of Pedestrian Walking Behavior. In Transportation Research Board annual meeting, 1-16.

Gates, T. J., Noyce, D. A., Bill, A. R., & Ee, N. V. (2006). Recommended Walking Speeds for Pedestrian Clearance Timing Based on Pedestrian Characteristics. Transportation Research Board Paper No. 06-1826, 1-23.

Harney, D. (2002). Pedestrian modeling: Current methods and future direction.

Road & Transport Research. ,

form http://findarticles.com/p/articles/mi_qa3927/is_200212/ai_n9157014/

Handa, T., Sahara,R., Yoshizak, K., Endou, T., Utsunomiya,M., Kuroiwa, C., & Yamamoto, I. (2003). Examination of Reliability and Validity of Walking Speed,Cadence, Stride Length —Comparison of Measurement with Stopwatch and Three-Dimension Motion Analyzer. J Phys Ther Sci, Vol.19, 213-222.

Knoblauch, R. L, Pietrucha, M. T., & Nitzburg, M. (1996). Field Studies of Pedestrian Walking Speed and Start-Up Time. Transportation Research Record, vol. 1538, 27-38.

Kelton, W. D., Sandowski, R. P., & Sturrock, D. T. (2007). Simulation with Arena Fourth Edition. McGraw-Hill. Inc, 587-602.

Lee, S. H., Park, J. H., & Pak, H. K. (2004). Jamming Transition in Three Types of Competing Pedestrians (Adults, Children and Injured People) with Morality, Using a Cellular Automaton Model, Journal of the Korean Physical Society, Vol. 44No. 3, 660-663.

Ronald, N., Sterling, L., & Kirley, M. (2005). A conceptual framework for specifying and developing pedestrian models. In Zerger, A. and Argent, R.M.

(eds) MODSIM 2005 International Congress on Modelling and Simulation.

Modelling and Simulation Society of Australia and New Zealand, 2618-2621.

Schadschneider, A. (2000).Statistical physics of traffic flow. Physica A 285, 101-120.

Schadschneider, A. (2001).Cellular Automaton Approach to Pedestrian Dynamics–Theory. In M. Schreckenberg and S.D.Sharma (Eds.), Pedestrian and EvacuationDynamics, 75-85.

Tarawneh, M. S. (2001). Evaluation of pedestrian speed in Jordan with investigation of some contributing factors. Journal of Safety Research, Volume 32, Number 2, Summer, 229-236(8).

TranSafety (1997). Study Compares Older and Younger Pedestrian Walking Speeds, TranSafety Road Engineering Journal. Inc,

form http://www.usroads.com/journals/p/rej/9710/re971001.htm/

Wolk, M., Schadschneider, A., & Schreckenberg, M. (2005). Fundamental diagram of a one-dimensional cellular automaton model for pedestrian flow-the ASEP with shuffled update. Pedestrian and Evacuation Dynamics 2005, 423-428.

Wilensky, U. (1999). NetLogo. Center for Connected Learning and Computer-Based Modeling, Northwestern University. Evanston, IL,

form http://ccl.northwestern.edu/netlogo/

Zhang, J., Wang, H., & Li, P. (2004). Cellular automata modeling of pedestrian’s crossing dynamics. Journal of Zhejiang University SCIENCE, ISSN 1009-3095, 5(7), 835-840.

附錄 附錄 附錄 附錄 A

NetLogo4.0.4 路口行人流程式碼 路口行人流程式碼 路口行人流程式碼 路口行人流程式碼

globals[younger old person person-persons person-older person-younger FLOW_COUNTER LAST_PLOT_TIME allspeed allspeed2 SIMULATED_TIME roads current-light rpeople REAL_TIME_RATIO REAL_TIME_DIFF n phase phase1 phase1-min phase1-max phase2 phase2-min phase2-max phase3 phase3-min phase3-max phase11 phase22 phase33 singal singal2 ]

turtles-own [ i freq tmp yspeed ospeed pspeed yspeed-limit yspeed-min ospeed-limit ospeed-min pspeed-limit pspeed-min speed speed-limit speed-min right-people? ] breed [ counters counter ]

breed [ peoples people ] patches-own [ road? ]

counters-own [last-people last-speed ] to setup

ca

setup-globals setup-patches set allspeed 0 setup-persons setup-counters end

to setup-patches

ask patches [ set pcolor gray + 2 ]

ask patches with [pxcor = 5 and pycor <= 3][set pcolor white]ask patches with [pxcor

= 7 and pycor <= 3][set pcolor white]ask patches with [pxcor = 9 and pycor <= 3][set pcolor white]ask patches with [pxcor = 11 and pycor <= 3][set pcolor white]ask patches with [pxcor = 13 and pycor <= 3][set pcolor white]ask patches with [pxcor = 15 and pycor <= 3][set pcolor white]ask patches with [pxcor = 17 and pycor <=

3][set pcolor white]ask patches with [pxcor = 19 and pycor <= 3][set pcolor white]ask patches with [pxcor = 21 and pycor <= 3][set pcolor white]ask patches with [pxcor = 23 and pycor <= 3][set pcolor white]ask patches with [pxcor = 25 and pycor <= 3][set pcolor white]ask patches with [pxcor = 27 and pycor <= 3][set

pcolor white]ask patches with [pxcor = 29 and pycor <= 3][set pcolor white]ask patches with [pxcor = 31 and pycor <= 3][set pcolor white]ask patches with [pxcor = 33 and pycor <= 3][set pcolor white]ask patches with [pxcor = 35 and pycor <=

3][set pcolor white]ask patches with [pxcor = 37 and pycor <= 3][set pcolor white]ask patches with [pxcor = 39 and pycor <= 3][set pcolor white]ask patches with [pxcor = 41 and pycor <= 3][set pcolor white]ask patches with [pxcor = 43 and pycor <= 3][set pcolor white]ask patches with [pxcor = 45 and pycor <= 3][set pcolor white]ask patches with [pxcor = 47 and pycor <= 3][set pcolor white]ask patches with [pxcor = 49 and pycor <= 3][set pcolor white]ask patches with [pxcor = 51 and pycor <= 3][set pcolor white]ask patches with [pxcor = 53 and pycor <=

3][set pcolor white ]ask patches with [pxcor = 55 and pycor <= 3][set pcolor white ]ask patches with [pxcor = 57 and pycor <= 3][set pcolor white ]ask patches with [pxcor <= 57 and pycor <= 4][set road? true ]ask patches with [pxcor = 0 and pycor <= 3][set road? false ]ask patches with [pxcor = 1 and pycor <= 3][set road?

false]ask patches with [pxcor = 2 and pycor <= 3][set road? false ]ask patches with [pxcor = 3 and pycor <= 3][set road? false ]ask patches with [pxcor = 4 and pycor <=

3][set road? false ]ask patches with [pxcor = 58 and pycor <= 3][set road? false ]ask patches with [pxcor = 59 and pycor <= 3][set road? false ]ask patches with [pxcor = 60 and pycor <= 3][set road? false ]ask patches with [pxcor = 61 and pycor <= 3][set road? false ]ask patches with [pxcor = 62 and pycor <= 3][set road? false ]

end

;=====行人族群比例分配與行人到達間隔時間=====

to setup-globals set phase11 0 set phase22 0 set phase33 0

set rpeople random 100

;======孩童族群比例========

if rpeople <= 10 [

;================孩童到達間隔時間========

set phase2 (floor (random-gamma 0.3 0.02 )) ;* (TIME_SLICE)

set phase2-min 0.03 set phase2-max 388 set phase3 0 set phase1 0 set phase11 0 set phase33 0 set phase22 0

if phase2 <= 0 [set phase2 1 ] if phase2 <= phase2-min [set phase2 1 ] if phase2 >=

phase2-max [set phase 388 ] ]

;======高齡者族群比例=======

if (rpeople > 10) and (rpeople <= 59) [

;==============高齡者到達間隔時間=======

set phase3 (floor ( random-gamma 0.59 0.02 )) ;* (TIME_SLICE)

set phase3-min 0.03 set phase3-max 175 set phase2 0 set phase1 0 set phase11 0 set phase33 0 set phase22 0

if phase3 <= 0 [set phase3 1 ] if phase3 <= phase3-min [set phase3 1 ]if phase3 >=

phase3-max [set phase3 175] ]

;=====成人人數比例========

if rpeople > 59

;============成人到達間隔時間=========

[ set phase1 (floor (random-gamma 0.51 0.1 )); * (TIME_SLICE)

;set phase1 floor (random-gamma 0.68 0.03 ) set phase1-min 0.03 set phase1-max 48

; set phase1-min 0.03 set phase1-max 166

set phase2 0 set phase3 0 set phase11 0 set phase33 0 set phase22 0 if phase1 <= 0 [set phase1 1 ] if phase1 <= phase1-min [set phase1 1 ] if phase1 >= phase1-max [set phase1 48 ;set phase1 166

]]

end

to setup-persons

set-default-shape peoples "person"

set-default-shape counters "flow counter"

set FLOW_COUNTER 0 set allspeed2 0

set allspeed 0

set SIMULATED_TIME 0 set LAST_PLOT_TIME 0 set REAL_TIME_DIFF -1 set REAL_TIME_RATIO 1 set roads patches with [road?]

end

to setup-counters

create-counters 1 [ setxy 31 0 set heading 180 set size 1 set color white]

create-counters 1 [ setxy 31 1 set heading 180 set size 1 set color white]

create-counters 1 [ setxy 31 2 set heading 180 set size 1 set color white]

create-counters 1 [ setxy 31 3 set heading 180 set size 1 set color white]

end

to find-patch

ifelse random 2 = 0 [set right-people? true][set right-people? false]

if right-people? = true [setxy 5 random-pycor set heading 90]

if right-people? = false [setxy 57 random-pycor set heading -90]

while [any? other peoples-here][ find-patch ] end

to go

move-peoples

ask peoples[if xcor <= 0 or xcor <= 1 or xcor <= 2 or xcor <= 3 or xcor <= 4 or xcor >= 58 or xcor >= 59 or xcor >= 60 or xcor >= 61 or xcor >= 62 [set yspeed 0 set ospeed 0 set pspeed 0 set color gray + 2] ]

ask peoples [if xcor > 5 and xcor < 57 [if color = gray + 2 [ die]] ] if ticks = 14400 [stop]

measure-flow update-time

if phase11 = phase1 and phase11 > 0[setup-perr]

if phase22 = phase2 and phase22 > 0[setup-yonr]

if phase33 = phase3 and phase33 > 0[setup-oldr]

next-phase-person tick

end

;======成人行人步行速率亂數導數函數====

to setup-perr create-peoples 1

[ ifelse random 2 = 0 [set right-people? true][set right-people? false]

if right-people? = true [setxy 5 random-pycor set heading 90]

if right-people? = false [setxy 57 random-pycor set heading -90]

set color black set size 1

;set pspeed precision (random-normal 3.28 0.56) 2

set pspeed-limit 4.25 set pspeed-min 2.05set pspeed precision (random-gamma 26.78 8.99) 2 set pspeed-limit 4.25 set pspeed-min 2.05 set ospeed 0 set yspeed 0 set ospeed-limit 0 set ospeed-min 0 set yspeed-limit 0 set yspeed-min 0 set speed (yspeed + pspeed + ospeed ) set speed-limit 4.25 set speed-min 1.31 set freq (1 + (random 2)) set tmp freq

if pspeed > pspeed-limit[ set pspeed 4.25 ] if pspeed < pspeed-min[set pspeed 2.05]

find-patch ] setup-globals end

;=====孩童行人步行速率亂數導數函數======

to setup-yonr create-peoples 1

[ifelse random 2 = 0 [set right-people? true][set right-people? false]

if right-people? = true [setxy 5 random-pycor set heading 90]

if right-people? = false [setxy 57 random-pycor set heading -90]

set color yellow set size 0.8 set yspeed precision (random-normal 3.15 0.4) 2 set yspeed-limit 3.88 set yspeed-min 2.22 set ospeed 0 set pspeed 0 set pspeed-limit 0 set pspeed-min 0 set ospeed-limit 0 set ospeed-min 0 set speed (yspeed + pspeed + ospeed ) set speed-limit 4.25 set speed-min 1.31 set freq (1 + (random 2)) set tmp freq

if yspeed > yspeed-limit[set yspeed 3.88] if yspeed < yspeed-min[set yspeed 2.22]

find-patch ] setup-globals end

;======高齡者行人步行速率亂數導數函數=======

to setup-oldr create-peoples 1

[ ifelse random 2 = 0 [set right-people? true][set right-people? false]

if right-people? = true [setxy 5 random-pycor set heading 90 ] if right-people? = false [setxy 57 random-pycor set heading -90 ]

set color blue set size 1 set ospeed precision (random-normal 2.28 0.59) 2 set ospeed-limit 3.25 set ospeed-min 1.31 set yspeed 0 set pspeed 0 set yspeed-limit 0 set yspeed-min 0 set pspeed-limit 0 set pspeed-min 0 set speed (yspeed + pspeed + ospeed ) set speed-limit 4.25 set speed-min 1.31 set freq (1 + (random 2)) set tmp freq

if ospeed > ospeed-limit[set ospeed 3.25] if ospeed < ospeed-min[set ospeed 1.31]

find-patch ] setup-globals end

to move-peoples

ask peoples[ifelse (range > 5)[range-max][range-min]pq ] end

;======行人格子不重疊設計=======

to pq

if any? other peoples-here [ fd 1 pq]

end

;======行人步行速率============

to avancer

if ( color = yellow) [set tmp freq fd yspeed * (TIME_SLICE)]

if (color = blue ) [set tmp freq fd ospeed * ( TIME_SLICE)]

if ( color = black) [set tmp freq fd pspeed * (TIME_SLICE )]

end

to-report range set i 1

while [not any? peoples-on patch-ahead i ][set i (i + 1) ] report i

end to slow

set freq (freq + 1) end

to accelerate

if (freq > 0)[set freq (freq – 1) ] end

to range-max avancer end

;=======行人步行變換走道========

to range-min

LET ahead one-of peoples-on patch-ahead range

LET right-forward-patch PATCH-RIGHT-AND-AHEAD 45 1.4142135623730951 LET left-forward-patch PATCH-LEFT-AND-AHEAD 45 1.4142135623730951 if( [heading] of ahead = heading and [speed] of ahead > speed) [avancer]

if ( [heading] of ahead = heading and [speed] of ahead <= speed) ;

[ifelse (not any? peoples-on right-forward-patch and not any? peoples-on left-forward-patch)

[ifelse random 2 = 0 [move-to right-forward-patch][move-to left-forward-patch]]

[ifelse (not any? peoples-on right-forward-patch or not any? peoples-on left-forward-patch)[ifelse (not any? peoples-on right-forward-patch)

[move-to right-forward-patch][move-to left-forward-patch]

][slow]]]

if ( [heading] of ahead != heading)

[if (not any? peoples-on right-forward-patch) [move-to right-forward-patch]

ifelse (not any? peoples-on left-forward-patch )[move-to left-forward-patch]

[avancer]]

end

;======行人流量速率============

to measure-flow if any? counters [ ask counters [

if any? peoples-here with [who != [last-people] of myself ] [set last-people [who] of one-of peoples-here

set FLOW_COUNTER FLOW_COUNTER + 1]]

ask counters [

if any? peoples-here with [who != [last-speed] of myself ] [set last-speed [who] of peoples-here

set allspeed2 [precision (speed * 0.4 ) 2] of peoples-here

set allspeed [precision (speed * 0.4 ) 2] of peoples ]]

if (int SIMULATED_TIME != LAST_PLOT_TIME) and (int SIMULATED_TIME mod FLOW_PLOT_PERIOD = 0) [

set LAST_PLOT_TIME int SIMULATED_TIME

let flow FLOW_COUNTER * 60 * (60 / FLOW_PLOT_PERIOD) Let density flow / (mean allspeed * 3.6)

set FLOW_COUNTER 0 set allspeed2 0

ask peoples [if xcor <= 0 or xcor <= 1 or xcor <= 2 or xcor <= 3 or xcor <= 4 or xcor >= 58 or xcor >= 59 or xcor >= 60 or xcor >= 61 or xcor >= 62 [ die ]]

set-current-plot "Flow-Speed"

plotxy (mean allspeed * 3.6) flow]]

export-plot "Flow-Speed" "c:/Documents and Settings/Administrator/桌面/尖峰時段 高齡者 50%成人 40%孩童 10%.csv"

end

;========行人數量監控=======

to person-count

set person-persons ((count peoples with [ color = black ])) set person-older ((count peoples with [ color = blue ])) set person-younger ((count peoples with [ color = yellow ])) end

;========模擬時間設計=======

to update-time

every 1 [set REAL_TIME_RATIO SIMULATED_TIME - REAL_TIME_DIFF if REAL_TIME? [ set TIME_SLICE TIME_SLICE / REAL_TIME_RATIO]

set REAL_TIME_DIFF SIMULATED_TIME]

set SIMULATED_TIME SIMULATED_TIME + TIME_SLICE end

to-report readable-time-string

let calc-mins int (SIMULATED_TIME / 60) let hrs int (calc-mins / 60)

let secs int (SIMULATED_TIME - (calc-mins * 60))

在文檔中 中 華 大 學 碩 士 論 文 (頁 83-94)

相關文件