Netlogo 模拟自然灾害紧急情况的志愿者协调系统

Netlogo 模拟自然灾害紧急情况的志愿者协调系统,netlogo,Netlogo,该模型是一个针对火山爆发响应阶段的志愿者集中协调系统模型。代理人(志愿者)被随机放置,将试图到达兵营点(红色斑块)。每个代理(志愿者)都有能量容量,如果志愿者能够实现,将被引导到点军营。如果志愿者能够到达难民营的地点,那么难民营的需求可能会因志愿者的能力而减少 问题是我创建的程序是一个志愿者运动,没有按照预先确定的颜色运行并来回移动。如果前面的色块不是指定的颜色,志愿者不能选择左转或右转。对于这种模式,是否有一种代理人(志愿者)流动的解决方案 除此之外,志愿者如何能够测量到最短的距离,以便特工能

该模型是一个针对火山爆发响应阶段的志愿者集中协调系统模型。代理人(志愿者)被随机放置,将试图到达兵营点(红色斑块)。每个代理(志愿者)都有能量容量,如果志愿者能够实现,将被引导到点军营。如果志愿者能够到达难民营的地点,那么难民营的需求可能会因志愿者的能力而减少

问题是我创建的程序是一个志愿者运动,没有按照预先确定的颜色运行并来回移动。如果前面的色块不是指定的颜色,志愿者不能选择左转或右转。对于这种模式,是否有一种代理人(志愿者)流动的解决方案

除此之外,志愿者如何能够测量到最短的距离,以便特工能够快速到达兵营

此外,如果每个疏散点的需求因营房或优先级不同而有所不同,志愿者是否可以在必须提前到达的疏散点进行搜索

这是我的代码:

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
要走了
如果滴答声=180[停止]
询问志愿者
[ifelse容量=0[fd 0冻结][移动搜索]]
;搜索
;更新需求
打上钩
显示标签
搞阴谋
结束
移动
询问志愿者
[
使用[pcolor=0]移动到半径2中的一个面片
ifelse[pcolor]半径为2=0的面片[使用[pcolor=0]移动到半径为2的面片之一]
[
前方补片的ifelse[pcolor]1=105[设置航向-180,使用[pcolor=0]移动到半径2内的补片之一]
[
ifelse[pcolor]前面的面片1=8[设置航向-180,用[pcolor=0]移动到半径2的面片之一]
[
如果前面1个面片的[pcolor]为红色[使用[pcolor=red]fd 0移动到半径2中的一个面片]
]
]
]
]
结束
搜寻
如果有的话?海龟在有[P颜色=红色]的斑块上
[ 
ifelse容量<需求
[ 
设置需求((1+需求率)*(需求-(容量*(1+容量率)))
设置容量为0
] 
[设定容量((1+容量比率)*(容量-需求))
设定需求0]
]
结束
冻结
如果容量=0
[fd 0
设置等待时间等待时间+1
如果等待时间>5[设置容量1000/朱姆拉-雷拉旺设置等待时间0]
]
结束

我最近刚完成了这种型号,虽然不完全一样,但基本上是一样的。 我做的模型是关于疏散人群的。和你一样,我也是UGM的学生

我用来解决代理移动的解决方案是在netlogo代码中实现最短路径算法

您可以查找,Djikstra算法或其他。在我的例子中,我使用*(aStar)算法。netlogo中也有一些*实现的示例。你可以查一下

我只能帮到这一步,就像赛斯·蒂苏所说的那样,任何细节的回答都需要几个小时才能写出


希望能有帮助。

没有,但这是一种合作模式。这是太多的问题——完整的答案可能需要我几个小时才能写出。我没有那么多时间,其他人也没有。请一次问一个问题,并尽可能使每个问题具体化。