该模型是火山爆发响应阶段志愿者集中协调的系统模型。代理(志愿者)随机放置将尝试到达营房点(红色补丁)。如果志愿者能够实现,每个代理人(志愿者)的能量容量将被引导到点营房。如果志愿者能够到达难民营的地点,志愿者的能力可以减少点军营的需求。
我创建的程序问题是志愿者运动没有按照预定的色块运行并来回移动。如果前面的色块而不是指定的颜色,志愿者不能选择左转或右转。是否有关于此模型的代理人(志愿者)运动的解决方案?
除了志愿者如何测量距离代理人的最短距离可以快速到达营房点?
此外,如果每个点的需求变化营房或优先级,志愿者是否有任何方式可以提前搜索疏散点?
这是我的代码:
to go
if ticks = 180 [ stop]
ask Volunteers
[ifelse capacity = 0 [ fd 0 frozen][ move search ]]
;search
;update-demand
tick
display-labels
do-plots
end
to move
ask Volunteers
[
move-to one-of patches in-radius 2 with [pcolor = 0]
ifelse [pcolor] of patches in-radius 2 = 0 [move-to one-of patches in-radius 2 with [pcolor = 0]]
[
ifelse [pcolor] of patch-ahead 1 = 105 [set heading -180 move-to one-of patches in-radius 2 with [pcolor = 0] ]
[
ifelse [pcolor] of patch-ahead 1 = 8 [set heading -180 move-to one-of patches in-radius 2 with [pcolor = 0]]
[
if [pcolor] of patch-ahead 1 = red [move-to one-of patches in-radius 2 with [pcolor = red] fd 0 ]
]
]
]
]
end
to search
if any? turtles-on patches with [ pcolor = red ]
[
ifelse capacity < demand
[
set demand (( 1 + Rate-of-Demand) * (demand - (capacity * (1 + Rate-of-Capacity))))
set capacity 0
]
[set capacity (( 1 + Rate-of-Capacity) * (capacity - demand ))
set demand 0 ]
]
end
to frozen
if capacity = 0
[ fd 0
set waiting-time waiting-time + 1
if waiting-time > 5 [set capacity 1000 / Jumlah-Relawan set waiting-time 0]
]
end
答案 0 :(得分:0)
我刚刚完成,但不是完全相同,但大致相同,这种模型。 我制作的模型是关于疏散人民的。就像你一样,我也是UGM的学生。
我用来解决代理移动的解决方案是在netlogo代码中实现最短路径算法。
你可以查找,Djikstra算法或其他。就我而言,我使用*(aStar)算法。 netlogo中也有一些*实现的例子。你可以查一查。
我只能帮助到目前为止,就像Seth Tisue Said一样,任何细节答案都需要数小时才能完成。
希望它有所帮助。