目前,我正在NetLogo中开发基础结构模型,但我很难让乌龟走上这条路。我确实使用gis扩展名。
该模型的目标是模拟交通流量,因此模型中的汽车需要沿着道路行驶。但是,当我尝试进行这项工作时,汽车根本不走道路。
to load
ca
clear-patches
show "Wegenbestand laden..."
set data gis:load-dataset Input_bestand_shp
show "Wegen geladen"
show "Data importen..."
let timing 1
foreach gis:feature-list-of data
[[b] -> ask patches gis:intersecting b
[
set pspeed gis:property-value b "snelheid"
set road gis:property-value b "gid"
set status gis:property-value b "status"
set a_dir_x gis:property-value b "s_d_x"
set a_dir_y gis:property-value b "s_d_y"
set b_dir_x gis:property-value b "e_d_x"
set b_dir_y gis:property-value b "e_d_y"
if status = "gesloten" [ set pspeed 0]
if pspeed = 30 [ set maxdruk Algemene_capaciteit_straat / 5 ]
if pspeed = 80 [ set maxdruk Algemene_capaciteit_autoweg / 5]
if pspeed = 130 [ set maxdruk Algemene_capaciteit_snelweg / 5]
set fid gis:property-value b "did"
show timing
set timing (timing + 1)
]
]
show "Data geimporteerd"
ask patches [ set pcolor scale-color blue pspeed 0 130 ]
set-default-shape turtles "car"
;set exp-count 1
;set border patches with [ count neighbors != 8 ]
end
to setup
clear-turtles
clear-all-plots
reset-ticks
setup-turtles
end
to setup-turtles
;een turtle is 5 autos
ask patch Start-X Start-Y
[sprout Verkeersintensiteit_geslotenweg / 5 [ set color red ]]
;1 tick = 1 minute
ask patches[
ask turtles-here[
set speed pspeed / 60
set currentroad road
set dir_x b_dir_x
set dir_y b_dir_y
]
]
end
to go
setup-turtles
;1 tick = 1 minute
ask turtles [
facexy dir_x dir_y
fd speed
]
end
使用上面的代码,我首先测试了是否有任何方向可行。但是,汽车要么随机停车,要么完全朝错误的方向行驶,我不知道该怎么办。
输入是在顶点上分割的线段。 a_dir_x和其他的a_dir_x显示每个段的前面和后面以给出方向。坐标系为WGS 84 UTM 31N。
我正在考虑的另一件事是使用移动功能,该功能应该更易于使用。在那种情况下,我需要知道单元格的大小,而我不知道在NetLogo中如何确定。
有人对此有任何想法或经验吗?谢谢!