使汽车以正确的速度沿着道路行驶(NetLogo)
目前,我正在NetLogo中开发一个基础设施模型,我很难让海龟随大流。这是我使用gis扩展所做的 该模型的目标是模拟交通运动,因此模型中的车辆需要沿着道路行驶。然而,当我试图使这项工作顺利进行时,这些车根本就不会沿着道路行驶使汽车以正确的速度沿着道路行驶(NetLogo),netlogo,infrastructure,face,Netlogo,Infrastructure,Face,目前,我正在NetLogo中开发一个基础设施模型,我很难让海龟随大流。这是我使用gis扩展所做的 该模型的目标是模拟交通运动,因此模型中的车辆需要沿着道路行驶。然而,当我试图使这项工作顺利进行时,这些车根本就不会沿着道路行驶 to load ca clear-patches show "Wegenbestand laden..." set data gis:load-dataset Input_bestand_shp show "Wegen geladen" show
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和其他图标显示每个线段的前部和后部,以给出方向。坐标系为WGS 84 UTM 31N
我正在考虑的另一件事是使用move to function,它应该更易于使用。在这种情况下,我需要知道手机的大小,我不知道这是如何在NetLogo中确定的
有人对此有什么想法或经验吗?谢谢大家!
问题似乎在于坐标。NetLogo无法识别坐标,因此我必须事先定义NetLogo坐标。为此,我创建了一个包含已知x列和y行的集合光栅,并将它们作为特征添加到shapefile中。这不是最优的,所以如果有更好的方法我仍然想知道,但这是一种处理方法。好的,我找到了一种方法。我找到的最好的方法是,无论如何,让汽车运行起来,根据道路的起点移动到道路的尽头。然后,为了得到时间,我计算了道路的长度,并将其除以速度,因此它仍然模拟汽车的运动,只是通过“远程传送”。