Closed. This question needs details or clarity。它当前不接受答案。












想改善这个问题吗?添加详细信息,并通过editing this post阐明问题。

5年前关闭。



Improve this question




该模型是针对火山喷发反应阶段志愿者进行集中协调的系统模型。特工(志愿者)被随机放置会尝试到达营房(红色补丁)的位置。如果志愿者能够实现,则每个具有能量能力的特工(志愿者)将被引导到军营。如果志愿人员能够到达难民营的地点,则可以通过减少志愿人员的能力来减少其需求。

我创建的程序中的问题是志愿者运动没有按照预定的色标运行并来回移动。如果志愿者前面有色标而不是指定的颜色,则志愿者不能选择向左或向右转。是否有解决此模型的特工(志愿者)流动的解决方案?

除了志愿者如何衡量与特工的最短距离,还可以迅速到达营房?

此外,如果每个要塞的需求因军营或优先次序而异,志愿者是否可以通过任何方式提前搜索必须到达的避难点?

这是我的代码:
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

最佳答案

我刚刚完成了这种模型,虽然不完全相同,但大致相同。
我制作的模型是关于人员疏散的。和你一样,我也是UGM的学生。

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

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

就像塞思·蒂苏·赛义德(Seth Tisue Said)一样,我到目前为止只能提供帮助,要写任何详细的答案都需要几个小时。

希望能帮助到你。

08-24 19:58